From b96f723af166bba10fd10b1d3ac3a8e6f2126b5e Mon Sep 17 00:00:00 2001 From: shyallegro <52773084+shyallegro@users.noreply.github.com> Date: Sun, 10 Jul 2022 14:10:46 +0300 Subject: [PATCH] Release v1.6 (#31) --- package-lock.json | 8510 +++++++---------- package.json | 103 +- src/app/app.routes.ts | 9 +- .../api-services/events.service.ts | 142 +- .../api-services/organization.service.ts | 46 + .../eventsGetDebugImageSampleRequest.ts | 4 + .../events/eventsGetPlotSampleRequest.ts | 44 + .../eventsGetTaskSingleValueMetricsRequest.ts | 20 + ...eventsGetTaskSingleValueMetricsResponse.ts | 21 + ...sGetTaskSingleValueMetricsResponseTasks.ts | 22 + ...GetTaskSingleValueMetricsResponseValues.ts | 20 + .../events/eventsNextPlotSampleRequest.ts | 28 + .../model/events/plotSampleResponse.ts | 32 + .../model/models/modelsGetAllExRequest.ts | 6 +- .../organizationGetEntitiesCountRequest.ts | 41 + .../organizationGetEntitiesCountResponse.ts | 40 + .../business-logic/model/projects/project.ts | 6 + .../model/projects/projectsGetAllExRequest.ts | 1 + ...rojectsGetAllResponseSingleDatasetStats.ts | 27 + .../model/users/featuresEnum.ts | 5 +- .../users/getCurrentUserResponseUserObject.ts | 1 + .../users/usersGetCurrentUserResponse.ts | 1 + src/app/core/actions/users.action.ts | 7 +- src/app/core/core.module.ts | 2 +- src/app/core/effects/projects.effects.ts | 19 +- src/app/core/reducers/users.reducer.ts | 1 + .../dashboard-search.consts.ts | 32 + .../dashboard-search.effects.ts | 26 + .../dashboard-search.component.html | 13 - .../dashboard-search.component.ts | 45 - .../dashboard-search.module.ts | 5 +- .../dashboard/dashboard.component.html | 2 +- .../features/dashboard/dashboard.component.ts | 2 +- .../features/dashboard/dashboard.module.ts | 10 +- .../search-results-page.component.html | 36 +- .../search-results-page.component.scss | 2 +- .../search-results-page.component.ts | 37 +- .../datasets/datasets-routing.module.ts | 43 + src/app/features/datasets/datasets.module.ts | 77 + .../datasets/shared/datasets-shared.module.ts | 28 + ...xperiment-details-reverter-service.base.ts | 5 +- .../experiments-compare-details.base.ts | 1 + .../experiment-info-navbar.component.html | 108 +- .../experiment-output.component.html | 1 - .../effects/experiment-output.effects.ts | 26 +- .../experiments/shared/experiments.const.ts | 12 +- src/app/features/projects/projects.module.ts | 6 +- .../layout/breadcrumbs/breadcrumbs.utils.ts | 57 +- .../layout/side-nav/side-nav.component.html | 63 +- .../layout/side-nav/side-nav.component.scss | 9 +- src/app/layout/side-nav/side-nav.component.ts | 4 +- src/app/shared/constants/non-common-consts.ts | 3 +- .../assets/fonts/trains-icons.scss | 41 +- src/app/webapp-common/assets/fonts/trains.ttf | Bin 57620 -> 58416 bytes .../webapp-common/assets/fonts/variables.scss | 8 +- .../assets/icons/datasets-empty-state.svg | 97 + .../common-search/common-search.actions.ts | 61 +- .../common-search/common-search.module.ts | 4 +- .../common-search/common-search.reducer.ts | 57 +- .../common-search.component.html | 9 +- .../common-search.component.scss | 12 + .../common-search/common-search.component.ts | 49 +- src/app/webapp-common/common-styles.scss | 15 +- .../core/actions/layout.actions.ts | 9 + .../core/actions/projects.actions.ts | 5 + .../core/actions/users.actions.ts | 5 +- .../core/effects/layout.effects.ts | 2 +- .../core/effects/projects.effects.ts | 87 +- .../core/reducers/common-auth-reducer.ts | 45 +- .../core/reducers/projects.reducer.ts | 10 +- .../core/reducers/users-reducer.ts | 3 + .../core/reducers/view.reducer.ts | 16 +- .../core/services/refresh.service.ts | 2 +- .../dashboard-search.actions.ts | 109 +- .../dashboard-search.consts.ts | 21 +- .../dashboard-search.effects.ts | 199 +- .../dashboard-search.reducer.ts | 124 +- .../search-results.component.html | 3 + .../search-results.component.scss | 11 + .../search-results.component.ts | 23 +- .../dashboard/common-dashboard.actions.ts | 1 + .../dashboard/common-dashboard.effects.ts | 2 +- .../dashboard-search.component.base.ts | 108 +- .../dataset-version-step.component.html | 18 + .../dataset-version-step.component.scss | 10 + .../dataset-version-step.component.spec.ts | 25 + .../dataset-version-step.component.ts | 14 + .../simple-dataset-card.component.html | 64 + .../simple-dataset-card.component.scss | 40 + .../simple-dataset-card.component.spec.ts | 25 + .../simple-dataset-card.component.ts | 12 + ...ple-dataset-version-content.component.html | 37 + ...ple-dataset-version-content.component.scss | 62 + ...-dataset-version-content.component.spec.ts | 25 + ...imple-dataset-version-content.component.ts | 49 + ...ple-dataset-version-details.component.html | 72 + ...ple-dataset-version-details.component.scss | 35 + ...-dataset-version-details.component.spec.ts | 25 + ...imple-dataset-version-details.component.ts | 17 + ...simple-dataset-version-info.component.html | 82 + ...simple-dataset-version-info.component.scss | 25 + ...ple-dataset-version-info.component.spec.ts | 25 + .../simple-dataset-version-info.component.ts | 69 + ...simple-dataset-version-menu.component.html | 47 + ...imple-dataset-version-menu.component.scss} | 0 ...ple-dataset-version-menu.component.spec.ts | 25 + .../simple-dataset-version-menu.component.ts | 12 + ...ple-dataset-version-preview.component.html | 17 + ...ple-dataset-version-preview.component.scss | 14 + ...imple-dataset-version-preview.component.ts | 10 + .../simple-dataset-versions.component.html | 120 + .../simple-dataset-versions.component.scss | 0 .../simple-dataset-versions.component.spec.ts | 25 + .../simple-dataset-versions.component.ts | 74 + .../simple-datasets.component.html | 72 + .../simple-datasets.component.scss | 92 + .../simple-datasets.component.spec.ts | 25 + .../simple-datasets.component.ts | 84 + .../debug-image-snippet.component.html | 15 +- .../debug-image-snippet.component.scss | 27 +- .../debug-image-snippet.component.ts | 18 +- .../debug-images/debug-images-actions.ts | 8 +- .../debug-images/debug-images-effects.ts | 9 +- .../debug-images/debug-images-reducer.ts | 38 +- .../debug-images-view.component.html | 3 +- .../debug-images-view.component.scss | 2 +- .../debug-images-view.component.ts | 3 + .../debug-images/debug-images.component.html | 5 +- .../debug-images/debug-images.component.scss | 25 - .../debug-images/debug-images.component.ts | 58 +- .../debug-images/debug-images.module.ts | 30 +- ...-compare-hyper-params-graph.component.html | 3 +- ...-compare-hyper-params-graph.component.scss | 20 +- ...iment-compare-scalar-charts.component.scss | 6 +- ...eriment-compare-scalar-charts.component.ts | 8 +- ...iment-compare-metric-values.component.html | 5 +- ...eriment-compare-metric-values.component.ts | 15 +- .../experiment-compare-plots.component.scss | 6 +- .../experiment-compare-plots.component.ts | 13 +- ...ect-experiments-for-compare.component.html | 4 +- ...elect-experiments-for-compare.component.ts | 11 +- ...riment-compare-general-data.component.html | 14 +- ...riment-compare-general-data.component.scss | 9 +- ...periment-compare-general-data.component.ts | 11 +- .../experiment-compare-header.component.html | 9 +- .../experiment-compare-header.component.scss | 6 +- .../experiment-compare-header.component.ts | 5 +- ...eriments-compare-metrics-values.effects.ts | 2 +- .../experiments-compare.component.html | 1 + .../experiments-compare.component.ts | 4 + .../experiments-compare.constants.ts | 3 +- .../experiments-compare/reducers/index.ts | 2 + .../experiment-details-reverter.service.ts | 6 + .../common-experiment-output.actions.ts | 16 + .../common-experiments-info.actions.ts | 4 +- .../common-experiments-view.actions.ts | 67 +- .../experiments/common-experiments.module.ts | 2 +- .../base-experiment-output.component.scss | 6 +- .../experiment-output-plots.component.html | 72 +- .../experiment-output-plots.component.scss | 4 + .../experiment-output-plots.component.ts | 75 +- .../experiment-output-scalars.component.html | 2 + .../experiment-output-scalars.component.scss | 34 - .../experiment-output-scalars.component.ts | 34 +- .../shared-experiment-output.scss | 34 + ...periment-artifact-item-view.component.html | 2 +- ...experiment-artifact-item-view.component.ts | 3 +- ...riment-execution-parameters.component.scss | 2 +- .../experiment-general-info.component.html | 1 + .../experiment-header.component.html | 5 +- ...iment-info-edit-description.component.html | 2 +- ...iment-info-edit-description.component.scss | 4 +- .../experiment-info-header.component.html | 91 +- .../experiment-info-header.component.scss | 2 +- .../experiment-info-header.component.ts | 7 +- .../experiments-table.component.html | 49 +- .../experiments-table.component.ts | 44 +- .../image-viewer.component.html} | 8 +- .../image-viewer.component.scss} | 58 +- .../image-viewer.component.ts} | 44 +- .../common-experiment-output.effects.ts | 114 +- .../common-experiments-info.effects.ts | 30 +- .../common-experiments-menu.effects.ts | 40 +- .../common-experiments-view.effects.ts | 164 +- .../experiments/experiment.consts.ts | 6 + .../experiments/experiments.component.html | 2 + .../experiments/experiments.component.ts | 122 +- .../common-experiment-output.reducer.ts | 39 +- .../common-experiments-view.reducer.ts | 23 +- .../experiments/reducers/index.ts | 8 + .../shared/common-experiments.const.ts | 6 +- .../shared/common-experiments.utils.ts | 3 +- .../experiment-menu.component.ts | 4 +- ...xperiment-status-icon-label.component.html | 2 +- ...xperiment-status-icon-label.component.scss | 4 +- .../experiment-status-icon-label.component.ts | 4 +- .../breadcrumbs/breadcrumbs-common.utils.ts | 19 +- .../breadcrumbs/breadcrumbs.component.html | 139 +- .../breadcrumbs/breadcrumbs.component.scss | 92 +- .../breadcrumbs/breadcrumbs.component.ts | 169 +- .../layout/header/header.component.html | 23 +- .../layout/header/header.component.scss | 8 +- .../welcome-message.component.scss | 3 +- .../welcome-message.component.ts | 22 +- .../model-general-info.component.html | 4 +- .../model-general-info.component.scss | 6 + .../model-header/model-header.component.html | 5 +- .../model-info-header.component.html | 6 +- .../model-info-header.component.scss | 2 +- .../models/effects/models-menu.effects.ts | 9 +- .../models/effects/models-view.effects.ts | 93 +- .../models/models.component.html | 1 + .../webapp-common/models/models.component.ts | 182 +- src/app/webapp-common/models/models.consts.ts | 8 +- .../models/reducers/models-view.reducer.ts | 36 +- .../models-table/models-table.component.html | 23 +- .../models-table/models-table.component.ts | 27 +- .../controllers.component.html | 2 + .../controllers.component.scss | 2 +- .../controllers.component.ts | 19 +- .../controllers.consts.ts | 9 +- .../pipeline-controller-info.component.html | 8 +- .../pipeline-controller-info.component.scss | 48 +- .../pipeline-controller-info.component.ts | 100 +- .../pipeline-controller-menu.component.html | 4 +- .../pipeline-controller-menu.component.ts | 12 +- .../pipeline-controller-step.component.scss | 8 +- .../pipeline-controller-step.component.ts | 2 +- .../pipeline-info.component.html | 17 +- .../pipeline-info.component.scss | 75 +- .../pipeline-info.component.ts | 12 + .../pipelines-controller.module.ts | 4 +- .../pipeline-card-menu.component.html | 8 +- .../pipeline-card-menu.component.ts | 4 +- .../pipeline-card.component.spec.ts | 8 +- .../pipelines-page.component.scss | 2 +- .../pipelines-page.component.spec.ts | 9 +- .../pipelines/pipelines.module.ts | 6 +- .../pipelines/pipelines.route.ts | 33 + .../projects/common-projects.actions.ts | 14 +- .../projects/common-projects.effects.ts | 94 +- .../projects/common-projects.reducer.ts | 39 +- .../common-projects-page.component.html | 5 +- .../common-projects-page.component.scss | 1 + .../common-projects-page.component.ts | 14 +- .../projects-header.component.html | 2 +- .../projects-list.component.html | 4 +- .../projects-list/projects-list.component.ts | 1 + .../select-model/select-model.effects.ts | 2 +- .../profile-preferences.component.html | 9 +- .../profile-preferences.component.scss | 10 +- .../profile-preferences.component.ts | 33 +- .../clear-filters-button.component.ts | 2 +- .../id-badge/id-badge.component.html | 15 + .../id-badge/id-badge.component.scss | 45 + .../id-badge/id-badge.component.spec.ts | 25 + .../components/id-badge/id-badge.component.ts | 17 + .../multi-line-tooltip.component.html | 3 - .../multi-line-tooltip.component.ts | 5 +- .../ngx-json-viewer.component.html | 4 +- .../ngx-json-viewer.component.scss | 7 +- .../ngx-json-viewer.component.ts | 6 +- .../scroll-textarea.component.scss | 2 +- .../shared/entity-page/base-entity-page.ts | 23 +- .../base-delete-dialog.effects.ts | 3 +- .../experiment-graphs.component.html | 12 +- .../experiment-graphs.component.scss | 42 +- .../experiment-graphs.component.ts | 24 +- .../experiment-graphs.module.ts | 6 +- .../graph-displayer.component.ts | 149 - .../graph-settings-bar.component.scss | 2 +- .../graph-viewer.component.html} | 34 +- .../graph-viewer.component.scss} | 70 +- .../graph-viewer/graph-viewer.component.ts | 280 + .../single-graph/single-graph.component.ts | 24 +- .../single-value-summary-table.component.html | 12 + .../single-value-summary-table.component.scss | 48 + .../single-value-summary-table.component.ts | 32 + ...fo-header-status-icon-label.component.html | 5 +- ...info-header-status-icon-label.component.ts | 7 +- ...-header-status-progress-bar.component.html | 2 - .../shared/guards/project-redirect.guard.ts | 13 +- .../shared/pipes/filesize.pipe.ts | 11 +- .../shared/pipes/number-to-k.pipe.ts | 41 - .../shared/pipes/reverse.pipe.ts | 13 + .../shared/pipes/shared-pipes.module.ts | 20 +- src/app/webapp-common/shared/pipes/timeAgo.ts | 19 +- .../services/dag-manager-unsorted.service.ts | 41 + src/app/webapp-common/shared/shared.module.ts | 8 +- .../data/code-editor/code-editor.component.ts | 17 +- ...grouped-checked-filter-list.component.html | 1 + ...grouped-checked-filter-list.component.scss | 9 +- .../grouped-selectable-list.component.html | 11 +- .../grouped-selectable-list.component.scss | 48 +- .../labeled-row/labeled-row.component.scss | 4 +- .../selectable-filter-list.component.html | 4 +- .../selectable-filter-list.component.scss | 14 +- .../selectable-filter-list.component.ts | 2 +- ...ectable-grouped-filter-list.component.html | 4 +- ...ectable-grouped-filter-list.component.scss | 15 +- .../selectable-list.component.html | 4 +- .../selectable-list.component.scss | 10 + .../data/table-card/table-card.component.scss | 2 +- .../data/table-diff/table-diff.component.scss | 2 +- .../data/table/base-table-view.ts | 52 +- .../table-card-filter-template.component.html | 6 +- .../table-card-filter-template.component.scss | 4 + .../table-card-filter-template.component.ts | 3 + .../data/table/table.component.html | 4 +- .../data/table/table.component.ts | 7 +- .../directives/hesitate.directive.ts | 62 +- .../directives/overflows.directive.ts | 37 +- .../circle-counter.component.html | 13 +- .../circle-counter.component.scss | 27 +- .../circle-counter.component.ts | 33 +- .../copy-clipboard.component.html | 1 + .../copy-clipboard.component.scss | 3 + .../copy-clipboard.component.ts | 1 + .../snippet-error.component.html | 4 +- .../snippet-error.component.scss | 16 +- .../inline-edit/inline-edit.component.scss | 9 +- .../inline-edit/inline-edit.component.ts | 2 +- .../overlay/edit-json/edit-json.component.ts | 28 +- .../compare-footer.component.scss | 2 +- .../panel/drawer/drawer.component.scss | 11 +- .../model-card/model-card.component.html | 2 +- .../panel/model-card/model-card.component.ts | 15 +- .../project-card/project-card.component.html | 6 +- .../shared/ui-components/styles/icons.scss | 8 +- .../styles/mixins/wizard-template.scss | 2 +- .../overrides/viewer-iterations-slider.scss | 36 + .../ui-components/styles/themes/dark.scss | 2 +- .../ui-components/styles/variables.scss | 3 +- .../ui-components/ui-components.module.ts | 2 +- src/app/webapp-common/tasks/tasks.utils.ts | 134 +- .../effects/workers.effects.ts | 2 +- src/assets/version.json | 11 +- src/onboarding.json | 29 + src/version.json | 2 +- 339 files changed, 9471 insertions(+), 7768 deletions(-) create mode 100644 src/app/business-logic/model/events/eventsGetPlotSampleRequest.ts create mode 100644 src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsRequest.ts create mode 100644 src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponse.ts create mode 100644 src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseTasks.ts create mode 100644 src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseValues.ts create mode 100644 src/app/business-logic/model/events/eventsNextPlotSampleRequest.ts create mode 100644 src/app/business-logic/model/events/plotSampleResponse.ts create mode 100644 src/app/business-logic/model/organization/organizationGetEntitiesCountRequest.ts create mode 100644 src/app/business-logic/model/organization/organizationGetEntitiesCountResponse.ts create mode 100644 src/app/business-logic/model/projects/projectsGetAllResponseSingleDatasetStats.ts create mode 100644 src/app/features/dashboard-search/dashboard-search.consts.ts create mode 100644 src/app/features/dashboard-search/dashboard-search.effects.ts delete mode 100644 src/app/features/dashboard/containers/dashboard-search/dashboard-search.component.html delete mode 100644 src/app/features/dashboard/containers/dashboard-search/dashboard-search.component.ts create mode 100644 src/app/features/datasets/datasets-routing.module.ts create mode 100644 src/app/features/datasets/datasets.module.ts create mode 100644 src/app/features/datasets/shared/datasets-shared.module.ts create mode 100644 src/app/webapp-common/assets/icons/datasets-empty-state.svg create mode 100644 src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.html create mode 100644 src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.scss create mode 100644 src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.spec.ts create mode 100644 src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.html create mode 100644 src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.scss create mode 100644 src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.spec.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.html create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.scss create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.spec.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.html create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.scss create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.spec.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.html create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.scss create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.spec.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.html rename src/app/{features/dashboard/containers/dashboard-search/dashboard-search.component.scss => webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.scss} (100%) create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.spec.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.html create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.scss create mode 100644 src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.html create mode 100644 src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.scss create mode 100644 src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.spec.ts create mode 100644 src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.ts create mode 100644 src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.html create mode 100644 src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.scss create mode 100644 src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.spec.ts create mode 100644 src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.ts create mode 100644 src/app/webapp-common/experiments/containers/experiment-output-scalars/shared-experiment-output.scss rename src/app/webapp-common/experiments/dumb/{image-displayer/image-displayer.component.html => image-viewer/image-viewer.component.html} (96%) rename src/app/webapp-common/experiments/dumb/{image-displayer/image-displayer.component.scss => image-viewer/image-viewer.component.scss} (70%) rename src/app/webapp-common/experiments/dumb/{image-displayer/image-displayer.component.ts => image-viewer/image-viewer.component.ts} (87%) create mode 100644 src/app/webapp-common/pipelines/pipelines.route.ts create mode 100644 src/app/webapp-common/shared/components/id-badge/id-badge.component.html create mode 100644 src/app/webapp-common/shared/components/id-badge/id-badge.component.scss create mode 100644 src/app/webapp-common/shared/components/id-badge/id-badge.component.spec.ts create mode 100644 src/app/webapp-common/shared/components/id-badge/id-badge.component.ts delete mode 100644 src/app/webapp-common/shared/experiment-graphs/graph-displayer/graph-displayer.component.ts rename src/app/webapp-common/shared/experiment-graphs/{graph-displayer/graph-displayer.component.html => graph-viewer/graph-viewer.component.html} (54%) rename src/app/webapp-common/shared/experiment-graphs/{graph-displayer/graph-displayer.component.scss => graph-viewer/graph-viewer.component.scss} (57%) create mode 100644 src/app/webapp-common/shared/experiment-graphs/graph-viewer/graph-viewer.component.ts create mode 100644 src/app/webapp-common/shared/experiment-graphs/single-value-summary-table/single-value-summary-table.component.html create mode 100644 src/app/webapp-common/shared/experiment-graphs/single-value-summary-table/single-value-summary-table.component.scss create mode 100644 src/app/webapp-common/shared/experiment-graphs/single-value-summary-table/single-value-summary-table.component.ts delete mode 100644 src/app/webapp-common/shared/pipes/number-to-k.pipe.ts create mode 100644 src/app/webapp-common/shared/pipes/reverse.pipe.ts create mode 100644 src/app/webapp-common/shared/services/dag-manager-unsorted.service.ts create mode 100644 src/app/webapp-common/shared/ui-components/styles/overrides/viewer-iterations-slider.scss mode change 100644 => 120000 src/assets/version.json create mode 100644 src/onboarding.json diff --git a/package-lock.json b/package-lock.json index b2629f30..7739c48a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,37 +1,37 @@ { "name": "ClearML-webapp", - "version": "1.5.0", + "version": "1.6.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ClearML-webapp", - "version": "1.5.0", + "version": "1.6.0", "dependencies": { - "@angular/animations": "^13.2.2", - "@angular/cdk": "^13.2.2", - "@angular/common": "^13.2.2", - "@angular/compiler": "^13.2.2", - "@angular/core": "^13.2.2", - "@angular/forms": "^13.2.2", - "@angular/material": "^13.2.2", - "@angular/platform-browser": "^13.2.2", - "@angular/platform-browser-dynamic": "^13.2.2", - "@angular/platform-server": "^13.2.2", - "@angular/router": "^13.2.2", - "@angular/service-worker": "^13.2.2", - "@angular/youtube-player": "^13.2.2", - "@aws-sdk/client-s3": "^3.53.1", - "@aws-sdk/s3-request-presigner": "^3.53.1", - "@ngneat/dag": "^1.1.0", - "@ngrx/effects": "^13.0.2", - "@ngrx/entity": "^13.0.2", - "@ngrx/router-store": "^13.0.2", - "@ngrx/store": "^13.0.2", - "ace-builds": "^1.4.14", + "@angular/animations": "^13.3.7", + "@angular/cdk": "^13.3.7", + "@angular/common": "^13.3.7", + "@angular/compiler": "^13.3.7", + "@angular/core": "^13.3.7", + "@angular/forms": "^13.3.7", + "@angular/material": "^13.3.7", + "@angular/platform-browser": "^13.3.7", + "@angular/platform-browser-dynamic": "^13.3.7", + "@angular/platform-server": "^13.3.7", + "@angular/router": "^13.3.7", + "@angular/service-worker": "^13.3.7", + "@angular/youtube-player": "^13.3.7", + "@aws-sdk/client-s3": "^3.88.0", + "@aws-sdk/s3-request-presigner": "^3.88.0", + "@ngneat/dag": "^2.0.0", + "@ngrx/effects": "^13.2.0", + "@ngrx/entity": "^13.2.0", + "@ngrx/router-store": "^13.2.0", + "@ngrx/store": "^13.2.0", + "ace-builds": "^1.5.0", "angular-google-tag-manager": "^1.5.0", "angular-resizable-element": "^5.0.0", - "angular-split": "^13.1.0", + "angular-split": "^13.2.0", "ansi-to-html": "^0.7.2", "bootstrap": "^4.6.1", "britecharts": "^2.18.0", @@ -44,72 +44,71 @@ "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "lucene": "^2.1.1", - "ngx-clipboard": "^15.0.1", - "ngx-color-picker": "^12.0.0", + "ngx-clipboard": "^15.1.0", + "ngx-color-picker": "^12.0.1", "ngx-markdown-editor": "^4.0.0", "ngx-window-token": "^6.0.0", - "object-hash": "^2.2.0", + "object-hash": "^3.0.0", "primeicons": "^5.0.0", - "primeng": "^13.0.4", + "primeng": "^13.4.0", "process": "^0.11.10", "rxjs": "^7.5.5", "string-to-color": "^2.2.2", - "tslib": "^2.3.1", + "tslib": "^2.4.0", "url": "^0.11.0", "uuid": "^8.3.2", - "zone.js": "~0.11.4" + "zone.js": "~0.11.5" }, "devDependencies": { - "@angular-devkit/build-angular": "^13.2.3", - "@angular-devkit/core": "^13.2.3", - "@angular-devkit/schematics": "^13.2.3", - "@angular-devkit/schematics-cli": "^13.2.3", - "@angular-eslint/builder": "^13.1.0", - "@angular-eslint/eslint-plugin": "^13.1.0", - "@angular-eslint/eslint-plugin-template": "^13.1.0", - "@angular-eslint/schematics": "13.1.0", - "@angular-eslint/template-parser": "^13.1.0", - "@angular/cli": "^13.2.3", - "@angular/compiler-cli": "^13.2.2", - "@angular/language-service": "^13.2.2", - "@fortawesome/fontawesome-free": "^6.0.0", - "@ngrx/schematics": "^13.0.2", - "@ngrx/store-devtools": "^13.0.2", + "@angular-devkit/build-angular": "^13.3.5", + "@angular-devkit/core": "^13.3.5", + "@angular-devkit/schematics": "^13.3.5", + "@angular-devkit/schematics-cli": "^13.3.5", + "@angular-eslint/builder": "^13.2.1", + "@angular-eslint/eslint-plugin": "^13.2.1", + "@angular-eslint/eslint-plugin-template": "^13.2.1", + "@angular-eslint/schematics": "13.2.1", + "@angular-eslint/template-parser": "^13.2.1", + "@angular/cli": "^13.3.5", + "@angular/compiler-cli": "^13.3.7", + "@angular/language-service": "^13.3.7", + "@fortawesome/fontawesome-free": "^6.1.1", + "@ngrx/schematics": "^13.2.0", + "@ngrx/store-devtools": "^13.2.0", "@types/d3-selection": "^3.0.2", - "@types/lodash": "^4.14.178", + "@types/lodash": "^4.14.182", "@types/node": "^16.11.19", "@types/plotly.js": "^1.54.20", "@types/uuid": "^8.3.4", - "@typescript-eslint/eslint-plugin": "5.9.0", - "@typescript-eslint/parser": "5.9.0", - "codelyzer": "^6.0.2", - "eslint": "^8.9.0", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-jsdoc": "37.9.1", + "@typescript-eslint/eslint-plugin": "5.23.0", + "@typescript-eslint/parser": "5.23.0", + "eslint": "^8.15.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsdoc": "39.2.9", "eslint-plugin-prefer-arrow": "1.2.3", - "typescript": "^4.5.5" + "typescript": "~4.6.4" } }, "node_modules/@ampproject/remapping": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.1.1.tgz", - "integrity": "sha512-YVAcA4DKLOj296CF5SrQ8cYiMRiUGc2sqFpLxsDGWE34suHqhGP/5yMsDHKsrh8hs8I5TiRVXNwKPWQpX3iGjw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "sourcemap-codec": "1.4.8" + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@angular-devkit/architect": { - "version": "0.1302.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.3.tgz", - "integrity": "sha512-0m8jMKrFfIqsYt33zTUwSmyekyfuS67hna08RQ6USjzWQSE3z4S8ulCUARSjM6AzdMblX+whfy56nJUpT17NSA==", + "version": "0.1303.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.5.tgz", + "integrity": "sha512-ZF5Vul8UqwDSwYPxJ4YvdG7lmciJZ1nncyt9Dbk0swxw4MGdy0ZIf+91o318qUn/5JrttQ7ZCYoCZJCjYOSBtw==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.2.3", + "@angular-devkit/core": "13.3.5", "rxjs": "6.6.7" }, "engines": { @@ -137,15 +136,15 @@ "dev": true }, "node_modules/@angular-devkit/build-angular": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.3.tgz", - "integrity": "sha512-cZ2gRcMRgW3t1WCeP+2D/wmr2M+BR/RICAh0wL9irIdypWAzIFt3Z2+2R/HmgAAxoEkdUMIfB9AnkYmwRVgFeA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.5.tgz", + "integrity": "sha512-6ZQ788U0vT7KqMZeOsNQxP01IhOpxlbKonxK2fZNju8e+Ha2K77yV9A9XMbmcUGWRRHCOFvUEaJhvxDFsunESg==", "dev": true, "dependencies": { - "@ampproject/remapping": "1.1.1", - "@angular-devkit/architect": "0.1302.3", - "@angular-devkit/build-webpack": "0.1302.3", - "@angular-devkit/core": "13.2.3", + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1303.5", + "@angular-devkit/build-webpack": "0.1303.5", + "@angular-devkit/core": "13.3.5", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -156,7 +155,7 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.2.3", + "@ngtools/webpack": "13.3.5", "ansi-colors": "4.1.1", "babel-loader": "8.2.3", "babel-plugin-istanbul": "6.1.1", @@ -167,7 +166,7 @@ "core-js": "3.20.3", "critters": "0.0.16", "css-loader": "6.5.1", - "esbuild-wasm": "0.14.14", + "esbuild-wasm": "0.14.22", "glob": "7.2.0", "https-proxy-agent": "5.0.0", "inquirer": "8.2.0", @@ -175,10 +174,10 @@ "karma-source-map-support": "1.4.0", "less": "4.1.2", "less-loader": "10.2.0", - "license-webpack-plugin": "4.0.1", + "license-webpack-plugin": "4.0.2", "loader-utils": "3.2.0", "mini-css-extract-plugin": "2.5.3", - "minimatch": "3.0.4", + "minimatch": "3.0.5", "open": "8.4.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", @@ -190,18 +189,18 @@ "regenerator-runtime": "0.13.9", "resolve-url-loader": "5.0.0", "rxjs": "6.6.7", - "sass": "1.49.0", + "sass": "1.49.9", "sass-loader": "12.4.0", "semver": "7.3.5", "source-map-loader": "3.0.1", "source-map-support": "0.5.21", "stylus": "0.56.0", "stylus-loader": "6.2.0", - "terser": "5.10.0", + "terser": "5.11.0", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.1", - "webpack": "5.67.0", + "webpack": "5.70.0", "webpack-dev-middleware": "5.3.0", "webpack-dev-server": "4.7.3", "webpack-merge": "5.8.0", @@ -213,17 +212,17 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.14.14" + "esbuild": "0.14.22" }, "peerDependencies": { - "@angular/compiler-cli": "^13.0.0", - "@angular/localize": "^13.0.0", - "@angular/service-worker": "^13.0.0", + "@angular/compiler-cli": "^13.0.0 || ^13.3.0-rc.0", + "@angular/localize": "^13.0.0 || ^13.3.0-rc.0", + "@angular/service-worker": "^13.0.0 || ^13.3.0-rc.0", "karma": "^6.3.0", "ng-packagr": "^13.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=4.4.3 <4.6" + "typescript": ">=4.4.3 <4.7" }, "peerDependenciesMeta": { "@angular/localize": { @@ -246,6 +245,18 @@ } } }, + "node_modules/@angular-devkit/build-angular/node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", @@ -264,13 +275,19 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1302.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.3.tgz", - "integrity": "sha512-+JYH1lWU0UOjaWYxpoR2VLsdcb6nG9Gv+M1gH+kT0r2sAKOFaHnrksbOvca3EhDoaMa2b9LSGEE0OcSHWnN+eQ==", + "version": "0.1303.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.5.tgz", + "integrity": "sha512-EI7scRGKPw9Rg4LypUSTf7JM3lE1imTVxY8mY6gqNkRWnvsb5+kptJQ+gK+VZSom/URcPFbN40lJYwgmZBNPeA==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1302.3", + "@angular-devkit/architect": "0.1303.5", "rxjs": "6.6.7" }, "engines": { @@ -302,9 +319,9 @@ "dev": true }, "node_modules/@angular-devkit/core": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.3.tgz", - "integrity": "sha512-/47RA8qmWzeS60xSdaprIn1MiSv0Iw83t0M9/ENH7irFS5vMAq62NCcwiWXH59pZmvvLbF+7xy/RgYUZLr4nHQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.5.tgz", + "integrity": "sha512-w7vzK4VoYP9rLgxJ2SwEfrkpKybdD+QgQZlsDBzT0C6Ebp7b4gkNcNVFo8EiZvfDl6Yplw2IAP7g7fs3STn0hQ==", "dev": true, "dependencies": { "ajv": "8.9.0", @@ -347,12 +364,12 @@ "dev": true }, "node_modules/@angular-devkit/schematics": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.3.tgz", - "integrity": "sha512-+dyC4iKV0huvpjiuz4uyjLNK3FsCIp/Ghv5lXvhG6yok/dCAubsJItJOxi6G16aVCzG/E9zbsDfm9fNMyVOkgQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.5.tgz", + "integrity": "sha512-0N/kL/Vfx0yVAEwa3HYxNx9wYb+G9r1JrLjJQQzDp+z9LtcojNf7j3oey6NXrDUs1WjVZOa/AIdRl3/DuaoG5w==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.2.3", + "@angular-devkit/core": "13.3.5", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -365,16 +382,16 @@ } }, "node_modules/@angular-devkit/schematics-cli": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-13.2.3.tgz", - "integrity": "sha512-huCAno7u2K3Td3oiB41ax5AtoMyij6NmJsUxhpYQkZxnNsio9CKeSJnOuzml8SAILExc7sHFNW5A+9BeLluE4A==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-13.3.5.tgz", + "integrity": "sha512-ARX20ebtfwzef8GdXIcB6uv0sjTsaEniZyXBFchEKD6kR5EYZVaBL+ZVUbmsU1d0XY///WzW7pqwCyu5H1u+vw==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.2.3", - "@angular-devkit/schematics": "13.2.3", + "@angular-devkit/core": "13.3.5", + "@angular-devkit/schematics": "13.3.5", "ansi-colors": "4.1.1", "inquirer": "8.2.0", - "minimist": "1.2.5", + "minimist": "1.2.6", "symbol-observable": "4.0.0" }, "bin": { @@ -405,9 +422,9 @@ "dev": true }, "node_modules/@angular-eslint/builder": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-13.1.0.tgz", - "integrity": "sha512-RdyeetctnipVdCBrU/mipJ2XKiLC1yGmK1Sfbbgwu0s49CAdOArY/b+b8OU3yyy4EO1EGKQMlzs6F3wTYgiZCA==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-13.2.1.tgz", + "integrity": "sha512-79378DhlZ+hUlsTYvFs/BauiCQPN0RGlN5IuvzZs62yWquPecwK0nHcSasUe5OtiknuwIy7SwFq/AXyJVI+Ouw==", "dev": true, "dependencies": { "@nrwl/devkit": "13.1.3" @@ -418,19 +435,19 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-13.1.0.tgz", - "integrity": "sha512-0VSAZ3zrHkKdbvogQ4GLSf+lKojtPL3LXLlvXU9xNgNsqw68+gSNwaWd595tXoQCmpwWpTerKUbyIsGnPA7EYA==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-13.2.1.tgz", + "integrity": "sha512-v/O9s6yvg7MJTQ9iNdXpZJOAjunY4ATk/dE3+xTsLwWTZXTXLXZE1FtKD/reijoItZtGiLUJ+F1pK5nwq/iI6w==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-13.1.0.tgz", - "integrity": "sha512-WiggBWPhhpSjcYVHJiawCduCsydM/RPudUE8zxv0Nmj/APuzNgvUr6E//uYTrhNv9EIJoZutRovw7R4Y/yXj4Q==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-13.2.1.tgz", + "integrity": "sha512-hlHzbe7MIBbZ4IUKvJh5pjN5nKw0YZBwPyIB1+IBOJAdjWuS274uUGTZxKeyJiyJi0FOUu5+Z6vbM9ZJ2uzjcw==", "dev": true, "dependencies": { - "@angular-eslint/utils": "13.1.0", - "@typescript-eslint/experimental-utils": "5.11.0" + "@angular-eslint/utils": "13.2.1", + "@typescript-eslint/experimental-utils": "5.17.0" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0", @@ -438,13 +455,13 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-13.1.0.tgz", - "integrity": "sha512-ceZAMjufE58aduOW/UwjrbCRWocYC0zOEJ2jUkPt6jlL8yzc+SC6UitO0VmMgUsCizHueav5/3gKy05xqwk/CA==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-13.2.1.tgz", + "integrity": "sha512-fA11IGfnWzJePFVS04JKigQY33/Twp5Gv3sj6o8NLRi25NbZDFMc6YjRv8FuKfJ0DXrZh0nLgP2L/01qnXDgZQ==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "13.1.0", - "@typescript-eslint/experimental-utils": "5.11.0", + "@angular-eslint/bundled-angular-compiler": "13.2.1", + "@typescript-eslint/experimental-utils": "5.17.0", "aria-query": "^4.2.2", "axobject-query": "^2.2.0" }, @@ -454,13 +471,13 @@ } }, "node_modules/@angular-eslint/schematics": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-13.1.0.tgz", - "integrity": "sha512-/gVtkRP09cGhnUF3tr0phwNA5/ml94V3cqO8X4Z4QmyAaIwxuOJ0mJvWrVN7aurURxh9WoeWD/HXOvtC5igtpQ==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-13.2.1.tgz", + "integrity": "sha512-uejXuV9mGzjxw/WY7T3FBpm3HWmOtjnA3eFXzY2VssqaYbEcBl9DakBh9h+KivV86iH3F3ElY8WC0Ka25TCCsg==", "dev": true, "dependencies": { - "@angular-eslint/eslint-plugin": "13.1.0", - "@angular-eslint/eslint-plugin-template": "13.1.0", + "@angular-eslint/eslint-plugin": "13.2.1", + "@angular-eslint/eslint-plugin-template": "13.2.1", "ignore": "5.2.0", "strip-json-comments": "3.1.1", "tmp": "0.2.1" @@ -470,12 +487,12 @@ } }, "node_modules/@angular-eslint/template-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-13.1.0.tgz", - "integrity": "sha512-gKV+kms+kYm1HdToH3j4HL1RrjvMHscVkhwjoV1WbJColnfDivVAZ6/5/J92/A/8r7vJptQkftsbiaGKDyg47w==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-13.2.1.tgz", + "integrity": "sha512-aSZjKYTUXjJ3sehm90CfZey/ed333IxP0TpnaG7Lue9rSEa3BkKOv8Kffy+EhDkpdTpjdwdmGfopxxsbm9sPHw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "13.1.0", + "@angular-eslint/bundled-angular-compiler": "13.2.1", "eslint-scope": "^5.1.0" }, "peerDependencies": { @@ -484,13 +501,13 @@ } }, "node_modules/@angular-eslint/utils": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-13.1.0.tgz", - "integrity": "sha512-iLmYMXNk+1sFMIlYXN8/Z5UcNAOno38v10lzo4bMjCpzXKkMa0O2b+4qi+469iUJAU6RAZ5weUL+S2Wtlr0ooA==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-13.2.1.tgz", + "integrity": "sha512-TCw56jQDPe/FDg3IC0QTQVn4mv5Pzb8K4YpO2hiBdU4XwmOTGWjbwZO++Wr1Gekw1OJYVWSIwNfz2MrGIDsu7A==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "13.1.0", - "@typescript-eslint/experimental-utils": "5.11.0" + "@angular-eslint/bundled-angular-compiler": "13.2.1", + "@typescript-eslint/experimental-utils": "5.17.0" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0", @@ -498,9 +515,9 @@ } }, "node_modules/@angular/animations": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.2.tgz", - "integrity": "sha512-qX8LAMuCJaueHBVyuwKtqunx96G0Dr26k7y5Z03VTcscYst4Ib4V2d4i5dwn3HS82DehFdO86cm3Hi2PqE/qww==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.8.tgz", + "integrity": "sha512-zHQPFy2iW8Eqqm4vDTcri89zBg3UbSlOzREaUk1j6+ulFcNK50vmzqkUvcW/hy8x31+6VXkNvNDn2+Q2BWBxzA==", "dependencies": { "tslib": "^2.3.0" }, @@ -508,13 +525,13 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "13.2.2" + "@angular/core": "13.3.8" } }, "node_modules/@angular/cdk": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-13.2.2.tgz", - "integrity": "sha512-cT5DIaz+NI9IGb3X61Wh26+L6zdRcOXT1BP37iRbK2Qa2qM8/0VNeK6hrBBIblyoHKR/WUmRlS8XYf6mmArpZw==", + "version": "13.3.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-13.3.7.tgz", + "integrity": "sha512-HtGqlrt4+ikbpzooF0LT/uMW6fgRJxLRUoOwkTY1oHhfNXhQaE2p8XEUH2qshl28aCIF8r8zrb6jpd4VqC+tyg==", "dependencies": { "tslib": "^2.3.0" }, @@ -528,16 +545,16 @@ } }, "node_modules/@angular/cli": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.3.tgz", - "integrity": "sha512-QsakxpdQuO67u4fQNuOASqabYUO9gJb/5CpUGpWbuBzru0/9CMEF1CtXoF4EoDiwa5sJMirz3SJMKhtzFlv1cQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.5.tgz", + "integrity": "sha512-FrPg86cfmm0arWZInt55muCTpcQSNlvoViVrIVkyqSN06GoyCAQ2zn6/OYJnx/XAg/XvXTbygL+58c0WXuOaiA==", "dev": true, "hasInstallScript": true, "dependencies": { - "@angular-devkit/architect": "0.1302.3", - "@angular-devkit/core": "13.2.3", - "@angular-devkit/schematics": "13.2.3", - "@schematics/angular": "13.2.3", + "@angular-devkit/architect": "0.1303.5", + "@angular-devkit/core": "13.3.5", + "@angular-devkit/schematics": "13.3.5", + "@schematics/angular": "13.3.5", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -564,9 +581,9 @@ } }, "node_modules/@angular/common": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.2.tgz", - "integrity": "sha512-56C/bheNLKtTCyQUZCiYtKbBIZN9jj6rjFILPtJCGls3cBCxp7t9tIdoLiQG/wVQRmaxdj1ioLT+sCWz7mLtQw==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.8.tgz", + "integrity": "sha512-8GYa11PYC7Vj/bkNmzDqmpUyszAaJ565isKRDEQGcKWOB6k5OjnLT+nvMrKap7f347K2z+2qf+pXkgY8xXiDNA==", "dependencies": { "tslib": "^2.3.0" }, @@ -574,14 +591,14 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "13.2.2", + "@angular/core": "13.3.8", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.2.tgz", - "integrity": "sha512-XXQtB0/e7pR2LPrHmpEiTU72SX4xxHGy91vYWIj1JCjSn0fYF7vtHzSJPXDvkbnkNow/PXXzJJYaU1ctdMZPcA==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.8.tgz", + "integrity": "sha512-9g6prh4q6jbROskV+ZKDs0+gsllu8A3wYme/b54MHRc8Xdz9IeWAqwYFqUwuu2PZneR1ba0HmFtptTuzKnWGSQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -590,16 +607,16 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.2.tgz", - "integrity": "sha512-tuOIcEEKVIht+mKrj0rtX3I8gc+ByPjzpCZhFQRggxM6xbKJIToO1zERbEGKrZ+sUJ6BB5KLvscDy+Pddy3b8w==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.8.tgz", + "integrity": "sha512-DT3ux6OvWy4oL9kJPduQhFktKYmJKYWifPaEx6mCS3NOmWcMZLnpU03yC8mn+JFM2/ZHZs3m1Xn00hVzUmEPvg==", "dev": true, "dependencies": { - "@babel/core": "^7.8.6", + "@babel/core": "^7.17.2", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", "dependency-graph": "^0.11.0", - "magic-string": "^0.25.0", + "magic-string": "^0.26.0", "reflect-metadata": "^0.1.2", "semver": "^7.0.0", "sourcemap-codec": "^1.4.8", @@ -615,14 +632,79 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "13.2.2", - "typescript": ">=4.4.2 <4.6" + "@angular/compiler": "13.3.8", + "typescript": ">=4.4.2 <4.7" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", + "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/@angular/compiler-cli/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==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" } }, "node_modules/@angular/core": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.2.tgz", - "integrity": "sha512-zpctw0BxIVOsRFnckchK15SD1L8tzhf5GzwIDaM6+VylDQj1uYkm8mvAjJTQZyUuApomoFet2Rfj7XQPV+cNSQ==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.8.tgz", + "integrity": "sha512-FGQ+fvTm0QnNBKBamTJSzfBnxn+/gVBHT+2gpQtpax4LFP/6Z05N3AsJ2ZwM9mJwT4MH1HsEVJcXZCy7xXUXhg==", "dependencies": { "tslib": "^2.3.0" }, @@ -635,9 +717,9 @@ } }, "node_modules/@angular/forms": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.2.tgz", - "integrity": "sha512-T61W4Ay9X9qhxjc6lLqpNFeHrGKwg2mqdsZ3zIm/c7oKo37mgl9TB5kkrtnS+205r3N2hF4ICnGFZ4a/egUP/g==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.8.tgz", + "integrity": "sha512-XG1uHUr7LfFKsE7cHfhOBj7f3xmuHWndBrHyqqNShpZBng35wiSktIWKHFL13IHeT+5J8WntR7/HpKwzKV84Vw==", "dependencies": { "tslib": "^2.3.0" }, @@ -645,31 +727,31 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.2", - "@angular/core": "13.2.2", - "@angular/platform-browser": "13.2.2", + "@angular/common": "13.3.8", + "@angular/core": "13.3.8", + "@angular/platform-browser": "13.3.8", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.2.2.tgz", - "integrity": "sha512-2P5+wRsbHgpI2rVeFwnsLWxyntUiw8kG9Tqh5BkVDqtQovbYtzFiaMkf5TFz/g938JBBgeRQzvXr1kQhEidAWQ==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.3.8.tgz", + "integrity": "sha512-dA+uxtUO+7i5gMCwIMtaUMse6+Bep6JcDWo8GJ/nWS8c3GAS2E96Sm3NBycKWGaiz9HNOgO2cbpPlMifKPREow==", "dev": true, "engines": { "node": "^12.20.0 || ^14.15.0 || >=16.10.0" } }, "node_modules/@angular/material": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-13.2.2.tgz", - "integrity": "sha512-YAjPp2+/wuEOPfkAxdRVdbWHiK4P3DgMZa9qP/NizN2lTXNrftEfD09ZlPIFMZRnnExezJ2LnO7eyELpc1VSKg==", + "version": "13.3.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-13.3.7.tgz", + "integrity": "sha512-CXdLvohaxl3Nii6I70pEJX2FZRRkBPNiocUNP39hFHXf2PW/eNYCN8TS5DG2uOAaR2wyPwrXrU95mDjgvlqXqQ==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/animations": "^13.0.0 || ^14.0.0-0", - "@angular/cdk": "13.2.2", + "@angular/cdk": "13.3.7", "@angular/common": "^13.0.0 || ^14.0.0-0", "@angular/core": "^13.0.0 || ^14.0.0-0", "@angular/forms": "^13.0.0 || ^14.0.0-0", @@ -678,9 +760,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.2.tgz", - "integrity": "sha512-M7gWC8fFCPc/CRcHCzqe/j7WzwAUMeKt9vwlK633XnesHBoqZdYgbb3YHHc6WPVU0YI09Nb/Hm5sezEKmjUmPg==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.8.tgz", + "integrity": "sha512-QRkly2LL6aJJaO6Fw6VwuigtYxefukCJ9SS/jZI0rND94bUX9g4exHv87sQsN8LOUdFIVXXqXSY1Oy1eW0X+IQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -688,9 +770,9 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "13.2.2", - "@angular/common": "13.2.2", - "@angular/core": "13.2.2" + "@angular/animations": "13.3.8", + "@angular/common": "13.3.8", + "@angular/core": "13.3.8" }, "peerDependenciesMeta": { "@angular/animations": { @@ -699,9 +781,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.2.tgz", - "integrity": "sha512-lj6xwat0StLp+ROFqXU62upwHQhlxaQi0djhrS+DGKUK0Xu9bkBeaSCfBFgS78jPm1SwL8Xztu9/vuDAHLRrqw==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.8.tgz", + "integrity": "sha512-KWAfceZePkFZF9uePwIkoToM0LF4WPM/Ps1ijbeX0XaCFN7SFImoKfjiFEiRrRXjiCgKhPOJs69I0tTxiQA0VA==", "dependencies": { "tslib": "^2.3.0" }, @@ -709,16 +791,16 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.2", - "@angular/compiler": "13.2.2", - "@angular/core": "13.2.2", - "@angular/platform-browser": "13.2.2" + "@angular/common": "13.3.8", + "@angular/compiler": "13.3.8", + "@angular/core": "13.3.8", + "@angular/platform-browser": "13.3.8" } }, "node_modules/@angular/platform-server": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-13.2.2.tgz", - "integrity": "sha512-v17/E9hWY5/MgUjk+E+aNUNZ/wmhHb08RyeKvvUKhx8Xb24hRiMdjA9yMkt1UsjOGJUIeZ8s5nn6xRiRc3t+9A==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-13.3.8.tgz", + "integrity": "sha512-UWx2M5NPkdPbaupgcqTPwDTSVQlV50yA926Yjk5sP1v/3xeV5kCqMrj8iEQkSM7xSRa0daLI/b6YZU1tBvudwQ==", "dependencies": { "domino": "^2.1.2", "tslib": "^2.3.0", @@ -728,18 +810,18 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "13.2.2", - "@angular/common": "13.2.2", - "@angular/compiler": "13.2.2", - "@angular/core": "13.2.2", - "@angular/platform-browser": "13.2.2", - "@angular/platform-browser-dynamic": "13.2.2" + "@angular/animations": "13.3.8", + "@angular/common": "13.3.8", + "@angular/compiler": "13.3.8", + "@angular/core": "13.3.8", + "@angular/platform-browser": "13.3.8", + "@angular/platform-browser-dynamic": "13.3.8" } }, "node_modules/@angular/router": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.2.tgz", - "integrity": "sha512-dt2b9/kGJAkmOqUmUD3aKlp4pGpdqLwB0zmhUYF3ktNEcQaPf4ZjWT/4jhy09gFL+TKOHG5OQW9GxBbhWI4bSg==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.8.tgz", + "integrity": "sha512-iYiWezg+XCaBWgP/GCe8IOEtR4hcn0oGcnBZVNySD+gHBWH9o7QYDvDItCEpVKBLTwNaB0ftSIkkPzcW/eR+kA==", "dependencies": { "tslib": "^2.3.0" }, @@ -747,16 +829,16 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.2", - "@angular/core": "13.2.2", - "@angular/platform-browser": "13.2.2", + "@angular/common": "13.3.8", + "@angular/core": "13.3.8", + "@angular/platform-browser": "13.3.8", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/service-worker": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-13.2.2.tgz", - "integrity": "sha512-bIjzK1+AvD/z6mQesWGCejBqY7YnOZjsb979CZ8Opul5ToQUm1n1NWISre1Hqexv46Wfql7RyLt2d/YJbjVnXw==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-13.3.8.tgz", + "integrity": "sha512-NoXV1DhjeJ0v7Exn/kKmM7fHidPpGCfs3o6IhCWMMJA3FoBCW2Zx15Pjb7AvLDi2M1tiUdp6RG28T2loM03mVw==", "dependencies": { "tslib": "^2.3.0" }, @@ -767,14 +849,14 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.2", - "@angular/core": "13.2.2" + "@angular/common": "13.3.8", + "@angular/core": "13.3.8" } }, "node_modules/@angular/youtube-player": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/youtube-player/-/youtube-player-13.2.6.tgz", - "integrity": "sha512-HDgL0QFkKsY8YZH6hhYjYaFEEBotaVUhJV+d53Snz6Ekz8zQ3O3b3swhDFFL/dwweK9bsrXBWwHXOrZmkUIrpQ==", + "version": "13.3.7", + "resolved": "https://registry.npmjs.org/@angular/youtube-player/-/youtube-player-13.3.7.tgz", + "integrity": "sha512-WlO3AUCl87bEiwK3gJH0UhqmnP7V1Vsy/+AFZiqfz2XZNgxXthByqd3HRBRB7/+E1YMWbdMQQ3p2QS3F+Al2MQ==", "dependencies": { "@types/youtube": "^0.0.42", "tslib": "^2.3.0" @@ -916,567 +998,566 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@aws-sdk/abort-controller": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.54.0.tgz", - "integrity": "sha512-6N7numECrGwal2NEbJwYXOGjwWsFafz8VuUvCBK5G9SgSL5XAbq1S3lL/4gbme5jhgh9CWh7s+bAY7EpOEH2Xg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.78.0.tgz", + "integrity": "sha512-iz1YLwM2feJUj/y97yO4XmDeTxs+yZ1XJwQgoawKuc8IDBKUutnJNCHL5jL04WUKU7Nrlq+Hr2fCTScFh2z9zg==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/chunked-blob-reader": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.52.0.tgz", - "integrity": "sha512-BAZhriHHfvnGOd0P9xcnGu8DGyxOa0lgmEw+Tc6nZpXJzx0P+1Sd76q5gE5d/IZ0r5VTB6rfwwKUoG6iShNCwQ==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.55.0.tgz", + "integrity": "sha512-o/xjMCq81opAjSBjt7YdHJwIJcGVG5XIV9+C2KXcY5QwVimkOKPybWTv0mXPvSwSilSx+EhpLNhkcJuXdzhw4w==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/chunked-blob-reader-native": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.52.0.tgz", - "integrity": "sha512-/hVzC0Q12/mWRMBBQD3v82xsLSxZ4RwG6N44XP7MuJoHy4ui4T7D9RSuvBpzzr/4fqF0w9M7XYv6aM4BD2pFIQ==", + "version": "3.58.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.58.0.tgz", + "integrity": "sha512-+D3xnPD5985iphgAqgUerBDs371a2WzzoEVi7eHJUMMsP/gEnSTdSH0HNxsqhYv6CW4EdKtvDAQdAwA1VtCf2A==", "dependencies": { - "@aws-sdk/util-base64-browser": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/util-base64-browser": "3.58.0", + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.54.0.tgz", - "integrity": "sha512-9JdhkTqRCYA3esnjFR7xaFysXMfX5TatKE9H8Sds78eoMQrfgB2Yl6ZcEl8Oy0vpMVpOzqRYmcSmFfaBOhuI/g==", + "version": "3.88.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.88.0.tgz", + "integrity": "sha512-OZZZ2k1YMpnWYi+9Jb9lIhc2Gr6Z4vl35MKlWAsSC9ed/3vzPhkyKBAFuIi7wIWsRof0QtVLlpQKKBPyylK95g==", "dependencies": { "@aws-crypto/sha1-browser": "2.0.0", "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/client-sts": "3.54.0", - "@aws-sdk/config-resolver": "3.54.0", - "@aws-sdk/credential-provider-node": "3.54.0", - "@aws-sdk/eventstream-serde-browser": "3.54.0", - "@aws-sdk/eventstream-serde-config-resolver": "3.54.0", - "@aws-sdk/eventstream-serde-node": "3.54.0", - "@aws-sdk/fetch-http-handler": "3.54.0", - "@aws-sdk/hash-blob-browser": "3.54.0", - "@aws-sdk/hash-node": "3.54.0", - "@aws-sdk/hash-stream-node": "3.54.0", - "@aws-sdk/invalid-dependency": "3.54.0", - "@aws-sdk/md5-js": "3.54.0", - "@aws-sdk/middleware-bucket-endpoint": "3.54.0", - "@aws-sdk/middleware-content-length": "3.54.0", - "@aws-sdk/middleware-expect-continue": "3.54.0", - "@aws-sdk/middleware-flexible-checksums": "3.54.0", - "@aws-sdk/middleware-host-header": "3.54.0", - "@aws-sdk/middleware-location-constraint": "3.54.0", - "@aws-sdk/middleware-logger": "3.54.0", - "@aws-sdk/middleware-retry": "3.54.0", - "@aws-sdk/middleware-sdk-s3": "3.54.0", - "@aws-sdk/middleware-serde": "3.54.0", - "@aws-sdk/middleware-signing": "3.54.0", - "@aws-sdk/middleware-ssec": "3.54.0", - "@aws-sdk/middleware-stack": "3.54.0", - "@aws-sdk/middleware-user-agent": "3.54.0", - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/node-http-handler": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/smithy-client": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/url-parser": "3.54.0", - "@aws-sdk/util-base64-browser": "3.52.0", - "@aws-sdk/util-base64-node": "3.52.0", - "@aws-sdk/util-body-length-browser": "3.54.0", - "@aws-sdk/util-body-length-node": "3.54.0", - "@aws-sdk/util-defaults-mode-browser": "3.54.0", - "@aws-sdk/util-defaults-mode-node": "3.54.0", - "@aws-sdk/util-stream-browser": "3.54.0", - "@aws-sdk/util-stream-node": "3.54.0", - "@aws-sdk/util-user-agent-browser": "3.54.0", - "@aws-sdk/util-user-agent-node": "3.54.0", - "@aws-sdk/util-utf8-browser": "3.52.0", - "@aws-sdk/util-utf8-node": "3.52.0", - "@aws-sdk/util-waiter": "3.54.0", - "@aws-sdk/xml-builder": "3.52.0", + "@aws-sdk/client-sts": "3.87.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-node": "3.87.0", + "@aws-sdk/eventstream-serde-browser": "3.78.0", + "@aws-sdk/eventstream-serde-config-resolver": "3.78.0", + "@aws-sdk/eventstream-serde-node": "3.78.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-blob-browser": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/hash-stream-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/md5-js": "3.78.0", + "@aws-sdk/middleware-bucket-endpoint": "3.80.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-expect-continue": "3.78.0", + "@aws-sdk/middleware-flexible-checksums": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-location-constraint": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-sdk-s3": "3.86.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/middleware-ssec": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4-multi-region": "3.88.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-stream-browser": "3.78.0", + "@aws-sdk/util-stream-node": "3.78.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "@aws-sdk/util-waiter": "3.78.0", + "@aws-sdk/xml-builder": "3.55.0", "entities": "2.2.0", "fast-xml-parser": "3.19.0", - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.54.0.tgz", - "integrity": "sha512-5ZYYhoMqeaYhOU4kOEM7daKb8D5QhJ+IpwhHHMPhoHqQEwbbhBTFDXRs3ObUP/QYdBUMWS71+pnDoUdyHqPQ0Q==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.85.0.tgz", + "integrity": "sha512-JMW0NzFpo99oE6O9M/kgLela73p4vmhe/5TIcdrqUvP9XUV9nANl5nSXh3rqLz0ubmliedz9kdYYhwMC3ntoXg==", "dependencies": { "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.54.0", - "@aws-sdk/fetch-http-handler": "3.54.0", - "@aws-sdk/hash-node": "3.54.0", - "@aws-sdk/invalid-dependency": "3.54.0", - "@aws-sdk/middleware-content-length": "3.54.0", - "@aws-sdk/middleware-host-header": "3.54.0", - "@aws-sdk/middleware-logger": "3.54.0", - "@aws-sdk/middleware-retry": "3.54.0", - "@aws-sdk/middleware-serde": "3.54.0", - "@aws-sdk/middleware-stack": "3.54.0", - "@aws-sdk/middleware-user-agent": "3.54.0", - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/node-http-handler": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/smithy-client": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/url-parser": "3.54.0", - "@aws-sdk/util-base64-browser": "3.52.0", - "@aws-sdk/util-base64-node": "3.52.0", - "@aws-sdk/util-body-length-browser": "3.54.0", - "@aws-sdk/util-body-length-node": "3.54.0", - "@aws-sdk/util-defaults-mode-browser": "3.54.0", - "@aws-sdk/util-defaults-mode-node": "3.54.0", - "@aws-sdk/util-user-agent-browser": "3.54.0", - "@aws-sdk/util-user-agent-node": "3.54.0", - "@aws-sdk/util-utf8-browser": "3.52.0", - "@aws-sdk/util-utf8-node": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "tslib": "^2.3.1" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.54.0.tgz", - "integrity": "sha512-UY8fyi1zaWBJm+ZtDZRvSOv1rjHlvJjtJF3MfGQWDwUM10Amwzfh4Hc2JEzyeMJPkoSSvm6CVjSDyqXo8yLGZA==", + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.87.0.tgz", + "integrity": "sha512-JGI5rzSq8T7IVlfDJ8ltGl8nyVEtwvqXrYR87DwTjeE4HP+/oBdWdbO0oBL1TJMGjzZcENyVYvmaSAkobenkTg==", "dependencies": { "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.54.0", - "@aws-sdk/credential-provider-node": "3.54.0", - "@aws-sdk/fetch-http-handler": "3.54.0", - "@aws-sdk/hash-node": "3.54.0", - "@aws-sdk/invalid-dependency": "3.54.0", - "@aws-sdk/middleware-content-length": "3.54.0", - "@aws-sdk/middleware-host-header": "3.54.0", - "@aws-sdk/middleware-logger": "3.54.0", - "@aws-sdk/middleware-retry": "3.54.0", - "@aws-sdk/middleware-sdk-sts": "3.54.0", - "@aws-sdk/middleware-serde": "3.54.0", - "@aws-sdk/middleware-signing": "3.54.0", - "@aws-sdk/middleware-stack": "3.54.0", - "@aws-sdk/middleware-user-agent": "3.54.0", - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/node-http-handler": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/smithy-client": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/url-parser": "3.54.0", - "@aws-sdk/util-base64-browser": "3.52.0", - "@aws-sdk/util-base64-node": "3.52.0", - "@aws-sdk/util-body-length-browser": "3.54.0", - "@aws-sdk/util-body-length-node": "3.54.0", - "@aws-sdk/util-defaults-mode-browser": "3.54.0", - "@aws-sdk/util-defaults-mode-node": "3.54.0", - "@aws-sdk/util-user-agent-browser": "3.54.0", - "@aws-sdk/util-user-agent-node": "3.54.0", - "@aws-sdk/util-utf8-browser": "3.52.0", - "@aws-sdk/util-utf8-node": "3.52.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-node": "3.87.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-sdk-sts": "3.78.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", "entities": "2.2.0", "fast-xml-parser": "3.19.0", - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@aws-sdk/config-resolver": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.54.0.tgz", - "integrity": "sha512-VaNuvJLMaz3znmBD9BNkoEqNUs5teILU66SnFqBwVqabmOVeOh7M6/f43CcDarkwGklzZB/bn/rx9NOWUtdunA==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.80.0.tgz", + "integrity": "sha512-vFruNKlmhsaC8yjnHmasi1WW/7EELlEuFTj4mqcqNqR4dfraf0maVvpqF1VSR8EstpFMsGYI5dmoWAnnG4PcLQ==", "dependencies": { - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-config-provider": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-config-provider": "3.55.0", + "@aws-sdk/util-middleware": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.54.0.tgz", - "integrity": "sha512-XWfzoUyFVsT4J7iTnXO38FKNdGFyE6ZNBtW9+Yx9EiiLtUlzH09PRv+54KIRQ4uqU+fEdtRh0gOdFajTrnRi3g==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.78.0.tgz", + "integrity": "sha512-K41VTIzVHm2RyIwtBER8Hte3huUBXdV1WKO+i7olYVgLFmaqcZUNrlyoGDRqZcQ/u4AbxTzBU9jeMIbIfzMOWg==", "dependencies": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/credential-provider-imds": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.54.0.tgz", - "integrity": "sha512-Chygp8jswdjtCPmNxEMXigX4clgqh5GDaFGopR/gFaaG960hjF88Fx1/CPYD7exvM1FRO67nyfBOS0QKjSqTXg==", + "version": "3.81.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.81.0.tgz", + "integrity": "sha512-BHopP+gaovTYj+4tSrwCk8NNCR48gE9CWmpIOLkP9ell0gOL81Qh7aCEiIK0BZBZkccv1s16cYq1MSZZGS7PEQ==", "dependencies": { - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/url-parser": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.54.0.tgz", - "integrity": "sha512-EobK9bJwsUdMKx7vB+tL5eaNaj/NoOPaFJlv0JRL3+5px7d2vF0i9yklj4uT7F3vDlOup6R3b1Gg9GtqxfYt9w==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.85.0.tgz", + "integrity": "sha512-KgzLGq+w8OrSLutwdYUw0POeLinGQKcqvQJ9702eoeXCwZMnEHwKqU61bn8QKMX/tuYVCNV4I1enI7MmYPW8Lw==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.54.0", - "@aws-sdk/credential-provider-imds": "3.54.0", - "@aws-sdk/credential-provider-sso": "3.54.0", - "@aws-sdk/credential-provider-web-identity": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-credentials": "3.53.0", - "tslib": "^2.3.0" + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.54.0.tgz", - "integrity": "sha512-KsXJG0K7yJg2MCzNW52fSDbCIR5mRobbNnXTMpDRkghlQyHP1gdHsyRedVciMkJhdDILop2lScLw70iQBayP/Q==", + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.87.0.tgz", + "integrity": "sha512-yL9W5nX00grNNsGj2df1y7hQ0F77UA7+2toPOVqYPIDhFtIUA97AVYiBEFQz1mO9OAhUfCGgxuFF4pyqFoMcHQ==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.54.0", - "@aws-sdk/credential-provider-imds": "3.54.0", - "@aws-sdk/credential-provider-ini": "3.54.0", - "@aws-sdk/credential-provider-process": "3.54.0", - "@aws-sdk/credential-provider-sso": "3.54.0", - "@aws-sdk/credential-provider-web-identity": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-credentials": "3.53.0", - "tslib": "^2.3.0" + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-ini": "3.85.0", + "@aws-sdk/credential-provider-process": "3.80.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.54.0.tgz", - "integrity": "sha512-hjUQ6FRG3Ihsm77Rgrf1dSfRUVZAFEyAHCuwURePXpYjzMpFYjl12wL6Pwa7MLCqVMyLKQ8HYamznkgBlLQqxw==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.80.0.tgz", + "integrity": "sha512-3Ro+kMMyLUJHefOhGc5pOO/ibGcJi8bkj0z/Jtqd5I2Sm1qi7avoztST67/k48KMW1OqPnD/FUqxz5T8B2d+FQ==", "dependencies": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-credentials": "3.53.0", - "tslib": "^2.3.0" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.54.0.tgz", - "integrity": "sha512-8HfBTdOw+9gbWsXRTr5y+QYq8gK+YYDx7tKbNv7ZWjMfw49SDef0j0W4ZBZH+FYEPepOEAKjBgtjvlUeFxrOaA==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.85.0.tgz", + "integrity": "sha512-uE238BgJ/AftPDlBGDlV0XdiNWnUZxFmUmLxgbr19/6jHaCuBr//T6rP+Bc0BjcHkvQCvTdFoCjs17R3Quy3cw==", "dependencies": { - "@aws-sdk/client-sso": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-credentials": "3.53.0", - "tslib": "^2.3.0" + "@aws-sdk/client-sso": "3.85.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.54.0.tgz", - "integrity": "sha512-Mi87IzpgIi6P3WntumgMJ6rNY8Ay/HtsLFYm4bZ1ZGJH/3QVT4YLm1n8A4xoC+ouhL0i24jmN3X1aNu6amBfEg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.78.0.tgz", + "integrity": "sha512-9/IvqHdJaVqMEABA8xZE3t5YF1S2PepfckVu0Ws9YUglj6oO+2QyVX6aRgMF1xph6781+Yc31TDh8/3eaDja7w==", "dependencies": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/eventstream-marshaller": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.54.0.tgz", - "integrity": "sha512-blOxssrHCnugxdcudYB3Vmlp7ziG0to9RfnPq+InI98mIDm3G+rt7vW6GtlkgyWu0EYduj6N+aOI7ssRUCOyDQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.78.0.tgz", + "integrity": "sha512-BMbRvLe6wNWQ+NO1pdPw3kGXXEdYV94BxEr3rTkKwr5yHpl8sUb/Va9sJJufUjzggpgE4vYu5nVsrT8ByMYXuA==", "dependencies": { "@aws-crypto/crc32": "2.0.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-hex-encoding": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-hex-encoding": "3.58.0", + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/eventstream-serde-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.54.0.tgz", - "integrity": "sha512-XU9+nA7WlO+Rj0hV+C/2ZlB0zfI4eoit/CIlfGaonfx6EFezH3l4ngMZq8lgd8fSuPy1dN25DWQsW/F3AFSRdg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.78.0.tgz", + "integrity": "sha512-ehQI2iLsj8MMskDRbrPB7SibIdJq6LleBP6ojT+cgrLJRbVXUOxK+3MPHDZVdGYx4ukVg48E1fA2DzVfAp7Emw==", "dependencies": { - "@aws-sdk/eventstream-marshaller": "3.54.0", - "@aws-sdk/eventstream-serde-universal": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/eventstream-marshaller": "3.78.0", + "@aws-sdk/eventstream-serde-universal": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/eventstream-serde-config-resolver": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.54.0.tgz", - "integrity": "sha512-fnbwtjaSd05K2+rcEZ3TQfM6YBY6obWqqt/x0qTTt7277wdqvE3+i0dWcvrQLldGD7xY3+oitEmClAeCE0raiA==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.78.0.tgz", + "integrity": "sha512-iUG0wtZH/L7d6XfipwbhgjBHip0uTm9S27EasCn+g0CunbW6w7rXd7rfMqA+gSLVXPTBYjTMPIwRxrTCdRprwA==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/eventstream-serde-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.54.0.tgz", - "integrity": "sha512-b/EXk+Yb6lspfdEvClDkutif1z7Ggbeg/s2z9ug8Zh32i4/8gc4kcoWHy4ez8GUqsrRuOfD1MScqxkSAmIlPlg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.78.0.tgz", + "integrity": "sha512-H78LLoZEngZBSdk3lRQkAaR3cGsy/3UIjq9AFPeqoPVQtHkzBob1jVfE/5VSVAMhKLxWn8iqhRPS37AvyBGOwQ==", "dependencies": { - "@aws-sdk/eventstream-marshaller": "3.54.0", - "@aws-sdk/eventstream-serde-universal": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/eventstream-marshaller": "3.78.0", + "@aws-sdk/eventstream-serde-universal": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/eventstream-serde-universal": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.54.0.tgz", - "integrity": "sha512-HdFYrLvKHWATev0BCp0I8xH40MhP9cNhxK0h+srdCC9o/Djs3QrI0Nn5rzWdg/hQDyRg8jPSvaGG8P/ekyTn2w==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.78.0.tgz", + "integrity": "sha512-PZTLdyF923/1GJuMNtq9VMGd2vEx33HhsGInXvYtulKDSD5SgaTGj+Dz5wYepqL1gUEuXqZjBD71uZgrY/JgRg==", "dependencies": { - "@aws-sdk/eventstream-marshaller": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/eventstream-marshaller": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/fetch-http-handler": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.54.0.tgz", - "integrity": "sha512-TIn2ocem/gpMQ12KoiOu3uTHO86OOrmFITulV9D8xTzvFqHe34JKjHQPqII6lDbTCnU9N5CMv3N1CXxolIhiOQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.78.0.tgz", + "integrity": "sha512-cR6r2h2kJ1DNEZSXC6GknQB7OKmy+s9ZNV+g3AsNqkrUmNNOaHpFoSn+m6SC3qaclcGd0eQBpqzSu/TDn23Ihw==", "dependencies": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/querystring-builder": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-base64-browser": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/querystring-builder": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/hash-blob-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.54.0.tgz", - "integrity": "sha512-KIflBj2efxy5/z1ffg1HL3CRxqM7hNqel+dtVCYaCfTJ/MQhcfcR5GsodhJYl99pitryorJeB4chhgNv4bbPUA==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.78.0.tgz", + "integrity": "sha512-IEkA+t6qJEtEYEZgsqFRRITeZJ3mirw7IHJVHxwb86lpeufTVcbILI59B8/rhbqG+9dk0kWTjYSjC/ZdM+rgHA==", "dependencies": { - "@aws-sdk/chunked-blob-reader": "3.52.0", - "@aws-sdk/chunked-blob-reader-native": "3.52.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/chunked-blob-reader": "3.55.0", + "@aws-sdk/chunked-blob-reader-native": "3.58.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/hash-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.54.0.tgz", - "integrity": "sha512-o2XRftfj3Tj2jsZsdvnEY4OtmkT/9OADCWkINQCTcfy+nMuvs1IAS/qruunfaMJ58GntOoI4CVIbRa2lhhJr5w==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.78.0.tgz", + "integrity": "sha512-ev48yXaqZVtMeuKy52LUZPHCyKvkKQ9uiUebqkA+zFxIk+eN8SMPFHmsififIHWuS6ZkXBUSctjH9wmLebH60A==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-buffer-from": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/hash-stream-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.54.0.tgz", - "integrity": "sha512-j936gz9O1ist0Bu2IXCf2DUrYfB9DkwKUMRAN14mTrKB+3PAMRhBazUVDJjIxPbcC9MQJnwIa2tiZWn8QC48UA==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.78.0.tgz", + "integrity": "sha512-y42Pm0Nk6zf/MI6acLFVFAMya0Ncvy6F6Xu5aYAmwIMIoMI0ctNeyuL/Dikgt8+oyxC+kORw+W9jtzgWj2zY/w==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/invalid-dependency": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.54.0.tgz", - "integrity": "sha512-eeefTPtkb0FQFMBKmwhvmdPqCgGvTcWEiNH8pznAH0hqxLvOLNdNRoKnX5a1WlYoq3eTm0YN9Zh+N1Sj4mbkcg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.78.0.tgz", + "integrity": "sha512-zUo+PbeRMN/Mzj6y+6p9qqk/znuFetT1gmpOcZGL9Rp2T+b9WJWd+daq5ktsL10sVCzIt2UvneJRz6b+aU+bfw==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/is-array-buffer": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.52.0.tgz", - "integrity": "sha512-5Pe9QKrOeSZb9Z8gtlx9CDMfxH8EiNdClBfXBbc6CiUM7y6l7UintYHkm133zM5XTqtMRYY1jaD8svVAoRPApA==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.55.0.tgz", + "integrity": "sha512-NbiPHVYuPxdqdFd6FxzzN3H1BQn/iWA3ri3Ry7AyLeP/tGs1yzEWMwf8BN8TSMALI0GXT6Sh0GDWy3Ok5xB6DA==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/md5-js": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.54.0.tgz", - "integrity": "sha512-pMprZD8JBw9WU4Risfd0Clm9SrUpsUS3QriSDeuFnGfRcKHkpw1sDj6HsNsIQ1OCeWuhYqW55Wtzc0pH8U80Mg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.78.0.tgz", + "integrity": "sha512-vKOXJWJvv6QH6rnqMYEWzwAnMr4hfcmY8+t6BAuTcDpcEVF77e3bwUcaajXi2U0JMuNvnLwuJF3h6kL6aX4l6g==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-utf8-browser": "3.52.0", - "@aws-sdk/util-utf8-node": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.54.0.tgz", - "integrity": "sha512-4VC6zxDaveCnQD3eUJezSQ3Ikeq+MxRnvfcNhZytB20tYRy1PnR4jLoqjYkw5U1zstVRABbZdzlsWzZMe308ew==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.80.0.tgz", + "integrity": "sha512-FSSx6IgT7xftSlpjxoPKv8XI9nv7EK+OCODo2s3CmElMW1kBRdmQ/ImVuTwvqhdxJEVUeUdgupmC7cqyqgt04w==", "dependencies": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-arn-parser": "3.52.0", - "@aws-sdk/util-config-provider": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-arn-parser": "3.55.0", + "@aws-sdk/util-config-provider": "3.55.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-content-length": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.54.0.tgz", - "integrity": "sha512-DTlZo00stFwFHyR+GTXxhYePzNbXm+aX5yYQUsrsY2J2HuSbADVgDDekJXbtOH36QBa0OJf7JKbWP8PZDxk1zg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.78.0.tgz", + "integrity": "sha512-5MpKt6lB9TdFy25/AGrpOjPY0iDHZAKpEHc+jSOJBXLl6xunXA7qHdiYaVqkWodLxy70nIckGNHqQ3drabidkA==", "dependencies": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.54.0.tgz", - "integrity": "sha512-6k4hoD7XqGDA8yq10AzF+iafgc+RyrPxr4kqzv50+hI5CZkPcl/vOAgS7iD+Y33dLITYuh+jzlpn7zlLwdOoqw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.78.0.tgz", + "integrity": "sha512-IXfcSugFV3uNk50VQsN/Cm80iCsUSwcYJ5RzEwy7wXbZ+KM03xWXlbXzqkeTDnS74wLWSw09nKF3rkp1eyfDfg==", "dependencies": { - "@aws-sdk/middleware-header-default": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/middleware-header-default": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.54.0.tgz", - "integrity": "sha512-4+bUwQyYHtTbaJDaj2F7j2K/JUcYdKg169pKmpefZiXZVdfR2/WWwj7Wx7EI40rpPYHaMpSal9tIxz054LPYnw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.78.0.tgz", + "integrity": "sha512-1jjxHcB3Le/2Z7BzugXzZnIwKGlUluNm0d1lB4fF2QVq3GHlA6e8uv0rCtqe/3wSsrzV6YzJ8vjioymKSNIjKQ==", "dependencies": { "@aws-crypto/crc32": "2.0.0", "@aws-crypto/crc32c": "2.0.0", - "@aws-sdk/is-array-buffer": "3.52.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/is-array-buffer": "3.55.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-header-default": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-header-default/-/middleware-header-default-3.54.0.tgz", - "integrity": "sha512-DvkdMJRAYrVsu6S92Z/fhSnj7ZFCNE3ertmIiGsukfMuGmzkuVKxqlUfo89xS3sOF3VY2nNOdNTCnVY4VZLSQQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-header-default/-/middleware-header-default-3.78.0.tgz", + "integrity": "sha512-USyOIF7ObBVMKbV/8lOBLDNwMAGdOtujd+RO/9dX6OQLceUTKIS1dOfJoYYwRHgengn7ikpDxoyROyspPYYDZQ==", "dependencies": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.54.0.tgz", - "integrity": "sha512-X+lvYc2ij1+9tfpvdGGb+/APvH7g/M9RYzIEkI/LvNjVCOA3f3rgzFftZZhD/zccRtrygsvXfeZhoDrHxFKl9g==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.78.0.tgz", + "integrity": "sha512-1zL8uaDWGmH50c8B8jjz75e0ePj6/3QeZEhjJgTgL6DTdiqvRt32p3t+XWHW+yDI14fZZUYeTklAaLVxqFrHqQ==", "dependencies": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.54.0.tgz", - "integrity": "sha512-qwZR+GWlRoIFvvCt5ywmX3kV15KxrFbUxyAADCEJ4Q86ebEI3ux9mAHB6niOArRwtA5/wyvjRrOiYo/fTq7eLQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.78.0.tgz", + "integrity": "sha512-m626H1WwXYJtwHEkV/2DsLlu1ckWq3j57NzsexZki3qS0nU8HEiDl6YYi+k84vDD4Qpba6EI9AdhzwnvZLXtGw==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.54.0.tgz", - "integrity": "sha512-bDCQj8IBq1vrXRRrpqD+suJ8hKc4oxUXpRkWdsAD+HnWWRqHjsy0hdq5F8Rj1Abq7CsFtZ+rUXddl+KlmgZ3+A==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.78.0.tgz", + "integrity": "sha512-GBhwxNjhCJUIeQQDaGasX/C23Jay77al2vRyGwmxf8no0DdFsa4J1Ik6/2hhIqkqko+WM4SpCnpZrY4MtnxNvA==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-retry": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.54.0.tgz", - "integrity": "sha512-8kVzwxe0HQajeZWXzAp2XCkbiK8E8AZESfXvLyM34Xy2e8L8gdi1j90QLzpFk6WX6rz7hXBQG7utrCJkwXQxLA==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.80.0.tgz", + "integrity": "sha512-CTk+tA4+WMUNOcUfR6UQrkhwvPYFpnMsQ1vuHlpLFOGG3nCqywA2hueLMRQmVcDXzP0sGeygce6dzRI9dJB/GA==", "dependencies": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/service-error-classification": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/service-error-classification": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-middleware": "3.78.0", + "tslib": "^2.3.1", "uuid": "^8.3.2" }, "engines": { @@ -1484,429 +1565,419 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.54.0.tgz", - "integrity": "sha512-xESksyOVCuDkMPC8mEqrInnuBeJHLSVOfwIl/pGwzevc+Q5spO9FDUlNfhaEVOEoLqK21TUdZo4z/ElNN94m4w==", + "version": "3.86.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.86.0.tgz", + "integrity": "sha512-1L9q8iJXy/KNyVR8JRs4DZ5SJse6nJPiK4AR8c2xF5FWHdGoFaLcdqpg2/TLB1kpdcfGgNp96uCROxh+IPXtDQ==", "dependencies": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-arn-parser": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-arn-parser": "3.55.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" - }, - "peerDependencies": { - "@aws-sdk/signature-v4-crt": "^3.31.0" } }, "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.54.0.tgz", - "integrity": "sha512-4vOlG96fKgqmLMsguoKFdBkk2Fq8JttpgPts9d5Ox73+yQsa0VKrpLiD5OUPqgjGZcX2bilMKCAOBc2v3ESAHw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.78.0.tgz", + "integrity": "sha512-Lu/kN0J0/Kt0ON1hvwNel+y8yvf35licfIgtedHbBCa/ju8qQ9j+uL9Lla6Y5Tqu29yVaye1JxhiIDhscSwrLA==", "dependencies": { - "@aws-sdk/middleware-signing": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-serde": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.54.0.tgz", - "integrity": "sha512-O89/5aOiNegBP6Mv+gPr22Zawz2zF2v1o8kwFv2s4PWDzpmvrdF2by6e2Uh9sKzfpcwEW7Wr8kDTwajampVjgA==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.78.0.tgz", + "integrity": "sha512-4DPsNOxsl1bxRzfo1WXEZjmD7OEi7qGNpxrDWucVe96Fqj2dH08jR8wxvBIVV1e6bAad07IwdPuCGmivNvwRuQ==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.54.0.tgz", - "integrity": "sha512-KYxmRDh7D6ysAezlsDf3cN2h6OjH66x3NUdgUmW+78nkN9tRvvJEjhmu6IOkPd4E1V9P3JOLbq6zVjDVU12WDQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.78.0.tgz", + "integrity": "sha512-OEjJJCNhHHSOprLZ9CzjHIXEKFtPHWP/bG9pMhkV3/6Bmscsgcf8gWHcOnmIrjqX+hT1VALDNpl/RIh0J6/eQw==", "dependencies": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.54.0.tgz", - "integrity": "sha512-wNQR5pRoN4wJq2IcFOXhRxvars4uWgdUnBQcJ5UDSJhUPwVDA4m+M83Q/54GWRHT+SVsobuNTmTeFnCbgsIq3A==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.78.0.tgz", + "integrity": "sha512-3z+UOd95rxvj+iO6WxMjuRNNUMlO6xhXZdBHvQmoiyS+9nMDcNieTu6gfQyLAilVeCh8xU9a0IenJuIYVdJ96g==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-stack": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.54.0.tgz", - "integrity": "sha512-38iit8VJ7jhFlMdwdDESEJOwbi8wIjF7Q1FOFIoCvURLGkTDQdabGXKwcFVfRuceLO+LJxWP3l0z0c10uZa6gQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.78.0.tgz", + "integrity": "sha512-UoNfRh6eAJN3BJHlG1eb+KeuSe+zARTC2cglroJRyHc2j7GxH2i9FD3IJbj5wvzopJEnQzuY/VCs6STFkqWL1g==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.54.0.tgz", - "integrity": "sha512-831GP5EBJdDxyq93dpgBZUwBWnZAID2aFvE/VN8c5X8U00ZT7GRt9cy5EL2b6AQN3Z4uWL1ZVDVkYmRAHs33Lg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.78.0.tgz", + "integrity": "sha512-wdN5uoq8RxxhLhj0EPeuDSRFuXfUwKeEqRzCKMsYAOC0cAm+PryaP2leo0oTGJ9LUK8REK7zyfFcmtC4oOzlkA==", "dependencies": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/node-config-provider": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.54.0.tgz", - "integrity": "sha512-Q2a1vyoZa2UX/dItP3cqNdLUoTGdIY4hD5nA+mTg5mKlOWci35v8Rypr40tQz4ZwiDF6QQmK0tvD3bBUULm0wA==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.80.0.tgz", + "integrity": "sha512-vyTOMK04huB7n10ZUv0thd2TE6KlY8livOuLqFTMtj99AJ6vyeB5XBNwKnQtJIt/P7CijYgp8KcFvI9fndOmKg==", "dependencies": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/node-http-handler": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.54.0.tgz", - "integrity": "sha512-g6+IXe4FCMrx4vrY73yvFNAUsBJ1vhjDshUCihBv5tEXsd45/MqmON/VWYoaQZts0m2wx2fKsdoDKSIZZY7AiQ==", + "version": "3.82.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.82.0.tgz", + "integrity": "sha512-yyq/DA/IMzL4fLJhV7zVfP7aUQWPHfOKTCJjWB3KeV5YPiviJtSKb/KyzNi+gQyO7SmsL/8vQbQrf3/s7N/2OA==", "dependencies": { - "@aws-sdk/abort-controller": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/querystring-builder": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/abort-controller": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/querystring-builder": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/property-provider": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.54.0.tgz", - "integrity": "sha512-8e+KXskwOhXF0MIdIcZLFsOTfMVGp41Y6kywgewQaHkZoMzZ6euRziyWNgnshUE794tjxxol9resudSUehPjIw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.78.0.tgz", + "integrity": "sha512-PZpLvV0hF6lqg3CSN9YmphrB/t5LVJVWGJLB9d9qm7sJs5ksjTYBb5bY91OQ3zit0F4cqBMU8xt2GQ9J6d4DvQ==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/protocol-http": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.54.0.tgz", - "integrity": "sha512-v4CgQ2mBzEwNubM1duWP3Unu98EPNF2BuKWe4wT1HNG2MTkODS56fsgVT6sGGXS9nB/reEzB+3bXO5FS8+3SUg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.78.0.tgz", + "integrity": "sha512-SQB26MhEK96yDxyXd3UAaxLz1Y/ZvgE4pzv7V3wZiokdEedM0kawHKEn1UQJlqJLEZcQI9QYyysh3rTvHZ3fyg==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/querystring-builder": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.54.0.tgz", - "integrity": "sha512-7rs2gGPpiIHntbYGPFkxkXQkSK7uVBqlWRl0m6fNngUEz2n8jRxytB6LlALMHbXeXh28+zzq0VxbAwqAAUQ4oQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.78.0.tgz", + "integrity": "sha512-aib6RW1WAaTQDqVgRU1Ku9idkhm90gJKbCxVaGId+as6QHNUqMChEfK2v+0afuKiPNOs5uWmqvOXI9+Gt+UGDg==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-uri-escape": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-uri-escape": "3.55.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/querystring-parser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.54.0.tgz", - "integrity": "sha512-OZ4mRJ9rXgBskPBSoXBw8tV4kfNK0f/pP55qE1eZIcQ1z7EvVz4NjldgqMfscT20Cx5VzUbus3q9EPcV+HbR1w==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.78.0.tgz", + "integrity": "sha512-csaH8YTyN+KMNczeK6fBS8l7iJaqcQcKOIbpQFg5upX4Ly5A56HJn4sVQhY1LSgfSk4xRsNfMy5mu6BlsIiaXA==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.54.0.tgz", - "integrity": "sha512-xPIahWW1brKu3Cnphx/pYAB3nRAyAZH4Zh7n1zm9XUsqqsBc4ZkIKqC5tDvJ/lBOLrqks8oSh2wpckfCwO9EpA==", + "version": "3.88.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.88.0.tgz", + "integrity": "sha512-Ms3Fx+9HBV4llP5ZFrZ9LRQ6GTWGQs1ooX6kmdnzC1uNhKhAdcPrs4ngDQ4xqSsOCF77KMPaxRDTjj9o1DGqIQ==", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/smithy-client": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-create-request": "3.54.0", - "@aws-sdk/util-format-url": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/middleware-sdk-s3": "3.86.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4-multi-region": "3.88.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-create-request": "3.85.0", + "@aws-sdk/util-format-url": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/service-error-classification": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.54.0.tgz", - "integrity": "sha512-XWANvjJJZNqsYhGmccSSuhsvINIUX1KckfDmvYtUR6cKM6nM6QWOg/QJeTFageTEpruJ5TqzW9vY414bIE883w==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.78.0.tgz", + "integrity": "sha512-x7Lx8KWctJa01q4Q72Zb4ol9L/era3vy2daASu8l2paHHxsAPBE0PThkvLdUSLZSzlHSVdh3YHESIsT++VsK4w==", "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.52.0.tgz", - "integrity": "sha512-tALb8u8IVcI4pT7yFZpl4O6kgeY5EAXyphZoRPgQSCDhmEyFUIi/sXbCN8HQiHjnHdWfXdaNE1YsZcW3GpcuoQ==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.80.0.tgz", + "integrity": "sha512-3d5EBJjnWWkjLK9skqLLHYbagtFaZZy+3jUTlbTuOKhlOwe8jF7CUM3j6I4JA6yXNcB3w0exDKKHa8w+l+05aA==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/signature-v4": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.54.0.tgz", - "integrity": "sha512-22Bf8uQ0Q/I7WpLFU88G7WVpRw6tWUX9Ggr0Z++81uZF5YCPbWDNtFDHitoERaRc/M4vUMxNuTsX/JWOR3fFPg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.78.0.tgz", + "integrity": "sha512-eePjRYuzKoi3VMr/lgrUEF1ytLeH4fA/NMCykr/uR6NMo4bSJA59KrFLYSM7SlWLRIyB0UvJqygVEvSxFluyDw==", "dependencies": { - "@aws-sdk/is-array-buffer": "3.52.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-hex-encoding": "3.52.0", - "@aws-sdk/util-uri-escape": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/is-array-buffer": "3.55.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-hex-encoding": "3.58.0", + "@aws-sdk/util-middleware": "3.78.0", + "@aws-sdk/util-uri-escape": "3.55.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/signature-v4-crt": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-crt/-/signature-v4-crt-3.54.0.tgz", - "integrity": "sha512-3qKbc/i9PkBRyADIRm6QYIos/tjaYpVnqLWGngHivzF75yG2ZyWFIVNXD5KGIDm+UWu0ZI41IGfxVEoj5Dgc6A==", - "peer": true, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.88.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.88.0.tgz", + "integrity": "sha512-RBbyQRpohlIQiuZc5qAvwbXO0Bob9XhHFS/kuLh+DcyeaBp+m+Bt291FX1Ksz2A0Q3ETNM34LFt7kTOBtMvjIQ==", "dependencies": { - "@aws-sdk/is-array-buffer": "3.52.0", - "@aws-sdk/querystring-parser": "3.54.0", - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/util-hex-encoding": "3.52.0", - "@aws-sdk/util-uri-escape": "3.52.0", - "aws-crt": "^1.9.7", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-arn-parser": "3.55.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" + }, + "peerDependencies": { + "@aws-sdk/signature-v4-crt": "^3.79.0" + }, + "peerDependenciesMeta": { + "@aws-sdk/signature-v4-crt": { + "optional": true + } } }, "node_modules/@aws-sdk/smithy-client": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.54.0.tgz", - "integrity": "sha512-zdYN5pwhJU7x8qZKWTZPsFD5YQkDt6kyCNRsNjSWJ0ON4R3wUlFIwT3YzeQ5nMOTD86cVIm1n2RaSTYHwelFXg==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.85.0.tgz", + "integrity": "sha512-Ox/yQEAnANzhpJMyrpuxWtF/i3EviavENczT7fo4uwSyZTz/sfSBQNjs/YAG1UeA6uOI3pBP5EaFERV5hr2fRA==", "dependencies": { - "@aws-sdk/middleware-stack": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/types": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.54.0.tgz", - "integrity": "sha512-Jp2MHXnrM0pk0RIoSl5AHFm7TBk+7b8HTIcQ2X/6kGwwwnWw9qlg9ZFziegJTNTLJ4iVgZjz/yMlEvgrp7z9CA==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/url-parser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.54.0.tgz", - "integrity": "sha512-DJWdlkXq3rsOydxwR9htPUW4QXhmo75Hybg96D3F2uPUvPCm8gJFngXp/9hW1OYcgfNu13HXqUy+t6V23cC7Iw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.78.0.tgz", + "integrity": "sha512-iQn2AjECUoJE0Ae9XtgHtGGKvUkvE8hhbktGopdj+zsPBe4WrBN2DgVxlKPPrBonG/YlcL1D7a5EXaujWSlUUw==", "dependencies": { - "@aws-sdk/querystring-parser": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/querystring-parser": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.52.0.tgz", - "integrity": "sha512-mMsoYJ70+BGkVpdfQbu942v4fAGzx+pIL8+QnQhzUmcU0HbNkI0vYliMWfzz7ka9CHgbijUI/ANKA319zgKtvA==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.55.0.tgz", + "integrity": "sha512-76KJxp4MRWufHYWys7DFl64znr5yeJ3AIQNAPCKKw1sP0hzO7p6Kx0PaJnw9x+CPSzOrT4NbuApL6/srYhKDGg==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/util-base64-browser": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.52.0.tgz", - "integrity": "sha512-xjv/cQ4goWXAiGEC/AIL/GtlHg4p4RkQKs6/zxn9jOxo1OnbppLMJ0LjCtv4/JVYIVGHrx0VJ8Exyod7Ln+NeA==", + "version": "3.58.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.58.0.tgz", + "integrity": "sha512-0ebsXIZNpu/fup9OgsFPnRKfCFbuuI9PPRzvP6twzLxUB0c/aix6Co7LGHFKcRKHZdaykoJMXArf8eHj2Nzv1Q==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/util-base64-node": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.52.0.tgz", - "integrity": "sha512-V96YIXBuIiVu7Zk72Y9dly7Io9cYOT30Hjf77KAkBeizlFgT5gWklWYGcytPY8FxLuEy4dPLeHRmgwQnlDwgPA==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.55.0.tgz", + "integrity": "sha512-UQ/ZuNoAc8CFMpSiRYmevaTsuRKzLwulZTnM8LNlIt9Wx1tpNvqp80cfvVj7yySKROtEi20wq29h31dZf1eYNQ==", "dependencies": { - "@aws-sdk/util-buffer-from": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/util-body-length-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.54.0.tgz", - "integrity": "sha512-hnY9cXbKWJ2Fjb4bK35sFdD4vK+sFe59JtxxI336yYzANulc462LU/J1RgONXYBW60d9iwJ7U+S+9oTJrEH6WQ==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.55.0.tgz", + "integrity": "sha512-Ei2OCzXQw5N6ZkTMZbamUzc1z+z1R1Ja5tMEagz5BxuX4vWdBObT+uGlSzL8yvTbjoPjnxWA2aXyEqaUP3JS8Q==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/util-body-length-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.54.0.tgz", - "integrity": "sha512-BBQB3kqHqHQp2GAINJGuse9JBM7hfU0tMp9rfw0nym4C/VRooiJVrIb28tKseLtd7nihXvsZXPvEc2jQBe1Thg==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.55.0.tgz", + "integrity": "sha512-lU1d4I+9wJwydduXs0SxSfd+mHKjxeyd39VwOv6i2KSwWkPbji9UQqpflKLKw+r45jL7+xU/zfeTUg5Tt/3Gew==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/util-buffer-from": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.52.0.tgz", - "integrity": "sha512-hsG0lMlHjJUFoXIy59QLn6x4QU/vp/e0t3EjdD0t8aymB9iuJ43UeLjYTZdrOgtbWb8MXEF747vwg+P6n+4Lxw==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.55.0.tgz", + "integrity": "sha512-uVzKG1UgvnV7XX2FPTylBujYMKBPBaq/qFBxfl0LVNfrty7YjpfieQxAe6yRLD+T0Kir/WDQwGvYC+tOYG3IGA==", "dependencies": { - "@aws-sdk/is-array-buffer": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/is-array-buffer": "3.55.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/util-config-provider": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.52.0.tgz", - "integrity": "sha512-1wonBNkOOLJpMZnz2Kn69ToFgSoTTyGzJInir8WC5sME3zpkb5j41kTuEVbImNJhVv9MKjmGYrMeZbBVniLRPw==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.55.0.tgz", + "integrity": "sha512-30dzofQQfx6tp1jVZkZ0DGRsT0wwC15nEysKRiAcjncM64A0Cm6sra77d0os3vbKiKoPCI/lMsFr4o3533+qvQ==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/util-create-request": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-create-request/-/util-create-request-3.54.0.tgz", - "integrity": "sha512-Sa+t75YQnMXXcCruLBvKZ6B1DzyGAod1PZT+iDHwDDobDsUVG3Cjov9gJepYAH2EEmvZa9f0IT+W6lvGv3uL4w==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-create-request/-/util-create-request-3.85.0.tgz", + "integrity": "sha512-AQrG+mIgjtcN23O4zCAWpIwyPIHzKZAcPbF8OROAbNcQcMwyg2Q9hyodRR5l3fzGG2jiRt9P3copvORBWB7diA==", "dependencies": { - "@aws-sdk/middleware-stack": "3.54.0", - "@aws-sdk/smithy-client": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/@aws-sdk/util-credentials": { - "version": "3.53.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-credentials/-/util-credentials-3.53.0.tgz", - "integrity": "sha512-XP/3mYOmSn5KpWv+PnBTP2UExXb+hx1ugbH4Gkveshdq9KBlVnpV5eVgIwSAnKBsplScfsNMJ5EOtHjz5Cvu5A==", - "dependencies": { - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.54.0.tgz", - "integrity": "sha512-9QnRbTsD2MuEr59vaPAbC95ba7druMFRSZjpwc3L7U9zpsJruNDaL5aAmV0gCAIPZg7eSaJmipyWr0AvwwgroQ==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.85.0.tgz", + "integrity": "sha512-oqK/e2pHuMWrvTJWtDBzylbj232ezlTay5dCq4RQlyi3LPPVBQ08haYD1Mk2ikQ/qa0XvbSD6YVhjpTlvwRNjw==", "dependencies": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", "bowser": "^2.11.0", - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">= 10.0.0" } }, "node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.54.0.tgz", - "integrity": "sha512-kHFgEyAWCaR5uSmRwyVbWQnjiNib3EJSAG9y7bwMIHSOK/6TVOXGlb1KIoO6ZtLE1FZFlS55FIRFeOPmIFFZbA==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.85.0.tgz", + "integrity": "sha512-KDNl4H8jJJLh6y7I3MSwRKe4plKbFKK8MVkS0+Fce/GJh4EnqxF0HzMMaSeNUcPvO2wHRq2a60+XW+0d7eWo1A==", "dependencies": { - "@aws-sdk/config-resolver": "3.54.0", - "@aws-sdk/credential-provider-imds": "3.54.0", - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 10.0.0" } }, "node_modules/@aws-sdk/util-format-url": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.54.0.tgz", - "integrity": "sha512-nnrXT0dQc+eRWJPgkqDK91NEluTFU9Tqs/LhIlIq+6Z8BELTN24lCi9feUKtw1s3a5ucUSs2unYyfHnl35PeeQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.78.0.tgz", + "integrity": "sha512-wdjt8ZAMyBrH/02QrQtB+S9cwtsBJ6bXRJ3XwL6z7L75nwTflKkzOQUS5Ie7HBf3j3JH0KhlqlEbf2nnM9jsPQ==", "dependencies": { - "@aws-sdk/querystring-builder": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/querystring-builder": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/util-hex-encoding": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.52.0.tgz", - "integrity": "sha512-YYMZg8odn/hBURgL/w82ay2mvPqXHMdujlSndT1ddUSTRoZX67N3hfYYf36nOalDOjNcanIvFHe4Fe8nw+8JiA==", + "version": "3.58.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.58.0.tgz", + "integrity": "sha512-Rl+jXUzk/FJkOLYfUVYPhKa2aUmTpeobRP31l8IatQltSzDgLyRHO35f6UEs7Ztn5s1jbu/POatLAZ2WjbgVyg==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" @@ -1923,100 +1994,111 @@ "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/util-stream-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-browser/-/util-stream-browser-3.54.0.tgz", - "integrity": "sha512-KVBRQcTie9Q231pdbO4gzGxHG8wNomGic3bHDnwfVdE+tq1Pbi8xNgUelmmd/uZvgMf8awuNN8OHzkex06HAHQ==", + "node_modules/@aws-sdk/util-middleware": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.78.0.tgz", + "integrity": "sha512-Hi3wv2b0VogO4mzyeEaeU5KgIt4qeo0LXU5gS6oRrG0T7s2FyKbMBkJW3YDh/Y8fNwqArZ+/QQFujpP0PIKwkA==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-stream-browser": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-browser/-/util-stream-browser-3.78.0.tgz", + "integrity": "sha512-EcThf/sJoD4NYTUNO/nehR57lqkOuL6btRoVnm4LGUR8XgQcJ/WMYYgxOMY8E81xXzRFX2ukRHRxL2xmQsbHDw==", + "dependencies": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/util-stream-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-node/-/util-stream-node-3.54.0.tgz", - "integrity": "sha512-h3kpLMYzGgPkCIq0sLlE70zAt75C6wcbZm4gPh5iN8KRmmhpktqKpBami9J5fY6cBPC5ZlEmv5iDdZrI90Imrw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-node/-/util-stream-node-3.78.0.tgz", + "integrity": "sha512-CHfX37ioUyamAnlS2p4Nq+4BBjCSlZolFkVyxtVJwzPBBksdvjW67nKG+SShR48RBPJ5LEzbgAaEXNRktCSf6w==", "dependencies": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/util-uri-escape": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.52.0.tgz", - "integrity": "sha512-W9zw5tE8syjg17jiCYtyF99F0FgDIekQdLg+tQGobw9EtCxlUdg48UYhifPfnjvVyADRX2ntclHF9NmhusOQaQ==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.55.0.tgz", + "integrity": "sha512-mmdDLUpFCN2nkfwlLdOM54lTD528GiGSPN1qb8XtGLgZsJUmg3uJSFIN2lPeSbEwJB3NFjVas/rnQC48i7mV8w==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.54.0.tgz", - "integrity": "sha512-pU5KL1Nnlc1igeED2R44k9GEIxlLBhwmUGIw8/Emfm8xAlGOX4NsVSfHK9EpJQth0z5ZJ4Lni6S5+nW4V16yLw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.78.0.tgz", + "integrity": "sha512-diGO/Bf4ggBOEnfD7lrrXaaXOwOXGz0bAJ0HhpizwEMlBld5zfDlWXjNpslh+8+u3EHRjPJQ16KGT6mp/Dm+aw==", "dependencies": { - "@aws-sdk/types": "3.54.0", + "@aws-sdk/types": "3.78.0", "bowser": "^2.11.0", - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.54.0.tgz", - "integrity": "sha512-euKoYk1TfyV9XlJyAlGWdYqhQ5B4COwBxsV9OpwiAINUFm91NSv6uavFC/ZZQBXRks6j9pHDAXeXu7bHVolvlA==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.80.0.tgz", + "integrity": "sha512-QV26qIXws1m6sZXg65NS+XrQ5NhAzbDVQLtEVE4nC39UN8fuieP6Uet/gZm9mlLI9hllwvcV7EfgBM3GSC7pZg==", "dependencies": { - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.52.0.tgz", - "integrity": "sha512-LuOMa9ajWu5fQuYkmvTlQZfHaITkSle+tM/vhbU4JquRN44VUKACjRGT7UEhoU3lCL1BD0JFGMQGHI+5Mmuwfg==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.55.0.tgz", + "integrity": "sha512-ljzqJcyjfJpEVSIAxwtIS8xMRUly84BdjlBXyp6cu4G8TUufgjNS31LWdhyGhgmW5vYBNr+LTz0Kwf6J+ou7Ug==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/util-utf8-node": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.52.0.tgz", - "integrity": "sha512-fujr7zeobZ2y5nnOnQZrCPPc+lCAhtNF/LEVslsQfd+AQ0bYWiosrKNetodQVWlfh10E2+i6/5g+1SBJ5kjsLw==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.55.0.tgz", + "integrity": "sha512-FsFm7GFaC7j0tlPEm/ri8bU2QCwFW5WKjxUg8lm1oWaxplCpKGUsmcfPJ4sw58GIoyoGu4QXBK60oCWosZYYdQ==", "dependencies": { - "@aws-sdk/util-buffer-from": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/util-waiter": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.54.0.tgz", - "integrity": "sha512-+Gz5R14jWKsQtMCWbzWJe2Ac/CdMV/h5/R8uEZmwM3f6MHICPOftMQd0uDLdGezSBV9PuU3PCwiBZBTFzNSYBg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.78.0.tgz", + "integrity": "sha512-8pWd0XiNOS8AkWQyac8VNEI+gz/cGWlC2TAE2CJp0rOK5XhvlcNBINai4D6TxQ+9foyJXLOI1b8nuXemekoG8A==", "dependencies": { - "@aws-sdk/abort-controller": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/abort-controller": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.52.0.tgz", - "integrity": "sha512-GMdcxdwDZuIMlGnewdB48bpj8eqA3nubs3biy6vRFX8zhv8OqD+m5fMinoEwD8/MGqWE3WD7VZlbbdwYtNVWzQ==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.55.0.tgz", + "integrity": "sha512-BH+i5S2FLprmfSeIuGy3UbNtEoJPVjh8arl5+LV3i2KY/+TmrS4yT8JtztDlDxHF0cMtNLZNO0KEPtsACS6SOg==", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" }, "engines": { "node": ">= 12.0.0" @@ -2035,9 +2117,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -2140,14 +2222,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -2256,26 +2338,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -2318,19 +2387,19 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -2388,12 +2457,12 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -2457,13 +2526,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", - "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "dev": true, "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0" }, "engines": { @@ -2485,9 +2554,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -3641,19 +3710,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", - "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", + "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", + "@babel/generator": "^7.17.10", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.0", - "@babel/types": "^7.17.0", + "@babel/parser": "^7.17.10", + "@babel/types": "^7.17.10", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -3662,32 +3731,23 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", - "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", @@ -3722,33 +3782,33 @@ } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.19.0.tgz", - "integrity": "sha512-lRx/5ChsOwv7gIU05m8Ur1Rxa4/XkE23wTsX8XFBGWRYrCcCrngPf6yGJMG6n9dqnyDehPrBBVeFIm2INEIeQA==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.29.0.tgz", + "integrity": "sha512-4yKy5t+/joLihG+ei6CCU6sc08sjUdEdXCQ2U+9h9VP13EiqHQ4YMgDC18ys/AsLdJDBX3KRx/AWY6PR7hn52Q==", "dev": true, "dependencies": { - "comment-parser": "1.3.0", + "comment-parser": "1.3.1", "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~2.2.2" + "jsdoc-type-pratt-parser": "~3.0.1" }, "engines": { - "node": "^12 || ^14 || ^16 || ^17" + "node": "^14 || ^16 || ^17 || ^18" } }, "node_modules/@eslint/eslintrc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz", - "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", + "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", + "espree": "^9.3.2", "globals": "^13.9.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { @@ -3778,9 +3838,9 @@ "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3792,15 +3852,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -3832,9 +3883,9 @@ } }, "node_modules/@fortawesome/fontawesome-free": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.0.0.tgz", - "integrity": "sha512-6LB4PYBST1Rx40klypw1SmSDArjFOcfBf2LeX9Zg5EKJT2eXiyiJq+CyBYKeXyK0sXS2FsCJWSPr/luyhuvh0Q==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.1.1.tgz", + "integrity": "sha512-J/3yg2AIXc9wznaVqpHVX3Wa5jwKovVF0AMYSnbmcXTiL3PpRPfF58pzWucCwEiCJBp+hCNRLWClTomD8SseKg==", "dev": true, "hasInstallScript": true, "engines": { @@ -3847,22 +3898,6 @@ "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", "dev": true }, - "node_modules/@httptoolkit/websocket-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@httptoolkit/websocket-stream/-/websocket-stream-6.0.0.tgz", - "integrity": "sha512-EC8m9JbhpGX2okfvLakqrmy4Le0VyNKR7b3IdvFZR/BfFO4ruh/XceBvXhCFHkykchnFxuOSlRwFiqNSXlwcGA==", - "peer": true, - "dependencies": { - "@types/ws": "*", - "duplexify": "^3.5.1", - "inherits": "^2.0.1", - "isomorphic-ws": "^4.0.1", - "readable-stream": "^2.3.3", - "safe-buffer": "^5.1.2", - "ws": "*", - "xtend": "^4.0.0" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", @@ -3908,58 +3943,97 @@ "node": ">=8" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", "dev": true, "engines": { "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@ngneat/dag": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ngneat/dag/-/dag-1.1.0.tgz", - "integrity": "sha512-szJ6XIRo16XxHpVH/eep2lKUs2F4YedfMMBtm6bN7RnGLwNCmBP6kMVZ0ThgyE2K2N0+hZFyAxxjhfnD0WRXSw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ngneat/dag/-/dag-2.0.0.tgz", + "integrity": "sha512-jsqL8lGr9MQcqybQF/ygTyXjPfvxH70GEqUlm9apoIENJeqTnU8h4wpnkOOdgXxE6VGbvzQA1al42Cm5qTivbg==", "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { - "@angular/common": "^10.1.0", - "@angular/core": "^10.1.0", + "@angular/common": ">=13.0.0", + "@angular/core": ">=13.0.0", + "@angular/platform-browser-dynamic": "13.3.5", "rxjs": "~6.5.5" } }, "node_modules/@ngrx/effects": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-13.0.2.tgz", - "integrity": "sha512-7yW/KCxlRatDkdEriSnORlOYX8+1QAWEjPulNmHSPwehkzTQ3fIPfRBQy8xP8bnjwvGxnEZNwQlU4q1KVYOfhg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-13.2.0.tgz", + "integrity": "sha512-HmWggpl3xGQFfUzON/uel5jSyUWsrGZsR5qR/oFLGjPRWzwKfdHrl0OcBl5IhFgFxT74cAi9F4JTICUytGRbFA==", "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@angular/core": "^13.0.0", - "@ngrx/store": "13.0.2", + "@ngrx/store": "13.2.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@ngrx/entity": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/entity/-/entity-13.0.2.tgz", - "integrity": "sha512-sAN/YDvDNy4fmCOWU8LfPp8YI8XJcvmO89XTRSoJjo3O9BIbCSEw2gYHe1V7gWHLY5Pr9wiMybKhd4RHtzFHgQ==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/entity/-/entity-13.2.0.tgz", + "integrity": "sha512-2zgz2/3BpYSvVNLqQM034lK3kQ0UoHj7kxmtf5Bkf2yWrjEGVmwyRUYDt1/vlfoBUE/KU7DDPHWJT8r5Li0ALA==", "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@angular/core": "^13.0.0", - "@ngrx/store": "13.0.2", + "@ngrx/store": "13.2.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@ngrx/router-store": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-13.0.2.tgz", - "integrity": "sha512-XrzHjrD2hhnXdGeIpQm/msN77hoAL/QD3ZYGFJs3yT5d3x/T3L1JFlra7wC0OlKJkOs6zAh5Kz9cJ94YO/TEtQ==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-13.2.0.tgz", + "integrity": "sha512-ojHxsGsHljYWiqv/OUQHFLb4ZNvmsBlF+CHGZ7vCwLYJ2d9TB2y5nOezfaZ1L46MLUp+uM3FD3fpnIFwXYsTNw==", "dependencies": { "tslib": "^2.0.0" }, @@ -3967,20 +4041,20 @@ "@angular/common": "^13.0.0", "@angular/core": "^13.0.0", "@angular/router": "^13.0.0", - "@ngrx/store": "13.0.2", + "@ngrx/store": "13.2.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@ngrx/schematics": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/schematics/-/schematics-13.0.2.tgz", - "integrity": "sha512-84LwEv7MBTX49e1wjuXKgemxfmQUBdvfUKfPq7AmrTW99EtHHAuLYc+pL9XrbgKvkvVyVmDt+g6d3iw/80TZ1w==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/schematics/-/schematics-13.2.0.tgz", + "integrity": "sha512-MpSJFWF+Pppwv2C+0NNw8RPZmgbhaiEMCiF8VUkAJkXki9CV9Da6cTOa+v1nIrrfUpm/L+jD8DL9CPJTPccRZg==", "dev": true }, "node_modules/@ngrx/store": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-13.0.2.tgz", - "integrity": "sha512-F7tsc3oCvKh+62MKiXTrvSeaxR41u4p8bch3BLjz12F37376rMuBnXf+V1thsPTZ6RB6aycAi821EQYVXFCXZg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-13.2.0.tgz", + "integrity": "sha512-3wlGMkfe0EXsiS6E6W0wCksuGapa5Z6JVFvKQMHFpXZ3XeixXKlULnemlcdMT7Yrnry+CGOtRHqkmKxLoQzhTw==", "dependencies": { "tslib": "^2.0.0" }, @@ -3990,22 +4064,22 @@ } }, "node_modules/@ngrx/store-devtools": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-13.0.2.tgz", - "integrity": "sha512-fcQ5A7cv9PONFvqlpFPXHswWjEflJvqrNt6wmywlxMtJDjkgzCHpvRiJqup/FiTosblRERoeZXN0oHW3Er3+rw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-13.2.0.tgz", + "integrity": "sha512-k1NifkR/4OjbjAxauVZODCsgs2owMJXvEX2XoTWth7zscbHE8L3pLd0k1ox5pMPUEqWIptWTaJDzYqnQSoJaaw==", "dev": true, "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { - "@ngrx/store": "13.0.2", + "@ngrx/store": "13.2.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@ngtools/webpack": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.3.tgz", - "integrity": "sha512-wooUZiV92QyoeFxkhqIwH/cfiAAAn+l8fEEuaaEIfJtpjpbShvvlboEVsqb28soeGiFJfLcmsZM3mUFgsG4QBQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.5.tgz", + "integrity": "sha512-OaMZR0rO0ljBHamLwzddfZX03ijtpheUpjH5dNzMNyNrrpKgS4/3jTQ1wvs2j3zzKfKjOS12WG0905QFJYWG6g==", "dev": true, "engines": { "node": "^12.20.0 || ^14.15.0 || >=16.10.0", @@ -4014,7 +4088,7 @@ }, "peerDependencies": { "@angular/compiler-cli": "^13.0.0", - "typescript": ">=4.4.3 <4.6", + "typescript": ">=4.4.3 <4.7", "webpack": "^5.30.0" } }, @@ -4512,13 +4586,13 @@ } }, "node_modules/@schematics/angular": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.3.tgz", - "integrity": "sha512-jloooGC7eco9AKxlIMMqFRptJYzZ0jNRBStWOp2dCISg6rmOKqpxbsHLtYFQIT1PnlomSxtKDAgYGQMDi9zhXw==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.5.tgz", + "integrity": "sha512-1Ovx0cq72ZaNCyTyRD8ebIwUzpqhEH9ypWF05bfBLq3J0LlZgewIMhPJSxKmwRC3NQB5DZIYEvD0uhzBIuHCCA==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.2.3", - "@angular-devkit/schematics": "13.2.3", + "@angular-devkit/core": "13.3.5", + "@angular-devkit/schematics": "13.3.5", "jsonc-parser": "3.0.0" }, "engines": { @@ -4607,9 +4681,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, "node_modules/@types/express": { @@ -4636,9 +4710,9 @@ } }, "node_modules/@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, "dependencies": { "@types/node": "*" @@ -4657,9 +4731,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.14.178", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz", - "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==", + "version": "4.14.182", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", + "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==", "dev": true }, "node_modules/@types/mime": { @@ -4671,7 +4745,8 @@ "node_modules/@types/node": { "version": "16.11.24", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.24.tgz", - "integrity": "sha512-Ezv33Rl4mIi6YdSHfIRNBd4Q9kUe5okiaw/ikvJiJDmuQZNW5kfdg7+oQPF8NO6sTcr3woIpj3jANzTXdvEZXA==" + "integrity": "sha512-Ezv33Rl4mIi6YdSHfIRNBd4Q9kUe5okiaw/ikvJiJDmuQZNW5kfdg7+oQPF8NO6sTcr3woIpj3jANzTXdvEZXA==", + "dev": true }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -4701,9 +4776,9 @@ "dev": true }, "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, "node_modules/@types/serve-index": { @@ -4741,9 +4816,10 @@ "dev": true }, "node_modules/@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -4754,14 +4830,14 @@ "integrity": "sha512-Nqo3HMPFPcNyZ7HNFZJjpH+N4yXqpxBItG+41e7nL9zednovMRZMXWj36CctSznbBcbj6ucvkJDo5iZ8SKqLIw==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz", - "integrity": "sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz", + "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.9.0", - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/type-utils": "5.9.0", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/type-utils": "5.23.0", + "@typescript-eslint/utils": "5.23.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -4786,16 +4862,92 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/experimental-utils": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz", - "integrity": "sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==", + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.17.0.tgz", + "integrity": "sha512-U4sM5z0/ymSYqQT6I7lz8l0ZZ9zrya5VIwrwAP5WOJVabVtVsIpTMxPQe+D3qLyePT+VlETUTO2nA1+PufPx9Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.17.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.17.0.tgz", + "integrity": "sha512-062iCYQF/doQ9T2WWfJohQKKN1zmmXVfAcS3xaiialiw8ZUGy05Em6QVNYJGO34/sU1a7a+90U3dUNfqUDHr3w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/visitor-keys": "5.17.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.17.0.tgz", + "integrity": "sha512-AgQ4rWzmCxOZLioFEjlzOI3Ch8giDWx8aUDxyNw9iOeCvD3GEYAB7dxWGQy4T/rPVe8iPmu73jPHuaSqcjKvxw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.17.0.tgz", + "integrity": "sha512-X1gtjEcmM7Je+qJRhq7ZAAaNXYhTgqMkR10euC4Si6PIjb+kwEQHSxGazXUQXFyqfEXdkGf6JijUu5R0uceQzg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/visitor-keys": "5.17.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.17.0.tgz", + "integrity": "sha512-DVvndq1QoxQH+hFv+MUQHrrWZ7gQ5KcJzyjhzcqB1Y2Xes1UQQkTRPUfRpqhS8mhTWsSb2+iyvDW1Lef5DD7vA==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/typescript-estree": "5.9.0", + "@typescript-eslint/scope-manager": "5.17.0", + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/typescript-estree": "5.17.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -4810,13 +4962,14 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.11.0.tgz", - "integrity": "sha512-EPvC/bU2n1LKtzKWP1AjGWkp7r8tJ8giVlZHIODo6q7SAd6J+/9vjtEKHK2G/Qp+D2IGPsQge+oadDR3CZcFtQ==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.17.0.tgz", + "integrity": "sha512-6K/zlc4OfCagUu7Am/BD5k8PSWQOgh34Nrv9Rxe2tBzlJ7uOeJ/h7ugCGDCeEZHT6k2CJBhbk9IsbkPI0uvUkA==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.11.0" + "@typescript-eslint/types": "5.17.0", + "eslint-visitor-keys": "^3.0.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4824,20 +4977,17 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.0.tgz", - "integrity": "sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz", + "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/typescript-estree": "5.9.0", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", "debug": "^4.3.2" }, "engines": { @@ -4857,13 +5007,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz", - "integrity": "sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", + "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/visitor-keys": "5.9.0" + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4874,12 +5024,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz", - "integrity": "sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz", + "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.9.0", + "@typescript-eslint/utils": "5.23.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -4899,34 +5049,10 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/experimental-utils": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz", - "integrity": "sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/typescript-estree": "5.9.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, "node_modules/@typescript-eslint/types": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz", - "integrity": "sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", + "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4937,13 +5063,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz", - "integrity": "sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", + "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/visitor-keys": "5.9.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -4964,15 +5090,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.11.0.tgz", - "integrity": "sha512-g2I480tFE1iYRDyMhxPAtLQ9HAn0jjBtipgTCZmd9I9s11OV8CTsG+YfFciuNDcHqm4csbAgC2aVZCHzLxMSUw==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", + "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.11.0", - "@typescript-eslint/types": "5.11.0", - "@typescript-eslint/typescript-estree": "5.11.0", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -4987,87 +5113,13 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.11.0.tgz", - "integrity": "sha512-z+K4LlahDFVMww20t/0zcA7gq/NgOawaLuxgqGRVKS0PiZlCTIUtX0EJbC0BK1JtR4CelmkPK67zuCgpdlF4EA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.11.0", - "@typescript-eslint/visitor-keys": "5.11.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.11.0.tgz", - "integrity": "sha512-cxgBFGSRCoBEhvSVLkKw39+kMzUKHlJGVwwMbPcTZX3qEhuXhrjwaZXWMxVfxDgyMm+b5Q5b29Llo2yow8Y7xQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.11.0.tgz", - "integrity": "sha512-yVH9hKIv3ZN3lw8m/Jy5I4oXO4ZBMqijcXCdA4mY8ull6TPTAoQnKKrcZ0HDXg7Bsl0Unwwx7jcXMuNZc0m4lg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.11.0", - "@typescript-eslint/visitor-keys": "5.11.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.11.0.tgz", - "integrity": "sha512-E8w/vJReMGuloGxJDkpPlGwhxocxOpSVgSvjiLO5IxZPmxZF30weOeJYyPSEACwM+X4NziYS9q+WkN/2DHYQwA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.11.0", - "eslint-visitor-keys": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz", - "integrity": "sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", + "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/types": "5.23.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -5268,14 +5320,14 @@ } }, "node_modules/ace-builds": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.4.14.tgz", - "integrity": "sha512-NBOQlm9+7RBqRqZwimpgquaLeTJFayqb9UEPtTkpC3TkkwDnlsT/TwsCC0svjt9kEZ6G9mH5AEOHSz6Q/HrzQQ==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.5.0.tgz", + "integrity": "sha512-1BtEfIhFl/VDNRS9R1m9F8Kmeh2uJ98CxTeBE0kBjJpv5S5N2buTVWtc1BGXL9AromN7ekBjaEBaUl+ZPn4ciA==" }, "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -5449,12 +5501,6 @@ "rxjs": ">=6.0.0" } }, - "node_modules/ansi": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", - "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", - "peer": true - }, "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -5541,31 +5587,12 @@ "node": ">= 8" } }, - "node_modules/app-root-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", - "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", - "dev": true, - "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": "1.0.6", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", - "integrity": "sha1-otKMkxAqpsyWJFomy5VN4G7FPww=", - "peer": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.0 || ^1.1.13" - } - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -5645,12 +5672,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", - "dev": true - }, "node_modules/async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -5705,32 +5726,6 @@ "postcss": "^8.1.0" } }, - "node_modules/aws-crt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/aws-crt/-/aws-crt-1.11.1.tgz", - "integrity": "sha512-cWlauv11KD6PNZL3tLj1aM5A+NF8wKT2L8gej1FgyAnN1dL4n1oEm3HwuxmPYk09TRIPgkvXG5aHW2qefiO+fA==", - "hasInstallScript": true, - "peer": true, - "dependencies": { - "@httptoolkit/websocket-stream": "^6.0.0", - "axios": "^0.24.0", - "cmake-js": "6.3.0", - "crypto-js": "^4.0.0", - "fastestsmallesttextencoderdecoder": "^1.0.22", - "mqtt": "^4.3.4", - "tar": "^6.1.11", - "ws": "^7.5.5" - } - }, - "node_modules/axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", - "peer": true, - "dependencies": { - "follow-redirects": "^1.14.4" - } - }, "node_modules/axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -5858,7 +5853,8 @@ "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==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/base-64": { "version": "0.1.0", @@ -5869,6 +5865,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, "funding": [ { "type": "github", @@ -5890,15 +5887,6 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "peer": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -5908,19 +5896,6 @@ "node": "*" } }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "peer": true, - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -5934,56 +5909,41 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", - "peer": true - }, "node_modules/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dev": true, "dependencies": { - "bytes": "3.1.1", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "engines": { "node": ">= 0.8" @@ -5998,6 +5958,15 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -6046,6 +6015,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6074,15 +6044,25 @@ } }, "node_modules/browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.3", "picocolors": "^1.0.0" }, "bin": { @@ -6090,16 +6070,13 @@ }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "funding": [ { "type": "github", @@ -6122,7 +6099,8 @@ "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==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/buffer-indexof": { "version": "1.1.1", @@ -6130,40 +6108,6 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "peer": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "peer": true - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "peer": true, - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -6240,26 +6184,20 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001312", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", - "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", + "version": "1.0.30001341", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", + "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "peer": true, - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/chalk": { "version": "2.4.2", @@ -6312,6 +6250,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, "engines": { "node": ">=10" } @@ -6413,361 +6352,6 @@ "node": ">=6" } }, - "node_modules/cmake-js": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-6.3.0.tgz", - "integrity": "sha512-1uqTOmFt6BIqKlrX+39/aewU/JVhyZWDqwAL+6psToUwxj3yWPJiwxiZFmV0XdcoWmqGs7peZTxTbJtAcH8hxw==", - "peer": true, - "dependencies": { - "axios": "^0.21.1", - "debug": "^4", - "fs-extra": "^5.0.0", - "is-iojs": "^1.0.1", - "lodash": "^4", - "memory-stream": "0", - "npmlog": "^1.2.0", - "rc": "^1.2.7", - "semver": "^5.0.3", - "splitargs": "0", - "tar": "^4", - "unzipper": "^0.8.13", - "url-join": "0", - "which": "^1.0.9", - "yargs": "^3.6.0" - }, - "bin": { - "cmake-js": "bin/cmake-js" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/cmake-js/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cmake-js/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "peer": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/cmake-js/node_modules/camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cmake-js/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "peer": true - }, - "node_modules/cmake-js/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "peer": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/cmake-js/node_modules/fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/cmake-js/node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "peer": true, - "dependencies": { - "minipass": "^2.6.0" - } - }, - "node_modules/cmake-js/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "peer": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cmake-js/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "peer": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/cmake-js/node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "peer": true, - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/cmake-js/node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "peer": true, - "dependencies": { - "minipass": "^2.9.0" - } - }, - "node_modules/cmake-js/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "peer": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/cmake-js/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/cmake-js/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "peer": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cmake-js/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "peer": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cmake-js/node_modules/tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "peer": true, - "dependencies": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - }, - "engines": { - "node": ">=4.5" - } - }, - "node_modules/cmake-js/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==", - "peer": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/cmake-js/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "peer": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cmake-js/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "peer": true - }, - "node_modules/cmake-js/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "peer": true - }, - "node_modules/cmake-js/node_modules/yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "peer": true, - "dependencies": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "peerDependencies": { - "rxjs": "^6.5.3", - "tslib": "^1.10.0", - "zone.js": "~0.10.2" - } - }, - "node_modules/codelyzer/node_modules/aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", - "dev": true, - "dependencies": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, - "node_modules/codelyzer/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==", - "dev": true, - "dependencies": { - "ast-types-flow": "0.0.7" - } - }, - "node_modules/codelyzer/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "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": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true - }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -6809,24 +6393,14 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/comment-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.0.tgz", - "integrity": "sha512-hRpmWIKgzd81vn0ydoWoyPoALEOnF4wt8yKD35Ib1D6XC2siLiYaiqfGkYrunuKdsXGwpBpHU3+9r+RVw2NZfA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true, "engines": { "node": ">= 12.0.0" } }, - "node_modules/commist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz", - "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", - "peer": true, - "dependencies": { - "leven": "^2.1.0", - "minimist": "^1.1.0" - } - }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -6887,36 +6461,8 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "engines": [ - "node >= 6.0" - ], - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "node_modules/connect-history-api-fallback": { "version": "1.6.0", @@ -6970,9 +6516,9 @@ "dev": true }, "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true, "engines": { "node": ">= 0.6" @@ -7143,7 +6689,8 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true }, "node_modules/cosmiconfig": { "version": "7.0.1", @@ -7280,12 +6827,6 @@ "node": ">= 8" } }, - "node_modules/crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", - "peer": true - }, "node_modules/css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", @@ -7390,16 +6931,6 @@ "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==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, "node_modules/css-what": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", @@ -7421,15 +6952,6 @@ "node": ">=0.10.0" } }, - "node_modules/cssauron": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", - "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", - "dev": true, - "dependencies": { - "through": "X.X.X" - } - }, "node_modules/cssdb": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.1.0.tgz", @@ -7759,16 +7281,11 @@ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" }, - "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==", - "dev": true - }, "node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -7781,15 +7298,6 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -7816,15 +7324,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "peer": true, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7898,7 +7397,8 @@ "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true }, "node_modules/depd": { "version": "1.1.2", @@ -7919,10 +7419,14 @@ } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/detect-node": { "version": "2.1.0", @@ -8047,27 +7551,6 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "peer": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "peer": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -8090,9 +7573,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.68", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.68.tgz", - "integrity": "sha512-cId+QwWrV8R1UawO6b9BR1hnkJ4EJPCPAr4h315vliHUtVUJDk39Sg1PMNnaWKfj5x+93ssjeJ9LKL6r8LaMiA==", + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", "dev": true }, "node_modules/emoji-regex": { @@ -8142,19 +7625,10 @@ "node": ">=0.10.0" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "peer": true, - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/enhanced-resolve": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz", - "integrity": "sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -8279,40 +7753,44 @@ } }, "node_modules/esbuild": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.14.tgz", - "integrity": "sha512-aiK4ddv+uui0k52OqSHu4xxu+SzOim7Rlz4i25pMEiC8rlnGU0HJ9r+ZMfdWL5bzifg+nhnn7x4NSWTeehYblg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz", + "integrity": "sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==", "dev": true, "hasInstallScript": true, "optional": true, "bin": { "esbuild": "bin/esbuild" }, + "engines": { + "node": ">=12" + }, "optionalDependencies": { - "esbuild-android-arm64": "0.14.14", - "esbuild-darwin-64": "0.14.14", - "esbuild-darwin-arm64": "0.14.14", - "esbuild-freebsd-64": "0.14.14", - "esbuild-freebsd-arm64": "0.14.14", - "esbuild-linux-32": "0.14.14", - "esbuild-linux-64": "0.14.14", - "esbuild-linux-arm": "0.14.14", - "esbuild-linux-arm64": "0.14.14", - "esbuild-linux-mips64le": "0.14.14", - "esbuild-linux-ppc64le": "0.14.14", - "esbuild-linux-s390x": "0.14.14", - "esbuild-netbsd-64": "0.14.14", - "esbuild-openbsd-64": "0.14.14", - "esbuild-sunos-64": "0.14.14", - "esbuild-windows-32": "0.14.14", - "esbuild-windows-64": "0.14.14", - "esbuild-windows-arm64": "0.14.14" + "esbuild-android-arm64": "0.14.22", + "esbuild-darwin-64": "0.14.22", + "esbuild-darwin-arm64": "0.14.22", + "esbuild-freebsd-64": "0.14.22", + "esbuild-freebsd-arm64": "0.14.22", + "esbuild-linux-32": "0.14.22", + "esbuild-linux-64": "0.14.22", + "esbuild-linux-arm": "0.14.22", + "esbuild-linux-arm64": "0.14.22", + "esbuild-linux-mips64le": "0.14.22", + "esbuild-linux-ppc64le": "0.14.22", + "esbuild-linux-riscv64": "0.14.22", + "esbuild-linux-s390x": "0.14.22", + "esbuild-netbsd-64": "0.14.22", + "esbuild-openbsd-64": "0.14.22", + "esbuild-sunos-64": "0.14.22", + "esbuild-windows-32": "0.14.22", + "esbuild-windows-64": "0.14.22", + "esbuild-windows-arm64": "0.14.22" } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.14.tgz", - "integrity": "sha512-be/Uw6DdpQiPfula1J4bdmA+wtZ6T3BRCZsDMFB5X+k0Gp8TIh9UvmAcqvKNnbRAafSaXG3jPCeXxDKqnc8hFQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz", + "integrity": "sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==", "cpu": [ "arm64" ], @@ -8320,12 +7798,15 @@ "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.14.tgz", - "integrity": "sha512-BEexYmjWafcISK8cT6O98E3TfcLuZL8DKuubry6G54n2+bD4GkoRD6HYUOnCkfl2p7jodA+s4369IjSFSWjtHg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz", + "integrity": "sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==", "cpu": [ "x64" ], @@ -8333,12 +7814,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.14.tgz", - "integrity": "sha512-tnBKm41pDOB1GtZ8q/w26gZlLLRzVmP8fdsduYjvM+yFD7E2DLG4KbPAqFMWm4Md9B+DitBglP57FY7AznxbTg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz", + "integrity": "sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==", "cpu": [ "arm64" ], @@ -8346,12 +7830,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.14.tgz", - "integrity": "sha512-Q9Rx6sgArOHalQtNwAaIzJ6dnQ8A+I7f/RsQsdkS3JrdzmnlFo8JEVofTmwVQLoIop7OKUqIVOGP4PoQcwfVMA==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz", + "integrity": "sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==", "cpu": [ "x64" ], @@ -8359,12 +7846,15 @@ "optional": true, "os": [ "freebsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.14.tgz", - "integrity": "sha512-TJvq0OpLM7BkTczlyPIphcvnwrQwQDG1HqxzoYePWn26SMUAlt6wrLnEvxdbXAvNvDLVzG83kA+JimjK7aRNBA==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz", + "integrity": "sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==", "cpu": [ "arm64" ], @@ -8372,12 +7862,15 @@ "optional": true, "os": [ "freebsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-32": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.14.tgz", - "integrity": "sha512-h/CrK9Baimt5VRbu8gqibWV7e1P9l+mkanQgyOgv0Ng3jHT1NVFC9e6rb1zbDdaJVmuhWX5xVliUA5bDDCcJeg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz", + "integrity": "sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==", "cpu": [ "ia32" ], @@ -8385,12 +7878,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.14.tgz", - "integrity": "sha512-IC+wAiIg/egp5OhQp4W44D9PcBOH1b621iRn1OXmlLzij9a/6BGr9NMIL4CRwz4j2kp3WNZu5sT473tYdynOuQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz", + "integrity": "sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==", "cpu": [ "x64" ], @@ -8398,12 +7894,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.14.tgz", - "integrity": "sha512-gxpOaHOPwp7zSmcKYsHrtxabScMqaTzfSQioAMUaB047YiMuDBzqVcKBG8OuESrYkGrL9DDljXr/mQNg7pbdaQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz", + "integrity": "sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==", "cpu": [ "arm" ], @@ -8411,12 +7910,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.14.tgz", - "integrity": "sha512-6QVul3RI4M5/VxVIRF/I5F+7BaxzR3DfNGoqEVSCZqUbgzHExPn+LXr5ly1C7af2Kw4AHpo+wDqx8A4ziP9avw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz", + "integrity": "sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==", "cpu": [ "arm64" ], @@ -8424,12 +7926,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.14.tgz", - "integrity": "sha512-4Jl5/+xoINKbA4cesH3f4R+q0vltAztZ6Jm8YycS8lNhN1pgZJBDxWfI6HUMIAdkKlIpR1PIkA9aXQgZ8sxFAg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz", + "integrity": "sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==", "cpu": [ "mips64el" ], @@ -8437,12 +7942,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.14.tgz", - "integrity": "sha512-BitW37GxeebKxqYNl4SVuSdnIJAzH830Lr6Mkq3pBHXtzQay0vK+IeOR/Ele1GtNVJ+/f8wYM53tcThkv5SC5w==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz", + "integrity": "sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==", "cpu": [ "ppc64" ], @@ -8450,12 +7958,31 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz", + "integrity": "sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.14.tgz", - "integrity": "sha512-vLj6p76HOZG3wfuTr5MyO3qW5iu8YdhUNxuY+tx846rPo7GcKtYSPMusQjeVEfZlJpSYoR+yrNBBxq+qVF9zrw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz", + "integrity": "sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==", "cpu": [ "s390x" ], @@ -8463,12 +7990,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.14.tgz", - "integrity": "sha512-fn8looXPQhpVqUyCBWUuPjesH+yGIyfbIQrLKG05rr1Kgm3rZD/gaYrd3Wpmf5syVZx70pKZPvdHp8OTA+y7cQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz", + "integrity": "sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==", "cpu": [ "x64" ], @@ -8476,12 +8006,15 @@ "optional": true, "os": [ "netbsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.14.tgz", - "integrity": "sha512-HdAnJ399pPff3SKbd8g+P4o5znseni5u5n5rJ6Z7ouqOdgbOwHe2ofZbMow17WMdNtz1IyOZk2Wo9Ve6/lZ4Rg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz", + "integrity": "sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==", "cpu": [ "x64" ], @@ -8489,12 +8022,15 @@ "optional": true, "os": [ "openbsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.14.tgz", - "integrity": "sha512-bmDHa99ulsGnYlh/xjBEfxoGuC8CEG5OWvlgD+pF7bKKiVTbtxqVCvOGEZeoDXB+ja6AvHIbPxrEE32J+m5nqQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz", + "integrity": "sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==", "cpu": [ "x64" ], @@ -8502,24 +8038,27 @@ "optional": true, "os": [ "sunos" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-wasm": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.14.tgz", - "integrity": "sha512-qTjK4MWnYtQHCMGg2qDUqeFYXfVvYq5qJkQTIsOV4VZCknoYePVaDTG9ygEB9Ct0kc0DWs7IrS6Ja+GjY62Kzw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.22.tgz", + "integrity": "sha512-FOSAM29GN1fWusw0oLMv6JYhoheDIh5+atC72TkJKfIUMID6yISlicoQSd9gsNSFsNBvABvtE2jR4JB1j4FkFw==", "dev": true, "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/esbuild-windows-32": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.14.tgz", - "integrity": "sha512-6tVooQcxJCNenPp5GHZBs/RLu31q4B+BuF4MEoRxswT+Eq2JGF0ZWDRQwNKB8QVIo3t6Svc5wNGez+CwKNQjBg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz", + "integrity": "sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==", "cpu": [ "ia32" ], @@ -8527,12 +8066,15 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-windows-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.14.tgz", - "integrity": "sha512-kl3BdPXh0/RD/dad41dtzj2itMUR4C6nQbXQCyYHHo4zoUoeIXhpCrSl7BAW1nv5EFL8stT1V+TQVXGZca5A2A==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz", + "integrity": "sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==", "cpu": [ "x64" ], @@ -8540,12 +8082,15 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.14.tgz", - "integrity": "sha512-dCm1wTOm6HIisLanmybvRKvaXZZo4yEVrHh1dY0v582GThXJOzuXGja1HIQgV09RpSHYRL3m4KoUBL00l6SWEg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz", + "integrity": "sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==", "cpu": [ "arm64" ], @@ -8553,7 +8098,10 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/escalade": { "version": "3.1.1", @@ -8580,12 +8128,12 @@ } }, "node_modules/eslint": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz", - "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", + "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.1.0", + "@eslint/eslintrc": "^1.2.3", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -8596,7 +8144,7 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", + "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -8612,7 +8160,7 @@ "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", @@ -8740,9 +8288,9 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "dependencies": { "array-includes": "^3.1.4", @@ -8750,14 +8298,14 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.8.0", + "is-core-module": "^2.8.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "engines": { "node": ">=4" @@ -8794,27 +8342,43 @@ "dev": true }, "node_modules/eslint-plugin-jsdoc": { - "version": "37.9.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.9.1.tgz", - "integrity": "sha512-ynIsYL+rOtIKWOttAYWCgOJawPwYKexcX3cuoYHwifvz4+uY+MZ2un5nMHBULigdSITnQ5/ZSHpO/O1nwv/uJA==", + "version": "39.2.9", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.2.9.tgz", + "integrity": "sha512-gaPYJT94rWlWyQcisQyyEJHtLaaJqN4baFlLCEr/LcXVibS9wzQTL2dskqk327ggwqQopR+Xecu2Lng1IJ9Ypw==", "dev": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.19.0", - "comment-parser": "1.3.0", - "debug": "^4.3.3", + "@es-joy/jsdoccomment": "~0.29.0", + "comment-parser": "1.3.1", + "debug": "^4.3.4", "escape-string-regexp": "^4.0.0", "esquery": "^1.4.0", - "regextras": "^0.8.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "spdx-expression-parse": "^3.0.1" }, "engines": { - "node": "^12 || ^14 || ^16 || ^17" + "node": "^14 || ^16 || ^17 || ^18" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0" } }, + "node_modules/eslint-plugin-jsdoc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -8827,6 +8391,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint-plugin-prefer-arrow": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", @@ -9069,13 +8648,13 @@ } }, "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -9209,38 +8788,39 @@ } }, "node_modules/express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dev": true, "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.1", + "body-parser": "1.20.0", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.1", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "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.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.6", + "qs": "6.10.3", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -9264,6 +8844,15 @@ "ms": "2.0.0" } }, + "node_modules/express/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==", + "dev": true, + "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", @@ -9342,18 +8931,6 @@ "url": "https://paypal.me/naturalintelligence" } }, - "node_modules/fastestsmallesttextencoderdecoder": { - "version": "1.0.22", - "resolved": "https://registry.npmjs.org/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz", - "integrity": "sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==", - "peer": true - }, - "node_modules/fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -9453,17 +9030,17 @@ } }, "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -9535,9 +9112,10 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", + "dev": true, "funding": [ { "type": "individual", @@ -9553,15 +9131,6 @@ } } }, - "node_modules/font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=", - "peer": true, - "engines": { - "node": ">=0.10.3" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -9612,6 +9181,7 @@ "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" }, @@ -9628,7 +9198,8 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "node_modules/fsevents": { "version": "2.3.2", @@ -9644,45 +9215,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "peer": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -9695,17 +9227,13 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "node_modules/gauge": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", - "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", - "peer": true, - "dependencies": { - "ansi": "^0.3.0", - "has-unicode": "^2.0.0", - "lodash.pad": "^4.1.0", - "lodash.padend": "^4.1.0", - "lodash.padstart": "^4.1.0" + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/gensync": { @@ -9781,6 +9309,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9846,7 +9375,8 @@ "node_modules/graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "dev": true }, "node_modules/handle-thing": { "version": "2.0.1", @@ -9928,7 +9458,8 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true }, "node_modules/hdr-histogram-js": { "version": "2.0.3", @@ -9947,30 +9478,6 @@ "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", "dev": true }, - "node_modules/help-me": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz", - "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==", - "peer": true, - "dependencies": { - "glob": "^7.1.6", - "readable-stream": "^3.6.0" - } - }, - "node_modules/help-me/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/hex-rgb": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-4.3.0.tgz", @@ -10011,10 +9518,31 @@ "wbuf": "^1.1.0" } }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": 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/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==", + "dev": true + }, "node_modules/html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "node_modules/http-cache-semantics": { @@ -10030,25 +9558,34 @@ "dev": true }, "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" + } + }, + "node_modules/http-errors/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==", + "dev": true, + "engines": { + "node": ">= 0.8" } }, "node_modules/http-parser-js": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", - "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", "dev": true }, "node_modules/http-proxy": { @@ -10080,9 +9617,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", - "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, "dependencies": { "@types/http-proxy": "^1.17.8", @@ -10161,6 +9698,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, "funding": [ { "type": "github", @@ -10269,6 +9807,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -10277,7 +9816,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/ini": { "version": "2.0.0", @@ -10397,15 +9937,6 @@ "node": ">= 0.4" } }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -10576,12 +10107,6 @@ "node": ">=8" } }, - "node_modules/is-iojs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz", - "integrity": "sha1-TBEDO11dlNbqs3dd7cm+fQCDJfE=", - "peer": true - }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", @@ -10778,12 +10303,14 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "node_modules/isobject": { "version": "3.0.1", @@ -10794,15 +10321,6 @@ "node": ">=0.10.0" } }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "peer": true, - "peerDependencies": { - "ws": "*" - } - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -10963,18 +10481,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jquery": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", - "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==", - "peer": true - }, - "node_modules/js-sdsl": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-2.1.4.tgz", - "integrity": "sha512-/Ew+CJWHNddr7sjwgxaVeIORIH4AMVC9dy0hPf540ZGMVgS9d3ajwuVdyhDt6/QUvT8ATjR3yuYBKsS79F+H4A==", - "peer": true - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -10995,9 +10501,9 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.5.tgz", - "integrity": "sha512-2a6eRxSxp1BW040hFvaJxhsCMI9lT8QB8t14t+NY5tC5rckIR0U9cr2tjOeaFirmEOy6MHvmJnY7zTBHq431Lw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.0.1.tgz", + "integrity": "sha512-vqMCdAFVIiFhVgBYE/X8naf3L/7qiJsaYWTfUJZZZ124dR3OUz9HrmaMUGpYIYAN4VSuodf6gIZY0e8ktPw9cg==", "dev": true, "engines": { "node": ">=12.0.0" @@ -11040,13 +10546,10 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -11113,18 +10616,6 @@ "node": ">= 8" } }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "peer": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/less": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", @@ -11215,15 +10706,6 @@ "node": ">=0.10.0" } }, - "node_modules/leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -11238,9 +10720,9 @@ } }, "node_modules/license-webpack-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.1.tgz", - "integrity": "sha512-SQum9mg3BgnY5BK+2KYl4W7pk9b26Q8tW2lTsO6tidD0/Ds9ksdXvp3ip2s9LqDjj5gtBMyWRfOPZptWj4PfCg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, "dependencies": { "webpack-sources": "^3.0.0" @@ -11260,12 +10742,6 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", - "peer": true - }, "node_modules/loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -11318,23 +10794,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lodash.pad": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", - "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA=", - "peer": true - }, "node_modules/lodash.padend": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=" }, - "node_modules/lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=", - "peer": true - }, "node_modules/lodash.trimstart": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz", @@ -11435,6 +10899,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -11528,39 +10993,6 @@ "node": ">= 4.0.0" } }, - "node_modules/memory-stream": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", - "integrity": "sha1-6+jdHDuLw4wOeUHp3dWuvmtN6D8=", - "peer": true, - "dependencies": { - "readable-stream": "~1.0.26-2" - } - }, - "node_modules/memory-stream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "peer": true - }, - "node_modules/memory-stream/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/memory-stream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "peer": true - }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -11691,9 +11123,10 @@ "dev": true }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -11702,14 +11135,16 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true }, "node_modules/minipass": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -11796,6 +11231,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -11808,6 +11244,7 @@ "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" }, @@ -11815,80 +11252,11 @@ "node": ">=10" } }, - "node_modules/mqtt": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.6.tgz", - "integrity": "sha512-1dgQbkbh1Bba9iAGDNIrhSZ4nLDjbhmNHjOEvsmKI1Bb+2orj0gHwjqUKJ5CKUMKBYbkQYRM1fy+N1/2iZOj5w==", - "peer": true, - "dependencies": { - "commist": "^1.0.0", - "concat-stream": "^2.0.0", - "debug": "^4.1.1", - "duplexify": "^4.1.1", - "help-me": "^3.0.0", - "inherits": "^2.0.3", - "lru-cache": "^6.0.0", - "minimist": "^1.2.5", - "mqtt-packet": "^6.8.0", - "number-allocator": "^1.0.9", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "reinterval": "^1.1.0", - "rfdc": "^1.3.0", - "split2": "^3.1.0", - "ws": "^7.5.5", - "xtend": "^4.0.2" - }, - "bin": { - "mqtt": "bin/mqtt.js", - "mqtt_pub": "bin/pub.js", - "mqtt_sub": "bin/sub.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mqtt-packet": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", - "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", - "peer": true, - "dependencies": { - "bl": "^4.0.2", - "debug": "^4.1.1", - "process-nextick-args": "^2.0.1" - } - }, - "node_modules/mqtt/node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "peer": true, - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "node_modules/mqtt/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "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==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/multicast-dns": { "version": "6.2.3", @@ -11977,9 +11345,9 @@ "dev": true }, "node_modules/ngx-clipboard": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/ngx-clipboard/-/ngx-clipboard-15.0.1.tgz", - "integrity": "sha512-Bx0MvAvcYmLL/6TxScltzvYlRKu7JOVnrstzI+r4yXMTWP/0nUiEZ83UzjYbjf8FRlSuXDWeEYGhw5SNh/swSg==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/ngx-clipboard/-/ngx-clipboard-15.1.0.tgz", + "integrity": "sha512-dUJl1cNtdkCqL953oAhP7wmUPFrqW2aDg5OPhwPU9R3cLEdQgU2NbsHEUz4zaPyEopTXu8SR37onVm1Ep8qOHg==", "dependencies": { "ngx-window-token": ">=6.0.0", "tslib": "^2.0.0" @@ -11990,9 +11358,9 @@ } }, "node_modules/ngx-color-picker": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/ngx-color-picker/-/ngx-color-picker-12.0.0.tgz", - "integrity": "sha512-SY5KoZka/uq2MNhUAKfJXQjjS2TFvKDJHbsCxfnjKjS/VHx8VVeTJpnt5wuuewzRzLxfOm5y2Fw8/HTPEPtRkA==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/ngx-color-picker/-/ngx-color-picker-12.0.1.tgz", + "integrity": "sha512-ODLePeqN7dnhTmjHGJrxFHaEXb3o2vH4n8qUzkUAIFmz5vOOxCCEYY4/bg+5VK62PonaK7j0fFf8AjnwrqhFHQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -12053,9 +11421,9 @@ "optional": true }, "node_modules/node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, "engines": { "node": ">= 6.13.0" @@ -12154,20 +11522,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/node-gyp/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -12184,9 +11538,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", "dev": true }, "node_modules/nopt": { @@ -12381,17 +11735,6 @@ "node": ">=8" } }, - "node_modules/npmlog": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", - "integrity": "sha1-KOe+YZYJtT960d0wChDWTXFiaLY=", - "peer": true, - "dependencies": { - "ansi": "~0.3.0", - "are-we-there-yet": "~1.0.0", - "gauge": "~1.2.0" - } - }, "node_modules/nth-check": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", @@ -12404,25 +11747,6 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/number-allocator": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.10.tgz", - "integrity": "sha512-K4AvNGKo9lP6HqsZyfSr9KDaqnwFzW203inhQEOwFrmFaYevpdX4VNwdOLk197aHujzbT//z6pCBrCOUYSM5iw==", - "peer": true, - "dependencies": { - "debug": "^4.3.1", - "js-sdsl": "^2.1.2" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/nx": { "version": "13.1.3", "resolved": "https://registry.npmjs.org/nx/-/nx-13.1.3.tgz", @@ -12436,9 +11760,9 @@ } }, "node_modules/object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "engines": { "node": ">= 6" } @@ -12519,9 +11843,9 @@ "dev": true }, "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "dependencies": { "ee-first": "1.1.1" @@ -12543,6 +11867,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "dependencies": { "wrappy": "1" } @@ -12689,18 +12014,6 @@ "node": ">=8" } }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "peer": true, - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -12753,12 +12066,12 @@ } }, "node_modules/p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, "dependencies": { - "@types/retry": "^0.12.0", + "@types/retry": "0.12.0", "retry": "^0.13.1" }, "engines": { @@ -12935,6 +12248,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -13022,17 +12336,6 @@ "node": ">=8" } }, - "node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -13066,12 +12369,12 @@ } }, "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" @@ -13632,9 +12935,9 @@ "integrity": "sha512-heygWF0X5HFI1otlZE62pp6ye7sZ8om78J9au2BRkg8O7Y8AHTZ9qKMRzchZUHLe8zUAvdi6hZzzm9XxgwIExw==" }, "node_modules/primeng": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-13.1.1.tgz", - "integrity": "sha512-gqSuKbPq8x8ITpv2r7Ne96S3htt0aa0ZxJgHPyj/MNDNdfmrXk1Phm1EzkAbIy66t0RdJjc4RUWqLfAgsKEAYw==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-13.4.0.tgz", + "integrity": "sha512-19+7fZBi2R4AZjxSmONiF2Jz1UiQL/vcevE7xU3D77aVEB5QwDxLTeoImBQVG41YdQVG0za8dk+0TmV0Ssol0g==", "dependencies": { "tslib": "^2.3.0" }, @@ -13658,7 +12961,8 @@ "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==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "node_modules/promise-inflight": { "version": "1.0.1", @@ -13708,16 +13012,6 @@ "dev": true, "optional": true }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "peer": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -13728,10 +13022,13 @@ } }, "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" }, @@ -13787,13 +13084,13 @@ } }, "node_modules/raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "dependencies": { - "bytes": "3.1.1", - "http-errors": "1.8.1", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -13802,44 +13099,14 @@ } }, "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "engines": { "node": ">= 0.8" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "peer": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "peer": true - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -13863,24 +13130,19 @@ } }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": 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" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/readable-stream/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/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -13939,13 +13201,14 @@ "dev": true }, "node_modules/regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -13983,15 +13246,6 @@ "node": ">=4" } }, - "node_modules/regextras": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz", - "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==", - "dev": true, - "engines": { - "node": ">=0.1.14" - } - }, "node_modules/regjsgen": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", @@ -14019,12 +13273,6 @@ "jsesc": "bin/jsesc" } }, - "node_modules/reinterval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", - "integrity": "sha1-M2Hs+jymwYKDOA3Qu5VG85D17Oc=", - "peer": true - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -14146,12 +13394,6 @@ "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==", - "peer": true - }, "node_modules/rgb-hex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-3.0.0.tgz", @@ -14224,6 +13466,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, "funding": [ { "type": "github", @@ -14245,9 +13488,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz", - "integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==", + "version": "1.49.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", + "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -14258,7 +13501,7 @@ "sass": "sass.js" }, "engines": { - "node": ">=8.9.0" + "node": ">=12.0.0" } }, "node_modules/sass-loader": { @@ -14357,12 +13600,12 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "dependencies": { - "node-forge": "^1.2.0" + "node-forge": "^1" }, "engines": { "node": ">=10" @@ -14383,43 +13626,25 @@ "node": ">=10" } }, - "node_modules/semver-dsl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", - "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", - "dev": true, - "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==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "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": "1.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -14440,6 +13665,15 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/send/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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -14515,16 +13749,25 @@ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" @@ -14536,12 +13779,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "peer": true - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -14798,55 +14035,6 @@ "wbuf": "^1.7.3" } }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "peer": true, - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/split2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/splitargs": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz", - "integrity": "sha1-/p965lc3GzOxDLgNoUPPgknPazs=", - "peer": true - }, - "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==", - "dev": true - }, "node_modules/ssri": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", @@ -14860,24 +14048,19 @@ } }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "peer": true - }, "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==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -14885,7 +14068,8 @@ "node_modules/string_decoder/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==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/string-to-color": { "version": "2.2.2", @@ -15079,6 +14263,7 @@ "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -15092,11 +14277,12 @@ } }, "node_modules/terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.11.0.tgz", + "integrity": "sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==", "dev": true, "dependencies": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.20" @@ -15106,14 +14292,6 @@ }, "engines": { "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } } }, "node_modules/terser-webpack-plugin": { @@ -15282,15 +14460,6 @@ "node": ">=0.6" } }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "peer": true, - "engines": { - "node": "*" - } - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -15301,14 +14470,14 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, @@ -15325,94 +14494,9 @@ } }, "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "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.", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/tslint/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "peer": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true - }, - "node_modules/tslint/node_modules/tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "peer": true, - "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" - } + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -15478,16 +14562,10 @@ "integrity": "sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g==", "dev": true }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "peer": true - }, "node_modules/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -15588,50 +14666,6 @@ "node": ">= 0.8" } }, - "node_modules/unzipper": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", - "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==", - "peer": true, - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "~1.0.10", - "listenercount": "~1.0.1", - "readable-stream": "~2.1.5", - "setimmediate": "~1.0.4" - } - }, - "node_modules/unzipper/node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "peer": true - }, - "node_modules/unzipper/node_modules/readable-stream": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", - "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", - "peer": true, - "dependencies": { - "buffer-shims": "^1.0.0", - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/unzipper/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "peer": true - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -15650,12 +14684,6 @@ "querystring": "0.2.0" } }, - "node_modules/url-join": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", - "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=", - "peer": true - }, "node_modules/url/node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", @@ -15664,7 +14692,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "node_modules/utils-merge": { "version": "1.0.1", @@ -15739,13 +14768,13 @@ } }, "node_modules/webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", @@ -15753,7 +14782,7 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -15912,27 +14941,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": 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/webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", @@ -16048,18 +15056,6 @@ "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==", - "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", @@ -16091,18 +15087,6 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, - "node_modules/window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "peer": true, - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -16165,15 +15149,16 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "peer": true, + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "dev": true, "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -16196,15 +15181,6 @@ "node": ">= 6" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "peer": true, - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -16217,7 +15193,8 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yaml": { "version": "1.10.2", @@ -16229,9 +15206,9 @@ } }, "node_modules/yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.0.tgz", + "integrity": "sha512-3sLxVhbAB5OC8qvVRebCLWuouhwh/rswsiDYx3WGxajUk/l4G20SKfrKKFeNIHboUFt2JFgv2yfn+5cgOr/t5A==", "dev": true, "dependencies": { "cliui": "^7.0.2", @@ -16256,41 +15233,41 @@ } }, "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true, "engines": { "node": ">=12" } }, "node_modules/zone.js": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", - "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.5.tgz", + "integrity": "sha512-D1/7VxEuQ7xk6z/kAROe4SUbd9CzxY4zOwVGnGHerd/SgLIVU5f4esDzQUsOCeArn933BZfWMKydH7l7dPEp0g==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.3.0" } } }, "dependencies": { "@ampproject/remapping": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.1.1.tgz", - "integrity": "sha512-YVAcA4DKLOj296CF5SrQ8cYiMRiUGc2sqFpLxsDGWE34suHqhGP/5yMsDHKsrh8hs8I5TiRVXNwKPWQpX3iGjw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "sourcemap-codec": "1.4.8" + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, "@angular-devkit/architect": { - "version": "0.1302.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.3.tgz", - "integrity": "sha512-0m8jMKrFfIqsYt33zTUwSmyekyfuS67hna08RQ6USjzWQSE3z4S8ulCUARSjM6AzdMblX+whfy56nJUpT17NSA==", + "version": "0.1303.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.5.tgz", + "integrity": "sha512-ZF5Vul8UqwDSwYPxJ4YvdG7lmciJZ1nncyt9Dbk0swxw4MGdy0ZIf+91o318qUn/5JrttQ7ZCYoCZJCjYOSBtw==", "dev": true, "requires": { - "@angular-devkit/core": "13.2.3", + "@angular-devkit/core": "13.3.5", "rxjs": "6.6.7" }, "dependencies": { @@ -16312,15 +15289,15 @@ } }, "@angular-devkit/build-angular": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.3.tgz", - "integrity": "sha512-cZ2gRcMRgW3t1WCeP+2D/wmr2M+BR/RICAh0wL9irIdypWAzIFt3Z2+2R/HmgAAxoEkdUMIfB9AnkYmwRVgFeA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.5.tgz", + "integrity": "sha512-6ZQ788U0vT7KqMZeOsNQxP01IhOpxlbKonxK2fZNju8e+Ha2K77yV9A9XMbmcUGWRRHCOFvUEaJhvxDFsunESg==", "dev": true, "requires": { - "@ampproject/remapping": "1.1.1", - "@angular-devkit/architect": "0.1302.3", - "@angular-devkit/build-webpack": "0.1302.3", - "@angular-devkit/core": "13.2.3", + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1303.5", + "@angular-devkit/build-webpack": "0.1303.5", + "@angular-devkit/core": "13.3.5", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -16331,7 +15308,7 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.2.3", + "@ngtools/webpack": "13.3.5", "ansi-colors": "4.1.1", "babel-loader": "8.2.3", "babel-plugin-istanbul": "6.1.1", @@ -16342,8 +15319,8 @@ "core-js": "3.20.3", "critters": "0.0.16", "css-loader": "6.5.1", - "esbuild": "0.14.14", - "esbuild-wasm": "0.14.14", + "esbuild": "0.14.22", + "esbuild-wasm": "0.14.22", "glob": "7.2.0", "https-proxy-agent": "5.0.0", "inquirer": "8.2.0", @@ -16351,10 +15328,10 @@ "karma-source-map-support": "1.4.0", "less": "4.1.2", "less-loader": "10.2.0", - "license-webpack-plugin": "4.0.1", + "license-webpack-plugin": "4.0.2", "loader-utils": "3.2.0", "mini-css-extract-plugin": "2.5.3", - "minimatch": "3.0.4", + "minimatch": "3.0.5", "open": "8.4.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", @@ -16366,24 +15343,33 @@ "regenerator-runtime": "0.13.9", "resolve-url-loader": "5.0.0", "rxjs": "6.6.7", - "sass": "1.49.0", + "sass": "1.49.9", "sass-loader": "12.4.0", "semver": "7.3.5", "source-map-loader": "3.0.1", "source-map-support": "0.5.21", "stylus": "0.56.0", "stylus-loader": "6.2.0", - "terser": "5.10.0", + "terser": "5.11.0", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.1", - "webpack": "5.67.0", + "webpack": "5.70.0", "webpack-dev-middleware": "5.3.0", "webpack-dev-server": "4.7.3", "webpack-merge": "5.8.0", "webpack-subresource-integrity": "5.1.0" }, "dependencies": { + "minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", @@ -16400,16 +15386,22 @@ "dev": true } } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.1302.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.3.tgz", - "integrity": "sha512-+JYH1lWU0UOjaWYxpoR2VLsdcb6nG9Gv+M1gH+kT0r2sAKOFaHnrksbOvca3EhDoaMa2b9LSGEE0OcSHWnN+eQ==", + "version": "0.1303.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.5.tgz", + "integrity": "sha512-EI7scRGKPw9Rg4LypUSTf7JM3lE1imTVxY8mY6gqNkRWnvsb5+kptJQ+gK+VZSom/URcPFbN40lJYwgmZBNPeA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1302.3", + "@angular-devkit/architect": "0.1303.5", "rxjs": "6.6.7" }, "dependencies": { @@ -16431,9 +15423,9 @@ } }, "@angular-devkit/core": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.3.tgz", - "integrity": "sha512-/47RA8qmWzeS60xSdaprIn1MiSv0Iw83t0M9/ENH7irFS5vMAq62NCcwiWXH59pZmvvLbF+7xy/RgYUZLr4nHQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.5.tgz", + "integrity": "sha512-w7vzK4VoYP9rLgxJ2SwEfrkpKybdD+QgQZlsDBzT0C6Ebp7b4gkNcNVFo8EiZvfDl6Yplw2IAP7g7fs3STn0hQ==", "dev": true, "requires": { "ajv": "8.9.0", @@ -16462,12 +15454,12 @@ } }, "@angular-devkit/schematics": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.3.tgz", - "integrity": "sha512-+dyC4iKV0huvpjiuz4uyjLNK3FsCIp/Ghv5lXvhG6yok/dCAubsJItJOxi6G16aVCzG/E9zbsDfm9fNMyVOkgQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.5.tgz", + "integrity": "sha512-0N/kL/Vfx0yVAEwa3HYxNx9wYb+G9r1JrLjJQQzDp+z9LtcojNf7j3oey6NXrDUs1WjVZOa/AIdRl3/DuaoG5w==", "dev": true, "requires": { - "@angular-devkit/core": "13.2.3", + "@angular-devkit/core": "13.3.5", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -16492,116 +15484,116 @@ } }, "@angular-devkit/schematics-cli": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-13.2.3.tgz", - "integrity": "sha512-huCAno7u2K3Td3oiB41ax5AtoMyij6NmJsUxhpYQkZxnNsio9CKeSJnOuzml8SAILExc7sHFNW5A+9BeLluE4A==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-13.3.5.tgz", + "integrity": "sha512-ARX20ebtfwzef8GdXIcB6uv0sjTsaEniZyXBFchEKD6kR5EYZVaBL+ZVUbmsU1d0XY///WzW7pqwCyu5H1u+vw==", "dev": true, "requires": { - "@angular-devkit/core": "13.2.3", - "@angular-devkit/schematics": "13.2.3", + "@angular-devkit/core": "13.3.5", + "@angular-devkit/schematics": "13.3.5", "ansi-colors": "4.1.1", "inquirer": "8.2.0", - "minimist": "1.2.5", + "minimist": "1.2.6", "symbol-observable": "4.0.0" } }, "@angular-eslint/builder": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-13.1.0.tgz", - "integrity": "sha512-RdyeetctnipVdCBrU/mipJ2XKiLC1yGmK1Sfbbgwu0s49CAdOArY/b+b8OU3yyy4EO1EGKQMlzs6F3wTYgiZCA==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-13.2.1.tgz", + "integrity": "sha512-79378DhlZ+hUlsTYvFs/BauiCQPN0RGlN5IuvzZs62yWquPecwK0nHcSasUe5OtiknuwIy7SwFq/AXyJVI+Ouw==", "dev": true, "requires": { "@nrwl/devkit": "13.1.3" } }, "@angular-eslint/bundled-angular-compiler": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-13.1.0.tgz", - "integrity": "sha512-0VSAZ3zrHkKdbvogQ4GLSf+lKojtPL3LXLlvXU9xNgNsqw68+gSNwaWd595tXoQCmpwWpTerKUbyIsGnPA7EYA==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-13.2.1.tgz", + "integrity": "sha512-v/O9s6yvg7MJTQ9iNdXpZJOAjunY4ATk/dE3+xTsLwWTZXTXLXZE1FtKD/reijoItZtGiLUJ+F1pK5nwq/iI6w==", "dev": true }, "@angular-eslint/eslint-plugin": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-13.1.0.tgz", - "integrity": "sha512-WiggBWPhhpSjcYVHJiawCduCsydM/RPudUE8zxv0Nmj/APuzNgvUr6E//uYTrhNv9EIJoZutRovw7R4Y/yXj4Q==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-13.2.1.tgz", + "integrity": "sha512-hlHzbe7MIBbZ4IUKvJh5pjN5nKw0YZBwPyIB1+IBOJAdjWuS274uUGTZxKeyJiyJi0FOUu5+Z6vbM9ZJ2uzjcw==", "dev": true, "requires": { - "@angular-eslint/utils": "13.1.0", - "@typescript-eslint/experimental-utils": "5.11.0" + "@angular-eslint/utils": "13.2.1", + "@typescript-eslint/experimental-utils": "5.17.0" } }, "@angular-eslint/eslint-plugin-template": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-13.1.0.tgz", - "integrity": "sha512-ceZAMjufE58aduOW/UwjrbCRWocYC0zOEJ2jUkPt6jlL8yzc+SC6UitO0VmMgUsCizHueav5/3gKy05xqwk/CA==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-13.2.1.tgz", + "integrity": "sha512-fA11IGfnWzJePFVS04JKigQY33/Twp5Gv3sj6o8NLRi25NbZDFMc6YjRv8FuKfJ0DXrZh0nLgP2L/01qnXDgZQ==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "13.1.0", - "@typescript-eslint/experimental-utils": "5.11.0", + "@angular-eslint/bundled-angular-compiler": "13.2.1", + "@typescript-eslint/experimental-utils": "5.17.0", "aria-query": "^4.2.2", "axobject-query": "^2.2.0" } }, "@angular-eslint/schematics": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-13.1.0.tgz", - "integrity": "sha512-/gVtkRP09cGhnUF3tr0phwNA5/ml94V3cqO8X4Z4QmyAaIwxuOJ0mJvWrVN7aurURxh9WoeWD/HXOvtC5igtpQ==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-13.2.1.tgz", + "integrity": "sha512-uejXuV9mGzjxw/WY7T3FBpm3HWmOtjnA3eFXzY2VssqaYbEcBl9DakBh9h+KivV86iH3F3ElY8WC0Ka25TCCsg==", "dev": true, "requires": { - "@angular-eslint/eslint-plugin": "13.1.0", - "@angular-eslint/eslint-plugin-template": "13.1.0", + "@angular-eslint/eslint-plugin": "13.2.1", + "@angular-eslint/eslint-plugin-template": "13.2.1", "ignore": "5.2.0", "strip-json-comments": "3.1.1", "tmp": "0.2.1" } }, "@angular-eslint/template-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-13.1.0.tgz", - "integrity": "sha512-gKV+kms+kYm1HdToH3j4HL1RrjvMHscVkhwjoV1WbJColnfDivVAZ6/5/J92/A/8r7vJptQkftsbiaGKDyg47w==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-13.2.1.tgz", + "integrity": "sha512-aSZjKYTUXjJ3sehm90CfZey/ed333IxP0TpnaG7Lue9rSEa3BkKOv8Kffy+EhDkpdTpjdwdmGfopxxsbm9sPHw==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "13.1.0", + "@angular-eslint/bundled-angular-compiler": "13.2.1", "eslint-scope": "^5.1.0" } }, "@angular-eslint/utils": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-13.1.0.tgz", - "integrity": "sha512-iLmYMXNk+1sFMIlYXN8/Z5UcNAOno38v10lzo4bMjCpzXKkMa0O2b+4qi+469iUJAU6RAZ5weUL+S2Wtlr0ooA==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-13.2.1.tgz", + "integrity": "sha512-TCw56jQDPe/FDg3IC0QTQVn4mv5Pzb8K4YpO2hiBdU4XwmOTGWjbwZO++Wr1Gekw1OJYVWSIwNfz2MrGIDsu7A==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "13.1.0", - "@typescript-eslint/experimental-utils": "5.11.0" + "@angular-eslint/bundled-angular-compiler": "13.2.1", + "@typescript-eslint/experimental-utils": "5.17.0" } }, "@angular/animations": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.2.tgz", - "integrity": "sha512-qX8LAMuCJaueHBVyuwKtqunx96G0Dr26k7y5Z03VTcscYst4Ib4V2d4i5dwn3HS82DehFdO86cm3Hi2PqE/qww==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.8.tgz", + "integrity": "sha512-zHQPFy2iW8Eqqm4vDTcri89zBg3UbSlOzREaUk1j6+ulFcNK50vmzqkUvcW/hy8x31+6VXkNvNDn2+Q2BWBxzA==", "requires": { "tslib": "^2.3.0" } }, "@angular/cdk": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-13.2.2.tgz", - "integrity": "sha512-cT5DIaz+NI9IGb3X61Wh26+L6zdRcOXT1BP37iRbK2Qa2qM8/0VNeK6hrBBIblyoHKR/WUmRlS8XYf6mmArpZw==", + "version": "13.3.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-13.3.7.tgz", + "integrity": "sha512-HtGqlrt4+ikbpzooF0LT/uMW6fgRJxLRUoOwkTY1oHhfNXhQaE2p8XEUH2qshl28aCIF8r8zrb6jpd4VqC+tyg==", "requires": { "parse5": "^5.0.0", "tslib": "^2.3.0" } }, "@angular/cli": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.3.tgz", - "integrity": "sha512-QsakxpdQuO67u4fQNuOASqabYUO9gJb/5CpUGpWbuBzru0/9CMEF1CtXoF4EoDiwa5sJMirz3SJMKhtzFlv1cQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.5.tgz", + "integrity": "sha512-FrPg86cfmm0arWZInt55muCTpcQSNlvoViVrIVkyqSN06GoyCAQ2zn6/OYJnx/XAg/XvXTbygL+58c0WXuOaiA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1302.3", - "@angular-devkit/core": "13.2.3", - "@angular-devkit/schematics": "13.2.3", - "@schematics/angular": "13.2.3", + "@angular-devkit/architect": "0.1303.5", + "@angular-devkit/core": "13.3.5", + "@angular-devkit/schematics": "13.3.5", + "@schematics/angular": "13.3.5", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -16620,89 +15612,142 @@ } }, "@angular/common": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.2.tgz", - "integrity": "sha512-56C/bheNLKtTCyQUZCiYtKbBIZN9jj6rjFILPtJCGls3cBCxp7t9tIdoLiQG/wVQRmaxdj1ioLT+sCWz7mLtQw==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.8.tgz", + "integrity": "sha512-8GYa11PYC7Vj/bkNmzDqmpUyszAaJ565isKRDEQGcKWOB6k5OjnLT+nvMrKap7f347K2z+2qf+pXkgY8xXiDNA==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.2.tgz", - "integrity": "sha512-XXQtB0/e7pR2LPrHmpEiTU72SX4xxHGy91vYWIj1JCjSn0fYF7vtHzSJPXDvkbnkNow/PXXzJJYaU1ctdMZPcA==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.8.tgz", + "integrity": "sha512-9g6prh4q6jbROskV+ZKDs0+gsllu8A3wYme/b54MHRc8Xdz9IeWAqwYFqUwuu2PZneR1ba0HmFtptTuzKnWGSQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.2.tgz", - "integrity": "sha512-tuOIcEEKVIht+mKrj0rtX3I8gc+ByPjzpCZhFQRggxM6xbKJIToO1zERbEGKrZ+sUJ6BB5KLvscDy+Pddy3b8w==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.8.tgz", + "integrity": "sha512-DT3ux6OvWy4oL9kJPduQhFktKYmJKYWifPaEx6mCS3NOmWcMZLnpU03yC8mn+JFM2/ZHZs3m1Xn00hVzUmEPvg==", "dev": true, "requires": { - "@babel/core": "^7.8.6", + "@babel/core": "^7.17.2", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", "dependency-graph": "^0.11.0", - "magic-string": "^0.25.0", + "magic-string": "^0.26.0", "reflect-metadata": "^0.1.2", "semver": "^7.0.0", "sourcemap-codec": "^1.4.8", "tslib": "^2.3.0", "yargs": "^17.2.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "dev": true, + "requires": { + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" + } + }, + "magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } } }, "@angular/core": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.2.tgz", - "integrity": "sha512-zpctw0BxIVOsRFnckchK15SD1L8tzhf5GzwIDaM6+VylDQj1uYkm8mvAjJTQZyUuApomoFet2Rfj7XQPV+cNSQ==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.8.tgz", + "integrity": "sha512-FGQ+fvTm0QnNBKBamTJSzfBnxn+/gVBHT+2gpQtpax4LFP/6Z05N3AsJ2ZwM9mJwT4MH1HsEVJcXZCy7xXUXhg==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.2.tgz", - "integrity": "sha512-T61W4Ay9X9qhxjc6lLqpNFeHrGKwg2mqdsZ3zIm/c7oKo37mgl9TB5kkrtnS+205r3N2hF4ICnGFZ4a/egUP/g==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.8.tgz", + "integrity": "sha512-XG1uHUr7LfFKsE7cHfhOBj7f3xmuHWndBrHyqqNShpZBng35wiSktIWKHFL13IHeT+5J8WntR7/HpKwzKV84Vw==", "requires": { "tslib": "^2.3.0" } }, "@angular/language-service": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.2.2.tgz", - "integrity": "sha512-2P5+wRsbHgpI2rVeFwnsLWxyntUiw8kG9Tqh5BkVDqtQovbYtzFiaMkf5TFz/g938JBBgeRQzvXr1kQhEidAWQ==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.3.8.tgz", + "integrity": "sha512-dA+uxtUO+7i5gMCwIMtaUMse6+Bep6JcDWo8GJ/nWS8c3GAS2E96Sm3NBycKWGaiz9HNOgO2cbpPlMifKPREow==", "dev": true }, "@angular/material": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-13.2.2.tgz", - "integrity": "sha512-YAjPp2+/wuEOPfkAxdRVdbWHiK4P3DgMZa9qP/NizN2lTXNrftEfD09ZlPIFMZRnnExezJ2LnO7eyELpc1VSKg==", + "version": "13.3.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-13.3.7.tgz", + "integrity": "sha512-CXdLvohaxl3Nii6I70pEJX2FZRRkBPNiocUNP39hFHXf2PW/eNYCN8TS5DG2uOAaR2wyPwrXrU95mDjgvlqXqQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.2.tgz", - "integrity": "sha512-M7gWC8fFCPc/CRcHCzqe/j7WzwAUMeKt9vwlK633XnesHBoqZdYgbb3YHHc6WPVU0YI09Nb/Hm5sezEKmjUmPg==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.8.tgz", + "integrity": "sha512-QRkly2LL6aJJaO6Fw6VwuigtYxefukCJ9SS/jZI0rND94bUX9g4exHv87sQsN8LOUdFIVXXqXSY1Oy1eW0X+IQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.2.tgz", - "integrity": "sha512-lj6xwat0StLp+ROFqXU62upwHQhlxaQi0djhrS+DGKUK0Xu9bkBeaSCfBFgS78jPm1SwL8Xztu9/vuDAHLRrqw==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.8.tgz", + "integrity": "sha512-KWAfceZePkFZF9uePwIkoToM0LF4WPM/Ps1ijbeX0XaCFN7SFImoKfjiFEiRrRXjiCgKhPOJs69I0tTxiQA0VA==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-server": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-13.2.2.tgz", - "integrity": "sha512-v17/E9hWY5/MgUjk+E+aNUNZ/wmhHb08RyeKvvUKhx8Xb24hRiMdjA9yMkt1UsjOGJUIeZ8s5nn6xRiRc3t+9A==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-13.3.8.tgz", + "integrity": "sha512-UWx2M5NPkdPbaupgcqTPwDTSVQlV50yA926Yjk5sP1v/3xeV5kCqMrj8iEQkSM7xSRa0daLI/b6YZU1tBvudwQ==", "requires": { "domino": "^2.1.2", "tslib": "^2.3.0", @@ -16710,25 +15755,25 @@ } }, "@angular/router": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.2.tgz", - "integrity": "sha512-dt2b9/kGJAkmOqUmUD3aKlp4pGpdqLwB0zmhUYF3ktNEcQaPf4ZjWT/4jhy09gFL+TKOHG5OQW9GxBbhWI4bSg==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.8.tgz", + "integrity": "sha512-iYiWezg+XCaBWgP/GCe8IOEtR4hcn0oGcnBZVNySD+gHBWH9o7QYDvDItCEpVKBLTwNaB0ftSIkkPzcW/eR+kA==", "requires": { "tslib": "^2.3.0" } }, "@angular/service-worker": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-13.2.2.tgz", - "integrity": "sha512-bIjzK1+AvD/z6mQesWGCejBqY7YnOZjsb979CZ8Opul5ToQUm1n1NWISre1Hqexv46Wfql7RyLt2d/YJbjVnXw==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-13.3.8.tgz", + "integrity": "sha512-NoXV1DhjeJ0v7Exn/kKmM7fHidPpGCfs3o6IhCWMMJA3FoBCW2Zx15Pjb7AvLDi2M1tiUdp6RG28T2loM03mVw==", "requires": { "tslib": "^2.3.0" } }, "@angular/youtube-player": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/youtube-player/-/youtube-player-13.2.6.tgz", - "integrity": "sha512-HDgL0QFkKsY8YZH6hhYjYaFEEBotaVUhJV+d53Snz6Ekz8zQ3O3b3swhDFFL/dwweK9bsrXBWwHXOrZmkUIrpQ==", + "version": "13.3.7", + "resolved": "https://registry.npmjs.org/@angular/youtube-player/-/youtube-player-13.3.7.tgz", + "integrity": "sha512-WlO3AUCl87bEiwK3gJH0UhqmnP7V1Vsy/+AFZiqfz2XZNgxXthByqd3HRBRB7/+E1YMWbdMQQ3p2QS3F+Al2MQ==", "requires": { "@types/youtube": "^0.0.42", "tslib": "^2.3.0" @@ -16881,820 +15926,807 @@ } }, "@aws-sdk/abort-controller": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.54.0.tgz", - "integrity": "sha512-6N7numECrGwal2NEbJwYXOGjwWsFafz8VuUvCBK5G9SgSL5XAbq1S3lL/4gbme5jhgh9CWh7s+bAY7EpOEH2Xg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.78.0.tgz", + "integrity": "sha512-iz1YLwM2feJUj/y97yO4XmDeTxs+yZ1XJwQgoawKuc8IDBKUutnJNCHL5jL04WUKU7Nrlq+Hr2fCTScFh2z9zg==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/chunked-blob-reader": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.52.0.tgz", - "integrity": "sha512-BAZhriHHfvnGOd0P9xcnGu8DGyxOa0lgmEw+Tc6nZpXJzx0P+1Sd76q5gE5d/IZ0r5VTB6rfwwKUoG6iShNCwQ==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.55.0.tgz", + "integrity": "sha512-o/xjMCq81opAjSBjt7YdHJwIJcGVG5XIV9+C2KXcY5QwVimkOKPybWTv0mXPvSwSilSx+EhpLNhkcJuXdzhw4w==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/chunked-blob-reader-native": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.52.0.tgz", - "integrity": "sha512-/hVzC0Q12/mWRMBBQD3v82xsLSxZ4RwG6N44XP7MuJoHy4ui4T7D9RSuvBpzzr/4fqF0w9M7XYv6aM4BD2pFIQ==", + "version": "3.58.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.58.0.tgz", + "integrity": "sha512-+D3xnPD5985iphgAqgUerBDs371a2WzzoEVi7eHJUMMsP/gEnSTdSH0HNxsqhYv6CW4EdKtvDAQdAwA1VtCf2A==", "requires": { - "@aws-sdk/util-base64-browser": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/util-base64-browser": "3.58.0", + "tslib": "^2.3.1" } }, "@aws-sdk/client-s3": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.54.0.tgz", - "integrity": "sha512-9JdhkTqRCYA3esnjFR7xaFysXMfX5TatKE9H8Sds78eoMQrfgB2Yl6ZcEl8Oy0vpMVpOzqRYmcSmFfaBOhuI/g==", + "version": "3.88.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.88.0.tgz", + "integrity": "sha512-OZZZ2k1YMpnWYi+9Jb9lIhc2Gr6Z4vl35MKlWAsSC9ed/3vzPhkyKBAFuIi7wIWsRof0QtVLlpQKKBPyylK95g==", "requires": { "@aws-crypto/sha1-browser": "2.0.0", "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/client-sts": "3.54.0", - "@aws-sdk/config-resolver": "3.54.0", - "@aws-sdk/credential-provider-node": "3.54.0", - "@aws-sdk/eventstream-serde-browser": "3.54.0", - "@aws-sdk/eventstream-serde-config-resolver": "3.54.0", - "@aws-sdk/eventstream-serde-node": "3.54.0", - "@aws-sdk/fetch-http-handler": "3.54.0", - "@aws-sdk/hash-blob-browser": "3.54.0", - "@aws-sdk/hash-node": "3.54.0", - "@aws-sdk/hash-stream-node": "3.54.0", - "@aws-sdk/invalid-dependency": "3.54.0", - "@aws-sdk/md5-js": "3.54.0", - "@aws-sdk/middleware-bucket-endpoint": "3.54.0", - "@aws-sdk/middleware-content-length": "3.54.0", - "@aws-sdk/middleware-expect-continue": "3.54.0", - "@aws-sdk/middleware-flexible-checksums": "3.54.0", - "@aws-sdk/middleware-host-header": "3.54.0", - "@aws-sdk/middleware-location-constraint": "3.54.0", - "@aws-sdk/middleware-logger": "3.54.0", - "@aws-sdk/middleware-retry": "3.54.0", - "@aws-sdk/middleware-sdk-s3": "3.54.0", - "@aws-sdk/middleware-serde": "3.54.0", - "@aws-sdk/middleware-signing": "3.54.0", - "@aws-sdk/middleware-ssec": "3.54.0", - "@aws-sdk/middleware-stack": "3.54.0", - "@aws-sdk/middleware-user-agent": "3.54.0", - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/node-http-handler": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/smithy-client": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/url-parser": "3.54.0", - "@aws-sdk/util-base64-browser": "3.52.0", - "@aws-sdk/util-base64-node": "3.52.0", - "@aws-sdk/util-body-length-browser": "3.54.0", - "@aws-sdk/util-body-length-node": "3.54.0", - "@aws-sdk/util-defaults-mode-browser": "3.54.0", - "@aws-sdk/util-defaults-mode-node": "3.54.0", - "@aws-sdk/util-stream-browser": "3.54.0", - "@aws-sdk/util-stream-node": "3.54.0", - "@aws-sdk/util-user-agent-browser": "3.54.0", - "@aws-sdk/util-user-agent-node": "3.54.0", - "@aws-sdk/util-utf8-browser": "3.52.0", - "@aws-sdk/util-utf8-node": "3.52.0", - "@aws-sdk/util-waiter": "3.54.0", - "@aws-sdk/xml-builder": "3.52.0", + "@aws-sdk/client-sts": "3.87.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-node": "3.87.0", + "@aws-sdk/eventstream-serde-browser": "3.78.0", + "@aws-sdk/eventstream-serde-config-resolver": "3.78.0", + "@aws-sdk/eventstream-serde-node": "3.78.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-blob-browser": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/hash-stream-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/md5-js": "3.78.0", + "@aws-sdk/middleware-bucket-endpoint": "3.80.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-expect-continue": "3.78.0", + "@aws-sdk/middleware-flexible-checksums": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-location-constraint": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-sdk-s3": "3.86.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/middleware-ssec": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4-multi-region": "3.88.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-stream-browser": "3.78.0", + "@aws-sdk/util-stream-node": "3.78.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "@aws-sdk/util-waiter": "3.78.0", + "@aws-sdk/xml-builder": "3.55.0", "entities": "2.2.0", "fast-xml-parser": "3.19.0", - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/client-sso": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.54.0.tgz", - "integrity": "sha512-5ZYYhoMqeaYhOU4kOEM7daKb8D5QhJ+IpwhHHMPhoHqQEwbbhBTFDXRs3ObUP/QYdBUMWS71+pnDoUdyHqPQ0Q==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.85.0.tgz", + "integrity": "sha512-JMW0NzFpo99oE6O9M/kgLela73p4vmhe/5TIcdrqUvP9XUV9nANl5nSXh3rqLz0ubmliedz9kdYYhwMC3ntoXg==", "requires": { "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.54.0", - "@aws-sdk/fetch-http-handler": "3.54.0", - "@aws-sdk/hash-node": "3.54.0", - "@aws-sdk/invalid-dependency": "3.54.0", - "@aws-sdk/middleware-content-length": "3.54.0", - "@aws-sdk/middleware-host-header": "3.54.0", - "@aws-sdk/middleware-logger": "3.54.0", - "@aws-sdk/middleware-retry": "3.54.0", - "@aws-sdk/middleware-serde": "3.54.0", - "@aws-sdk/middleware-stack": "3.54.0", - "@aws-sdk/middleware-user-agent": "3.54.0", - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/node-http-handler": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/smithy-client": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/url-parser": "3.54.0", - "@aws-sdk/util-base64-browser": "3.52.0", - "@aws-sdk/util-base64-node": "3.52.0", - "@aws-sdk/util-body-length-browser": "3.54.0", - "@aws-sdk/util-body-length-node": "3.54.0", - "@aws-sdk/util-defaults-mode-browser": "3.54.0", - "@aws-sdk/util-defaults-mode-node": "3.54.0", - "@aws-sdk/util-user-agent-browser": "3.54.0", - "@aws-sdk/util-user-agent-node": "3.54.0", - "@aws-sdk/util-utf8-browser": "3.52.0", - "@aws-sdk/util-utf8-node": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "tslib": "^2.3.1" } }, "@aws-sdk/client-sts": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.54.0.tgz", - "integrity": "sha512-UY8fyi1zaWBJm+ZtDZRvSOv1rjHlvJjtJF3MfGQWDwUM10Amwzfh4Hc2JEzyeMJPkoSSvm6CVjSDyqXo8yLGZA==", + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.87.0.tgz", + "integrity": "sha512-JGI5rzSq8T7IVlfDJ8ltGl8nyVEtwvqXrYR87DwTjeE4HP+/oBdWdbO0oBL1TJMGjzZcENyVYvmaSAkobenkTg==", "requires": { "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.54.0", - "@aws-sdk/credential-provider-node": "3.54.0", - "@aws-sdk/fetch-http-handler": "3.54.0", - "@aws-sdk/hash-node": "3.54.0", - "@aws-sdk/invalid-dependency": "3.54.0", - "@aws-sdk/middleware-content-length": "3.54.0", - "@aws-sdk/middleware-host-header": "3.54.0", - "@aws-sdk/middleware-logger": "3.54.0", - "@aws-sdk/middleware-retry": "3.54.0", - "@aws-sdk/middleware-sdk-sts": "3.54.0", - "@aws-sdk/middleware-serde": "3.54.0", - "@aws-sdk/middleware-signing": "3.54.0", - "@aws-sdk/middleware-stack": "3.54.0", - "@aws-sdk/middleware-user-agent": "3.54.0", - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/node-http-handler": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/smithy-client": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/url-parser": "3.54.0", - "@aws-sdk/util-base64-browser": "3.52.0", - "@aws-sdk/util-base64-node": "3.52.0", - "@aws-sdk/util-body-length-browser": "3.54.0", - "@aws-sdk/util-body-length-node": "3.54.0", - "@aws-sdk/util-defaults-mode-browser": "3.54.0", - "@aws-sdk/util-defaults-mode-node": "3.54.0", - "@aws-sdk/util-user-agent-browser": "3.54.0", - "@aws-sdk/util-user-agent-node": "3.54.0", - "@aws-sdk/util-utf8-browser": "3.52.0", - "@aws-sdk/util-utf8-node": "3.52.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-node": "3.87.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-sdk-sts": "3.78.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", "entities": "2.2.0", "fast-xml-parser": "3.19.0", - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/config-resolver": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.54.0.tgz", - "integrity": "sha512-VaNuvJLMaz3znmBD9BNkoEqNUs5teILU66SnFqBwVqabmOVeOh7M6/f43CcDarkwGklzZB/bn/rx9NOWUtdunA==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.80.0.tgz", + "integrity": "sha512-vFruNKlmhsaC8yjnHmasi1WW/7EELlEuFTj4mqcqNqR4dfraf0maVvpqF1VSR8EstpFMsGYI5dmoWAnnG4PcLQ==", "requires": { - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-config-provider": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-config-provider": "3.55.0", + "@aws-sdk/util-middleware": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-env": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.54.0.tgz", - "integrity": "sha512-XWfzoUyFVsT4J7iTnXO38FKNdGFyE6ZNBtW9+Yx9EiiLtUlzH09PRv+54KIRQ4uqU+fEdtRh0gOdFajTrnRi3g==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.78.0.tgz", + "integrity": "sha512-K41VTIzVHm2RyIwtBER8Hte3huUBXdV1WKO+i7olYVgLFmaqcZUNrlyoGDRqZcQ/u4AbxTzBU9jeMIbIfzMOWg==", "requires": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-imds": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.54.0.tgz", - "integrity": "sha512-Chygp8jswdjtCPmNxEMXigX4clgqh5GDaFGopR/gFaaG960hjF88Fx1/CPYD7exvM1FRO67nyfBOS0QKjSqTXg==", + "version": "3.81.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.81.0.tgz", + "integrity": "sha512-BHopP+gaovTYj+4tSrwCk8NNCR48gE9CWmpIOLkP9ell0gOL81Qh7aCEiIK0BZBZkccv1s16cYq1MSZZGS7PEQ==", "requires": { - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/url-parser": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-ini": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.54.0.tgz", - "integrity": "sha512-EobK9bJwsUdMKx7vB+tL5eaNaj/NoOPaFJlv0JRL3+5px7d2vF0i9yklj4uT7F3vDlOup6R3b1Gg9GtqxfYt9w==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.85.0.tgz", + "integrity": "sha512-KgzLGq+w8OrSLutwdYUw0POeLinGQKcqvQJ9702eoeXCwZMnEHwKqU61bn8QKMX/tuYVCNV4I1enI7MmYPW8Lw==", "requires": { - "@aws-sdk/credential-provider-env": "3.54.0", - "@aws-sdk/credential-provider-imds": "3.54.0", - "@aws-sdk/credential-provider-sso": "3.54.0", - "@aws-sdk/credential-provider-web-identity": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-credentials": "3.53.0", - "tslib": "^2.3.0" + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.54.0.tgz", - "integrity": "sha512-KsXJG0K7yJg2MCzNW52fSDbCIR5mRobbNnXTMpDRkghlQyHP1gdHsyRedVciMkJhdDILop2lScLw70iQBayP/Q==", + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.87.0.tgz", + "integrity": "sha512-yL9W5nX00grNNsGj2df1y7hQ0F77UA7+2toPOVqYPIDhFtIUA97AVYiBEFQz1mO9OAhUfCGgxuFF4pyqFoMcHQ==", "requires": { - "@aws-sdk/credential-provider-env": "3.54.0", - "@aws-sdk/credential-provider-imds": "3.54.0", - "@aws-sdk/credential-provider-ini": "3.54.0", - "@aws-sdk/credential-provider-process": "3.54.0", - "@aws-sdk/credential-provider-sso": "3.54.0", - "@aws-sdk/credential-provider-web-identity": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-credentials": "3.53.0", - "tslib": "^2.3.0" + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-ini": "3.85.0", + "@aws-sdk/credential-provider-process": "3.80.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-process": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.54.0.tgz", - "integrity": "sha512-hjUQ6FRG3Ihsm77Rgrf1dSfRUVZAFEyAHCuwURePXpYjzMpFYjl12wL6Pwa7MLCqVMyLKQ8HYamznkgBlLQqxw==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.80.0.tgz", + "integrity": "sha512-3Ro+kMMyLUJHefOhGc5pOO/ibGcJi8bkj0z/Jtqd5I2Sm1qi7avoztST67/k48KMW1OqPnD/FUqxz5T8B2d+FQ==", "requires": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-credentials": "3.53.0", - "tslib": "^2.3.0" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-sso": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.54.0.tgz", - "integrity": "sha512-8HfBTdOw+9gbWsXRTr5y+QYq8gK+YYDx7tKbNv7ZWjMfw49SDef0j0W4ZBZH+FYEPepOEAKjBgtjvlUeFxrOaA==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.85.0.tgz", + "integrity": "sha512-uE238BgJ/AftPDlBGDlV0XdiNWnUZxFmUmLxgbr19/6jHaCuBr//T6rP+Bc0BjcHkvQCvTdFoCjs17R3Quy3cw==", "requires": { - "@aws-sdk/client-sso": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-credentials": "3.53.0", - "tslib": "^2.3.0" + "@aws-sdk/client-sso": "3.85.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-web-identity": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.54.0.tgz", - "integrity": "sha512-Mi87IzpgIi6P3WntumgMJ6rNY8Ay/HtsLFYm4bZ1ZGJH/3QVT4YLm1n8A4xoC+ouhL0i24jmN3X1aNu6amBfEg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.78.0.tgz", + "integrity": "sha512-9/IvqHdJaVqMEABA8xZE3t5YF1S2PepfckVu0Ws9YUglj6oO+2QyVX6aRgMF1xph6781+Yc31TDh8/3eaDja7w==", "requires": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/eventstream-marshaller": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.54.0.tgz", - "integrity": "sha512-blOxssrHCnugxdcudYB3Vmlp7ziG0to9RfnPq+InI98mIDm3G+rt7vW6GtlkgyWu0EYduj6N+aOI7ssRUCOyDQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.78.0.tgz", + "integrity": "sha512-BMbRvLe6wNWQ+NO1pdPw3kGXXEdYV94BxEr3rTkKwr5yHpl8sUb/Va9sJJufUjzggpgE4vYu5nVsrT8ByMYXuA==", "requires": { "@aws-crypto/crc32": "2.0.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-hex-encoding": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-hex-encoding": "3.58.0", + "tslib": "^2.3.1" } }, "@aws-sdk/eventstream-serde-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.54.0.tgz", - "integrity": "sha512-XU9+nA7WlO+Rj0hV+C/2ZlB0zfI4eoit/CIlfGaonfx6EFezH3l4ngMZq8lgd8fSuPy1dN25DWQsW/F3AFSRdg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.78.0.tgz", + "integrity": "sha512-ehQI2iLsj8MMskDRbrPB7SibIdJq6LleBP6ojT+cgrLJRbVXUOxK+3MPHDZVdGYx4ukVg48E1fA2DzVfAp7Emw==", "requires": { - "@aws-sdk/eventstream-marshaller": "3.54.0", - "@aws-sdk/eventstream-serde-universal": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/eventstream-marshaller": "3.78.0", + "@aws-sdk/eventstream-serde-universal": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/eventstream-serde-config-resolver": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.54.0.tgz", - "integrity": "sha512-fnbwtjaSd05K2+rcEZ3TQfM6YBY6obWqqt/x0qTTt7277wdqvE3+i0dWcvrQLldGD7xY3+oitEmClAeCE0raiA==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.78.0.tgz", + "integrity": "sha512-iUG0wtZH/L7d6XfipwbhgjBHip0uTm9S27EasCn+g0CunbW6w7rXd7rfMqA+gSLVXPTBYjTMPIwRxrTCdRprwA==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/eventstream-serde-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.54.0.tgz", - "integrity": "sha512-b/EXk+Yb6lspfdEvClDkutif1z7Ggbeg/s2z9ug8Zh32i4/8gc4kcoWHy4ez8GUqsrRuOfD1MScqxkSAmIlPlg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.78.0.tgz", + "integrity": "sha512-H78LLoZEngZBSdk3lRQkAaR3cGsy/3UIjq9AFPeqoPVQtHkzBob1jVfE/5VSVAMhKLxWn8iqhRPS37AvyBGOwQ==", "requires": { - "@aws-sdk/eventstream-marshaller": "3.54.0", - "@aws-sdk/eventstream-serde-universal": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/eventstream-marshaller": "3.78.0", + "@aws-sdk/eventstream-serde-universal": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/eventstream-serde-universal": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.54.0.tgz", - "integrity": "sha512-HdFYrLvKHWATev0BCp0I8xH40MhP9cNhxK0h+srdCC9o/Djs3QrI0Nn5rzWdg/hQDyRg8jPSvaGG8P/ekyTn2w==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.78.0.tgz", + "integrity": "sha512-PZTLdyF923/1GJuMNtq9VMGd2vEx33HhsGInXvYtulKDSD5SgaTGj+Dz5wYepqL1gUEuXqZjBD71uZgrY/JgRg==", "requires": { - "@aws-sdk/eventstream-marshaller": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/eventstream-marshaller": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/fetch-http-handler": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.54.0.tgz", - "integrity": "sha512-TIn2ocem/gpMQ12KoiOu3uTHO86OOrmFITulV9D8xTzvFqHe34JKjHQPqII6lDbTCnU9N5CMv3N1CXxolIhiOQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.78.0.tgz", + "integrity": "sha512-cR6r2h2kJ1DNEZSXC6GknQB7OKmy+s9ZNV+g3AsNqkrUmNNOaHpFoSn+m6SC3qaclcGd0eQBpqzSu/TDn23Ihw==", "requires": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/querystring-builder": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-base64-browser": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/querystring-builder": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "tslib": "^2.3.1" } }, "@aws-sdk/hash-blob-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.54.0.tgz", - "integrity": "sha512-KIflBj2efxy5/z1ffg1HL3CRxqM7hNqel+dtVCYaCfTJ/MQhcfcR5GsodhJYl99pitryorJeB4chhgNv4bbPUA==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.78.0.tgz", + "integrity": "sha512-IEkA+t6qJEtEYEZgsqFRRITeZJ3mirw7IHJVHxwb86lpeufTVcbILI59B8/rhbqG+9dk0kWTjYSjC/ZdM+rgHA==", "requires": { - "@aws-sdk/chunked-blob-reader": "3.52.0", - "@aws-sdk/chunked-blob-reader-native": "3.52.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/chunked-blob-reader": "3.55.0", + "@aws-sdk/chunked-blob-reader-native": "3.58.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/hash-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.54.0.tgz", - "integrity": "sha512-o2XRftfj3Tj2jsZsdvnEY4OtmkT/9OADCWkINQCTcfy+nMuvs1IAS/qruunfaMJ58GntOoI4CVIbRa2lhhJr5w==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.78.0.tgz", + "integrity": "sha512-ev48yXaqZVtMeuKy52LUZPHCyKvkKQ9uiUebqkA+zFxIk+eN8SMPFHmsififIHWuS6ZkXBUSctjH9wmLebH60A==", "requires": { - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-buffer-from": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" } }, "@aws-sdk/hash-stream-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.54.0.tgz", - "integrity": "sha512-j936gz9O1ist0Bu2IXCf2DUrYfB9DkwKUMRAN14mTrKB+3PAMRhBazUVDJjIxPbcC9MQJnwIa2tiZWn8QC48UA==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.78.0.tgz", + "integrity": "sha512-y42Pm0Nk6zf/MI6acLFVFAMya0Ncvy6F6Xu5aYAmwIMIoMI0ctNeyuL/Dikgt8+oyxC+kORw+W9jtzgWj2zY/w==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/invalid-dependency": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.54.0.tgz", - "integrity": "sha512-eeefTPtkb0FQFMBKmwhvmdPqCgGvTcWEiNH8pznAH0hqxLvOLNdNRoKnX5a1WlYoq3eTm0YN9Zh+N1Sj4mbkcg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.78.0.tgz", + "integrity": "sha512-zUo+PbeRMN/Mzj6y+6p9qqk/znuFetT1gmpOcZGL9Rp2T+b9WJWd+daq5ktsL10sVCzIt2UvneJRz6b+aU+bfw==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/is-array-buffer": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.52.0.tgz", - "integrity": "sha512-5Pe9QKrOeSZb9Z8gtlx9CDMfxH8EiNdClBfXBbc6CiUM7y6l7UintYHkm133zM5XTqtMRYY1jaD8svVAoRPApA==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.55.0.tgz", + "integrity": "sha512-NbiPHVYuPxdqdFd6FxzzN3H1BQn/iWA3ri3Ry7AyLeP/tGs1yzEWMwf8BN8TSMALI0GXT6Sh0GDWy3Ok5xB6DA==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/md5-js": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.54.0.tgz", - "integrity": "sha512-pMprZD8JBw9WU4Risfd0Clm9SrUpsUS3QriSDeuFnGfRcKHkpw1sDj6HsNsIQ1OCeWuhYqW55Wtzc0pH8U80Mg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.78.0.tgz", + "integrity": "sha512-vKOXJWJvv6QH6rnqMYEWzwAnMr4hfcmY8+t6BAuTcDpcEVF77e3bwUcaajXi2U0JMuNvnLwuJF3h6kL6aX4l6g==", "requires": { - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-utf8-browser": "3.52.0", - "@aws-sdk/util-utf8-node": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-bucket-endpoint": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.54.0.tgz", - "integrity": "sha512-4VC6zxDaveCnQD3eUJezSQ3Ikeq+MxRnvfcNhZytB20tYRy1PnR4jLoqjYkw5U1zstVRABbZdzlsWzZMe308ew==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.80.0.tgz", + "integrity": "sha512-FSSx6IgT7xftSlpjxoPKv8XI9nv7EK+OCODo2s3CmElMW1kBRdmQ/ImVuTwvqhdxJEVUeUdgupmC7cqyqgt04w==", "requires": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-arn-parser": "3.52.0", - "@aws-sdk/util-config-provider": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-arn-parser": "3.55.0", + "@aws-sdk/util-config-provider": "3.55.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-content-length": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.54.0.tgz", - "integrity": "sha512-DTlZo00stFwFHyR+GTXxhYePzNbXm+aX5yYQUsrsY2J2HuSbADVgDDekJXbtOH36QBa0OJf7JKbWP8PZDxk1zg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.78.0.tgz", + "integrity": "sha512-5MpKt6lB9TdFy25/AGrpOjPY0iDHZAKpEHc+jSOJBXLl6xunXA7qHdiYaVqkWodLxy70nIckGNHqQ3drabidkA==", "requires": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-expect-continue": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.54.0.tgz", - "integrity": "sha512-6k4hoD7XqGDA8yq10AzF+iafgc+RyrPxr4kqzv50+hI5CZkPcl/vOAgS7iD+Y33dLITYuh+jzlpn7zlLwdOoqw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.78.0.tgz", + "integrity": "sha512-IXfcSugFV3uNk50VQsN/Cm80iCsUSwcYJ5RzEwy7wXbZ+KM03xWXlbXzqkeTDnS74wLWSw09nKF3rkp1eyfDfg==", "requires": { - "@aws-sdk/middleware-header-default": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/middleware-header-default": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-flexible-checksums": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.54.0.tgz", - "integrity": "sha512-4+bUwQyYHtTbaJDaj2F7j2K/JUcYdKg169pKmpefZiXZVdfR2/WWwj7Wx7EI40rpPYHaMpSal9tIxz054LPYnw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.78.0.tgz", + "integrity": "sha512-1jjxHcB3Le/2Z7BzugXzZnIwKGlUluNm0d1lB4fF2QVq3GHlA6e8uv0rCtqe/3wSsrzV6YzJ8vjioymKSNIjKQ==", "requires": { "@aws-crypto/crc32": "2.0.0", "@aws-crypto/crc32c": "2.0.0", - "@aws-sdk/is-array-buffer": "3.52.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/is-array-buffer": "3.55.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-header-default": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-header-default/-/middleware-header-default-3.54.0.tgz", - "integrity": "sha512-DvkdMJRAYrVsu6S92Z/fhSnj7ZFCNE3ertmIiGsukfMuGmzkuVKxqlUfo89xS3sOF3VY2nNOdNTCnVY4VZLSQQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-header-default/-/middleware-header-default-3.78.0.tgz", + "integrity": "sha512-USyOIF7ObBVMKbV/8lOBLDNwMAGdOtujd+RO/9dX6OQLceUTKIS1dOfJoYYwRHgengn7ikpDxoyROyspPYYDZQ==", "requires": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-host-header": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.54.0.tgz", - "integrity": "sha512-X+lvYc2ij1+9tfpvdGGb+/APvH7g/M9RYzIEkI/LvNjVCOA3f3rgzFftZZhD/zccRtrygsvXfeZhoDrHxFKl9g==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.78.0.tgz", + "integrity": "sha512-1zL8uaDWGmH50c8B8jjz75e0ePj6/3QeZEhjJgTgL6DTdiqvRt32p3t+XWHW+yDI14fZZUYeTklAaLVxqFrHqQ==", "requires": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-location-constraint": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.54.0.tgz", - "integrity": "sha512-qwZR+GWlRoIFvvCt5ywmX3kV15KxrFbUxyAADCEJ4Q86ebEI3ux9mAHB6niOArRwtA5/wyvjRrOiYo/fTq7eLQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.78.0.tgz", + "integrity": "sha512-m626H1WwXYJtwHEkV/2DsLlu1ckWq3j57NzsexZki3qS0nU8HEiDl6YYi+k84vDD4Qpba6EI9AdhzwnvZLXtGw==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-logger": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.54.0.tgz", - "integrity": "sha512-bDCQj8IBq1vrXRRrpqD+suJ8hKc4oxUXpRkWdsAD+HnWWRqHjsy0hdq5F8Rj1Abq7CsFtZ+rUXddl+KlmgZ3+A==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.78.0.tgz", + "integrity": "sha512-GBhwxNjhCJUIeQQDaGasX/C23Jay77al2vRyGwmxf8no0DdFsa4J1Ik6/2hhIqkqko+WM4SpCnpZrY4MtnxNvA==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-retry": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.54.0.tgz", - "integrity": "sha512-8kVzwxe0HQajeZWXzAp2XCkbiK8E8AZESfXvLyM34Xy2e8L8gdi1j90QLzpFk6WX6rz7hXBQG7utrCJkwXQxLA==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.80.0.tgz", + "integrity": "sha512-CTk+tA4+WMUNOcUfR6UQrkhwvPYFpnMsQ1vuHlpLFOGG3nCqywA2hueLMRQmVcDXzP0sGeygce6dzRI9dJB/GA==", "requires": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/service-error-classification": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/service-error-classification": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-middleware": "3.78.0", + "tslib": "^2.3.1", "uuid": "^8.3.2" } }, "@aws-sdk/middleware-sdk-s3": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.54.0.tgz", - "integrity": "sha512-xESksyOVCuDkMPC8mEqrInnuBeJHLSVOfwIl/pGwzevc+Q5spO9FDUlNfhaEVOEoLqK21TUdZo4z/ElNN94m4w==", + "version": "3.86.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.86.0.tgz", + "integrity": "sha512-1L9q8iJXy/KNyVR8JRs4DZ5SJse6nJPiK4AR8c2xF5FWHdGoFaLcdqpg2/TLB1kpdcfGgNp96uCROxh+IPXtDQ==", "requires": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-arn-parser": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-arn-parser": "3.55.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-sdk-sts": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.54.0.tgz", - "integrity": "sha512-4vOlG96fKgqmLMsguoKFdBkk2Fq8JttpgPts9d5Ox73+yQsa0VKrpLiD5OUPqgjGZcX2bilMKCAOBc2v3ESAHw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.78.0.tgz", + "integrity": "sha512-Lu/kN0J0/Kt0ON1hvwNel+y8yvf35licfIgtedHbBCa/ju8qQ9j+uL9Lla6Y5Tqu29yVaye1JxhiIDhscSwrLA==", "requires": { - "@aws-sdk/middleware-signing": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-serde": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.54.0.tgz", - "integrity": "sha512-O89/5aOiNegBP6Mv+gPr22Zawz2zF2v1o8kwFv2s4PWDzpmvrdF2by6e2Uh9sKzfpcwEW7Wr8kDTwajampVjgA==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.78.0.tgz", + "integrity": "sha512-4DPsNOxsl1bxRzfo1WXEZjmD7OEi7qGNpxrDWucVe96Fqj2dH08jR8wxvBIVV1e6bAad07IwdPuCGmivNvwRuQ==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-signing": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.54.0.tgz", - "integrity": "sha512-KYxmRDh7D6ysAezlsDf3cN2h6OjH66x3NUdgUmW+78nkN9tRvvJEjhmu6IOkPd4E1V9P3JOLbq6zVjDVU12WDQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.78.0.tgz", + "integrity": "sha512-OEjJJCNhHHSOprLZ9CzjHIXEKFtPHWP/bG9pMhkV3/6Bmscsgcf8gWHcOnmIrjqX+hT1VALDNpl/RIh0J6/eQw==", "requires": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-ssec": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.54.0.tgz", - "integrity": "sha512-wNQR5pRoN4wJq2IcFOXhRxvars4uWgdUnBQcJ5UDSJhUPwVDA4m+M83Q/54GWRHT+SVsobuNTmTeFnCbgsIq3A==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.78.0.tgz", + "integrity": "sha512-3z+UOd95rxvj+iO6WxMjuRNNUMlO6xhXZdBHvQmoiyS+9nMDcNieTu6gfQyLAilVeCh8xU9a0IenJuIYVdJ96g==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-stack": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.54.0.tgz", - "integrity": "sha512-38iit8VJ7jhFlMdwdDESEJOwbi8wIjF7Q1FOFIoCvURLGkTDQdabGXKwcFVfRuceLO+LJxWP3l0z0c10uZa6gQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.78.0.tgz", + "integrity": "sha512-UoNfRh6eAJN3BJHlG1eb+KeuSe+zARTC2cglroJRyHc2j7GxH2i9FD3IJbj5wvzopJEnQzuY/VCs6STFkqWL1g==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/middleware-user-agent": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.54.0.tgz", - "integrity": "sha512-831GP5EBJdDxyq93dpgBZUwBWnZAID2aFvE/VN8c5X8U00ZT7GRt9cy5EL2b6AQN3Z4uWL1ZVDVkYmRAHs33Lg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.78.0.tgz", + "integrity": "sha512-wdN5uoq8RxxhLhj0EPeuDSRFuXfUwKeEqRzCKMsYAOC0cAm+PryaP2leo0oTGJ9LUK8REK7zyfFcmtC4oOzlkA==", "requires": { - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/node-config-provider": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.54.0.tgz", - "integrity": "sha512-Q2a1vyoZa2UX/dItP3cqNdLUoTGdIY4hD5nA+mTg5mKlOWci35v8Rypr40tQz4ZwiDF6QQmK0tvD3bBUULm0wA==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.80.0.tgz", + "integrity": "sha512-vyTOMK04huB7n10ZUv0thd2TE6KlY8livOuLqFTMtj99AJ6vyeB5XBNwKnQtJIt/P7CijYgp8KcFvI9fndOmKg==", "requires": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/node-http-handler": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.54.0.tgz", - "integrity": "sha512-g6+IXe4FCMrx4vrY73yvFNAUsBJ1vhjDshUCihBv5tEXsd45/MqmON/VWYoaQZts0m2wx2fKsdoDKSIZZY7AiQ==", + "version": "3.82.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.82.0.tgz", + "integrity": "sha512-yyq/DA/IMzL4fLJhV7zVfP7aUQWPHfOKTCJjWB3KeV5YPiviJtSKb/KyzNi+gQyO7SmsL/8vQbQrf3/s7N/2OA==", "requires": { - "@aws-sdk/abort-controller": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/querystring-builder": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/abort-controller": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/querystring-builder": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/property-provider": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.54.0.tgz", - "integrity": "sha512-8e+KXskwOhXF0MIdIcZLFsOTfMVGp41Y6kywgewQaHkZoMzZ6euRziyWNgnshUE794tjxxol9resudSUehPjIw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.78.0.tgz", + "integrity": "sha512-PZpLvV0hF6lqg3CSN9YmphrB/t5LVJVWGJLB9d9qm7sJs5ksjTYBb5bY91OQ3zit0F4cqBMU8xt2GQ9J6d4DvQ==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/protocol-http": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.54.0.tgz", - "integrity": "sha512-v4CgQ2mBzEwNubM1duWP3Unu98EPNF2BuKWe4wT1HNG2MTkODS56fsgVT6sGGXS9nB/reEzB+3bXO5FS8+3SUg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.78.0.tgz", + "integrity": "sha512-SQB26MhEK96yDxyXd3UAaxLz1Y/ZvgE4pzv7V3wZiokdEedM0kawHKEn1UQJlqJLEZcQI9QYyysh3rTvHZ3fyg==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/querystring-builder": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.54.0.tgz", - "integrity": "sha512-7rs2gGPpiIHntbYGPFkxkXQkSK7uVBqlWRl0m6fNngUEz2n8jRxytB6LlALMHbXeXh28+zzq0VxbAwqAAUQ4oQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.78.0.tgz", + "integrity": "sha512-aib6RW1WAaTQDqVgRU1Ku9idkhm90gJKbCxVaGId+as6QHNUqMChEfK2v+0afuKiPNOs5uWmqvOXI9+Gt+UGDg==", "requires": { - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-uri-escape": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-uri-escape": "3.55.0", + "tslib": "^2.3.1" } }, "@aws-sdk/querystring-parser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.54.0.tgz", - "integrity": "sha512-OZ4mRJ9rXgBskPBSoXBw8tV4kfNK0f/pP55qE1eZIcQ1z7EvVz4NjldgqMfscT20Cx5VzUbus3q9EPcV+HbR1w==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.78.0.tgz", + "integrity": "sha512-csaH8YTyN+KMNczeK6fBS8l7iJaqcQcKOIbpQFg5upX4Ly5A56HJn4sVQhY1LSgfSk4xRsNfMy5mu6BlsIiaXA==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/s3-request-presigner": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.54.0.tgz", - "integrity": "sha512-xPIahWW1brKu3Cnphx/pYAB3nRAyAZH4Zh7n1zm9XUsqqsBc4ZkIKqC5tDvJ/lBOLrqks8oSh2wpckfCwO9EpA==", + "version": "3.88.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.88.0.tgz", + "integrity": "sha512-Ms3Fx+9HBV4llP5ZFrZ9LRQ6GTWGQs1ooX6kmdnzC1uNhKhAdcPrs4ngDQ4xqSsOCF77KMPaxRDTjj9o1DGqIQ==", "requires": { - "@aws-sdk/middleware-sdk-s3": "3.54.0", - "@aws-sdk/protocol-http": "3.54.0", - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/smithy-client": "3.54.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-create-request": "3.54.0", - "@aws-sdk/util-format-url": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/middleware-sdk-s3": "3.86.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4-multi-region": "3.88.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-create-request": "3.85.0", + "@aws-sdk/util-format-url": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/service-error-classification": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.54.0.tgz", - "integrity": "sha512-XWANvjJJZNqsYhGmccSSuhsvINIUX1KckfDmvYtUR6cKM6nM6QWOg/QJeTFageTEpruJ5TqzW9vY414bIE883w==" + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.78.0.tgz", + "integrity": "sha512-x7Lx8KWctJa01q4Q72Zb4ol9L/era3vy2daASu8l2paHHxsAPBE0PThkvLdUSLZSzlHSVdh3YHESIsT++VsK4w==" }, "@aws-sdk/shared-ini-file-loader": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.52.0.tgz", - "integrity": "sha512-tALb8u8IVcI4pT7yFZpl4O6kgeY5EAXyphZoRPgQSCDhmEyFUIi/sXbCN8HQiHjnHdWfXdaNE1YsZcW3GpcuoQ==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.80.0.tgz", + "integrity": "sha512-3d5EBJjnWWkjLK9skqLLHYbagtFaZZy+3jUTlbTuOKhlOwe8jF7CUM3j6I4JA6yXNcB3w0exDKKHa8w+l+05aA==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/signature-v4": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.54.0.tgz", - "integrity": "sha512-22Bf8uQ0Q/I7WpLFU88G7WVpRw6tWUX9Ggr0Z++81uZF5YCPbWDNtFDHitoERaRc/M4vUMxNuTsX/JWOR3fFPg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.78.0.tgz", + "integrity": "sha512-eePjRYuzKoi3VMr/lgrUEF1ytLeH4fA/NMCykr/uR6NMo4bSJA59KrFLYSM7SlWLRIyB0UvJqygVEvSxFluyDw==", "requires": { - "@aws-sdk/is-array-buffer": "3.52.0", - "@aws-sdk/types": "3.54.0", - "@aws-sdk/util-hex-encoding": "3.52.0", - "@aws-sdk/util-uri-escape": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/is-array-buffer": "3.55.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-hex-encoding": "3.58.0", + "@aws-sdk/util-middleware": "3.78.0", + "@aws-sdk/util-uri-escape": "3.55.0", + "tslib": "^2.3.1" } }, - "@aws-sdk/signature-v4-crt": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-crt/-/signature-v4-crt-3.54.0.tgz", - "integrity": "sha512-3qKbc/i9PkBRyADIRm6QYIos/tjaYpVnqLWGngHivzF75yG2ZyWFIVNXD5KGIDm+UWu0ZI41IGfxVEoj5Dgc6A==", - "peer": true, + "@aws-sdk/signature-v4-multi-region": { + "version": "3.88.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.88.0.tgz", + "integrity": "sha512-RBbyQRpohlIQiuZc5qAvwbXO0Bob9XhHFS/kuLh+DcyeaBp+m+Bt291FX1Ksz2A0Q3ETNM34LFt7kTOBtMvjIQ==", "requires": { - "@aws-sdk/is-array-buffer": "3.52.0", - "@aws-sdk/querystring-parser": "3.54.0", - "@aws-sdk/signature-v4": "3.54.0", - "@aws-sdk/util-hex-encoding": "3.52.0", - "@aws-sdk/util-uri-escape": "3.52.0", - "aws-crt": "^1.9.7", - "tslib": "^2.3.0" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-arn-parser": "3.55.0", + "tslib": "^2.3.1" } }, "@aws-sdk/smithy-client": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.54.0.tgz", - "integrity": "sha512-zdYN5pwhJU7x8qZKWTZPsFD5YQkDt6kyCNRsNjSWJ0ON4R3wUlFIwT3YzeQ5nMOTD86cVIm1n2RaSTYHwelFXg==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.85.0.tgz", + "integrity": "sha512-Ox/yQEAnANzhpJMyrpuxWtF/i3EviavENczT7fo4uwSyZTz/sfSBQNjs/YAG1UeA6uOI3pBP5EaFERV5hr2fRA==", "requires": { - "@aws-sdk/middleware-stack": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/types": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.54.0.tgz", - "integrity": "sha512-Jp2MHXnrM0pk0RIoSl5AHFm7TBk+7b8HTIcQ2X/6kGwwwnWw9qlg9ZFziegJTNTLJ4iVgZjz/yMlEvgrp7z9CA==" + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==" }, "@aws-sdk/url-parser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.54.0.tgz", - "integrity": "sha512-DJWdlkXq3rsOydxwR9htPUW4QXhmo75Hybg96D3F2uPUvPCm8gJFngXp/9hW1OYcgfNu13HXqUy+t6V23cC7Iw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.78.0.tgz", + "integrity": "sha512-iQn2AjECUoJE0Ae9XtgHtGGKvUkvE8hhbktGopdj+zsPBe4WrBN2DgVxlKPPrBonG/YlcL1D7a5EXaujWSlUUw==", "requires": { - "@aws-sdk/querystring-parser": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/querystring-parser": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/util-arn-parser": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.52.0.tgz", - "integrity": "sha512-mMsoYJ70+BGkVpdfQbu942v4fAGzx+pIL8+QnQhzUmcU0HbNkI0vYliMWfzz7ka9CHgbijUI/ANKA319zgKtvA==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.55.0.tgz", + "integrity": "sha512-76KJxp4MRWufHYWys7DFl64znr5yeJ3AIQNAPCKKw1sP0hzO7p6Kx0PaJnw9x+CPSzOrT4NbuApL6/srYhKDGg==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/util-base64-browser": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.52.0.tgz", - "integrity": "sha512-xjv/cQ4goWXAiGEC/AIL/GtlHg4p4RkQKs6/zxn9jOxo1OnbppLMJ0LjCtv4/JVYIVGHrx0VJ8Exyod7Ln+NeA==", + "version": "3.58.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.58.0.tgz", + "integrity": "sha512-0ebsXIZNpu/fup9OgsFPnRKfCFbuuI9PPRzvP6twzLxUB0c/aix6Co7LGHFKcRKHZdaykoJMXArf8eHj2Nzv1Q==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/util-base64-node": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.52.0.tgz", - "integrity": "sha512-V96YIXBuIiVu7Zk72Y9dly7Io9cYOT30Hjf77KAkBeizlFgT5gWklWYGcytPY8FxLuEy4dPLeHRmgwQnlDwgPA==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.55.0.tgz", + "integrity": "sha512-UQ/ZuNoAc8CFMpSiRYmevaTsuRKzLwulZTnM8LNlIt9Wx1tpNvqp80cfvVj7yySKROtEi20wq29h31dZf1eYNQ==", "requires": { - "@aws-sdk/util-buffer-from": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" } }, "@aws-sdk/util-body-length-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.54.0.tgz", - "integrity": "sha512-hnY9cXbKWJ2Fjb4bK35sFdD4vK+sFe59JtxxI336yYzANulc462LU/J1RgONXYBW60d9iwJ7U+S+9oTJrEH6WQ==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.55.0.tgz", + "integrity": "sha512-Ei2OCzXQw5N6ZkTMZbamUzc1z+z1R1Ja5tMEagz5BxuX4vWdBObT+uGlSzL8yvTbjoPjnxWA2aXyEqaUP3JS8Q==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/util-body-length-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.54.0.tgz", - "integrity": "sha512-BBQB3kqHqHQp2GAINJGuse9JBM7hfU0tMp9rfw0nym4C/VRooiJVrIb28tKseLtd7nihXvsZXPvEc2jQBe1Thg==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.55.0.tgz", + "integrity": "sha512-lU1d4I+9wJwydduXs0SxSfd+mHKjxeyd39VwOv6i2KSwWkPbji9UQqpflKLKw+r45jL7+xU/zfeTUg5Tt/3Gew==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/util-buffer-from": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.52.0.tgz", - "integrity": "sha512-hsG0lMlHjJUFoXIy59QLn6x4QU/vp/e0t3EjdD0t8aymB9iuJ43UeLjYTZdrOgtbWb8MXEF747vwg+P6n+4Lxw==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.55.0.tgz", + "integrity": "sha512-uVzKG1UgvnV7XX2FPTylBujYMKBPBaq/qFBxfl0LVNfrty7YjpfieQxAe6yRLD+T0Kir/WDQwGvYC+tOYG3IGA==", "requires": { - "@aws-sdk/is-array-buffer": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/is-array-buffer": "3.55.0", + "tslib": "^2.3.1" } }, "@aws-sdk/util-config-provider": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.52.0.tgz", - "integrity": "sha512-1wonBNkOOLJpMZnz2Kn69ToFgSoTTyGzJInir8WC5sME3zpkb5j41kTuEVbImNJhVv9MKjmGYrMeZbBVniLRPw==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.55.0.tgz", + "integrity": "sha512-30dzofQQfx6tp1jVZkZ0DGRsT0wwC15nEysKRiAcjncM64A0Cm6sra77d0os3vbKiKoPCI/lMsFr4o3533+qvQ==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/util-create-request": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-create-request/-/util-create-request-3.54.0.tgz", - "integrity": "sha512-Sa+t75YQnMXXcCruLBvKZ6B1DzyGAod1PZT+iDHwDDobDsUVG3Cjov9gJepYAH2EEmvZa9f0IT+W6lvGv3uL4w==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-create-request/-/util-create-request-3.85.0.tgz", + "integrity": "sha512-AQrG+mIgjtcN23O4zCAWpIwyPIHzKZAcPbF8OROAbNcQcMwyg2Q9hyodRR5l3fzGG2jiRt9P3copvORBWB7diA==", "requires": { - "@aws-sdk/middleware-stack": "3.54.0", - "@aws-sdk/smithy-client": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" - } - }, - "@aws-sdk/util-credentials": { - "version": "3.53.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-credentials/-/util-credentials-3.53.0.tgz", - "integrity": "sha512-XP/3mYOmSn5KpWv+PnBTP2UExXb+hx1ugbH4Gkveshdq9KBlVnpV5eVgIwSAnKBsplScfsNMJ5EOtHjz5Cvu5A==", - "requires": { - "@aws-sdk/shared-ini-file-loader": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/util-defaults-mode-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.54.0.tgz", - "integrity": "sha512-9QnRbTsD2MuEr59vaPAbC95ba7druMFRSZjpwc3L7U9zpsJruNDaL5aAmV0gCAIPZg7eSaJmipyWr0AvwwgroQ==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.85.0.tgz", + "integrity": "sha512-oqK/e2pHuMWrvTJWtDBzylbj232ezlTay5dCq4RQlyi3LPPVBQ08haYD1Mk2ikQ/qa0XvbSD6YVhjpTlvwRNjw==", "requires": { - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", "bowser": "^2.11.0", - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/util-defaults-mode-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.54.0.tgz", - "integrity": "sha512-kHFgEyAWCaR5uSmRwyVbWQnjiNib3EJSAG9y7bwMIHSOK/6TVOXGlb1KIoO6ZtLE1FZFlS55FIRFeOPmIFFZbA==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.85.0.tgz", + "integrity": "sha512-KDNl4H8jJJLh6y7I3MSwRKe4plKbFKK8MVkS0+Fce/GJh4EnqxF0HzMMaSeNUcPvO2wHRq2a60+XW+0d7eWo1A==", "requires": { - "@aws-sdk/config-resolver": "3.54.0", - "@aws-sdk/credential-provider-imds": "3.54.0", - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/property-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/util-format-url": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.54.0.tgz", - "integrity": "sha512-nnrXT0dQc+eRWJPgkqDK91NEluTFU9Tqs/LhIlIq+6Z8BELTN24lCi9feUKtw1s3a5ucUSs2unYyfHnl35PeeQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.78.0.tgz", + "integrity": "sha512-wdjt8ZAMyBrH/02QrQtB+S9cwtsBJ6bXRJ3XwL6z7L75nwTflKkzOQUS5Ie7HBf3j3JH0KhlqlEbf2nnM9jsPQ==", "requires": { - "@aws-sdk/querystring-builder": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/querystring-builder": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/util-hex-encoding": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.52.0.tgz", - "integrity": "sha512-YYMZg8odn/hBURgL/w82ay2mvPqXHMdujlSndT1ddUSTRoZX67N3hfYYf36nOalDOjNcanIvFHe4Fe8nw+8JiA==", + "version": "3.58.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.58.0.tgz", + "integrity": "sha512-Rl+jXUzk/FJkOLYfUVYPhKa2aUmTpeobRP31l8IatQltSzDgLyRHO35f6UEs7Ztn5s1jbu/POatLAZ2WjbgVyg==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/util-locate-window": { @@ -17705,85 +16737,93 @@ "tslib": "^2.3.0" } }, - "@aws-sdk/util-stream-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-browser/-/util-stream-browser-3.54.0.tgz", - "integrity": "sha512-KVBRQcTie9Q231pdbO4gzGxHG8wNomGic3bHDnwfVdE+tq1Pbi8xNgUelmmd/uZvgMf8awuNN8OHzkex06HAHQ==", + "@aws-sdk/util-middleware": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.78.0.tgz", + "integrity": "sha512-Hi3wv2b0VogO4mzyeEaeU5KgIt4qeo0LXU5gS6oRrG0T7s2FyKbMBkJW3YDh/Y8fNwqArZ+/QQFujpP0PIKwkA==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-stream-browser": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-browser/-/util-stream-browser-3.78.0.tgz", + "integrity": "sha512-EcThf/sJoD4NYTUNO/nehR57lqkOuL6btRoVnm4LGUR8XgQcJ/WMYYgxOMY8E81xXzRFX2ukRHRxL2xmQsbHDw==", + "requires": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/util-stream-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-node/-/util-stream-node-3.54.0.tgz", - "integrity": "sha512-h3kpLMYzGgPkCIq0sLlE70zAt75C6wcbZm4gPh5iN8KRmmhpktqKpBami9J5fY6cBPC5ZlEmv5iDdZrI90Imrw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-node/-/util-stream-node-3.78.0.tgz", + "integrity": "sha512-CHfX37ioUyamAnlS2p4Nq+4BBjCSlZolFkVyxtVJwzPBBksdvjW67nKG+SShR48RBPJ5LEzbgAaEXNRktCSf6w==", "requires": { - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/util-uri-escape": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.52.0.tgz", - "integrity": "sha512-W9zw5tE8syjg17jiCYtyF99F0FgDIekQdLg+tQGobw9EtCxlUdg48UYhifPfnjvVyADRX2ntclHF9NmhusOQaQ==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.55.0.tgz", + "integrity": "sha512-mmdDLUpFCN2nkfwlLdOM54lTD528GiGSPN1qb8XtGLgZsJUmg3uJSFIN2lPeSbEwJB3NFjVas/rnQC48i7mV8w==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/util-user-agent-browser": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.54.0.tgz", - "integrity": "sha512-pU5KL1Nnlc1igeED2R44k9GEIxlLBhwmUGIw8/Emfm8xAlGOX4NsVSfHK9EpJQth0z5ZJ4Lni6S5+nW4V16yLw==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.78.0.tgz", + "integrity": "sha512-diGO/Bf4ggBOEnfD7lrrXaaXOwOXGz0bAJ0HhpizwEMlBld5zfDlWXjNpslh+8+u3EHRjPJQ16KGT6mp/Dm+aw==", "requires": { - "@aws-sdk/types": "3.54.0", + "@aws-sdk/types": "3.78.0", "bowser": "^2.11.0", - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/util-user-agent-node": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.54.0.tgz", - "integrity": "sha512-euKoYk1TfyV9XlJyAlGWdYqhQ5B4COwBxsV9OpwiAINUFm91NSv6uavFC/ZZQBXRks6j9pHDAXeXu7bHVolvlA==", + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.80.0.tgz", + "integrity": "sha512-QV26qIXws1m6sZXg65NS+XrQ5NhAzbDVQLtEVE4nC39UN8fuieP6Uet/gZm9mlLI9hllwvcV7EfgBM3GSC7pZg==", "requires": { - "@aws-sdk/node-config-provider": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/util-utf8-browser": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.52.0.tgz", - "integrity": "sha512-LuOMa9ajWu5fQuYkmvTlQZfHaITkSle+tM/vhbU4JquRN44VUKACjRGT7UEhoU3lCL1BD0JFGMQGHI+5Mmuwfg==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.55.0.tgz", + "integrity": "sha512-ljzqJcyjfJpEVSIAxwtIS8xMRUly84BdjlBXyp6cu4G8TUufgjNS31LWdhyGhgmW5vYBNr+LTz0Kwf6J+ou7Ug==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@aws-sdk/util-utf8-node": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.52.0.tgz", - "integrity": "sha512-fujr7zeobZ2y5nnOnQZrCPPc+lCAhtNF/LEVslsQfd+AQ0bYWiosrKNetodQVWlfh10E2+i6/5g+1SBJ5kjsLw==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.55.0.tgz", + "integrity": "sha512-FsFm7GFaC7j0tlPEm/ri8bU2QCwFW5WKjxUg8lm1oWaxplCpKGUsmcfPJ4sw58GIoyoGu4QXBK60oCWosZYYdQ==", "requires": { - "@aws-sdk/util-buffer-from": "3.52.0", - "tslib": "^2.3.0" + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" } }, "@aws-sdk/util-waiter": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.54.0.tgz", - "integrity": "sha512-+Gz5R14jWKsQtMCWbzWJe2Ac/CdMV/h5/R8uEZmwM3f6MHICPOftMQd0uDLdGezSBV9PuU3PCwiBZBTFzNSYBg==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.78.0.tgz", + "integrity": "sha512-8pWd0XiNOS8AkWQyac8VNEI+gz/cGWlC2TAE2CJp0rOK5XhvlcNBINai4D6TxQ+9foyJXLOI1b8nuXemekoG8A==", "requires": { - "@aws-sdk/abort-controller": "3.54.0", - "@aws-sdk/types": "3.54.0", - "tslib": "^2.3.0" + "@aws-sdk/abort-controller": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } }, "@aws-sdk/xml-builder": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.52.0.tgz", - "integrity": "sha512-GMdcxdwDZuIMlGnewdB48bpj8eqA3nubs3biy6vRFX8zhv8OqD+m5fMinoEwD8/MGqWE3WD7VZlbbdwYtNVWzQ==", + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.55.0.tgz", + "integrity": "sha512-BH+i5S2FLprmfSeIuGy3UbNtEoJPVjh8arl5+LV3i2KY/+TmrS4yT8JtztDlDxHF0cMtNLZNO0KEPtsACS6SOg==", "requires": { - "tslib": "^2.3.0" + "tslib": "^2.3.1" } }, "@babel/code-frame": { @@ -17796,9 +16836,9 @@ } }, "@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", "dev": true }, "@babel/core": { @@ -17877,14 +16917,14 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "dependencies": { @@ -17964,23 +17004,13 @@ } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-hoist-variables": { @@ -18011,19 +17041,19 @@ } }, "@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" } }, "@babel/helper-optimise-call-expression": { @@ -18066,12 +17096,12 @@ } }, "@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -18117,13 +17147,13 @@ } }, "@babel/helpers": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", - "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "dev": true, "requires": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0" } }, @@ -18139,9 +17169,9 @@ } }, "@babel/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -18918,46 +17948,40 @@ } }, "@babel/traverse": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", - "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", + "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", + "@babel/generator": "^7.17.10", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.0", - "@babel/types": "^7.17.0", + "@babel/parser": "^7.17.10", + "@babel/types": "^7.17.10", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/generator": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", - "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", "dev": true, "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", @@ -18980,30 +18004,30 @@ "dev": true }, "@es-joy/jsdoccomment": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.19.0.tgz", - "integrity": "sha512-lRx/5ChsOwv7gIU05m8Ur1Rxa4/XkE23wTsX8XFBGWRYrCcCrngPf6yGJMG6n9dqnyDehPrBBVeFIm2INEIeQA==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.29.0.tgz", + "integrity": "sha512-4yKy5t+/joLihG+ei6CCU6sc08sjUdEdXCQ2U+9h9VP13EiqHQ4YMgDC18ys/AsLdJDBX3KRx/AWY6PR7hn52Q==", "dev": true, "requires": { - "comment-parser": "1.3.0", + "comment-parser": "1.3.1", "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~2.2.2" + "jsdoc-type-pratt-parser": "~3.0.1" } }, "@eslint/eslintrc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz", - "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", + "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", + "espree": "^9.3.2", "globals": "^13.9.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { @@ -19026,20 +18050,14 @@ "dev": true }, "globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -19064,9 +18082,9 @@ } }, "@fortawesome/fontawesome-free": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.0.0.tgz", - "integrity": "sha512-6LB4PYBST1Rx40klypw1SmSDArjFOcfBf2LeX9Zg5EKJT2eXiyiJq+CyBYKeXyK0sXS2FsCJWSPr/luyhuvh0Q==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.1.1.tgz", + "integrity": "sha512-J/3yg2AIXc9wznaVqpHVX3Wa5jwKovVF0AMYSnbmcXTiL3PpRPfF58pzWucCwEiCJBp+hCNRLWClTomD8SseKg==", "dev": true }, "@gar/promisify": { @@ -19075,22 +18093,6 @@ "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", "dev": true }, - "@httptoolkit/websocket-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@httptoolkit/websocket-stream/-/websocket-stream-6.0.0.tgz", - "integrity": "sha512-EC8m9JbhpGX2okfvLakqrmy4Le0VyNKR7b3IdvFZR/BfFO4ruh/XceBvXhCFHkykchnFxuOSlRwFiqNSXlwcGA==", - "peer": true, - "requires": { - "@types/ws": "*", - "duplexify": "^3.5.1", - "inherits": "^2.0.1", - "isomorphic-ws": "^4.0.1", - "readable-stream": "^2.3.3", - "safe-buffer": "^5.1.2", - "ws": "*", - "xtend": "^4.0.0" - } - }, "@humanwhocodes/config-array": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", @@ -19127,73 +18129,104 @@ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", "dev": true }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@ngneat/dag": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ngneat/dag/-/dag-1.1.0.tgz", - "integrity": "sha512-szJ6XIRo16XxHpVH/eep2lKUs2F4YedfMMBtm6bN7RnGLwNCmBP6kMVZ0ThgyE2K2N0+hZFyAxxjhfnD0WRXSw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ngneat/dag/-/dag-2.0.0.tgz", + "integrity": "sha512-jsqL8lGr9MQcqybQF/ygTyXjPfvxH70GEqUlm9apoIENJeqTnU8h4wpnkOOdgXxE6VGbvzQA1al42Cm5qTivbg==", "requires": { "tslib": "^2.0.0" } }, "@ngrx/effects": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-13.0.2.tgz", - "integrity": "sha512-7yW/KCxlRatDkdEriSnORlOYX8+1QAWEjPulNmHSPwehkzTQ3fIPfRBQy8xP8bnjwvGxnEZNwQlU4q1KVYOfhg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-13.2.0.tgz", + "integrity": "sha512-HmWggpl3xGQFfUzON/uel5jSyUWsrGZsR5qR/oFLGjPRWzwKfdHrl0OcBl5IhFgFxT74cAi9F4JTICUytGRbFA==", "requires": { "tslib": "^2.0.0" } }, "@ngrx/entity": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/entity/-/entity-13.0.2.tgz", - "integrity": "sha512-sAN/YDvDNy4fmCOWU8LfPp8YI8XJcvmO89XTRSoJjo3O9BIbCSEw2gYHe1V7gWHLY5Pr9wiMybKhd4RHtzFHgQ==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/entity/-/entity-13.2.0.tgz", + "integrity": "sha512-2zgz2/3BpYSvVNLqQM034lK3kQ0UoHj7kxmtf5Bkf2yWrjEGVmwyRUYDt1/vlfoBUE/KU7DDPHWJT8r5Li0ALA==", "requires": { "tslib": "^2.0.0" } }, "@ngrx/router-store": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-13.0.2.tgz", - "integrity": "sha512-XrzHjrD2hhnXdGeIpQm/msN77hoAL/QD3ZYGFJs3yT5d3x/T3L1JFlra7wC0OlKJkOs6zAh5Kz9cJ94YO/TEtQ==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-13.2.0.tgz", + "integrity": "sha512-ojHxsGsHljYWiqv/OUQHFLb4ZNvmsBlF+CHGZ7vCwLYJ2d9TB2y5nOezfaZ1L46MLUp+uM3FD3fpnIFwXYsTNw==", "requires": { "tslib": "^2.0.0" } }, "@ngrx/schematics": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/schematics/-/schematics-13.0.2.tgz", - "integrity": "sha512-84LwEv7MBTX49e1wjuXKgemxfmQUBdvfUKfPq7AmrTW99EtHHAuLYc+pL9XrbgKvkvVyVmDt+g6d3iw/80TZ1w==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/schematics/-/schematics-13.2.0.tgz", + "integrity": "sha512-MpSJFWF+Pppwv2C+0NNw8RPZmgbhaiEMCiF8VUkAJkXki9CV9Da6cTOa+v1nIrrfUpm/L+jD8DL9CPJTPccRZg==", "dev": true }, "@ngrx/store": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-13.0.2.tgz", - "integrity": "sha512-F7tsc3oCvKh+62MKiXTrvSeaxR41u4p8bch3BLjz12F37376rMuBnXf+V1thsPTZ6RB6aycAi821EQYVXFCXZg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-13.2.0.tgz", + "integrity": "sha512-3wlGMkfe0EXsiS6E6W0wCksuGapa5Z6JVFvKQMHFpXZ3XeixXKlULnemlcdMT7Yrnry+CGOtRHqkmKxLoQzhTw==", "requires": { "tslib": "^2.0.0" } }, "@ngrx/store-devtools": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-13.0.2.tgz", - "integrity": "sha512-fcQ5A7cv9PONFvqlpFPXHswWjEflJvqrNt6wmywlxMtJDjkgzCHpvRiJqup/FiTosblRERoeZXN0oHW3Er3+rw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-13.2.0.tgz", + "integrity": "sha512-k1NifkR/4OjbjAxauVZODCsgs2owMJXvEX2XoTWth7zscbHE8L3pLd0k1ox5pMPUEqWIptWTaJDzYqnQSoJaaw==", "dev": true, "requires": { "tslib": "^2.0.0" } }, "@ngtools/webpack": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.3.tgz", - "integrity": "sha512-wooUZiV92QyoeFxkhqIwH/cfiAAAn+l8fEEuaaEIfJtpjpbShvvlboEVsqb28soeGiFJfLcmsZM3mUFgsG4QBQ==", - "dev": true, - "requires": {} + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.5.tgz", + "integrity": "sha512-OaMZR0rO0ljBHamLwzddfZX03ijtpheUpjH5dNzMNyNrrpKgS4/3jTQ1wvs2j3zzKfKjOS12WG0905QFJYWG6g==", + "dev": true }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -19422,8 +18455,7 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/rxjs-for-await/-/rxjs-for-await-0.0.2.tgz", "integrity": "sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw==", - "dev": true, - "requires": {} + "dev": true }, "semver": { "version": "7.3.4", @@ -19567,8 +18599,7 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/rxjs-for-await/-/rxjs-for-await-0.0.2.tgz", "integrity": "sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw==", - "dev": true, - "requires": {} + "dev": true }, "semver": { "version": "7.3.4", @@ -19591,13 +18622,13 @@ } }, "@schematics/angular": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.3.tgz", - "integrity": "sha512-jloooGC7eco9AKxlIMMqFRptJYzZ0jNRBStWOp2dCISg6rmOKqpxbsHLtYFQIT1PnlomSxtKDAgYGQMDi9zhXw==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.5.tgz", + "integrity": "sha512-1Ovx0cq72ZaNCyTyRD8ebIwUzpqhEH9ypWF05bfBLq3J0LlZgewIMhPJSxKmwRC3NQB5DZIYEvD0uhzBIuHCCA==", "dev": true, "requires": { - "@angular-devkit/core": "13.2.3", - "@angular-devkit/schematics": "13.2.3", + "@angular-devkit/core": "13.3.5", + "@angular-devkit/schematics": "13.3.5", "jsonc-parser": "3.0.0" } }, @@ -19678,9 +18709,9 @@ } }, "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, "@types/express": { @@ -19707,9 +18738,9 @@ } }, "@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, "requires": { "@types/node": "*" @@ -19728,9 +18759,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.178", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz", - "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==", + "version": "4.14.182", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", + "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==", "dev": true }, "@types/mime": { @@ -19742,7 +18773,8 @@ "@types/node": { "version": "16.11.24", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.24.tgz", - "integrity": "sha512-Ezv33Rl4mIi6YdSHfIRNBd4Q9kUe5okiaw/ikvJiJDmuQZNW5kfdg7+oQPF8NO6sTcr3woIpj3jANzTXdvEZXA==" + "integrity": "sha512-Ezv33Rl4mIi6YdSHfIRNBd4Q9kUe5okiaw/ikvJiJDmuQZNW5kfdg7+oQPF8NO6sTcr3woIpj3jANzTXdvEZXA==", + "dev": true }, "@types/parse-json": { "version": "4.0.0", @@ -19772,9 +18804,9 @@ "dev": true }, "@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, "@types/serve-index": { @@ -19812,9 +18844,10 @@ "dev": true }, "@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, "requires": { "@types/node": "*" } @@ -19825,110 +18858,135 @@ "integrity": "sha512-Nqo3HMPFPcNyZ7HNFZJjpH+N4yXqpxBItG+41e7nL9zednovMRZMXWj36CctSznbBcbj6ucvkJDo5iZ8SKqLIw==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz", - "integrity": "sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz", + "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.9.0", - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/type-utils": "5.9.0", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/type-utils": "5.23.0", + "@typescript-eslint/utils": "5.23.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", "regexpp": "^3.2.0", "semver": "^7.3.5", "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.17.0.tgz", + "integrity": "sha512-U4sM5z0/ymSYqQT6I7lz8l0ZZ9zrya5VIwrwAP5WOJVabVtVsIpTMxPQe+D3qLyePT+VlETUTO2nA1+PufPx9Q==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.17.0" }, "dependencies": { - "@typescript-eslint/experimental-utils": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz", - "integrity": "sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==", + "@typescript-eslint/scope-manager": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.17.0.tgz", + "integrity": "sha512-062iCYQF/doQ9T2WWfJohQKKN1zmmXVfAcS3xaiialiw8ZUGy05Em6QVNYJGO34/sU1a7a+90U3dUNfqUDHr3w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/visitor-keys": "5.17.0" + } + }, + "@typescript-eslint/types": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.17.0.tgz", + "integrity": "sha512-AgQ4rWzmCxOZLioFEjlzOI3Ch8giDWx8aUDxyNw9iOeCvD3GEYAB7dxWGQy4T/rPVe8iPmu73jPHuaSqcjKvxw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.17.0.tgz", + "integrity": "sha512-X1gtjEcmM7Je+qJRhq7ZAAaNXYhTgqMkR10euC4Si6PIjb+kwEQHSxGazXUQXFyqfEXdkGf6JijUu5R0uceQzg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/visitor-keys": "5.17.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.17.0.tgz", + "integrity": "sha512-DVvndq1QoxQH+hFv+MUQHrrWZ7gQ5KcJzyjhzcqB1Y2Xes1UQQkTRPUfRpqhS8mhTWsSb2+iyvDW1Lef5DD7vA==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/typescript-estree": "5.9.0", + "@typescript-eslint/scope-manager": "5.17.0", + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/typescript-estree": "5.17.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.17.0.tgz", + "integrity": "sha512-6K/zlc4OfCagUu7Am/BD5k8PSWQOgh34Nrv9Rxe2tBzlJ7uOeJ/h7ugCGDCeEZHT6k2CJBhbk9IsbkPI0uvUkA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.17.0", + "eslint-visitor-keys": "^3.0.0" + } } } }, - "@typescript-eslint/experimental-utils": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.11.0.tgz", - "integrity": "sha512-EPvC/bU2n1LKtzKWP1AjGWkp7r8tJ8giVlZHIODo6q7SAd6J+/9vjtEKHK2G/Qp+D2IGPsQge+oadDR3CZcFtQ==", - "dev": true, - "requires": { - "@typescript-eslint/utils": "5.11.0" - } - }, "@typescript-eslint/parser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.0.tgz", - "integrity": "sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz", + "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/typescript-estree": "5.9.0", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz", - "integrity": "sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", + "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/visitor-keys": "5.9.0" + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0" } }, "@typescript-eslint/type-utils": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz", - "integrity": "sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz", + "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.9.0", + "@typescript-eslint/utils": "5.23.0", "debug": "^4.3.2", "tsutils": "^3.21.0" - }, - "dependencies": { - "@typescript-eslint/experimental-utils": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz", - "integrity": "sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/typescript-estree": "5.9.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - } } }, "@typescript-eslint/types": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz", - "integrity": "sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", + "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz", - "integrity": "sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", + "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/visitor-keys": "5.9.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -19937,69 +18995,26 @@ } }, "@typescript-eslint/utils": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.11.0.tgz", - "integrity": "sha512-g2I480tFE1iYRDyMhxPAtLQ9HAn0jjBtipgTCZmd9I9s11OV8CTsG+YfFciuNDcHqm4csbAgC2aVZCHzLxMSUw==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", + "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.11.0", - "@typescript-eslint/types": "5.11.0", - "@typescript-eslint/typescript-estree": "5.11.0", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.11.0.tgz", - "integrity": "sha512-z+K4LlahDFVMww20t/0zcA7gq/NgOawaLuxgqGRVKS0PiZlCTIUtX0EJbC0BK1JtR4CelmkPK67zuCgpdlF4EA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.11.0", - "@typescript-eslint/visitor-keys": "5.11.0" - } - }, - "@typescript-eslint/types": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.11.0.tgz", - "integrity": "sha512-cxgBFGSRCoBEhvSVLkKw39+kMzUKHlJGVwwMbPcTZX3qEhuXhrjwaZXWMxVfxDgyMm+b5Q5b29Llo2yow8Y7xQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.11.0.tgz", - "integrity": "sha512-yVH9hKIv3ZN3lw8m/Jy5I4oXO4ZBMqijcXCdA4mY8ull6TPTAoQnKKrcZ0HDXg7Bsl0Unwwx7jcXMuNZc0m4lg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.11.0", - "@typescript-eslint/visitor-keys": "5.11.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.11.0.tgz", - "integrity": "sha512-E8w/vJReMGuloGxJDkpPlGwhxocxOpSVgSvjiLO5IxZPmxZF30weOeJYyPSEACwM+X4NziYS9q+WkN/2DHYQwA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.11.0", - "eslint-visitor-keys": "^3.0.0" - } - } } }, "@typescript-eslint/visitor-keys": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz", - "integrity": "sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", + "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/types": "5.23.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -20190,29 +19205,27 @@ } }, "ace-builds": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.4.14.tgz", - "integrity": "sha512-NBOQlm9+7RBqRqZwimpgquaLeTJFayqb9UEPtTkpC3TkkwDnlsT/TwsCC0svjt9kEZ6G9mH5AEOHSz6Q/HrzQQ==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.5.0.tgz", + "integrity": "sha512-1BtEfIhFl/VDNRS9R1m9F8Kmeh2uJ98CxTeBE0kBjJpv5S5N2buTVWtc1BGXL9AromN7ekBjaEBaUl+ZPn4ciA==" }, "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true }, "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==", - "dev": true, - "requires": {} + "dev": true }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "adjust-sourcemap-loader": { "version": "4.0.0", @@ -20321,12 +19334,6 @@ "tslib": "^2.0.0" } }, - "ansi": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", - "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", - "peer": true - }, "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -20380,28 +19387,12 @@ "picomatch": "^2.0.4" } }, - "app-root-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", - "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", - "dev": true - }, "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 }, - "are-we-there-yet": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", - "integrity": "sha1-otKMkxAqpsyWJFomy5VN4G7FPww=", - "peer": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.0 || ^1.1.13" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -20465,12 +19456,6 @@ "es-abstract": "^1.19.0" } }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", - "dev": true - }, "async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -20503,31 +19488,6 @@ "postcss-value-parser": "^4.2.0" } }, - "aws-crt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/aws-crt/-/aws-crt-1.11.1.tgz", - "integrity": "sha512-cWlauv11KD6PNZL3tLj1aM5A+NF8wKT2L8gej1FgyAnN1dL4n1oEm3HwuxmPYk09TRIPgkvXG5aHW2qefiO+fA==", - "peer": true, - "requires": { - "@httptoolkit/websocket-stream": "^6.0.0", - "axios": "^0.24.0", - "cmake-js": "6.3.0", - "crypto-js": "^4.0.0", - "fastestsmallesttextencoderdecoder": "^1.0.22", - "mqtt": "^4.3.4", - "tar": "^6.1.11", - "ws": "^7.5.5" - } - }, - "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", - "peer": true, - "requires": { - "follow-redirects": "^1.14.4" - } - }, "axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -20631,7 +19591,8 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "base-64": { "version": "0.1.0", @@ -20641,7 +19602,8 @@ "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true }, "batch": { "version": "0.6.1", @@ -20649,28 +19611,12 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "peer": true - }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "peer": true, - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -20681,52 +19627,37 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } } }, - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", - "peer": true - }, "body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dev": true, "requires": { - "bytes": "3.1.1", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { "bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, "debug": { @@ -20738,6 +19669,12 @@ "ms": "2.0.0" } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -20769,8 +19706,7 @@ "bootstrap": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz", - "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==", - "requires": {} + "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==" }, "bowser": { "version": "2.11.0", @@ -20781,6 +19717,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -20806,15 +19743,15 @@ } }, "browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.3", "picocolors": "^1.0.0" } }, @@ -20822,6 +19759,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -20830,7 +19768,8 @@ "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==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "buffer-indexof": { "version": "1.1.1", @@ -20838,31 +19777,6 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, - "buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "peer": true - }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "peer": true - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "peer": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true, - "peer": true - }, "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -20924,20 +19838,11 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001312", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", - "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", + "version": "1.0.30001341", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", + "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", "dev": true }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "peer": true, - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -20974,7 +19879,8 @@ "chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true }, "chrome-trace-event": { "version": "1.0.3", @@ -20986,8 +19892,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "requires": {} + "dev": true }, "clean-stack": { "version": "2.2.0", @@ -21044,309 +19949,6 @@ "shallow-clone": "^3.0.0" } }, - "cmake-js": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-6.3.0.tgz", - "integrity": "sha512-1uqTOmFt6BIqKlrX+39/aewU/JVhyZWDqwAL+6psToUwxj3yWPJiwxiZFmV0XdcoWmqGs7peZTxTbJtAcH8hxw==", - "peer": true, - "requires": { - "axios": "^0.21.1", - "debug": "^4", - "fs-extra": "^5.0.0", - "is-iojs": "^1.0.1", - "lodash": "^4", - "memory-stream": "0", - "npmlog": "^1.2.0", - "rc": "^1.2.7", - "semver": "^5.0.3", - "splitargs": "0", - "tar": "^4", - "unzipper": "^0.8.13", - "url-join": "0", - "which": "^1.0.9", - "yargs": "^3.6.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "peer": true - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "peer": true, - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "peer": true - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "peer": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "peer": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "peer": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "peer": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "peer": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "peer": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "peer": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "peer": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "peer": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "peer": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "peer": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "peer": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "peer": true, - "requires": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "peer": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "peer": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "peer": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "peer": true - }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "peer": true, - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - } - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "peer": true - }, - "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==", - "dev": true, - "requires": { - "@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" - }, - "dependencies": { - "@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==", - "dev": true, - "requires": {} - }, - "@angular/core": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", - "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", - "dev": true, - "requires": {} - }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, - "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==", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "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==", - "dev": true - } - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -21385,21 +19987,11 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "comment-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.0.tgz", - "integrity": "sha512-hRpmWIKgzd81vn0ydoWoyPoALEOnF4wt8yKD35Ib1D6XC2siLiYaiqfGkYrunuKdsXGwpBpHU3+9r+RVw2NZfA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true }, - "commist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz", - "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", - "peer": true, - "requires": { - "leven": "^2.1.0", - "minimist": "^1.1.0" - } - }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -21456,32 +20048,8 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "peer": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "peer": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "connect-history-api-fallback": { "version": "1.6.0", @@ -21528,9 +20096,9 @@ } }, "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true }, "cookie-signature": { @@ -21644,7 +20212,8 @@ "core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true }, "cosmiconfig": { "version": "7.0.1", @@ -21752,12 +20321,6 @@ } } }, - "crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", - "peer": true - }, "css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", @@ -21815,8 +20378,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "requires": {} + "dev": true }, "css-select": { "version": "4.2.1", @@ -21831,31 +20393,12 @@ "nth-check": "^2.0.1" } }, - "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==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, "css-what": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true }, - "cssauron": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", - "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", - "dev": true, - "requires": { - "through": "X.X.X" - } - }, "cssdb": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.1.0.tgz", @@ -22172,26 +20715,15 @@ } } }, - "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==", - "dev": true - }, "debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, "requires": { "ms": "2.1.2" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "peer": true - }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -22212,12 +20744,6 @@ "regexp.prototype.flags": "^1.2.0" } }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "peer": true - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -22276,7 +20802,8 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true }, "depd": { "version": "1.1.2", @@ -22291,9 +20818,9 @@ "dev": true }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, "detect-node": { @@ -22392,27 +20919,6 @@ "domhandler": "^4.2.0" } }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "peer": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "peer": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -22429,9 +20935,9 @@ } }, "electron-to-chromium": { - "version": "1.4.68", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.68.tgz", - "integrity": "sha512-cId+QwWrV8R1UawO6b9BR1hnkJ4EJPCPAr4h315vliHUtVUJDk39Sg1PMNnaWKfj5x+93ssjeJ9LKL6r8LaMiA==", + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", "dev": true }, "emoji-regex": { @@ -22474,19 +20980,10 @@ } } }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "peer": true, - "requires": { - "once": "^1.4.0" - } - }, "enhanced-resolve": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz", - "integrity": "sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -22584,161 +21081,169 @@ } }, "esbuild": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.14.tgz", - "integrity": "sha512-aiK4ddv+uui0k52OqSHu4xxu+SzOim7Rlz4i25pMEiC8rlnGU0HJ9r+ZMfdWL5bzifg+nhnn7x4NSWTeehYblg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz", + "integrity": "sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==", "dev": true, "optional": true, "requires": { - "esbuild-android-arm64": "0.14.14", - "esbuild-darwin-64": "0.14.14", - "esbuild-darwin-arm64": "0.14.14", - "esbuild-freebsd-64": "0.14.14", - "esbuild-freebsd-arm64": "0.14.14", - "esbuild-linux-32": "0.14.14", - "esbuild-linux-64": "0.14.14", - "esbuild-linux-arm": "0.14.14", - "esbuild-linux-arm64": "0.14.14", - "esbuild-linux-mips64le": "0.14.14", - "esbuild-linux-ppc64le": "0.14.14", - "esbuild-linux-s390x": "0.14.14", - "esbuild-netbsd-64": "0.14.14", - "esbuild-openbsd-64": "0.14.14", - "esbuild-sunos-64": "0.14.14", - "esbuild-windows-32": "0.14.14", - "esbuild-windows-64": "0.14.14", - "esbuild-windows-arm64": "0.14.14" + "esbuild-android-arm64": "0.14.22", + "esbuild-darwin-64": "0.14.22", + "esbuild-darwin-arm64": "0.14.22", + "esbuild-freebsd-64": "0.14.22", + "esbuild-freebsd-arm64": "0.14.22", + "esbuild-linux-32": "0.14.22", + "esbuild-linux-64": "0.14.22", + "esbuild-linux-arm": "0.14.22", + "esbuild-linux-arm64": "0.14.22", + "esbuild-linux-mips64le": "0.14.22", + "esbuild-linux-ppc64le": "0.14.22", + "esbuild-linux-riscv64": "0.14.22", + "esbuild-linux-s390x": "0.14.22", + "esbuild-netbsd-64": "0.14.22", + "esbuild-openbsd-64": "0.14.22", + "esbuild-sunos-64": "0.14.22", + "esbuild-windows-32": "0.14.22", + "esbuild-windows-64": "0.14.22", + "esbuild-windows-arm64": "0.14.22" } }, "esbuild-android-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.14.tgz", - "integrity": "sha512-be/Uw6DdpQiPfula1J4bdmA+wtZ6T3BRCZsDMFB5X+k0Gp8TIh9UvmAcqvKNnbRAafSaXG3jPCeXxDKqnc8hFQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz", + "integrity": "sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.14.tgz", - "integrity": "sha512-BEexYmjWafcISK8cT6O98E3TfcLuZL8DKuubry6G54n2+bD4GkoRD6HYUOnCkfl2p7jodA+s4369IjSFSWjtHg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz", + "integrity": "sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.14.tgz", - "integrity": "sha512-tnBKm41pDOB1GtZ8q/w26gZlLLRzVmP8fdsduYjvM+yFD7E2DLG4KbPAqFMWm4Md9B+DitBglP57FY7AznxbTg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz", + "integrity": "sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.14.tgz", - "integrity": "sha512-Q9Rx6sgArOHalQtNwAaIzJ6dnQ8A+I7f/RsQsdkS3JrdzmnlFo8JEVofTmwVQLoIop7OKUqIVOGP4PoQcwfVMA==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz", + "integrity": "sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.14.tgz", - "integrity": "sha512-TJvq0OpLM7BkTczlyPIphcvnwrQwQDG1HqxzoYePWn26SMUAlt6wrLnEvxdbXAvNvDLVzG83kA+JimjK7aRNBA==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz", + "integrity": "sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.14.tgz", - "integrity": "sha512-h/CrK9Baimt5VRbu8gqibWV7e1P9l+mkanQgyOgv0Ng3jHT1NVFC9e6rb1zbDdaJVmuhWX5xVliUA5bDDCcJeg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz", + "integrity": "sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.14.tgz", - "integrity": "sha512-IC+wAiIg/egp5OhQp4W44D9PcBOH1b621iRn1OXmlLzij9a/6BGr9NMIL4CRwz4j2kp3WNZu5sT473tYdynOuQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz", + "integrity": "sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.14.tgz", - "integrity": "sha512-gxpOaHOPwp7zSmcKYsHrtxabScMqaTzfSQioAMUaB047YiMuDBzqVcKBG8OuESrYkGrL9DDljXr/mQNg7pbdaQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz", + "integrity": "sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.14.tgz", - "integrity": "sha512-6QVul3RI4M5/VxVIRF/I5F+7BaxzR3DfNGoqEVSCZqUbgzHExPn+LXr5ly1C7af2Kw4AHpo+wDqx8A4ziP9avw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz", + "integrity": "sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.14.tgz", - "integrity": "sha512-4Jl5/+xoINKbA4cesH3f4R+q0vltAztZ6Jm8YycS8lNhN1pgZJBDxWfI6HUMIAdkKlIpR1PIkA9aXQgZ8sxFAg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz", + "integrity": "sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.14.tgz", - "integrity": "sha512-BitW37GxeebKxqYNl4SVuSdnIJAzH830Lr6Mkq3pBHXtzQay0vK+IeOR/Ele1GtNVJ+/f8wYM53tcThkv5SC5w==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz", + "integrity": "sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz", + "integrity": "sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.14.tgz", - "integrity": "sha512-vLj6p76HOZG3wfuTr5MyO3qW5iu8YdhUNxuY+tx846rPo7GcKtYSPMusQjeVEfZlJpSYoR+yrNBBxq+qVF9zrw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz", + "integrity": "sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.14.tgz", - "integrity": "sha512-fn8looXPQhpVqUyCBWUuPjesH+yGIyfbIQrLKG05rr1Kgm3rZD/gaYrd3Wpmf5syVZx70pKZPvdHp8OTA+y7cQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz", + "integrity": "sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.14.tgz", - "integrity": "sha512-HdAnJ399pPff3SKbd8g+P4o5znseni5u5n5rJ6Z7ouqOdgbOwHe2ofZbMow17WMdNtz1IyOZk2Wo9Ve6/lZ4Rg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz", + "integrity": "sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.14.tgz", - "integrity": "sha512-bmDHa99ulsGnYlh/xjBEfxoGuC8CEG5OWvlgD+pF7bKKiVTbtxqVCvOGEZeoDXB+ja6AvHIbPxrEE32J+m5nqQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz", + "integrity": "sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==", "dev": true, "optional": true }, "esbuild-wasm": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.14.tgz", - "integrity": "sha512-qTjK4MWnYtQHCMGg2qDUqeFYXfVvYq5qJkQTIsOV4VZCknoYePVaDTG9ygEB9Ct0kc0DWs7IrS6Ja+GjY62Kzw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.22.tgz", + "integrity": "sha512-FOSAM29GN1fWusw0oLMv6JYhoheDIh5+atC72TkJKfIUMID6yISlicoQSd9gsNSFsNBvABvtE2jR4JB1j4FkFw==", "dev": true }, "esbuild-windows-32": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.14.tgz", - "integrity": "sha512-6tVooQcxJCNenPp5GHZBs/RLu31q4B+BuF4MEoRxswT+Eq2JGF0ZWDRQwNKB8QVIo3t6Svc5wNGez+CwKNQjBg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz", + "integrity": "sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.14.tgz", - "integrity": "sha512-kl3BdPXh0/RD/dad41dtzj2itMUR4C6nQbXQCyYHHo4zoUoeIXhpCrSl7BAW1nv5EFL8stT1V+TQVXGZca5A2A==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz", + "integrity": "sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.14.tgz", - "integrity": "sha512-dCm1wTOm6HIisLanmybvRKvaXZZo4yEVrHh1dY0v582GThXJOzuXGja1HIQgV09RpSHYRL3m4KoUBL00l6SWEg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz", + "integrity": "sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==", "dev": true, "optional": true }, @@ -22761,12 +21266,12 @@ "dev": true }, "eslint": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz", - "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", + "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.1.0", + "@eslint/eslintrc": "^1.2.3", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -22777,7 +21282,7 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", + "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -22793,7 +21298,7 @@ "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", @@ -23025,9 +21530,9 @@ } }, "eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -23035,14 +21540,14 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.8.0", + "is-core-module": "^2.8.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "dependencies": { "debug": { @@ -23072,26 +21577,43 @@ } }, "eslint-plugin-jsdoc": { - "version": "37.9.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.9.1.tgz", - "integrity": "sha512-ynIsYL+rOtIKWOttAYWCgOJawPwYKexcX3cuoYHwifvz4+uY+MZ2un5nMHBULigdSITnQ5/ZSHpO/O1nwv/uJA==", + "version": "39.2.9", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.2.9.tgz", + "integrity": "sha512-gaPYJT94rWlWyQcisQyyEJHtLaaJqN4baFlLCEr/LcXVibS9wzQTL2dskqk327ggwqQopR+Xecu2Lng1IJ9Ypw==", "dev": true, "requires": { - "@es-joy/jsdoccomment": "~0.19.0", - "comment-parser": "1.3.0", - "debug": "^4.3.3", + "@es-joy/jsdoccomment": "~0.29.0", + "comment-parser": "1.3.1", + "debug": "^4.3.4", "escape-string-regexp": "^4.0.0", "esquery": "^1.4.0", - "regextras": "^0.8.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "spdx-expression-parse": "^3.0.1" }, "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -23099,8 +21621,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", "integrity": "sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==", - "dev": true, - "requires": {} + "dev": true }, "eslint-scope": { "version": "5.1.1", @@ -23136,13 +21657,13 @@ "dev": true }, "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" } }, @@ -23240,38 +21761,39 @@ } }, "express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dev": true, "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.1", + "body-parser": "1.20.0", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.1", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "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.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.6", + "qs": "6.10.3", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -23292,6 +21814,12 @@ "ms": "2.0.0" } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -23358,18 +21886,6 @@ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz", "integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==" }, - "fastestsmallesttextencoderdecoder": { - "version": "1.0.22", - "resolved": "https://registry.npmjs.org/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz", - "integrity": "sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==", - "peer": true - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -23450,17 +21966,17 @@ } }, "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "dependencies": { @@ -23519,15 +22035,10 @@ "dev": true }, "follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" - }, - "font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=", - "peer": true + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", + "dev": true }, "forwarded": { "version": "0.2.0", @@ -23563,6 +22074,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, "requires": { "minipass": "^3.0.0" } @@ -23576,7 +22088,8 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "fsevents": { "version": "2.3.2", @@ -23585,38 +22098,6 @@ "dev": true, "optional": true }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "peer": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "peer": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "peer": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -23629,18 +22110,11 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "gauge": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", - "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", - "peer": true, - "requires": { - "ansi": "^0.3.0", - "has-unicode": "^2.0.0", - "lodash.pad": "^4.1.0", - "lodash.padend": "^4.1.0", - "lodash.padstart": "^4.1.0" - } + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true }, "gensync": { "version": "1.0.0-beta.2", @@ -23691,6 +22165,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -23738,7 +22213,8 @@ "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "dev": true }, "handle-thing": { "version": "2.0.1", @@ -23793,7 +22269,8 @@ "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true }, "hdr-histogram-js": { "version": "2.0.3", @@ -23812,29 +22289,6 @@ "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", "dev": true }, - "help-me": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz", - "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==", - "peer": true, - "requires": { - "glob": "^7.1.6", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "peer": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "hex-rgb": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-4.3.0.tgz", @@ -23864,12 +22318,35 @@ "obuf": "^1.0.0", "readable-stream": "^2.0.1", "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "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" + } + }, + "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==", + "dev": true + } } }, "html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "http-cache-semantics": { @@ -23885,22 +22362,30 @@ "dev": true }, "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + } } }, "http-parser-js": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", - "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", "dev": true }, "http-proxy": { @@ -23926,9 +22411,9 @@ } }, "http-proxy-middleware": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", - "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, "requires": { "@types/http-proxy": "^1.17.8", @@ -23975,13 +22460,13 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true }, "ignore": { "version": "5.2.0", @@ -24051,6 +22536,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -24059,7 +22545,8 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "ini": { "version": "2.0.0", @@ -24151,12 +22638,6 @@ "side-channel": "^1.0.4" } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "peer": true - }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -24270,12 +22751,6 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, - "is-iojs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz", - "integrity": "sha1-TBEDO11dlNbqs3dd7cm+fQCDJfE=", - "peer": true - }, "is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", @@ -24403,12 +22878,14 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isobject": { "version": "3.0.1", @@ -24416,13 +22893,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "peer": true, - "requires": {} - }, "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -24541,18 +23011,6 @@ } } }, - "jquery": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", - "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==", - "peer": true - }, - "js-sdsl": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-2.1.4.tgz", - "integrity": "sha512-/Ew+CJWHNddr7sjwgxaVeIORIH4AMVC9dy0hPf540ZGMVgS9d3ajwuVdyhDt6/QUvT8ATjR3yuYBKsS79F+H4A==", - "peer": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -24570,9 +23028,9 @@ } }, "jsdoc-type-pratt-parser": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.5.tgz", - "integrity": "sha512-2a6eRxSxp1BW040hFvaJxhsCMI9lT8QB8t14t+NY5tC5rckIR0U9cr2tjOeaFirmEOy6MHvmJnY7zTBHq431Lw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.0.1.tgz", + "integrity": "sha512-vqMCdAFVIiFhVgBYE/X8naf3L/7qiJsaYWTfUJZZZ124dR3OUz9HrmaMUGpYIYAN4VSuodf6gIZY0e8ktPw9cg==", "dev": true }, "jsesc": { @@ -24606,13 +23064,10 @@ "dev": true }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true }, "jsonc-parser": { "version": "3.0.0", @@ -24662,15 +23117,6 @@ "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "dev": true }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "peer": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, "less": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", @@ -24732,12 +23178,6 @@ "klona": "^2.0.4" } }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "peer": true - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -24749,9 +23189,9 @@ } }, "license-webpack-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.1.tgz", - "integrity": "sha512-SQum9mg3BgnY5BK+2KYl4W7pk9b26Q8tW2lTsO6tidD0/Ds9ksdXvp3ip2s9LqDjj5gtBMyWRfOPZptWj4PfCg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, "requires": { "webpack-sources": "^3.0.0" @@ -24763,12 +23203,6 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", - "peer": true - }, "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -24812,23 +23246,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "lodash.pad": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", - "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA=", - "peer": true - }, "lodash.padend": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=" }, - "lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=", - "peer": true - }, "lodash.trimstart": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz", @@ -24904,6 +23326,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "requires": { "yallist": "^4.0.0" } @@ -24978,41 +23401,6 @@ "fs-monkey": "1.0.3" } }, - "memory-stream": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", - "integrity": "sha1-6+jdHDuLw4wOeUHp3dWuvmtN6D8=", - "peer": true, - "requires": { - "readable-stream": "~1.0.26-2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "peer": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "peer": true - } - } - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -25104,22 +23492,25 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true }, "minipass": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, "requires": { "yallist": "^4.0.0" } @@ -25186,6 +23577,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -25194,73 +23586,14 @@ "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "mqtt": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.6.tgz", - "integrity": "sha512-1dgQbkbh1Bba9iAGDNIrhSZ4nLDjbhmNHjOEvsmKI1Bb+2orj0gHwjqUKJ5CKUMKBYbkQYRM1fy+N1/2iZOj5w==", - "peer": true, - "requires": { - "commist": "^1.0.0", - "concat-stream": "^2.0.0", - "debug": "^4.1.1", - "duplexify": "^4.1.1", - "help-me": "^3.0.0", - "inherits": "^2.0.3", - "lru-cache": "^6.0.0", - "minimist": "^1.2.5", - "mqtt-packet": "^6.8.0", - "number-allocator": "^1.0.9", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "reinterval": "^1.1.0", - "rfdc": "^1.3.0", - "split2": "^3.1.0", - "ws": "^7.5.5", - "xtend": "^4.0.2" - }, - "dependencies": { - "duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "peer": true, - "requires": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "peer": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "mqtt-packet": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", - "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", - "peer": true, - "requires": { - "bl": "^4.0.2", - "debug": "^4.1.1", - "process-nextick-args": "^2.0.1" - } + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "multicast-dns": { "version": "6.2.3", @@ -25333,18 +23666,18 @@ "dev": true }, "ngx-clipboard": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/ngx-clipboard/-/ngx-clipboard-15.0.1.tgz", - "integrity": "sha512-Bx0MvAvcYmLL/6TxScltzvYlRKu7JOVnrstzI+r4yXMTWP/0nUiEZ83UzjYbjf8FRlSuXDWeEYGhw5SNh/swSg==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/ngx-clipboard/-/ngx-clipboard-15.1.0.tgz", + "integrity": "sha512-dUJl1cNtdkCqL953oAhP7wmUPFrqW2aDg5OPhwPU9R3cLEdQgU2NbsHEUz4zaPyEopTXu8SR37onVm1Ep8qOHg==", "requires": { "ngx-window-token": ">=6.0.0", "tslib": "^2.0.0" } }, "ngx-color-picker": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/ngx-color-picker/-/ngx-color-picker-12.0.0.tgz", - "integrity": "sha512-SY5KoZka/uq2MNhUAKfJXQjjS2TFvKDJHbsCxfnjKjS/VHx8VVeTJpnt5wuuewzRzLxfOm5y2Fw8/HTPEPtRkA==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/ngx-color-picker/-/ngx-color-picker-12.0.1.tgz", + "integrity": "sha512-ODLePeqN7dnhTmjHGJrxFHaEXb3o2vH4n8qUzkUAIFmz5vOOxCCEYY4/bg+5VK62PonaK7j0fFf8AjnwrqhFHQ==", "requires": { "tslib": "^2.3.0" } @@ -25384,9 +23717,9 @@ "optional": true }, "node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, "node-gyp": { @@ -25452,17 +23785,6 @@ "set-blocking": "^2.0.0" } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -25482,9 +23804,9 @@ "optional": true }, "node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", "dev": true }, "nopt": { @@ -25639,17 +23961,6 @@ "path-key": "^3.0.0" } }, - "npmlog": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", - "integrity": "sha1-KOe+YZYJtT960d0wChDWTXFiaLY=", - "peer": true, - "requires": { - "ansi": "~0.3.0", - "are-we-there-yet": "~1.0.0", - "gauge": "~1.2.0" - } - }, "nth-check": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", @@ -25659,22 +23970,6 @@ "boolbase": "^1.0.0" } }, - "number-allocator": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.10.tgz", - "integrity": "sha512-K4AvNGKo9lP6HqsZyfSr9KDaqnwFzW203inhQEOwFrmFaYevpdX4VNwdOLk197aHujzbT//z6pCBrCOUYSM5iw==", - "peer": true, - "requires": { - "debug": "^4.3.1", - "js-sdsl": "^2.1.2" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "peer": true - }, "nx": { "version": "13.1.3", "resolved": "https://registry.npmjs.org/nx/-/nx-13.1.3.tgz", @@ -25685,9 +23980,9 @@ } }, "object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" }, "object-inspect": { "version": "1.12.0", @@ -25741,9 +24036,9 @@ "dev": true }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "requires": { "ee-first": "1.1.1" @@ -25759,6 +24054,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -25865,15 +24161,6 @@ } } }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "peer": true, - "requires": { - "lcid": "^1.0.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -25908,12 +24195,12 @@ } }, "p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, "requires": { - "@types/retry": "^0.12.0", + "@types/retry": "0.12.0", "retry": "^0.13.1" }, "dependencies": { @@ -26064,7 +24351,8 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "3.1.1", @@ -26129,12 +24417,6 @@ "find-up": "^4.0.0" } }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "peer": true - }, "portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -26165,12 +24447,12 @@ } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } } } @@ -26226,8 +24508,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==", - "dev": true, - "requires": {} + "dev": true }, "postcss-custom-properties": { "version": "12.1.4", @@ -26296,15 +24577,13 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true, - "requires": {} + "dev": true }, "postcss-gap-properties": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-image-set-function": { "version": "4.0.6", @@ -26330,8 +24609,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-lab-function": { "version": "4.1.0", @@ -26358,22 +24636,19 @@ "version": "5.0.4", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true, - "requires": {} + "dev": true }, "postcss-media-minmax": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true, - "requires": {} + "dev": true }, "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==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -26417,15 +24692,13 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-page-break": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-place": { "version": "7.0.4", @@ -26490,8 +24763,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-selector-not": { "version": "5.0.0", @@ -26536,9 +24808,9 @@ "integrity": "sha512-heygWF0X5HFI1otlZE62pp6ye7sZ8om78J9au2BRkg8O7Y8AHTZ9qKMRzchZUHLe8zUAvdi6hZzzm9XxgwIExw==" }, "primeng": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-13.1.1.tgz", - "integrity": "sha512-gqSuKbPq8x8ITpv2r7Ne96S3htt0aa0ZxJgHPyj/MNDNdfmrXk1Phm1EzkAbIy66t0RdJjc4RUWqLfAgsKEAYw==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-13.4.0.tgz", + "integrity": "sha512-19+7fZBi2R4AZjxSmONiF2Jz1UiQL/vcevE7xU3D77aVEB5QwDxLTeoImBQVG41YdQVG0za8dk+0TmV0Ssol0g==", "requires": { "tslib": "^2.3.0" } @@ -26551,7 +24823,8 @@ "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==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "promise-inflight": { "version": "1.0.1", @@ -26594,16 +24867,6 @@ "dev": true, "optional": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "peer": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -26611,10 +24874,13 @@ "dev": true }, "qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "dev": true + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } }, "querystring": { "version": "0.2.0", @@ -26643,51 +24909,25 @@ "dev": true }, "raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "requires": { - "bytes": "3.1.1", - "http-errors": "1.8.1", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, "dependencies": { "bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true } } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "peer": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "peer": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "peer": true - } - } - }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -26708,24 +24948,14 @@ } }, "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, "requires": { - "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" - }, - "dependencies": { - "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==" - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "readdirp": { @@ -26780,13 +25010,14 @@ "dev": true }, "regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" } }, "regexpp": { @@ -26809,12 +25040,6 @@ "unicode-match-property-value-ecmascript": "^2.0.0" } }, - "regextras": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz", - "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==", - "dev": true - }, "regjsgen": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", @@ -26838,12 +25063,6 @@ } } }, - "reinterval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", - "integrity": "sha1-M2Hs+jymwYKDOA3Qu5VG85D17Oc=", - "peer": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -26933,12 +25152,6 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "peer": true - }, "rgb-hex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-3.0.0.tgz", @@ -26984,7 +25197,8 @@ "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==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -26992,9 +25206,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz", - "integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==", + "version": "1.49.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", + "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -27045,8 +25259,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -27063,12 +25276,12 @@ "dev": true }, "selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "requires": { - "node-forge": "^1.2.0" + "node-forge": "^1" } }, "semver": { @@ -27080,42 +25293,25 @@ "lru-cache": "^6.0.0" } }, - "semver-dsl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", - "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", - "dev": true, - "requires": { - "semver": "^5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "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": "1.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -27135,6 +25331,12 @@ } } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -27205,19 +25407,25 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true } } }, "serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.18.0" } }, "set-blocking": { @@ -27226,12 +25434,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "peer": true - }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -27438,55 +25640,8 @@ "obuf": "^1.1.2", "readable-stream": "^3.0.6", "wbuf": "^1.7.3" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } } }, - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "peer": true, - "requires": { - "readable-stream": "^3.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "peer": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "splitargs": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz", - "integrity": "sha1-/p965lc3GzOxDLgNoUPPgknPazs=", - "peer": true - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true - }, "ssri": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", @@ -27497,21 +25652,16 @@ } }, "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "peer": true - }, "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==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" }, @@ -27519,7 +25669,8 @@ "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==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -27658,6 +25809,7 @@ "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -27668,11 +25820,12 @@ } }, "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.11.0.tgz", + "integrity": "sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==", "dev": true, "requires": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.20" @@ -27707,8 +25860,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -27794,12 +25946,6 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "peer": true - }, "tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -27807,14 +25953,14 @@ "dev": true }, "tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, "dependencies": { @@ -27830,74 +25976,9 @@ } }, "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "dev": true, - "peer": true, - "requires": { - "@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" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "peer": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "peer": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "peer": true - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "peer": true, - "requires": { - "tslib": "^1.8.1" - } - } - } + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "tsutils": { "version": "3.21.0", @@ -27947,16 +26028,10 @@ "integrity": "sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g==", "dev": true }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "peer": true - }, "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", "dev": true }, "unbox-primitive": { @@ -28029,52 +26104,6 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, - "unzipper": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", - "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==", - "peer": true, - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "~1.0.10", - "listenercount": "~1.0.1", - "readable-stream": "~2.1.5", - "setimmediate": "~1.0.4" - }, - "dependencies": { - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "peer": true - }, - "readable-stream": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", - "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", - "peer": true, - "requires": { - "buffer-shims": "^1.0.0", - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "peer": true - } - } - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -28100,16 +26129,11 @@ } } }, - "url-join": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", - "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=", - "peer": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "utils-merge": { "version": "1.0.1", @@ -28172,13 +26196,13 @@ } }, "webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", "dev": true, "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", @@ -28186,7 +26210,7 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -28219,8 +26243,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -28325,13 +26348,6 @@ "requires": { "ansi-regex": "^6.0.1" } - }, - "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true, - "requires": {} } } }, @@ -28377,15 +26393,6 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, - "requires": { - "isexe": "^2.0.0" - } - }, "which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", @@ -28414,12 +26421,6 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "peer": true - }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -28466,26 +26467,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "peer": true, - "requires": {} + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "dev": true }, "xhr2": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==" }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "peer": true - }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -28495,7 +26490,8 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "yaml": { "version": "1.10.2", @@ -28504,9 +26500,9 @@ "dev": true }, "yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.0.tgz", + "integrity": "sha512-3sLxVhbAB5OC8qvVRebCLWuouhwh/rswsiDYx3WGxajUk/l4G20SKfrKKFeNIHboUFt2JFgv2yfn+5cgOr/t5A==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -28519,9 +26515,9 @@ }, "dependencies": { "yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true } } @@ -28533,11 +26529,11 @@ "dev": true }, "zone.js": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", - "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.5.tgz", + "integrity": "sha512-D1/7VxEuQ7xk6z/kAROe4SUbd9CzxY4zOwVGnGHerd/SgLIVU5f4esDzQUsOCeArn933BZfWMKydH7l7dPEp0g==", "requires": { - "tslib": "^2.0.0" + "tslib": "^2.3.0" } } } diff --git a/package.json b/package.json index d07b5312..e2a64342 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ClearML-webapp", - "version": "1.5.0", + "version": "1.6.0", "license": "", "scripts": { "ng": "ng", @@ -20,30 +20,30 @@ }, "private": true, "dependencies": { - "@angular/animations": "^13.2.2", - "@angular/cdk": "^13.2.2", - "@angular/common": "^13.2.2", - "@angular/compiler": "^13.2.2", - "@angular/core": "^13.2.2", - "@angular/forms": "^13.2.2", - "@angular/material": "^13.2.2", - "@angular/platform-browser": "^13.2.2", - "@angular/platform-browser-dynamic": "^13.2.2", - "@angular/platform-server": "^13.2.2", - "@angular/router": "^13.2.2", - "@angular/service-worker": "^13.2.2", - "@angular/youtube-player": "^13.2.2", - "@aws-sdk/client-s3": "^3.53.1", - "@aws-sdk/s3-request-presigner": "^3.53.1", - "@ngneat/dag": "^1.1.0", - "@ngrx/effects": "^13.0.2", - "@ngrx/entity": "^13.0.2", - "@ngrx/router-store": "^13.0.2", - "@ngrx/store": "^13.0.2", - "ace-builds": "^1.4.14", + "@angular/animations": "^13.3.7", + "@angular/cdk": "^13.3.7", + "@angular/common": "^13.3.7", + "@angular/compiler": "^13.3.7", + "@angular/core": "^13.3.7", + "@angular/forms": "^13.3.7", + "@angular/material": "^13.3.7", + "@angular/platform-browser": "^13.3.7", + "@angular/platform-browser-dynamic": "^13.3.7", + "@angular/platform-server": "^13.3.7", + "@angular/router": "^13.3.7", + "@angular/service-worker": "^13.3.7", + "@angular/youtube-player": "^13.3.7", + "@aws-sdk/client-s3": "^3.88.0", + "@aws-sdk/s3-request-presigner": "^3.88.0", + "@ngneat/dag": "^2.0.0", + "@ngrx/effects": "^13.2.0", + "@ngrx/entity": "^13.2.0", + "@ngrx/router-store": "^13.2.0", + "@ngrx/store": "^13.2.0", + "ace-builds": "^1.5.0", "angular-google-tag-manager": "^1.5.0", "angular-resizable-element": "^5.0.0", - "angular-split": "^13.1.0", + "angular-split": "^13.2.0", "ansi-to-html": "^0.7.2", "bootstrap": "^4.6.1", "britecharts": "^2.18.0", @@ -56,49 +56,48 @@ "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "lucene": "^2.1.1", - "ngx-clipboard": "^15.0.1", - "ngx-color-picker": "^12.0.0", + "ngx-clipboard": "^15.1.0", + "ngx-color-picker": "^12.0.1", "ngx-markdown-editor": "^4.0.0", "ngx-window-token": "^6.0.0", - "object-hash": "^2.2.0", + "object-hash": "^3.0.0", "primeicons": "^5.0.0", - "primeng": "^13.0.4", + "primeng": "^13.4.0", "process": "^0.11.10", "rxjs": "^7.5.5", "string-to-color": "^2.2.2", - "tslib": "^2.3.1", + "tslib": "^2.4.0", "url": "^0.11.0", "uuid": "^8.3.2", - "zone.js": "~0.11.4" + "zone.js": "~0.11.5" }, "devDependencies": { - "@angular-devkit/build-angular": "^13.2.3", - "@angular-devkit/core": "^13.2.3", - "@angular-devkit/schematics": "^13.2.3", - "@angular-devkit/schematics-cli": "^13.2.3", - "@angular-eslint/builder": "^13.1.0", - "@angular-eslint/eslint-plugin": "^13.1.0", - "@angular-eslint/eslint-plugin-template": "^13.1.0", - "@angular-eslint/schematics": "13.1.0", - "@angular-eslint/template-parser": "^13.1.0", - "@angular/cli": "^13.2.3", - "@angular/compiler-cli": "^13.2.2", - "@angular/language-service": "^13.2.2", - "@fortawesome/fontawesome-free": "^6.0.0", - "@ngrx/schematics": "^13.0.2", - "@ngrx/store-devtools": "^13.0.2", + "@angular-devkit/build-angular": "^13.3.5", + "@angular-devkit/core": "^13.3.5", + "@angular-devkit/schematics": "^13.3.5", + "@angular-devkit/schematics-cli": "^13.3.5", + "@angular-eslint/builder": "^13.2.1", + "@angular-eslint/eslint-plugin": "^13.2.1", + "@angular-eslint/eslint-plugin-template": "^13.2.1", + "@angular-eslint/schematics": "13.2.1", + "@angular-eslint/template-parser": "^13.2.1", + "@angular/cli": "^13.3.5", + "@angular/compiler-cli": "^13.3.7", + "@angular/language-service": "^13.3.7", + "@fortawesome/fontawesome-free": "^6.1.1", + "@ngrx/schematics": "^13.2.0", + "@ngrx/store-devtools": "^13.2.0", "@types/d3-selection": "^3.0.2", - "@types/lodash": "^4.14.178", + "@types/lodash": "^4.14.182", "@types/node": "^16.11.19", "@types/plotly.js": "^1.54.20", "@types/uuid": "^8.3.4", - "@typescript-eslint/eslint-plugin": "5.9.0", - "@typescript-eslint/parser": "5.9.0", - "codelyzer": "^6.0.2", - "eslint": "^8.9.0", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-jsdoc": "37.9.1", + "@typescript-eslint/eslint-plugin": "5.23.0", + "@typescript-eslint/parser": "5.23.0", + "eslint": "^8.15.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsdoc": "39.2.9", "eslint-plugin-prefer-arrow": "1.2.3", - "typescript": "^4.5.5" + "typescript": "~4.6.4" } } diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index 08ec6761..c8f90c90 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -3,6 +3,7 @@ import {Routes} from '@angular/router'; import {AdminComponent} from '@common/settings/admin/admin.component'; */ import {ProjectRedirectGuardGuard} from '@common/shared/guards/project-redirect.guard'; +import {EntityTypeEnum} from '~/shared/constants/non-common-consts'; export const routes: Routes = [ @@ -42,7 +43,7 @@ export const routes: Routes = [ { path: 'compare-experiments', loadChildren: () => import('./webapp-common/experiments-compare/experiments-compare.module').then(m => m.ExperimentsCompareModule), - data: {search: false} + data: {entityType: EntityTypeEnum.experiment}, }, ] }, @@ -68,12 +69,18 @@ export const routes: Routes = [ }, { path: 'compare-experiments', + data: {entityType: EntityTypeEnum.controller}, loadChildren: () => import('./webapp-common/experiments-compare/experiments-compare.module').then(m => m.ExperimentsCompareModule) }, ] }, ] }, + { + path: 'datasets', + data: {search: true}, + loadChildren: () => import('./features/datasets/datasets.module').then(m => m.DatasetsModule) + }, {path: 'workers-and-queues', loadChildren: () => import('./features/workers-and-queues/workers-and-queues.module').then(m => m.WorkersAndQueuesModule)}, {path: '404', loadChildren: () => import('./features/not-found/not-found.module').then(m => m.NotFoundModule)}, {path: '**', loadChildren: () => import('./features/not-found/not-found.module').then(m => m.NotFoundModule)}, diff --git a/src/app/business-logic/api-services/events.service.ts b/src/app/business-logic/api-services/events.service.ts index 2b7ccb21..ab3c4f8d 100644 --- a/src/app/business-logic/api-services/events.service.ts +++ b/src/app/business-logic/api-services/events.service.ts @@ -59,6 +59,11 @@ import { BASE_PATH, COLLECTION_FORMATS } from '../variables' import { Configuration } from '../configuration'; import {EventsScalarMetricsIterRawRequest} from "~/business-logic/model/events/eventsScalarMetricsIterRawRequest"; import {EventsScalarMetricsIterRawResponse} from "~/business-logic/model/events/eventsScalarMetricsIterRawResponse"; +import {EventsNextPlotSampleRequest} from '~/business-logic/model/events/eventsNextPlotSampleRequest'; +import {PlotSampleResponse} from '~/business-logic/model/events/plotSampleResponse'; +import {EventsGetPlotSampleRequest} from '~/business-logic/model/events/eventsGetPlotSampleRequest'; +import {EventsGetTaskSingleValueMetricsRequest} from '~/business-logic/model/events/eventsGetTaskSingleValueMetricsRequest'; +import {EventsGetTaskSingleValueMetricsResponse} from '~/business-logic/model/events/eventsGetTaskSingleValueMetricsResponse'; @Injectable() @@ -453,7 +458,97 @@ export class ApiEventsService { ); } - /** + /** + * + * Get the plot for the next variant for the same iteration or for the next iteration + * @param request request body + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public eventsNextPlotSample(request: EventsNextPlotSampleRequest, options?: any, observe: any = 'body', reportProgress: boolean = false ): Observable { + if (request === null || request === undefined) { + throw new Error('Required parameter request was null or undefined when calling eventsNextPlotSample.'); + } + + let headers = this.defaultHeaders; + if (options && options.async_enable) { + headers = headers.set(this.configuration.asyncHeader, '1'); + } + + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/json' + ]; + const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + if (httpHeaderAcceptSelected != undefined) { + headers = headers.set("Accept", httpHeaderAcceptSelected); + } + + // to determine the Content-Type header + const consumes: string[] = [ + ]; + const httpContentTypeSelected:string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected != undefined) { + headers = headers.set("Content-Type", httpContentTypeSelected); + } + + return this.apiRequest.post(`${this.basePath}/events.next_plot_sample`, + request, + { + withCredentials: this.configuration.withCredentials, + headers: headers, + observe: observe, + reportProgress: reportProgress + } + ); + } + + /** + * + * Return the plot per metric and variant for the provided iteration + * @param request request body + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public eventsGetPlotSample(request: EventsGetPlotSampleRequest, options?: any, observe: any = 'body', reportProgress: boolean = false ): Observable { + if (request === null || request === undefined) { + throw new Error('Required parameter request was null or undefined when calling eventsGetPlotSample.'); + } + + let headers = this.defaultHeaders; + if (options && options.async_enable) { + headers = headers.set(this.configuration.asyncHeader, '1'); + } + + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/json' + ]; + const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + if (httpHeaderAcceptSelected != undefined) { + headers = headers.set("Accept", httpHeaderAcceptSelected); + } + + // to determine the Content-Type header + const consumes: string[] = [ + ]; + const httpContentTypeSelected:string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected != undefined) { + headers = headers.set("Content-Type", httpContentTypeSelected); + } + + return this.apiRequest.post(`${this.basePath}/events.get_plot_sample`, + request, + { + withCredentials: this.configuration.withCredentials, + headers: headers, + observe: observe, + reportProgress: reportProgress + } + ); + } + + /** * * get task scalar metrics and variants * @param request request body @@ -723,6 +818,51 @@ export class ApiEventsService { ); } + /** + * + * Get single value metrics for the passed tasks + * @param request request body + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public eventsGetTaskSingleValueMetrics(request: EventsGetTaskSingleValueMetricsRequest, options?: any, observe: any = 'body', reportProgress: boolean = false ): Observable { + if (request === null || request === undefined) { + throw new Error('Required parameter request was null or undefined when calling eventsGetTaskSingleValueMetrics.'); + } + + let headers = this.defaultHeaders; + if (options && options.async_enable) { + headers = headers.set(this.configuration.asyncHeader, '1'); + } + + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/json' + ]; + const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + if (httpHeaderAcceptSelected != undefined) { + headers = headers.set("Accept", httpHeaderAcceptSelected); + } + + // to determine the Content-Type header + const consumes: string[] = [ + ]; + const httpContentTypeSelected:string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected != undefined) { + headers = headers.set("Content-Type", httpContentTypeSelected); + } + + return this.apiRequest.post(`${this.basePath}/events.get_task_single_value_metrics`, + request, + { + withCredentials: this.configuration.withCredentials, + headers: headers, + observe: observe, + reportProgress: reportProgress + } + ); + } + /** * * diff --git a/src/app/business-logic/api-services/organization.service.ts b/src/app/business-logic/api-services/organization.service.ts index e9a5359e..3c63c5ab 100644 --- a/src/app/business-logic/api-services/organization.service.ts +++ b/src/app/business-logic/api-services/organization.service.ts @@ -25,6 +25,8 @@ import { Observable } from 'rxjs'; import { OrganizationGetTagsRequest } from '../model/organization/organizationGetTagsRequest'; import { OrganizationGetTagsResponse } from '../model/organization/organizationGetTagsResponse'; import { OrganizationGetUserCompaniesResponse } from '../model/organization/organizationGetUserCompaniesResponse'; +import { OrganizationGetEntitiesCountRequest } from '../model/organization/organizationGetEntitiesCountRequest'; +import { OrganizationGetEntitiesCountResponse } from '../model/organization/organizationGetEntitiesCountResponse'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; @@ -152,4 +154,48 @@ export class ApiOrganizationService { ); } + /** + * + * Get counts for the company entities according to the passed search criteria + * @param request request body + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public organizationGetEntitiesCount(request: OrganizationGetEntitiesCountRequest, options?: any, observe: any = 'body', reportProgress: boolean = false ): Observable { + if (request === null || request === undefined) { + throw new Error('Required parameter request was null or undefined when calling organizationGetEntitiesCount.'); + } + + let headers = this.defaultHeaders; + if (options && options.async_enable) { + headers = headers.set(this.configuration.asyncHeader, '1'); + } + + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/json' + ]; + const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + if (httpHeaderAcceptSelected != undefined) { + headers = headers.set("Accept", httpHeaderAcceptSelected); + } + + // to determine the Content-Type header + const consumes: string[] = [ + ]; + const httpContentTypeSelected:string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected != undefined) { + headers = headers.set("Content-Type", httpContentTypeSelected); + } + + return this.apiRequest.post(`${this.basePath}/organization.get_entities_count`, + request, + { + withCredentials: this.configuration.withCredentials, + headers: headers, + observe: observe, + reportProgress: reportProgress + } + ); + } } diff --git a/src/app/business-logic/model/events/eventsGetDebugImageSampleRequest.ts b/src/app/business-logic/model/events/eventsGetDebugImageSampleRequest.ts index fa4335b1..c3df7227 100644 --- a/src/app/business-logic/model/events/eventsGetDebugImageSampleRequest.ts +++ b/src/app/business-logic/model/events/eventsGetDebugImageSampleRequest.ts @@ -37,4 +37,8 @@ export interface EventsGetDebugImageSampleRequest { * Scroll ID from the previous call to get_debug_image_sample or empty */ scroll_id?: string; + /** + * If set then subsequent navigation with next_debug_image_sample is done on the debug images for the passed metric only. Otherwise for all the metrics + */ + navigate_current_metric?: boolean; } diff --git a/src/app/business-logic/model/events/eventsGetPlotSampleRequest.ts b/src/app/business-logic/model/events/eventsGetPlotSampleRequest.ts new file mode 100644 index 00000000..9cf17c23 --- /dev/null +++ b/src/app/business-logic/model/events/eventsGetPlotSampleRequest.ts @@ -0,0 +1,44 @@ +/** + * events + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 999.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + + +export interface EventsGetPlotSampleRequest { + /** + * Task ID + */ + task: string; + /** + * Metric name + */ + metric: string; + /** + * Metric variant + */ + variant: string; + /** + * The iteration to bring plot from. If not specified then the latest reported plot is retrieved + */ + iteration?: number; + /** + * If set then scroll state will be refreshed to reflect the latest changes in the plots + */ + refresh?: boolean; + /** + * Scroll ID from the previous call to get_plot_sample or empty + */ + scroll_id?: string; + /** + * If set then subsequent navigation with next_plot_sample is done on the plots for the passed metric only. Otherwise for all the metrics + */ + navigate_current_metric?: boolean; +} diff --git a/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsRequest.ts b/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsRequest.ts new file mode 100644 index 00000000..34494486 --- /dev/null +++ b/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsRequest.ts @@ -0,0 +1,20 @@ +/** + * events + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 999.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + + +export interface EventsGetTaskSingleValueMetricsRequest { + /** + * List of task Task IDs + */ + tasks: Array; +} diff --git a/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponse.ts b/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponse.ts new file mode 100644 index 00000000..f9d4447e --- /dev/null +++ b/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponse.ts @@ -0,0 +1,21 @@ +/** + * events + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 999.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +import { EventsGetTaskSingleValueMetricsResponseTasks } from '././eventsGetTaskSingleValueMetricsResponseTasks'; + + +export interface EventsGetTaskSingleValueMetricsResponse { + /** + * Single value metrics grouped by task + */ + tasks?: Array; +} diff --git a/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseTasks.ts b/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseTasks.ts new file mode 100644 index 00000000..97742019 --- /dev/null +++ b/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseTasks.ts @@ -0,0 +1,22 @@ +/** + * events + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 999.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +import { EventsGetTaskSingleValueMetricsResponseValues } from '././eventsGetTaskSingleValueMetricsResponseValues'; + + +export interface EventsGetTaskSingleValueMetricsResponseTasks { + /** + * Task ID + */ + task?: string; + values?: Array; +} diff --git a/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseValues.ts b/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseValues.ts new file mode 100644 index 00000000..a5c7ac66 --- /dev/null +++ b/src/app/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseValues.ts @@ -0,0 +1,20 @@ +/** + * events + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 999.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + + +export interface EventsGetTaskSingleValueMetricsResponseValues { + metric?: string; + variant?: string; + value?: number; + timestamp?: number; +} diff --git a/src/app/business-logic/model/events/eventsNextPlotSampleRequest.ts b/src/app/business-logic/model/events/eventsNextPlotSampleRequest.ts new file mode 100644 index 00000000..644e00d1 --- /dev/null +++ b/src/app/business-logic/model/events/eventsNextPlotSampleRequest.ts @@ -0,0 +1,28 @@ +/** + * events + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 999.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + + +export interface EventsNextPlotSampleRequest { + /** + * Task ID + */ + task: string; + /** + * Scroll ID from the previous call to get_plot_sample + */ + scroll_id: string; + /** + * If set then get the either previous variant event from the current iteration or (if does not exist) the last variant event from the previous iteration. Otherwise next variant event from the current iteration or first variant event from the next iteration + */ + navigate_earlier?: boolean; +} diff --git a/src/app/business-logic/model/events/plotSampleResponse.ts b/src/app/business-logic/model/events/plotSampleResponse.ts new file mode 100644 index 00000000..25954a92 --- /dev/null +++ b/src/app/business-logic/model/events/plotSampleResponse.ts @@ -0,0 +1,32 @@ +/** + * events + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 999.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + + +export interface PlotSampleResponse { + /** + * Scroll ID to pass to the next calls to get_plot_sample or next_plot_sample + */ + scroll_id?: string; + /** + * Plot event + */ + event?: object; + /** + * minimal valid iteration for the variant + */ + min_iteration?: number; + /** + * maximal valid iteration for the variant + */ + max_iteration?: number; +} diff --git a/src/app/business-logic/model/models/modelsGetAllExRequest.ts b/src/app/business-logic/model/models/modelsGetAllExRequest.ts index b27bbbec..57c7e0fb 100644 --- a/src/app/business-logic/model/models/modelsGetAllExRequest.ts +++ b/src/app/business-logic/model/models/modelsGetAllExRequest.ts @@ -2,7 +2,7 @@ * models * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * - * OpenAPI spec version: 2.14 + * OpenAPI spec version: 999.0 * * * NOTE: This class is auto generated by the swagger code generator program. @@ -92,4 +92,8 @@ export interface ModelsGetAllExRequest { * The number of models to retrieve */ size?: number; + /** + * If true, include models statistic in response + */ + include_stats?: boolean; } diff --git a/src/app/business-logic/model/organization/organizationGetEntitiesCountRequest.ts b/src/app/business-logic/model/organization/organizationGetEntitiesCountRequest.ts new file mode 100644 index 00000000..1a903da7 --- /dev/null +++ b/src/app/business-logic/model/organization/organizationGetEntitiesCountRequest.ts @@ -0,0 +1,41 @@ +/** + * organization + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 999.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + + +export interface OrganizationGetEntitiesCountRequest { + /** + * Search criteria for projects + */ + projects?: object; + /** + * Search criteria for experiments + */ + tasks?: object; + /** + * Search criteria for models + */ + models?: object; + /** + * Search criteria for dataviews + */ + dataviews?: object; + /** + * Search criteria for hyper datasets + */ + hyper_datasets?: object; + /** + * Search criteria for pipelines + */ + pipelines?: object; + datasets: object; +} diff --git a/src/app/business-logic/model/organization/organizationGetEntitiesCountResponse.ts b/src/app/business-logic/model/organization/organizationGetEntitiesCountResponse.ts new file mode 100644 index 00000000..35f76cfa --- /dev/null +++ b/src/app/business-logic/model/organization/organizationGetEntitiesCountResponse.ts @@ -0,0 +1,40 @@ +/** + * organization + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 999.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + + +export interface OrganizationGetEntitiesCountResponse { + /** + * The number of projects matching the criteria + */ + projects?: number; + /** + * The number of experiments matching the criteria + */ + tasks?: number; + /** + * The number of models matching the criteria + */ + models?: number; + /** + * The number of dataviews matching the criteria + */ + dataviews?: number; + /** + * The number of hyper datasets matching the criteria + */ + hyper_datasets?: number; + /** + * The number of pipelines matching the criteria + */ + pipelines?: number; +} diff --git a/src/app/business-logic/model/projects/project.ts b/src/app/business-logic/model/projects/project.ts index bcd8b43f..b5b55628 100644 --- a/src/app/business-logic/model/projects/project.ts +++ b/src/app/business-logic/model/projects/project.ts @@ -1,5 +1,6 @@ import {ProjectsGetAllResponseSingleSubProjects} from '~/business-logic/model/projects/projectsGetAllResponseSingleSubProjects'; import {Stats} from '~/business-logic/model/projects/stats'; +import {ProjectsGetAllResponseSingleDatasetStats} from '~/business-logic/model/projects/projectsGetAllResponseSingleDatasetStats'; /** * projects @@ -24,6 +25,10 @@ export interface Project { * Project name */ name?: string; + /** + * Project base name + */ + basename?: string; /** * Project description */ @@ -53,6 +58,7 @@ export interface Project { */ default_output_destination?: string; stats?: Stats; + dataset_stats?: ProjectsGetAllResponseSingleDatasetStats; /** * Last project update time. Reflects the last time the project metadata was changed or a task in this project has changed status */ diff --git a/src/app/business-logic/model/projects/projectsGetAllExRequest.ts b/src/app/business-logic/model/projects/projectsGetAllExRequest.ts index e857371b..23560660 100644 --- a/src/app/business-logic/model/projects/projectsGetAllExRequest.ts +++ b/src/app/business-logic/model/projects/projectsGetAllExRequest.ts @@ -94,6 +94,7 @@ export interface ProjectsGetAllExRequest { */ size?: number; stats_with_children?: boolean; + include_stats_filter?: any; } export namespace ProjectsGetAllExRequest { export type StatsForStateEnum = 'active' | 'archived'; diff --git a/src/app/business-logic/model/projects/projectsGetAllResponseSingleDatasetStats.ts b/src/app/business-logic/model/projects/projectsGetAllResponseSingleDatasetStats.ts new file mode 100644 index 00000000..5e9a4f01 --- /dev/null +++ b/src/app/business-logic/model/projects/projectsGetAllResponseSingleDatasetStats.ts @@ -0,0 +1,27 @@ +/** + * projects + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 999.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + + +/** + * Project dataset statistics + */ +export interface ProjectsGetAllResponseSingleDatasetStats { + /** + * The number of files stored in the dataset + */ + file_count?: number; + /** + * The total dataset size in bytes + */ + total_size?: number; +} diff --git a/src/app/business-logic/model/users/featuresEnum.ts b/src/app/business-logic/model/users/featuresEnum.ts index 0e3aa571..1164d4a3 100644 --- a/src/app/business-logic/model/users/featuresEnum.ts +++ b/src/app/business-logic/model/users/featuresEnum.ts @@ -12,9 +12,10 @@ -export type FeaturesEnum = 'experiments' | 'queues'; +export type FeaturesEnum = 'experiments' | 'queues' | 'pipelines'; export const FeaturesEnum = { Experiments: 'experiments' as FeaturesEnum, - Queues: 'queues' as FeaturesEnum + Queues: 'queues' as FeaturesEnum, + Pipelines: 'pipelines' as FeaturesEnum }; diff --git a/src/app/business-logic/model/users/getCurrentUserResponseUserObject.ts b/src/app/business-logic/model/users/getCurrentUserResponseUserObject.ts index 159359bc..b9845a16 100644 --- a/src/app/business-logic/model/users/getCurrentUserResponseUserObject.ts +++ b/src/app/business-logic/model/users/getCurrentUserResponseUserObject.ts @@ -25,6 +25,7 @@ export interface GetCurrentUserResponseUserObject { avatar?: string; company?: GetCurrentUserResponseUserObjectCompany; email?: string; + getting_started?: any; /** * User preferences */ diff --git a/src/app/business-logic/model/users/usersGetCurrentUserResponse.ts b/src/app/business-logic/model/users/usersGetCurrentUserResponse.ts index 9ec731da..d5c4ee08 100644 --- a/src/app/business-logic/model/users/usersGetCurrentUserResponse.ts +++ b/src/app/business-logic/model/users/usersGetCurrentUserResponse.ts @@ -15,4 +15,5 @@ import { GetCurrentUserResponseUserObject } from '././getCurrentUserResponseUser export interface UsersGetCurrentUserResponse { user?: GetCurrentUserResponseUserObject; + getting_started?: object; } diff --git a/src/app/core/actions/users.action.ts b/src/app/core/actions/users.action.ts index 90699973..9b34560c 100644 --- a/src/app/core/actions/users.action.ts +++ b/src/app/core/actions/users.action.ts @@ -1,7 +1,8 @@ import {createAction, props} from '@ngrx/store'; -import {USERS_PREFIX} from '../../app.constants'; -import {GetCurrentUserResponseUserObject} from '../../business-logic/model/users/getCurrentUserResponseUserObject'; +import {USERS_PREFIX} from '~/app.constants'; +import {GetCurrentUserResponseUserObject} from '~/business-logic/model/users/getCurrentUserResponseUserObject'; export const setCurrentUser = createAction(USERS_PREFIX + 'SET_CURRENT_USER', - props<{user: GetCurrentUserResponseUserObject; terms_of_use?: any}>() + // eslint-disable-next-line @typescript-eslint/naming-convention + props<{user: GetCurrentUserResponseUserObject; terms_of_use?: any; getting_started?: any}>() ); diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts index 99c33dc2..1d89901c 100644 --- a/src/app/core/core.module.ts +++ b/src/app/core/core.module.ts @@ -94,7 +94,7 @@ export const localStorageReducer = (reducer: ActionReducer): ActionReducer< const userPrefMetaFactory = (userPreferences: UserPreferences): MetaReducer[] => [ (reducer: ActionReducer) => - createUserPrefReducer('users', ['activeWorkspace'], [USERS_PREFIX], userPreferences, reducer), + createUserPrefReducer('users', ['activeWorkspace', 'showOnlyUserWork'], [USERS_PREFIX], userPreferences, reducer), (reducer: ActionReducer) => createUserPrefReducer('rootProjects', ['tagsColors', 'graphVariant'], [ROOT_PROJECTS_PREFIX], userPreferences, reducer), (reducer: ActionReducer) => diff --git a/src/app/core/effects/projects.effects.ts b/src/app/core/effects/projects.effects.ts index bffee293..8bc79499 100644 --- a/src/app/core/effects/projects.effects.ts +++ b/src/app/core/effects/projects.effects.ts @@ -8,6 +8,9 @@ import {deactivateLoader} from '@common/core/actions/layout.actions'; import {ALL_PROJECTS_OBJECT} from '@common/core/effects/projects.effects'; import {requestFailed} from '@common/core/actions/http.actions'; import {ApiProjectsService} from '~/business-logic/api-services/projects.service'; +import {selectCurrentUser, selectShowOnlyUserWork} from '@common/core/reducers/users-reducer'; +import {ProjectsGetAllExRequest} from '~/business-logic/model/projects/projectsGetAllExRequest'; +import {selectShowHidden} from '@common/projects/common-projects.reducer'; @@ -23,8 +26,13 @@ export class ProjectsEffects { getSelectedProject = createEffect(() => this.actions$.pipe( ofType(actions.setSelectedProjectId), - withLatestFrom(this.store.select(selectSelectedProjectId)), - switchMap(([action, selectedProjectId]) => { + withLatestFrom( + this.store.select(selectSelectedProjectId), + this.store.select(selectCurrentUser), + this.store.select(selectShowOnlyUserWork), + this.store.select(selectShowHidden), + ), + switchMap(([action, selectedProjectId, user, showOnlyUserWork, showHidden]) => { if (!action.projectId) { return [ deactivateLoader(action.type), @@ -45,9 +53,12 @@ export class ProjectsEffects { /* eslint-disable @typescript-eslint/naming-convention */ id: [action.projectId], include_stats: true, - ...((action.example !== false || this.fetchingExampleExperiment === action.projectId) && {check_own_contents: true}) + ...(!showHidden && {include_stats_filter: {system_tags: ['-pipeline']}}), + ...((action.example !== false || this.fetchingExampleExperiment === action.projectId) && {check_own_contents: true}), + ...(showOnlyUserWork && {active_users: [user.id]}), + ...(showHidden && {search_hidden: true}), /* eslint-enable @typescript-eslint/naming-convention */ - }) + } as ProjectsGetAllExRequest) .pipe( finalize(() => this.fetchingExampleExperiment = null), mergeMap(({projects}) => [ diff --git a/src/app/core/reducers/users.reducer.ts b/src/app/core/reducers/users.reducer.ts index e251f81c..5d7a8520 100644 --- a/src/app/core/reducers/users.reducer.ts +++ b/src/app/core/reducers/users.reducer.ts @@ -12,6 +12,7 @@ export const usersReducer = createReducer(initUsers, on(setCurrentUser, (state, action) => ({ ...state, currentUser: action.user, + gettingStarted: action.getting_started, activeWorkspace: action.user?.company, userWorkspaces: [action.user?.company], })) diff --git a/src/app/features/dashboard-search/dashboard-search.consts.ts b/src/app/features/dashboard-search/dashboard-search.consts.ts new file mode 100644 index 00000000..4563a965 --- /dev/null +++ b/src/app/features/dashboard-search/dashboard-search.consts.ts @@ -0,0 +1,32 @@ +export type ActiveSearchLink = 'projects' | 'experiments' | 'models' | 'pipelines' | 'datasets'; + +export const activeSearchLink = { + projects: 'projects' as ActiveSearchLink, + experiments: 'experiments' as ActiveSearchLink, + models: 'models' as ActiveSearchLink, + pipelines: 'pipelines' as ActiveSearchLink, + openDatasets: 'datasets' as ActiveSearchLink +}; + +export const activeLinksList = [ + { + label: 'PROJECTS', + name: activeSearchLink.projects, + }, + { + label: 'DATASETS', + name: activeSearchLink.openDatasets, + }, + { + label: 'EXPERIMENTS', + name: activeSearchLink.experiments, + }, + { + label: 'MODELS', + name: activeSearchLink.models, + }, + { + label: 'PIPELINES', + name: activeSearchLink.pipelines, + } +]; diff --git a/src/app/features/dashboard-search/dashboard-search.effects.ts b/src/app/features/dashboard-search/dashboard-search.effects.ts new file mode 100644 index 00000000..311eda69 --- /dev/null +++ b/src/app/features/dashboard-search/dashboard-search.effects.ts @@ -0,0 +1,26 @@ +import {Injectable} from '@angular/core'; +import {Actions, createEffect, ofType} from '@ngrx/effects'; +import {ApiProjectsService} from '~/business-logic/api-services/projects.service'; +import {map, switchMap} from 'rxjs/operators'; +import {getResultsCount, setResultsCount} from '@common/dashboard-search/dashboard-search.actions'; +import {getEntityStatQuery} from '@common/dashboard-search/dashboard-search.effects'; +import {ApiOrganizationService} from '~/business-logic/api-services/organization.service'; + + +@Injectable() +export class DashboardSearchEffects { + constructor( + private actions: Actions, + public projectsApi: ApiProjectsService, + public organizationApi: ApiOrganizationService, + ) { + } + + getResultsCount = createEffect(() => this.actions.pipe( + ofType(getResultsCount), + switchMap(action => this.organizationApi.organizationGetEntitiesCount(getEntityStatQuery(action))), + map(({tasks: experiments, ...rest}) => + setResultsCount({counts: {...rest, experiments}})) + )); + +} diff --git a/src/app/features/dashboard/containers/dashboard-search/dashboard-search.component.html b/src/app/features/dashboard/containers/dashboard-search/dashboard-search.component.html deleted file mode 100644 index 725b4350..00000000 --- a/src/app/features/dashboard/containers/dashboard-search/dashboard-search.component.html +++ /dev/null @@ -1,13 +0,0 @@ - - diff --git a/src/app/features/dashboard/containers/dashboard-search/dashboard-search.component.ts b/src/app/features/dashboard/containers/dashboard-search/dashboard-search.component.ts deleted file mode 100644 index 7f780099..00000000 --- a/src/app/features/dashboard/containers/dashboard-search/dashboard-search.component.ts +++ /dev/null @@ -1,45 +0,0 @@ -import {Component, OnDestroy, OnInit} from '@angular/core'; -import {Router} from '@angular/router'; -import {combineLatest, Observable, ObservedValueOf, Subscription} from 'rxjs'; -import {filter, skip} from 'rxjs/operators'; -import {Store} from '@ngrx/store'; -import {Project} from '~/business-logic/model/projects/project'; -import {Model} from '~/business-logic/model/models/model'; -import {DashboardSearchComponentBase} from '@common/dashboard/dashboard-search.component.base'; -import {SearchClear} from '@common/dashboard-search/dashboard-search.actions'; - -export type ActiveSearchLink = 'projects' | 'experiments' | 'models' | 'pipelines'; - - -@Component({ - selector : ' sm-dashboard-search', - templateUrl: './dashboard-search.component.html', - styleUrls : ['./dashboard-search.component.scss'] -}) -export class DashboardSearchComponent extends DashboardSearchComponentBase implements OnInit, OnDestroy { - - readonly tabsIndexes = ['projects', 'experiments', 'models']; - private allResultsJoin$: Observable<[ObservedValueOf>>, ObservedValueOf>, ObservedValueOf>>, ObservedValueOf>]>; - private allResultsSubscription: Subscription; - - constructor(public store: Store, public router: Router) { - super(store); - this.allResultsJoin$ = combineLatest([this.projectsResults$, this.experimentsResults$, this.modelsResults$, this.resultsCounter$]); - this.syncAppSearch(); - } - - public ngOnInit(): void { - this.allResultsSubscription = this.allResultsJoin$.pipe( - skip(1), - filter(allResults => allResults[this.tabsIndexes.length] === this.tabsIndexes.length) - ).subscribe(allResults => this.setFirstActiveLink(allResults, this.tabsIndexes)); - } - - ngOnDestroy(): void { - this.store.dispatch(new SearchClear()); - this.searchTermChanged(''); - this.stopSyncSearch(); - this.allResultsSubscription.unsubscribe(); - } - -} diff --git a/src/app/features/dashboard/dashboard-search/dashboard-search.module.ts b/src/app/features/dashboard/dashboard-search/dashboard-search.module.ts index 404f546b..c541d9de 100644 --- a/src/app/features/dashboard/dashboard-search/dashboard-search.module.ts +++ b/src/app/features/dashboard/dashboard-search/dashboard-search.module.ts @@ -3,7 +3,8 @@ import {CommonModule} from '@angular/common'; import {SMSharedModule} from '@common/shared/shared.module'; import {StoreModule} from '@ngrx/store'; import {EffectsModule} from '@ngrx/effects'; -import {DashboardSearchEffects} from '@common/dashboard-search/dashboard-search.effects'; +import {DashboardSearchEffects as commonDashboardSearchEffects} from '@common/dashboard-search/dashboard-search.effects'; +import {DashboardSearchEffects} from '~/features/dashboard-search/dashboard-search.effects'; import {ProjectsSharedModule} from '../../projects/shared/projects-shared.module'; import {SharedModule} from '~/shared/shared.module'; import {dashboardSearchReducer} from '@common/dashboard-search/dashboard-search.reducer'; @@ -14,7 +15,7 @@ import {dashboardSearchReducer} from '@common/dashboard-search/dashboard-search. SMSharedModule, ProjectsSharedModule, StoreModule.forFeature('search', dashboardSearchReducer), - EffectsModule.forFeature([DashboardSearchEffects]), + EffectsModule.forFeature([DashboardSearchEffects, commonDashboardSearchEffects]), SharedModule ], }) diff --git a/src/app/features/dashboard/dashboard.component.html b/src/app/features/dashboard/dashboard.component.html index 9a85f42b..d11d8500 100644 --- a/src/app/features/dashboard/dashboard.component.html +++ b/src/app/features/dashboard/dashboard.component.html @@ -1,4 +1,4 @@ - +
diff --git a/src/app/features/dashboard/dashboard.component.ts b/src/app/features/dashboard/dashboard.component.ts index 5ed8796e..a812b75c 100644 --- a/src/app/features/dashboard/dashboard.component.ts +++ b/src/app/features/dashboard/dashboard.component.ts @@ -7,12 +7,12 @@ import {GetCurrentUserResponseUserObjectCompany} from '~/business-logic/model/us import {filter, skip, take} from 'rxjs/operators'; import {setDeep} from '@common/core/actions/projects.actions'; import {getRecentProjects, getRecentExperiments} from '@common/dashboard/common-dashboard.actions'; -import {selectActiveSearch} from '@common/common-search/common-search.reducer'; import {selectFirstLogin} from '@common/core/reducers/view.reducer'; import {MatDialog} from '@angular/material/dialog'; import {WelcomeMessageComponent} from '@common/layout/welcome-message/welcome-message.component'; import {firstLogin} from '@common/core/actions/layout.actions'; import {IRecentTask, selectRecentTasks} from '@common/dashboard/common-dashboard.reducer'; +import {selectActiveSearch} from '@common/dashboard-search/dashboard-search.reducer'; @Component({ diff --git a/src/app/features/dashboard/dashboard.module.ts b/src/app/features/dashboard/dashboard.module.ts index eb8f306e..e71512da 100644 --- a/src/app/features/dashboard/dashboard.module.ts +++ b/src/app/features/dashboard/dashboard.module.ts @@ -8,13 +8,15 @@ import {GettingStartedCardComponent} from './dumb/getting-started-card/getting-s import {SMSharedModule} from '@common/shared/shared.module'; import {CommonDashboardModule} from '@common/dashboard/common-dashboard.module'; import {commonDashboardReducer} from '@common/dashboard/common-dashboard.reducer'; -import {DashboardSearchComponent} from './containers/dashboard-search/dashboard-search.component'; import {SearchResultsPageComponent} from './dumb/search-results-page/search-results-page.component'; import {SharedModule} from '~/shared/shared.module'; import {DashboardSearchModule} from './dashboard-search/dashboard-search.module'; import {ProjectDialogModule} from '@common/shared/project-dialog/project-dialog.module'; import {ProjectsSharedModule} from '../projects/shared/projects-shared.module'; import {SearchResultsComponent} from '@common/dashboard-search/dumb/search-results/search-results.component'; +import {DashboardSearchBaseComponent} from '@common/dashboard/dashboard-search.component.base'; +import {DatasetsModule} from '~/features/datasets/datasets.module'; +import {DatasetsSharedModule} from '~/features/datasets/shared/datasets-shared.module'; @NgModule({ imports: [ @@ -27,9 +29,11 @@ import {SearchResultsComponent} from '@common/dashboard-search/dumb/search-resul StoreModule.forFeature('dashboard', commonDashboardReducer), CommonDashboardModule, SharedModule, - DashboardSearchModule + DashboardSearchModule, + DatasetsModule, + DatasetsSharedModule ], - declarations : [DashboardComponent, GettingStartedCardComponent, DashboardSearchComponent, SearchResultsPageComponent, SearchResultsComponent] + declarations : [DashboardComponent, GettingStartedCardComponent, DashboardSearchBaseComponent, SearchResultsPageComponent, SearchResultsComponent] }) export class DashboardModule { } diff --git a/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.html b/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.html index 3f730323..5de9b937 100644 --- a/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.html +++ b/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.html @@ -1,27 +1,26 @@
-
+
- PROJECTS {{'(' + projectsList.length + ')'}} - EXPERIMENTS {{'(' + experimentsList.length + ')'}} - MODELS {{'(' + modelsList.length + ')'}} - PIPELINES ({{pipelinesList?.length}}) + + {{searchTab.label}} ({{resultsCount?.[searchTab.name]}}) +
+ [showLoadMoreButton]="getResults().length < resultsCount?.[activeLink]" + (resultClicked)="projectClicked($event)" + (loadMoreClicked)="loadMoreClicked.emit()">
@@ -54,4 +53,13 @@ (projectCardClicked)="pipelineClicked($event)" > + + + + +
diff --git a/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.scss b/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.scss index 1a633302..6bf1cdf6 100644 --- a/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.scss +++ b/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.scss @@ -2,7 +2,7 @@ @import "../../../../webapp-common/shared/ui-components/styles/mixins/common"; .category-link{ - padding-right: 10px; + padding-right: 24px; font-size: $font-size-lg; color: $blue-100; opacity: 0.3; diff --git a/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.ts b/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.ts index adeabf0c..e370b74d 100644 --- a/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.ts +++ b/src/app/features/dashboard/dumb/search-results-page/search-results-page.component.ts @@ -3,25 +3,32 @@ import {Project} from '~/business-logic/model/projects/project'; import {Task} from '~/business-logic/model/tasks/task'; import {ITask} from '~/business-logic/model/al-task'; import {Model} from '~/business-logic/model/models/model'; -import {ActiveSearchLink} from '~/features/dashboard/containers/dashboard-search/dashboard-search.component'; +import {activeLinksList, ActiveSearchLink, activeSearchLink} from '~/features/dashboard-search/dashboard-search.consts'; @Component({ - selector : 'sm-search-results-page', + selector: 'sm-search-results-page', templateUrl: './search-results-page.component.html', - styleUrls : ['./search-results-page.component.scss'] + styleUrls: ['./search-results-page.component.scss'] }) export class SearchResultsPageComponent { + public searchPages = activeSearchLink; + public activeLinksList = activeLinksList; + @Input() projectsList: Array = []; @Input() experimentsList: Array = []; - @Input() modelsList: Array = []; + @Input() modelsList: Array = []; @Input() pipelinesList: Array = []; + @Input() datasetsList: Array = []; @Input() activeLink: ActiveSearchLink; + @Input() resultsCount: Map; - @Output() projectSelected = new EventEmitter(); - @Output() activeLinkChanged = new EventEmitter(); + @Output() projectSelected = new EventEmitter(); + @Output() activeLinkChanged = new EventEmitter(); @Output() experimentSelected = new EventEmitter(); - @Output() modelSelected = new EventEmitter(); - @Output() pipelineSelected = new EventEmitter(); + @Output() modelSelected = new EventEmitter(); + @Output() pipelineSelected = new EventEmitter(); + @Output() openDatasetSelected = new EventEmitter(); + @Output() loadMoreClicked = new EventEmitter(); public projectClicked(project: Project) { this.projectSelected.emit(project); @@ -39,18 +46,20 @@ export class SearchResultsPageComponent { this.pipelineSelected.emit(pipeline); } - getResults() { - return this[`${this.activeLink}List`]; + public openDatasetClicked(project: Project) { + this.openDatasetSelected.emit(project); } + getResults = () => this[`${this.activeLink}List`]; + getCardHeight() { switch (this.activeLink) { - case 'projects': + case activeSearchLink.projects: return 246; - case 'experiments': - case 'models': + case activeSearchLink.experiments: + case activeSearchLink.models: return 264; - case 'pipelines': + case activeSearchLink.pipelines: return 226; default: return 250; diff --git a/src/app/features/datasets/datasets-routing.module.ts b/src/app/features/datasets/datasets-routing.module.ts new file mode 100644 index 00000000..56b418bb --- /dev/null +++ b/src/app/features/datasets/datasets-routing.module.ts @@ -0,0 +1,43 @@ +import {NgModule} from '@angular/core'; +import {RouterModule, Routes} from '@angular/router'; +import {SimpleDatasetVersionsComponent} from '@common/datasets/simple-dataset-versions/simple-dataset-versions.component'; +import { + SimpleDatasetVersionInfoComponent +} from '@common/datasets/simple-dataset-version-info/simple-dataset-version-info.component'; +import {SimpleDatasetsComponent} from '@common/datasets/simple-datasets/simple-datasets.component'; +import {EntityTypeEnum} from '../../shared/constants/non-common-consts'; + +const routes: Routes = [ + { + path : '', + component: SimpleDatasetsComponent, + data : {search: true} + }, + { + path: 'simple/:projectId', + data: {search: true}, + children: [ + {path: '', redirectTo: 'experiments', pathMatch: 'full'}, + { + path: 'experiments', + component: SimpleDatasetVersionsComponent, + children: [ + { + path: ':versionId', component: SimpleDatasetVersionInfoComponent, + }, + ] + }, + { + path: 'compare-experiments', + data: {entityType: EntityTypeEnum.dataset}, + loadChildren: () => import('@common/experiments-compare/experiments-compare.module').then(m => m.ExperimentsCompareModule) + }, + ] + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class DatasetsRoutingModule {} diff --git a/src/app/features/datasets/datasets.module.ts b/src/app/features/datasets/datasets.module.ts new file mode 100644 index 00000000..030c9a73 --- /dev/null +++ b/src/app/features/datasets/datasets.module.ts @@ -0,0 +1,77 @@ +import {CommonModule} from '@angular/common'; +import {NgModule, NO_ERRORS_SCHEMA} from '@angular/core'; +import {FormsModule, ReactiveFormsModule} from '@angular/forms'; +import {SMSharedModule} from '@common/shared/shared.module'; +import {ChipsModule} from '@common/shared/ui-components/buttons/chips/chips.module'; +import {SimpleDatasetsComponent} from '@common/datasets/simple-datasets/simple-datasets.component'; +import {CommonProjectsModule} from '@common/projects/common-projects.module'; +import {ProjectsSharedModule} from '~/features/projects/shared/projects-shared.module'; +import {ExperimentSharedModule} from '~/features/experiments/shared/experiment-shared.module'; +import {ExperimentCompareSharedModule} from '@common/experiments-compare/shared/experiment-compare-shared.module'; +import {ExperimentsCommonModule} from '@common/experiments/common-experiments.module'; +import {CommonExperimentSharedModule} from '@common/experiments/shared/common-experiment-shared.module'; +import { + SimpleDatasetVersionsComponent +} from '@common/datasets/simple-dataset-versions/simple-dataset-versions.component'; +import {AngularSplitModule} from 'angular-split'; +import { + SimpleDatasetVersionMenuComponent +} from '@common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component'; +import { + SimpleDatasetVersionInfoComponent +} from '@common/datasets/simple-dataset-version-info/simple-dataset-version-info.component'; +import {PipelinesControllerModule} from '@common/pipelines-controller/pipelines-controller.module'; +import {DatasetsRoutingModule} from '~/features/datasets/datasets-routing.module'; +import {DatasetVersionStepComponent} from '@common/datasets/dataset-version-step/dataset-version-step.component'; +import {DatasetsSharedModule} from '~/features/datasets/shared/datasets-shared.module'; +import { + SimpleDatasetVersionDetailsComponent +} from '../../webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component'; +import { + SimpleDatasetVersionContentComponent +} from '../../webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component'; +import { + SimpleDatasetVersionPreviewComponent +} from '../../webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component'; +import {DebugImagesModule} from '../../webapp-common/debug-images/debug-images.module'; +import { + ExperimentOutputLogModule +} from '../../webapp-common/experiments/shared/experiment-output-log/experiment-output-log.module'; + + +@NgModule({ + imports: [ + CommonModule, + ReactiveFormsModule, + SMSharedModule, + ChipsModule, + FormsModule, + AngularSplitModule, + CommonProjectsModule, + ProjectsSharedModule, + CommonExperimentSharedModule, + ExperimentSharedModule, + DatasetsRoutingModule, + ExperimentsCommonModule, + ExperimentCompareSharedModule, + PipelinesControllerModule, + DatasetsSharedModule, + DebugImagesModule, + ExperimentOutputLogModule + ], + declarations: [ + SimpleDatasetsComponent, + SimpleDatasetVersionsComponent, + SimpleDatasetVersionMenuComponent, + SimpleDatasetVersionInfoComponent, + DatasetVersionStepComponent, + SimpleDatasetVersionDetailsComponent, + SimpleDatasetVersionContentComponent, + SimpleDatasetVersionPreviewComponent, + ], + schemas: [NO_ERRORS_SCHEMA], + exports: [] +}) +export class DatasetsModule { +} + diff --git a/src/app/features/datasets/shared/datasets-shared.module.ts b/src/app/features/datasets/shared/datasets-shared.module.ts new file mode 100644 index 00000000..e1490570 --- /dev/null +++ b/src/app/features/datasets/shared/datasets-shared.module.ts @@ -0,0 +1,28 @@ +import {NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {FormsModule, ReactiveFormsModule} from '@angular/forms'; +import {SMSharedModule} from '@common/shared/shared.module'; +import {ChipsModule} from '@common/shared/ui-components/buttons/chips/chips.module'; +import {SharedModule} from '~/shared/shared.module'; +import {SimpleDatasetCardComponent} from '@common/datasets/simple-dataset-card/simple-dataset-card.component'; +import {ProjectsSharedModule} from '~/features/projects/shared/projects-shared.module'; + +const _declerations = [ +SimpleDatasetCardComponent +]; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + SMSharedModule, + ChipsModule, + SharedModule, + ProjectsSharedModule, + ], + declarations: [..._declerations], + exports : [..._declerations] +}) + +export class DatasetsSharedModule { } diff --git a/src/app/features/experiments-compare/experiment-details-reverter-service.base.ts b/src/app/features/experiments-compare/experiment-details-reverter-service.base.ts index 638b6920..30f8edfb 100644 --- a/src/app/features/experiments-compare/experiment-details-reverter-service.base.ts +++ b/src/app/features/experiments-compare/experiment-details-reverter-service.base.ts @@ -25,7 +25,8 @@ export abstract class ExperimentDetailsReverterServiceBase { tags: exp.tags, execution: this.revertExecution(exp), artifacts: this.revertArtifacts(exp), - configuration: this.revertconfiguration(exp.configuration) + configuration: this.revertconfiguration(exp.configuration), + info: this.revertInfo(exp) }; }); } @@ -56,4 +57,6 @@ export abstract class ExperimentDetailsReverterServiceBase { abstract revertArtifacts(exp: ITask); abstract revertExecution(exp: ITask); + + abstract revertInfo(exp: ITask); } diff --git a/src/app/features/experiments-compare/experiments-compare-details.base.ts b/src/app/features/experiments-compare/experiments-compare-details.base.ts index c6f9984e..a44fd6c2 100644 --- a/src/app/features/experiments-compare/experiments-compare-details.base.ts +++ b/src/app/features/experiments-compare/experiments-compare-details.base.ts @@ -4,6 +4,7 @@ export abstract class ExperimentCompareDetailsBase { artifacts: this.buildSectionTree(experiment, 'artifacts', mergedExperiment), execution: this.buildSectionTree(experiment, 'execution', mergedExperiment), configuration: this.buildSectionTree(experiment, 'configuration', mergedExperiment), + info: this.buildSectionTree(experiment, 'info', mergedExperiment), }; } diff --git a/src/app/features/experiments/containers/experiment-info-navbar/experiment-info-navbar.component.html b/src/app/features/experiments/containers/experiment-info-navbar/experiment-info-navbar.component.html index d675bc45..621211b3 100644 --- a/src/app/features/experiments/containers/experiment-info-navbar/experiment-info-navbar.component.html +++ b/src/app/features/experiments/containers/experiment-info-navbar/experiment-info-navbar.component.html @@ -1,58 +1,66 @@ -
+
+ +
diff --git a/src/app/webapp-common/dashboard-search/dumb/search-results/search-results.component.scss b/src/app/webapp-common/dashboard-search/dumb/search-results/search-results.component.scss index fe5c60c3..e2b5e8c5 100644 --- a/src/app/webapp-common/dashboard-search/dumb/search-results/search-results.component.scss +++ b/src/app/webapp-common/dashboard-search/dumb/search-results/search-results.component.scss @@ -13,3 +13,14 @@ } } } + +.load-more { + display: flex; + justify-content: center; + width: 100%; + padding: 15px; + + .load-more-btn { + padding: 8px 40px; + } +} diff --git a/src/app/webapp-common/dashboard-search/dumb/search-results/search-results.component.ts b/src/app/webapp-common/dashboard-search/dumb/search-results/search-results.component.ts index a3a883c0..84e9e12e 100644 --- a/src/app/webapp-common/dashboard-search/dumb/search-results/search-results.component.ts +++ b/src/app/webapp-common/dashboard-search/dumb/search-results/search-results.component.ts @@ -22,22 +22,33 @@ export class SearchResultsComponent { public resultRows$: Observable; public trackById = trackById; public rowWidth = 300; + private _cardTemplate: TemplateRef; + + @Input() set cardTemplate(cardTemplate: TemplateRef) { + this.viewPort?.scrollToIndex(0); + this._cardTemplate = cardTemplate; + } + + get cardTemplate() { + return this._cardTemplate; + } - @Input() cardTemplate: TemplateRef; @Input() set results(results: any[]) { this.results$.next(results); - this.viewPort?.scrollToIndex(0); } + @Input() cardHeight = 246; + @Input() showLoadMoreButton = false; @Output() resultClicked = new EventEmitter(); - @ViewChild(CdkVirtualScrollViewport) viewPort : CdkVirtualScrollViewport; + @Output() loadMoreClicked = new EventEmitter(); + @ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport; constructor(private store: Store, private breakpointObserver: BreakpointObserver) { this.store.select(selectScaleFactor) .pipe(take(1), map(factor => 100 / factor)) .subscribe(factor => { - const points = {} as {[point: string]: number}; - [2,3,4,5,6].forEach(num => + const points = {} as { [point: string]: number }; + [2, 3, 4, 5, 6].forEach(num => points[`(min-width: ${num === 2 ? 0 : ((num - 2) * 24 + (num - 1) * CARD_WIDTH + SIDE_NAV_PLUS_PAD) * factor}px) and ` + `(max-width: ${num === 6 ? 20000 : ((num - 1) * 24 + num * CARD_WIDTH + SIDE_NAV_PLUS_PAD) * factor}px)`] = num); this.cardLayoutChange$ = breakpointObserver.observe(Object.keys(points)); @@ -46,7 +57,7 @@ export class SearchResultsComponent { .pipe(map(([match, results]) => { const point = Object.entries(match.breakpoints).find(([, val]) => val); const cards = point ? points[point[0]] - 1 : 3; - this.rowWidth = cards * CARD_WIDTH + (cards - 1) * 24 + this.rowWidth = cards * CARD_WIDTH + (cards - 1) * 24; return chunk(cards, results); })); }); diff --git a/src/app/webapp-common/dashboard/common-dashboard.actions.ts b/src/app/webapp-common/dashboard/common-dashboard.actions.ts index 5c99dace..34e44c20 100644 --- a/src/app/webapp-common/dashboard/common-dashboard.actions.ts +++ b/src/app/webapp-common/dashboard/common-dashboard.actions.ts @@ -15,3 +15,4 @@ export const setRecentExperiments = createAction( DASHBOARD_PREFIX + '[set recent experiments]', props<{experiments: IRecentTask[]}>() ); + diff --git a/src/app/webapp-common/dashboard/common-dashboard.effects.ts b/src/app/webapp-common/dashboard/common-dashboard.effects.ts index f8ce2847..0b441979 100644 --- a/src/app/webapp-common/dashboard/common-dashboard.effects.ts +++ b/src/app/webapp-common/dashboard/common-dashboard.effects.ts @@ -44,7 +44,7 @@ export class CommonDashboardEffects { page_size: CARDS_IN_ROW, active_users: (showOnlyUserWork ? [user.id] : null), only_fields: ['name', 'company', 'user', 'created', 'default_output_destination'] - } as ProjectsGetAllExRequest).pipe( + }).pipe( mergeMap(({projects}) => [setRecentProjects({projects}), deactivateLoader(action.type)]), catchError(error => [deactivateLoader(action.type), requestFailed(error)]) ) diff --git a/src/app/webapp-common/dashboard/dashboard-search.component.base.ts b/src/app/webapp-common/dashboard/dashboard-search.component.base.ts index 41304282..88d674a0 100644 --- a/src/app/webapp-common/dashboard/dashboard-search.component.base.ts +++ b/src/app/webapp-common/dashboard/dashboard-search.component.base.ts @@ -1,59 +1,99 @@ -import {InitSearch, ResetSearch} from '../common-search/common-search.actions'; -import {skip} from 'rxjs/operators'; +import {initSearch, resetSearch} from '../common-search/common-search.actions'; +import {filter, skip} from 'rxjs/operators'; import {Model} from '~/business-logic/model/models/model'; -import {SearchDeactivate, searchStart} from '../dashboard-search/dashboard-search.actions'; +import {clearSearchResults, getCurrentPageResults, searchClear, searchDeactivate, searchStart} from '../dashboard-search/dashboard-search.actions'; import {IRecentTask} from './common-dashboard.reducer'; import {ITask} from '~/business-logic/model/al-task'; -import {Observable} from 'rxjs'; -import {ICommonSearchState, selectSearchQuery} from '../common-search/common-search.reducer'; +import {Observable, Subscription} from 'rxjs'; +import {SearchState, selectSearchQuery} from '../common-search/common-search.reducer'; import {Store} from '@ngrx/store'; import { - selectActiveSearch, selectExperimentsResults, selectModelsResults, selectPipelinesResults, selectProjectsResults, - selectResultsCounter, + selectActiveSearch, selectDatasetsResults, selectExperimentsResults, selectModelsResults, selectPipelinesResults, selectProjectsResults, selectResultsCount, selectSearchScrollIds, selectSearchTerm } from '../dashboard-search/dashboard-search.reducer'; import {Project} from '~/business-logic/model/projects/project'; import {setSelectedProjectId} from '../core/actions/projects.actions'; import {isExample} from '../shared/utils/shared-utils'; -import {ActiveSearchLink} from '~/features/dashboard/containers/dashboard-search/dashboard-search.component'; +import {activeLinksList, ActiveSearchLink, activeSearchLink} from '~/features/dashboard-search/dashboard-search.consts'; +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {Router} from '@angular/router'; -export abstract class DashboardSearchComponentBase { - abstract store; - abstract router; +@Component({ + selector: 'sm-dashboard-search-base', + template: ` + `, +}) +export class DashboardSearchBaseComponent implements OnInit, OnDestroy{ public activeLink = 'projects' as ActiveSearchLink; private searchSubs; - public searchQuery$: Observable; + private allResultsSubscription: Subscription; + public searchQuery$: Observable; public activeSearch$: Observable; - protected readonly resultsCounter$: Observable; public modelsResults$: Observable>; public projectsResults$: Observable>; public experimentsResults$: Observable; - public searchTerm$: Observable; + public searchTerm$: Observable; public pipelinesResults$: Observable; + public datasetsResults$: Observable; + private scrollIds: Map; + public resultsCount$: Observable>; - constructor(store: Store){ + constructor(public store: Store, public router: Router){ this.searchQuery$ = store.select(selectSearchQuery); this.activeSearch$ = store.select(selectActiveSearch); - this.resultsCounter$ = store.select(selectResultsCounter); this.modelsResults$ = store.select(selectModelsResults); this.pipelinesResults$ = store.select(selectPipelinesResults); + this.datasetsResults$ = store.select(selectDatasetsResults); this.projectsResults$ = store.select(selectProjectsResults); this.experimentsResults$ = store.select(selectExperimentsResults); this.searchTerm$ = store.select(selectSearchTerm); + this.resultsCount$ = store.select(selectResultsCount); + this.syncAppSearch(); + } + public ngOnInit(): void { + this.allResultsSubscription = this.resultsCount$.pipe( + filter(resultsCount => !!resultsCount), + ).subscribe((resultsCount) => { + return this.setFirstActiveLink(resultsCount); + }); + } + + ngOnDestroy(): void { + this.store.dispatch(searchClear()); + this.searchTermChanged(''); + this.stopSyncSearch(); + this.allResultsSubscription.unsubscribe(); } stopSyncSearch() { - this.store.dispatch(new ResetSearch()); + this.store.dispatch(resetSearch()); this.searchSubs.unsubscribe(); } syncAppSearch() { - this.store.dispatch(new InitSearch('Search for all')); + this.store.dispatch(initSearch({payload: 'Search for all'})); this.searchSubs = this.searchQuery$ .pipe(skip(1)) .subscribe(query => this.searchTermChanged(query?.query, query?.regExp)); + + this.searchSubs.add(this.store.select(selectSearchScrollIds).subscribe(scrollIds => this.scrollIds = scrollIds)); } public modelSelected(model: Model) { @@ -64,10 +104,10 @@ export abstract class DashboardSearchComponentBase { public searchTermChanged(term: string, regExp?: boolean) { if (term && term.length > 0) { - this.store.dispatch(searchStart({query:term, regExp, force: term.length < 3})); + this.store.dispatch(searchStart({query:term, regExp, force: term.length < 3, activeLink: this.activeLink})); } else { - this.activeLink = 'projects'; - this.store.dispatch(new SearchDeactivate()); + this.activeLink = activeSearchLink.projects; + this.store.dispatch(searchDeactivate()); } } @@ -75,11 +115,17 @@ export abstract class DashboardSearchComponentBase { this.router.navigateByUrl(`projects/${project.id}`); this.store.dispatch(setSelectedProjectId({projectId: project.id, example: isExample(project)})); } + pipelineSelected(project: Project) { this.router.navigateByUrl(`pipelines/${project.id}/experiments`); this.store.dispatch(setSelectedProjectId({projectId: project.id, example: isExample(project)})); } + public openDatasetCardClicked(project: Project) { + this.router.navigateByUrl(`datasets/simple/${project.id}/experiments`); + this.store.dispatch(setSelectedProjectId({projectId: project.id, example: isExample(project)})); + } + public taskSelected(task: IRecentTask | ITask) { // TODO ADD task.id to route const projectId = task.project ? task.project.id : '*'; @@ -89,14 +135,26 @@ export abstract class DashboardSearchComponentBase { public activeLinkChanged(activeLink) { this.activeLink = activeLink; + if (!this.scrollIds?.[activeLink]) { + this.store.dispatch(getCurrentPageResults({activeLink})); + } + } - setFirstActiveLink(allResults, tabsIndexes) { - if (!(allResults[tabsIndexes.indexOf(this.activeLink)].length > 0)) { - const firstTabIndex = allResults.findIndex(list => list.length > 0); + setFirstActiveLink(resultsCount) { + if (resultsCount[this.activeLink] > 0) { + this.activeLinkChanged(this.activeLink); + } else { + const firstTabIndex = activeLinksList.findIndex(activeLink => resultsCount[activeLink.name] > 0); if (firstTabIndex > -1) { - this.activeLink = tabsIndexes[firstTabIndex]; + this.activeLinkChanged(activeLinksList[firstTabIndex].name); + } else { + this.store.dispatch(clearSearchResults()); } } } + + loadMore() { + this.store.dispatch(getCurrentPageResults({activeLink: this.activeLink})); + } } diff --git a/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.html b/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.html new file mode 100644 index 00000000..8456c431 --- /dev/null +++ b/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.html @@ -0,0 +1,18 @@ +
+
+
{{step?.data?.name ?? step.name}} v{{step.data.version}}
+ +
+ +
diff --git a/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.scss b/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.scss new file mode 100644 index 00000000..17eb4c5c --- /dev/null +++ b/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.scss @@ -0,0 +1,10 @@ +:host { + flex: 0 0 220px; + + .step-footer { + font-size: 12px; + } + .title { + max-width: 162px; // use for ellipsis + } +} diff --git a/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.spec.ts b/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.spec.ts new file mode 100644 index 00000000..72d57356 --- /dev/null +++ b/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DatasetVersionStepComponent } from './dataset-version-step.component'; + +describe('DatasetVersionStepComponent', () => { + let component: DatasetVersionStepComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DatasetVersionStepComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DatasetVersionStepComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.ts b/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.ts new file mode 100644 index 00000000..63bc3a9d --- /dev/null +++ b/src/app/webapp-common/datasets/dataset-version-step/dataset-version-step.component.ts @@ -0,0 +1,14 @@ +import { Component} from '@angular/core'; +import { + PipelineControllerStepComponent +} from '@common/pipelines-controller/pipeline-controller-step/pipeline-controller-step.component'; +import { fileSizeConfigStorage } from '@common/shared/pipes/filesize.pipe'; + +@Component({ + selector: 'sm-dataset-version-step', + templateUrl: './dataset-version-step.component.html', + styleUrls: ['../../pipelines-controller/pipeline-controller-step/pipeline-controller-step.component.scss', './dataset-version-step.component.scss'] +}) +export class DatasetVersionStepComponent extends PipelineControllerStepComponent{ + fileSizeConfigStorage = fileSizeConfigStorage; +} diff --git a/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.html b/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.html new file mode 100644 index 00000000..7dc3b3f5 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.html @@ -0,0 +1,64 @@ + +
+
+ + {{project.name | shortProjectName}} + + +
+
Updated {{project.last_update | timeAgo}}
+
+
+
+ + +
+ +
diff --git a/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.scss b/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.scss new file mode 100644 index 00000000..0d3b3bfc --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.scss @@ -0,0 +1,40 @@ +@import "../../shared/ui-components/styles/variables"; + +:host { + cursor: pointer; + + .card-name { + height: 32px; + } + + .project-name { + max-width: 280px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + color: $blue-200; + } + + .last-run { + margin-bottom: 6px; + font-size: 12px; + color: $blue-300; + } + .title { + font-weight: 500; + } + + .footer-tags { + display: flex; + min-height: 38px; + background-color: $blue-600; + padding: 0 16px; + align-items: center; + flex-wrap: wrap; + } + + .rename-state .last-run { + visibility: hidden; + height: 18px; + } +} diff --git a/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.spec.ts b/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.spec.ts new file mode 100644 index 00000000..6917f368 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SimpleDatasetCardComponent } from './simple-dataset-card.component'; + +describe('SimpleDatasetCardComponent', () => { + let component: SimpleDatasetCardComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SimpleDatasetCardComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SimpleDatasetCardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.ts b/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.ts new file mode 100644 index 00000000..f89b35e7 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-card/simple-dataset-card.component.ts @@ -0,0 +1,12 @@ +import {Component} from '@angular/core'; +import {PipelineCardComponent} from '@common/pipelines/pipeline-card/pipeline-card.component'; +import { fileSizeConfigStorage } from '@common/shared/pipes/filesize.pipe'; + +@Component({ + selector: 'sm-simple-dataset-card', + templateUrl: './simple-dataset-card.component.html', + styleUrls: ['./simple-dataset-card.component.scss'] +}) +export class SimpleDatasetCardComponent extends PipelineCardComponent{ + fileSizeConfigStorage = {...fileSizeConfigStorage, spacer: '', round: 1}; +} diff --git a/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.html b/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.html new file mode 100644 index 00000000..5abd109b --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.html @@ -0,0 +1,37 @@ + +
+

{{command}}

+
+
Copy command
+
+
+
+ + + + diff --git a/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.scss b/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.scss new file mode 100644 index 00000000..69b301d6 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.scss @@ -0,0 +1,62 @@ +@import 'variables.scss'; + +:host { + display: block; + position: relative; + + .download-button { + position: absolute; + right: 24px; + top: 12px; + z-index: 21; + color: $blue-300; + } + + ::ng-deep sm-table { + th:nth-child(1) {padding-left: 24px !important;} + td:nth-child(1) {padding-left: 24px !important;} + } +} + +.action-tooltip { + max-width: 400px; + background: $purple; + padding: 8px; + border-radius: 4px; + box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.16); + font-size: 11px; + + div, p { + color: $white; + + &.command { + background-color: $black; + padding: 6px 12px; + border-radius: 4px; + font-family: monospace; + } + } + + div.copy-button { + color: $light-periwinkle-two; + } + + .copy-button { + &:hover { + color: $white; + text-decoration: underline; + } + } + + .al-ico-success { + background-color: $pipeline-queued; + border-radius: 50%; + opacity: 0; + transition: opacity 200ms; + + &.visible { + opacity: 1; + } + } +} + diff --git a/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.spec.ts b/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.spec.ts new file mode 100644 index 00000000..9c51c5df --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SimpleDatasetVersionContentComponent } from './simple-dataset-version-content.component'; + +describe('SimpleDatasetVersionContentComponent', () => { + let component: SimpleDatasetVersionContentComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SimpleDatasetVersionContentComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SimpleDatasetVersionContentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.ts b/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.ts new file mode 100644 index 00000000..2abe25ae --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-content/simple-dataset-version-content.component.ts @@ -0,0 +1,49 @@ +import {ChangeDetectionStrategy, Component, Input, ViewChild} from '@angular/core'; +import {MatMenuTrigger} from '@angular/material/menu'; +import {ISmCol} from '@common/shared/ui-components/data/table/table.consts'; +import {fileSizeConfigStorage, FileSizePipe} from '@common/shared/pipes/filesize.pipe'; + +@Component({ + selector: 'sm-simple-dataset-version-content', + templateUrl: './simple-dataset-version-content.component.html', + styleUrls: ['./simple-dataset-version-content.component.scss'] +}) +export class SimpleDatasetVersionContentComponent { + public columns: ISmCol[]; + public tableData: string[][]; + public command: string; + private ngFile = new FileSizePipe(); + + @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; + copySuccess: boolean; + + @Input() set id(id: string) { + this.command = `clearml-data get --id ${id}`; + this.copySuccess = false; + } + + @Input() set data(csv: string) { + const lines = csv?.split('\n') ?? []; + const header = lines.splice(0, 1)[0] ?? ''; + this.columns = header.split(/, ?/).map((caption, index) => ({ + id: `${index}`, + header: caption, + style: {width: index === 1 ? '5px' : '300px'} + })); + const tableData = lines.map(line => line.split(/, ?/)); + if (Number(tableData[0]?.[1]) && this.columns[1]?.header?.includes('ize')) { + tableData.forEach( line => line[1] = this.ngFile.transform(parseInt(line[1], 10) || 0, fileSizeConfigStorage) as string); + } + this.tableData = tableData; + + } + + openMenu() { + this.trigger.openMenu(); + } + + copied() { + this.copySuccess = true; + window.setTimeout(() => this.copySuccess = false, 3000); + } +} diff --git a/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.html b/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.html new file mode 100644 index 00000000..06573ced --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.html @@ -0,0 +1,72 @@ + + +
VERSION INFO
+
+
+
+
{{entity.name}} v{{entity.runtime.version}}
+ {{entity.status | replaceViaMapPipe:convertStatusMap | replaceViaMapPipe:convertStatusMapBase}} +
+
+
+
ID
+
+ {{entity.id?.slice(0, 8)}} + +
+
+
+
Size
+
{{$any(entity?.runtime?.ds_total_size) | filesize : fileSizeConfigStorage || '-'}}(original)
+
+
+
+
{{$any(entity?.runtime?.ds_total_size_compressed) | filesize : fileSizeConfigStorage || '-'}}(compressed)
+
+
+
File count
+
{{entity?.runtime?.ds_file_count ?? '-'}}
+
+
+
Link count
+
{{entity?.runtime?.ds_link_count ?? '-'}}
+
+
+
+
FILES CHANGED
+
+
Added
+
{{entity?.runtime?.ds_change_add ?? '-'}}
+
+
+
Modified
+
{{entity?.runtime?.ds_change_modify ?? '-'}}
+
+
+
Removed
+
{{entity?.runtime?.ds_change_remove ?? '-'}}
+
+
+
Size
+
{{$any(entity?.runtime?.ds_change_size) | filesize: fileSizeConfigStorage}}
+
+
+
+ +
diff --git a/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.scss b/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.scss new file mode 100644 index 00000000..76bedf2f --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.scss @@ -0,0 +1,35 @@ +@import "variables"; + +:host { + .header { + width: 100%; + margin-top: 12px; + padding-bottom: 18px; + color: $blue-100; + border-bottom: solid 1px $dark-border; + } + + .al-ico-copy-to-clipboard { + opacity: 0; + transition: opacity 0.3s; + } + + .value:hover { + .al-ico-copy-to-clipboard { + opacity: 1; + } + } + + .section { + .param { + &.continue { + border-bottom: unset; + } + + .comment { + color: $blue-300; + margin-left: 4px; + } + } + } +} diff --git a/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.spec.ts b/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.spec.ts new file mode 100644 index 00000000..439f3007 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SimpleDatasetVersionDetailsComponent } from './simple-dataset-version-details.component'; + +describe('SimpleDatasetVersionDetailsComponent', () => { + let component: SimpleDatasetVersionDetailsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SimpleDatasetVersionDetailsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SimpleDatasetVersionDetailsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.ts b/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.ts new file mode 100644 index 00000000..aea3f6d7 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-details/simple-dataset-version-details.component.ts @@ -0,0 +1,17 @@ +import {Component} from '@angular/core'; +import {PipelineInfoComponent} from '@common/pipelines-controller/pipeline-details/pipeline-info.component'; +import { fileSizeConfigStorage } from '@common/shared/pipes/filesize.pipe'; +import {DATASETS_STATUS_LABEL, EXPERIMENTS_STATUS_LABELS} from '~/features/experiments/shared/experiments.const'; + +@Component({ + selector: 'sm-simple-dataset-version-details', + templateUrl: './simple-dataset-version-details.component.html', + styleUrls: ['./simple-dataset-version-details.component.scss', '../../pipelines-controller/pipeline-details/pipeline-info.component.scss'] +}) +export class SimpleDatasetVersionDetailsComponent extends PipelineInfoComponent { + public fileSizeConfigStorage = fileSizeConfigStorage; + + public convertStatusMap = DATASETS_STATUS_LABEL; + public convertStatusMapBase = EXPERIMENTS_STATUS_LABELS; + +} diff --git a/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.html b/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.html new file mode 100644 index 00000000..bfd47c61 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.html @@ -0,0 +1,82 @@ + +
+ +
+
+ +
+ +
+ + + + + + +
+
+
+ +
+
+ + + {{selected?.name}} v{{selected.runtime.version}} + +
+ +
+ + +
+
+
+ + + + +
+
+
diff --git a/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.scss b/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.scss new file mode 100644 index 00000000..5333393c --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.scss @@ -0,0 +1,25 @@ +:host { + sm-simple-dataset-version-details { + display: block; + position: absolute; + z-index: 2; + top: 24px; + right: 24px; + } + + .results-panel { + &.maximized { + height: 100%; + + .content { + flex: 1; + } + } + } + + sm-dataset-version-step { + margin: 0 50px; + position: relative; + z-index: 1; + } +} diff --git a/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.spec.ts b/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.spec.ts new file mode 100644 index 00000000..6e2fd75d --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SimpleDatasetVersionInfoComponent } from './simple-dataset-version-info.component'; + +describe('SimpleDatasetVersionInfoComponent', () => { + let component: SimpleDatasetVersionInfoComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SimpleDatasetVersionInfoComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SimpleDatasetVersionInfoComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.ts b/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.ts new file mode 100644 index 00000000..9f7e7e2a --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-info/simple-dataset-version-info.component.ts @@ -0,0 +1,69 @@ +import {Component} from '@angular/core'; +import { + PipelineControllerInfoComponent, PipelineItem, StatusOption +} from '@common/pipelines-controller/pipeline-controller-info/pipeline-controller-info.component'; +import {DagManagerUnsortedService} from '@common/shared/services/dag-manager-unsorted.service'; +import { + getSelectedPipelineStep, + setSelectedPipelineStep +} from '@common/experiments/actions/common-experiments-info.actions'; +import {last} from 'lodash/fp'; + +@Component({ + selector: 'sm-simple-dataset-version-info', + templateUrl: './simple-dataset-version-info.component.html', + styleUrls: [ + './simple-dataset-version-info.component.scss', + '../../pipelines-controller/pipeline-controller-info/pipeline-controller-info.component.scss' + ], + providers: [DagManagerUnsortedService] +}) +export class SimpleDatasetVersionInfoComponent extends PipelineControllerInfoComponent { + detailsPanelMode = StatusOption.content; + defaultDetailsMode = StatusOption.content; + public maximizeResults: boolean; + + convertPipelineToDagModel(pipeline): PipelineItem[] { + const res = super.convertPipelineToDagModel(pipeline); + if (res?.length > 0) { + window.setTimeout(() => this.selectStep(last(res)), 1000); + } + return res; + } + + getEntityId(params) { + return params?.versionId; + } + + protected getTreeObject(task) { + return task?.configuration?.['Dataset Struct']?.value; + } + + toggleResultSize() { + this.maximizeResults = ! this.maximizeResults; + } + + selectStep(step?: PipelineItem) { + if (step) { + const id = step?.data?.job_id; + if (id) { + this.store.dispatch(getSelectedPipelineStep({id})); + } else { + this.store.dispatch(setSelectedPipelineStep({step: {id, type: step.data.job_type, status: step.data.status, name: step.name}})); + this.showLog = false; + } + this.selectedEntity = step; + this.highlightArrows(); + } + } + + toggleDetails() { + this.showLog = !this.showLog; + } + + protected getPanelMode() { + return this.detailsPanelMode; + } + + protected resetUninitializedRunningFields() {} +} diff --git a/src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.html b/src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.html new file mode 100644 index 00000000..80115318 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.html @@ -0,0 +1,47 @@ + +
+
+ + +
+ + + + + +
+ + + + + diff --git a/src/app/features/dashboard/containers/dashboard-search/dashboard-search.component.scss b/src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.scss similarity index 100% rename from src/app/features/dashboard/containers/dashboard-search/dashboard-search.component.scss rename to src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.scss diff --git a/src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.spec.ts b/src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.spec.ts new file mode 100644 index 00000000..050e5916 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SimpleDatasetVersionMenuComponent } from './simple-dataset-version-menu.component'; + +describe('SimpleDatasetVersionMenuComponent', () => { + let component: SimpleDatasetVersionMenuComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SimpleDatasetVersionMenuComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SimpleDatasetVersionMenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.ts b/src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.ts new file mode 100644 index 00000000..84514993 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-menu/simple-dataset-version-menu.component.ts @@ -0,0 +1,12 @@ +import {Component} from '@angular/core'; +import {ExperimentMenuComponent} from '@common/experiments/shared/components/experiment-menu/experiment-menu.component'; +import {EntityTypeEnum} from '~/shared/constants/non-common-consts'; + +@Component({ + selector: 'sm-simple-dataset-version-menu', + templateUrl: './simple-dataset-version-menu.component.html', + styleUrls: ['../../experiments/shared/components/experiment-menu/experiment-menu.component.scss','./simple-dataset-version-menu.component.scss'] +}) +export class SimpleDatasetVersionMenuComponent extends ExperimentMenuComponent { + entityTypeEnum = EntityTypeEnum; +} diff --git a/src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.html b/src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.html new file mode 100644 index 00000000..cd27ca8f --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.html @@ -0,0 +1,17 @@ +
+ + + + +
No preview to show
+
+ diff --git a/src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.scss b/src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.scss new file mode 100644 index 00000000..46cbdb57 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.scss @@ -0,0 +1,14 @@ +.preview-container { + overflow: auto; + height: 100%; +} + +.debug-title { + font-size: 18px; + text-align: center; + padding: 24px; +} + +.dataset-version-preview.hidden { + display: none; +} diff --git a/src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.ts b/src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.ts new file mode 100644 index 00000000..2dc208a1 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-version-preview/simple-dataset-version-preview.component.ts @@ -0,0 +1,10 @@ +import {Component, Input} from '@angular/core'; + +@Component({ + selector: 'sm-simple-dataset-version-preview', + templateUrl: './simple-dataset-version-preview.component.html', + styleUrls: ['./simple-dataset-version-preview.component.scss'] +}) +export class SimpleDatasetVersionPreviewComponent { + @Input() selected; +} diff --git a/src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.html b/src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.html new file mode 100644 index 00000000..0b4fbc4e --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.html @@ -0,0 +1,120 @@ + + + +
+ + + + + + + + + +
+ + + + + + + diff --git a/src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.scss b/src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.spec.ts b/src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.spec.ts new file mode 100644 index 00000000..3bb9c7c4 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SimpleDatasetVersionsComponent } from './simple-dataset-versions.component'; + +describe('SimpleDatasetVersionsComponent', () => { + let component: SimpleDatasetVersionsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SimpleDatasetVersionsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SimpleDatasetVersionsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.ts b/src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.ts new file mode 100644 index 00000000..b846e0a1 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-dataset-versions/simple-dataset-versions.component.ts @@ -0,0 +1,74 @@ +import {Component, OnInit} from '@angular/core'; +import {ControllersComponent} from '@common/pipelines-controller/controllers.component'; +import {EntityTypeEnum} from '~/shared/constants/non-common-consts'; +import {Observable} from 'rxjs'; +import {CountAvailableAndIsDisableSelectedFiltered} from '@common/shared/entity-page/items.utils'; +import * as experimentsActions from '@common/experiments/actions/common-experiments-view.actions'; +import {INITIAL_CONTROLLER_TABLE_COLS} from '@common/pipelines-controller/controllers.consts'; +import {EXPERIMENTS_TABLE_COL_FIELDS} from '~/features/experiments/shared/experiments.const'; +import {Store} from '@ngrx/store'; +import {IExperimentsViewState} from '~/features/experiments/reducers/experiments-view.reducer'; +import {SmSyncStateSelectorService} from '@common/core/services/sync-state-selector.service'; +import {ActivatedRoute, Router} from '@angular/router'; +import {MatDialog} from '@angular/material/dialog'; +import {RefreshService} from '@common/core/services/refresh.service'; +import {take} from 'rxjs/operators'; + +@Component({ + selector: 'sm-simple-dataset-versions', + templateUrl: './simple-dataset-versions.component.html', + styleUrls: ['./simple-dataset-versions.component.scss', '../../pipelines-controller/controllers.component.scss'] +}) +export class SimpleDatasetVersionsComponent extends ControllersComponent implements OnInit { + entityType = EntityTypeEnum.dataset; + public shouldOpenDetails = true; + isArchived: boolean; + + protected getParamId(params) { + return params?.versionId; + } + + constructor(protected store: Store, + protected syncSelector: SmSyncStateSelectorService, + protected route: ActivatedRoute, + protected router: Router, + protected dialog: MatDialog, + protected refresh: RefreshService + ) { + super(store, syncSelector, route, router, dialog, refresh); + this.tableCols = INITIAL_CONTROLLER_TABLE_COLS.map((col) => + col.id === EXPERIMENTS_TABLE_COL_FIELDS.NAME ? {...col, header: 'VERSION NAME'} : col); + } + + ngOnInit() { + super.ngOnInit(); + this.experiments$ + .pipe(take(1)) + .subscribe(experiments => { + this.firstExperiment = experiments?.[0]; + if (this.firstExperiment ) { + if (!this.route.snapshot.firstChild?.params.versionId) { + this.store.dispatch(experimentsActions.experimentSelectionChanged({ + experiment: this.firstExperiment, + project: this.selectedProject + })); + } + } + }); + } + + createFooterItems(config: { + entitiesType: EntityTypeEnum; + selected$: Observable>; + showAllSelectedIsActive$: Observable; + tags$: Observable; + data$?: Observable>; + companyTags$: Observable; + projectTags$: Observable; + tagsFilterByProject$: Observable; + }) { + super.createFooterItems(config); + this.footerItems.splice(5, 1); + } + +} diff --git a/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.html b/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.html new file mode 100644 index 00000000..8943f794 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.html @@ -0,0 +1,72 @@ + +
+ + + + + + + +
+ +
+
+
+ +
+
+
NO DATASETS TO SHOW
+
Run your first dataset to see it displayed here + or generate example +
+ + +
+
+ + +
+ +
+
+
+ Use ClearML Data from CLI or in your Python code.
+ Run these code snippets for a quick example (Requires ClearML 1.6 or above).
+ For more details see the documentation +
+
+ + +
+
+
+
diff --git a/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.scss b/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.scss new file mode 100644 index 00000000..2f2b7e89 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.scss @@ -0,0 +1,92 @@ +@import "variables"; + +:host { + display: block; + height: 100%; + overflow-y: auto; + overflow-x: hidden; + + sm-projects-header { + height: $nav-bar-height; + grid-column: 1 / -1; + position: sticky; + top: 0; + z-index: 10; + background-color: $blue-800; + } + .empty-datasets { + display: flex; + flex-direction: column; + max-width: map-get($grid-max-widths, xl); + margin: 0 auto; + padding: 24px; + + .title-icon { + color: $blue-600; + text-align: center; + margin: 48px 0 24px; + } + .title { + font-size: 20px; + font-weight: 500; + color: $blue-100; + margin-bottom: 6px; + text-align: center; + } + + .sub-title { + text-align: center; + margin-bottom: 64px; + + .link { + color: $neon-yellow; + } + } + + } + +} +.content { + width: 100%; + display: flex; + flex-wrap: wrap; + gap: 24px; + + .navbar{ + display: flex; + justify-content: center; + gap: 1px; + } + .code { + min-width: 400px; + display: flex; + flex: 1; + flex-direction: column; + + a.dark { + color: white; + } + + sm-code-editor { + display: block; + width: 100%; + height: 470px; + border-radius: 6px; + overflow: hidden; + } + } + + .diagram { + display: flex; + flex: 1; + justify-content: center; + + i { + width: 338px; + height: 284px; + margin-top: 126px; + } + } +} + + diff --git a/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.spec.ts b/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.spec.ts new file mode 100644 index 00000000..e1073865 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SimpleDatasetsComponent } from './simple-datasets.component'; + +describe('SimpleDatasetsComponent', () => { + let component: SimpleDatasetsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SimpleDatasetsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SimpleDatasetsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.ts b/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.ts new file mode 100644 index 00000000..ed8d7ab2 --- /dev/null +++ b/src/app/webapp-common/datasets/simple-datasets/simple-datasets.component.ts @@ -0,0 +1,84 @@ +import {Component, OnInit, TemplateRef, ViewChild} from '@angular/core'; +import {PipelinesPageComponent} from '@common/pipelines/pipelines-page/pipelines-page.component'; +import {ProjectsGetAllResponseSingle} from '~/business-logic/model/projects/projectsGetAllResponseSingle'; +import {setSelectedProjectId} from '@common/core/actions/projects.actions'; +import {ConfirmDialogComponent} from '../../shared/ui-components/overlay/confirm-dialog/confirm-dialog.component'; +import {showExampleDatasets} from '../../projects/common-projects.actions'; +import {selectShowDatasetExamples} from '../../projects/common-projects.reducer'; + +@Component({ + selector: 'sm-simple-datasets', + templateUrl: './simple-datasets.component.html', + styleUrls: ['./simple-datasets.component.scss'] +}) +export class SimpleDatasetsComponent extends PipelinesPageComponent implements OnInit { + @ViewChild('datasetEmptyStateContent') datasetEmptyStateRef: TemplateRef; + + initDatasetCLICode = `curl -o Affairs.csv https://vincentarelbundock.github.io/Rdatasets/csv/AER/Affairs.csv + +clearml-data create --project DatasetProject --name HelloDataset + +clearml-data add --files Affairs.csv + +clearml-data close`; + + initDatasetSDKCode = `# create example dataset +from clearml import StorageManager, Dataset + +# Download sample csv file +csv_file = StorageManager.get_local_copy( + remote_url="https://vincentarelbundock.github.io/Rdatasets/csv/AER/Affairs.csv" +) + +# Create a dataset with ClearML\`s Dataset class +dataset = Dataset.create( + dataset_project="DatasetProject", dataset_name="HelloDataset" +) + +# add the example csv +dataset.add_files(path=csv_file) + +# Upload dataset to ClearML server (customizable) +dataset.upload() + +# commit dataset changes +dataset.finalize()`; + public emptyStateTab: string = 'cli'; + + public projectCardClicked(project: ProjectsGetAllResponseSingle) { + this.router.navigate(['simple', project.id, 'experiments'], {relativeTo: this.route}); + this.store.dispatch(setSelectedProjectId({projectId: project.id, example: this.isExample(project)})); + } + + protected getName() { + return 'dataset'; + } + + protected getDeletePopupEntitiesList() { + return 'datasets'; + } + + createDataset() { + this.dialog.open(ConfirmDialogComponent, { + data: { + title: 'CREATE NEW DATASET', + template: this.datasetEmptyStateRef, + iconClass: 'al-icon al-ico-datasets al-color blue-300', + width: 1200 + }, + maxWidth: '95vw' + }); + } + + emptyStateTabClicked(codeTab: string) { + this.emptyStateTab = codeTab; + } + createExamples() { + this.store.dispatch(showExampleDatasets()); + } + ngOnInit() { + super.ngOnInit(); + this.showExamples$ = this.store.select(selectShowDatasetExamples); + + } +} diff --git a/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.html b/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.html index 0bf6aa5b..b93d05e8 100644 --- a/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.html +++ b/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.html @@ -1,5 +1,5 @@ -
+
-
- +
+
@@ -41,14 +43,15 @@
-
{{frame?.variantAndMetric || frame?.variant}}
+
{{frame?.variantAndMetric || frame?.variant}}
diff --git a/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.scss b/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.scss index ced6c9ff..83945d8f 100644 --- a/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.scss +++ b/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.scss @@ -7,6 +7,19 @@ position: relative; text-align: center; background: #efefef; + &.dark{ + background: #1f2434; + &.loading { + background: #1f2434; + } + + .image-var { + color: #a4b2db; + } + .html-viewer { + background-color: #1f2434; + } + } &.loading { background: white; @@ -16,11 +29,11 @@ position: relative; top: 50%; transform: translateY(-50%); - max-width: 150px; + max-width: 100%; max-height: 130px; } - img.loading { + img.loading, .html-wrap.loading { background-image: url("../../assets/icons/Spinner.svg"); background-repeat: no-repeat; background-position: center center; @@ -46,15 +59,15 @@ } .html-viewer { - resize: both; + resize: none; overflow: auto; - border: 1px solid black; - transform: scale(0.44); + transform: scale(0.448); transform-origin: 0 0; + border: none; } .html-snippet { - border: 1px solid $blue-200; border-radius: 4px; + overflow: hidden; &:hover { .toolbar { @@ -66,7 +79,7 @@ .toolbar { display: flex; position: absolute; - bottom: 8px; + bottom: 32px; left: 50%; transform: translateX(-50%); opacity: 0; diff --git a/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.ts b/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.ts index 68e61986..17a182e7 100644 --- a/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.ts +++ b/src/app/webapp-common/debug-images/debug-image-snippet/debug-image-snippet.component.ts @@ -1,4 +1,4 @@ -import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core'; +import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core'; import {isHtmlPage, isTextFileURL} from '../../shared/utils/shared-utils'; import {IsAudioPipe} from '../../shared/pipes/is-audio.pipe'; import {IsVideoPipe} from '../../shared/pipes/is-video.pipe'; @@ -15,12 +15,13 @@ import {Observable} from 'rxjs/internal/Observable'; templateUrl: './debug-image-snippet.component.html', styleUrls: ['./debug-image-snippet.component.scss'] }) -export class DebugImageSnippetComponent implements OnInit { +export class DebugImageSnippetComponent { public type: 'image' | 'player' | 'html'; - public themeEnum = ThemeEnum; public source$: Observable; private _frame: any; + public themeEnum = ThemeEnum; + @Input() theme: ThemeEnum = ThemeEnum.Light; @Input() set frame(frame) { if (frame.url) { this.source$ = getSignedUrlOrOrigin$(frame.url, this.store).pipe( @@ -38,9 +39,11 @@ export class DebugImageSnippetComponent implements OnInit { } this._frame = frame; } + get frame() { return this._frame; } + @Output() imageError = new EventEmitter(); @Output() imageClicked = new EventEmitter(); @ViewChild('video') video: ElementRef; @@ -51,9 +54,6 @@ export class DebugImageSnippetComponent implements OnInit { constructor(private store: Store) { } - ngOnInit() { - } - openInNewTab(source: string) { window.open(source, '_blank'); } @@ -75,4 +75,10 @@ export class DebugImageSnippetComponent implements OnInit { log($event: ErrorEvent) { console.log($event); } + + iframeLoaded(event) { + if (event.target.src) { + this.isLoading = false; + } + } } diff --git a/src/app/webapp-common/debug-images/debug-images-actions.ts b/src/app/webapp-common/debug-images/debug-images-actions.ts index 06d6fc28..95939418 100644 --- a/src/app/webapp-common/debug-images/debug-images-actions.ts +++ b/src/app/webapp-common/debug-images/debug-images-actions.ts @@ -68,13 +68,13 @@ export const setBeginningOfTime = createAction( props<{ task: string; beginningOfTime: boolean }>() ); -export const getDebugImageSample = createAction(DEBUG_IMAGES_PREFIX + 'GET_DEBUG_IMAGES_FOR_ITERATION', props<{ task: string; metric: string; variant: string; iteration: number }>()); +export const getDebugImageSample = createAction(DEBUG_IMAGES_PREFIX + 'GET_DEBUG_IMAGES_FOR_ITERATION', props<{ task: string; metric: string; variant: string; iteration: number; isAllMetrics: boolean }>()); export const getNextDebugImageSample = createAction(DEBUG_IMAGES_PREFIX + 'GET_NEXT_DEBUG_IMAGE', props<{ task: string; navigateEarlier: boolean }>()); export const setCurrentDebugImage = createAction(DEBUG_IMAGES_PREFIX + 'SET_DEBUG_IMAGES_FOR_ITERATION', props<{ event: any }>()); export const setDebugImageViewerScrollId = createAction(DEBUG_IMAGES_PREFIX + 'SET_DEBUG_IMAGE_VIEWER_SCROLL_ID', props<{ scrollId: string }>()); export const setDebugImageIterations = createAction(DEBUG_IMAGES_PREFIX + 'SET_DEBUG_IMAGE_ITERATIONS', props()); -export const setDisplayerEndOfTime = createAction(DEBUG_IMAGES_PREFIX + 'SET_DISPLAYER_END_OF_TIME', props<{ endOfTime: boolean }>()); -export const setDisplayerBeginningOfTime = createAction(DEBUG_IMAGES_PREFIX + 'SET_DISPLAYER_BEGINNING_OF_TIME', props<{ beginningOfTime: boolean }>()); -export const resetDisplayer = createAction(DEBUG_IMAGES_PREFIX + 'RESET_DISPLAYER'); +export const setViewerEndOfTime = createAction(DEBUG_IMAGES_PREFIX + 'SET_VIEWER_END_OF_TIME', props<{ endOfTime: boolean }>()); +export const setViewerBeginningOfTime = createAction(DEBUG_IMAGES_PREFIX + 'SET_VIEWER_BEGINNING_OF_TIME', props<{ beginningOfTime: boolean }>()); +export const resetViewer = createAction(DEBUG_IMAGES_PREFIX + 'RESET_VIEWER'); diff --git a/src/app/webapp-common/debug-images/debug-images-effects.ts b/src/app/webapp-common/debug-images/debug-images-effects.ts index 57ce3ab9..4a362ba2 100644 --- a/src/app/webapp-common/debug-images/debug-images-effects.ts +++ b/src/app/webapp-common/debug-images/debug-images-effects.ts @@ -13,7 +13,7 @@ import { setCurrentDebugImage, setDebugImageIterations, setDebugImageViewerScrollId, - setDisplayerBeginningOfTime, setDisplayerEndOfTime + setViewerBeginningOfTime, setViewerEndOfTime } from './debug-images-actions'; import {EventsDebugImagesResponse} from '~/business-logic/model/events/eventsDebugImagesResponse'; import {EventsGetTaskMetricsResponse} from '~/business-logic/model/events/eventsGetTaskMetricsResponse'; @@ -147,7 +147,8 @@ export class DebugImagesEffects { iteration: action.iteration, metric: action.metric, variant: action.variant, - scroll_id: scrollId + scroll_id: scrollId, + navigate_current_metric: !action.isAllMetrics /* eslint-enable @typescript-eslint/naming-convention */ }) .pipe( @@ -176,14 +177,14 @@ export class DebugImagesEffects { .pipe( mergeMap(res => { if (!res.event) { - return [action.navigateEarlier ? setDisplayerBeginningOfTime({beginningOfTime: true}) : setDisplayerEndOfTime({endOfTime: true})]; + return [action.navigateEarlier ? setViewerBeginningOfTime({beginningOfTime: true}) : setViewerEndOfTime({endOfTime: true})]; } else { return [ // eslint-disable-next-line @typescript-eslint/naming-convention setDebugImageIterations({min_iteration: res.min_iteration, max_iteration: res.max_iteration}), setCurrentDebugImage({event: res.event}), deactivateLoader(action.type), setDebugImageViewerScrollId({scrollId: res.scroll_id}), - action.navigateEarlier ? setDisplayerBeginningOfTime({beginningOfTime: false}) : setDisplayerEndOfTime({endOfTime: false}) + action.navigateEarlier ? setViewerBeginningOfTime({beginningOfTime: false}) : setViewerEndOfTime({endOfTime: false}) ]; } }), diff --git a/src/app/webapp-common/debug-images/debug-images-reducer.ts b/src/app/webapp-common/debug-images/debug-images-reducer.ts index ba63851d..fb2ce3ad 100644 --- a/src/app/webapp-common/debug-images/debug-images-reducer.ts +++ b/src/app/webapp-common/debug-images/debug-images-reducer.ts @@ -2,14 +2,14 @@ import { fetchExperiments, getDebugImagesMetrics, resetDebugImages, - resetDisplayer, + resetViewer, setBeginningOfTime, setCurrentDebugImage, setDebugImageIterations, setDebugImages, setDebugImageViewerScrollId, - setDisplayerBeginningOfTime, - setDisplayerEndOfTime, setExperimentsNames, setMetrics, setSelectedMetric, setTimeIsNow + setViewerBeginningOfTime, + setViewerEndOfTime, setExperimentsNames, setMetrics, setSelectedMetric, setTimeIsNow } from './debug-images-actions'; import {Task} from '../../business-logic/model/tasks/task'; import {createFeatureSelector, createReducer, createSelector, on} from '@ngrx/store'; @@ -25,9 +25,9 @@ export interface IDebugImagesState { optionalMetrics: Array; searchTerm: string; scrollId: any; - imageDisplayerScrollId: string; - imageDisplayerBeginningOfTime: boolean; - imageDisplayerEndOfTime: boolean; + imageViewerScrollId: string; + imageViewerBeginningOfTime: boolean; + imageViewerEndOfTime: boolean; noMore: boolean; selectedMetric: any; timeIsNow: any; @@ -53,9 +53,9 @@ export const initialState: IDebugImagesState = { tasks: [], optionalMetrics: [], scrollId: {}, - imageDisplayerScrollId: null, - imageDisplayerBeginningOfTime: null, - imageDisplayerEndOfTime: null, + imageViewerScrollId: null, + imageViewerBeginningOfTime: null, + imageViewerEndOfTime: null, noMore: true, selectedMetric: null, timeIsNow: {}, @@ -74,9 +74,9 @@ export const selectTimeIsNow = createSelector(debugImages, (state) => state.time export const selectBeginningOfTime = createSelector(debugImages, (state) => state.beginningOfTime); export const selectMinMaxIterations = createSelector(debugImages, (state) => state.minMaxIterations); export const selectCurrentImageViewerDebugImage = createSelector(debugImages, (state) => state.currentImageViewerDebugImage); -export const selectImageViewerScrollId = createSelector(debugImages, (state) => state.imageDisplayerScrollId); -export const selectDisplayerEndOfTime = createSelector(debugImages, (state) => state.imageDisplayerEndOfTime); -export const selectDisplayerBeginningOfTime = createSelector(debugImages, (state) => state.imageDisplayerBeginningOfTime); +export const selectImageViewerScrollId = createSelector(debugImages, (state) => state.imageViewerScrollId); +export const selectViewerEndOfTime = createSelector(debugImages, (state) => state.imageViewerEndOfTime); +export const selectViewerBeginningOfTime = createSelector(debugImages, (state) => state.imageViewerBeginningOfTime); export const debugSamplesReducer = createReducer( initialState, @@ -105,14 +105,14 @@ export const debugSamplesReducer = createReducer( // eslint-disable-next-line @typescript-eslint/naming-convention on(setDebugImageIterations, (state, action) => ({...state, minMaxIterations: {min_iteration: action.min_iteration, max_iteration: action.max_iteration}})), on(setCurrentDebugImage, (state, action) => ({...state, currentImageViewerDebugImage: action.event})), - on(setDebugImageViewerScrollId, (state, action) => ({...state, imageDisplayerScrollId: action.scrollId})), - on(setDisplayerEndOfTime, (state, action) => ({...state, imageDisplayerEndOfTime: action.endOfTime})), - on(setDisplayerBeginningOfTime, (state, action) => ({...state, imageDisplayerBeginningOfTime: action.beginningOfTime})), - on(resetDisplayer, state => ({ + on(setDebugImageViewerScrollId, (state, action) => ({...state, imageViewerScrollId: action.scrollId})), + on(setViewerEndOfTime, (state, action) => ({...state, imageViewerEndOfTime: action.endOfTime})), + on(setViewerBeginningOfTime, (state, action) => ({...state, imageViewerBeginningOfTime: action.beginningOfTime})), + on(resetViewer, state => ({ ...state, - imageDisplayerEndOfTime: null, - imageDisplayerBeginningOfTime: null, - imageDisplayerScrollId: null, + imageViewerEndOfTime: null, + imageViewerBeginningOfTime: null, + imageViewerScrollId: null, minMaxIterations: null, currentImageViewerDebugImage: null })), diff --git a/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.html b/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.html index 6a9721d1..dee5d8e6 100644 --- a/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.html +++ b/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.html @@ -1,6 +1,6 @@ - + {{iteration.iter}} @@ -8,6 +8,7 @@ diff --git a/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.scss b/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.scss index b658da25..86181b3a 100644 --- a/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.scss +++ b/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.scss @@ -102,6 +102,6 @@ } .sample-row { - gap: 24px; + gap: 12px; } } diff --git a/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.ts b/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.ts index 1eebe4b2..189046ae 100644 --- a/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.ts +++ b/src/app/webapp-common/debug-images/debug-images-view/debug-images-view.component.ts @@ -1,6 +1,7 @@ import {Component, Input, Output} from '@angular/core'; import {EventEmitter} from '@angular/core'; import {Iteration, Event} from '@common/debug-images/debug-images.component'; +import {ThemeEnum} from '../../experiments/shared/common-experiments.const'; @Component({ selector: 'sm-debug-images-view', @@ -8,6 +9,7 @@ import {Iteration, Event} from '@common/debug-images/debug-images.component'; styleUrls: ['./debug-images-view.component.scss'] }) export class DebugImagesViewComponent { + public themeEnum = ThemeEnum; public trackKey = (index: number, item: any) => item.iter; public trackFrame = (index: number, item: any) => `${item?.key} ${item?.timestamp}`; @@ -17,6 +19,7 @@ export class DebugImagesViewComponent { @Input() title; @Input() iterations: Iteration[]; @Input() isDarkTheme = false; + @Input() isDatasetVersionPreview = false; @Output() imageClicked = new EventEmitter(); @Output() refreshClicked = new EventEmitter(); @Output() urlError = new EventEmitter(); diff --git a/src/app/webapp-common/debug-images/debug-images.component.html b/src/app/webapp-common/debug-images/debug-images.component.html index 202e7c0d..dc1becb7 100644 --- a/src/app/webapp-common/debug-images/debug-images.component.html +++ b/src/app/webapp-common/debug-images/debug-images.component.html @@ -10,7 +10,7 @@
-
+
+ smTooltip="Newest samples">
@@ -59,6 +59,7 @@ [title]="experimentNames && experimentNames[experimentId]" [isMergeIterations]="mergeIterations" [isDarkTheme]="isDarkTheme" + [isDatasetVersionPreview]="isDatasetVersionPreview" (imageClicked)="imageClicked($event, experimentId)" (urlError)="urlError()" > diff --git a/src/app/webapp-common/debug-images/debug-images.component.scss b/src/app/webapp-common/debug-images/debug-images.component.scss index 4d1e9cf2..e92f092e 100644 --- a/src/app/webapp-common/debug-images/debug-images.component.scss +++ b/src/app/webapp-common/debug-images/debug-images.component.scss @@ -10,7 +10,6 @@ .experiment-name { font-size: 18px; - height: 22px; max-width: 93%; display: inline-block; white-space: nowrap; @@ -22,12 +21,6 @@ color: inherit; } } - - .id-icon { - width: 16px; - height: 13px; - margin-left: 6px; - } } } @@ -76,24 +69,6 @@ sm-debug-images-view { &.minimized { margin: 0 0 24px; } - - .al-ico-next-batch, .al-ico-prev-batch, .al-ico-back-to-top { - cursor: pointer; - } - - label { - color: $blue-400; - margin: 0; - } - - .disabled { - cursor: auto; - opacity: 0.5; - } - - b { - min-width: 45px - } } .single-debug-images-container { diff --git a/src/app/webapp-common/debug-images/debug-images.component.ts b/src/app/webapp-common/debug-images/debug-images.component.ts index 8810d175..e446fa61 100644 --- a/src/app/webapp-common/debug-images/debug-images.component.ts +++ b/src/app/webapp-common/debug-images/debug-images.component.ts @@ -1,4 +1,15 @@ -import {ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core'; +import { + ChangeDetectorRef, + Component, + ElementRef, + EventEmitter, + Input, + OnChanges, + OnDestroy, + OnInit, + Output, + SimpleChanges +} from '@angular/core'; import {combineLatest, Observable, Subscription} from 'rxjs'; import {select, Store} from '@ngrx/store'; import {IExperimentInfoState} from '~/features/experiments/reducers/experiment-info.reducer'; @@ -21,12 +32,11 @@ import {distinctUntilChanged, filter, map, withLatestFrom} from 'rxjs/operators' import {Task} from '~/business-logic/model/tasks/task'; import {ActivatedRoute} from '@angular/router'; import {TaskStatusEnum} from '~/business-logic/model/tasks/taskStatusEnum'; -import {ImageDisplayerComponent} from '../experiments/dumb/image-displayer/image-displayer.component'; +import {ImageViewerComponent} from '../experiments/dumb/image-viewer/image-viewer.component'; import {selectSelectedExperiment} from '~/features/experiments/reducers'; import {TaskMetric} from '~/business-logic/model/events/taskMetric'; import {get, isEqual} from 'lodash/fp'; import {ALL_IMAGES} from './debug-images-effects'; -import {MatSelectChange} from '@angular/material/select'; import {getSignedUrl} from '../core/actions/common-auth.actions'; import {addMessage} from '../core/actions/layout.actions'; import {RefreshService} from '@common/core/services/refresh.service'; @@ -40,6 +50,7 @@ export interface Event { variant?: string; key?: string; url?: string; + // eslint-disable-next-line @typescript-eslint/naming-convention '@timestamp'?: string; worker?: string; } @@ -53,7 +64,7 @@ interface DebugSamples { metrics: string[]; metric: string; scrollId: string; - data: Iteration[] + data: Iteration[]; } @Component({ @@ -61,9 +72,11 @@ interface DebugSamples { templateUrl: './debug-images.component.html', styleUrls: ['./debug-images.component.scss'], }) -export class DebugImagesComponent implements OnInit, OnDestroy { +export class DebugImagesComponent implements OnInit, OnDestroy, OnChanges { @Input() isDarkTheme = false; + @Input() isDatasetVersionPreview = false; + @Input() selected: Task; @Output() copyIdClicked = new EventEmitter(); private debugImagesSubscription: Subscription; @@ -87,7 +100,7 @@ export class DebugImagesComponent implements OnInit, OnDestroy { public noMoreData$: Observable; public optionalMetrics$: Observable; - public optionalMetrics: {[experimentId: string]: string}; + public optionalMetrics: { [experimentId: string]: string }; public selectedMetrics: { [taskId: string]: string } = {}; public beginningOfTime: any; private beginningOfTimeSubscription: Subscription; @@ -120,7 +133,8 @@ export class DebugImagesComponent implements OnInit, OnDestroy { map(([, debugImages]) => Object.entries(debugImages).reduce(((acc, val: any) => { const id = val[0]; const iterations = val[1].metrics.find(m => m.task === id).iterations; - acc[id] = {data: iterations.map(iteration => ({ + acc[id] = { + data: iterations.map(iteration => ({ iter: iteration.iter, events: iteration.events.map(event => { this.store.dispatch(getSignedUrl({url: event.url, config: {disableCache: event.timestamp}})); @@ -130,7 +144,8 @@ export class DebugImagesComponent implements OnInit, OnDestroy { variantAndMetric: this.selectedMetric === ALL_IMAGES ? `${event.metric}/${event.variant}` : '' }; }) - }))}; + })) + }; acc[id].metrics = val[1].metrics.map(metric => metric.metric || metric.iterations[0].events[0].metric); acc[id].metric = acc[id].metrics[0]; acc[id].scrollId = val[1].scroll_id; @@ -153,6 +168,14 @@ export class DebugImagesComponent implements OnInit, OnDestroy { ); } + ngOnChanges(changes: SimpleChanges): void { + if (changes.selected && [changes.selected.currentValue.id] !== this.experimentIds) { + this.experimentNames = {[changes.selected.currentValue.id]: changes.selected.currentValue.name}; + this.experimentIds = [changes.selected.currentValue.id]; + this.selectMetric({value: this.allImages}, changes.selected.currentValue.id); + } + } + ngOnInit() { this.mergeIterations = this.activeRoute.snapshot.routeConfig?.data?.mergeIterations; const multipleExperiments = !!this.activeRoute.snapshot.routeConfig?.data?.multiple; @@ -186,7 +209,6 @@ export class DebugImagesComponent implements OnInit, OnDestroy { if (this.isTaskRunning(tasks) && (Object.keys(this.debugImages || {}).length > 0 || this.beginningOfTime[this.experimentIds[0]])) { this.store.dispatch(getDebugImagesMetrics({tasks: this.experimentIds})); } - this.experiments = tasks; this.experimentNames = tasks.reduce((acc, task) => ({ ...acc, @@ -202,7 +224,7 @@ export class DebugImagesComponent implements OnInit, OnDestroy { } else { this.selectedExperimentSubscription = this.store.select(selectSelectedExperiment) .pipe( - filter(experiment => !!experiment), + filter(experiment => !!experiment && !this.isDatasetVersionPreview), distinctUntilChanged((previous, current) => previous?.id === current?.id) ).subscribe(experiment => { this.experimentNames = {[experiment.id]: experiment.name}; @@ -211,10 +233,10 @@ export class DebugImagesComponent implements OnInit, OnDestroy { }); } - // auto refresh subscription for compare only. + this.refreshingSubscription = this.refresh.tick .pipe( - filter(auto => !multipleExperiments || auto !== null), + filter(auto => (!multipleExperiments || auto !== null) && (!this.isDatasetVersionPreview || this.selected.status === TaskStatusEnum.InProgress)), withLatestFrom( this.store.select(selectTimeIsNow), ) @@ -230,7 +252,7 @@ export class DebugImagesComponent implements OnInit, OnDestroy { task: experimentId, metric: this.debugImages[experimentId]?.metric, }, - autoRefresh: auto + autoRefresh: (auto!==false) })); } }); @@ -275,9 +297,10 @@ export class DebugImagesComponent implements OnInit, OnDestroy { const iterationSnippets = this.debugImages?.[experimentId]?.data.map(iter => iter.events).flat(); const sources = iterationSnippets.map(img => img.url); const index = iterationSnippets.findIndex(img => img.url === frame.url); - this.dialog.open(ImageDisplayerComponent, { - data: {imageSources: sources, index, snippetsMetaData: iterationSnippets}, - panelClass: ['image-displayer-dialog'], + const isAllMetrics = this.selectedMetrics[experimentId] === ALL_IMAGES; + this.dialog.open(ImageViewerComponent, { + data: {imageSources: sources, index, snippetsMetaData: iterationSnippets, isAllMetrics}, + panelClass: ['image-viewer-dialog'], height: '100%', maxHeight: 'auto', width: '100%', @@ -293,8 +316,9 @@ export class DebugImagesComponent implements OnInit, OnDestroy { return experimentID; } - selectMetric(change: MatSelectChange, task) { + selectMetric(change: any, task) { this.selectedMetric = change.value; + this.selectedMetrics[task] = change.value; this.store.dispatch(debugActions.setSelectedMetric({payload: {task, metric: change.value}})); } diff --git a/src/app/webapp-common/debug-images/debug-images.module.ts b/src/app/webapp-common/debug-images/debug-images.module.ts index 1aaa8074..5eb854e1 100644 --- a/src/app/webapp-common/debug-images/debug-images.module.ts +++ b/src/app/webapp-common/debug-images/debug-images.module.ts @@ -4,7 +4,7 @@ import {NgModule} from '@angular/core'; import {EffectsModule} from '@ngrx/effects'; import {StoreModule} from '@ngrx/store'; import {ExperimentCompareSharedModule} from '../experiments-compare/shared/experiment-compare-shared.module'; -import {ImageDisplayerComponent} from '../experiments/dumb/image-displayer/image-displayer.component'; +import {ImageViewerComponent} from '../experiments/dumb/image-viewer/image-viewer.component'; import {SMSharedModule} from '../shared/shared.module'; import {UiComponentsModule} from '../shared/ui-components/ui-components.module'; import {DebugImageSnippetComponent} from './debug-image-snippet/debug-image-snippet.component'; @@ -15,22 +15,22 @@ import {DebugImagesComponent} from './debug-images.component'; import {MatSliderModule} from '@angular/material/slider'; import {ExperimentGraphsModule} from '../shared/experiment-graphs/experiment-graphs.module'; -const declerations = [DebugImagesComponent, DebugImagesViewComponent, ImageDisplayerComponent, DebugImageSnippetComponent]; +const declerations = [DebugImagesComponent, DebugImagesViewComponent, ImageViewerComponent, DebugImageSnippetComponent]; @NgModule({ - declarations : declerations, - exports : declerations, - imports: [ - UiComponentsModule, - SMSharedModule, - CommonModule, - ExperimentCompareSharedModule, - ScrollingModule, - StoreModule.forFeature('debugImages', debugSamplesReducer), - EffectsModule.forFeature([DebugImagesEffects]), - MatSliderModule, - ExperimentGraphsModule - ] + declarations: declerations, + exports: declerations, + imports: [ + UiComponentsModule, + SMSharedModule, + CommonModule, + ExperimentCompareSharedModule, + ScrollingModule, + StoreModule.forFeature('debugImages', debugSamplesReducer), + EffectsModule.forFeature([DebugImagesEffects]), + MatSliderModule, + ExperimentGraphsModule + ] }) export class DebugImagesModule { } diff --git a/src/app/webapp-common/experiments-compare/containers/experiment-compare-hyper-params-graph/experiment-compare-hyper-params-graph.component.html b/src/app/webapp-common/experiments-compare/containers/experiment-compare-hyper-params-graph/experiment-compare-hyper-params-graph.component.html index 569f188f..d5971421 100644 --- a/src/app/webapp-common/experiments-compare/containers/experiment-compare-hyper-params-graph/experiment-compare-hyper-params-graph.component.html +++ b/src/app/webapp-common/experiments-compare/containers/experiment-compare-hyper-params-graph/experiment-compare-hyper-params-graph.component.html @@ -29,7 +29,8 @@
+ [expanded]="listOpen && searchMetric.value.length > 0" + togglePosition="before"> {{metricGroup.metricName}} diff --git a/src/app/webapp-common/experiments-compare/containers/experiment-compare-hyper-params-graph/experiment-compare-hyper-params-graph.component.scss b/src/app/webapp-common/experiments-compare/containers/experiment-compare-hyper-params-graph/experiment-compare-hyper-params-graph.component.scss index 3c0e0629..d994c93c 100644 --- a/src/app/webapp-common/experiments-compare/containers/experiment-compare-hyper-params-graph/experiment-compare-hyper-params-graph.component.scss +++ b/src/app/webapp-common/experiments-compare/containers/experiment-compare-hyper-params-graph/experiment-compare-hyper-params-graph.component.scss @@ -4,6 +4,14 @@ display: flex; height: 100%; + ::ng-deep .mat-expansion-panel-header.mat-expansion-toggle-indicator-before { + .mat-expansion-indicator { + margin: 0 12px 0 2px; + height: 20px; + line-height: 1; + } + } + ::ng-deep .list-container { display: flex; flex-direction: column; @@ -17,7 +25,11 @@ } ::ng-deep .mat-expansion-panel-body { - padding: 0; + padding: 0 12px 0 24px; + } + ::ng-deep sm-search { + margin-top: 12px; + padding-right: 24px; } } @@ -35,7 +47,7 @@ .metrics-container { - padding: 20px 0 0 32px; + padding: 20px 0 0 24px; // dashboard-search icon i.fa { position: absolute; @@ -63,7 +75,7 @@ .metrics-search { position: relative; - margin-bottom: 6px; + margin: 12px 24px 6px 0; input { width: 100%; @@ -173,5 +185,5 @@ } sm-grouped-checked-filter-list { - margin: 0 12px 0 32px; + margin: 0 0 0 24px; } diff --git a/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-charts/experiment-compare-scalar-charts.component.scss b/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-charts/experiment-compare-scalar-charts.component.scss index 8eaa5ad9..4e7b801b 100644 --- a/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-charts/experiment-compare-scalar-charts.component.scss +++ b/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-charts/experiment-compare-scalar-charts.component.scss @@ -1,6 +1,6 @@ @import "variables"; -$list-width: 300px; +$list-width: 360px; :host { display: flex; @@ -13,6 +13,9 @@ $list-width: 300px; mat-drawer-container { width: 100%; } + .mat-drawer-side { + border-color: #efefef; + } .drawer-settings-bar { height: unset; @@ -34,7 +37,6 @@ $list-width: 300px; width: $list-width; overflow-y: auto; overflow-x: hidden; - border-right: 1px solid #efefef; } .graphs-container { diff --git a/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-charts/experiment-compare-scalar-charts.component.ts b/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-charts/experiment-compare-scalar-charts.component.ts index d0200941..92202339 100644 --- a/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-charts/experiment-compare-scalar-charts.component.ts +++ b/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-charts/experiment-compare-scalar-charts.component.ts @@ -1,11 +1,10 @@ -import {ChangeDetectorRef, Component, OnDestroy, OnInit} from '@angular/core'; +import {ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild} from '@angular/core'; import {Observable, Subscription} from 'rxjs'; import {select, Store} from '@ngrx/store'; import {IExperimentInfoState} from '~/features/experiments/reducers/experiment-info.reducer'; import {distinctUntilChanged, filter, map} from 'rxjs/operators'; import {isEqual} from 'lodash/fp'; import {mergeMultiMetrics, mergeMultiMetricsGroupedVariant} from '@common/tasks/tasks.utils'; -import {scrollToElement} from '@common/shared/utils/shared-utils'; import {GetMultiScalarCharts, ResetExperimentMetrics, SetExperimentMetricsSearchTerm, SetExperimentSettings, SetSelectedExperiments} from '../../actions/experiments-compare-charts.actions'; import {selectCompareSelectedSettingsGroupBy, selectCompareSelectedSettingsSmoothWeight, selectCompareSelectedSettingsxAxisType, selectCompareTasksScalarCharts, selectExperimentMetricsSearchTerm, selectSelectedExperimentSettings, selectSelectedSettingsHiddenScalar} from '../../reducers'; import {ScalarKeyEnum} from '~/business-logic/model/events/scalarKeyEnum'; @@ -15,6 +14,7 @@ import {GroupedList} from '@common/shared/ui-components/data/selectable-grouped- import {ExtFrame} from '@common/shared/experiment-graphs/single-graph/plotly-graph-base'; import {RefreshService} from '@common/core/services/refresh.service'; import {selectRouterParams} from '@common/core/reducers/router-reducer'; +import {ExperimentGraphsComponent} from '@common/shared/experiment-graphs/experiment-graphs.component'; @Component({ @@ -58,6 +58,8 @@ export class ExperimentCompareScalarChartsComponent implements OnInit, OnDestroy } ]; + @ViewChild(ExperimentGraphsComponent) graphsComponent: ExperimentGraphsComponent; + constructor( private store: Store, private changeDetection: ChangeDetectorRef, @@ -109,7 +111,7 @@ export class ExperimentCompareScalarChartsComponent implements OnInit, OnDestroy this.settingsSubscription = this.experimentSettings$ .subscribe((selectedMetric) => { this.selectedGraph = selectedMetric; - scrollToElement(this.selectedGraph); + this.graphsComponent.scrollToGraph(selectedMetric); }); this.routerParamsSubscription = this.routerParams$ diff --git a/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-values/experiment-compare-metric-values.component.html b/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-values/experiment-compare-metric-values.component.html index 4b8a73f5..61e6ca4a 100644 --- a/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-values/experiment-compare-metric-values.component.html +++ b/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-values/experiment-compare-metric-values.component.html @@ -5,7 +5,10 @@ (experimentListChanged)="experimentListChanged($event)" >
- +
diff --git a/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-values/experiment-compare-metric-values.component.ts b/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-values/experiment-compare-metric-values.component.ts index bdf7d1a5..6bf47aae 100644 --- a/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-values/experiment-compare-metric-values.component.ts +++ b/src/app/webapp-common/experiments-compare/containers/experiment-compare-metric-values/experiment-compare-metric-values.component.ts @@ -55,6 +55,7 @@ export class ExperimentCompareMetricValuesComponent implements OnInit, OnDestroy public valuesMode: ValueMode; public hoveredRow: string; public hoveredTable: string; + public experimentTags: { [experimentId: string]: string[] } = {}; constructor( private router: Router, @@ -90,7 +91,10 @@ export class ExperimentCompareMetricValuesComponent implements OnInit, OnDestroy .pipe( filter(exp => !!exp), tap(experiments => this.experiments = experiments), - tap(experiments => this.syncUrl(experiments, this.taskIds)), + tap(experiments => { + this.syncUrl(experiments, this.taskIds); + this.extractTags(experiments); + }), map(experiments => experiments.map(exp => exp.last_metrics))) .subscribe(experimentsLastMetrics => { this.refreshDisabled = false; @@ -202,4 +206,13 @@ export class ExperimentCompareMetricValuesComponent implements OnInit, OnDestroy this.hoveredRow = tableKey; this.hoveredTable = tableName; } + + public extractTags(experiments) { + experiments.map(({tags, ...experiment}) => { + if (tags + ?.length || !this.experimentTags[experiment.id]?.length) { + this.experimentTags[experiment.id] = tags; + } + }); + } } diff --git a/src/app/webapp-common/experiments-compare/containers/experiment-compare-plots/experiment-compare-plots.component.scss b/src/app/webapp-common/experiments-compare/containers/experiment-compare-plots/experiment-compare-plots.component.scss index 5dd2eaf0..5d3a5300 100644 --- a/src/app/webapp-common/experiments-compare/containers/experiment-compare-plots/experiment-compare-plots.component.scss +++ b/src/app/webapp-common/experiments-compare/containers/experiment-compare-plots/experiment-compare-plots.component.scss @@ -8,9 +8,9 @@ ::ng-deep.list-container { display: block; height: 100%; - width: 343px; - flex: 0 0 343px; - padding: 20px 32px 0 32px; + width: 360px; + flex: 0 0 360px; + padding: 0px 8px; overflow-y: hidden; border-right: 1px solid #efefef; } diff --git a/src/app/webapp-common/experiments-compare/containers/experiment-compare-plots/experiment-compare-plots.component.ts b/src/app/webapp-common/experiments-compare/containers/experiment-compare-plots/experiment-compare-plots.component.ts index 884099e7..62929438 100644 --- a/src/app/webapp-common/experiments-compare/containers/experiment-compare-plots/experiment-compare-plots.component.ts +++ b/src/app/webapp-common/experiments-compare/containers/experiment-compare-plots/experiment-compare-plots.component.ts @@ -1,4 +1,4 @@ -import {ChangeDetectorRef, Component, OnDestroy, OnInit} from '@angular/core'; +import {ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild} from '@angular/core'; import {SelectableListItem} from '@common/shared/ui-components/data/selectable-list/selectable-list.model'; import {Observable, Subscription} from 'rxjs'; import {select, Store} from '@ngrx/store'; @@ -7,12 +7,12 @@ import {distinctUntilChanged, filter, map, tap} from 'rxjs/operators'; import {selectRouterParams} from '@common/core/reducers/router-reducer'; import {convertMultiPlots, prepareMultiPlots, sortMetricsList} from '@common/tasks/tasks.utils'; import {isEqual} from 'lodash/fp'; -import {scrollToElement} from '@common/shared/utils/shared-utils'; import {GetMultiPlotCharts, ResetExperimentMetrics, SetExperimentMetricsSearchTerm, SetExperimentSettings, SetSelectedExperiments} from '../../actions/experiments-compare-charts.actions'; import {selectCompareTasksPlotCharts, selectExperimentMetricsSearchTerm, selectSelectedExperimentSettings, selectSelectedSettingsHiddenPlot} from '../../reducers'; import {ExtFrame} from '@common/shared/experiment-graphs/single-graph/plotly-graph-base'; import {RefreshService} from '@common/core/services/refresh.service'; import {addMessage} from '@common/core/actions/layout.actions'; +import {ExperimentGraphsComponent} from '@common/shared/experiment-graphs/experiment-graphs.component'; @Component({ selector: 'sm-experiment-compare-plots', @@ -38,6 +38,7 @@ export class ExperimentComparePlotsComponent implements OnInit, OnDestroy { public graphs: { [key: string]: ExtFrame[] }; public refreshDisabled: boolean; + @ViewChild(ExperimentGraphsComponent) graphsComponent: ExperimentGraphsComponent; constructor(private store: Store, private changeDetection: ChangeDetectorRef, private refresh: RefreshService) { this.listOfHidden = this.store.pipe(select(selectSelectedSettingsHiddenPlot)); @@ -74,13 +75,13 @@ export class ExperimentComparePlotsComponent implements OnInit, OnDestroy { this.graphs = newGraphs; } this.changeDetection.detectChanges(); - parsingError && this.store.dispatch(addMessage('warn', `Couldn't read all plots. Please make sure all plots are properly formatted (NaN & Inf aren't supported).`, [], true)) + parsingError && this.store.dispatch(addMessage('warn', `Couldn't read all plots. Please make sure all plots are properly formatted (NaN & Inf aren't supported).`, [], true)); }); this.settingsSubscription = this.experimentSettings$ .subscribe((selectedPlot) => { this.selectedGraph = selectedPlot; - scrollToElement(this.selectedGraph); + this.graphsComponent.scrollToGraph(selectedPlot); }); this.routerParamsSubscription = this.routerParams$ @@ -107,7 +108,7 @@ export class ExperimentComparePlotsComponent implements OnInit, OnDestroy { this.resetMetrics(); } - private prepareList(metricsScalar: Object): Array { + private prepareList(metricsScalar): Array { const list = metricsScalar ? Object.keys(metricsScalar) : []; const sortedList = sortMetricsList(list); return sortedList.map((item) => ({name: item, value: item})); @@ -123,7 +124,7 @@ export class ExperimentComparePlotsComponent implements OnInit, OnDestroy { searchTermChanged(searchTerm: string) { - this.store.dispatch(new SetExperimentMetricsSearchTerm({searchTerm: searchTerm})); + this.store.dispatch(new SetExperimentMetricsSearchTerm({searchTerm})); } resetMetrics() { diff --git a/src/app/webapp-common/experiments-compare/containers/select-experiments-for-compare/select-experiments-for-compare.component.html b/src/app/webapp-common/experiments-compare/containers/select-experiments-for-compare/select-experiments-for-compare.component.html index 91b36301..3a939d92 100644 --- a/src/app/webapp-common/experiments-compare/containers/select-experiments-for-compare/select-experiments-for-compare.component.html +++ b/src/app/webapp-common/experiments-compare/containers/select-experiments-for-compare/select-experiments-for-compare.component.html @@ -1,4 +1,4 @@ - +
@@ -9,7 +9,7 @@ name="search-experiments" autocomplete="off" smClickStopPropagation - placeholder="Start typing experiment name or ID to add to your comparison" + placeholder="Start typing {{data.entityType}} name or ID to add to your comparison" (input)="searchTermChanged(searchExperiments.value)" > diff --git a/src/app/webapp-common/experiments-compare/containers/select-experiments-for-compare/select-experiments-for-compare.component.ts b/src/app/webapp-common/experiments-compare/containers/select-experiments-for-compare/select-experiments-for-compare.component.ts index 0c3616ee..79e97afd 100644 --- a/src/app/webapp-common/experiments-compare/containers/select-experiments-for-compare/select-experiments-for-compare.component.ts +++ b/src/app/webapp-common/experiments-compare/containers/select-experiments-for-compare/select-experiments-for-compare.component.ts @@ -1,4 +1,4 @@ -import {ChangeDetectorRef, Component, ElementRef, EventEmitter, OnDestroy, OnInit, ViewChild} from '@angular/core'; +import {ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, OnDestroy, OnInit, ViewChild} from '@angular/core'; import {select, Store} from '@ngrx/store'; import { compareAddDialogTableSortChanged, @@ -19,7 +19,7 @@ import {Params} from '@angular/router'; import {selectRouterParams} from '@common/core/reducers/router-reducer'; import {distinctUntilChanged, distinctUntilKeyChanged, filter, map} from 'rxjs/operators'; import {compareLimitations} from '@common/shared/entity-page/footer-items/compare-footer-item'; -import {MatDialogRef} from '@angular/material/dialog'; +import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog'; import {ITableExperiment} from '@common/experiments/shared/common-experiment-model.model'; import { selectActiveParentsFilter, @@ -37,7 +37,7 @@ import { import {get, isEqual, unionBy} from 'lodash/fp'; import {ColHeaderTypeEnum, ISmCol, TableSortOrderEnum} from '@common/shared/ui-components/data/table/table.consts'; import {filterArchivedExperiments} from '@common/experiments/shared/common-experiments.utils'; -import {InitSearch} from '@common/common-search/common-search.actions'; +import {initSearch} from '@common/common-search/common-search.actions'; import * as experimentsActions from '../../../experiments/actions/common-experiments-view.actions'; import {resetExperiments, resetGlobalFilter} from '@common/experiments/actions/common-experiments-view.actions'; import {User} from '~/business-logic/model/users/user'; @@ -103,7 +103,8 @@ export class SelectExperimentsForCompareComponent implements OnInit, OnDestroy { private store: Store, private eRef: ElementRef, private changedDetectRef: ChangeDetectorRef, - public dialogRef: MatDialogRef + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: {entityType: EntityTypeEnum} ) { this.resizedCols$.next(this._resizedCols); this.experimentsResults$ = this.store.pipe(select(selectSelectedExperimentsForCompareAdd)); @@ -169,7 +170,7 @@ export class SelectExperimentsForCompareComponent implements OnInit, OnDestroy { } syncAppSearch() { - this.store.dispatch(new InitSearch('Search for experiments')); + this.store.dispatch(initSearch({payload: 'Search for experiments'})); this.store.dispatch(experimentsActions.getExperiments()); } diff --git a/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.html b/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.html index 2a2b9974..0881f81b 100644 --- a/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.html +++ b/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.html @@ -1,19 +1,17 @@
{{experiment.project?.name}}
-
- {{EXPERIMENTS_STATUS_LABELS[experiment.status]}} + {{experimentsStatusLabels[experiment.status]}} {{experiment.last_iteration | number | NA}} iterations - Last updated {{experiment.last_update | timeAgo | NA}} + Last updated {{experiment.last_update | timeAgo | NA}}
diff --git a/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.scss b/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.scss index ba5734b9..17a7035e 100644 --- a/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.scss +++ b/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.scss @@ -16,8 +16,7 @@ .experiment-name { font-size: 18px; - height: 22px; - max-width: 93%; + max-width: 80%; display: inline-block; white-space: nowrap; a { @@ -27,12 +26,6 @@ color: inherit; } } - - .id-icon { - width: 16px; - height: 13px; - margin-left: 6px; - } } sm-tag-list { diff --git a/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.ts b/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.ts index 1996a61a..5dcc4c8d 100644 --- a/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.ts +++ b/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-general-data/experiment-compare-general-data.component.ts @@ -2,6 +2,7 @@ import {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@ import {EXPERIMENTS_STATUS_LABELS} from '~/features/experiments/shared/experiments.const'; import {IExperimentDetail} from '~/features/experiments-compare/experiments-compare-models'; import {TIME_FORMAT_STRING} from '@common/constants'; +import {ActivatedRoute} from '@angular/router'; @Component({ selector: 'sm-experiment-compare-general-data', @@ -11,19 +12,23 @@ import {TIME_FORMAT_STRING} from '@common/constants'; }) export class ExperimentCompareGeneralDataComponent { - public EXPERIMENTS_STATUS_LABELS = EXPERIMENTS_STATUS_LABELS; + public experimentsStatusLabels = EXPERIMENTS_STATUS_LABELS; @Input() experiment: IExperimentDetail; @Input() isOrigin: boolean = false; @Input() tags: string[]; @Output() copyIdClicked = new EventEmitter(); - TIME_FORMAT_STRING = TIME_FORMAT_STRING; + timeFormatString = TIME_FORMAT_STRING; + + constructor(private route: ActivatedRoute) { + } copyToClipboard() { this.copyIdClicked.emit(); } buildUrl() { - return ['../../', 'experiments', this.experiment.id]; + const projectOrPipeline = this.route.root.firstChild.routeConfig.path.replace('datasets', 'datasets/simple/'); + return [`/${projectOrPipeline}`, this.experiment.project?.id || '*', 'experiments', this.experiment.id]; } } diff --git a/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-header/experiment-compare-header.component.html b/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-header/experiment-compare-header.component.html index 7e83f330..dfaedbcb 100644 --- a/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-header/experiment-compare-header.component.html +++ b/src/app/webapp-common/experiments-compare/dumbs/experiment-compare-header/experiment-compare-header.component.html @@ -1,13 +1,14 @@
(); constructor( @@ -100,6 +102,7 @@ export class ExperimentCompareHeaderComponent implements OnInit, OnDestroy { openAddExperimentSearch() { this.dialog.open(SelectExperimentsForCompareComponent, { + data: {entityType: this.entityType}, height: '100vh', width: '100%', maxWidth: '100%' diff --git a/src/app/webapp-common/experiments-compare/effects/experiments-compare-metrics-values.effects.ts b/src/app/webapp-common/experiments-compare/effects/experiments-compare-metrics-values.effects.ts index a8869fd5..a7999687 100644 --- a/src/app/webapp-common/experiments-compare/effects/experiments-compare-metrics-values.effects.ts +++ b/src/app/webapp-common/experiments-compare/effects/experiments-compare-metrics-values.effects.ts @@ -24,7 +24,7 @@ export class ExperimentsCompareMetricsValuesEffects { @Effect() getComparedExperimentsMetricsValues = this.actions$.pipe( ofType(metricsValuesActions.GET_COMPARED_EXPERIMENTS_METRICS_VALUES), - mergeMap((action) => this.tasksApiService.tasksGetAllEx({id: action.payload.taskIds, only_fields: ['last_metrics', 'name', 'status', 'completed', 'last_update', 'last_iteration', 'project.name']}) + mergeMap((action) => this.tasksApiService.tasksGetAllEx({id: action.payload.taskIds, only_fields: ['last_metrics', 'name', 'status', 'completed', 'last_update', 'last_iteration', 'project.name', 'tags']}) .pipe( map(res => action.payload.taskIds.map(id => res.tasks.find(ex => ex.id === id))), mergeMap(experiments => [ diff --git a/src/app/webapp-common/experiments-compare/experiments-compare.component.html b/src/app/webapp-common/experiments-compare/experiments-compare.component.html index 8db24274..399b5ae0 100644 --- a/src/app/webapp-common/experiments-compare/experiments-compare.component.html +++ b/src/app/webapp-common/experiments-compare/experiments-compare.component.html @@ -19,6 +19,7 @@
diff --git a/src/app/webapp-common/experiments-compare/experiments-compare.component.ts b/src/app/webapp-common/experiments-compare/experiments-compare.component.ts index f25de992..b58823b2 100644 --- a/src/app/webapp-common/experiments-compare/experiments-compare.component.ts +++ b/src/app/webapp-common/experiments-compare/experiments-compare.component.ts @@ -6,6 +6,7 @@ import {ActivatedRoute, Params, Router} from '@angular/router'; import {selectNavigationPreferences} from './reducers'; import {debounceTime} from 'rxjs/operators'; import {setNavigationPreferences} from './actions/compare-header.actions'; +import {EntityTypeEnum} from '~/shared/constants/non-common-consts'; @Component({ selector: 'sm-experiments-compare', @@ -17,6 +18,7 @@ export class ExperimentsCompareComponent implements OnInit, OnDestroy { private queryParams$: Subscription; private navigationPreferences$: Subscription; private queryParams: Params; + public entityType: EntityTypeEnum; constructor(private store: Store, private router: Router, private activatedRoute: ActivatedRoute) { // updating URL with store query params @@ -31,6 +33,8 @@ export class ExperimentsCompareComponent implements OnInit, OnDestroy { }); this.queryParams$ = this.store.select(selectRouterQueryParams).subscribe((queryParams) => this.queryParams = queryParams); + + this.entityType = this.activatedRoute.snapshot.data.entityType; } ngOnDestroy(): void { diff --git a/src/app/webapp-common/experiments-compare/experiments-compare.constants.ts b/src/app/webapp-common/experiments-compare/experiments-compare.constants.ts index cb07ae0e..1250245c 100644 --- a/src/app/webapp-common/experiments-compare/experiments-compare.constants.ts +++ b/src/app/webapp-common/experiments-compare/experiments-compare.constants.ts @@ -56,7 +56,8 @@ export const COMPARE_DETAILS_ONLY_FIELDS_BASE = [ 'started', 'status_message', 'status_reason', - 'last_worker' + 'last_worker', + 'runtime' ]; export const COMPARE_DEBUG_IMAGES_ONLY_FIELDS = [ diff --git a/src/app/webapp-common/experiments-compare/reducers/index.ts b/src/app/webapp-common/experiments-compare/reducers/index.ts index f69394bd..1a83b920 100644 --- a/src/app/webapp-common/experiments-compare/reducers/index.ts +++ b/src/app/webapp-common/experiments-compare/reducers/index.ts @@ -43,6 +43,8 @@ export const selectExperimentIdsParams = createSelector(selectExperimentsParams, export const selectCompareHeader = createSelector(experimentsCompare, state => (state?.compareHeader ?? {}) as CompareHeaderState); export const selectIsCompare = createSelector(selectRouterConfig, (config): boolean => config?.includes('compare-experiments')); export const selectIsPipelines = createSelector(selectRouterConfig, (config): boolean => config?.[0] === 'pipelines'); +export const selectIsDatasets = createSelector(selectRouterConfig, (config): boolean => config?.[0] === 'datasets'); +export const selectCustomProject = createSelector(selectRouterConfig, (config): boolean => ['pipelines', 'datasets'].includes(config?.[0])); export const selectCompareAddTableSortFields = createSelector(selectCompareHeader, selectSelectedProjectId, (state, projectId) => state.projectColumnsSortOrder?.[projectId] || null); diff --git a/src/app/webapp-common/experiments-compare/services/experiment-details-reverter.service.ts b/src/app/webapp-common/experiments-compare/services/experiment-details-reverter.service.ts index 857cfca9..f5434145 100644 --- a/src/app/webapp-common/experiments-compare/services/experiment-details-reverter.service.ts +++ b/src/app/webapp-common/experiments-compare/services/experiment-details-reverter.service.ts @@ -45,6 +45,12 @@ export class ExperimentDetailsReverterService extends ExperimentDetailsReverterS 'created by': experiment.user.name || NA, 'parent task': (experiment.parent as ITask)?.name || NA, 'project': experiment.project.name || NA, + ...Object.entries(experiment.runtime || {}) + .filter(([key, ]) => !key.startsWith('_')) + .reduce((res, [key, val]) => { + res[key.replace(/_/g, ' ')] = val; + return res; + }, {}) }; } diff --git a/src/app/webapp-common/experiments/actions/common-experiment-output.actions.ts b/src/app/webapp-common/experiments/actions/common-experiment-output.actions.ts index 4ddf5c02..654ef699 100644 --- a/src/app/webapp-common/experiments/actions/common-experiment-output.actions.ts +++ b/src/app/webapp-common/experiments/actions/common-experiment-output.actions.ts @@ -5,12 +5,15 @@ import {ScalarKeyEnum} from '~/business-logic/model/events/scalarKeyEnum'; import {MetricsPlotEvent} from '~/business-logic/model/events/metricsPlotEvent'; import {EventsScalarMetricsIterRawRequest} from '~/business-logic/model/events/eventsScalarMetricsIterRawRequest'; import {EventsScalarMetricsIterRawResponse} from '~/business-logic/model/events/eventsScalarMetricsIterRawResponse'; +import {PlotSampleResponse} from '~/business-logic/model/events/plotSampleResponse'; +import { EventsGetTaskSingleValueMetricsResponseTasks } from '~/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseTasks'; export const EXPERIMENTS_OUTPUT_PREFIX = 'EXPERIMENTS_OUTPUT_'; export const GET_EXPERIMENT_LOG = EXPERIMENTS_OUTPUT_PREFIX + 'GET_EXPERIMENT_LOG'; export const SET_EXPERIMENT_LOG = EXPERIMENTS_OUTPUT_PREFIX + 'SET_EXPERIMENT_LOG'; +export const SET_EXPERIMENT_SCALAR_SINGLE_VALUE = EXPERIMENTS_OUTPUT_PREFIX + 'SET_EXPERIMENT_SCALAR_SINGLE_VALUE'; export const SET_EXPERIMENT_METRICS_SEARCH_TERM = EXPERIMENTS_OUTPUT_PREFIX + 'SET_EXPERIMENT_METRICS_SEARCH_TERM'; export const SET_EXPERIMENT_HISTOGRAM = EXPERIMENTS_OUTPUT_PREFIX + 'SET_EXPERIMENT_HISTOGRAM'; export const SET_EXPERIMENT_PLOTS = EXPERIMENTS_OUTPUT_PREFIX + 'SET_EXPERIMENT_PLOTS'; @@ -111,6 +114,11 @@ export const setExperimentLog = createAction( props<{ events: any[]; direction?: string; total: number; refresh?: boolean }>() ); +export const setExperimentScalarSingleValue = createAction( + SET_EXPERIMENT_SCALAR_SINGLE_VALUE, + props() +); + export class SetExperimentSettings implements Action { readonly type = UPDATE_EXPERIMENT_SETTINGS; @@ -144,3 +152,11 @@ export class ResetLogFilter implements Action { export const downloadFullLog = createAction(EXPERIMENTS_OUTPUT_PREFIX + 'DOWNLOAD_FULL_LOG', props<{ experimentId: string }>()); export const toggleSettings = createAction(EXPERIMENTS_OUTPUT_PREFIX + 'TOGGLE_SETTINGS'); +export const getPlotSample = createAction(EXPERIMENTS_OUTPUT_PREFIX + 'GET_PLOT_FOR_ITERATION', props<{ task: string; metric: string; variant: string; iteration: number }>()); +export const getNextPlotSample = createAction(EXPERIMENTS_OUTPUT_PREFIX + 'GET_NEXT_PLOT', props<{ task: string; navigateEarlier: boolean }>()); +export const setCurrentPlot = createAction(EXPERIMENTS_OUTPUT_PREFIX + 'SET_PLOT_FOR_ITERATION', props<{ event: any }>()); +export const setPlotViewerScrollId = createAction(EXPERIMENTS_OUTPUT_PREFIX + 'SET_PLOT_VIEWER_SCROLL_ID', props<{ scrollId: string }>()); +export const setPlotIterations = createAction(EXPERIMENTS_OUTPUT_PREFIX + 'SET_PLOT_ITERATIONS', props()); +export const setViewerEndOfTime = createAction(EXPERIMENTS_OUTPUT_PREFIX + 'SET_VIEWER_END_OF_TIME', props<{ endOfTime: boolean }>()); +export const setViewerBeginningOfTime = createAction(EXPERIMENTS_OUTPUT_PREFIX + 'SET_VIEWER_BEGINNING_OF_TIME', props<{ beginningOfTime: boolean }>()); +export const resetViewer = createAction(EXPERIMENTS_OUTPUT_PREFIX + 'RESET_VIEWER'); diff --git a/src/app/webapp-common/experiments/actions/common-experiments-info.actions.ts b/src/app/webapp-common/experiments/actions/common-experiments-info.actions.ts index 9e052787..dbb04c52 100644 --- a/src/app/webapp-common/experiments/actions/common-experiments-info.actions.ts +++ b/src/app/webapp-common/experiments/actions/common-experiments-info.actions.ts @@ -128,12 +128,12 @@ export const getPipelineConfigurationObj = createAction( export const getSelectedPipelineStep = createAction( EXPERIMENTS_INFO_PREFIX + 'GET_PIPELINE_STEP', - props<{ id:string }>() + props<{ id: string }>() ); export const setSelectedPipelineStep = createAction( EXPERIMENTS_INFO_PREFIX + 'SET_PIPELINE_STEP', - props<{ step:IExperimentInfo }>() + props<{ step: IExperimentInfo }>() ); export const updateExperimentAtPath = createAction( diff --git a/src/app/webapp-common/experiments/actions/common-experiments-view.actions.ts b/src/app/webapp-common/experiments/actions/common-experiments-view.actions.ts index b093e849..fab0378c 100644 --- a/src/app/webapp-common/experiments/actions/common-experiments-view.actions.ts +++ b/src/app/webapp-common/experiments/actions/common-experiments-view.actions.ts @@ -16,80 +16,83 @@ export const getExperiments = createAction(EXPERIMENTS_PREFIX + ' [get experimen export const selectNextExperiment = createAction(EXPERIMENTS_PREFIX + ' [select next experiment]'); export const getExperimentsWithPageSize = createAction(EXPERIMENTS_PREFIX + ' [get experiments with size]', - props<{pageSize: number}>()); + props<{ pageSize: number }>()); export const getNextExperiments = createAction(EXPERIMENTS_PREFIX + '[get next experiments]'); export const setTableCols = createAction( EXPERIMENTS_PREFIX + ' [set table cols]', - props<{ cols: ISmCol[]}>() + props<{ cols: ISmCol[] }>() ); export const refreshExperiments = createAction( EXPERIMENTS_PREFIX + ' [refresh experiment]', - props<{ hideLoader: boolean; autoRefresh?: boolean}>() + props<{ hideLoader: boolean; autoRefresh?: boolean }>() ); export const setExperiments = createAction( EXPERIMENTS_PREFIX + ' [set experiments]', - props<{experiments: ITableExperiment[], noPreferences?: boolean}>() + props<{ experiments: ITableExperiment[]; noPreferences?: boolean }>() +); +export const setTableRefreshPending = createAction( + EXPERIMENTS_PREFIX + ' [set experiments temporary]', + props<{ refresh: boolean }>() ); - export const setExperimentInPlace = createAction( EXPERIMENTS_PREFIX + '[set experiment in place]', props<{ experiments: ITableExperiment[] }>() ); -export const setNoMoreExperiments =createAction( +export const setNoMoreExperiments = createAction( EXPERIMENTS_PREFIX + ' [set no more experiments]', - props<{payload: boolean}>() + props<{ payload: boolean }>() ); export const addExperiments = createAction( EXPERIMENTS_PREFIX + ' [add many experiments]', - props<{experiments: ITableExperiment[]}>() + props<{ experiments: ITableExperiment[] }>() ); export const removeExperiments = createAction( EXPERIMENTS_PREFIX + ' [remove many experiments]', - props<{experiments: string[]}>() + props<{ experiments: string[] }>() ); export const updateExperiment = createAction( EXPERIMENTS_PREFIX + ' [update experiment]', - props<{id: string; changes: Partial}>() + props<{ id: string; changes: Partial }>() ); export const updateManyExperiment = createAction( EXPERIMENTS_PREFIX + 'update many experiments', - props<{changeList: TasksEnqueueManyResponseSucceeded[] }>() + props<{ changeList: TasksEnqueueManyResponseSucceeded[] }>() ); export const setSelectedExperiments = createAction( EXPERIMENTS_PREFIX + ' [set selected experiments]', - props<{experiments: ITableExperiment[]}>() + props<{ experiments: ITableExperiment[] }>() ); export const updateUrlParams = createAction(EXPERIMENTS_PREFIX + '[update URL params from state]'); export const setSelectedExperiment = createAction( EXPERIMENTS_PREFIX + ' [set selected experiment]', - props<{experiment: ITableExperiment}>() + props<{ experiment: ITableExperiment }>() ); export const experimentSelectionChanged = createAction( EXPERIMENTS_PREFIX + ' [experiment selection changed]', - props<{experiment: {id?: string}; project?: string}>() + props<{ experiment: { id?: string }; project?: string }>() ); export const selectAllExperiments = createAction( EXPERIMENTS_PREFIX + ' [select all experiments]', - props<{filtered: boolean}>() + props<{ filtered: boolean }>() ); export const toggleColHidden = createAction( EXPERIMENTS_PREFIX + ' [toggle column hidden state]', - props<{columnId: string; projectId: string}>() + props<{ columnId: string; projectId: string }>() ); export const setVisibleColumnsForProject = createAction( @@ -103,19 +106,19 @@ export const setHiddenCols = createAction( export const setParents = createAction( EXPERIMENTS_PREFIX + '[set project experiment parents]', - props<{ parents: ProjectsGetTaskParentsResponseParents[]}>() + props<{ parents: ProjectsGetTaskParentsResponseParents[] }>() ); export const setActiveParentsFilter = createAction( EXPERIMENTS_PREFIX + '[set active parents filter]', - props<{ parents: ProjectsGetTaskParentsResponseParents[]}>() + props<{ parents: ProjectsGetTaskParentsResponseParents[] }>() ); export const getParents = createAction(EXPERIMENTS_PREFIX + '[get project experiments parents]'); export const tableFilterChanged = createAction( EXPERIMENTS_PREFIX + '[table filter changed]', - props<{filters: TableFilter[]; projectId: string}>() + props<{ filters: TableFilter[]; projectId: string }>() ); export const tableSortChanged = createAction( @@ -142,19 +145,19 @@ export const getProjectTypes = createAction(EXPERIMENTS_PREFIX + 'GET_PROJECT_TY export const showOnlySelected = createAction( EXPERIMENTS_PREFIX + ' [show only selected]', - props<{active: boolean; projectId: string}>() + props<{ active: boolean; projectId: string }>() ); export const globalFilterChanged = createAction( EXPERIMENTS_PREFIX + 'GLOBAL_FILTER_CHANGED', - props<{query: string; regExp?: boolean}>() + props<{ query: string; regExp?: boolean }>() ); export const resetGlobalFilter = createAction(EXPERIMENTS_PREFIX + 'RESET_GLOBAL_FILTER'); export const setCurrentScrollId = createAction( EXPERIMENTS_PREFIX + ' [set current scrollId]', - props<{scrollId: string}>() + props<{ scrollId: string }>() ); export const resetExperiments = createAction(EXPERIMENTS_PREFIX + ' [reset experiments]'); @@ -163,21 +166,21 @@ export const getCustomHyperParams = createAction(EXPERIMENTS_PREFIX + ' [get cus export const setCustomMetrics = createAction( EXPERIMENTS_PREFIX + ' [set custom metrics]', - props<{metrics: MetricVariantResult[]}>() + props<{ metrics: MetricVariantResult[] }>() ); export const setCustomHyperParams = createAction( EXPERIMENTS_PREFIX + ' [set custom hyper params]', - props<{params: any[]}>() + props<{ params: any[] }>() ); export const setExtraColumns = createAction( EXPERIMENTS_PREFIX + 'SET_EXTRA_COLUMNS', - props<{ columns: any[] ; projectId: string }>() + props<{ columns: any[]; projectId: string }>() ); export const addColumn = createAction( EXPERIMENTS_PREFIX + ' [ add column]', - props<{col: ISmCol}>() + props<{ col: ISmCol }>() ); export const removeCol = createAction( @@ -187,22 +190,22 @@ export const removeCol = createAction( export const setColumnWidth = createAction( EXPERIMENTS_PREFIX + ' [set column width]', - props<{projectId: string; columnId: string; widthPx: number}>() + props<{ projectId: string; columnId: string; widthPx: number }>() ); export const setColsOrderForProject = createAction( EXPERIMENTS_PREFIX + ' [set cols order]', - props<{ cols: string[]; project: string;}>() + props<{ cols: string[]; project: string }>() ); export const clearHyperParamsCols = createAction( EXPERIMENTS_PREFIX + ' [Clear HyperParam Cols]', - props<{projectId: string}>() + props<{ projectId: string }>() ); export const resetSortOrder = createAction( EXPERIMENTS_PREFIX + 'RESET_SORT_ORDER', - props<{sortIndex: number; projectId: string}>() + props<{ sortIndex: number; projectId: string }>() ); export const setSplitSize = createAction(EXPERIMENTS_PREFIX + 'SET_SPLIT_SIZE', props<{ splitSize: number }>()); @@ -229,5 +232,5 @@ export const setSelectedExperimentsDisableAvailable = createAction( ); export const setTableMode = createAction( EXPERIMENTS_PREFIX + '[set table view mode]', - props<{mode: 'info' | 'table'}>() -) + props<{ mode: 'info' | 'table' }>() +); diff --git a/src/app/webapp-common/experiments/common-experiments.module.ts b/src/app/webapp-common/experiments/common-experiments.module.ts index a2703492..314aadf9 100644 --- a/src/app/webapp-common/experiments/common-experiments.module.ts +++ b/src/app/webapp-common/experiments/common-experiments.module.ts @@ -94,7 +94,7 @@ import { GetVariantWithoutRoundPipe } from './dumb/experiments-table/hyper-param ExperimentInfoHeaderComponent, ExperimentExecutionSourceCodeComponent, SelectMetricForCustomColComponent, - ExperimentExecutionParametersComponent, ExperimentsTableComponent, ExperimentHeaderComponent], + ExperimentExecutionParametersComponent, ExperimentsTableComponent, ExperimentHeaderComponent, ExperimentOutputPlotsComponent], imports: [ AngularSplitModule, ScrollingModule, diff --git a/src/app/webapp-common/experiments/containers/experiment-ouptut/base-experiment-output.component.scss b/src/app/webapp-common/experiments/containers/experiment-ouptut/base-experiment-output.component.scss index 98771375..0362e043 100644 --- a/src/app/webapp-common/experiments/containers/experiment-ouptut/base-experiment-output.component.scss +++ b/src/app/webapp-common/experiments/containers/experiment-ouptut/base-experiment-output.component.scss @@ -22,10 +22,12 @@ $output-tabs-height: 64px; } ::ng-deep .no-output-icon { - height: 200px; - width: 200px; + height: 100px; + width: 150px; left: 50%; + transform: translateX(-50%); margin-bottom: 10px; + position: relative; } sm-experiment-settings.maximized { diff --git a/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.html b/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.html index d1961c3f..eb7272b3 100644 --- a/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.html +++ b/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.html @@ -1,26 +1,46 @@ -
- - -
-
- - -
+ + + +
+ + +
+
+ +
+
+ +
+ + +
+
+
diff --git a/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.scss b/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.scss index a1e76017..f284ab8e 100644 --- a/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.scss +++ b/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.scss @@ -3,6 +3,10 @@ :host { display: flex; height: 100%; + &.dataset-version-preview{ + height: auto; + display: block; + } .list-container { display: block; diff --git a/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.ts b/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.ts index 83fd27f8..3c66ec2f 100644 --- a/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.ts +++ b/src/app/webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component.ts @@ -1,19 +1,32 @@ -import {ChangeDetectorRef, Component, OnDestroy, OnInit} from '@angular/core'; import { - selectExperimentInfoPlots, selectExperimentMetricsSearchTerm, - selectIsExperimentInProgress, selectSelectedExperimentSettings, - selectSelectedSettingsHiddenPlot, selectSplitSize + ChangeDetectorRef, + Component, + Input, + OnChanges, + OnDestroy, + OnInit, + SimpleChanges, + ViewChild +} from '@angular/core'; +import { + selectExperimentInfoPlots, + selectExperimentMetricsSearchTerm, + selectIsExperimentInProgress, + selectSelectedExperimentSettings, + selectSelectedSettingsHiddenPlot, + selectSplitSize } from '../../reducers'; -import {Observable, of, Subscription} from 'rxjs'; +import {Observable, Subscription} from 'rxjs'; import {select, Store} from '@ngrx/store'; import {SelectableListItem} from '@common/shared/ui-components/data/selectable-list/selectable-list.model'; import {distinctUntilChanged, filter, map} from 'rxjs/operators'; import {selectRouterParams} from '@common/core/reducers/router-reducer'; -import {scrollToElement} from '@common/shared/utils/shared-utils'; import {ActivatedRoute, Router} from '@angular/router'; import {IExperimentInfoState} from '~/features/experiments/reducers/experiment-info.reducer'; import { - experimentPlotsRequested, ResetExperimentMetrics, SetExperimentMetricsSearchTerm, + experimentPlotsRequested, + ResetExperimentMetrics, + SetExperimentMetricsSearchTerm, SetExperimentSettings } from '../../actions/common-experiment-output.actions'; import {convertPlots, groupIterations, sortMetricsList} from '@common/tasks/tasks.utils'; @@ -21,24 +34,26 @@ import {selectSelectedExperiment} from '~/features/experiments/reducers'; import {ExtFrame} from '@common/shared/experiment-graphs/single-graph/plotly-graph-base'; import {MetricsPlotEvent} from '~/business-logic/model/events/metricsPlotEvent'; import {addMessage} from '@common/core/actions/layout.actions'; +import {ExperimentGraphsComponent} from '@common/shared/experiment-graphs/experiment-graphs.component'; @Component({ selector: 'sm-experiment-output-plots', templateUrl: './experiment-output-plots.component.html', - styleUrls: ['./experiment-output-plots.component.scss'] + styleUrls: ['./experiment-output-plots.component.scss', '../experiment-output-scalars/shared-experiment-output.scss'] }) -export class ExperimentOutputPlotsComponent implements OnInit, OnDestroy { +export class ExperimentOutputPlotsComponent implements OnInit, OnDestroy, OnChanges { + @Input() isDatasetVersionPreview = false; + @Input() selected; + @ViewChild(ExperimentGraphsComponent) graphsComponent: ExperimentGraphsComponent; public plotsList: Array = []; public selectedGraph: string = null; - private plotsSubscription: Subscription; private settingsSubscription: Subscription; private routerParamsSubscription: Subscription; private experimentId: string; private routerParams$: Observable; public listOfHidden: Observable>; - public plots$: Observable; public experimentSettings$: Observable; public searchTerm$: Observable; public minimized: boolean = false; @@ -47,18 +62,13 @@ export class ExperimentOutputPlotsComponent implements OnInit, OnDestroy { public selectIsExperimentPendingRunning: Observable; private selectedExperimentSubscription: Subscription; public splitSize$: Observable; + public dark: boolean; constructor(private store: Store, private router: Router, private activeRoute: ActivatedRoute, private changeDetection: ChangeDetectorRef) { this.searchTerm$ = this.store.pipe(select(selectExperimentMetricsSearchTerm)); this.splitSize$ = this.store.pipe(select(selectSplitSize)); - this.plots$ = this.store.pipe( - select(selectExperimentInfoPlots), - distinctUntilChanged(), - filter(metrics => !!metrics) - ); - this.experimentSettings$ = this.store.pipe( select(selectSelectedExperimentSettings), filter(settings => !!settings), @@ -68,7 +78,7 @@ export class ExperimentOutputPlotsComponent implements OnInit, OnDestroy { this.routerParams$ = this.store.pipe( select(selectRouterParams), - filter(params => !!params.experimentId), + filter(params => !!params.experimentId && !this.isDatasetVersionPreview), distinctUntilChanged() ); @@ -77,24 +87,37 @@ export class ExperimentOutputPlotsComponent implements OnInit, OnDestroy { ); } + ngOnChanges(changes: SimpleChanges): void { + if(changes.selected && this.experimentId!== changes.selected.currentValue.id ){ + this.dark = true; + this.experimentId = changes.selected.currentValue.id; + this.refresh(); + } + } + ngOnInit() { - this.minimized = this.activeRoute.snapshot.routeConfig.data.minimized; - this.listOfHidden = this.minimized ? of([]) : this.store.select(selectSelectedSettingsHiddenPlot); - this.plotsSubscription = this.plots$ - .subscribe((metricsPlots) => { + this.minimized = this.activeRoute.snapshot.routeConfig.data?.minimized; + this.listOfHidden = this.store.select(selectSelectedSettingsHiddenPlot); + this.plotsSubscription = this.store.select(selectExperimentInfoPlots) + .pipe( + distinctUntilChanged(), + filter(metrics => !!metrics), + map(plots => this.isDatasetVersionPreview ? plots.filter(plot => !plot.metric.startsWith('_')) : plots), + ) + .subscribe(metricsPlots => { this.refreshDisabled = false; const groupedPlots = groupIterations(metricsPlots); this.plotsList = this.preparePlotsList(groupedPlots); const {graphs, parsingError} = convertPlots({plots: groupedPlots, experimentId: this.experimentId}); this.graphs = graphs; - parsingError && this.store.dispatch(addMessage('warn', `Couldn't read all plots. Please make sure all plots are properly formatted (NaN & Inf aren't supported).`, [], true)) + parsingError && this.store.dispatch(addMessage('warn', `Couldn't read all plots. Please make sure all plots are properly formatted (NaN & Inf aren't supported).`, [], true)); this.changeDetection.detectChanges(); }); this.settingsSubscription = this.experimentSettings$ .subscribe((selectedPlot) => { this.selectedGraph = selectedPlot; - scrollToElement(this.selectedGraph); + this.graphsComponent.scrollToGraph(selectedPlot); }); this.routerParamsSubscription = this.routerParams$ @@ -110,7 +133,7 @@ export class ExperimentOutputPlotsComponent implements OnInit, OnDestroy { this.selectedExperimentSubscription = this.store.select(selectSelectedExperiment) .pipe( - filter(experiment => !!experiment), + filter(experiment => !!experiment && !this.isDatasetVersionPreview), distinctUntilChanged() ) .subscribe(experiment => { @@ -129,7 +152,7 @@ export class ExperimentOutputPlotsComponent implements OnInit, OnDestroy { this.resetMetrics(); } - private preparePlotsList(groupedPlots: {[title: string]: MetricsPlotEvent[]}): Array { + private preparePlotsList(groupedPlots: { [title: string]: MetricsPlotEvent[] }): Array { const list = groupedPlots ? Object.keys(groupedPlots) : []; const sortedList = sortMetricsList(list); return sortedList.map((item) => ({name: item, value: item})); diff --git a/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.html b/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.html index 51185b19..d0e566d4 100644 --- a/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.html +++ b/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.html @@ -56,6 +56,8 @@ #experimentGraphs [isGroupGraphs]="false" [metrics]="graphs" + [singleValueData]="singleValueData$ | async" + [experimentName]="experimentName" [hiddenList]="listOfHidden | async" [smoothWeight]="smoothWeight$ | async" [legendStringLength]="minimized? 14 : undefined" diff --git a/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.scss b/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.scss index 2a74dd2d..8df9602e 100644 --- a/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.scss +++ b/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.scss @@ -6,28 +6,6 @@ $list-width: 300px; display: flex; height: 100%; - mat-drawer { - background-color: $white; - } - - mat-drawer-container { - width: 100%; - } - - .hover-button-container { - position: relative; - left: 30px; - top: 20px; - } - - .close { - cursor: pointer; - position: absolute; - right: 8px; - top: 6px; - z-index: 1; - } - .toggle-all { font-size: 10px; padding-right: 2px; @@ -46,18 +24,6 @@ $list-width: 300px; border-right: 1px solid #efefef; } - .hover-button { - position: absolute; - top: 16px; - left: 16px; - z-index: 14; - button { - padding: 6px; - display: flex; - align-items: center; - } - } - .graphs-container { position: relative; width: 100%; diff --git a/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.ts b/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.ts index 0f2a57c4..8791b9bf 100644 --- a/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.ts +++ b/src/app/webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component.ts @@ -1,10 +1,21 @@ import {ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild} from '@angular/core'; -import {selectExperimentInfoHistograms, selectExperimentMetricsSearchTerm, selectIsExperimentInProgress, selectSelectedExperimentSettings, selectSelectedSettingsGroupBy, selectSelectedSettingsHiddenScalar, selectSelectedSettingsSmoothWeight, selectSelectedSettingsxAxisType, selectShowSettings, selectSplitSize} from '../../reducers'; +import { + selectExperimentInfoHistograms, + selectExperimentMetricsSearchTerm, + selectIsExperimentInProgress, + selectScalarSingleValue, + selectSelectedExperimentSettings, + selectSelectedSettingsGroupBy, + selectSelectedSettingsHiddenScalar, + selectSelectedSettingsSmoothWeight, + selectSelectedSettingsxAxisType, + selectShowSettings, + selectSplitSize +} from '../../reducers'; import {Observable, Subscription} from 'rxjs'; import {select, Store} from '@ngrx/store'; import {distinctUntilChanged, filter, map, tap} from 'rxjs/operators'; import {selectRouterParams} from '@common/core/reducers/router-reducer'; -import {scrollToElement} from '@common/shared/utils/shared-utils'; import {ActivatedRoute, Router} from '@angular/router'; import {IExperimentInfoState} from '~/features/experiments/reducers/experiment-info.reducer'; import { @@ -22,6 +33,7 @@ import {GroupedList} from '@common/shared/ui-components/data/selectable-grouped- import {ExtFrame} from '@common/shared/experiment-graphs/single-graph/plotly-graph-base'; import {ExperimentGraphsComponent} from '@common/shared/experiment-graphs/experiment-graphs.component'; import {isEqual} from 'lodash/fp'; +import { EventsGetTaskSingleValueMetricsResponseValues } from '~/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseValues'; export const prepareScalarList = (metricsScalar: GroupedList): GroupedList => Object.keys(metricsScalar || []).reduce((acc, curr) => { @@ -33,7 +45,7 @@ export const prepareScalarList = (metricsScalar: GroupedList): GroupedList => @Component({ selector: 'sm-experiment-output-scalars', templateUrl: './experiment-output-scalars.component.html', - styleUrls: ['./experiment-output-scalars.component.scss'] + styleUrls: ['./experiment-output-scalars.component.scss', './shared-experiment-output.scss'] }) export class ExperimentOutputScalarsComponent implements OnInit, OnDestroy { public scalarList: GroupedList = {}; @@ -70,6 +82,8 @@ export class ExperimentOutputScalarsComponent implements OnInit, OnDestroy { value: GroupByCharts.None } ]; + public singleValueData$: Observable>; + public experimentName: string; constructor(private store: Store, private router: Router, private activeRoute: ActivatedRoute, private changeDetection: ChangeDetectorRef) { this.searchTerm$ = this.store.pipe(select(selectExperimentMetricsSearchTerm)); @@ -89,6 +103,7 @@ export class ExperimentOutputScalarsComponent implements OnInit, OnDestroy { this.smoothWeight$ = this.store.select(selectSelectedSettingsSmoothWeight); this.xAxisType$ = this.store.select(selectSelectedSettingsxAxisType); this.groupBy$ = this.store.select(selectSelectedSettingsGroupBy); + this.singleValueData$ = this.store.select(selectScalarSingleValue); this.routerParams$ = this.store.pipe( select(selectRouterParams), @@ -123,6 +138,14 @@ export class ExperimentOutputScalarsComponent implements OnInit, OnDestroy { }) ); + this.subs.add(this.singleValueData$ + .subscribe(data => { + if(data?.length>0 && !this.scalarList['Summary']){ + this.scalarList['Summary'] = {}; + } + }) + ); + this.subs.add(this.store.select(selectShowSettings) .subscribe((show) => this.showSettingsBar = show) ); @@ -140,6 +163,7 @@ export class ExperimentOutputScalarsComponent implements OnInit, OnDestroy { ) .subscribe(experiment => { this.experimentId = experiment.id; + this.experimentName = experiment.name; this.refresh(); }) ); @@ -155,7 +179,7 @@ export class ExperimentOutputScalarsComponent implements OnInit, OnDestroy { this.subs.add(this.experimentSettings$ .subscribe((selectedScalar) => { this.selectedGraph = selectedScalar; - scrollToElement(this.selectedGraph); + this.experimentGraphs.scrollToGraph(selectedScalar); }) ); @@ -174,7 +198,7 @@ export class ExperimentOutputScalarsComponent implements OnInit, OnDestroy { private prepareGraphsAndUpdate(scalars: GroupedList) { if (scalars) { const splittedScalars = this.groupBy === 'metric' ? scalars : this.splitScalars(scalars); - this.scalarList = prepareScalarList(splittedScalars); + this.scalarList = {...this.scalarList, ...prepareScalarList(splittedScalars)}; this.graphs = convertScalars(splittedScalars, this.experimentId); this.changeDetection.detectChanges(); } diff --git a/src/app/webapp-common/experiments/containers/experiment-output-scalars/shared-experiment-output.scss b/src/app/webapp-common/experiments/containers/experiment-output-scalars/shared-experiment-output.scss new file mode 100644 index 00000000..e32d08ce --- /dev/null +++ b/src/app/webapp-common/experiments/containers/experiment-output-scalars/shared-experiment-output.scss @@ -0,0 +1,34 @@ + + mat-drawer { + background-color: #ffffff; + } + + mat-drawer-container { + width: 100%; + } + + .hover-button-container { + position: relative; + left: 30px; + top: 20px; + } + + .close { + cursor: pointer; + position: absolute; + right: 8px; + top: 6px; + z-index: 1; + } + + .hover-button { + position: absolute; + top: 16px; + left: 16px; + z-index: 14; + button { + padding: 6px; + display: flex; + align-items: center; + } + } diff --git a/src/app/webapp-common/experiments/dumb/experiment-artifact-item-view/experiment-artifact-item-view.component.html b/src/app/webapp-common/experiments/dumb/experiment-artifact-item-view/experiment-artifact-item-view.component.html index b4dab3f4..24254ba2 100644 --- a/src/app/webapp-common/experiments/dumb/experiment-artifact-item-view/experiment-artifact-item-view.component.html +++ b/src/app/webapp-common/experiments/dumb/experiment-artifact-item-view/experiment-artifact-item-view.component.html @@ -13,7 +13,7 @@ [hideBackground]="true" > - {{artifact?.content_size ? (artifact?.content_size | filesize) : ''}} + {{artifact?.content_size | filesize : fileSizeConfigStorage || ''}} {{artifact?.hash}} {{data[1]}}
diff --git a/src/app/webapp-common/experiments/dumb/experiment-artifact-item-view/experiment-artifact-item-view.component.ts b/src/app/webapp-common/experiments/dumb/experiment-artifact-item-view/experiment-artifact-item-view.component.ts index fa57a259..96bc549c 100644 --- a/src/app/webapp-common/experiments/dumb/experiment-artifact-item-view/experiment-artifact-item-view.component.ts +++ b/src/app/webapp-common/experiments/dumb/experiment-artifact-item-view/experiment-artifact-item-view.component.ts @@ -3,6 +3,7 @@ import {AdminService} from '~/shared/services/admin.service'; import {Artifact} from '~/business-logic/model/tasks/artifact'; import {Store} from '@ngrx/store'; import {BaseClickableArtifactComponent} from '../base-clickable-artifact.component'; +import {fileSizeConfigStorage} from '@common/shared/pipes/filesize.pipe'; @Component({ selector: 'sm-experiment-artifact-item-view', @@ -11,12 +12,12 @@ import {BaseClickableArtifactComponent} from '../base-clickable-artifact.compone changeDetection: ChangeDetectionStrategy.OnPush }) export class ExperimentArtifactItemViewComponent extends BaseClickableArtifactComponent{ - public isLocalFile: boolean; private _artifact: Artifact; @Input() editable: boolean; public isLinkable: boolean; + public fileSizeConfigStorage = fileSizeConfigStorage; @Input() set artifact(artifact: Artifact) { this._artifact = artifact; diff --git a/src/app/webapp-common/experiments/dumb/experiment-execution-parameters/experiment-execution-parameters.component.scss b/src/app/webapp-common/experiments/dumb/experiment-execution-parameters/experiment-execution-parameters.component.scss index 6940a5c9..07b5a285 100644 --- a/src/app/webapp-common/experiments/dumb/experiment-execution-parameters/experiment-execution-parameters.component.scss +++ b/src/app/webapp-common/experiments/dumb/experiment-execution-parameters/experiment-execution-parameters.component.scss @@ -15,7 +15,7 @@ overflow: auto; input.highlight-text { - background: $neon-yellow-betterinchrome; + background: $neon-yellow; &.current-match { background: #f5d655; } diff --git a/src/app/webapp-common/experiments/dumb/experiment-general-info/experiment-general-info.component.html b/src/app/webapp-common/experiments/dumb/experiment-general-info/experiment-general-info.component.html index 8caac3e8..bac80a42 100644 --- a/src/app/webapp-common/experiments/dumb/experiment-general-info/experiment-general-info.component.html +++ b/src/app/webapp-common/experiments/dumb/experiment-general-info/experiment-general-info.component.html @@ -83,6 +83,7 @@
{{null| NA}} diff --git a/src/app/webapp-common/experiments/dumb/experiment-header/experiment-header.component.html b/src/app/webapp-common/experiments/dumb/experiment-header/experiment-header.component.html index 71fcdde5..cecacef4 100644 --- a/src/app/webapp-common/experiments/dumb/experiment-header/experiment-header.component.html +++ b/src/app/webapp-common/experiments/dumb/experiment-header/experiment-header.component.html @@ -12,7 +12,7 @@ @@ -27,11 +27,12 @@

{{selectedExperiment?.comment}}

-
Edit description
+
Edit description
Add description
diff --git a/src/app/webapp-common/experiments/dumb/experiment-info-edit-description/experiment-info-edit-description.component.scss b/src/app/webapp-common/experiments/dumb/experiment-info-edit-description/experiment-info-edit-description.component.scss index d64ed784..296537a9 100644 --- a/src/app/webapp-common/experiments/dumb/experiment-info-edit-description/experiment-info-edit-description.component.scss +++ b/src/app/webapp-common/experiments/dumb/experiment-info-edit-description/experiment-info-edit-description.component.scss @@ -11,10 +11,10 @@ div, p { color: $white; } - div.edit-description { + div.copy-button { color: $light-periwinkle-two; } - .add-description, .edit-description { + .add-description, .copy-button { &:hover { color: $white; text-decoration: underline; diff --git a/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.html b/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.html index 44fcde7e..f06ead94 100644 --- a/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.html +++ b/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.html @@ -19,23 +19,23 @@
+ - - - + [delay]="1000" [action]="'leave'" + (smHesitate)="menuHesitate.hesitateStatus && menu.closed.emit()" + > + + + -
+ smTooltip="View Full Screen" matTooltipPosition="above" class="d-flex fullscreen line-item">
@@ -77,37 +74,35 @@
-
+ + + + + - - - - - - -
+ [tagsFilterByProject]="tagsFilterByProject$ | async" + [projectTags]="projectTags$ | async" + [companyTags]="companyTags$ | async" + (tagSelected)="addTag($event)" + > +
diff --git a/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.scss b/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.scss index ee5e5f9f..55499e1c 100644 --- a/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.scss +++ b/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.scss @@ -58,7 +58,7 @@ margin-right: 6px; } .experiment-name-cont{ - max-width: calc(100% - 220px); + max-width: calc(100% - 320px); .edit-name { overflow: hidden; } diff --git a/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.ts b/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.ts index 7a4e3bec..9e5168d7 100644 --- a/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.ts +++ b/src/app/webapp-common/experiments/dumb/experiment-info-header/experiment-info-header.component.ts @@ -1,6 +1,4 @@ import {Component, EventEmitter, Input, OnDestroy, Output, ViewChild} from '@angular/core'; -import {TaskStatusEnum} from '~/business-logic/model/tasks/taskStatusEnum'; -import {TaskTypeEnum} from '~/business-logic/model/tasks/taskTypeEnum'; import {getSystemTags, isDevelopment} from '~/features/experiments/shared/experiments.utils'; import {Observable} from 'rxjs'; import {Store} from '@ngrx/store'; @@ -26,7 +24,7 @@ import { selectionDisabledReset, selectionDisabledViewWorker } from '@common/shared/entity-page/items.utils'; -import {addMessage} from '../../../core/actions/layout.actions'; +import {addMessage} from '@common/core/actions/layout.actions'; @Component({ selector: 'sm-experiment-info-header', @@ -35,9 +33,6 @@ import {addMessage} from '../../../core/actions/layout.actions'; }) export class ExperimentInfoHeaderComponent implements OnDestroy { - readonly TaskStatusEnum = TaskStatusEnum; - readonly TaskTypeEnum = TaskTypeEnum; - public viewId: boolean; public tagsFilterByProject$: Observable; public projectTags$: Observable; diff --git a/src/app/webapp-common/experiments/dumb/experiments-table/experiments-table.component.html b/src/app/webapp-common/experiments/dumb/experiments-table/experiments-table.component.html index 3297d8bc..9981aa8b 100644 --- a/src/app/webapp-common/experiments/dumb/experiments-table/experiments-table.component.html +++ b/src/app/webapp-common/experiments/dumb/experiments-table/experiments-table.component.html @@ -18,6 +18,7 @@ [checkedItems]="selectedExperiments" [keyboardControl]="true" [sortFields]="tableSortFields" + [hasExperimentUpdate]="hasExperimentUpdate" (rowSelectionChanged)="experimentSelectionChanged.emit($any($event).data)" (rowClicked)="tableRowClicked($event)" (loadMoreClicked)="onLoadMoreClicked()" @@ -31,13 +32,14 @@ @@ -55,7 +57,7 @@
- + @@ -71,7 +73,7 @@ [options]="filtersOptions[col.id] | filter:searchValues[col.id]:'label'" [sortOrder]="tableSortFieldsObject[col.id]" [tooltip]="col.metric_hash || col.isParam" - [fixedOptionsSubheader]="col.id === EXPERIMENTS_TABLE_COL_FIELDS.TAGS ? 'System tags' : ''" + [fixedOptionsSubheader]="col.id === experimentsTableColFields.TAGS ? 'System tags' : ''" [andFilter]="col.andFilter ? filtersMatch[col.id] === 'AND' : null" (sortOrderChanged)="onSortChanged($event, col.id)" (filterChanged)="tableFilterChanged(col, $event);" @@ -88,10 +90,15 @@ let-experiment="rowData" pTemplate="body"> - + +
{{experiment.id}}
+
+ - +
- + - + {{experiment.user?.name ? experiment.user?.name : 'Unknown User'}} - {{experiment.project?.name}} - + {{experiment.started | timeAgo}} + [smTooltip]="experiment.started | date : timeFormatString">{{experiment.started | timeAgo}} - + {{experiment.last_update | timeAgo}} + [smTooltip]="experiment.last_update | date : timeFormatString">{{experiment.last_update | timeAgo}} - + {{experiment.active_duration | duration}} - + {{experiment.comment}} - + - + - +
-
+
- v {{experiment?.hyperparams?.properties?.version?.value}} + v {{experiment?.runtime?.version || experiment?.hyperparams?.properties?.version?.value}}
@@ -203,7 +210,7 @@
) { this._experiments = experiments; @@ -144,7 +137,7 @@ export class ExperimentsTableComponent extends BaseTableView implements OnDestro label: tag === null ? '(No tags)' : tag, value: tag }) as IOption); - this.sortOptionalTagsList() + this.sortOptionalTagsList(); } @Input() set experimentTypes(types: string[]) { @@ -176,6 +169,7 @@ export class ExperimentsTableComponent extends BaseTableView implements OnDestro } @Input() set tableFilters(filters: { [s: string]: FilterMetadata }) { + this._tableFilters = filters; this.filtersValues = {}; this.filtersValues[EXPERIMENTS_TABLE_COL_FIELDS.STATUS] = get([EXPERIMENTS_TABLE_COL_FIELDS.STATUS, 'value'], filters) || []; this.filtersValues[EXPERIMENTS_TABLE_COL_FIELDS.TYPE] = get([EXPERIMENTS_TABLE_COL_FIELDS.TYPE, 'value'], filters) || []; @@ -194,6 +188,9 @@ export class ExperimentsTableComponent extends BaseTableView implements OnDestro this.filtersValues = Object.assign({}, {...this.filtersValues}, {...filtersValues}); } + get tableFilters() { + return this._tableFilters; + } @Output() experimentSelectionChanged = new EventEmitter(); @Output() experimentsSelectionChanged = new EventEmitter>(); @@ -204,7 +201,7 @@ export class ExperimentsTableComponent extends BaseTableView implements OnDestro @Output() columnResized = new EventEmitter<{ columnId: string; widthPx: number }>(); @Output() openContextMenu = new EventEmitter<{ x: number; y: number; single?: boolean; backdrop?: boolean }>(); @Output() removeTag = new EventEmitter<{ experiment: ITableExperiment; tag: string }>(); - TIME_FORMAT_STRING = TIME_FORMAT_STRING; + @Output() clearAllFilters = new EventEmitter<{ [s: string]: FilterMetadata }>(); constructor( private changeDetector: ChangeDetectorRef, @@ -218,6 +215,10 @@ export class ExperimentsTableComponent extends BaseTableView implements OnDestro this.selectedEntitiesKey = 'selectedExperiments'; } + ngOnInit() { + this.filtersOptions[EXPERIMENTS_TABLE_COL_FIELDS.STATUS] = FILTERED_EXPERIMENTS_STATUS_OPTIONS(this.entityType === EntityTypeEnum.dataset); + } + ngOnDestroy(): void { super.ngOnDestroy(); } @@ -251,7 +252,9 @@ export class ExperimentsTableComponent extends BaseTableView implements OnDestro const addList = this.getSelectionRange(change, experiment); this.experimentsSelectionChanged.emit([...this.selectedExperiments, ...addList]); } else { - this.experimentsSelectionChanged.emit(this.selectedExperiments.filter((selectedExperiment) => selectedExperiment.id !== experiment.id)); + const removeList = this.getDeselectionRange(change, experiment as any); + this.experimentsSelectionChanged.emit(this.selectedExperiments.filter((selectedExperiment) => + !removeList.includes(selectedExperiment.id))); } } @@ -268,7 +271,7 @@ export class ExperimentsTableComponent extends BaseTableView implements OnDestro } - onContextMenu(data: { e: MouseEvent, rowData; single?: boolean; backdrop?: boolean }) { + onContextMenu(data: { e: MouseEvent; rowData; single?: boolean; backdrop?: boolean }) { if (!data?.single) { this.contextExperiment = this._experiments.find(experiment => experiment.id === data.rowData.id); if (!this.selectedExperiments.map(exp => exp.id).includes(this.contextExperiment.id)) { @@ -310,4 +313,5 @@ export class ExperimentsTableComponent extends BaseTableView implements OnDestro selectAll(filtered?: boolean) { this.store.dispatch(selectAllExperiments({filtered})); } + } diff --git a/src/app/webapp-common/experiments/dumb/image-displayer/image-displayer.component.html b/src/app/webapp-common/experiments/dumb/image-viewer/image-viewer.component.html similarity index 96% rename from src/app/webapp-common/experiments/dumb/image-displayer/image-displayer.component.html rename to src/app/webapp-common/experiments/dumb/image-viewer/image-viewer.component.html index aaa3eb6a..31560da6 100644 --- a/src/app/webapp-common/experiments/dumb/image-displayer/image-displayer.component.html +++ b/src/app/webapp-common/experiments/dumb/image-viewer/image-viewer.component.html @@ -4,17 +4,17 @@ {{currentDebugImage?.metric? (currentDebugImage?.metric + ' - ' + currentDebugImage?.variant) : ''}}
-
+
Iteration {{iteration}} @@ -25,7 +25,7 @@ [style.visibility]="(url | isVideo) ? 'hidden' : 'visible'">
-
+
diff --git a/src/app/webapp-common/experiments/dumb/image-displayer/image-displayer.component.scss b/src/app/webapp-common/experiments/dumb/image-viewer/image-viewer.component.scss similarity index 70% rename from src/app/webapp-common/experiments/dumb/image-displayer/image-displayer.component.scss rename to src/app/webapp-common/experiments/dumb/image-viewer/image-viewer.component.scss index 408d6e58..2a280cfd 100644 --- a/src/app/webapp-common/experiments/dumb/image-displayer/image-displayer.component.scss +++ b/src/app/webapp-common/experiments/dumb/image-viewer/image-viewer.component.scss @@ -4,44 +4,6 @@ .modal-container { background-color: $white; height: 100%; - mat-slider.mat-slider-horizontal{ - min-width: 280px; - } - - ::ng-deep .mat-slider:not(.mat-slider-disabled).cdk-mouse-focused .mat-slider-thumb, - ::ng-deep .mat-slider:not(.mat-slider-disabled).cdk-touch-focused .mat-slider-thumb, - ::ng-deep .mat-slider:not(.mat-slider-disabled).cdk-program-focused .mat-slider-thumb{ - transform: scale(0.7); - background-color: $light-grey-blue !important; - } - ::ng-deep .mat-slider-thumb{ - cursor: grabbing; - background-color: white !important; - border: 2px solid $light-grey-blue; - } - ::ng-deep .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{ - transform: none; - } - - ::ng-deep .mat-slider-thumb-label { - border-radius: 4px!important; - background: $purple; /* our tooltip bg. color */ - width: auto; - height: 22px; - transition: none; - padding: 0 12px; - } - ::ng-deep .mat-slider-horizontal .mat-slider-thumb-label { - right: -28px; - top: auto; - bottom: -36px; - transform: scale(0.01); - outline: none; - } - ::ng-deep .mat-slider-horizontal .mat-slider-thumb-label-text { - transform: none !important; - } - .viewer-header { display: flex; @@ -57,7 +19,7 @@ width: 33.3%; } - .iteration { + .viewer-iteration { display: flex; align-items: center; justify-content: center; @@ -69,6 +31,10 @@ color: $blue-500; } + mat-slider.mat-slider-horizontal { + min-width: 280px; + } + } .image-title { @@ -126,19 +92,7 @@ } &:not(.disabled) { - .icon { - cursor: pointer; - - &:active { - top: 1px; - } - } - } - - .icon { - cursor: unset; - position: relative; - top: 0; + cursor: pointer; } } diff --git a/src/app/webapp-common/experiments/dumb/image-displayer/image-displayer.component.ts b/src/app/webapp-common/experiments/dumb/image-viewer/image-viewer.component.ts similarity index 87% rename from src/app/webapp-common/experiments/dumb/image-displayer/image-displayer.component.ts rename to src/app/webapp-common/experiments/dumb/image-viewer/image-viewer.component.ts index 62e4d2da..a80f9c69 100644 --- a/src/app/webapp-common/experiments/dumb/image-displayer/image-displayer.component.ts +++ b/src/app/webapp-common/experiments/dumb/image-viewer/image-viewer.component.ts @@ -15,14 +15,14 @@ import {Store} from '@ngrx/store'; import { getDebugImageSample, getNextDebugImageSample, - resetDisplayer, + resetViewer, setDebugImageViewerScrollId, - setDisplayerEndOfTime + setViewerEndOfTime } from '@common/debug-images/debug-images-actions'; import { selectCurrentImageViewerDebugImage, - selectDisplayerBeginningOfTime, - selectDisplayerEndOfTime, + selectViewerBeginningOfTime, + selectViewerEndOfTime, selectMinMaxIterations } from '@common/debug-images/debug-images-reducer'; import {interval, Observable, Subscription} from 'rxjs'; @@ -35,17 +35,16 @@ import {getSignedUrlOrOrigin$} from '@common/core/reducers/common-auth-reducer'; import {IsVideoPipe} from '@common/shared/pipes/is-video.pipe'; import {IsAudioPipe} from '@common/shared/pipes/is-audio.pipe'; -const DISPLAYER_AUTO_REFRESH_INTERVAL = 60 * 1000; +const VIEWER_AUTO_REFRESH_INTERVAL = 60 * 1000; @Component({ - selector: 'sm-image-displayer', - templateUrl: './image-displayer.component.html', - styleUrls: ['./image-displayer.component.scss'], + selector: 'sm-image-viewer', + templateUrl: './image-viewer.component.html', + styleUrls: ['./image-viewer.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush }) -export class ImageDisplayerComponent implements OnInit, OnDestroy { +export class ImageViewerComponent implements OnInit, OnDestroy { - public imageSources: Array; public xCord: number; public yCord: number; public scale = 1; @@ -99,8 +98,8 @@ export class ImageDisplayerComponent implements OnInit, OnDestroy { } constructor( - @Inject(MAT_DIALOG_DATA) public data: { imageSources: Array; index: number; snippetsMetaData: any }, - public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: {index: number; isAllMetrics: boolean; snippetsMetaData: Array<{task: string; metric: string; variant: string; iter: number}>}, + public dialogRef: MatDialogRef, public changeDetector: ChangeDetectorRef, private store: Store ) { @@ -108,12 +107,13 @@ export class ImageDisplayerComponent implements OnInit, OnDestroy { task: data.snippetsMetaData[data.index].task, metric: data.snippetsMetaData[data.index].metric, variant: data.snippetsMetaData[data.index].variant, - iteration: data.snippetsMetaData[data.index].iter + iteration: data.snippetsMetaData[data.index].iter, + isAllMetrics: data.isAllMetrics }; this.store.dispatch(getDebugImageSample(reqData)); this.minMaxIterations$ = this.store.select(selectMinMaxIterations); - this.beginningOfTime$ = this.store.select(selectDisplayerBeginningOfTime); - this.endOfTime$ = this.store.select(selectDisplayerEndOfTime); + this.beginningOfTime$ = this.store.select(selectViewerBeginningOfTime); + this.endOfTime$ = this.store.select(selectViewerEndOfTime); this.autoRefreshState$ = this.store.select(selectAutoRefresh); this.isAppVisible$ = this.store.select(selectAppVisible); this.currentDebugImage$ = store.select(selectCurrentImageViewerDebugImage) @@ -125,18 +125,19 @@ export class ImageDisplayerComponent implements OnInit, OnDestroy { }) ); - this.autoRefreshSub = interval(DISPLAYER_AUTO_REFRESH_INTERVAL).pipe( + this.autoRefreshSub = interval(VIEWER_AUTO_REFRESH_INTERVAL).pipe( withLatestFrom(this.autoRefreshState$, this.isAppVisible$), filter(([, autoRefreshState, isVisible]) => isVisible && autoRefreshState) ).subscribe(() => { if (this.currentDebugImage) { - this.store.dispatch(setDisplayerEndOfTime({endOfTime: false})); + this.store.dispatch(setViewerEndOfTime({endOfTime: false})); this.store.dispatch(setDebugImageViewerScrollId({scrollId: null})); this.store.dispatch(getDebugImageSample({ task: this.currentDebugImage.task, metric: this.currentDebugImage.metric, variant: this.currentDebugImage.variant, - iteration: this.currentDebugImage.iter + iteration: this.currentDebugImage.iter, + isAllMetrics: this.data.isAllMetrics })); } }); @@ -186,8 +187,8 @@ export class ImageDisplayerComponent implements OnInit, OnDestroy { } } - closeImageDisplayer() { - this.store.dispatch(resetDisplayer()); + closeImageViewer() { + this.store.dispatch(resetViewer()); this.dialogRef.close(); } @@ -253,7 +254,8 @@ export class ImageDisplayerComponent implements OnInit, OnDestroy { task: this.currentDebugImage.task, metric: this.currentDebugImage.metric, variant: this.currentDebugImage.variant, - iteration: value + iteration: value, + isAllMetrics: this.data.isAllMetrics }; this.store.dispatch(getDebugImageSample(reqData)); } diff --git a/src/app/webapp-common/experiments/effects/common-experiment-output.effects.ts b/src/app/webapp-common/experiments/effects/common-experiment-output.effects.ts index 4cbd6762..b9f814b4 100644 --- a/src/app/webapp-common/experiments/effects/common-experiment-output.effects.ts +++ b/src/app/webapp-common/experiments/effects/common-experiment-output.effects.ts @@ -10,7 +10,7 @@ import {activeLoader, deactivateLoader, setServerError} from '../../core/actions import {requestFailed} from '../../core/actions/http.actions'; import * as outputActions from '../actions/common-experiment-output.actions'; import { - mergeGraphDisplayFullDetailsScalars, + mergeGraphDisplayFullDetailsScalars, setExperimentScalarSingleValue, setGraphDisplayFullDetailsScalars, setXtypeGraphDisplayFullDetailsScalars } from '../actions/common-experiment-output.actions'; import {ExperimentOutputState} from '~/features/experiments/reducers/experiment-output.reducer'; @@ -19,12 +19,11 @@ import { selectExperimentHistogramCacheAxisType, selectFullScreenChart, selectFullScreenChartIsOpen, - selectFullScreenChartXtype, + selectFullScreenChartXtype, selectPlotViewerScrollId, selectSelectedSettingsxAxisType } from '../reducers'; import {refreshExperiments} from '../actions/common-experiments-view.actions'; import {EventsGetTaskLogResponse} from '~/business-logic/model/events/eventsGetTaskLogResponse'; -import {HTTP} from '~/app.constants'; import {ScalarKeyEnum} from '~/business-logic/model/events/scalarKeyEnum'; import {EMPTY} from 'rxjs'; @@ -84,7 +83,8 @@ export class CommonExperimentOutputEffects { switchMap(([action, fullScreenData, chartType]) => this.eventsApi.eventsScalarMetricsIterRaw({ task: action.task, metric: action.metric, - key: action.key? action.key : chartType, + key: action.key ? action.key : chartType, + /* eslint-disable @typescript-eslint/naming-convention */ count_total: true, batch_size: 200000, }) @@ -92,17 +92,18 @@ export class CommonExperimentOutputEffects { withLatestFrom(this.store.select(selectFullScreenChartIsOpen)), map(([res, isOpen]) => [res.returned, res, isOpen]), expand(([returnedTillNow, data, isOpen]) => (returnedTillNow < data.total) && isOpen ? this.eventsApi.eventsScalarMetricsIterRaw({ - task: action.task, - metric: action.metric, - scroll_id: data.scroll_id, - key: action.key? action.key : chartType, - count_total: true, - batch_size: 200000, - }).pipe( - withLatestFrom(this.store.select(selectFullScreenChartIsOpen)), - map(([res, isOpen]) => [returnedTillNow + res.returned, res, isOpen]) - ) - : EMPTY + task: action.task, + metric: action.metric, + scroll_id: data.scroll_id, + key: action.key ? action.key : chartType, + count_total: true, + batch_size: 200000, + /* eslint-enable @typescript-eslint/naming-convention */ + }).pipe( + withLatestFrom(this.store.select(selectFullScreenChartIsOpen)), + map(([res, isOpen2]) => [returnedTillNow + res.returned, res, isOpen2]) + ) + : EMPTY ), reduce((acc, [, data]) => { const graphData = acc ? acc : fullScreenData.data; @@ -112,8 +113,8 @@ export class CommonExperimentOutputEffects { x: (acc ? item.x : []).concat(data?.variants?.[item.name]?.[action.key || chartType] || []) })); }, null), - mergeMap( data => [ - ... action.key ? [setXtypeGraphDisplayFullDetailsScalars({xAxisType: action.key})]:[], + mergeMap(data => [ + ...action.key ? [setXtypeGraphDisplayFullDetailsScalars({xAxisType: action.key})] : [], mergeGraphDisplayFullDetailsScalars({data}), deactivateLoader(outputActions.getGraphDisplayFullDetailsScalars.type), ]), @@ -126,11 +127,11 @@ export class CommonExperimentOutputEffects { fetchExperimentPlots$ = createEffect(() => this.actions$.pipe( ofType(outputActions.experimentPlotsRequested), - switchMap(action => this.eventsApi.eventsGetTaskPlots({task: action.task, iters: 5}).pipe( + switchMap(action => this.eventsApi.eventsGetTaskPlots({task: action.task, iters: 1}).pipe( map(res => [res.plots.length, res]), expand(([plotsLength, data]) => plotsLength < data.total // eslint-disable-next-line @typescript-eslint/naming-convention - ? this.eventsApi.eventsGetTaskPlots({task: action.task, iters: 5, scroll_id: data.scroll_id}).pipe( + ? this.eventsApi.eventsGetTaskPlots({task: action.task, iters: 1, scroll_id: data.scroll_id}).pipe( map(res => [plotsLength + res.plots.length, res]) ) : EMPTY @@ -150,6 +151,15 @@ export class CommonExperimentOutputEffects { ]) )); + fetchExperimentScalarSingleValue$ = createEffect(() => this.actions$.pipe( + ofType(outputActions.EXPERIMENT_SCALAR_REQUESTED), + switchMap((action) => this.eventsApi.eventsGetTaskSingleValueMetrics({ + tasks: [action.payload] + })), + mergeMap((res) => [setExperimentScalarSingleValue(res?.tasks[0])] + ) + )); + fetchExperimentScalar$ = createEffect(() => this.actions$.pipe( ofType(outputActions.EXPERIMENT_SCALAR_REQUESTED), withLatestFrom(this.store.select(selectSelectedSettingsxAxisType), this.store.select(selectExperimentHistogramCacheAxisType)), @@ -183,15 +193,59 @@ export class CommonExperimentOutputEffects { ) )); - downloadFullLog$ = createEffect(() => this.actions$.pipe( - ofType(outputActions.downloadFullLog), - filter(action => !!action.experimentId), - map(action => { - const a = document.createElement('a'); - a.href = `${HTTP.API_BASE_URL}/events.download_task_log?line_type=text&task=${action.experimentId}`; - a.target = '_blank'; - a.download = 'Log'; - a.click(); - }) - ), {dispatch: false}); + fetchPlotsForIter$ = createEffect(() => this.actions$.pipe( + ofType(outputActions.getPlotSample), + withLatestFrom(this.store.select(selectPlotViewerScrollId)), + switchMap(([action, scrollId]) => + this.eventsApi.eventsGetPlotSample({ + /* eslint-disable @typescript-eslint/naming-convention */ + task: action.task, + iteration: action.iteration, + metric: action.metric, + variant: action.variant, + scroll_id: scrollId, + navigate_current_metric: false + /* eslint-enable @typescript-eslint/naming-convention */ + }) + .pipe( + mergeMap(res => [ + // eslint-disable-next-line @typescript-eslint/naming-convention + outputActions.setPlotIterations({min_iteration: res.min_iteration, max_iteration: res.max_iteration}), + outputActions.setCurrentPlot({event: res.event}), deactivateLoader(action.type), + outputActions.setPlotViewerScrollId({scrollId: res.scroll_id}), + ]), + catchError(error => [requestFailed(error), deactivateLoader(action.type)]) + ) + ) + )); + + getNextPlotsForIter$ = createEffect(() => this.actions$.pipe( + ofType(outputActions.getNextPlotSample), + withLatestFrom(this.store.select(selectPlotViewerScrollId)), + switchMap(([action, scrollId]) => + this.eventsApi.eventsNextPlotSample({ + /* eslint-disable @typescript-eslint/naming-convention */ + task: action.task, + scroll_id: scrollId, + navigate_earlier: action.navigateEarlier + /* eslint-enable @typescript-eslint/naming-convention */ + }) + .pipe( + mergeMap(res => { + if (!res.event) { + return [action.navigateEarlier ? outputActions.setViewerBeginningOfTime({beginningOfTime: true}) : outputActions.setViewerEndOfTime({endOfTime: true})]; + } else { + return [ + // eslint-disable-next-line @typescript-eslint/naming-convention + outputActions.setPlotIterations({min_iteration: res.min_iteration, max_iteration: res.max_iteration}), + outputActions.setCurrentPlot({event: res.event}), deactivateLoader(action.type), + outputActions.setPlotViewerScrollId({scrollId: res.scroll_id}), + action.navigateEarlier ? outputActions.setViewerBeginningOfTime({beginningOfTime: false}) : outputActions.setViewerEndOfTime({endOfTime: false}) + ]; + } + }), + catchError(error => [requestFailed(error), deactivateLoader(action.type)]) + ) + ) + )); } diff --git a/src/app/webapp-common/experiments/effects/common-experiments-info.effects.ts b/src/app/webapp-common/experiments/effects/common-experiments-info.effects.ts index 54194b14..1c0b0187 100644 --- a/src/app/webapp-common/experiments/effects/common-experiments-info.effects.ts +++ b/src/app/webapp-common/experiments/effects/common-experiments-info.effects.ts @@ -176,12 +176,16 @@ export class CommonExperimentsInfoEffects { ) ) )); + getPipelineStep$ = createEffect(() => this.actions$.pipe( ofType(commonInfoActions.getSelectedPipelineStep), - switchMap((action) => this.apiTasks.tasksGetByIdEx({ + withLatestFrom( + this.store.select(selectRouterConfig).pipe(map(config => !!config?.includes('pipelines'))) + ), + switchMap(([action, pipeline]) => this.apiTasks.tasksGetByIdEx({ id: [action.id], // eslint-disable-next-line @typescript-eslint/naming-convention - only_fields: PIPELINE_INFO_ONLY_FIELDS + only_fields: pipeline ? PIPELINE_INFO_ONLY_FIELDS : ['name', 'runtime', 'configuration', 'status'] }).pipe( mergeMap((res: any) => [commonInfoActions.setSelectedPipelineStep({step: res?.tasks[0]}), deactivateLoader(action.type)] @@ -201,9 +205,9 @@ export class CommonExperimentsInfoEffects { this.store.select(selectExperimentsList), this.store.select(selectExperimentInfoData), this.store.select(selectAppVisible), - this.store.select(selectRouterConfig).pipe(map(config => !!config?.includes('pipelines'))) + this.store.select(selectRouterConfig).pipe(map(config => !!config?.includes('pipelines') || !!config?.includes('datasets'))) ), - switchMap(([action, tableSelected, selected, experiments, infoData, visible, pipelines]) => { + switchMap(([action, tableSelected, selected, experiments, infoData, visible, customView]) => { const currentSelected = tableSelected || selected; if (this.previousSelectedId && currentSelected?.id != this.previousSelectedId) { this.previousSelectedLastUpdate = null; @@ -211,24 +215,24 @@ export class CommonExperimentsInfoEffects { this.previousSelectedId = currentSelected?.id; if (!infoData || !currentSelected || !visible) { - return of([action, null, tableSelected, selected, pipelines]); + return of([action, null, tableSelected, selected, customView]); } - const listed = experiments.find(e => e.id === currentSelected?.id); + const listed = experiments?.find(e => e.id === currentSelected?.id); return (listed ? of(listed) : // eslint-disable-next-line @typescript-eslint/naming-convention this.apiTasks.tasksGetByIdEx({id: [selected.id], only_fields: ['last_change']}).pipe(map(res => res.tasks[0]))) - .pipe(map(task => [action, task?.last_change ?? task?.last_update, task, selected, pipelines])); + .pipe(map(task => [action, task?.last_change ?? task?.last_update, task, selected, customView])); }), filter(([action, , tableSelected, selected]) => (action.type !== commonInfoActions.AUTO_REFRESH_EXPERIMENT_INFO || (!tableSelected) || (tableSelected?.id === selected?.id))), // Can't have filter here because we need to deactivate loader // filter(([action, selected, updateTime]) => !selected || new Date(selected.last_change) < new Date(updateTime)), - switchMap(([action, updateTime, tableSelected, selected, pipelines]) => { + switchMap(([action, updateTime, tableSelected, selected, customView]) => { // else will deactivate loader if (!updateTime || (new Date(this.previousSelectedLastUpdate) < new Date(updateTime)) || action.type === commonInfoActions.EXPERIMENT_UPDATED_SUCCESSFULLY) { return [ commonInfoActions.getExperiment({experimentId: action.payload}), - ...(pipelines ? [] : [commonInfoActions.getExperimentUncommittedChanges({ + ...(customView ? [] : [commonInfoActions.getExperimentUncommittedChanges({ experimentId: action.payload, autoRefresh: action.type === commonInfoActions.AUTO_REFRESH_EXPERIMENT_INFO })]), @@ -251,13 +255,13 @@ export class CommonExperimentsInfoEffects { map(() => action))), withLatestFrom( this.store.select(selectHasDataFeature), - this.store.select(selectRouterConfig).pipe(map(config => !!config?.includes('pipelines'))) + this.store.select(selectRouterConfig).pipe(map(config => !!config?.includes('pipelines') || !!config?.includes('datasets'))) ), - switchMap(([action, hasDataFeature, pipeline]) => + switchMap(([action, hasDataFeature, graphView]) => this.apiTasks.tasksGetByIdEx({ id: [action.experimentId], // eslint-disable-next-line @typescript-eslint/naming-convention - only_fields: pipeline ? PIPELINE_INFO_ONLY_FIELDS : getExperimentInfoOnlyFields(hasDataFeature) + only_fields: graphView ? PIPELINE_INFO_ONLY_FIELDS : getExperimentInfoOnlyFields(hasDataFeature) }) .pipe( withLatestFrom(this.store.select(selectPipelineSelectedStep)), @@ -276,7 +280,7 @@ export class CommonExperimentsInfoEffects { setBackdrop({payload: false}), new DeactivateEdit(), setExperimentSaving({saving: false}), - pipeline && selectedStep?.id ? getSelectedPipelineStep({id: selectedStep.id}) : new EmptyAction() + graphView && selectedStep?.id ? getSelectedPipelineStep({id: selectedStep.id}) : new EmptyAction() ]; } else { this.router.navigate(['dashboard']); diff --git a/src/app/webapp-common/experiments/effects/common-experiments-menu.effects.ts b/src/app/webapp-common/experiments/effects/common-experiments-menu.effects.ts index f0b29c8b..7c05fe78 100644 --- a/src/app/webapp-common/experiments/effects/common-experiments-menu.effects.ts +++ b/src/app/webapp-common/experiments/effects/common-experiments-menu.effects.ts @@ -36,11 +36,15 @@ import {getAllSystemProjects} from '../../core/actions/projects.actions'; import {MatDialog} from '@angular/material/dialog'; import {ApiPipelinesService} from '~/business-logic/api-services/pipelines.service'; import {PIPELINE_INFO_ONLY_FIELDS} from '../../pipelines-controller/controllers.consts'; -import {AbortAllChildrenDialogComponent} from '../shared/components/abort-all-children-dialog/abort-all-children-dialog.component'; +import { + AbortAllChildrenDialogComponent +} from '../shared/components/abort-all-children-dialog/abort-all-children-dialog.component'; import {selectIsPipelines} from '@common/experiments-compare/reducers'; -import {AbortControllerDialogComponent} from '@common/pipelines-controller/pipeline-controller-menu/abort-controller-dialog/abort-controller-dialog.component'; +import { + AbortControllerDialogComponent +} from '@common/pipelines-controller/pipeline-controller-menu/abort-controller-dialog/abort-controller-dialog.component'; import {get} from 'lodash/fp'; -import { TaskTypeEnum } from '~/business-logic/model/tasks/taskTypeEnum'; +import {TaskTypeEnum} from '~/business-logic/model/tasks/taskTypeEnum'; import {TaskStatusEnum} from '~/business-logic/model/tasks/taskStatusEnum'; export const getChildrenExperiments = (tasksApi, parents, filters?: { [key: string]: any }): Observable => { @@ -94,7 +98,11 @@ export class CommonExperimentsMenuEffects { withLatestFrom(this.store.select(selectSelectedExperiment)), switchMap(([action, selectedEntity]: [ReturnType, IExperimentInfo]) => { const ids = action.selectedEntities.map(exp => exp.id); - return this.apiTasks.tasksEnqueueMany({ids, queue: action.queue.id, ...((!action.queue.id) && {queue_name: action.queue.name}) ,validate_tasks: true}) + return this.apiTasks.tasksEnqueueMany({ + ids, + queue: action.queue.id, ...((!action.queue.id) && {queue_name: action.queue.name}), + validate_tasks: true + }) .pipe( mergeMap(res => this.updateExperimentsSuccess(action, MenuItems.enqueue, ids, selectedEntity, res)), catchError(error => this.updateExperimentFailed(action.type, error)) @@ -107,7 +115,10 @@ export class CommonExperimentsMenuEffects { ofType(menuActions.startPipeline), withLatestFrom(this.store.select(selectRouterParams).pipe(map(params => get('projectId', params)))), switchMap(([action, projectId]) => { - return this.pipelineApi.pipelinesStartPipeline({task: action.task, ...(action.queue && {queue: action.queue}), args: action.args}) + return this.pipelineApi.pipelinesStartPipeline({ + task: action.task, ...(action.queue && {queue: action.queue}), + args: action.args + }) .pipe( mergeMap(res => [ viewActions.getExperiments(), @@ -181,9 +192,11 @@ export class CommonExperimentsMenuEffects { .pipe( mergeMap(res => [ viewActions.getExperiments(), - viewActions.setSelectedExperiments({experiments: (tableMode ==='info' ? [] : + viewActions.setSelectedExperiments({ + experiments: (tableMode === 'info' ? [] : [{id: res?.id} - ])}), + ]) + }), ...(tableMode === 'info') ? [viewActions.experimentSelectionChanged({ experiment: {id: res.id}, project: action.payload.cloneData.project ? action.payload.cloneData.project : res?.new_project?.id @@ -234,7 +247,7 @@ export class CommonExperimentsMenuEffects { withLatestFrom(this.store.select(selectIsPipelines)), switchMap(([action, isPipeline]) => getChildrenExperiments(this.apiTasks, action.experiments) .pipe( - tap( () => this.store.dispatch(deactivateLoader(action.type))), + tap(() => this.store.dispatch(deactivateLoader(action.type))), mergeMap(shouldBeAbortedTasks => (isPipeline ? this.dialog.open(AbortControllerDialogComponent, { data: {tasks: action.experiments, shouldBeAbortedTasks} }) : this.dialog.open(AbortAllChildrenDialogComponent, { @@ -417,11 +430,14 @@ export class CommonExperimentsMenuEffects { withLatestFrom( this.store.select(selectRouterParams), this.store.select(exSelectors.selectSelectedTableExperiment), - this.store.select(selectRouterConfig)), - tap(([action, routerParams, selectedExperiment, routeConfig]) => { + this.store.select(selectRouterConfig), + this.store.select(selectTableMode) + ), + tap(([action, routerParams, selectedExperiment, routeConfig, tableMode]) => { if (this.isSelectedExpInCheckedExps(action.selectedEntities, selectedExperiment)) { - const module = routeConfig.includes('pipelines')? 'pipelines': 'projects' - this.router.navigate([`${module}/${routerParams.projectId}/experiments/`]); + const module = routeConfig.includes('pipelines') ? 'pipelines' : (routeConfig.includes('datasets') && routeConfig.includes('simple')) ? 'datasets/simple' : 'projects'; + this.router.navigate([`${module}/${routerParams.projectId}/experiments/${tableMode === 'info' ? + (module === 'datasets/simple' ? routerParams.versionId : routerParams.experimentId) : ''}`]); } }), switchMap(([action, routerParams]) => this.apiTasks.tasksUnarchiveMany({ids: action.selectedEntities.map(exp => exp.id)}) diff --git a/src/app/webapp-common/experiments/effects/common-experiments-view.effects.ts b/src/app/webapp-common/experiments/effects/common-experiments-view.effects.ts index 0cc45713..e072ee78 100644 --- a/src/app/webapp-common/experiments/effects/common-experiments-view.effects.ts +++ b/src/app/webapp-common/experiments/effects/common-experiments-view.effects.ts @@ -2,7 +2,7 @@ import {Injectable} from '@angular/core'; import {ActivatedRoute, Router} from '@angular/router'; import {Actions, createEffect, ofType} from '@ngrx/effects'; import {Action, Store} from '@ngrx/store'; -import {cloneDeep, flatten, get, getOr, isEqual} from 'lodash/fp'; +import {cloneDeep, flatten, get, isEqual} from 'lodash/fp'; import {EMPTY, Observable, of} from 'rxjs'; import { auditTime, @@ -26,7 +26,11 @@ import {excludeTypes, EXPERIMENTS_TABLE_COL_FIELDS} from '~/features/experiments import {requestFailed} from '../../core/actions/http.actions'; import {activeLoader, addMessage, deactivateLoader, setServerError} from '../../core/actions/layout.actions'; import {setURLParams} from '../../core/actions/router.actions'; -import {selectIsArchivedMode, selectIsDeepMode, selectSelectedProject} from '../../core/reducers/projects.reducer'; +import { + selectIsArchivedMode, + selectIsDeepMode, + selectSelectedProject +} from '../../core/reducers/projects.reducer'; import {selectRouterConfig, selectRouterParams} from '../../core/reducers/router-reducer'; import {FilterMetadata} from 'primeng/api/filtermetadata'; import {ISmCol} from '../../shared/ui-components/data/table/table.consts'; @@ -52,7 +56,7 @@ import {EmptyAction, MESSAGES_SEVERITY} from '~/app.constants'; import {selectExperimentsList, selectTableFilters, selectTableMode} from '../reducers'; import {ProjectsGetTaskParentsResponse} from '~/business-logic/model/projects/projectsGetTaskParentsResponse'; import {ProjectsGetTaskParentsRequest} from '~/business-logic/model/projects/projectsGetTaskParentsRequest'; -import {ICommonSearchState} from '../../common-search/common-search.reducer'; +import {SearchState} from '../../common-search/common-search.reducer'; import {SortMeta} from 'primeng/api'; import {hasValue} from '../../shared/utils/helpers.util'; import {ProjectsGetHyperParametersResponse} from '~/business-logic/model/projects/projectsGetHyperParametersResponse'; @@ -75,10 +79,9 @@ import { } from '../../shared/entity-page/items.utils'; import {MINIMUM_ONLY_FIELDS} from '../experiment.consts'; import {ProjectsGetHyperparamValuesResponse} from '~/business-logic/model/projects/projectsGetHyperparamValuesResponse'; -import {selectShowHidden} from '~/features/projects/projects.reducer'; import {TasksGetAllExRequest} from '~/business-logic/model/tasks/tasksGetAllExRequest'; import {TasksGetAllExResponse} from '~/business-logic/model/tasks/tasksGetAllExResponse'; -import {selectIsCompare, selectIsPipelines} from '../../experiments-compare/reducers'; +import {selectIsCompare, selectIsDatasets, selectIsPipelines} from '../../experiments-compare/reducers'; import { compareAddDialogTableSortChanged, compareAddTableClearAllFilters, @@ -87,6 +90,8 @@ import { } from '../../experiments-compare/actions/compare-header.actions'; import {TaskTypeEnum} from '~/business-logic/model/tasks/taskTypeEnum'; import {getFilteredUsers, setProjectUsers} from '@common/core/actions/projects.actions'; +import {selectTableRefreshList} from '../reducers/index'; +import {selectShowHidden} from '@common/projects/common-projects.reducer'; @Injectable() @@ -160,46 +165,75 @@ export class CommonExperimentsViewEffects { catchError(error => [ requestFailed(error), deactivateLoader(action.type), - setServerError(error, null, 'Fetch Experiments failed', getOr(false, 'payload.autoRefresh', action)) + addMessage('warn', 'Fetch Experiments failed', [{name: 'More info', actions: [setServerError(error, null, 'Fetch Experiments failed')]}]) ]) ) ) )); + lockRefresh = false; refreshExperiments = createEffect(() => this.actions$.pipe( ofType>(exActions.refreshExperiments), + filter(() => !this.lockRefresh), withLatestFrom( this.store.select(exSelectors.selectCurrentScrollId), this.store.select(selectSelectedExperiment), - this.store.select(selectExperimentsList) + this.store.select(selectExperimentsList), + this.store.select(selectTableRefreshList) ), - switchMap(([action, currentScrollId, selectedExperiment, experiments]) => this.fetchExperiments$(currentScrollId, true) - .pipe( - mergeMap(res => { - res.tasks = convertStopToComplete(res.tasks); - const actions: Action[] = [deactivateLoader(action.type)]; - if (selectedExperiment && action.autoRefresh && isEqual(experiments.map(exp => exp.id).sort(), res.tasks.map(exp => exp.id).sort())) { - actions.push(exActions.setExperimentInPlace({experiments: res.tasks as ITableExperiment[]})); - } else { - // SetExperiments must be before GetExperimentInfo! - actions.push(exActions.setExperiments({experiments: res.tasks as ITableExperiment[], noPreferences: true})); - } - if (selectedExperiment) { - if (action.autoRefresh) { - actions.push(new AutoRefreshExperimentInfo(selectedExperiment.id)); - } else { - // SetExperiments must be before GetExperimentInfo! - actions.push(new GetExperimentInfo(selectedExperiment.id)); - } - } - return actions; - }), - catchError(error => [ - requestFailed(error), - deactivateLoader(action.type), - setServerError(error, null, 'Fetch Experiments failed', action.autoRefresh) - ]) - ) + switchMap(([action, currentScrollId, selectedExperiment, experiments, refreshPending]) => { + this.lockRefresh = !action.autoRefresh; + return this.fetchExperiments$(currentScrollId, true) + .pipe( + mergeMap(res => { + res.tasks = convertStopToComplete(res.tasks); + this.lockRefresh = false; + const actions: Action[] = [deactivateLoader(action.type)]; + if (refreshPending) { + return [ + exActions.getExperimentsWithPageSize({pageSize: experiments.length}), + exActions.setTableRefreshPending({refresh: false}), + deactivateLoader(action.type) + ]; + } + if (res.scroll_id !== currentScrollId) { + actions.push( + exActions.setCurrentScrollId({scrollId: res.scroll_id}), + exActions.setNoMoreExperiments({payload: (res.tasks.length < EXPERIMENTS_PAGE_SIZE)})); + if (!action.autoRefresh) { + actions.push( + addMessage(MESSAGES_SEVERITY.WARN, 'Session expired'), + exActions.setTableRefreshPending({refresh: true})); + } + } + if (action.autoRefresh) { + if (selectedExperiment && isEqual(experiments.map(exp => exp.id).sort(), res.tasks.map(exp => exp.id).sort())) { + actions.push(exActions.setExperimentInPlace({experiments: res.tasks as ITableExperiment[]})); + } else { + // SetExperiments must be before GetExperimentInfo! + actions.push(exActions.setExperiments({experiments: res.tasks as ITableExperiment[], noPreferences: true})); + } + } + if (selectedExperiment) { + if (action.autoRefresh) { + actions.push(new AutoRefreshExperimentInfo(selectedExperiment.id)); + } else { + // SetExperiments must be before GetExperimentInfo! + actions.push(new GetExperimentInfo(selectedExperiment.id)); + } + } + return actions; + }), + catchError(error => { + this.lockRefresh = false; + return [ + requestFailed(error), + deactivateLoader(action.type), + addMessage('warn', 'Fetch Experiments failed', [{name: 'More info', actions: [setServerError(error, null, 'Fetch Experiments failed')]}]) + ]; + }) + ); + } ) )); @@ -207,15 +241,23 @@ export class CommonExperimentsViewEffects { ofType(exActions.getNextExperiments), withLatestFrom( this.store.select(exSelectors.selectCurrentScrollId), - this.store.select(selectExperimentsList) + this.store.select(selectExperimentsList), + this.store.select(selectTableRefreshList) ), - switchMap(([action, scrollId, tasks]) => this.fetchExperiments$(scrollId) + switchMap(([action, scrollId, tasks, refreshPending]) => this.fetchExperiments$(scrollId) .pipe( mergeMap(res => { + if (refreshPending) { + return [ + exActions.getExperimentsWithPageSize({pageSize: tasks.length}), + exActions.setTableRefreshPending({refresh: false}), + deactivateLoader(action.type) + ]; + } res.tasks = convertStopToComplete(res.tasks); const addTasksAction = scrollId === res.scroll_id ? [exActions.addExperiments({experiments: res.tasks as ITableExperiment[]})] - : [exActions.getExperimentsWithPageSize({pageSize: tasks.length}), addMessage(MESSAGES_SEVERITY.WARN, 'Session expired')]; + : [exActions.setTableRefreshPending({refresh: true}), addMessage(MESSAGES_SEVERITY.WARN, 'Session expired')]; return [ exActions.setNoMoreExperiments({payload: (res.tasks.length < EXPERIMENTS_PAGE_SIZE)}), @@ -225,7 +267,10 @@ export class CommonExperimentsViewEffects { ]; }), catchError(error => [ - requestFailed(error), deactivateLoader(action.type), setServerError(error, null, 'Fetch Experiments failed')]) + requestFailed(error), + deactivateLoader(action.type), + addMessage('warn', 'Fetch Experiments failed', [{name: 'More info', actions: [setServerError(error, null, 'Fetch Experiments failed')]}]) + ]) ) ) )); @@ -245,8 +290,8 @@ export class CommonExperimentsViewEffects { this.store.select(selectRouterParams).pipe(map(params => get('projectId', params))), this.store.select(selectTableMode) ), - filter(([action, routeConfig, tasks, projectId, tableMode]) => tableMode === 'info'), - tap(([action, routeConfig, tasks, projectId]) => this.navigateAfterExperimentSelectionChanged(tasks[0] as ITableExperiment, projectId, routeConfig)), + filter(([, , , , tableMode]) => tableMode === 'info'), + tap(([, routeConfig, tasks, projectId]) => this.navigateAfterExperimentSelectionChanged(tasks[0] as ITableExperiment, projectId, routeConfig)), mergeMap(() => [exActions.setTableMode({mode: 'info'})]) )); @@ -278,7 +323,7 @@ export class CommonExperimentsViewEffects { catchError(error => [ requestFailed(error), deactivateLoader(action.type), - setServerError(error, null, 'Fetch types failed')] + addMessage('warn', 'Fetch types failed', [{name: 'More info', actions: [setServerError(error, null, 'Fetch types failed')]}])] ) )))); @@ -293,7 +338,7 @@ export class CommonExperimentsViewEffects { }), catchError(error => [ requestFailed(error), - setServerError(error, null, 'Fetch users failed')] + addMessage('warn', 'Fetch users failed', [{name: 'More info', actions: [setServerError(error, null, 'Fetch users failed')]}])] ) )); @@ -322,8 +367,9 @@ export class CommonExperimentsViewEffects { ); }), catchError(error => [ - requestFailed(error), - setServerError(error, null, 'Fetch parents failed')] + requestFailed(error), + addMessage('warn', 'Fetch parents failed', [{name: 'More info', actions: [setServerError(error, null, 'Fetch parents failed')]}]) + ] ) )) )); @@ -346,7 +392,7 @@ export class CommonExperimentsViewEffects { catchError(error => [ requestFailed(error), deactivateLoader(action.type), - setServerError(error, null, 'Fetch custom metrics failed'), + addMessage('warn', 'Fetch custom metrics failed', [{name: 'More info', actions: [setServerError(error, null, 'Fetch custom metrics failed')]}]), exActions.setCustomHyperParams({params: []})]) ) ) @@ -368,6 +414,7 @@ export class CommonExperimentsViewEffects { catchError(error => [ requestFailed(error), deactivateLoader(action.type), + addMessage('warn', 'Fetch hyper parameters failed', [{name: 'More info', actions: [setServerError(error, null, 'Fetch hyper parameters failed')]}]), setServerError(error, null, 'Fetch hyper parameters failed'), exActions.setCustomHyperParams({params: []})]) ) @@ -407,8 +454,9 @@ export class CommonExperimentsViewEffects { this.store.select(selectIsDeepMode), this.store.select(selectShowHidden), this.store.select(selectIsPipelines), + this.store.select(selectIsDatasets), ), - switchMap(([action, projectId, archived, globalSearch, tableFilters, deep, showHidden, isPipeline]) => { + switchMap(([action, projectId, archived, globalSearch, tableFilters, deep, showHidden, isPipeline, isDataset]) => { const pageSize = 5000; const query = this.getGetAllQuery({ projectId, @@ -419,7 +467,8 @@ export class CommonExperimentsViewEffects { deep, showHidden, pageSize, - isPipeline + isPipeline, + isDataset }); query.only_fields = [EXPERIMENTS_TABLE_COL_FIELDS.NAME, EXPERIMENTS_TABLE_COL_FIELDS.PARENT, EXPERIMENTS_TABLE_COL_FIELDS.STATUS, EXPERIMENTS_TABLE_COL_FIELDS.TYPE, 'company.id', 'system_tags']; @@ -469,7 +518,7 @@ export class CommonExperimentsViewEffects { )); navigateAfterExperimentSelectionChanged(selectedExperiment: ITableExperiment, experimentProject: string, routeConfig: string[]) { - const module = routeConfig.includes('pipelines') ? 'pipelines' : 'projects'; + const module = routeConfig.includes('datasets') ? 'datasets/simple' : routeConfig.includes('pipelines') ? 'pipelines' : 'projects'; // wow angular really suck... const activeChild = get('firstChild.firstChild.firstChild.firstChild.firstChild.firstChild', this.route); const activeChildUrl = activeChild ? getRouteFullUrl(activeChild) : ''; @@ -496,12 +545,13 @@ export class CommonExperimentsViewEffects { showHidden = false, isCompare, isPipeline = false, + isDataset = false, pageSize = EXPERIMENTS_PAGE_SIZE }: { refreshScroll?: boolean; scrollId?: string; projectId: string; - searchQuery?: ICommonSearchState['searchQuery']; + searchQuery?: SearchState['searchQuery']; archived: boolean; orderFields?: SortMeta[]; tableFilters: { [columnId: string]: FilterMetadata }; @@ -512,6 +562,7 @@ export class CommonExperimentsViewEffects { showHidden?: boolean; isCompare?: boolean; isPipeline?: boolean; + isDataset?: boolean; pageSize?: number; }): TasksGetAllExRequest { const projectFilter = get([EXPERIMENTS_TABLE_COL_FIELDS.PROJECT, 'value'], tableFilters); @@ -522,8 +573,10 @@ export class CommonExperimentsViewEffects { const tagsFilterAnd = tableFilters?.[EXPERIMENTS_TABLE_COL_FIELDS.TAGS]?.matchMode === 'AND'; const parentFilter = get([EXPERIMENTS_TABLE_COL_FIELDS.PARENT, 'value'], tableFilters); const systemTags = get(['system_tags', 'value'], tableFilters); + const systemTagsFilter = (archived ? ['__$and', MODEL_TAGS.HIDDEN] : ['__$and', '__$not', MODEL_TAGS.HIDDEN]) - .concat(systemTags ? systemTags : []).concat((isPipeline || showHidden) ? [] : ['__$not', 'pipeline']); + .concat(systemTags ? systemTags : []).concat((isPipeline || isDataset || showHidden) ? [] : ['__$not', 'pipeline']) + .concat(isDataset? ['dataset']: []); let filters = createFiltersFromStore(tableFilters, true); filters = Object.keys(filters).reduce((acc, colId) => { @@ -549,7 +602,7 @@ export class CommonExperimentsViewEffects { const colsFilters = flatten(cols.filter(col => col.id !== 'selected' && !col.hidden).map(col => col.getter || col.id)); const metricColsFilters = metricCols ? flatten(metricCols.map(col => col.getter || col.id)) : []; const only_fields = [...new Set([...MINIMUM_ONLY_FIELDS, ...colsFilters, ...metricColsFilters] - .concat(isPipeline ? ['runtime._pipeline_hash', 'execution.queue', 'type', 'hyperparams.properties.version'] : []))]; + .concat(isPipeline || isDataset ? ['runtime._pipeline_hash', 'runtime.version', 'execution.queue', 'type', 'hyperparams.properties.version'] : []))]; return { ...filters, id: selectedIds, @@ -565,7 +618,7 @@ export class CommonExperimentsViewEffects { size: pageSize, order_by: encodeOrder(orderFields), status: (statusFilter && statusFilter.length > 0) ? statusFilter : undefined, - type: isPipeline ? [TaskTypeEnum.Controller] : (typeFilter?.length > 0) ? typeFilter : excludeTypes, + type: isPipeline ? [TaskTypeEnum.Controller] : isDataset ? [TaskTypeEnum.DataProcessing] : (typeFilter?.length > 0) ? typeFilter : excludeTypes, user: (userFilter?.length > 0) ? userFilter : [], ...(parentFilter?.length > 0 && {parent: parentFilter}), ...(systemTagsFilter?.length > 0 && {system_tags: systemTagsFilter}), @@ -593,10 +646,11 @@ export class CommonExperimentsViewEffects { this.store.select(selectShowHidden), this.store.select(selectIsCompare), this.store.select(selectIsPipelines), + this.store.select(selectIsDatasets), ), switchMap(([ scrollId, projectId, isArchived, gb, orderFields, filters, selectedExperiments, - showAllSelectedIsActive, cols, metricCols, deep, showHidden, isCompare, isPipeline + showAllSelectedIsActive, cols, metricCols, deep, showHidden, isCompare, isPipeline, isDataset ]) => { const tableFilters = cloneDeep(filters) || {} as { [key: string]: FilterMetadata }; if (tableFilters && tableFilters.status && tableFilters.status.value.includes('completed')) { @@ -605,7 +659,7 @@ export class CommonExperimentsViewEffects { const selectedIds = showAllSelectedIsActive ? selectedExperiments.map(exp => exp.id) : []; return this.apiTasks.tasksGetAllEx(this.getGetAllQuery({ refreshScroll, scrollId, projectId, searchQuery: gb, archived: isArchived, orderFields, - tableFilters, selectedIds, cols, metricCols, deep, showHidden, isCompare, isPipeline, pageSize + tableFilters, selectedIds, cols, metricCols, deep, showHidden, isCompare, isPipeline, pageSize, isDataset })); }) ); @@ -628,7 +682,7 @@ export class CommonExperimentsViewEffects { catchError(error => [ requestFailed(error), deactivateLoader(action.type), - setServerError(error, null, 'Fetch tags failed')] + addMessage('warn', 'Fetch tags failed', [{name: 'More info', actions: [setServerError(error, null, 'Fetch tags failed')]}])] ) )) )); diff --git a/src/app/webapp-common/experiments/experiment.consts.ts b/src/app/webapp-common/experiments/experiment.consts.ts index babe2995..b39f70d7 100644 --- a/src/app/webapp-common/experiments/experiment.consts.ts +++ b/src/app/webapp-common/experiments/experiment.consts.ts @@ -16,6 +16,12 @@ export const INITIAL_EXPERIMENT_TABLE_COLS: ISmCol[] = [ disableDrag : true, disablePointerEvents: true, }, + { + id : EXPERIMENTS_TABLE_COL_FIELDS.ID, + headerType : ColHeaderTypeEnum.title, + header : 'ID', + style : {width: '100px'}, + }, { id : EXPERIMENTS_TABLE_COL_FIELDS.TYPE, headerType : ColHeaderTypeEnum.sortFilter, diff --git a/src/app/webapp-common/experiments/experiments.component.html b/src/app/webapp-common/experiments/experiments.component.html index eb0e4a3f..4f79038d 100644 --- a/src/app/webapp-common/experiments/experiments.component.html +++ b/src/app/webapp-common/experiments/experiments.component.html @@ -77,6 +77,7 @@ [contextMenuTemplate]="contextMenuExtendedTemplate" [contextMenuActive]="contextMenuActive" [entityType]="entityType" + [hasExperimentUpdate]="selectedExperimentsHasUpdate$ | async" (experimentSelectionChanged)="experimentSelectionChanged($event)" (experimentsSelectionChanged)="experimentsSelectionChanged($event)" (sortedChanged)="sortedChanged($event)" @@ -87,6 +88,7 @@ (columnsReordered)="columnsReordered($event)" (columnResized)="columnResized($event)" (openContextMenu)="onContextMenuOpen($event)" + (clearAllFilters)="clearTableFiltersHandler($event)" > diff --git a/src/app/webapp-common/experiments/experiments.component.ts b/src/app/webapp-common/experiments/experiments.component.ts index 0cae793b..95cd74db 100644 --- a/src/app/webapp-common/experiments/experiments.component.ts +++ b/src/app/webapp-common/experiments/experiments.component.ts @@ -1,33 +1,11 @@ import {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewChild,} from '@angular/core'; import { - getCustomColumns$, - selectActiveParentsFilter, - selectedExperimentsDisableAvailable, - selectExperimentsHiddenTableCols, - selectExperimentsList, - selectExperimentsParents, - selectExperimentsTableCols, - selectExperimentsTableColsOrder, - selectExperimentsTags, - selectExperimentsTypes, - selectHyperParamsOptions, - selectHyperParamsVariants, - selectIsExperimentInEditMode, - selectNoMoreExperiments, - selectSelectedExperiments, - selectSelectedTableExperiment, - selectShowAllSelectedIsActive, - selectSplitSize, - selectTableFilters, selectTableMode, - selectTableSortFields + getCustomColumns$, selectActiveParentsFilter, selectedExperimentsDisableAvailable, selectExperimentsHiddenTableCols, selectExperimentsList, selectExperimentsParents, selectExperimentsTableCols, + selectExperimentsTableColsOrder, selectExperimentsTags, selectExperimentsTypes, selectHyperParamsOptions, selectHyperParamsVariants, selectIsExperimentInEditMode, selectNoMoreExperiments, + selectSelectedExperiments, selectSelectedTableExperiment, selectShowAllSelectedIsActive, selectSplitSize, selectTableFilters, selectTableMode, selectTableRefreshList, selectTableSortFields } from './reducers'; import { - selectCompanyTags, - selectIsArchivedMode, selectIsDeepMode, - selectProjectSystemTags, - selectProjectTags, selectProjectUsers, - selectSelectedProject, - selectTagsFilterByProject + selectCompanyTags, selectIsArchivedMode, selectIsDeepMode, selectProjectSystemTags, selectProjectTags, selectProjectUsers, selectSelectedProject, selectTagsFilterByProject } from '../core/reducers/projects.reducer'; import {Store} from '@ngrx/store'; import {ColHeaderTypeEnum, ISmCol, TableSortOrderEnum} from '../shared/ui-components/data/table/table.consts'; @@ -38,21 +16,16 @@ import {distinctUntilChanged, filter, map, skip, tap, withLatestFrom} from 'rxjs import {MatDialog} from '@angular/material/dialog'; import {combineLatest, Observable} from 'rxjs'; import {selectAppVisible, selectBackdropActive} from '../core/reducers/view.reducer'; -import {InitSearch, ResetSearch} from '../common-search/common-search.actions'; -import {ICommonSearchState, selectSearchQuery} from '../common-search/common-search.reducer'; +import {initSearch, resetSearch} from '../common-search/common-search.actions'; +import {SearchState, selectSearchQuery} from '../common-search/common-search.reducer'; import {ITableExperiment} from './shared/common-experiment-model.model'; import {IExperimentsViewState} from '~/features/experiments/reducers/experiments-view.reducer'; -import { - selectIsSharedAndNotOwner, - selectMetricsLoading, - selectMetricVariants, - selectSelectedExperiment -} from '~/features/experiments/reducers'; +import {selectIsSharedAndNotOwner, selectMetricsLoading, selectMetricVariants, selectSelectedExperiment} from '~/features/experiments/reducers'; import {EXPERIMENTS_TABLE_COL_FIELDS} from '~/features/experiments/shared/experiments.const'; import * as experimentsActions from './actions/common-experiments-view.actions'; import {setTableCols, setTableMode, setTags, tableFilterChanged} from './actions/common-experiments-view.actions'; import {MetricVariantResult} from '~/business-logic/model/projects/metricVariantResult'; -import {setAutoRefresh} from '../core/actions/layout.actions'; +import {resetAceCaretsPositions, setAutoRefresh} from '../core/actions/layout.actions'; import {setArchive as setProjectArchive, setDeep} from '../core/actions/projects.actions'; import {createMetricColumn, decodeColumns, decodeFilter, decodeOrder,} from '../shared/utils/tableParamEncode'; import {BaseEntityPageComponent} from '../shared/entity-page/base-entity-page'; @@ -78,19 +51,8 @@ import {EnqueueFooterItem} from '../shared/entity-page/footer-items/enqueue-foot import {AbortFooterItem} from '../shared/entity-page/footer-items/abort-footer-item'; import {addTag} from './actions/common-experiments-menu.actions'; import { - CountAvailableAndIsDisableSelectedFiltered, - MenuItems, - selectionDisabledAbort, - selectionDisabledAbortAllChildren, - selectionDisabledArchive, - selectionDisabledDelete, - selectionDisabledDequeue, - selectionDisabledEnqueue, - selectionDisabledMoveTo, - selectionDisabledPublishExperiments, - selectionDisabledQueue, - selectionDisabledReset, - selectionDisabledViewWorker + CountAvailableAndIsDisableSelectedFiltered, MenuItems, selectionDisabledAbort, selectionDisabledAbortAllChildren, selectionDisabledArchive, selectionDisabledDelete, selectionDisabledDequeue, + selectionDisabledEnqueue, selectionDisabledMoveTo, selectionDisabledPublishExperiments, selectionDisabledQueue, selectionDisabledReset, selectionDisabledViewWorker } from '../shared/entity-page/items.utils'; import {ExperimentsTableComponent} from './dumb/experiments-table/experiments-table.component'; import {DequeueFooterItem} from '../shared/entity-page/footer-items/dequeue-footer-item'; @@ -119,6 +81,7 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI public entityTypeEnum = EntityTypeEnum; public experiments$: Observable>; + public selectedExperimentsHasUpdate$: Observable; public noMoreExperiments$: Observable; public tableSortFields$: Observable; public tableSortOrder$: Observable; @@ -169,7 +132,7 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI private isDeep$: Observable; private hiddenTableCols$: Observable; private metricTableCols$: Observable; - private searchQuery$: Observable; + private searchQuery$: Observable; get selectedProject() { return this.route.parent.snapshot.params.projectId; @@ -199,6 +162,7 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI this.selectedExperimentsDisableAvailable$ = this.store.select(selectedExperimentsDisableAvailable); this.selectedProject$ = this.store.select(selectSelectedProject); this.selectedExperiment$ = this.store.select(selectSelectedExperiment); + this.selectedExperimentsHasUpdate$ = this.store.select(selectTableRefreshList); this.selectedExperiments$ = this.store.select(selectSelectedExperiments) .pipe(tap(selectedExperiments => { this.selectedExperiments = selectedExperiments; @@ -229,16 +193,16 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI this.hyperParams$ = this.store.select(selectHyperParamsVariants).pipe( map(hyperParams => groupHyperParams(hyperParams)) ); - this.experiments$ = this.store.select(selectExperimentsList).pipe( - withLatestFrom(this.isArchived$), - // lil hack for hiding archived task after they been archived from task info or footer... - map(([experiments, showArchived]) => filterArchivedExperiments(experiments, showArchived)), - tap(() => this.refreshing = false) - ); + this.experiments$ = this.store.select(selectExperimentsList) + .pipe( + filter(experiments => experiments !== null), + withLatestFrom(this.isArchived$), + // lil hack for hiding archived task after they have been archived from task info or footer... + map(([experiments, showArchived]) => filterArchivedExperiments(experiments, showArchived))); this.filteredTableCols$ = combineLatest([this.columns$, this.metricTableCols$, this.isDeep$]) .pipe( - filter(([tableCols, metricCols, ]) => !!tableCols && !!metricCols), + filter(([tableCols, metricCols,]) => !!tableCols && !!metricCols), map(([tableCols, metricCols, isDeep]) => tableCols.concat(metricCols.map(col => ({...col, metric: true}))) // Only show project col on "all projects" @@ -260,6 +224,8 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI super.ngOnInit(); let prevQueryParams: Params; + this.sub.add(this.store.select(selectRouterParams).pipe(map(params => this.getParamId(params))).subscribe(() => + this.store.dispatch(resetAceCaretsPositions()))); this.sub.add(combineLatest([ this.store.select(selectRouterParams).pipe(map(params => params?.projectId)), this.route.queryParams, @@ -277,7 +243,7 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI ) .subscribe(([projectId, params]) => { if (projectId != this.projectId && Object.keys(params || {}).length === 0) { - this.emptyUrlInit() + this.emptyUrlInit(); } else { if (params.columns) { const [cols, metrics, hyperParams, , allIds] = decodeColumns(params.columns, this.tableCols); @@ -444,12 +410,12 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI } stopSyncSearch() { - this.store.dispatch(new ResetSearch()); + this.store.dispatch(resetSearch()); this.store.dispatch(experimentsActions.resetGlobalFilter()); } syncAppSearch() { - this.store.dispatch(new InitSearch('Search for experiments')); + this.store.dispatch(initSearch({payload: 'Search for experiments'})); this.sub.add(this.searchQuery$.pipe(skip(1)).subscribe(query => { this.store.dispatch(experimentsActions.globalFilterChanged(query)); @@ -463,23 +429,24 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI ]) .pipe( withLatestFrom(this.store.select(selectTableMode)), - map(([[experimentId, experiments], mode]) => { - this.firstExperiment = experiments?.[0]; - if (!this.shouldOpenDetails) { - this.store.dispatch(setTableMode({mode: !!experimentId ? 'info' : 'table'})); - } else if (!experimentId && this.shouldOpenDetails && this.firstExperiment && mode === 'info') { - this.shouldOpenDetails = false; - this.store.dispatch(experimentsActions.experimentSelectionChanged({ - experiment: this.firstExperiment, - project: this.selectedProject - })); - } - return experiments.find(experiment => experiment.id === experimentId); - }), + map(([[experimentId, experiments], mode]) => { + this.firstExperiment = experiments?.[0]; + if (!experimentId && this.shouldOpenDetails && this.firstExperiment && mode === 'info') { + this.shouldOpenDetails = false; + this.store.dispatch(experimentsActions.experimentSelectionChanged({ + experiment: this.firstExperiment, + project: this.selectedProject + })); + } else { + this.store.dispatch(setTableMode({mode: !!experimentId ? 'info' : 'table'})); + } + return experiments.find(experiment => experiment.id === experimentId); + }), distinctUntilChanged() ) - .subscribe((selectedExperiment) => - this.store.dispatch(experimentsActions.setSelectedExperiment({experiment: selectedExperiment})) + .subscribe((selectedExperiment) => { + this.store.dispatch(experimentsActions.setSelectedExperiment({experiment: selectedExperiment})); + } ) ); } @@ -519,7 +486,7 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI `compare-experiments`, {ids: this.selectedExperiments.map(experiment => experiment.id).join(',')} ], - {relativeTo: this.route.parent.parent}); + {relativeTo: this.entityType === EntityTypeEnum.dataset ? this.route.parent : this.route.parent.parent}); } afterArchiveChanged() { @@ -638,7 +605,7 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI this.store.dispatch(tableFilterChanged({filters, projectId: this.selectedProject})); } - onContextMenuOpen({x, y, single, backdrop}: { x: number; y: number; single?: boolean; backdrop?: boolean}) { + onContextMenuOpen({x, y, single, backdrop}: { x: number; y: number; single?: boolean; backdrop?: boolean }) { this.singleRowContext = single; this.menuBackdrop = !!backdrop; this.contextMenu.openMenu({x, y}); @@ -661,8 +628,8 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI } modeChanged(mode: 'info' | 'table') { + this.store.dispatch(experimentsActions.setTableMode({mode})); if (mode === 'info') { - this.store.dispatch(experimentsActions.setTableMode({mode})); this.store.dispatch(experimentsActions.experimentSelectionChanged({ experiment: this.selectedExperiments?.[0] || this.firstExperiment, project: this.selectedProject @@ -684,4 +651,3 @@ export class ExperimentsComponent extends BaseEntityPageComponent implements OnI }); } } - diff --git a/src/app/webapp-common/experiments/reducers/common-experiment-output.reducer.ts b/src/app/webapp-common/experiments/reducers/common-experiment-output.reducer.ts index 5a2a7e7e..4300c2d0 100644 --- a/src/app/webapp-common/experiments/reducers/common-experiment-output.reducer.ts +++ b/src/app/webapp-common/experiments/reducers/common-experiment-output.reducer.ts @@ -5,6 +5,7 @@ import {sortBy, reverse} from 'lodash/fp'; import {LOG_BATCH_SIZE} from '../shared/common-experiments.const'; import {MetricsPlotEvent} from '~/business-logic/model/events/metricsPlotEvent'; import {ExtFrame} from '@common/shared/experiment-graphs/single-graph/plotly-graph-base'; +import { EventsGetTaskSingleValueMetricsResponseValues } from '~/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseValues'; export type GroupByCharts = 'metric' | 'none'; @@ -34,7 +35,6 @@ export interface HistogramCharts { [metric: string]: { [variant: string]: SeriesData }; } - export interface CommonExperimentOutputState { metricsMultiScalarsCharts: any; metricsHistogramCharts: HistogramCharts; @@ -51,6 +51,12 @@ export interface CommonExperimentOutputState { searchTerm: string; logFilter: string; showSettings: boolean; + minMaxIterations: { minIteration: number; maxIteration: number }; + currentPlotViewer: any; + scalarSingleValue: Array; + plotViewerScrollId: string; + plotViewerEndOfTime: boolean; + plotViewerBeginningOfTime: boolean; } export interface ExperimentSettings { @@ -80,9 +86,15 @@ export const initialCommonExperimentOutputState: CommonExperimentOutputState = { totalLogLines: null, beginningOfLog: false, settingsList: [], + scalarSingleValue:[], searchTerm: '', logFilter: null, - showSettings: false + showSettings: false, + currentPlotViewer: null, + minMaxIterations: null, + plotViewerScrollId: null, + plotViewerEndOfTime: null, + plotViewerBeginningOfTime: null }; export function commonExperimentOutputReducer(state = initialCommonExperimentOutputState, action): CommonExperimentOutputState { @@ -98,7 +110,14 @@ export function commonExperimentOutputReducer(state = initialCommonExperimentOut case actions.setGraphDisplayFullDetailsScalars.type: return {...state, fullScreenDetailedChart: action.data}; case actions.setGraphDisplayFullDetailsScalarsIsOpen.type: - return {...state, isFullScreenOpen: action.isOpen}; + return { + ...state, + isFullScreenOpen: action.isOpen, + fullScreenDetailedChart: null, + currentPlotViewer: null, + plotViewerScrollId: null, + minMaxIterations: null + }; case actions.getGraphDisplayFullDetailsScalars.type: return {...state, fetchingFullScreenData: true}; case actions.setXtypeGraphDisplayFullDetailsScalars.type: @@ -146,11 +165,23 @@ export function commonExperimentOutputReducer(state = initialCommonExperimentOut return {...state, metricsHistogramCharts: action.payload, cachedAxisType: action.axisType}; case actions.SET_EXPERIMENT_PLOTS: return {...state, metricsPlotsCharts: action.payload}; + case actions.setCurrentPlot.type: + return {...state, currentPlotViewer: action.event}; + case actions.setExperimentScalarSingleValue.type: + return {...state, scalarSingleValue: action.values}; + case actions.setPlotIterations.type: + return {...state, minMaxIterations: {minIteration: action.min_iteration, maxIteration: action.max_iteration}}; + case actions.setPlotViewerScrollId.type: + return {...state, plotViewerScrollId: action.scrollId}; + case actions.setViewerEndOfTime.type: + return {...state, plotViewerEndOfTime: action.endOfTime}; + case actions.setViewerBeginningOfTime.type: + return {...state, plotViewerBeginningOfTime: action.beginningOfTime}; case actions.UPDATE_EXPERIMENT_SETTINGS: { let newSettings: ExperimentSettings[]; const changes = {...action.payload.changes, lastModified: (new Date()).getTime()} as ExperimentSettings; const experimentExists = state.settingsList.find(setting => setting.id === action.payload.id); - const discardBefore = new Date() + const discardBefore = new Date(); discardBefore.setMonth(discardBefore.getMonth() - 6); if (experimentExists) { newSettings = state.settingsList diff --git a/src/app/webapp-common/experiments/reducers/common-experiments-view.reducer.ts b/src/app/webapp-common/experiments/reducers/common-experiments-view.reducer.ts index 0580283f..bdcb5669 100644 --- a/src/app/webapp-common/experiments/reducers/common-experiments-view.reducer.ts +++ b/src/app/webapp-common/experiments/reducers/common-experiments-view.reducer.ts @@ -4,7 +4,7 @@ import * as actions from '../actions/common-experiments-view.actions'; import {MetricVariantResult} from '~/business-logic/model/projects/metricVariantResult'; import {TableFilter} from '../../shared/utils/tableParamEncode'; import {ProjectsGetTaskParentsResponseParents} from '~/business-logic/model/projects/projectsGetTaskParentsResponseParents'; -import {ICommonSearchState} from '../../common-search/common-search.reducer'; +import {SearchState} from '../../common-search/common-search.reducer'; import {SortMeta} from 'primeng/api'; import {CountAvailableAndIsDisableSelectedFiltered} from '../../shared/entity-page/items.utils'; import {setSelectedProject} from '@common/core/actions/projects.actions'; @@ -25,6 +25,7 @@ export interface ICommonExperimentsViewState { hiddenTableCols: { [colName: string]: boolean }; hiddenProjectTableCols: { [projectId: string]: { [colName: string]: boolean | undefined } }; experiments: Array; + refreshList: boolean; noMoreExperiment: boolean; selectedExperiment: ITableExperiment; selectedExperiments: Array; @@ -32,7 +33,7 @@ export interface ICommonExperimentsViewState { selectedExperimentSource: string; experimentToken: string; scrollId: string; - globalFilter: ICommonSearchState['searchQuery']; + globalFilter: SearchState['searchQuery']; showAllSelectedIsActive: boolean; metricVariants: Array; hyperParams: Array; @@ -50,9 +51,10 @@ export const commonExperimentsInitialState: ICommonExperimentsViewState = { tableCols: [], colsOrder: {}, // eslint-disable-next-line @typescript-eslint/naming-convention - hiddenTableCols: {comment: true, active_duration: true}, + hiddenTableCols: {comment: true, active_duration: true, id: true}, hiddenProjectTableCols: {}, - experiments: [], + experiments: null, + refreshList: false, tableFilters: {}, tempFilters: {}, projectColumnFilters: {}, @@ -80,9 +82,9 @@ export const commonExperimentsInitialState: ICommonExperimentsViewState = { tableMode: 'table' }; -const setExperimentsAndUpdateSelectedExperiments = (state: ICommonExperimentsViewState, payload): ICommonExperimentsViewState => ({ +const setExperimentsAndUpdateSelectedExperiments = (state: ICommonExperimentsViewState, payload: {id: string; changes: Partial}) => ({ ...state, - experiments: state.experiments.map(ex => ex.id === payload.id ? {...ex, ...payload.changes} : ex), + experiments: state.experiments?.map(ex => ex.id === payload.id ? {...ex, ...payload.changes} : ex) || null, ...(state.selectedExperiment?.id === payload.id && {selectedExperiment: {...state.selectedExperiment, ...payload.changes}}), ...(state.selectedExperiments.find(ex => ex.id === payload.id) && {selectedExperiments: state.selectedExperiments.map(ex => ex.id === payload.id ? {...ex, ...payload.changes} : ex)}) }); @@ -115,11 +117,11 @@ export const commonExperimentsViewReducer = createReducer( })), on(actions.addExperiments, (state, action) => ({ ...state, - experiments: state.experiments.concat(action.experiments) + experiments: state.experiments?.concat(action.experiments) || null })), on(actions.removeExperiments, (state, action) => ({ ...state, - experiments: state.experiments.filter(exp => !action.experiments.includes(exp.id)) + experiments: state.experiments?.filter(exp => !action.experiments.includes(exp.id)) || null })), on(actions.updateExperiment, (state, action) => setExperimentsAndUpdateSelectedExperiments(state, action)), on(actions.updateManyExperiment, (state, action) => @@ -129,10 +131,11 @@ export const commonExperimentsViewReducer = createReducer( }, state as ICommonExperimentsViewState) ), on(actions.setExperiments, (state, action) => ({...state, experiments: action.experiments})), + on(actions.setTableRefreshPending, (state, action) => ({...state, refreshList: action.refresh})), on(actions.setExperimentInPlace, (state, action) => ({ ...state, experiments: state.experiments - .map(currExp => action.experiments.find(newExp => newExp.id === currExp.id)) - .filter(e => e) + ?.map(currExp => action.experiments.find(newExp => newExp.id === currExp.id)) + .filter(e => e) || null })), on(actions.setNoMoreExperiments, (state, action) => ({...state, noMoreExperiment: action.payload})), on(actions.setCurrentScrollId, (state, action) => ({...state, scrollId: action.scrollId})), diff --git a/src/app/webapp-common/experiments/reducers/index.ts b/src/app/webapp-common/experiments/reducers/index.ts index c171c8f0..aef4fce7 100644 --- a/src/app/webapp-common/experiments/reducers/index.ts +++ b/src/app/webapp-common/experiments/reducers/index.ts @@ -27,8 +27,10 @@ import {FilterMetadata} from 'primeng/api/filtermetadata'; import {SortMeta} from 'primeng/api'; import {distinctUntilChanged, map} from 'rxjs/operators'; import {combineLatest} from 'rxjs'; +import { EventsGetTaskSingleValueMetricsResponseValues } from '~/business-logic/model/events/eventsGetTaskSingleValueMetricsResponseValues'; export const selectExperimentsList = createSelector(experimentsView, (state): ITableExperiment[] => state.experiments); +export const selectTableRefreshList = createSelector(experimentsView, (state): boolean => !!state.refreshList); export const selectSelectedTableExperiment = createSelector(experimentsView, (state): ITableExperiment => state.selectedExperiment); export const selectExperimentsTableColsWidth = createSelector(experimentsView, selectRouterParams, @@ -178,6 +180,7 @@ export const selectExperimentHyperParamsSelectedSectionParams = export const selectFullScreenChartIsOpen = createSelector(experimentOutput, (state): boolean => state.isFullScreenOpen); export const selectFullScreenChartIsFetching = createSelector(experimentOutput, (state): boolean => state.fetchingFullScreenData); export const selectFullScreenChartXtype = createSelector(experimentOutput, (state): ScalarKeyEnum => state.fullScreenXtype); +export const selectScalarSingleValue = createSelector(experimentOutput, (state): Array => state.scalarSingleValue); export const selectFullScreenChart = createSelector(selectFullScreenChartXtype, selectFullScreenChartIsFetching, experimentOutput, (axisType, isFetching , state) => { if (axisType === ScalarKeyEnum.IsoTime && state.fullScreenDetailedChart) { return { @@ -211,3 +214,8 @@ export const selectExperimentInfoHistograms = createSelector( }); export const selectCurrentArtifactExperimentId = createSelector(experimentInfo, state => state.artifactsExperimentId); +export const selectMinMaxIterations = createSelector(experimentOutput, (state) => state.minMaxIterations); +export const selectCurrentPlotViewer = createSelector(experimentOutput, (state) => state.currentPlotViewer); +export const selectPlotViewerScrollId = createSelector(experimentOutput, (state) => state.plotViewerScrollId); +export const selectViewerEndOfTime = createSelector(experimentOutput, (state) => state.plotViewerEndOfTime); +export const selectViewerBeginningOfTime = createSelector(experimentOutput, (state) => state.plotViewerBeginningOfTime); diff --git a/src/app/webapp-common/experiments/shared/common-experiments.const.ts b/src/app/webapp-common/experiments/shared/common-experiments.const.ts index 2ed9fda6..2b6d1d5f 100644 --- a/src/app/webapp-common/experiments/shared/common-experiments.const.ts +++ b/src/app/webapp-common/experiments/shared/common-experiments.const.ts @@ -1,6 +1,6 @@ import {TaskStatusEnum} from '~/business-logic/model/tasks/taskStatusEnum'; import {TaskTypeEnum} from '~/business-logic/model/tasks/taskTypeEnum'; -import {EXPERIMENTS_STATUS_LABELS} from '~/features/experiments/shared/experiments.const'; +import {DATASETS_STATUS_LABEL, EXPERIMENTS_STATUS_LABELS} from '~/features/experiments/shared/experiments.const'; export type ExperimentWizardMethodsEnum = 'create' | 'edit' | 'clone' | 'extend'; @@ -35,9 +35,9 @@ export const EXPERIMENTS_METRICS_TYPES = { export const EXPERIMENTS_PAGE_SIZE = 15; export const EXPERIMENT_TABLE_ONLY_FIELDS = ['id', 'type', 'name', 'started', 'completed', 'status', 'system_tags', 'user.name', 'last_metrics', 'last_update', 'active_duration']; -export const FILTERED_EXPERIMENTS_STATUS_OPTIONS = Object.entries(EXPERIMENTS_STATUS_LABELS) +export const FILTERED_EXPERIMENTS_STATUS_OPTIONS = (isDataset) => Object.entries(EXPERIMENTS_STATUS_LABELS) .filter(([key, val]: [TaskStatusEnum, string]) => ![TaskStatusEnum.Closed].includes(key)) - .map(([key, val]) => ({label: val, value: key})); + .map(([key, val]) => ({label: isDataset && DATASETS_STATUS_LABEL[key] || val, value: key})); export const EXPERIMENTS_TYPES_LABELS = { [TaskTypeEnum.Training]: 'Training', [TaskTypeEnum.Testing] : 'Testing', diff --git a/src/app/webapp-common/experiments/shared/common-experiments.utils.ts b/src/app/webapp-common/experiments/shared/common-experiments.utils.ts index f08f3b27..43316f71 100644 --- a/src/app/webapp-common/experiments/shared/common-experiments.utils.ts +++ b/src/app/webapp-common/experiments/shared/common-experiments.utils.ts @@ -1,4 +1,5 @@ import {DIGITS_AFTER_DECIMAL} from '~/features/experiments/shared/experiments.const'; +import {ITableExperiment} from '@common/experiments/shared/common-experiment-model.model'; export const convertStopToComplete = (tasks) => tasks.map(task => { if (task.status === 'closed') { @@ -7,7 +8,7 @@ export const convertStopToComplete = (tasks) => tasks.map(task => { return task; }); -export const filterArchivedExperiments = (experiments, showArchived) => { +export const filterArchivedExperiments = (experiments, showArchived): ITableExperiment[] => { if (showArchived) { return experiments.filter(ex => ex?.system_tags?.includes('archived')); } else { diff --git a/src/app/webapp-common/experiments/shared/components/experiment-menu/experiment-menu.component.ts b/src/app/webapp-common/experiments/shared/components/experiment-menu/experiment-menu.component.ts index 3a0eb9b1..6b191868 100644 --- a/src/app/webapp-common/experiments/shared/components/experiment-menu/experiment-menu.component.ts +++ b/src/app/webapp-common/experiments/shared/components/experiment-menu/experiment-menu.component.ts @@ -382,8 +382,10 @@ To avoid this, clone the experiment and work with the cloned experiment.` this.store.dispatch(new SetExperiment(null)); this.store.dispatch(experimentsActions.getExperiments()); this.store.dispatch(new DeactivateEdit()); + if (this.activateFromMenuButton || this.selectedExperiments.map(e => e.id).includes(this.selectedExperiment?.id)) { - window.setTimeout(() => this.router.navigate([`projects/${this.projectId}/experiments`], {queryParamsHandling: 'preserve'})); + const entityBaseRoute= { [EntityTypeEnum.experiment]: 'projects',[EntityTypeEnum.dataset]: 'datasets/simple', [EntityTypeEnum.controller]:'pipelines' }; + window.setTimeout(() => this.router.navigate([`${entityBaseRoute[entityType] || 'projects'}/${this.projectId}/experiments`], {queryParamsHandling: 'preserve'})); } } }); diff --git a/src/app/webapp-common/experiments/shared/components/experiment-status-icon-label/experiment-status-icon-label.component.html b/src/app/webapp-common/experiments/shared/components/experiment-status-icon-label/experiment-status-icon-label.component.html index be0baebc..36cfb29e 100644 --- a/src/app/webapp-common/experiments/shared/components/experiment-status-icon-label/experiment-status-icon-label.component.html +++ b/src/app/webapp-common/experiments/shared/components/experiment-status-icon-label/experiment-status-icon-label.component.html @@ -1,6 +1,6 @@
-
{{EXPERIMENTS_STATUS_LABELS[status]}}
+
{{experimentsStatusLabels[status] || status}}
{ if (!crumb?.name) { return; } @@ -10,23 +10,22 @@ function addSuffixForExamples(crumb) { } else { return crumb.name; } -} +}; -export function prepareLinkData(crumb, supportsExamples = false): IBreadcrumbsLink { +export const prepareLinkData = (crumb, supportsExamples = false): IBreadcrumbsLink => { const crumbName = crumb ? crumb.name : ''; const preparedName = (supportsExamples === true) ? addSuffixForExamples(crumb) : crumbName; return crumb ? {name: preparedName, url: crumb.id} : {name: '', url: ''}; -} +}; -export function formatStaticCrumb(crumb: string): IBreadcrumbsLink { +export const formatStaticCrumb = (crumb: string): IBreadcrumbsLink => { if (!crumb) { return {url: null, name: null}; } let name: string; switch (crumb) { case 'workers-and-queues': - name = 'Workers & Queues'; - break; + return {name: 'Workers & Queues', url: null}; case 'output': name = 'Results'; break; @@ -45,9 +44,13 @@ export function formatStaticCrumb(crumb: string): IBreadcrumbsLink { case ':projectId': name = 'All Experiments'; break; + case 'experiments': + return {name: 'All Experiment', url: null}; + case 'models': + return {name: 'All Models', url: null}; default: name = crumb.charAt(0).toUpperCase() + crumb.slice(1); break; } return {url: crumb, name}; -} +}; diff --git a/src/app/webapp-common/layout/breadcrumbs/breadcrumbs.component.html b/src/app/webapp-common/layout/breadcrumbs/breadcrumbs.component.html index ec7e80b9..b4360e55 100644 --- a/src/app/webapp-common/layout/breadcrumbs/breadcrumbs.component.html +++ b/src/app/webapp-common/layout/breadcrumbs/breadcrumbs.component.html @@ -1,73 +1,72 @@ -