From c6850948970b9aab32381a11444df99f3f45cf9e Mon Sep 17 00:00:00 2001 From: Samuel Monson Date: Tue, 20 Jan 2026 16:59:05 -0500 Subject: [PATCH 1/3] Drop UI Signed-off-by: Samuel Monson --- .husky/pre-commit | 1 - .prettierignore | 18 - .prettierrc | 12 - cypress.config.ts | 9 - eslint.config.js | 175 - jest.config.cjs | 30 - jest.setup.ts | 21 - package-lock.json | 17447 ---------------- package.json | 89 - src/ui/.env.development | 3 - src/ui/.env.example | 4 - src/ui/.env.local | 4 - src/ui/.env.production | 3 - src/ui/.env.staging | 3 - .../app/assets/fonts/spezia/Spezia-Medium.otf | Bin 82276 -> 0 bytes .../assets/fonts/spezia/Spezia-Regular.otf | Bin 81716 -> 0 bytes .../assets/fonts/spezia/SpeziaMono-Medium.otf | Bin 70244 -> 0 bytes .../app/assets/fonts/spezia/spezia-medium.ttf | Bin 115948 -> 0 bytes .../fonts/spezia/spezia-mono-medium.ttf | Bin 105344 -> 0 bytes .../assets/fonts/spezia/spezia-regular.ttf | Bin 115952 -> 0 bytes src/ui/app/assets/icons/arrow-down.svg | 3 - src/ui/app/assets/icons/arrow-up.svg | 3 - src/ui/app/assets/icons/check-circle.svg | 3 - src/ui/app/assets/icons/expand.svg | 3 - .../app/assets/icons/guidellm-icon-dark.png | Bin 2800 -> 0 bytes .../app/assets/icons/guidellm-logo-light.png | Bin 5884 -> 0 bytes src/ui/app/assets/icons/index.tsx | 21 - src/ui/app/assets/icons/info.svg | 3 - src/ui/app/assets/icons/nm-logo-with-name.svg | 9 - src/ui/app/assets/icons/open.svg | 3 - src/ui/app/assets/icons/warning-circle.svg | 3 - src/ui/app/globals.css | 34 - src/ui/app/layout.tsx | 68 - src/ui/app/not-found.tsx | 4 - src/ui/app/page.tsx | 77 - src/ui/app/theme.ts | 575 - src/ui/app/types/images.d.ts | 4 - src/ui/app/types/index.d.ts | 3 - .../lib/components/Badge/Badge.component.tsx | 8 - .../lib/components/Badge/Badge.interfaces.ts | 3 - src/ui/lib/components/Badge/Badge.styles.tsx | 11 - src/ui/lib/components/Badge/index.tsx | 2 - .../BlockHeader/BlockHeader.component.tsx | 25 - .../BlockHeader/BlockHeader.interfaces.ts | 4 - .../BlockHeader/BlockHeader.styles.tsx | 8 - src/ui/lib/components/BlockHeader/index.tsx | 2 - .../Carousel/Carousel.component.tsx | 58 - .../Carousel/Carousel.interfaces.ts | 4 - .../components/Carousel/Carousel.styles.tsx | 11 - src/ui/lib/components/Carousel/index.tsx | 2 - .../Charts/Combined/Combined.component.tsx | 153 - .../Charts/Combined/Combined.interfaces.ts | 11 - .../CustomBars/CustomBars.interfaces.ts | 7 - .../Combined/components/CustomBars/index.tsx | 55 - .../CustomGrid/CustomGrid.interfaces.ts | 10 - .../Combined/components/CustomGrid/index.tsx | 72 - .../CustomLegendLayer.interfaces.ts | 6 - .../components/CustomLegendLayer/index.tsx | 41 - .../CustomTick/CustomTick.interfaces.ts | 8 - .../Combined/components/CustomTick/index.tsx | 67 - .../DottedLines/DottedLines.interfaces.ts | 9 - .../Combined/components/DottedLines/index.tsx | 38 - .../lib/components/Charts/Combined/index.tsx | 2 - .../DashedLine/DashedLine.component.tsx | 144 - .../DashedLine/DashedLine.interfaces.ts | 16 - .../CustomLegendLayer.interfaces.ts | 5 - .../components/CustomLegendLayer/index.tsx | 64 - .../DashedSolidLine.interfaces.ts | 7 - .../components/DashedSolidLine/index.tsx | 75 - .../components/Charts/DashedLine/helpers.ts | 96 - .../components/Charts/DashedLine/index.tsx | 2 - .../MetricLine/MetricLine.component.tsx | 122 - .../Charts/MetricLine/MetricLine.interface.ts | 15 - .../CustomAxes/CustomAxes.interfaces.ts | 6 - .../components/CustomAxes/index.tsx | 23 - .../CustomGrid/CustomGrid.interfaces.ts | 10 - .../components/CustomGrid/index.tsx | 72 - .../CustomTick/CustomTick.interfaces.ts | 8 - .../components/CustomTick/index.tsx | 73 - .../ThresholdBar/ThresholdBar.interfaces.ts | 9 - .../components/ThresholdBar/index.tsx | 53 - .../components/Charts/MetricLine/index.tsx | 3 - .../MiniCombined/MiniCombined.component.tsx | 131 - .../MiniCombined/MiniCombined.interfaces.ts | 15 - .../components/ContainerSizeWrapper/index.tsx | 42 - .../CustomBars/CustomBars.interfaces.ts | 7 - .../components/CustomBars/index.tsx | 94 - .../CustomGrid/CustomGrid.interfaces.ts | 10 - .../components/CustomGrid/index.tsx | 72 - .../CustomTick/CustomTick.interfaces.ts | 8 - .../components/CustomTick/index.tsx | 64 - .../DottedLines/DottedLines.interfaces.ts | 9 - .../components/DottedLines/index.tsx | 36 - .../components/Charts/MiniCombined/index.tsx | 5 - .../components/Charts/common/interfaces.ts | 34 - .../Charts/common/useChartScales.ts | 51 - .../Charts/common/useLineColors.tsx | 14 - .../DataPanel/DataPanel.component.tsx | 35 - .../DataPanel/DataPanel.interfaces.ts | 7 - .../components/DataPanel/DataPanel.styles.tsx | 35 - src/ui/lib/components/DataPanel/index.tsx | 2 - .../DistributionPercentiles.component.tsx | 26 - .../DistributionPercentiles.interfaces.tsx | 10 - .../DistributionPercentiles.styles.tsx | 8 - .../DistributionPercentiles/index.tsx | 5 - .../GraphTitle/GraphTitle.component.tsx | 16 - .../GraphTitle/GraphTitle.interfaces.ts | 3 - src/ui/lib/components/GraphTitle/index.tsx | 2 - .../lib/components/Input/Input.component.tsx | 64 - .../lib/components/Input/Input.interfaces.ts | 23 - src/ui/lib/components/Input/Input.styles.tsx | 60 - src/ui/lib/components/Input/index.tsx | 2 - .../MeanMetricSummary.component.tsx | 30 - .../MeanMetricSummary.interfaces.tsx | 5 - .../components/MeanMetricSummary/index.tsx | 2 - .../MetricsContainer.component.tsx | 68 - .../MetricsContainer.interfaces.ts | 8 - .../MetricsContainer.styles.tsx | 33 - .../lib/components/MetricsContainer/index.tsx | 2 - .../MetricSummary.interfaces.ts | 3 - .../MetricsSummary.component.tsx | 310 - .../MetricsSummary/MetricsSummary.styles.tsx | 213 - .../MetricValue/MetricValue.component.tsx | 36 - .../MetricValue/MetricValue.interfaces.ts | 8 - .../components/MetricValue/index.tsx | 2 - .../lib/components/MetricsSummary/index.tsx | 1 - .../components/MetricsSummary/useSummary.ts | 121 - .../PageFooter/PageFooter.component.tsx | 33 - src/ui/lib/components/PageFooter/index.tsx | 1 - .../PageHeader/PageHeader.component.tsx | 38 - .../PageHeader/PageHeader.interfaces.ts | 3 - .../PageHeader/PageHeader.styles.tsx | 19 - src/ui/lib/components/PageHeader/index.tsx | 1 - .../RequestOverTime.component.tsx | 61 - .../RequestOverTime.interfaces.ts | 9 - .../lib/components/RequestOverTime/index.tsx | 2 - .../RowContainer/RowContainer.component.tsx | 18 - .../RowContainer/RowContainer.interfaces.tsx | 6 - src/ui/lib/components/RowContainer/index.tsx | 2 - .../components/Section/Section.component.tsx | 19 - .../components/Section/Section.interfaces.ts | 4 - .../lib/components/Section/Section.styles.tsx | 10 - src/ui/lib/components/Section/index.tsx | 2 - .../SectionContainer.component.tsx | 73 - .../SectionContainer.interfaces.ts | 5 - .../SectionContainer.styles.tsx | 21 - .../lib/components/SectionContainer/index.tsx | 2 - .../SpecBadge/SpecBadge.component.tsx | 34 - .../SpecBadge/SpecBadge.interfaces.ts | 12 - .../components/SpecBadge/SpecBadge.styles.tsx | 21 - src/ui/lib/components/SpecBadge/index.tsx | 2 - .../TokenLength/TokenLength.component.tsx | 46 - .../TokenLength/TokenLength.interfaces.ts | 6 - src/ui/lib/components/TokenLength/index.tsx | 2 - .../WorkloadDetails.component.tsx | 108 - .../lib/components/WorkloadDetails/index.tsx | 1 - .../WorkloadMetricSummary.interfaces.tsx | 0 .../WorkloadMetrics.component.tsx | 147 - .../WorkloadMetrics.styles.tsx | 6 - .../lib/components/WorkloadMetrics/index.tsx | 1 - src/ui/lib/hooks/useColor.ts | 19 - .../FullPageWithHeaderAndFooterLayout.tsx | 23 - .../lib/layouts/helpers/ContentCenterer.tsx | 44 - .../layouts/helpers/useCurrentBreakpoint.ts | 31 - src/ui/lib/store/benchmarksWindowData.ts | 1712 -- src/ui/lib/store/index.ts | 29 - src/ui/lib/store/mockData.ts | 191 - src/ui/lib/store/provider.tsx | 8 - src/ui/lib/store/runInfoWindowData.ts | 11 - .../store/slices/benchmarks/benchmarks.api.ts | 101 - .../slices/benchmarks/benchmarks.constants.ts | 5 - .../benchmarks/benchmarks.interfaces.ts | 32 - .../slices/benchmarks/benchmarks.selectors.ts | 174 - .../slices/benchmarks/benchmarks.slice.ts | 34 - src/ui/lib/store/slices/benchmarks/index.ts | 4 - .../store/slices/metrics/metrics.constants.ts | 10 - .../slices/metrics/metrics.interfaces.ts | 13 - .../store/slices/metrics/metrics.selectors.ts | 3 - .../lib/store/slices/metrics/metrics.slice.ts | 20 - src/ui/lib/store/slices/runInfo/index.ts | 4 - .../lib/store/slices/runInfo/runInfo.api.ts | 21 - .../store/slices/runInfo/runInfo.constants.ts | 3 - .../slices/runInfo/runInfo.interfaces.ts | 13 - .../store/slices/runInfo/runInfo.selectors.ts | 3 - .../lib/store/slices/runInfo/runInfo.slice.ts | 34 - src/ui/lib/store/slices/slo/slo.constants.ts | 22 - src/ui/lib/store/slices/slo/slo.interfaces.ts | 18 - src/ui/lib/store/slices/slo/slo.selectors.ts | 3 - src/ui/lib/store/slices/slo/slo.slice.ts | 47 - .../lib/store/slices/workloadDetails/index.ts | 4 - .../workloadDetails/workloadDetails.api.ts | 21 - .../workloadDetails.constants.ts | 61 - .../workloadDetails.interfaces.ts | 36 - .../workloadDetails.selectors.ts | 79 - .../workloadDetails/workloadDetails.slice.ts | 34 - src/ui/lib/store/workloadDetailsWindowData.ts | 167 - src/ui/lib/utils/ColorHelper.ts | 70 - src/ui/lib/utils/Colors.ts | 66 - src/ui/lib/utils/SvgContainer.tsx | 7 - src/ui/lib/utils/helpers.ts | 68 - src/ui/lib/utils/interpolation.ts | 67 - src/ui/next.config.mjs | 44 - src/ui/public/android-chrome-192x192.png | Bin 14350 -> 0 bytes src/ui/public/android-chrome-512x512.png | Bin 25846 -> 0 bytes src/ui/public/apple-touch-icon.png | Bin 2800 -> 0 bytes src/ui/public/favicon-16x16.png | Bin 1183 -> 0 bytes src/ui/public/favicon-192x192.png | Bin 14350 -> 0 bytes src/ui/public/favicon-32x32.png | Bin 2188 -> 0 bytes src/ui/public/favicon-512x512.png | Bin 25846 -> 0 bytes src/ui/public/favicon.ico | Bin 24046 -> 0 bytes src/ui/public/favicon.png | Bin 2800 -> 0 bytes src/ui/public/manifest.json | 20 - src/ui/serve.json | 3 - src/ui/tsconfig.json | 16 - src/ui/types/declaration.d.ts | 11 - src/ui/types/jest-dom.d.ts | 1 - src/ui/types/jest-dom.txt | 1 - src/ui/types/svg.d.ts | 7 - tests/ui/__mocks__/@nivo/bar.tsx | 2 - tests/ui/__mocks__/@nivo/core.tsx | 1 - tests/ui/__mocks__/@nivo/line.tsx | 1 - tests/ui/__mocks__/fileMock.js | 1 - tests/ui/__mocks__/styleMock.js | 1 - tests/ui/__mocks__/svg.js | 4 - tests/ui/cypress/e2e/homepage.cy.ts | 6 - tests/ui/cypress/support/e2e.ts | 2 - tests/ui/integration/page.test.tsx | 38 - tests/ui/test.helper.tsx | 17 - .../Charts/DashedLine/helpers.test.ts | 136 - tests/ui/unit/mocks/mockBenchmarks.ts | 266 - tests/ui/unit/store/slices/slo.test.tsx | 19 - tests/ui/unit/utils/interpolation.test.ts | 54 - tsconfig.base.json | 26 - tsconfig.cypress.json | 8 - tsconfig.json | 10 - tsconfig.test.json | 18 - 236 files changed, 26527 deletions(-) delete mode 100755 .husky/pre-commit delete mode 100644 .prettierignore delete mode 100644 .prettierrc delete mode 100644 cypress.config.ts delete mode 100644 eslint.config.js delete mode 100644 jest.config.cjs delete mode 100644 jest.setup.ts delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 src/ui/.env.development delete mode 100644 src/ui/.env.example delete mode 100644 src/ui/.env.local delete mode 100644 src/ui/.env.production delete mode 100644 src/ui/.env.staging delete mode 100644 src/ui/app/assets/fonts/spezia/Spezia-Medium.otf delete mode 100644 src/ui/app/assets/fonts/spezia/Spezia-Regular.otf delete mode 100644 src/ui/app/assets/fonts/spezia/SpeziaMono-Medium.otf delete mode 100644 src/ui/app/assets/fonts/spezia/spezia-medium.ttf delete mode 100644 src/ui/app/assets/fonts/spezia/spezia-mono-medium.ttf delete mode 100644 src/ui/app/assets/fonts/spezia/spezia-regular.ttf delete mode 100644 src/ui/app/assets/icons/arrow-down.svg delete mode 100644 src/ui/app/assets/icons/arrow-up.svg delete mode 100644 src/ui/app/assets/icons/check-circle.svg delete mode 100644 src/ui/app/assets/icons/expand.svg delete mode 100644 src/ui/app/assets/icons/guidellm-icon-dark.png delete mode 100644 src/ui/app/assets/icons/guidellm-logo-light.png delete mode 100644 src/ui/app/assets/icons/index.tsx delete mode 100644 src/ui/app/assets/icons/info.svg delete mode 100644 src/ui/app/assets/icons/nm-logo-with-name.svg delete mode 100644 src/ui/app/assets/icons/open.svg delete mode 100644 src/ui/app/assets/icons/warning-circle.svg delete mode 100644 src/ui/app/globals.css delete mode 100644 src/ui/app/layout.tsx delete mode 100644 src/ui/app/not-found.tsx delete mode 100644 src/ui/app/page.tsx delete mode 100644 src/ui/app/theme.ts delete mode 100644 src/ui/app/types/images.d.ts delete mode 100644 src/ui/app/types/index.d.ts delete mode 100644 src/ui/lib/components/Badge/Badge.component.tsx delete mode 100644 src/ui/lib/components/Badge/Badge.interfaces.ts delete mode 100644 src/ui/lib/components/Badge/Badge.styles.tsx delete mode 100644 src/ui/lib/components/Badge/index.tsx delete mode 100644 src/ui/lib/components/BlockHeader/BlockHeader.component.tsx delete mode 100644 src/ui/lib/components/BlockHeader/BlockHeader.interfaces.ts delete mode 100644 src/ui/lib/components/BlockHeader/BlockHeader.styles.tsx delete mode 100644 src/ui/lib/components/BlockHeader/index.tsx delete mode 100644 src/ui/lib/components/Carousel/Carousel.component.tsx delete mode 100644 src/ui/lib/components/Carousel/Carousel.interfaces.ts delete mode 100644 src/ui/lib/components/Carousel/Carousel.styles.tsx delete mode 100644 src/ui/lib/components/Carousel/index.tsx delete mode 100644 src/ui/lib/components/Charts/Combined/Combined.component.tsx delete mode 100644 src/ui/lib/components/Charts/Combined/Combined.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/Combined/components/CustomBars/CustomBars.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/Combined/components/CustomBars/index.tsx delete mode 100644 src/ui/lib/components/Charts/Combined/components/CustomGrid/CustomGrid.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/Combined/components/CustomGrid/index.tsx delete mode 100644 src/ui/lib/components/Charts/Combined/components/CustomLegendLayer/CustomLegendLayer.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/Combined/components/CustomLegendLayer/index.tsx delete mode 100644 src/ui/lib/components/Charts/Combined/components/CustomTick/CustomTick.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/Combined/components/CustomTick/index.tsx delete mode 100644 src/ui/lib/components/Charts/Combined/components/DottedLines/DottedLines.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/Combined/components/DottedLines/index.tsx delete mode 100644 src/ui/lib/components/Charts/Combined/index.tsx delete mode 100644 src/ui/lib/components/Charts/DashedLine/DashedLine.component.tsx delete mode 100644 src/ui/lib/components/Charts/DashedLine/DashedLine.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/DashedLine/components/CustomLegendLayer/CustomLegendLayer.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/DashedLine/components/CustomLegendLayer/index.tsx delete mode 100644 src/ui/lib/components/Charts/DashedLine/components/DashedSolidLine/DashedSolidLine.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/DashedLine/components/DashedSolidLine/index.tsx delete mode 100644 src/ui/lib/components/Charts/DashedLine/helpers.ts delete mode 100644 src/ui/lib/components/Charts/DashedLine/index.tsx delete mode 100644 src/ui/lib/components/Charts/MetricLine/MetricLine.component.tsx delete mode 100644 src/ui/lib/components/Charts/MetricLine/MetricLine.interface.ts delete mode 100644 src/ui/lib/components/Charts/MetricLine/components/CustomAxes/CustomAxes.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/MetricLine/components/CustomAxes/index.tsx delete mode 100644 src/ui/lib/components/Charts/MetricLine/components/CustomGrid/CustomGrid.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/MetricLine/components/CustomGrid/index.tsx delete mode 100644 src/ui/lib/components/Charts/MetricLine/components/CustomTick/CustomTick.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/MetricLine/components/CustomTick/index.tsx delete mode 100644 src/ui/lib/components/Charts/MetricLine/components/ThresholdBar/ThresholdBar.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/MetricLine/components/ThresholdBar/index.tsx delete mode 100644 src/ui/lib/components/Charts/MetricLine/index.tsx delete mode 100644 src/ui/lib/components/Charts/MiniCombined/MiniCombined.component.tsx delete mode 100644 src/ui/lib/components/Charts/MiniCombined/MiniCombined.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/MiniCombined/components/ContainerSizeWrapper/index.tsx delete mode 100644 src/ui/lib/components/Charts/MiniCombined/components/CustomBars/CustomBars.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/MiniCombined/components/CustomBars/index.tsx delete mode 100644 src/ui/lib/components/Charts/MiniCombined/components/CustomGrid/CustomGrid.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/MiniCombined/components/CustomGrid/index.tsx delete mode 100644 src/ui/lib/components/Charts/MiniCombined/components/CustomTick/CustomTick.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/MiniCombined/components/CustomTick/index.tsx delete mode 100644 src/ui/lib/components/Charts/MiniCombined/components/DottedLines/DottedLines.interfaces.ts delete mode 100644 src/ui/lib/components/Charts/MiniCombined/components/DottedLines/index.tsx delete mode 100644 src/ui/lib/components/Charts/MiniCombined/index.tsx delete mode 100644 src/ui/lib/components/Charts/common/interfaces.ts delete mode 100644 src/ui/lib/components/Charts/common/useChartScales.ts delete mode 100644 src/ui/lib/components/Charts/common/useLineColors.tsx delete mode 100644 src/ui/lib/components/DataPanel/DataPanel.component.tsx delete mode 100644 src/ui/lib/components/DataPanel/DataPanel.interfaces.ts delete mode 100644 src/ui/lib/components/DataPanel/DataPanel.styles.tsx delete mode 100644 src/ui/lib/components/DataPanel/index.tsx delete mode 100644 src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.component.tsx delete mode 100644 src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.interfaces.tsx delete mode 100644 src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.styles.tsx delete mode 100644 src/ui/lib/components/DistributionPercentiles/index.tsx delete mode 100644 src/ui/lib/components/GraphTitle/GraphTitle.component.tsx delete mode 100644 src/ui/lib/components/GraphTitle/GraphTitle.interfaces.ts delete mode 100644 src/ui/lib/components/GraphTitle/index.tsx delete mode 100644 src/ui/lib/components/Input/Input.component.tsx delete mode 100644 src/ui/lib/components/Input/Input.interfaces.ts delete mode 100644 src/ui/lib/components/Input/Input.styles.tsx delete mode 100644 src/ui/lib/components/Input/index.tsx delete mode 100644 src/ui/lib/components/MeanMetricSummary/MeanMetricSummary.component.tsx delete mode 100644 src/ui/lib/components/MeanMetricSummary/MeanMetricSummary.interfaces.tsx delete mode 100644 src/ui/lib/components/MeanMetricSummary/index.tsx delete mode 100644 src/ui/lib/components/MetricsContainer/MetricsContainer.component.tsx delete mode 100644 src/ui/lib/components/MetricsContainer/MetricsContainer.interfaces.ts delete mode 100644 src/ui/lib/components/MetricsContainer/MetricsContainer.styles.tsx delete mode 100644 src/ui/lib/components/MetricsContainer/index.tsx delete mode 100644 src/ui/lib/components/MetricsSummary/MetricSummary.interfaces.ts delete mode 100644 src/ui/lib/components/MetricsSummary/MetricsSummary.component.tsx delete mode 100644 src/ui/lib/components/MetricsSummary/MetricsSummary.styles.tsx delete mode 100644 src/ui/lib/components/MetricsSummary/components/MetricValue/MetricValue.component.tsx delete mode 100644 src/ui/lib/components/MetricsSummary/components/MetricValue/MetricValue.interfaces.ts delete mode 100644 src/ui/lib/components/MetricsSummary/components/MetricValue/index.tsx delete mode 100644 src/ui/lib/components/MetricsSummary/index.tsx delete mode 100644 src/ui/lib/components/MetricsSummary/useSummary.ts delete mode 100644 src/ui/lib/components/PageFooter/PageFooter.component.tsx delete mode 100644 src/ui/lib/components/PageFooter/index.tsx delete mode 100644 src/ui/lib/components/PageHeader/PageHeader.component.tsx delete mode 100644 src/ui/lib/components/PageHeader/PageHeader.interfaces.ts delete mode 100644 src/ui/lib/components/PageHeader/PageHeader.styles.tsx delete mode 100644 src/ui/lib/components/PageHeader/index.tsx delete mode 100644 src/ui/lib/components/RequestOverTime/RequestOverTime.component.tsx delete mode 100644 src/ui/lib/components/RequestOverTime/RequestOverTime.interfaces.ts delete mode 100644 src/ui/lib/components/RequestOverTime/index.tsx delete mode 100644 src/ui/lib/components/RowContainer/RowContainer.component.tsx delete mode 100644 src/ui/lib/components/RowContainer/RowContainer.interfaces.tsx delete mode 100644 src/ui/lib/components/RowContainer/index.tsx delete mode 100644 src/ui/lib/components/Section/Section.component.tsx delete mode 100644 src/ui/lib/components/Section/Section.interfaces.ts delete mode 100644 src/ui/lib/components/Section/Section.styles.tsx delete mode 100644 src/ui/lib/components/Section/index.tsx delete mode 100644 src/ui/lib/components/SectionContainer/SectionContainer.component.tsx delete mode 100644 src/ui/lib/components/SectionContainer/SectionContainer.interfaces.ts delete mode 100644 src/ui/lib/components/SectionContainer/SectionContainer.styles.tsx delete mode 100644 src/ui/lib/components/SectionContainer/index.tsx delete mode 100644 src/ui/lib/components/SpecBadge/SpecBadge.component.tsx delete mode 100644 src/ui/lib/components/SpecBadge/SpecBadge.interfaces.ts delete mode 100644 src/ui/lib/components/SpecBadge/SpecBadge.styles.tsx delete mode 100644 src/ui/lib/components/SpecBadge/index.tsx delete mode 100644 src/ui/lib/components/TokenLength/TokenLength.component.tsx delete mode 100644 src/ui/lib/components/TokenLength/TokenLength.interfaces.ts delete mode 100644 src/ui/lib/components/TokenLength/index.tsx delete mode 100644 src/ui/lib/components/WorkloadDetails/WorkloadDetails.component.tsx delete mode 100644 src/ui/lib/components/WorkloadDetails/index.tsx delete mode 100644 src/ui/lib/components/WorkloadMetrics/WorkloadMetricSummary.interfaces.tsx delete mode 100644 src/ui/lib/components/WorkloadMetrics/WorkloadMetrics.component.tsx delete mode 100644 src/ui/lib/components/WorkloadMetrics/WorkloadMetrics.styles.tsx delete mode 100644 src/ui/lib/components/WorkloadMetrics/index.tsx delete mode 100644 src/ui/lib/hooks/useColor.ts delete mode 100644 src/ui/lib/layouts/FullPageWithHeaderAndFooterLayout.tsx delete mode 100644 src/ui/lib/layouts/helpers/ContentCenterer.tsx delete mode 100644 src/ui/lib/layouts/helpers/useCurrentBreakpoint.ts delete mode 100644 src/ui/lib/store/benchmarksWindowData.ts delete mode 100644 src/ui/lib/store/index.ts delete mode 100644 src/ui/lib/store/mockData.ts delete mode 100644 src/ui/lib/store/provider.tsx delete mode 100644 src/ui/lib/store/runInfoWindowData.ts delete mode 100644 src/ui/lib/store/slices/benchmarks/benchmarks.api.ts delete mode 100644 src/ui/lib/store/slices/benchmarks/benchmarks.constants.ts delete mode 100644 src/ui/lib/store/slices/benchmarks/benchmarks.interfaces.ts delete mode 100644 src/ui/lib/store/slices/benchmarks/benchmarks.selectors.ts delete mode 100644 src/ui/lib/store/slices/benchmarks/benchmarks.slice.ts delete mode 100644 src/ui/lib/store/slices/benchmarks/index.ts delete mode 100644 src/ui/lib/store/slices/metrics/metrics.constants.ts delete mode 100644 src/ui/lib/store/slices/metrics/metrics.interfaces.ts delete mode 100644 src/ui/lib/store/slices/metrics/metrics.selectors.ts delete mode 100644 src/ui/lib/store/slices/metrics/metrics.slice.ts delete mode 100644 src/ui/lib/store/slices/runInfo/index.ts delete mode 100644 src/ui/lib/store/slices/runInfo/runInfo.api.ts delete mode 100644 src/ui/lib/store/slices/runInfo/runInfo.constants.ts delete mode 100644 src/ui/lib/store/slices/runInfo/runInfo.interfaces.ts delete mode 100644 src/ui/lib/store/slices/runInfo/runInfo.selectors.ts delete mode 100644 src/ui/lib/store/slices/runInfo/runInfo.slice.ts delete mode 100644 src/ui/lib/store/slices/slo/slo.constants.ts delete mode 100644 src/ui/lib/store/slices/slo/slo.interfaces.ts delete mode 100644 src/ui/lib/store/slices/slo/slo.selectors.ts delete mode 100644 src/ui/lib/store/slices/slo/slo.slice.ts delete mode 100644 src/ui/lib/store/slices/workloadDetails/index.ts delete mode 100644 src/ui/lib/store/slices/workloadDetails/workloadDetails.api.ts delete mode 100644 src/ui/lib/store/slices/workloadDetails/workloadDetails.constants.ts delete mode 100644 src/ui/lib/store/slices/workloadDetails/workloadDetails.interfaces.ts delete mode 100644 src/ui/lib/store/slices/workloadDetails/workloadDetails.selectors.ts delete mode 100644 src/ui/lib/store/slices/workloadDetails/workloadDetails.slice.ts delete mode 100644 src/ui/lib/store/workloadDetailsWindowData.ts delete mode 100644 src/ui/lib/utils/ColorHelper.ts delete mode 100644 src/ui/lib/utils/Colors.ts delete mode 100644 src/ui/lib/utils/SvgContainer.tsx delete mode 100644 src/ui/lib/utils/helpers.ts delete mode 100644 src/ui/lib/utils/interpolation.ts delete mode 100644 src/ui/next.config.mjs delete mode 100644 src/ui/public/android-chrome-192x192.png delete mode 100644 src/ui/public/android-chrome-512x512.png delete mode 100644 src/ui/public/apple-touch-icon.png delete mode 100644 src/ui/public/favicon-16x16.png delete mode 100644 src/ui/public/favicon-192x192.png delete mode 100644 src/ui/public/favicon-32x32.png delete mode 100644 src/ui/public/favicon-512x512.png delete mode 100644 src/ui/public/favicon.ico delete mode 100644 src/ui/public/favicon.png delete mode 100644 src/ui/public/manifest.json delete mode 100644 src/ui/serve.json delete mode 100644 src/ui/tsconfig.json delete mode 100644 src/ui/types/declaration.d.ts delete mode 100644 src/ui/types/jest-dom.d.ts delete mode 100644 src/ui/types/jest-dom.txt delete mode 100644 src/ui/types/svg.d.ts delete mode 100644 tests/ui/__mocks__/@nivo/bar.tsx delete mode 100644 tests/ui/__mocks__/@nivo/core.tsx delete mode 100644 tests/ui/__mocks__/@nivo/line.tsx delete mode 100644 tests/ui/__mocks__/fileMock.js delete mode 100644 tests/ui/__mocks__/styleMock.js delete mode 100644 tests/ui/__mocks__/svg.js delete mode 100644 tests/ui/cypress/e2e/homepage.cy.ts delete mode 100644 tests/ui/cypress/support/e2e.ts delete mode 100644 tests/ui/integration/page.test.tsx delete mode 100644 tests/ui/test.helper.tsx delete mode 100644 tests/ui/unit/components/Charts/DashedLine/helpers.test.ts delete mode 100644 tests/ui/unit/mocks/mockBenchmarks.ts delete mode 100644 tests/ui/unit/store/slices/slo.test.tsx delete mode 100644 tests/ui/unit/utils/interpolation.test.ts delete mode 100644 tsconfig.base.json delete mode 100644 tsconfig.cypress.json delete mode 100644 tsconfig.json delete mode 100644 tsconfig.test.json diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100755 index 2312dc587..000000000 --- a/.husky/pre-commit +++ /dev/null @@ -1 +0,0 @@ -npx lint-staged diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 5d4291c54..000000000 --- a/.prettierignore +++ /dev/null @@ -1,18 +0,0 @@ -# === Don't touch === -*.md -*.mdx -*.yaml -*.yml - -# === Skip all JSON … -*.json - -# === include relevant json === -!src/ui/**/*.json -!tests/ui/**/*.json - -# Root-level configs to format -!/.eslint.config.js -!/tsconfig*.json -!/*.config.{js,ts} -!/jest.setup.ts diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 7a402c950..000000000 --- a/.prettierrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "arrowParens": "always", - "bracketSameLine": false, - "bracketSpacing": true, - "jsxSingleQuote": false, - "printWidth": 88, - "semi": true, - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "es5", - "useTabs": false -} diff --git a/cypress.config.ts b/cypress.config.ts deleted file mode 100644 index e7bdffc82..000000000 --- a/cypress.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { defineConfig } from 'cypress'; - -export default defineConfig({ - e2e: { - specPattern: 'tests/ui/cypress/e2e/**/*.cy.{js,jsx,ts,tsx}', - supportFile: 'tests/ui/cypress/support/e2e.ts', - baseUrl: 'http://localhost:3000', // optional - }, -}); diff --git a/eslint.config.js b/eslint.config.js deleted file mode 100644 index 510b7db1f..000000000 --- a/eslint.config.js +++ /dev/null @@ -1,175 +0,0 @@ -// @ts-check - -import eslint from '@eslint/js'; -import nextPlugin from '@next/eslint-plugin-next'; -import prettierConfig from 'eslint-config-prettier'; -import cypressPlugin from 'eslint-plugin-cypress'; -import importPlugin from 'eslint-plugin-import'; -import jestPlugin from 'eslint-plugin-jest'; -import prettierPlugin from 'eslint-plugin-prettier'; -import reactPlugin from 'eslint-plugin-react'; -import hooksPlugin from 'eslint-plugin-react-hooks'; -import globals from 'globals'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import tseslint from 'typescript-eslint'; - -// --- SETUP --- -// Recreate __dirname for ES modules -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - -// --- EXPORT ESLINT CONFIG --- -export default tseslint.config( - // 1. Global Ignores - { - ignores: ['node_modules/', '.next/', 'dist/', 'coverage/', '.DS_Store'], - }, - - // 2. Base Configurations (Applied to all files) - eslint.configs.recommended, - prettierConfig, // Disables ESLint rules that conflict with Prettier. IMPORTANT: Must be after other configs. - - // 3. Configuration for App Source Code (Next.js with Type-Aware Linting) - { - files: ['src/ui/**/*.{ts,tsx}'], - languageOptions: { - parser: tseslint.parser, - parserOptions: { - project: true, // Enable type-aware linting - tsconfigRootDir: __dirname, - }, - globals: { - ...globals.browser, - ...globals.node, // Add Node.js globals for `process` etc. - }, - }, - plugins: { - '@typescript-eslint': tseslint.plugin, - '@next/next': nextPlugin, - import: importPlugin, - react: reactPlugin, - 'react-hooks': hooksPlugin, - prettier: prettierPlugin, - }, - rules: { - // --- Base rules to disable in favor of TS versions --- - 'no-unused-vars': 'off', - - // --- Recommended rules from plugins --- - ...tseslint.configs.recommendedTypeChecked.rules, - ...nextPlugin.configs.recommended.rules, - ...nextPlugin.configs['core-web-vitals'].rules, - ...reactPlugin.configs.recommended.rules, - ...hooksPlugin.configs.recommended.rules, - - // --- Prettier --- - 'prettier/prettier': 'error', - - // --- Custom Rules & Overrides --- - '@typescript-eslint/no-unused-vars': [ - 'warn', - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', - }, - ], - '@typescript-eslint/no-floating-promises': 'error', - '@typescript-eslint/no-misused-promises': 'error', - '@typescript-eslint/no-explicit-any': 'warn', - - 'import/order': [ - 'error', - { - groups: [['builtin', 'external'], 'internal', ['parent', 'sibling', 'index']], - 'newlines-between': 'always', - alphabetize: { order: 'asc', caseInsensitive: true }, - }, - ], - - 'react/react-in-jsx-scope': 'off', - 'react/prop-types': 'off', - - '@next/next/no-html-link-for-pages': 'off', - '@next/next/no-img-element': 'off', - - complexity: ['warn', { max: 8 }], - }, - settings: { - react: { version: 'detect' }, - 'import/resolver': { typescript: true, node: true }, - }, - }, - - // 4. Configuration for Jest Test Files (Type-Aware) - { - files: ['tests/ui/**/*.{test,spec}.{ts,tsx}', 'jest.setup.ts'], - languageOptions: { - parser: tseslint.parser, // Explicitly set parser - parserOptions: { - project: './tsconfig.test.json', - tsconfigRootDir: __dirname, - }, - globals: { - ...globals.jest, - ...globals.node, // FIX: Add Node.js globals for `global`, etc. - }, - }, - plugins: { - jest: jestPlugin, - }, - rules: { - ...jestPlugin.configs['flat/recommended'].rules, - '@typescript-eslint/unbound-method': 'off', - }, - }, - - // 5. Configuration for Cypress E2E Test Files (Type-Aware) - { - files: [ - 'tests/ui/cypress/**/*.{cy,e2e}.{ts,tsx}', - 'tests/ui/cypress/support/**/*.ts', - ], - languageOptions: { - parser: tseslint.parser, // Explicitly set parser - parserOptions: { - project: './tsconfig.cypress.json', - tsconfigRootDir: __dirname, - }, - }, - plugins: { - cypress: cypressPlugin, - }, - // Apply recommended rules and then add our overrides - rules: { - ...cypressPlugin.configs.recommended.rules, - 'jest/expect-expect': 'off', - 'jest/no-standalone-expect': 'off', - '@typescript-eslint/no-floating-promises': 'off', - }, - }, - - // 6. Configuration for JS/TS config files - { - files: ['**/*.config.{js,mjs,ts}'], - languageOptions: { - globals: { - ...globals.node, - }, - }, - rules: { - '@typescript-eslint/no-var-requires': 'off', - }, - }, - - // 7. Configuration for JS/TS mock files and test helpers - { - files: ['tests/ui/**/__mocks__/**/*.{js,ts}', 'tests/ui/unit/mocks/**/*.ts'], - languageOptions: { - globals: { - ...globals.node, - }, - }, - } -); diff --git a/jest.config.cjs b/jest.config.cjs deleted file mode 100644 index 7c46d8747..000000000 --- a/jest.config.cjs +++ /dev/null @@ -1,30 +0,0 @@ -const path = require('path'); -const nextJest = require('next/jest'); - -const createJestConfig = nextJest({ - dir: path.resolve(__dirname, 'src/ui'), -}); - -const customJestConfig = { - collectCoverage: false, - collectCoverageFrom: ['./src/ui/**/*.{ts,tsx}'], - coverageDirectory: './coverage', - coverageProvider: 'v8', - coverageReporters: ['text-summary', 'lcov', 'json-summary'], - moduleFileExtensions: ['ts', 'tsx', 'js'], - moduleNameMapper: { - '^.+\\.(svg)$': '/tests/ui/__mocks__/svg.js', - '^@/(.*)$': '/src/$1', - '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': - '/tests/ui/__mocks__/fileMock.js', - '\\.(css|less|scss|sass)$': '/tests/ui/__mocks__/styleMock.js', - }, - setupFilesAfterEnv: ['/jest.setup.ts'], - testEnvironment: 'jest-environment-jsdom', - testMatch: [ - '/tests/ui/unit/**/*.(test|spec).{ts,tsx,js,jsx}', - '/tests/ui/integration/**/*.(test|spec).{ts,tsx,js,jsx}', - ], -}; - -module.exports = createJestConfig(customJestConfig); diff --git a/jest.setup.ts b/jest.setup.ts deleted file mode 100644 index 24fe60724..000000000 --- a/jest.setup.ts +++ /dev/null @@ -1,21 +0,0 @@ -import '@testing-library/jest-dom'; -import 'cross-fetch/polyfill'; - -jest.mock('@nivo/bar'); -jest.mock('@nivo/line'); -jest.mock('@nivo/core'); - -jest.mock('next/dynamic', () => ({ - __esModule: true, - default: (...props: any[]) => { - const dynamicModule = jest.requireActual('next/dynamic'); - const dynamicActualComp = dynamicModule.default; - const RequiredComponent = dynamicActualComp(props[0]); - RequiredComponent.preload - ? RequiredComponent.preload() - : RequiredComponent.render.preload(); - return RequiredComponent; - }, -})); - -global.fetch = jest.fn(); diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index cd8ba92b3..000000000 --- a/package-lock.json +++ /dev/null @@ -1,17447 +0,0 @@ -{ - "name": "guidellm", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "guidellm", - "version": "0.1.0", - "dependencies": { - "@emotion/cache": "^11.13.1", - "@emotion/react": "^11.14.0", - "@emotion/styled": "^11.14.0", - "@mui/material": "^5.11.7", - "@mui/material-nextjs": "^5.16.6", - "@nivo/bar": "^0.88.0", - "@nivo/core": "^0.88.0", - "@nivo/line": "^0.88.0", - "@nivo/scales": "^0.88.0", - "@nivo/tooltip": "^0.88.0", - "@reduxjs/toolkit": "^2.2.7", - "filesize": "^10.1.6", - "next": "13.4.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-material-ui-carousel": "^3.4.2", - "react-redux": "^9.1.2" - }, - "devDependencies": { - "@eslint/eslintrc": "^3", - "@mui/types": "^7.2.14", - "@next/eslint-plugin-next": "^13.4.0", - "@svgr/webpack": "^8.1.0", - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^16.0.0", - "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", - "@types/node": "^22", - "@types/react": "^18.0.28", - "@types/react-dom": "^18.0.11", - "@types/testing-library__jest-dom": "^5.14.9", - "cross-fetch": "^4.1.0", - "cypress": "^13.13.3", - "eslint": "^8.0.0", - "eslint-config-next": "13.4.0", - "eslint-config-prettier": "^8.5.0", - "eslint-import-resolver-typescript": "^4.4.2", - "eslint-plugin-cypress": "^3.6.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jest": "^28.11.0", - "eslint-plugin-jsx-a11y": "^6.6.1", - "eslint-plugin-no-secrets": "^1.0.2", - "eslint-plugin-prettier": "^5.4.0", - "eslint-plugin-react": "^7.31.10", - "eslint-plugin-react-hooks": "^5.2.0", - "globals": "^16.2.0", - "husky": "^9.1.7", - "jest": "^29.7.0", - "jest-coverage-badges": "^1.1.2", - "jest-environment-jsdom": "^29.7.0", - "jest-runner-groups": "^2.2.0", - "jest-transform-stub": "^2.0.0", - "prettier": "^3.5.3", - "serve": "^14.2.4", - "sharp": "^0.32.0", - "typescript": "^5", - "typescript-eslint": "^8.34.0" - }, - "engines": { - "node": ">=22" - } - }, - "node_modules/@adobe/css-tools": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.3.tgz", - "integrity": "sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", - "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", - "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.6", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.0", - "@babel/types": "^7.28.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/generator": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", - "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.0", - "@babel/types": "^7.28.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", - "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", - "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.27.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", - "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "regexpu-core": "^6.2.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", - "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "debug": "^4.4.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.22.10" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", - "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-wrap-function": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", - "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", - "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.27.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", - "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", - "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", - "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", - "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", - "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", - "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", - "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", - "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", - "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.28.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", - "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-remap-async-to-generator": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", - "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", - "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", - "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", - "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", - "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.28.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", - "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/template": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", - "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", - "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", - "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", - "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", - "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", - "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", - "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", - "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", - "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", - "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", - "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", - "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", - "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", - "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", - "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", - "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", - "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", - "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", - "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", - "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", - "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", - "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", - "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", - "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", - "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", - "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", - "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", - "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", - "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", - "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", - "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", - "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", - "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.28.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz", - "integrity": "sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", - "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", - "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", - "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", - "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", - "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", - "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", - "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz", - "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", - "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", - "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", - "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", - "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.0.tgz", - "integrity": "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.27.1", - "@babel/plugin-syntax-import-attributes": "^7.27.1", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.28.0", - "@babel/plugin-transform-async-to-generator": "^7.27.1", - "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.0", - "@babel/plugin-transform-class-properties": "^7.27.1", - "@babel/plugin-transform-class-static-block": "^7.27.1", - "@babel/plugin-transform-classes": "^7.28.0", - "@babel/plugin-transform-computed-properties": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", - "@babel/plugin-transform-dotall-regex": "^7.27.1", - "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.0", - "@babel/plugin-transform-exponentiation-operator": "^7.27.1", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", - "@babel/plugin-transform-for-of": "^7.27.1", - "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.27.1", - "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", - "@babel/plugin-transform-member-expression-literals": "^7.27.1", - "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-modules-systemjs": "^7.27.1", - "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", - "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.28.0", - "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.27.1", - "@babel/plugin-transform-private-property-in-object": "^7.27.1", - "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.0", - "@babel/plugin-transform-regexp-modifiers": "^7.27.1", - "@babel/plugin-transform-reserved-words": "^7.27.1", - "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.27.1", - "@babel/plugin-transform-sticky-regex": "^7.27.1", - "@babel/plugin-transform-template-literals": "^7.27.1", - "@babel/plugin-transform-typeof-symbol": "^7.27.1", - "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.27.1", - "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "core-js-compat": "^3.43.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/preset-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", - "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-transform-react-display-name": "^7.27.1", - "@babel/plugin-transform-react-jsx": "^7.27.1", - "@babel/plugin-transform-react-jsx-development": "^7.27.1", - "@babel/plugin-transform-react-pure-annotations": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", - "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-typescript": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", - "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", - "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz", - "integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@cypress/request": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.8.tgz", - "integrity": "sha512-h0NFgh1mJmm1nr4jCwkGHwKneVYKghUyWe6TMNrk0B9zsjAJxpg8C4/+BAcmLgCPa1vj1V8rNUaILl+zYRUWBQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~4.0.0", - "http-signature": "~1.4.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "6.14.0", - "safe-buffer": "^5.1.2", - "tough-cookie": "^5.0.0", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@cypress/xvfb": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - } - }, - "node_modules/@cypress/xvfb/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@emnapi/core": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.4.tgz", - "integrity": "sha512-A9CnAbC6ARNMKcIcrQwq6HeHCjpcBZ5wSx4U01WXCqEKlrzB9F9315WDNHkrs2xbx7YjjSxbUYxuN6EQzpcY2g==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.0.3", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.4.tgz", - "integrity": "sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.3.tgz", - "integrity": "sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emotion/babel-plugin": { - "version": "11.13.5", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", - "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.2", - "@emotion/memoize": "^0.9.0", - "@emotion/serialize": "^1.3.3", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/cache": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", - "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", - "license": "MIT", - "dependencies": { - "@emotion/memoize": "^0.9.0", - "@emotion/sheet": "^1.4.0", - "@emotion/utils": "^1.4.2", - "@emotion/weak-memoize": "^0.4.0", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/hash": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", - "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", - "license": "MIT" - }, - "node_modules/@emotion/is-prop-valid": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", - "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", - "license": "MIT", - "dependencies": { - "@emotion/memoize": "^0.9.0" - } - }, - "node_modules/@emotion/memoize": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", - "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", - "license": "MIT" - }, - "node_modules/@emotion/react": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", - "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.13.5", - "@emotion/cache": "^11.14.0", - "@emotion/serialize": "^1.3.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", - "@emotion/utils": "^1.4.2", - "@emotion/weak-memoize": "^0.4.0", - "hoist-non-react-statics": "^3.3.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/serialize": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", - "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", - "license": "MIT", - "dependencies": { - "@emotion/hash": "^0.9.2", - "@emotion/memoize": "^0.9.0", - "@emotion/unitless": "^0.10.0", - "@emotion/utils": "^1.4.2", - "csstype": "^3.0.2" - } - }, - "node_modules/@emotion/sheet": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", - "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", - "license": "MIT" - }, - "node_modules/@emotion/styled": { - "version": "11.14.1", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", - "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.13.5", - "@emotion/is-prop-valid": "^1.3.0", - "@emotion/serialize": "^1.3.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", - "@emotion/utils": "^1.4.2" - }, - "peerDependencies": { - "@emotion/react": "^11.0.0-rc.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/unitless": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", - "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", - "license": "MIT" - }, - "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", - "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", - "license": "MIT", - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@emotion/utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", - "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", - "license": "MIT" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", - "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", - "license": "MIT" - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core/node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core/node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz", - "integrity": "sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/snapshot-utils": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.0.4.tgz", - "integrity": "sha512-BEpX8M/Y5lG7MI3fmiO+xCnacOrVsnbqVrcDZIT8aSGkKV1w2WwvRQxSWw5SIS8ozg7+h8tSj5EO1Riqqxcdag==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "30.0.1", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/@jest/schemas": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.1.tgz", - "integrity": "sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/@jest/types": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.1.tgz", - "integrity": "sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.1", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/@sinclair/typebox": { - "version": "0.34.37", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.37.tgz", - "integrity": "sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", - "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", - "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", - "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@mui/core-downloads-tracker": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.18.0.tgz", - "integrity": "sha512-jbhwoQ1AY200PSSOrNXmrFCaSDSJWP7qk6urkTmIirvRXDROkqe+QwcLlUiw/PrREwsIF/vm3/dAXvjlMHF0RA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - } - }, - "node_modules/@mui/icons-material": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.18.0.tgz", - "integrity": "sha512-1s0vEZj5XFXDMmz3Arl/R7IncFqJ+WQ95LDp1roHWGDE2oCO3IS4/hmiOv1/8SD9r6B7tv9GLiqVZYHo+6PkTg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@mui/material": "^5.0.0", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/material": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.18.0.tgz", - "integrity": "sha512-bbH/HaJZpFtXGvWg3TsBWG4eyt3gah3E7nCNU8GLyRjVoWcA91Vm/T+sjHfUcwgJSw9iLtucfHBoq+qW/T30aA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/core-downloads-tracker": "^5.18.0", - "@mui/system": "^5.18.0", - "@mui/types": "~7.2.15", - "@mui/utils": "^5.17.1", - "@popperjs/core": "^2.11.8", - "@types/react-transition-group": "^4.4.10", - "clsx": "^2.1.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1", - "react-is": "^19.0.0", - "react-transition-group": "^4.4.5" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/material-nextjs": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@mui/material-nextjs/-/material-nextjs-5.18.0.tgz", - "integrity": "sha512-LPmUAW+xlAF1pJqYe80X238k+PqPJxjnbk/akBGDRlG3PjSafc6VbKabcr71ogTOmW4aqj7Lj6LM+YESJzYzbA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/cache": "^11.11.0", - "@emotion/server": "^11.11.0", - "@mui/material": "^5.0.0", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "next": "^13.0.0 || ^14.0.0 || ^15.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/cache": { - "optional": true - }, - "@emotion/server": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/material/node_modules/@mui/types": { - "version": "7.2.24", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.24.tgz", - "integrity": "sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/private-theming": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.17.1.tgz", - "integrity": "sha512-XMxU0NTYcKqdsG8LRmSoxERPXwMbp16sIXPcLVgLGII/bVNagX0xaheWAwFv8+zDK7tI3ajllkuD3GZZE++ICQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.17.1", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/styled-engine": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.18.0.tgz", - "integrity": "sha512-BN/vKV/O6uaQh2z5rXV+MBlVrEkwoS/TK75rFQ2mjxA7+NBo8qtTAOA4UaM0XeJfn7kh2wZ+xQw2HAx0u+TiBg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@emotion/cache": "^11.13.5", - "@emotion/serialize": "^1.3.3", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - } - } - }, - "node_modules/@mui/system": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.18.0.tgz", - "integrity": "sha512-ojZGVcRWqWhu557cdO3pWHloIGJdzVtxs3rk0F9L+x55LsUjcMUVkEhiF7E4TMxZoF9MmIHGGs0ZX3FDLAf0Xw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.17.1", - "@mui/styled-engine": "^5.18.0", - "@mui/types": "~7.2.15", - "@mui/utils": "^5.17.1", - "clsx": "^2.1.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/system/node_modules/@mui/types": { - "version": "7.2.24", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.24.tgz", - "integrity": "sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.4.tgz", - "integrity": "sha512-p63yhbX52MO/ajXC7hDHJA5yjzJekvWD3q4YDLl1rSg+OXLczMYPvTuSuviPRCgRX8+E42RXz1D/dz9SxPSlWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.27.6" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/utils": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.17.1.tgz", - "integrity": "sha512-jEZ8FTqInt2WzxDV8bhImWBqeQRD99c/id/fq83H0ER9tFl+sfZlaAoCdznGvbSQQ9ividMxqSV2c7cC1vBcQg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/types": "~7.2.15", - "@types/prop-types": "^15.7.12", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-is": "^19.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/utils/node_modules/@mui/types": { - "version": "7.2.24", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.24.tgz", - "integrity": "sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@next/env": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.0.tgz", - "integrity": "sha512-LKofmUuxwGXk2OZJSSJ2SlJE62s6z+56aRsze7chc5TPoVouLR9liTiSWxzYuVzuxk0ui2wtIjyR2tcgS1dIyw==", - "license": "MIT" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "13.5.11", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.11.tgz", - "integrity": "sha512-0qjDhes9UTSxirt/dYzrv20hs8SUhcIOvlEioj5+XucVrBHihnAk6Om7Vzk+VZ2nRE7tcShm/6lH1xSkJ3XMpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "7.1.7" - } - }, - "node_modules/@next/eslint-plugin-next/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.0.tgz", - "integrity": "sha512-C39AGL3ANXA+P3cFclQjFZaJ4RHPmuBhskmyy0N3VyCntDmRrNkS4aXeNY4Xwure9IL1nuw02D8bM55I+FsbuQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.0.tgz", - "integrity": "sha512-nj6nx6o7rnBXjo1woZFWLk7OUs7y0SQ0k65SX62kc88GqXtYi3BCqbBznjOX8qtrO//NmtAde/Jd5qkjSgINUQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.0.tgz", - "integrity": "sha512-FBYL7kpzI2KG3lv8gO4xVYmWcFohptjzD9RCLdXsAz+Kqz5VCJILF21DoRcz4Nwj/jMe0SO7l5kBVW4POl4EaQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.0.tgz", - "integrity": "sha512-S3htBbcovnLMgVn0z1ThrP1iAeEM43fw8B7S3KyHTAGe0I21ww4rvUkLdgPCqLNvMpv899lmG7NU5rs6rTkGvg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.0.tgz", - "integrity": "sha512-H8GhCgQwFl6iWJ6azQ2tG/GY8BUg1nhPtg4Tp2kIPljdyQypTGJe8oRnPDx0N48WWvB2fNeA7LNEwzVuSidH2w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.0.tgz", - "integrity": "sha512-mztVybRPY39NfPOA3QrRQKzYuw7A/D8ElR6ruvM1cBsXMEfF5xTzdZqfTtrE/gNTPUFug9FJPpiRpkZ4mDUl8w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.0.tgz", - "integrity": "sha512-mdVh/n0QqT2uXqn8kaTywUoLxY1OYqTpiKbt5b51pDwOStqgbIbqBqG0A7XDaiqWa7RKwllOYxPlPm16EDfWUA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.0.tgz", - "integrity": "sha512-GNRqT2mqxxH0x9VthFqziBj8X8HsoBUougmLe3kOouRq/jF73LpKXG0Qs2MYkylqvv/Wg31EYjFNcJnBi1Nimg==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.0.tgz", - "integrity": "sha512-0AkvhUBUqeb4WKN75IW1KjPkN3HazQFA0OpMuTK+6ptJUXMaMwDDcF3sIPCI741BJ2fpODB7BPM4C63hXWEypg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nivo/annotations": { - "version": "0.88.0", - "resolved": "https://registry.npmjs.org/@nivo/annotations/-/annotations-0.88.0.tgz", - "integrity": "sha512-NXE+1oIUn+EGWMQpnpeRMLgi2wyuzhGDoJQY4OUHissCUiNotid2oNQ/PXJwN0toiu+/j9SyhzI32xr70OPi7Q==", - "license": "MIT", - "dependencies": { - "@nivo/colors": "0.88.0", - "@nivo/core": "0.88.0", - "@react-spring/web": "9.4.5 || ^9.7.2", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "react": ">= 16.14.0 < 19.0.0" - } - }, - "node_modules/@nivo/axes": { - "version": "0.88.0", - "resolved": "https://registry.npmjs.org/@nivo/axes/-/axes-0.88.0.tgz", - "integrity": "sha512-jF7aIxzTNayV5cI1J/b9Q1FfpMBxTXGk3OwSigXMSfYWlliskDn2u0qGRLiYhuXFdQAWIp4oXsO1GcAQ0eRVdg==", - "license": "MIT", - "dependencies": { - "@nivo/core": "0.88.0", - "@nivo/scales": "0.88.0", - "@react-spring/web": "9.4.5 || ^9.7.2", - "@types/d3-format": "^1.4.1", - "@types/d3-time-format": "^2.3.1", - "d3-format": "^1.4.4", - "d3-time-format": "^3.0.0" - }, - "peerDependencies": { - "react": ">= 16.14.0 < 19.0.0" - } - }, - "node_modules/@nivo/bar": { - "version": "0.88.0", - "resolved": "https://registry.npmjs.org/@nivo/bar/-/bar-0.88.0.tgz", - "integrity": "sha512-wckwuHWeCikxGvvdRfGL+dVFsUD9uHk1r9s7bWUfOD+p8BWhxtYqfXpHolEfgGg3UyPaHtpGA7P4zgE5vgo7gQ==", - "license": "MIT", - "dependencies": { - "@nivo/annotations": "0.88.0", - "@nivo/axes": "0.88.0", - "@nivo/colors": "0.88.0", - "@nivo/core": "0.88.0", - "@nivo/legends": "0.88.0", - "@nivo/scales": "0.88.0", - "@nivo/tooltip": "0.88.0", - "@react-spring/web": "9.4.5 || ^9.7.2", - "@types/d3-scale": "^4.0.8", - "@types/d3-shape": "^3.1.6", - "d3-scale": "^4.0.2", - "d3-shape": "^3.2.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "react": ">= 16.14.0 < 19.0.0" - } - }, - "node_modules/@nivo/colors": { - "version": "0.88.0", - "resolved": "https://registry.npmjs.org/@nivo/colors/-/colors-0.88.0.tgz", - "integrity": "sha512-IZ+leYIqAlo7dyLHmsQwujanfRgXyoQ5H7PU3RWLEn1PP0zxDKLgEjFEDADpDauuslh2Tx0L81GNkWR6QSP0Mw==", - "license": "MIT", - "dependencies": { - "@nivo/core": "0.88.0", - "@types/d3-color": "^3.0.0", - "@types/d3-scale": "^4.0.8", - "@types/d3-scale-chromatic": "^3.0.0", - "@types/prop-types": "^15.7.2", - "d3-color": "^3.1.0", - "d3-scale": "^4.0.2", - "d3-scale-chromatic": "^3.0.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "react": ">= 16.14.0 < 19.0.0" - } - }, - "node_modules/@nivo/core": { - "version": "0.88.0", - "resolved": "https://registry.npmjs.org/@nivo/core/-/core-0.88.0.tgz", - "integrity": "sha512-XjUkA5MmwjLP38bdrJwn36Gj7T5SYMKD55LYQp/1nIJPdxqJ38dUfE4XyBDfIEgfP6yrHOihw3C63cUdnUBoiw==", - "license": "MIT", - "dependencies": { - "@nivo/tooltip": "0.88.0", - "@react-spring/web": "9.4.5 || ^9.7.2", - "@types/d3-shape": "^3.1.6", - "d3-color": "^3.1.0", - "d3-format": "^1.4.4", - "d3-interpolate": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-scale-chromatic": "^3.0.0", - "d3-shape": "^3.2.0", - "d3-time-format": "^3.0.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nivo/donate" - }, - "peerDependencies": { - "react": ">= 16.14.0 < 19.0.0" - } - }, - "node_modules/@nivo/legends": { - "version": "0.88.0", - "resolved": "https://registry.npmjs.org/@nivo/legends/-/legends-0.88.0.tgz", - "integrity": "sha512-d4DF9pHbD8LmGJlp/Gp1cF4e8y2wfQTcw3jVhbZj9zkb7ZWB7JfeF60VHRfbXNux9bjQ9U78/SssQqueVDPEmg==", - "license": "MIT", - "dependencies": { - "@nivo/colors": "0.88.0", - "@nivo/core": "0.88.0", - "@types/d3-scale": "^4.0.8", - "d3-scale": "^4.0.2" - }, - "peerDependencies": { - "react": ">= 16.14.0 < 19.0.0" - } - }, - "node_modules/@nivo/line": { - "version": "0.88.0", - "resolved": "https://registry.npmjs.org/@nivo/line/-/line-0.88.0.tgz", - "integrity": "sha512-hFTyZ3BdAZvq2HwdwMj2SJGUeodjEW+7DLtFMIIoVIxmjZlAs3z533HcJ9cJd3it928fDm8SF/rgHs0TztYf9Q==", - "license": "MIT", - "dependencies": { - "@nivo/annotations": "0.88.0", - "@nivo/axes": "0.88.0", - "@nivo/colors": "0.88.0", - "@nivo/core": "0.88.0", - "@nivo/legends": "0.88.0", - "@nivo/scales": "0.88.0", - "@nivo/tooltip": "0.88.0", - "@nivo/voronoi": "0.88.0", - "@react-spring/web": "9.4.5 || ^9.7.2", - "d3-shape": "^3.2.0" - }, - "peerDependencies": { - "react": ">= 16.14.0 < 19.0.0" - } - }, - "node_modules/@nivo/scales": { - "version": "0.88.0", - "resolved": "https://registry.npmjs.org/@nivo/scales/-/scales-0.88.0.tgz", - "integrity": "sha512-HbpxkQp6tHCltZ1yDGeqdLcaJl5ze54NPjurfGtx/Uq+H5IQoBd4Tln49bUar5CsFAMsXw8yF1HQvASr7I1SIA==", - "license": "MIT", - "dependencies": { - "@types/d3-scale": "^4.0.8", - "@types/d3-time": "^1.1.1", - "@types/d3-time-format": "^3.0.0", - "d3-scale": "^4.0.2", - "d3-time": "^1.0.11", - "d3-time-format": "^3.0.0", - "lodash": "^4.17.21" - } - }, - "node_modules/@nivo/scales/node_modules/@types/d3-time-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-3.0.4.tgz", - "integrity": "sha512-or9DiDnYI1h38J9hxKEsw513+KVuFbEVhl7qdxcaudoiqWWepapUen+2vAriFGexr6W5+P4l9+HJrB39GG+oRg==", - "license": "MIT" - }, - "node_modules/@nivo/tooltip": { - "version": "0.88.0", - "resolved": "https://registry.npmjs.org/@nivo/tooltip/-/tooltip-0.88.0.tgz", - "integrity": "sha512-iEjVfQA8gumAzg/yUinjTwswygCkE5Iwuo8opwnrbpNIqMrleBV+EAKIgB0PrzepIoW8CFG/SJhoiRfbU8jhOw==", - "license": "MIT", - "dependencies": { - "@nivo/core": "0.88.0", - "@react-spring/web": "9.4.5 || ^9.7.2" - }, - "peerDependencies": { - "react": ">= 16.14.0 < 19.0.0" - } - }, - "node_modules/@nivo/voronoi": { - "version": "0.88.0", - "resolved": "https://registry.npmjs.org/@nivo/voronoi/-/voronoi-0.88.0.tgz", - "integrity": "sha512-MyiNLvODthFoMjQ7Wjp693nogbTmVEx8Yn/7QkJhyPQbFyyA37TF/D1a/ox4h2OslXtP6K9QFN+42gB/zu7ixw==", - "license": "MIT", - "dependencies": { - "@nivo/core": "0.88.0", - "@nivo/tooltip": "0.88.0", - "@types/d3-delaunay": "^6.0.4", - "@types/d3-scale": "^4.0.8", - "d3-delaunay": "^6.0.4", - "d3-scale": "^4.0.2" - }, - "peerDependencies": { - "react": ">= 16.14.0 < 19.0.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.4.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", - "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@react-spring/animated": { - "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.5.tgz", - "integrity": "sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==", - "license": "MIT", - "dependencies": { - "@react-spring/shared": "~9.7.5", - "@react-spring/types": "~9.7.5" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@react-spring/core": { - "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.5.tgz", - "integrity": "sha512-rmEqcxRcu7dWh7MnCcMXLvrf6/SDlSokLaLTxiPlAYi11nN3B5oiCUAblO72o+9z/87j2uzxa2Inm8UbLjXA+w==", - "license": "MIT", - "dependencies": { - "@react-spring/animated": "~9.7.5", - "@react-spring/shared": "~9.7.5", - "@react-spring/types": "~9.7.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/react-spring/donate" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@react-spring/rafz": { - "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.7.5.tgz", - "integrity": "sha512-5ZenDQMC48wjUzPAm1EtwQ5Ot3bLIAwwqP2w2owG5KoNdNHpEJV263nGhCeKKmuA3vG2zLLOdu3or6kuDjA6Aw==", - "license": "MIT" - }, - "node_modules/@react-spring/shared": { - "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.5.tgz", - "integrity": "sha512-wdtoJrhUeeyD/PP/zo+np2s1Z820Ohr/BbuVYv+3dVLW7WctoiN7std8rISoYoHpUXtbkpesSKuPIw/6U1w1Pw==", - "license": "MIT", - "dependencies": { - "@react-spring/rafz": "~9.7.5", - "@react-spring/types": "~9.7.5" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@react-spring/types": { - "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.5.tgz", - "integrity": "sha512-HVj7LrZ4ReHWBimBvu2SKND3cDVUPWKLqRTmWe/fNY6o1owGOX0cAHbdPDTMelgBlVbrTKrre6lFkhqGZErK/g==", - "license": "MIT" - }, - "node_modules/@react-spring/web": { - "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.5.tgz", - "integrity": "sha512-lmvqGwpe+CSttsWNZVr+Dg62adtKhauGwLyGE/RRyZ8AAMLgb9x3NDMA5RMElXo+IMyTkPp7nxTB8ZQlmhb6JQ==", - "license": "MIT", - "dependencies": { - "@react-spring/animated": "~9.7.5", - "@react-spring/core": "~9.7.5", - "@react-spring/shared": "~9.7.5", - "@react-spring/types": "~9.7.5" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@reduxjs/toolkit": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.8.2.tgz", - "integrity": "sha512-MYlOhQ0sLdw4ud48FoC5w0dH9VfWQjtCjreKwYTT3l+r427qYC5Y8PihNutepr8XrNaBUDQo9khWUwQxZaqt5A==", - "license": "MIT", - "dependencies": { - "@standard-schema/spec": "^1.0.0", - "@standard-schema/utils": "^0.3.0", - "immer": "^10.0.3", - "redux": "^5.0.1", - "redux-thunk": "^3.1.0", - "reselect": "^5.1.0" - }, - "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", - "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-redux": { - "optional": true - } - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.12.0.tgz", - "integrity": "sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@standard-schema/spec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", - "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", - "license": "MIT" - }, - "node_modules/@standard-schema/utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", - "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", - "license": "MIT" - }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", - "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", - "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", - "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", - "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", - "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", - "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-preset": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", - "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", - "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", - "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", - "@svgr/babel-plugin-transform-svg-component": "8.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/core": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", - "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^8.1.3", - "snake-case": "^3.0.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", - "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.21.3", - "entities": "^4.4.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/plugin-jsx": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", - "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "@svgr/hast-util-to-babel-ast": "8.0.0", - "svg-parser": "^2.0.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" - } - }, - "node_modules/@svgr/plugin-svgo": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", - "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cosmiconfig": "^8.1.3", - "deepmerge": "^4.3.1", - "svgo": "^3.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" - } - }, - "node_modules/@svgr/webpack": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", - "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.21.3", - "@babel/plugin-transform-react-constant-elements": "^7.21.3", - "@babel/preset-env": "^7.20.2", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.21.0", - "@svgr/core": "8.1.0", - "@svgr/plugin-jsx": "8.1.0", - "@svgr/plugin-svgo": "8.1.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@swc/helpers": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", - "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@testing-library/dom": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", - "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.3.0", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@testing-library/jest-dom": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", - "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@adobe/css-tools": "^4.0.1", - "@babel/runtime": "^7.9.2", - "@types/testing-library__jest-dom": "^5.9.1", - "aria-query": "^5.0.0", - "chalk": "^3.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=8", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/react": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", - "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@testing-library/dom": "^10.0.0", - "@types/react": "^18.0.0 || ^19.0.0", - "@types/react-dom": "^18.0.0 || ^19.0.0", - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@testing-library/user-event": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", - "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz", - "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", - "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "license": "MIT" - }, - "node_modules/@types/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", - "license": "MIT" - }, - "node_modules/@types/d3-format": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-1.4.5.tgz", - "integrity": "sha512-mLxrC1MSWupOSncXN/HOlWUAAIffAEBaI4+PKy2uMPsKe4FNZlk7qrbTjmzJXITQQqBHivaks4Td18azgqnotA==", - "license": "MIT" - }, - "node_modules/@types/d3-path": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", - "license": "MIT" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", - "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", - "license": "MIT", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", - "license": "MIT" - }, - "node_modules/@types/d3-shape": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", - "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", - "license": "MIT", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.1.4.tgz", - "integrity": "sha512-JIvy2HjRInE+TXOmIGN5LCmeO0hkFZx5f9FZ7kiN+D+YTcc8pptsiLiuHsvwxwC7VVKmJ2ExHUgNlAiV7vQM9g==", - "license": "MIT" - }, - "node_modules/@types/d3-time-format": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.3.4.tgz", - "integrity": "sha512-xdDXbpVO74EvadI3UDxjxTdR6QIxm1FKzEA/+F8tL4GWWUg/hgvBqf6chql64U5A9ZUGWo7pEu4eNlyLwbKdhg==", - "license": "MIT" - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.16.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.4.tgz", - "integrity": "sha512-PYRhNtZdm2wH/NT2k/oAJ6/f2VD2N2Dag0lGlx2vWgMSJXGNmlce5MiTQzoWAiIJtso30mjnfQCOKVH+kAQC/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.15", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", - "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.3.23", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz", - "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==", - "license": "MIT", - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.3.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", - "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^18.0.0" - } - }, - "node_modules/@types/react-transition-group": { - "version": "4.4.12", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", - "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/sizzle": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", - "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.9", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", - "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/jest": "*" - } - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/use-sync-external-store": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", - "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.37.0.tgz", - "integrity": "sha512-jsuVWeIkb6ggzB+wPCsR4e6loj+rM72ohW6IBn2C+5NCvfUVY8s33iFPySSVXqtm5Hu29Ne/9bnA0JmyLmgenA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.37.0", - "@typescript-eslint/type-utils": "8.37.0", - "@typescript-eslint/utils": "8.37.0", - "@typescript-eslint/visitor-keys": "8.37.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.37.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.37.0.tgz", - "integrity": "sha512-kVIaQE9vrN9RLCQMQ3iyRlVJpTiDUY6woHGb30JDkfJErqrQEmtdWH3gV0PBAfGZgQXoqzXOO0T3K6ioApbbAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.37.0", - "@typescript-eslint/types": "8.37.0", - "@typescript-eslint/typescript-estree": "8.37.0", - "@typescript-eslint/visitor-keys": "8.37.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.37.0.tgz", - "integrity": "sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.37.0", - "@typescript-eslint/types": "^8.37.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.37.0.tgz", - "integrity": "sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.37.0", - "@typescript-eslint/visitor-keys": "8.37.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.37.0.tgz", - "integrity": "sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.37.0.tgz", - "integrity": "sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.37.0", - "@typescript-eslint/typescript-estree": "8.37.0", - "@typescript-eslint/utils": "8.37.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.37.0.tgz", - "integrity": "sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.37.0.tgz", - "integrity": "sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.37.0", - "@typescript-eslint/tsconfig-utils": "8.37.0", - "@typescript-eslint/types": "8.37.0", - "@typescript-eslint/visitor-keys": "8.37.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.37.0.tgz", - "integrity": "sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.37.0", - "@typescript-eslint/types": "8.37.0", - "@typescript-eslint/typescript-estree": "8.37.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.37.0.tgz", - "integrity": "sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.37.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@zeit/schemas": { - "version": "2.36.0", - "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.36.0.tgz", - "integrity": "sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==", - "dev": true, - "license": "MIT" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/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, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", - "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", - "dev": true, - "license": "MIT" - }, - "node_modules/axe-core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", - "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", - "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.7", - "@babel/helper-define-polyfill-provider": "^0.6.5", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", - "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bare-events": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.0.tgz", - "integrity": "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==", - "dev": true, - "license": "Apache-2.0", - "optional": true - }, - "node_modules/bare-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz", - "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-os": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", - "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "engines": { - "bare": ">=1.14.0" - } - }, - "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-stream": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", - "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "streamx": "^2.21.0" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-events": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-events": { - "optional": true - } - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/blob-util": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/boxen": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", - "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.0", - "chalk": "^5.0.1", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.0.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/boxen/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.25.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", - "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001726", - "electron-to-chromium": "^1.5.173", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "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", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cachedir": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", - "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001727", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", - "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk-template": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", - "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/chalk-template?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/check-more-types": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "license": "ISC" - }, - "node_modules/ci-info": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", - "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/clipboardy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", - "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "arch": "^2.2.0", - "execa": "^5.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clipboardy/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/clipboardy/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clipboardy/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "license": "MIT" - }, - "node_modules/core-js-compat": { - "version": "3.44.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.44.0.tgz", - "integrity": "sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.25.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/cross-fetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", - "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "license": "MIT" - }, - "node_modules/csso": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-tree": "~2.2.0" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, - "node_modules/cypress": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.17.0.tgz", - "integrity": "sha512-5xWkaPurwkIljojFidhw8lFScyxhtiFHl/i/3zov+1Z5CmY4t9tjIdvSXfu82Y3w7wt0uR9KkucbhkVvJZLQSA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@cypress/request": "^3.0.6", - "@cypress/xvfb": "^1.2.4", - "@types/sinonjs__fake-timers": "8.1.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.2.0", - "blob-util": "^2.0.2", - "bluebird": "^3.7.2", - "buffer": "^5.7.1", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.0", - "ci-info": "^4.0.0", - "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", - "commander": "^6.2.1", - "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.4", - "enquirer": "^2.3.6", - "eventemitter2": "6.4.7", - "execa": "4.1.0", - "executable": "^4.1.1", - "extract-zip": "2.0.1", - "figures": "^3.2.0", - "fs-extra": "^9.1.0", - "getos": "^3.2.1", - "is-installed-globally": "~0.4.0", - "lazy-ass": "^1.6.0", - "listr2": "^3.8.3", - "lodash": "^4.17.21", - "log-symbols": "^4.0.0", - "minimist": "^1.2.8", - "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "process": "^0.11.10", - "proxy-from-env": "1.0.0", - "request-progress": "^3.0.0", - "semver": "^7.5.3", - "supports-color": "^8.1.1", - "tmp": "~0.2.3", - "tree-kill": "1.2.2", - "untildify": "^4.0.0", - "yauzl": "^2.10.0" - }, - "bin": { - "cypress": "bin/cypress" - }, - "engines": { - "node": "^16.0.0 || ^18.0.0 || >=20.0.0" - } - }, - "node_modules/cypress/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cypress/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "license": "ISC", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "license": "ISC", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", - "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==", - "license": "BSD-3-Clause" - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "license": "ISC", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale/node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "license": "ISC", - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", - "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==", - "license": "BSD-3-Clause" - }, - "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", - "license": "BSD-3-Clause", - "dependencies": { - "d3-time": "1 - 2" - } - }, - "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, - "license": "BSD-2-Clause" - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, - "license": "MIT" - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dedent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", - "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "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==", - "dev": true, - "license": "MIT", - "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", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", - "license": "ISC", - "dependencies": { - "robust-predicates": "^3.0.2" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.185", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.185.tgz", - "integrity": "sha512-dYOZfUk57hSMPePoIQ1fZWl1Fkj+OshhEVuPacNKWzC1efe56OsHY3l/jCfiAgIICOU3VgOIdoq7ahg7r7n6MQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-next": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.4.0.tgz", - "integrity": "sha512-FkO3QRyUEKAHM4ie0xAcxo7fQ8gWevuLqgf6/g1Y6zWybqSa4FNeJr4hqqTbP25xIRgUUIPILBlx9RSH4C6+gQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@next/eslint-plugin-next": "13.4.0", - "@rushstack/eslint-patch": "^1.1.3", - "@typescript-eslint/parser": "^5.42.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.31.7", - "eslint-plugin-react-hooks": "^4.5.0" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-next/node_modules/@next/eslint-plugin-next": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.0.tgz", - "integrity": "sha512-ZqQi1slguDavpuNUcl9va8+WtHHpgymIW2g+4Gs9FdI+5rjAvrUqqjfCec2hi3Cjbbp7zULFQuAiPwASKHbrxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "7.1.7" - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "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" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "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/eslint-config-next/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-next/node_modules/eslint-import-resolver-typescript": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", - "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.13", - "unrs-resolver": "^1.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } - } - }, - "node_modules/eslint-config-next/node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-config-next/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-next/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/eslint-config-next/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-import-context": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", - "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-tsconfig": "^4.10.1", - "stable-hash-x": "^0.2.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-context" - }, - "peerDependencies": { - "unrs-resolver": "^1.0.0" - }, - "peerDependenciesMeta": { - "unrs-resolver": { - "optional": true - } - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", - "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", - "dev": true, - "license": "ISC", - "dependencies": { - "debug": "^4.4.1", - "eslint-import-context": "^0.1.8", - "get-tsconfig": "^4.10.1", - "is-bun-module": "^2.0.0", - "stable-hash-x": "^0.2.0", - "tinyglobby": "^0.2.14", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^16.17.0 || >=18.6.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-cypress": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-3.6.0.tgz", - "integrity": "sha512-7IAMcBbTVu5LpWeZRn5a9mQ30y4hKp3AfTz+6nSD/x/7YyLMoBI6X7XjDLYI6zFvuy4Q4QVGl563AGEXGW/aSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "globals": "^13.20.0" - }, - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/eslint-plugin-cypress/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-cypress/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-jest": { - "version": "28.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.14.0.tgz", - "integrity": "sha512-P9s/qXSMTpRTerE2FQ0qJet2gKbcGyFTPAJipoKxmWqR6uuFqIqk8FuEfg5yBieOezVrEfAMZrEwJ6yEp+1MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "engines": { - "node": "^16.10.0 || ^18.12.0 || >=20.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", - "jest": "*" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", - "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "aria-query": "^5.3.2", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.10.0", - "axobject-query": "^4.1.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.1" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eslint-plugin-no-secrets": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-secrets/-/eslint-plugin-no-secrets-1.1.2.tgz", - "integrity": "sha512-FjgyBaEkQK6hrdKf0V1TnKbY3dxXmw8S7tjfHs/BMIgFGNYhzFccxbZSJtDCPHTQTSiBtdLwRlOmSF81toII4w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0", - "npm": ">=6.9.0" - }, - "peerDependencies": { - "eslint": ">=3.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz", - "integrity": "sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^2.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, - "license": "(MIT OR WTFPL)", - "engines": { - "node": ">=6" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/expect/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/expect/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/expect/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/expect/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/filesize": { - "version": "10.1.6", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz", - "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 10.4.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "license": "MIT" - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "peer": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", - "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/framer-motion": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-4.1.17.tgz", - "integrity": "sha512-thx1wvKzblzbs0XaK2X0G1JuwIdARcoNOW7VVwjO8BUltzXPyONGAElLu6CiCScsOQRI7FIk/45YTFtJw5Yozw==", - "license": "MIT", - "dependencies": { - "framesync": "5.3.0", - "hey-listen": "^1.0.8", - "popmotion": "9.3.6", - "style-value-types": "4.1.4", - "tslib": "^2.1.0" - }, - "optionalDependencies": { - "@emotion/is-prop-valid": "^0.8.2" - }, - "peerDependencies": { - "react": ">=16.8 || ^17.0.0", - "react-dom": ">=16.8 || ^17.0.0" - } - }, - "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "license": "MIT", - "optional": true, - "dependencies": { - "@emotion/memoize": "0.7.4" - } - }, - "node_modules/framer-motion/node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "license": "MIT", - "optional": true - }, - "node_modules/framesync": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", - "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true, - "license": "MIT" - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", - "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "^3.2.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", - "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hey-listen": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", - "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", - "license": "MIT" - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-signature": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", - "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.18.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/husky": { - "version": "9.1.7", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", - "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", - "dev": true, - "license": "MIT", - "bin": { - "husky": "bin.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immer": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", - "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.7.1" - } - }, - "node_modules/is-bun-module/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-port-reachable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", - "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "peer": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config/node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-config/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-coverage-badges": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/jest-coverage-badges/-/jest-coverage-badges-1.1.2.tgz", - "integrity": "sha512-44A7i2xR6os8+fWk8ZRM6W4fKiD2jwKOLU9eB3iTIIWACd9RbdvmiCNpQZTOsUBhKvz7aQ/ASFhu5JOEhWUOlg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp": "0.5.1" - }, - "bin": { - "jest-coverage-badges": "cli.js" - }, - "engines": { - "node": ">=6.11", - "npm": ">=5.3" - } - }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-diff/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.0.1.tgz", - "integrity": "sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "detect-newline": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "30.0.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.0.2.tgz", - "integrity": "sha512-U66sRrAYdALq+2qtKffBLDWsQ/XoNNs2Lcr83sc9lvE/hEpNafJlq2lXCPUBMNqamMECNxSIekLfe69qg4KMIQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/get-type": "30.0.1", - "pretty-format": "30.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/@jest/schemas": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.1.tgz", - "integrity": "sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { - "version": "0.34.37", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.37.tgz", - "integrity": "sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "30.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz", - "integrity": "sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/schemas": "30.0.1", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.0.4.tgz", - "integrity": "sha512-mxY0vTAEsowJwvFJo5pVivbCpuu6dgdXRmt3v3MXjBxFly7/lTk3Td0PaMyGOeNQUFmSuGEsGYqhbn7PA9OekQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/console": "30.0.4", - "@jest/environment": "30.0.4", - "@jest/test-result": "30.0.4", - "@jest/transform": "30.0.4", - "@jest/types": "30.0.1", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.0.1", - "jest-environment-node": "30.0.4", - "jest-haste-map": "30.0.2", - "jest-leak-detector": "30.0.2", - "jest-message-util": "30.0.2", - "jest-resolve": "30.0.2", - "jest-runtime": "30.0.4", - "jest-util": "30.0.2", - "jest-watcher": "30.0.4", - "jest-worker": "30.0.2", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner-groups": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jest-runner-groups/-/jest-runner-groups-2.2.0.tgz", - "integrity": "sha512-Sp/B9ZX0CDAKa9dIkgH0sGyl2eDuScV4SVvOxqhBMxqWpsNAkmol/C58aTFmPWZj+C0ZTW1r1BSu66MTCN+voA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.14.2" - }, - "peerDependencies": { - "jest-docblock": ">= 24", - "jest-runner": ">= 24" - } - }, - "node_modules/jest-runner/node_modules/@jest/console": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.0.4.tgz", - "integrity": "sha512-tMLCDvBJBwPqMm4OAiuKm2uF5y5Qe26KgcMn+nrDSWpEW+eeFmqA0iO4zJfL16GP7gE3bUUQ3hIuUJ22AqVRnw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "30.0.1", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.0.2", - "jest-util": "30.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/environment": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.0.4.tgz", - "integrity": "sha512-5NT+sr7ZOb8wW7C4r7wOKnRQ8zmRWQT2gW4j73IXAKp5/PX1Z8MCStBLQDYfIG3n1Sw0NRfYGdp0iIPVooBAFQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/fake-timers": "30.0.4", - "@jest/types": "30.0.1", - "@types/node": "*", - "jest-mock": "30.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/expect": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.0.4.tgz", - "integrity": "sha512-Z/DL7t67LBHSX4UzDyeYKqOxE/n7lbrrgEwWM3dGiH5Dgn35nk+YtgzKudmfIrBI8DRRrKYY5BCo3317HZV1Fw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "expect": "30.0.4", - "jest-snapshot": "30.0.4" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/expect-utils": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.4.tgz", - "integrity": "sha512-EgXecHDNfANeqOkcak0DxsoVI4qkDUsR7n/Lr2vtmTBjwLPBnnPOF71S11Q8IObWzxm2QgQoY6f9hzrRD3gHRA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/get-type": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/fake-timers": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.4.tgz", - "integrity": "sha512-qZ7nxOcL5+gwBO6LErvwVy5k06VsX/deqo2XnVUSTV0TNC9lrg8FC3dARbi+5lmrr5VyX5drragK+xLcOjvjYw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "30.0.1", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.0.2", - "jest-mock": "30.0.2", - "jest-util": "30.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/globals": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.0.4.tgz", - "integrity": "sha512-avyZuxEHF2EUhFF6NEWVdxkRRV6iXXcIES66DLhuLlU7lXhtFG/ySq/a8SRZmEJSsLkNAFX6z6mm8KWyXe9OEA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/environment": "30.0.4", - "@jest/expect": "30.0.4", - "@jest/types": "30.0.1", - "jest-mock": "30.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/schemas": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.1.tgz", - "integrity": "sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/test-result": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.0.4.tgz", - "integrity": "sha512-Mfpv8kjyKTHqsuu9YugB6z1gcdB3TSSOaKlehtVaiNlClMkEHY+5ZqCY2CrEE3ntpBMlstX/ShDAf84HKWsyIw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/console": "30.0.4", - "@jest/types": "30.0.1", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/transform": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.0.4.tgz", - "integrity": "sha512-atvy4hRph/UxdCIBp+UB2jhEA/jJiUeGZ7QPgBi9jUUKNgi3WEoMXGNG7zbbELG2+88PMabUNCDchmqgJy3ELg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.0.1", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.0", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.2", - "jest-regex-util": "30.0.1", - "jest-util": "30.0.2", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.1.tgz", - "integrity": "sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.1", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/@sinclair/typebox": { - "version": "0.34.37", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.37.tgz", - "integrity": "sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/jest-runner/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/babel-plugin-istanbul": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.0.tgz", - "integrity": "sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-runner/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/jest-runner/node_modules/cjs-module-lexer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz", - "integrity": "sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/jest-runner/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/jest-runner/node_modules/expect": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.4.tgz", - "integrity": "sha512-dDLGjnP2cKbEppxVICxI/Uf4YemmGMPNy0QytCbfafbpYk9AFQsxb8Uyrxii0RPK7FWgLGlSem+07WirwS3cFQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/expect-utils": "30.0.4", - "@jest/get-type": "30.0.1", - "jest-matcher-utils": "30.0.4", - "jest-message-util": "30.0.2", - "jest-mock": "30.0.2", - "jest-util": "30.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runner/node_modules/jest-diff": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.4.tgz", - "integrity": "sha512-TSjceIf6797jyd+R64NXqicttROD+Qf98fex7CowmlSn7f8+En0da1Dglwr1AXxDtVizoxXYZBlUQwNhoOXkNw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/diff-sequences": "30.0.1", - "@jest/get-type": "30.0.1", - "chalk": "^4.1.2", - "pretty-format": "30.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-environment-node": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.0.4.tgz", - "integrity": "sha512-p+rLEzC2eThXqiNh9GHHTC0OW5Ca4ZfcURp7scPjYBcmgpR9HG6750716GuUipYf2AcThU3k20B31USuiaaIEg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/environment": "30.0.4", - "@jest/fake-timers": "30.0.4", - "@jest/types": "30.0.1", - "@types/node": "*", - "jest-mock": "30.0.2", - "jest-util": "30.0.2", - "jest-validate": "30.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-haste-map": { - "version": "30.0.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.0.2.tgz", - "integrity": "sha512-telJBKpNLeCb4MaX+I5k496556Y2FiKR/QLZc0+MGBYl4k3OO0472drlV2LUe7c1Glng5HuAu+5GLYp//GpdOQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "30.0.1", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.0.2", - "jest-worker": "30.0.2", - "micromatch": "^4.0.8", - "walker": "^1.0.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "node_modules/jest-runner/node_modules/jest-matcher-utils": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.4.tgz", - "integrity": "sha512-ubCewJ54YzeAZ2JeHHGVoU+eDIpQFsfPQs0xURPWoNiO42LGJ+QGgfSf+hFIRplkZDkhH5MOvuxHKXRTUU3dUQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/get-type": "30.0.1", - "chalk": "^4.1.2", - "jest-diff": "30.0.4", - "pretty-format": "30.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-message-util": { - "version": "30.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.2.tgz", - "integrity": "sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.0.1", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.0.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-mock": { - "version": "30.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.2.tgz", - "integrity": "sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "30.0.1", - "@types/node": "*", - "jest-util": "30.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-resolve": { - "version": "30.0.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.0.2.tgz", - "integrity": "sha512-q/XT0XQvRemykZsvRopbG6FQUT6/ra+XV6rPijyjT6D0msOyCvR2A5PlWZLd+fH0U8XWKZfDiAgrUNDNX2BkCw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.2", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.0.2", - "jest-validate": "30.0.2", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-runtime": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.0.4.tgz", - "integrity": "sha512-tUQrZ8+IzoZYIHoPDQEB4jZoPyzBjLjq7sk0KVyd5UPRjRDOsN7o6UlvaGF8ddpGsjznl9PW+KRgWqCNO+Hn7w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/environment": "30.0.4", - "@jest/fake-timers": "30.0.4", - "@jest/globals": "30.0.4", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.0.4", - "@jest/transform": "30.0.4", - "@jest/types": "30.0.1", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.2", - "jest-message-util": "30.0.2", - "jest-mock": "30.0.2", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.0.2", - "jest-snapshot": "30.0.4", - "jest-util": "30.0.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-snapshot": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.0.4.tgz", - "integrity": "sha512-S/8hmSkeUib8WRUq9pWEb5zMfsOjiYWDWzFzKnjX7eDyKKgimsu9hcmsUEg8a7dPAw8s/FacxsXquq71pDgPjQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.0.4", - "@jest/get-type": "30.0.1", - "@jest/snapshot-utils": "30.0.4", - "@jest/transform": "30.0.4", - "@jest/types": "30.0.1", - "babel-preset-current-node-syntax": "^1.1.0", - "chalk": "^4.1.2", - "expect": "30.0.4", - "graceful-fs": "^4.2.11", - "jest-diff": "30.0.4", - "jest-matcher-utils": "30.0.4", - "jest-message-util": "30.0.2", - "jest-util": "30.0.2", - "pretty-format": "30.0.2", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-util": { - "version": "30.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.2.tgz", - "integrity": "sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "30.0.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-validate": { - "version": "30.0.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.0.2.tgz", - "integrity": "sha512-noOvul+SFER4RIvNAwGn6nmV2fXqBq67j+hKGHKGFCmK4ks/Iy1FSrqQNBLGKlu4ZZIRL6Kg1U72N1nxuRCrGQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/get-type": "30.0.1", - "@jest/types": "30.0.1", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-watcher": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.0.4.tgz", - "integrity": "sha512-YESbdHDs7aQOCSSKffG8jXqOKFqw4q4YqR+wHYpR5GWEQioGvL0BfbcjvKIvPEM0XGfsfJrka7jJz3Cc3gI4VQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/test-result": "30.0.4", - "@jest/types": "30.0.1", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.0.2", - "string-length": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "30.0.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.0.2.tgz", - "integrity": "sha512-RN1eQmx7qSLFA+o9pfJKlqViwL5wt+OL3Vff/A+/cPsmuw7NPwfgl33AP+/agRmHzPOFgXviRycR9kYwlcRQXg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.0.2", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runner/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-runner/node_modules/pretty-format": { - "version": "30.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz", - "integrity": "sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/schemas": "30.0.1", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/jest-runner/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-runner/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "peer": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-transform-stub": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz", - "integrity": "sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsdom/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "license": "ISC" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", - "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/lazy-ass": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "> 0.8" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" - }, - "node_modules/listr2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", - "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.1", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "peer": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true, - "license": "MIT" - }, - "node_modules/mkdirp/node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/napi-postinstall": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.0.tgz", - "integrity": "sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/next": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/next/-/next-13.4.0.tgz", - "integrity": "sha512-y3E+2ZjiVrphkz7zcJvd2rEG6miOekI8krPfWV4AZZ9TaF0LDuFdP/f+RQ5M9wRvsz6GWw8k8+7jsO860GxSqg==", - "license": "MIT", - "dependencies": { - "@next/env": "13.4.0", - "@swc/helpers": "0.5.1", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.1.1", - "zod": "3.21.4" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=16.8.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "13.4.0", - "@next/swc-darwin-x64": "13.4.0", - "@next/swc-linux-arm64-gnu": "13.4.0", - "@next/swc-linux-arm64-musl": "13.4.0", - "@next/swc-linux-x64-gnu": "13.4.0", - "@next/swc-linux-x64-musl": "13.4.0", - "@next/swc-win32-arm64-msvc": "13.4.0", - "@next/swc-win32-ia32-msvc": "13.4.0", - "@next/swc-win32-x64-msvc": "13.4.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "fibers": ">= 3.1.0", - "node-sass": "^6.0.0 || ^7.0.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-abi": { - "version": "3.75.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz", - "integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nwsapi": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", - "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", - "dev": true, - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ospath": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true, - "license": "MIT" - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0", - "peer": true - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true, - "license": "(WTFPL OR MIT)" - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "peer": true, - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/path-to-regexp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", - "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true, - "license": "MIT" - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/popmotion": { - "version": "9.3.6", - "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-9.3.6.tgz", - "integrity": "sha512-ZTbXiu6zIggXzIliMi8LGxXBF5ST+wkpXGEjeTUDUOCdSQ356hij/xjeUdv0F8zCQNeqB1+PR5/BB+gC+QLAPw==", - "license": "MIT", - "dependencies": { - "framesync": "5.3.0", - "hey-listen": "^1.0.8", - "style-value-types": "4.1.4", - "tslib": "^2.1.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^2.0.0", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", - "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true, - "license": "MIT" - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "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==", - "dev": true, - "license": "ISC" - }, - "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": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, - "node_modules/react-is": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz", - "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==", - "license": "MIT" - }, - "node_modules/react-material-ui-carousel": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/react-material-ui-carousel/-/react-material-ui-carousel-3.4.2.tgz", - "integrity": "sha512-jUbC5aBWqbbbUOOdUe3zTVf4kMiZFwKJqwhxzHgBfklaXQbSopis4iWAHvEOLcZtSIJk4JAGxKE0CmxDoxvUuw==", - "license": "MIT", - "dependencies": { - "@emotion/react": "^11.7.1", - "@emotion/styled": "^11.6.0", - "@mui/icons-material": "^5.4.1", - "@mui/material": "^5.4.1", - "@mui/system": "^5.4.1", - "framer-motion": "^4.1.17" - }, - "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@mui/icons-material": "^5.0.0", - "@mui/material": "^5.0.0", - "@mui/system": "^5.0.0", - "react": "^17.0.1 || ^18.0.0", - "react-dom": "^17.0.2 || ^18.0.0" - } - }, - "node_modules/react-redux": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", - "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", - "license": "MIT", - "dependencies": { - "@types/use-sync-external-store": "^0.0.6", - "use-sync-external-store": "^1.4.0" - }, - "peerDependencies": { - "@types/react": "^18.2.25 || ^19", - "react": "^18.0 || ^19", - "redux": "^5.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "redux": { - "optional": true - } - } - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/redux": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", - "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT" - }, - "node_modules/redux-thunk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", - "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", - "license": "MIT", - "peerDependencies": { - "redux": "^5.0.0" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", - "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "rc": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~3.0.2" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "throttleit": "^1.0.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/reselect": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", - "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", - "license": "Unlicense" - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serve": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.4.tgz", - "integrity": "sha512-qy1S34PJ/fcY8gjVGszDB3EXiPSk5FKhUa7tQe0UPRddxRidc2V6cNHPNewbE1D7MAkgLuWEt3Vw56vYy73tzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@zeit/schemas": "2.36.0", - "ajv": "8.12.0", - "arg": "5.0.2", - "boxen": "7.0.0", - "chalk": "5.0.1", - "chalk-template": "0.4.0", - "clipboardy": "3.0.0", - "compression": "1.7.4", - "is-port-reachable": "4.0.0", - "serve-handler": "6.1.6", - "update-check": "1.5.4" - }, - "bin": { - "serve": "build/main.js" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/serve-handler": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz", - "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.0.0", - "content-disposition": "0.5.2", - "mime-types": "2.1.18", - "minimatch": "3.1.2", - "path-is-inside": "1.0.2", - "path-to-regexp": "3.3.0", - "range-parser": "1.2.0" - } - }, - "node_modules/serve-handler/node_modules/mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-handler/node_modules/mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "~1.33.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/serve/node_modules/chalk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", - "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/serve/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/sshpk": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", - "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true, - "license": "MIT" - }, - "node_modules/stable-hash-x": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", - "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/streamx": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", - "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string.prototype.includes": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", - "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-value-types": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-4.1.4.tgz", - "integrity": "sha512-LCJL6tB+vPSUoxgUBt9juXIlNJHtBMy8jkXzUJSBzeHWdBu6lhzHqCvLVkXFGsFIlNa2ln1sQHya/gzaFmB2Lg==", - "license": "MIT", - "dependencies": { - "hey-listen": "^1.0.8", - "tslib": "^2.1.0" - } - }, - "node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "license": "MIT", - "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", - "license": "MIT" - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/svgo": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", - "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^5.1.0", - "css-tree": "^2.3.1", - "css-what": "^6.1.0", - "csso": "^5.0.5", - "picocolors": "^1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/svgo" - } - }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/synckit": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", - "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.4" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, - "node_modules/tar-fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.0.tgz", - "integrity": "sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/throttleit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", - "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tldts": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", - "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.86" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", - "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true, - "license": "Unlicense" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.37.0.tgz", - "integrity": "sha512-TnbEjzkE9EmcO0Q2zM+GE8NQLItNAJpMmED1BdgoBMYNdqMhzlbqfdSwiRlAzEK2pA9UzVW0gzaaIzXWg2BjfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.37.0", - "@typescript-eslint/parser": "8.37.0", - "@typescript-eslint/typescript-estree": "8.37.0", - "@typescript-eslint/utils": "8.37.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/update-check": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz", - "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", - "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "dev": true, - "license": "MIT", - "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/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index b51eb47d3..000000000 --- a/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "name": "guidellm", - "version": "0.1.0", - "type": "module", - "scripts": { - "dev": "next dev src/ui", - "build": "next build src/ui", - "serve": "serve src/ui/out -c ../serve.json --cors", - "lint": "next lint --fix src/ui", - "type-check": "tsc -p src/ui/tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit && tsc -p tsconfig.cypress.json --noEmit", - "format": "prettier --write .", - "prepare": "husky", - "test": "jest --config jest.config.cjs tests/ui", - "test:watch": "jest --watch tests/ui", - "test:unit": "jest --config jest.config.cjs tests/ui/unit", - "test:integration": "jest --config jest.config.cjs tests/ui/integration", - "test:e2e": "cypress run --headless", - "coverage": "jest --config jest.config.cjs --coverage tests/ui", - "coverage:badge": "jest-coverage-badges --input coverage/coverage-summary.json --output coverage/.coverage" - }, - "dependencies": { - "@emotion/cache": "^11.13.1", - "@emotion/react": "^11.14.0", - "@emotion/styled": "^11.14.0", - "@mui/material": "^5.11.7", - "@mui/material-nextjs": "^5.16.6", - "@nivo/bar": "^0.88.0", - "@nivo/core": "^0.88.0", - "@nivo/line": "^0.88.0", - "@nivo/scales": "^0.88.0", - "@nivo/tooltip": "^0.88.0", - "@reduxjs/toolkit": "^2.2.7", - "filesize": "^10.1.6", - "next": "13.4.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-material-ui-carousel": "^3.4.2", - "react-redux": "^9.1.2" - }, - "devDependencies": { - "@eslint/eslintrc": "^3", - "@mui/types": "^7.2.14", - "@next/eslint-plugin-next": "^13.4.0", - "@svgr/webpack": "^8.1.0", - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^16.0.0", - "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", - "@types/node": "^22", - "@types/react": "^18.0.28", - "@types/react-dom": "^18.0.11", - "@types/testing-library__jest-dom": "^5.14.9", - "cross-fetch": "^4.1.0", - "cypress": "^13.13.3", - "eslint": "^8.0.0", - "eslint-config-next": "13.4.0", - "eslint-config-prettier": "^8.5.0", - "eslint-import-resolver-typescript": "^4.4.2", - "eslint-plugin-cypress": "^3.6.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jest": "^28.11.0", - "eslint-plugin-jsx-a11y": "^6.6.1", - "eslint-plugin-no-secrets": "^1.0.2", - "eslint-plugin-prettier": "^5.4.0", - "eslint-plugin-react": "^7.31.10", - "eslint-plugin-react-hooks": "^5.2.0", - "globals": "^16.2.0", - "husky": "^9.1.7", - "jest": "^29.7.0", - "jest-coverage-badges": "^1.1.2", - "jest-environment-jsdom": "^29.7.0", - "jest-runner-groups": "^2.2.0", - "jest-transform-stub": "^2.0.0", - "prettier": "^3.5.3", - "serve": "^14.2.4", - "sharp": "^0.32.0", - "typescript": "^5", - "typescript-eslint": "^8.34.0" - }, - "lint-staged": { - "*.js": "eslint --cache --fix", - "*.ts": "eslint --cache --fix", - "*.jsx": "eslint --cache --fix", - "*.tsx": "eslint --cache --fix" - }, - "engines": { - "node": ">=22" - } -} diff --git a/src/ui/.env.development b/src/ui/.env.development deleted file mode 100644 index 1b50abb9e..000000000 --- a/src/ui/.env.development +++ /dev/null @@ -1,3 +0,0 @@ -ASSET_PREFIX=https://raw.githubusercontent.com/vllm-project/guidellm/refs/heads/gh-pages/ui/dev -BASE_PATH=/ui/dev -NEXT_PUBLIC_USE_MOCK_API=true diff --git a/src/ui/.env.example b/src/ui/.env.example deleted file mode 100644 index b9d5ff2b0..000000000 --- a/src/ui/.env.example +++ /dev/null @@ -1,4 +0,0 @@ -ASSET_PREFIX=http://localhost:3000 -BASE_PATH=http://localhost:3000 -NEXT_PUBLIC_USE_MOCK_API=true -USE_MOCK_DATA=false diff --git a/src/ui/.env.local b/src/ui/.env.local deleted file mode 100644 index b9d5ff2b0..000000000 --- a/src/ui/.env.local +++ /dev/null @@ -1,4 +0,0 @@ -ASSET_PREFIX=http://localhost:3000 -BASE_PATH=http://localhost:3000 -NEXT_PUBLIC_USE_MOCK_API=true -USE_MOCK_DATA=false diff --git a/src/ui/.env.production b/src/ui/.env.production deleted file mode 100644 index f26e35b7e..000000000 --- a/src/ui/.env.production +++ /dev/null @@ -1,3 +0,0 @@ -ASSET_PREFIX=https://raw.githubusercontent.com/vllm-project/guidellm/refs/heads/gh-pages/ui/latest -BASE_PATH=/ui/latest -NEXT_PUBLIC_USE_MOCK_API=true diff --git a/src/ui/.env.staging b/src/ui/.env.staging deleted file mode 100644 index c6661eeb6..000000000 --- a/src/ui/.env.staging +++ /dev/null @@ -1,3 +0,0 @@ -ASSET_PREFIX=https://raw.githubusercontent.com/vllm-project/guidellm/refs/heads/gh-pages/ui/release/latest -BASE_PATH=/ui/release/latest -NEXT_PUBLIC_USE_MOCK_API=true diff --git a/src/ui/app/assets/fonts/spezia/Spezia-Medium.otf b/src/ui/app/assets/fonts/spezia/Spezia-Medium.otf deleted file mode 100644 index f557a0dc15b04bda7938d027f4c76742c7c4a53f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82276 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 PSw>2AkS$-9Xz~95tMVxx diff --git a/src/ui/app/assets/fonts/spezia/SpeziaMono-Medium.otf b/src/ui/app/assets/fonts/spezia/SpeziaMono-Medium.otf deleted file mode 100644 index 5ab86be11853ea0dfb61e28e3010c7ca26237ee7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70244 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 diff --git a/src/ui/app/assets/fonts/spezia/spezia-medium.ttf b/src/ui/app/assets/fonts/spezia/spezia-medium.ttf deleted file mode 100644 index 317475a4e6e9f2faa0bed6fd020aa165cd8eb6a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115948 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

+mXDm<(4tNED3>Xz*3N#O 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 IG92&vKR2?Es{jB1 diff --git a/src/ui/app/assets/icons/arrow-down.svg b/src/ui/app/assets/icons/arrow-down.svg deleted file mode 100644 index 2023274e6..000000000 --- a/src/ui/app/assets/icons/arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/app/assets/icons/arrow-up.svg b/src/ui/app/assets/icons/arrow-up.svg deleted file mode 100644 index 9e09e8277..000000000 --- a/src/ui/app/assets/icons/arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/app/assets/icons/check-circle.svg b/src/ui/app/assets/icons/check-circle.svg deleted file mode 100644 index 1457ce55c..000000000 --- a/src/ui/app/assets/icons/check-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/app/assets/icons/expand.svg b/src/ui/app/assets/icons/expand.svg deleted file mode 100644 index 063162d4f..000000000 --- a/src/ui/app/assets/icons/expand.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/app/assets/icons/guidellm-icon-dark.png b/src/ui/app/assets/icons/guidellm-icon-dark.png deleted file mode 100644 index 2e570c52c3115682e5dd762d87cc2fe0c8996f13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2800 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 NbRHRMmaE&n`5$iYl?wm> diff --git a/src/ui/app/assets/icons/index.tsx b/src/ui/app/assets/icons/index.tsx deleted file mode 100644 index f3ac07736..000000000 --- a/src/ui/app/assets/icons/index.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import ArrowDown from './arrow-down.svg'; -import ArrowUp from './arrow-up.svg'; -import CheckCircle from './check-circle.svg'; -import Expand from './expand.svg'; -import guideLLMIconDark from './guidellm-icon-dark.png'; -import guideLLMLogoLight from './guidellm-logo-light.png'; -import Info from './info.svg'; -import Open from './open.svg'; -import WarningCircle from './warning-circle.svg'; - -export { - ArrowDown, - ArrowUp, - CheckCircle, - Expand, - guideLLMIconDark, - guideLLMLogoLight, - Info, - Open, - WarningCircle, -}; diff --git a/src/ui/app/assets/icons/info.svg b/src/ui/app/assets/icons/info.svg deleted file mode 100644 index 49baca81c..000000000 --- a/src/ui/app/assets/icons/info.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/app/assets/icons/nm-logo-with-name.svg b/src/ui/app/assets/icons/nm-logo-with-name.svg deleted file mode 100644 index a2e9e0989..000000000 --- a/src/ui/app/assets/icons/nm-logo-with-name.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/ui/app/assets/icons/open.svg b/src/ui/app/assets/icons/open.svg deleted file mode 100644 index 446bf84f7..000000000 --- a/src/ui/app/assets/icons/open.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/app/assets/icons/warning-circle.svg b/src/ui/app/assets/icons/warning-circle.svg deleted file mode 100644 index 81016d27b..000000000 --- a/src/ui/app/assets/icons/warning-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/app/globals.css b/src/ui/app/globals.css deleted file mode 100644 index db23b4cf6..000000000 --- a/src/ui/app/globals.css +++ /dev/null @@ -1,34 +0,0 @@ -body { - margin: 0; - font-family: - -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', - 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; -} - -@font-face { - font-family: 'Spezia'; - font-style: 'normal'; - font-weight: 400; - src: url('./assets/fonts/spezia/spezia-regular.ttf') format('truetype'); - font-display: swap; -} -@font-face { - font-family: 'Spezia'; - font-style: 'normal'; - font-weight: 500; - src: url('./assets/fonts/spezia/spezia-medium.ttf') format('truetype'); - font-display: swap; -} -@font-face { - font-family: 'SpeziaMono'; - font-style: 'normal'; - font-weight: 500; - src: url('./assets/fonts/spezia/spezia-mono-medium.ttf') format('truetype'); - font-display: swap; -} diff --git a/src/ui/app/layout.tsx b/src/ui/app/layout.tsx deleted file mode 100644 index 5e9eb8e6c..000000000 --- a/src/ui/app/layout.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import type { Metadata } from 'next'; -import { Viewport } from 'next/dist/lib/metadata/types/extra-types'; -import React from 'react'; - -import { benchmarksScript } from '@/lib/store/benchmarksWindowData'; -import { runInfoScript } from '@/lib/store/runInfoWindowData'; -import { workloadDetailsScript } from '@/lib/store/workloadDetailsWindowData'; - -export async function generateMetadata(): Promise { - const assetPrefix = process.env.ASSET_PREFIX || ''; - - return { - title: 'GuideLLM', - description: 'LLM Benchmarking Tool', - icons: { - icon: `${assetPrefix}/favicon.png`, - apple: `${assetPrefix}/favicon-192x192.png`, - }, - manifest: `${assetPrefix}/manifest.json`, - }; -} - -export const viewport: Viewport = { - initialScale: 1, - width: 'device-width', -}; - -export default function RootLayout({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) { - const emptyDataScript = ( - - - - - - - - - - - - ); -}; - -export default Home; diff --git a/src/ui/app/theme.ts b/src/ui/app/theme.ts deleted file mode 100644 index 328388e40..000000000 --- a/src/ui/app/theme.ts +++ /dev/null @@ -1,575 +0,0 @@ -import { Palette, createTheme } from '@mui/material/styles'; -import { - TypographyOptions, - TypographyStyleOptions, -} from '@mui/material/styles/createTypography'; - -import { - BLACK, - WHITE, - NEURAL_BLUE, - NEURAL_BLUE_SHADES, - CARIBBEAN_GREEN_SHADES, - CARIBBEAN_GREEN, - YELLOW, - YELLOW_SHADES, - ORANGE, - ORANGE_SHADES, - SURFACE_SHADE_1, - SURFACE_SHADE_2, - SURFACE_SHADE_3, - SURFACE_CONTAINER_SHADE_1, - SURFACE_CONTAINER_SHADE_2, - SURFACE_CONTAINER_SHADE_3, - SURFACE_CONTAINER_SHADE_4, - SURFACE_CONTAINER_SHADE_5, - DARK_SURFACE_SHADE_1, - DARK_SURFACE_SHADE_2, - DARK_SURFACE_SHADE_3, - DARK_SURFACE_CONTAINER_SHADE_1, - DARK_SURFACE_CONTAINER_SHADE_2, - DARK_SURFACE_CONTAINER_SHADE_3, - DARK_SURFACE_CONTAINER_SHADE_4, - DARK_SURFACE_CONTAINER_SHADE_5, - CHARCOAL_NAVY, - SEA_LION, - MIDNIGHT_BLUE, - DEEP_FOREST_GREEN, - DARK_BRONZE, - CRIMSON_FLAME, - BLUSH_PINK, - DEEP_MAROON, - LIME_GREEN, - MINT_CREAM, - FOREST_GREEN, - STORM_GRAY, - LIGHT_SLATE_GRAY, - LAVENDER_GRAY, - ASH_GRAY, - VERY_DARK_GREEN, - RED_SHADES, - OUTER_SPACE_GRAY, -} from '../lib/utils/Colors'; -// Spezia -import SpeziaMedium from './assets/fonts/spezia/Spezia-Medium.otf'; -import SpeziaRegular from './assets/fonts/spezia/Spezia-Regular.otf'; -import SpeziaMonoMedium from './assets/fonts/spezia/SpeziaMono-Medium.otf'; -export const FONT_FAMILY_SPEZIA = 'Spezia, sans-serif'; -export const FONT_FAMILY_SPEZIA_MONO = 'Spezia Mono, sans-serif'; - -// Update the Typography's variant prop options -declare module '@mui/material/Typography' { - interface TypographyPropsVariantOverrides { - metric: true; - metric1: true; - metric2: true; - overline1: true; - overline2: true; - axisTitle: true; - axisLabel: true; - } -} - -declare module '@mui/material/styles' { - interface TypographyVariants { - metric: TypographyStyleOptions; - metric1: TypographyStyleOptions; - metric2: TypographyStyleOptions; - overline1: TypographyStyleOptions; - overline2: TypographyStyleOptions; - axisTitle: TypographyStyleOptions; - axisLabel: TypographyStyleOptions; - } - - // allow configuration using `createTheme` - interface TypographyVariantsOptions { - metric?: TypographyStyleOptions; - metric1?: TypographyStyleOptions; - metric2?: TypographyStyleOptions; - overline1?: TypographyStyleOptions; - overline2?: TypographyStyleOptions; - axisTitle?: TypographyStyleOptions; - axisLabel?: TypographyStyleOptions; - } - - interface PaletteColor { - subdued: string; - accent: string; - main: string; - onMain: string; - shades: { - [key: string]: string; - }; - container: string; - onContainer: string; - } - - interface SimplePaletteColorOptions { - subdued?: string; - accent?: string; - onMain?: string; - shades?: Record; - container?: string; - onContainer?: string; - } - - interface Palette { - outline: PaletteColor; - quarternary: PaletteColor; - scrim: PaletteColor; - shadow: PaletteColor; - surface: { - onSurface: string; - onSurfaceAccent: string; - onSurfaceSubdued: string; - surface: string; - surfaceContainer: string; - surfaceContainerHigh: string; - surfaceContainerHighest: string; - surfaceContainerLow: string; - surfaceContainerLowest: string; - surfaceSubdued: string; - surfaceSubduedContainer: string; - surfaceAccent: string; - }; - tertiary: PaletteColor; - } - - interface PaletteOptions { - outline: SimplePaletteColorOptions; - quarternary: SimplePaletteColorOptions; - scrim: SimplePaletteColorOptions; - shadow: SimplePaletteColorOptions; - surface: Palette['surface']; - tertiary: SimplePaletteColorOptions; - } -} - -const PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS = { - main: '#000', - onMain: '#000', - subdued: '#000', - accent: '#000', - shades: {}, - container: '#000', - onContainer: '#000', -}; - -const themeV3Typography: - | TypographyOptions - | ((palette: Palette) => TypographyOptions) - | undefined = { - fontFamily: FONT_FAMILY_SPEZIA, - fontWeightRegular: 400, - fontWeightMedium: 500, - h1: { - color: BLACK, - fontSize: 96, - fontWeight: 400, - fontFamily: FONT_FAMILY_SPEZIA, - lineHeight: '120px', - '@media (max-width:600px)': { - fontSize: 56, - lineHeight: '70px', - }, - }, - h2: { - color: BLACK, - fontSize: 60, - fontWeight: 400, - fontFamily: FONT_FAMILY_SPEZIA, - lineHeight: '75px', - '@media (max-width:600px)': { - fontSize: 38, - lineHeight: '48px', - }, - }, - h3: { - color: BLACK, - fontSize: 48, - fontWeight: 400, - fontFamily: FONT_FAMILY_SPEZIA, - lineHeight: '60px', - '@media (max-width:600px)': { - fontSize: 32, - lineHeight: '40px', - }, - }, - h4: { - color: BLACK, - fontSize: 32, - fontWeight: 400, - fontFamily: FONT_FAMILY_SPEZIA, - lineHeight: '40px', - '@media (max-width:600px)': { - fontSize: 24, - lineHeight: '30px', - }, - }, - h5: { - color: BLACK, - fontSize: 24, - fontWeight: 400, - fontFamily: FONT_FAMILY_SPEZIA, - lineHeight: '30px', - '@media (max-width:600px)': { - fontSize: 20, - lineHeight: '25px', - }, - }, - h6: { - color: BLACK, - fontSize: 20, - fontWeight: 400, - fontFamily: FONT_FAMILY_SPEZIA, - lineHeight: '25px', - '@media (max-width:600px)': { - fontSize: 18, - lineHeight: '25px', - }, - }, - body1: { - color: BLACK, - fontSize: 18, - fontFamily: FONT_FAMILY_SPEZIA, - fontWeight: 400, - letterSpacing: '0.25px', - lineHeight: '22px', - '@media (max-width:600px)': { - fontSize: 16, - lineHeight: '20px', - }, - }, - body2: { - color: BLACK, - fontSize: 16, - fontWeight: 400, - fontFamily: FONT_FAMILY_SPEZIA, - letterSpacing: '0.25px', - lineHeight: '20px', - '@media (max-width:600px)': { - fontSize: 14, - lineHeight: '17px', - }, - }, - subtitle1: { - color: BLACK, - fontSize: 22, - lineHeight: '26px', - fontWeight: 500, - fontFamily: FONT_FAMILY_SPEZIA, - '@media (max-width:600px)': { - fontSize: 20, - lineHeight: '25px', - }, - }, - subtitle2: { - color: BLACK, - fontSize: 16, - fontWeight: 500, - fontFamily: FONT_FAMILY_SPEZIA, - lineHeight: '20px', - '@media (max-width:600px)': { - fontSize: 14, - lineHeight: '17px', - }, - }, - caption: { - color: BLACK, - fontSize: 12, - fontWeight: 400, - lineHeight: '15px', - fontFamily: FONT_FAMILY_SPEZIA, - letterSpacing: '0.25px', - '@media (max-width:600px)': { - fontSize: 10, - lineHeight: '12px', - }, - }, - button: { - fontSize: 16, - fontWeight: 500, - fontFamily: FONT_FAMILY_SPEZIA_MONO, - lineHeight: '20px', - textTransform: 'uppercase', - '@media (max-width:600px)': { - fontSize: 14, - lineHeight: '17px', - }, - }, - overline1: { - color: BLACK, - fontSize: 14, - fontWeight: 500, - fontFamily: FONT_FAMILY_SPEZIA_MONO, - lineHeight: '20px', - textTransform: 'uppercase', - '@media (max-width:600px)': { - fontSize: 10, - lineHeight: '12px', - }, - }, - overline2: { - color: BLACK, - fontSize: 12, - fontWeight: 500, - fontFamily: FONT_FAMILY_SPEZIA_MONO, - lineHeight: '20px', - textTransform: 'uppercase', - '@media (max-width:600px)': { - fontSize: 10, - lineHeight: '12px', - }, - }, - metric1: { - color: BLACK, - fontSize: 32, - fontWeight: 400, - fontFamily: FONT_FAMILY_SPEZIA, - lineHeight: '26px', - '@media (max-width:600px)': { - fontSize: 10, - lineHeight: '12px', - }, - }, - metric2: { - color: BLACK, - fontSize: 22, - fontWeight: 400, - fontFamily: FONT_FAMILY_SPEZIA, - lineHeight: '26px', - '@media (max-width:600px)': { - fontSize: 10, - lineHeight: '12px', - }, - }, - axisTitle: { - color: BLACK, - fontSize: 10, - fontWeight: 500, - fontFamily: FONT_FAMILY_SPEZIA_MONO, - lineHeight: '14px', - '@media (max-width:600px)': { - fontSize: 10, - lineHeight: '12px', - }, - }, - axisLabel: { - color: BLACK, - fontSize: 8, - fontWeight: 500, - fontFamily: FONT_FAMILY_SPEZIA, - lineHeight: '8px', - '@media (max-width:600px)': { - fontSize: 10, - lineHeight: '12px', - }, - }, -}; - -const themeV3FontStyles = { - fallbacks: [ - // -- Spezia -- - { - '@font-face': { - fontFamily: 'Spezia', - fontStyle: 'normal', - fontWeight: 400, - src: `url(${SpeziaRegular}) format('truetype')`, - }, - }, - { - '@font-face': { - fontFamily: 'Spezia', - fontStyle: 'normal', - fontWeight: 500, - src: `url(${SpeziaMedium}) format('truetype')`, - }, - }, - { - '@font-face': { - fontFamily: 'SpeziaMono', - fontStyle: 'normal', - fontWeight: 500, - src: `url(${SpeziaMonoMedium}) format('truetype')`, - }, - }, - ], -}; - -export const muiThemeV3Light = createTheme({ - palette: { - primary: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: NEURAL_BLUE, - shades: NEURAL_BLUE_SHADES, - container: NEURAL_BLUE_SHADES.W80, - onContainer: MIDNIGHT_BLUE, - }, - secondary: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: CARIBBEAN_GREEN, - shades: CARIBBEAN_GREEN_SHADES, - container: CARIBBEAN_GREEN_SHADES.W80, - onContainer: DEEP_FOREST_GREEN, - }, - tertiary: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: YELLOW, - shades: YELLOW_SHADES, - container: YELLOW_SHADES.W80, - onContainer: DARK_BRONZE, - }, - quarternary: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: ORANGE, - shades: ORANGE_SHADES, - }, - surface: { - onSurface: CHARCOAL_NAVY, - onSurfaceAccent: NEURAL_BLUE, - onSurfaceSubdued: SEA_LION, - surface: SURFACE_SHADE_2, - surfaceContainer: SURFACE_CONTAINER_SHADE_3, - surfaceContainerHigh: SURFACE_CONTAINER_SHADE_4, - surfaceContainerHighest: SURFACE_CONTAINER_SHADE_5, - surfaceContainerLow: SURFACE_CONTAINER_SHADE_2, - surfaceContainerLowest: SURFACE_CONTAINER_SHADE_1, - surfaceSubdued: SURFACE_SHADE_3, - surfaceSubduedContainer: SURFACE_SHADE_2, - surfaceAccent: SURFACE_SHADE_1, - }, - error: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: CRIMSON_FLAME, - onMain: WHITE, - container: BLUSH_PINK, - onContainer: DEEP_MAROON, - }, - success: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: LIME_GREEN, - onMain: WHITE, - container: MINT_CREAM, - onContainer: FOREST_GREEN, - }, - outline: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: STORM_GRAY, - subdued: LIGHT_SLATE_GRAY, - }, - scrim: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: BLACK, - }, - shadow: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: BLACK, - }, - }, - spacing: 8, - typography: themeV3Typography, - components: { - MuiCssBaseline: { - styleOverrides: themeV3FontStyles, - }, - }, -}); - -export const themeV3LightName = 'muiThemeV3Light'; - -const DEFAULT_SURFACE_OPTIONS = { - onSurface: CHARCOAL_NAVY, - onSurfaceAccent: NEURAL_BLUE, - onSurfaceSubdued: SEA_LION, - surface: SURFACE_SHADE_2, - surfaceContainer: SURFACE_CONTAINER_SHADE_3, - surfaceContainerHigh: SURFACE_CONTAINER_SHADE_4, - surfaceContainerHighest: SURFACE_CONTAINER_SHADE_5, - surfaceContainerLow: SURFACE_CONTAINER_SHADE_2, - surfaceContainerLowest: SURFACE_CONTAINER_SHADE_1, - surfaceSubdued: SURFACE_SHADE_3, - surfaceAccent: SURFACE_SHADE_1, -}; - -export const muiThemeV3Dark = createTheme({ - palette: { - primary: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: NEURAL_BLUE, - shades: NEURAL_BLUE_SHADES, - container: NEURAL_BLUE_SHADES.B99, - onContainer: NEURAL_BLUE_SHADES.W80, - }, - secondary: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: CARIBBEAN_GREEN, - shades: CARIBBEAN_GREEN_SHADES, - container: CARIBBEAN_GREEN_SHADES.B99, - onContainer: CARIBBEAN_GREEN_SHADES.W80, - }, - tertiary: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: YELLOW, - shades: YELLOW_SHADES, - container: YELLOW_SHADES.B99, - onContainer: YELLOW_SHADES.W90, - }, - quarternary: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: ORANGE, - shades: ORANGE_SHADES, - }, - surface: { - ...DEFAULT_SURFACE_OPTIONS, - onSurface: LAVENDER_GRAY, - onSurfaceAccent: NEURAL_BLUE, - onSurfaceSubdued: ASH_GRAY, - surface: DARK_SURFACE_SHADE_1, - surfaceContainer: DARK_SURFACE_CONTAINER_SHADE_3, - surfaceContainerHigh: DARK_SURFACE_CONTAINER_SHADE_4, - surfaceContainerHighest: DARK_SURFACE_CONTAINER_SHADE_5, - surfaceContainerLow: DARK_SURFACE_CONTAINER_SHADE_2, - surfaceContainerLowest: DARK_SURFACE_CONTAINER_SHADE_1, - surfaceSubdued: DARK_SURFACE_SHADE_3, - surfaceSubduedContainer: SURFACE_SHADE_2, - surfaceAccent: DARK_SURFACE_SHADE_2, - }, - error: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: CRIMSON_FLAME, - onMain: WHITE, - container: RED_SHADES.B90, - onContainer: RED_SHADES.W90, - }, - success: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: LIME_GREEN, - onMain: WHITE, - container: VERY_DARK_GREEN, - onContainer: MINT_CREAM, - }, - outline: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: STORM_GRAY, - subdued: OUTER_SPACE_GRAY, - }, - scrim: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: BLACK, - }, - shadow: { - ...PALETTE_COLOR_OPTIONS_PLACEHOLDER_TOKENS, - main: BLACK, - }, - }, - spacing: 8, - typography: themeV3Typography, - components: { - MuiCssBaseline: { - styleOverrides: themeV3FontStyles, - }, - }, -}); - -export const themeV3DarkName = 'muiThemeV3Dark'; diff --git a/src/ui/app/types/images.d.ts b/src/ui/app/types/images.d.ts deleted file mode 100644 index 546475dd3..000000000 --- a/src/ui/app/types/images.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.png' { - const content: import('next/image').StaticImageData; - export default content; -} diff --git a/src/ui/app/types/index.d.ts b/src/ui/app/types/index.d.ts deleted file mode 100644 index 06ed93ebf..000000000 --- a/src/ui/app/types/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module '*.ttf'; - -declare module '*.otf'; diff --git a/src/ui/lib/components/Badge/Badge.component.tsx b/src/ui/lib/components/Badge/Badge.component.tsx deleted file mode 100644 index 16f6e35f2..000000000 --- a/src/ui/lib/components/Badge/Badge.component.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { FC } from 'react'; - -import { BadgeProps } from './Badge.interfaces'; -import { StyledTypography } from './Badge.styles'; - -export const Component: FC = ({ label }) => { - return {label}; -}; diff --git a/src/ui/lib/components/Badge/Badge.interfaces.ts b/src/ui/lib/components/Badge/Badge.interfaces.ts deleted file mode 100644 index 854f38e1d..000000000 --- a/src/ui/lib/components/Badge/Badge.interfaces.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface BadgeProps { - label: string; -} diff --git a/src/ui/lib/components/Badge/Badge.styles.tsx b/src/ui/lib/components/Badge/Badge.styles.tsx deleted file mode 100644 index e14699463..000000000 --- a/src/ui/lib/components/Badge/Badge.styles.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { styled, Typography } from '@mui/material'; - -export const StyledTypography = styled(Typography)(({ theme }) => ({ - backgroundColor: theme.palette.surface.surfaceContainerHigh, - borderRadius: '6px', - padding: '6px', - marginRight: '6px', - display: 'inline-block', - paddingTop: '8px', - color: theme.palette.surface.onSurfaceAccent, -})); diff --git a/src/ui/lib/components/Badge/index.tsx b/src/ui/lib/components/Badge/index.tsx deleted file mode 100644 index 6ddc5f53e..000000000 --- a/src/ui/lib/components/Badge/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as Badge } from './Badge.component'; -export type { BadgeProps } from './Badge.interfaces'; diff --git a/src/ui/lib/components/BlockHeader/BlockHeader.component.tsx b/src/ui/lib/components/BlockHeader/BlockHeader.component.tsx deleted file mode 100644 index 0b53fe460..000000000 --- a/src/ui/lib/components/BlockHeader/BlockHeader.component.tsx +++ /dev/null @@ -1,25 +0,0 @@ -'use client'; -import { Box, Typography, useTheme } from '@mui/material'; - -import { SvgContainer } from '@/lib/utils/SvgContainer'; -import { Info } from '@assets/icons'; - -import { BlockHeaderProps } from './BlockHeader.interfaces'; -import { CustomDivider } from './BlockHeader.styles'; - -export const Component = ({ label, withDivider = false }: BlockHeaderProps) => { - const theme = useTheme(); - return ( - - - {label} - - - - - - - {withDivider && } - - ); -}; diff --git a/src/ui/lib/components/BlockHeader/BlockHeader.interfaces.ts b/src/ui/lib/components/BlockHeader/BlockHeader.interfaces.ts deleted file mode 100644 index fffb9e881..000000000 --- a/src/ui/lib/components/BlockHeader/BlockHeader.interfaces.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface BlockHeaderProps { - label: string; - withDivider?: boolean; -} diff --git a/src/ui/lib/components/BlockHeader/BlockHeader.styles.tsx b/src/ui/lib/components/BlockHeader/BlockHeader.styles.tsx deleted file mode 100644 index 9f063d8fe..000000000 --- a/src/ui/lib/components/BlockHeader/BlockHeader.styles.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { Divider, styled } from '@mui/material'; - -export const CustomDivider = styled(Divider)(({ theme }) => ({ - height: '1px', - flex: 1, - marginLeft: '48px', - backgroundColor: theme.palette.outline.subdued, -})); diff --git a/src/ui/lib/components/BlockHeader/index.tsx b/src/ui/lib/components/BlockHeader/index.tsx deleted file mode 100644 index 7035c6226..000000000 --- a/src/ui/lib/components/BlockHeader/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as BlockHeader } from './BlockHeader.component'; -export type { BlockHeaderProps } from './BlockHeader.interfaces'; diff --git a/src/ui/lib/components/Carousel/Carousel.component.tsx b/src/ui/lib/components/Carousel/Carousel.component.tsx deleted file mode 100644 index 079e494c7..000000000 --- a/src/ui/lib/components/Carousel/Carousel.component.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { Box, Typography, useTheme } from '@mui/material'; -import dynamic from 'next/dynamic'; -import { FC } from 'react'; - -import { CarouselProps } from './Carousel.interfaces'; -import { PromptWrapper } from './Carousel.styles'; - -const Carousel = dynamic( - () => import('react-material-ui-carousel').then((mod) => mod.default), - { - ssr: false, - } -); - -function truncateString(str: string, limit: number) { - if (str.length <= limit) { - return str; - } - let cutIndex = limit; - while ( - cutIndex < str.length && - (str[cutIndex] !== ' ' || /[.,!?]/.test(str[cutIndex - 1])) - ) { - cutIndex++; - } - return cutIndex < str.length ? str.slice(0, cutIndex) + '...' : str; -} - -export const Component: FC = ({ label, items }) => { - const theme = useTheme(); - return ( - - - {label} - - - {items.map((item, i) => ( - - - {truncateString(item, 200)} - - - ))} - - - ); -}; diff --git a/src/ui/lib/components/Carousel/Carousel.interfaces.ts b/src/ui/lib/components/Carousel/Carousel.interfaces.ts deleted file mode 100644 index 5cc386f51..000000000 --- a/src/ui/lib/components/Carousel/Carousel.interfaces.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface CarouselProps { - label: string; - items: string[]; -} diff --git a/src/ui/lib/components/Carousel/Carousel.styles.tsx b/src/ui/lib/components/Carousel/Carousel.styles.tsx deleted file mode 100644 index 249c10d57..000000000 --- a/src/ui/lib/components/Carousel/Carousel.styles.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { Box, styled } from '@mui/material'; - -export const PromptWrapper = styled(Box)(({ theme }) => ({ - backgroundColor: theme.palette.primary.container, - borderRadius: '8px', - padding: '8px', - minWidth: '304px', - minHeight: '84px', - width: 'auto', - overflow: 'hidden', -})); diff --git a/src/ui/lib/components/Carousel/index.tsx b/src/ui/lib/components/Carousel/index.tsx deleted file mode 100644 index 0f7ee7e51..000000000 --- a/src/ui/lib/components/Carousel/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as Carousel } from './Carousel.component'; -export type { CarouselProps } from './Carousel.interfaces'; diff --git a/src/ui/lib/components/Charts/Combined/Combined.component.tsx b/src/ui/lib/components/Charts/Combined/Combined.component.tsx deleted file mode 100644 index 68b53496f..000000000 --- a/src/ui/lib/components/Charts/Combined/Combined.component.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import { useTheme } from '@mui/material'; -import { BarCustomLayerProps, ResponsiveBar } from '@nivo/bar'; -import { Point } from '@nivo/core'; -import React from 'react'; - -import { CombinedProps } from './Combined.interfaces'; -import CustomBars from './components/CustomBars'; -import CustomGrid from './components/CustomGrid'; -import { CustomLegendLayer } from './components/CustomLegendLayer'; -import CustomTick from './components/CustomTick'; -import DottedLines from './components/DottedLines'; -import useChartScales from '../common/useChartScales'; - -export const Component = ({ - bars, - lines, - width, - height, - margins, - xLegend, - yLegend, -}: CombinedProps) => { - const theme = useTheme(); - const combinedGraphTheme = { - axis: { - legend: { - text: { - fill: theme.palette.surface.onSurface, - fontSize: theme.typography.axisTitle.fontSize, - fontWeight: theme.typography.axisTitle.fontWeight, - fontFamily: theme.typography.axisTitle.fontFamily, - }, - }, - ticks: { - text: { - fill: theme.palette.surface.onSurface, - }, - }, - }, - }; - const defaultMargins = { top: 10, left: 10, right: 10, bottom: 10 }; - const finalMargins = { - ...defaultMargins, - ...margins, - bottom: (margins?.bottom || defaultMargins.bottom) + 20, - }; - const { xTicks, yTicks, fnScaleX, fnScaleY, innerHeight } = useChartScales({ - bars, - lines, - width, - height, - margins: finalMargins, - }); - - const CustomGridLayer = () => { - const scaledWidth = fnScaleX(xTicks[xTicks.length - 1]); - const scaledHeight = innerHeight - fnScaleY(yTicks[0]); - - return ( - fnScaleX(d)} - yScale={(d: number) => innerHeight - fnScaleY(d)} - width={scaledWidth} - height={innerHeight} - xTicks={xTicks} - yTicks={yTicks} - scaledHeight={scaledHeight} - /> - ); - }; - - const CustomBarLayer = (props: BarCustomLayerProps) => { - const heightOffset = innerHeight - fnScaleY(yTicks[0]); - return ( - fnScaleX(d)} - yScaleFunc={(d: number) => innerHeight - fnScaleY(d)} - heightOffset={heightOffset} - /> - ); - }; - return ( -

- ( - Math.abs(innerHeight - fnScaleY(d))} - tick={yTicks[tick.tickIndex]} - isFirst={tick.tickIndex === 0} - isLast={tick.tickIndex === yTicks.length - 1} - /> - ), - }} - axisBottom={{ - tickValues: xTicks, - legend: xLegend, - legendPosition: 'middle', - legendOffset: 30, - tickSize: 5, - tickPadding: 5, - tickRotation: 0, - renderTick: (tick) => ( - fnScaleX(d)} - tick={xTicks[tick.tickIndex]} - isFirst={tick.tickIndex === 0} - isLast={tick.tickIndex === xTicks.length - 1} - /> - ), - }} - layers={[ - 'axes', - CustomGridLayer, - CustomBarLayer, - () => , - ]} - theme={combinedGraphTheme} - /> - -
- ); -}; diff --git a/src/ui/lib/components/Charts/Combined/Combined.interfaces.ts b/src/ui/lib/components/Charts/Combined/Combined.interfaces.ts deleted file mode 100644 index a81a9f7c0..000000000 --- a/src/ui/lib/components/Charts/Combined/Combined.interfaces.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { LinesSeries, Margins, Point } from '../common/interfaces'; - -export interface CombinedProps { - bars: Point[]; - lines: LinesSeries[]; - width: number; - height: number; - margins?: Margins; - xLegend: string; - yLegend: string; -} diff --git a/src/ui/lib/components/Charts/Combined/components/CustomBars/CustomBars.interfaces.ts b/src/ui/lib/components/Charts/Combined/components/CustomBars/CustomBars.interfaces.ts deleted file mode 100644 index faad401e0..000000000 --- a/src/ui/lib/components/Charts/Combined/components/CustomBars/CustomBars.interfaces.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { BarCustomLayerProps } from '@nivo/bar'; - -export interface CustomBarsProps extends BarCustomLayerProps { - xScaleFunc: (d: number) => number; - yScaleFunc: (d: number) => number; - heightOffset: number; -} diff --git a/src/ui/lib/components/Charts/Combined/components/CustomBars/index.tsx b/src/ui/lib/components/Charts/Combined/components/CustomBars/index.tsx deleted file mode 100644 index 20c382037..000000000 --- a/src/ui/lib/components/Charts/Combined/components/CustomBars/index.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { ComputedBarDatum } from '@nivo/bar'; -import { Point } from '@nivo/core'; -import { useTooltip, BasicTooltip } from '@nivo/tooltip'; -import React from 'react'; - -import { CustomBarsProps } from './CustomBars.interfaces'; - -const CustomBars = ({ - bars, - xScaleFunc, - yScaleFunc, - heightOffset, -}: CustomBarsProps) => { - const { showTooltipFromEvent, hideTooltip } = useTooltip(); - - const handleMouseEnter = ( - event: React.MouseEvent, - bar: ComputedBarDatum - ) => { - showTooltipFromEvent( - , - event - ); - }; - - const handleMouseLeave = () => { - hideTooltip(); - }; - - return ( - - {bars.map((bar) => { - return ( - handleMouseEnter(event, bar)} - onMouseLeave={handleMouseLeave} - rx={bar.height > 8 ? 8 : 1} - /> - ); - })} - - ); -}; - -export default CustomBars; diff --git a/src/ui/lib/components/Charts/Combined/components/CustomGrid/CustomGrid.interfaces.ts b/src/ui/lib/components/Charts/Combined/components/CustomGrid/CustomGrid.interfaces.ts deleted file mode 100644 index 2e440fba0..000000000 --- a/src/ui/lib/components/Charts/Combined/components/CustomGrid/CustomGrid.interfaces.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface CustomGridProps { - xScale: (d: number) => number; - yScale: (d: number) => number; - width: number; - height: number; - xTicks: number[]; - yTicks: number[]; - scaledHeight: number; - fullGrid?: boolean; -} diff --git a/src/ui/lib/components/Charts/Combined/components/CustomGrid/index.tsx b/src/ui/lib/components/Charts/Combined/components/CustomGrid/index.tsx deleted file mode 100644 index 697260627..000000000 --- a/src/ui/lib/components/Charts/Combined/components/CustomGrid/index.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { useTheme } from '@mui/material'; - -import { CustomGridProps } from './CustomGrid.interfaces'; - -const CustomGrid = ({ - xScale, - yScale, - width, - height, - xTicks, - yTicks, - scaledHeight, - fullGrid = false, -}: CustomGridProps) => { - const theme = useTheme(); - const xTick = xTicks[0]; - const yTick = yTicks[yTicks.length - 1]; - - const renderAxlesOnly = ( - <> - - - - ); - - const renderFullGrid = ( - <> - {xTicks.map((tick) => ( - - ))} - {yTicks.map((tick) => ( - - ))} - - ); - - return ( - - {fullGrid ? renderFullGrid : renderAxlesOnly} - - ); -}; - -export default CustomGrid; diff --git a/src/ui/lib/components/Charts/Combined/components/CustomLegendLayer/CustomLegendLayer.interfaces.ts b/src/ui/lib/components/Charts/Combined/components/CustomLegendLayer/CustomLegendLayer.interfaces.ts deleted file mode 100644 index de0abde59..000000000 --- a/src/ui/lib/components/Charts/Combined/components/CustomLegendLayer/CustomLegendLayer.interfaces.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { LinesSeries } from '../../../common/interfaces'; - -export interface CustomLegendLayerProps { - series: LinesSeries[]; - height: number; -} diff --git a/src/ui/lib/components/Charts/Combined/components/CustomLegendLayer/index.tsx b/src/ui/lib/components/Charts/Combined/components/CustomLegendLayer/index.tsx deleted file mode 100644 index 40214bbdf..000000000 --- a/src/ui/lib/components/Charts/Combined/components/CustomLegendLayer/index.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { useTheme } from '@mui/material'; - -import { CustomLegendLayerProps } from './CustomLegendLayer.interfaces'; -import useLineColors from '../../../common/useLineColors'; - -const LEGEND_HEIGHT = 20; - -export const CustomLegendLayer = ({ series, ...rest }: CustomLegendLayerProps) => { - const theme = useTheme(); - const lineColor = useLineColors(); - return ( - - {series.map((item, index) => ( - - - - {item.id} - - - ))} - - ); -}; diff --git a/src/ui/lib/components/Charts/Combined/components/CustomTick/CustomTick.interfaces.ts b/src/ui/lib/components/Charts/Combined/components/CustomTick/CustomTick.interfaces.ts deleted file mode 100644 index efe5ef043..000000000 --- a/src/ui/lib/components/Charts/Combined/components/CustomTick/CustomTick.interfaces.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface CustomTickProps { - scale: (d: number) => number; - isXAxis: boolean; - tick: number; - withTicks?: boolean; - isFirst: boolean; - isLast: boolean; -} diff --git a/src/ui/lib/components/Charts/Combined/components/CustomTick/index.tsx b/src/ui/lib/components/Charts/Combined/components/CustomTick/index.tsx deleted file mode 100644 index 6358d5bee..000000000 --- a/src/ui/lib/components/Charts/Combined/components/CustomTick/index.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { useTheme } from '@mui/material'; - -import { CustomTickProps } from './CustomTick.interfaces'; - -function CustomTick({ - isXAxis, - tick, - scale, - withTicks = false, - isFirst, - isLast, -}: CustomTickProps) { - const theme = useTheme(); - - function getGroupPosition() { - if (isXAxis) { - let x = scale(tick); - if (isFirst) { - x = 4; - } - if (isLast) { - x -= 4; - } - return { x, y: 0 }; - } - return { x: 0, y: scale(tick) }; - } - - function renderTick() { - const commonProps = { - fontFamily: theme.typography.axisLabel.fontFamily, - fontWeight: theme.typography.axisLabel.fontWeight, - fontSize: theme.typography.axisLabel.fontSize, - fill: theme.palette.surface.onSurface, - }; - - return isXAxis ? ( - <> - {withTicks && ( - - )} - - {tick} - - - ) : ( - <> - {withTicks && ( - - )} - - {tick} - - - ); - } - - const { x, y } = getGroupPosition(); - - return ( - - {renderTick()} - - ); -} - -export default CustomTick; diff --git a/src/ui/lib/components/Charts/Combined/components/DottedLines/DottedLines.interfaces.ts b/src/ui/lib/components/Charts/Combined/components/DottedLines/DottedLines.interfaces.ts deleted file mode 100644 index 9044e15b3..000000000 --- a/src/ui/lib/components/Charts/Combined/components/DottedLines/DottedLines.interfaces.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { LinesSeries } from '../../../common/interfaces'; - -export interface DottedLinesProps { - lines: LinesSeries[]; - leftMargin: number; - topMargin: number; - innerHeight: number; - xScale: (d: number) => number; -} diff --git a/src/ui/lib/components/Charts/Combined/components/DottedLines/index.tsx b/src/ui/lib/components/Charts/Combined/components/DottedLines/index.tsx deleted file mode 100644 index c8a76069f..000000000 --- a/src/ui/lib/components/Charts/Combined/components/DottedLines/index.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React from 'react'; - -import { DottedLinesProps } from './DottedLines.interfaces'; -import useLineColors from '../../../common/useLineColors'; - -const DottedLines = ({ - lines, - leftMargin, - topMargin, - xScale, - innerHeight, -}: DottedLinesProps) => { - const lineColor = useLineColors(); - return ( - - - {lines.map((line, i) => ( - - ))} - - - ); -}; - -export default DottedLines; diff --git a/src/ui/lib/components/Charts/Combined/index.tsx b/src/ui/lib/components/Charts/Combined/index.tsx deleted file mode 100644 index 199b15542..000000000 --- a/src/ui/lib/components/Charts/Combined/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as Combined } from './Combined.component'; -export type { CombinedProps } from './Combined.interfaces'; diff --git a/src/ui/lib/components/Charts/DashedLine/DashedLine.component.tsx b/src/ui/lib/components/Charts/DashedLine/DashedLine.component.tsx deleted file mode 100644 index 650c62eee..000000000 --- a/src/ui/lib/components/Charts/DashedLine/DashedLine.component.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import { useTheme } from '@mui/material'; -import { ResponsiveLine, Serie } from '@nivo/line'; - -import { CustomLegendLayer } from './components/CustomLegendLayer'; -import { DashedSolidLine } from './components/DashedSolidLine'; -import { DashedLineProps, ScaleType } from './DashedLine.interfaces'; -import { spacedLogValues } from './helpers'; - -export const getMinTick = (data: readonly Serie[]) => { - return Math.min( - ...data.map((lineData) => - Math.min(...lineData.data.map((point) => point.y as number)) - ) - ); -}; - -export const getMaxTick = (data: readonly Serie[]) => { - return Math.max( - ...data.map((lineData) => - Math.max(...lineData.data.map((point) => point.y as number)) - ) - ); -}; - -export const Component = ({ - data, - xLegend, - yLegend, - margins, - minX, - yScaleType = ScaleType.log, -}: DashedLineProps) => { - const theme = useTheme(); - const defaultMargins = { top: 10, left: 10, right: 10, bottom: 10 }; - const finalMargins = { - ...defaultMargins, - ...margins, - bottom: (margins?.bottom || defaultMargins.bottom) + 50, - }; - - const dashedLineTheme = { - textColor: theme.palette.surface.onSurface, - fontSize: 14, - axis: { - domain: { - line: { - stroke: theme.palette.outline.subdued, - strokeWidth: 1, - }, - }, - ticks: { - line: { - stroke: theme.palette.outline.subdued, - strokeWidth: 1, - }, - text: { - fill: theme.palette.surface.onSurface, - fontSize: theme.typography.axisTitle.fontSize, - fontFamily: theme.typography.axisTitle.fontFamily, - fontWeight: theme.typography.axisTitle.fontWeight, - }, - }, - legend: { - text: { - fill: theme.palette.surface.onSurface, - fontSize: theme.typography.axisTitle.fontSize, - fontFamily: theme.typography.axisTitle.fontFamily, - fontWeight: theme.typography.axisTitle.fontWeight, - }, - }, - }, - grid: { - line: { - stroke: theme.palette.outline.subdued, - strokeWidth: 1, - }, - }, - }; - - let extraLeftAxisOptions = {}; - let extraYScaleOptions = {}; - if (yScaleType === ScaleType.log) { - const ticks = spacedLogValues( - Math.floor(getMinTick(data)), - Math.ceil(getMaxTick(data)), - 6 - ); - extraLeftAxisOptions = { - tickValues: ticks, - }; - extraYScaleOptions = { - min: ticks[0], - max: ticks[ticks.length - 1], - }; - } - - return ( -
- -
- ); -}; diff --git a/src/ui/lib/components/Charts/DashedLine/DashedLine.interfaces.ts b/src/ui/lib/components/Charts/DashedLine/DashedLine.interfaces.ts deleted file mode 100644 index 16193ab41..000000000 --- a/src/ui/lib/components/Charts/DashedLine/DashedLine.interfaces.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { LineSvgProps } from '@nivo/line'; - -import { Margins } from '../common/interfaces'; - -export enum ScaleType { - log = 'symlog', - linear = 'linear', -} - -export interface DashedLineProps extends LineSvgProps { - margins?: Margins; - xLegend: string; - yLegend: string; - minX?: number; - yScaleType?: ScaleType; -} diff --git a/src/ui/lib/components/Charts/DashedLine/components/CustomLegendLayer/CustomLegendLayer.interfaces.ts b/src/ui/lib/components/Charts/DashedLine/components/CustomLegendLayer/CustomLegendLayer.interfaces.ts deleted file mode 100644 index 813bb5e27..000000000 --- a/src/ui/lib/components/Charts/DashedLine/components/CustomLegendLayer/CustomLegendLayer.interfaces.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { CustomLayerProps } from '@nivo/line'; - -export interface CustomLegendLayerProps extends CustomLayerProps { - height?: number; -} diff --git a/src/ui/lib/components/Charts/DashedLine/components/CustomLegendLayer/index.tsx b/src/ui/lib/components/Charts/DashedLine/components/CustomLegendLayer/index.tsx deleted file mode 100644 index bc04c481b..000000000 --- a/src/ui/lib/components/Charts/DashedLine/components/CustomLegendLayer/index.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { useTheme } from '@mui/material'; - -import { CustomLegendLayerProps } from './CustomLegendLayer.interfaces'; - -const LEGEND_HEIGHT = 40; - -export const CustomLegendLayer = ({ series, ...rest }: CustomLegendLayerProps) => { - const theme = useTheme(); - const palette = theme.palette; - - const colors = [ - palette.surface.onSurface, - palette.secondary.main, - palette.tertiary.main, - palette.quarternary.main, - ]; - const solidColor = palette.primary.main; - - const getColor = (isSolid = false) => { - if (isSolid) { - return solidColor; - } - - if (colors.length === 0) { - throw new Error('No more colors available'); - } - - return colors.splice(0, 1)[0]; - }; - return ( - - {series.map((item, index) => { - return ( - - - - {item.id} - - - ); - })} - - ); -}; diff --git a/src/ui/lib/components/Charts/DashedLine/components/DashedSolidLine/DashedSolidLine.interfaces.ts b/src/ui/lib/components/Charts/DashedLine/components/DashedSolidLine/DashedSolidLine.interfaces.ts deleted file mode 100644 index fdb4537a9..000000000 --- a/src/ui/lib/components/Charts/DashedLine/components/DashedSolidLine/DashedSolidLine.interfaces.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { CustomLayerProps } from '@nivo/line'; -import type { ScaleLinear } from '@nivo/scales'; - -export type DashedSolidLineProps = Omit & { - xScale: ScaleLinear; - yScale: ScaleLinear; -}; diff --git a/src/ui/lib/components/Charts/DashedLine/components/DashedSolidLine/index.tsx b/src/ui/lib/components/Charts/DashedLine/components/DashedSolidLine/index.tsx deleted file mode 100644 index 952ff24a6..000000000 --- a/src/ui/lib/components/Charts/DashedLine/components/DashedSolidLine/index.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import { useTheme } from '@mui/material'; - -import { DashedSolidLineProps } from './DashedSolidLine.interfaces'; -import { toNumberValue } from '../../helpers'; - -export const DashedSolidLine = ({ - series, - lineGenerator, - xScale, - yScale, -}: DashedSolidLineProps) => { - const theme = useTheme(); - const palette = theme.palette; - - const colors = [ - palette.surface.onSurface, - palette.secondary.main, - palette.tertiary.main, - palette.quarternary.main, - ]; - const solidColor = palette.primary.main; - - const getColor = (isSolid: boolean) => { - if (isSolid) { - return solidColor; - } - - if (colors.length === 0) { - throw new Error('No more colors available'); - } - - return colors.splice(0, 1)[0]; - }; - - return series.map(({ id, data, solid = false }) => { - return ( - - { - const linePath = lineGenerator( - data.map((d) => ({ - x: xScale(toNumberValue(d.data.x)), - y: yScale(toNumberValue(d.data.y)), - })) - ); - return linePath !== null ? linePath : undefined; - })()} - fill="none" - stroke={getColor(Boolean(solid))} - style={ - !solid - ? { - strokeDasharray: '2.4 2.4', - strokeWidth: 1.5, - } - : { - strokeWidth: 1.5, - } - } - /> - {solid && - data.map((d, pointIndex) => ( - - ))} - - ); - }); -}; diff --git a/src/ui/lib/components/Charts/DashedLine/helpers.ts b/src/ui/lib/components/Charts/DashedLine/helpers.ts deleted file mode 100644 index 0c5a6bd03..000000000 --- a/src/ui/lib/components/Charts/DashedLine/helpers.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { DatumValue } from '@nivo/line'; - -type NumberValue = number | { valueOf(): number }; - -export const toNumberValue = (value: DatumValue | null | undefined): NumberValue => { - if (value === null || value === undefined) { - return 0; - } - return value as NumberValue; -}; - -const allowedMultipliers = [ - 1, 1.2, 1.4, 1.5, 1.6, 1.8, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 7.5, 8, 9, 10, -]; - -export function roundDownNice(x: number) { - if (x <= 0) { - return x; - } - const exponent = Math.floor(Math.log10(x)); - const base = Math.pow(10, exponent); - const fraction = x / base; - for (const m of allowedMultipliers.slice().reverse()) { - if (m <= fraction) { - return Math.floor(m * base); - } - } - return Math.floor(10 * base); -} - -export function roundUpNice(x: number) { - if (x <= 0) { - return x; - } - const exponent = Math.floor(Math.log10(x)); - const base = Math.pow(10, exponent); - const fraction = x / base; - for (const m of allowedMultipliers) { - if (m >= fraction) { - return Math.ceil(m * base); - } - } - return Math.ceil(10 * base); -} - -export function roundNearestNice(x: number) { - if (x <= 0) { - return x; - } - const exponent = Math.floor(Math.log10(x)); - const base = Math.pow(10, exponent); - const fraction = x / base; - let best = allowedMultipliers[0]; - let bestDiff = Math.abs(fraction - best); - for (const m of allowedMultipliers) { - const diff = Math.abs(fraction - m); - if (diff < bestDiff) { - best = m; - bestDiff = diff; - } - } - return Math.round(best * base); -} - -export function spacedLogValues(min: number, max: number, steps: number) { - if (steps < 2) { - return []; - } - if (steps > max - min) { - steps = max - min + 1; - } - - if (min === 0) { - const nonzeroCount = steps - 1; - const exponent = Math.log10(max) / (nonzeroCount - 1); - const lowerNonZero = roundDownNice(Math.pow(10, exponent)); - const upperTick = roundUpNice(max); - const r = Math.pow(upperTick / lowerNonZero, 1 / (nonzeroCount - 1)); - const ticks = [0]; - for (let i = 0; i < nonzeroCount; i++) { - const value = lowerNonZero * Math.pow(r, i); - ticks.push(roundNearestNice(value)); - } - return ticks; - } else { - const lowerTick = roundNearestNice(min); - const upperTick = roundUpNice(max); - const r = Math.pow(upperTick / lowerTick, 1 / (steps - 1)); - const ticks = []; - for (let i = 0; i < steps; i++) { - const value = lowerTick * Math.pow(r, i); - ticks.push(roundNearestNice(value)); - } - return ticks; - } -} diff --git a/src/ui/lib/components/Charts/DashedLine/index.tsx b/src/ui/lib/components/Charts/DashedLine/index.tsx deleted file mode 100644 index 67fbf071b..000000000 --- a/src/ui/lib/components/Charts/DashedLine/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as DashedLine } from './DashedLine.component'; -export type { DashedLineProps } from './DashedLine.interfaces'; diff --git a/src/ui/lib/components/Charts/MetricLine/MetricLine.component.tsx b/src/ui/lib/components/Charts/MetricLine/MetricLine.component.tsx deleted file mode 100644 index 8b1b4df25..000000000 --- a/src/ui/lib/components/Charts/MetricLine/MetricLine.component.tsx +++ /dev/null @@ -1,122 +0,0 @@ -import { useTheme } from '@mui/material'; -import { ResponsiveLine } from '@nivo/line'; -import React, { FC } from 'react'; - -import { useColor } from '@/lib/hooks/useColor'; - -import { MetricLineProps } from '.'; -import CustomAxes from './components/CustomAxes'; -import ThresholdBar from './components/ThresholdBar'; -import { ScaleType } from '../DashedLine/DashedLine.interfaces'; - -export const Component: FC = ({ - data, - threshold, - lineColor, - yScaleType = ScaleType.log, -}) => { - const theme = useTheme(); - const selectedColor = useColor(lineColor); - const lineTheme = { - axis: { - legend: { - text: { - fill: theme.palette.surface.onSurface, - fontSize: theme.typography.axisTitle.fontSize, - fontWeight: theme.typography.axisTitle.fontWeight, - fontFamily: theme.typography.axisTitle.fontFamily, - }, - }, - ticks: { - text: { - fill: theme.palette.surface.onSurface, - }, - }, - }, - }; - const xValues = data[0].data.map((d) => d.x) as Array; - const yValues = data[0].data.map((d) => d.y) as Array; - - const maxX = Math.max(...xValues); - const minX = Math.min(...xValues); - const maxY = Math.ceil(Math.max(...yValues)); - const minY = Math.floor(Math.min(...yValues)); - - let extraYScaleOptions = {}; - if (yScaleType === ScaleType.linear) { - extraYScaleOptions = { - stacked: true, - reverse: false, - }; - } - - return ( - { - return ( - - - {value} - - - ); - }, - }} - enableGridX={false} - enableGridY={false} - pointSize={0} - useMesh={true} - layers={[ - CustomAxes, - ({ - xScale, - yScale, - }: { - xScale: (value: number) => number; - yScale: (value: number) => number; - }) => ( - - ), - 'axes', - 'lines', - ]} - theme={lineTheme} - /> - ); -}; diff --git a/src/ui/lib/components/Charts/MetricLine/MetricLine.interface.ts b/src/ui/lib/components/Charts/MetricLine/MetricLine.interface.ts deleted file mode 100644 index 6df9fb47e..000000000 --- a/src/ui/lib/components/Charts/MetricLine/MetricLine.interface.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { LineSvgProps } from '@nivo/line'; - -import { ScaleType } from '../DashedLine/DashedLine.interfaces'; - -export enum LineColor { - Primary, - Secondary, - Tertiary, - Quarternary, -} -export interface MetricLineProps extends LineSvgProps { - threshold?: number; - lineColor: LineColor; - yScaleType?: ScaleType; -} diff --git a/src/ui/lib/components/Charts/MetricLine/components/CustomAxes/CustomAxes.interfaces.ts b/src/ui/lib/components/Charts/MetricLine/components/CustomAxes/CustomAxes.interfaces.ts deleted file mode 100644 index 66fad0246..000000000 --- a/src/ui/lib/components/Charts/MetricLine/components/CustomAxes/CustomAxes.interfaces.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { CustomLayerProps } from '@nivo/line'; -import type { ScaleLinear } from '@nivo/scales'; - -export type CustomLineLayerProps = Omit & { - yScale: ScaleLinear; -}; diff --git a/src/ui/lib/components/Charts/MetricLine/components/CustomAxes/index.tsx b/src/ui/lib/components/Charts/MetricLine/components/CustomAxes/index.tsx deleted file mode 100644 index b5275349b..000000000 --- a/src/ui/lib/components/Charts/MetricLine/components/CustomAxes/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { useTheme } from '@mui/material'; -import React from 'react'; - -import { CustomLineLayerProps } from './CustomAxes.interfaces'; - -const CustomAxes = ({ yScale }: CustomLineLayerProps) => { - const theme = useTheme(); - const minY2 = yScale.domain()[0]; - const maxY2 = yScale.domain()[1]; - return ( - <> - - - ); -}; - -export default CustomAxes; diff --git a/src/ui/lib/components/Charts/MetricLine/components/CustomGrid/CustomGrid.interfaces.ts b/src/ui/lib/components/Charts/MetricLine/components/CustomGrid/CustomGrid.interfaces.ts deleted file mode 100644 index 2e440fba0..000000000 --- a/src/ui/lib/components/Charts/MetricLine/components/CustomGrid/CustomGrid.interfaces.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface CustomGridProps { - xScale: (d: number) => number; - yScale: (d: number) => number; - width: number; - height: number; - xTicks: number[]; - yTicks: number[]; - scaledHeight: number; - fullGrid?: boolean; -} diff --git a/src/ui/lib/components/Charts/MetricLine/components/CustomGrid/index.tsx b/src/ui/lib/components/Charts/MetricLine/components/CustomGrid/index.tsx deleted file mode 100644 index 697260627..000000000 --- a/src/ui/lib/components/Charts/MetricLine/components/CustomGrid/index.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { useTheme } from '@mui/material'; - -import { CustomGridProps } from './CustomGrid.interfaces'; - -const CustomGrid = ({ - xScale, - yScale, - width, - height, - xTicks, - yTicks, - scaledHeight, - fullGrid = false, -}: CustomGridProps) => { - const theme = useTheme(); - const xTick = xTicks[0]; - const yTick = yTicks[yTicks.length - 1]; - - const renderAxlesOnly = ( - <> - - - - ); - - const renderFullGrid = ( - <> - {xTicks.map((tick) => ( - - ))} - {yTicks.map((tick) => ( - - ))} - - ); - - return ( - - {fullGrid ? renderFullGrid : renderAxlesOnly} - - ); -}; - -export default CustomGrid; diff --git a/src/ui/lib/components/Charts/MetricLine/components/CustomTick/CustomTick.interfaces.ts b/src/ui/lib/components/Charts/MetricLine/components/CustomTick/CustomTick.interfaces.ts deleted file mode 100644 index efe5ef043..000000000 --- a/src/ui/lib/components/Charts/MetricLine/components/CustomTick/CustomTick.interfaces.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface CustomTickProps { - scale: (d: number) => number; - isXAxis: boolean; - tick: number; - withTicks?: boolean; - isFirst: boolean; - isLast: boolean; -} diff --git a/src/ui/lib/components/Charts/MetricLine/components/CustomTick/index.tsx b/src/ui/lib/components/Charts/MetricLine/components/CustomTick/index.tsx deleted file mode 100644 index 3784ff867..000000000 --- a/src/ui/lib/components/Charts/MetricLine/components/CustomTick/index.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import { useTheme } from '@mui/material'; - -import { CustomTickProps } from './CustomTick.interfaces'; - -const CustomTick = ({ - isXAxis, - tick, - scale, - withTicks = false, - isFirst, - isLast, -}: CustomTickProps) => { - const theme = useTheme(); - - const getGroupPosition = () => { - if (!isXAxis) { - return { x: 0, y: scale(tick) }; - } - - let x = scale(tick); - if (isFirst) { - x = 4; - } - if (isLast) { - x -= 4; - } - return { x, y: 0 }; - }; - - const renderTickContent = ( - textAnchor: 'middle' | 'end', - x: number, - y: number, - lineX: number, - lineY: number - ) => ( - <> - {withTicks && ( - - )} - - {tick} - - - ); - - const { x, y } = getGroupPosition(); - - return ( - - {isXAxis - ? renderTickContent('middle', 0, 10, 0, 6) - : renderTickContent('end', -5, 0, -6, 0)} - - ); -}; - -export default CustomTick; diff --git a/src/ui/lib/components/Charts/MetricLine/components/ThresholdBar/ThresholdBar.interfaces.ts b/src/ui/lib/components/Charts/MetricLine/components/ThresholdBar/ThresholdBar.interfaces.ts deleted file mode 100644 index 266b4c164..000000000 --- a/src/ui/lib/components/Charts/MetricLine/components/ThresholdBar/ThresholdBar.interfaces.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface ThresholdBarProps { - xScale: (value: number) => number; - yScale: (value: number) => number; - threshold?: number; - minX: number; - minY: number; - maxX: number; - maxY: number; -} diff --git a/src/ui/lib/components/Charts/MetricLine/components/ThresholdBar/index.tsx b/src/ui/lib/components/Charts/MetricLine/components/ThresholdBar/index.tsx deleted file mode 100644 index c40271043..000000000 --- a/src/ui/lib/components/Charts/MetricLine/components/ThresholdBar/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { useTheme } from '@mui/material'; -import React, { FC } from 'react'; - -import { ThresholdBarProps } from './ThresholdBar.interfaces'; - -const ThresholdBar: FC = ({ - xScale, - yScale, - threshold, - minX, - maxX, - minY, - maxY, -}) => { - const theme = useTheme(); - - if (threshold === undefined || threshold <= 0 || threshold > maxY) { - return null; - } - - const x0 = xScale(minX); - const y0 = yScale(minY); - const xMax = xScale(maxX); - const yThreshold = yScale(threshold); - - if ([x0, y0, xMax, yThreshold].some((value) => value === undefined)) { - return null; - } - - return ( - - - - - ); -}; - -export default ThresholdBar; diff --git a/src/ui/lib/components/Charts/MetricLine/index.tsx b/src/ui/lib/components/Charts/MetricLine/index.tsx deleted file mode 100644 index 22a9636d7..000000000 --- a/src/ui/lib/components/Charts/MetricLine/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export { Component as MetricLine } from './MetricLine.component'; -export { LineColor } from './MetricLine.interface'; -export type { MetricLineProps } from './MetricLine.interface'; diff --git a/src/ui/lib/components/Charts/MiniCombined/MiniCombined.component.tsx b/src/ui/lib/components/Charts/MiniCombined/MiniCombined.component.tsx deleted file mode 100644 index 96341cfe8..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/MiniCombined.component.tsx +++ /dev/null @@ -1,131 +0,0 @@ -import { useTheme } from '@mui/material'; -import { BarCustomLayerProps, ResponsiveBar } from '@nivo/bar'; -import { Point } from '@nivo/core'; -import React from 'react'; - -import useChartScales from '../common/useChartScales'; -import CustomBars from './components/CustomBars'; -import CustomGrid from './components/CustomGrid'; -import CustomTick from './components/CustomTick'; -import { MiniCombinedWithResizeProps } from './MiniCombined.interfaces'; - -export const Component = ({ - bars, - lines, - margins, - xLegend, - containerSize, -}: MiniCombinedWithResizeProps) => { - const theme = useTheme(); - const combinedGraphTheme = { - axis: { - legend: { - text: { - fill: theme.palette.surface.onSurface, - fontSize: theme.typography.axisTitle.fontSize, - fontWeight: theme.typography.axisTitle.fontWeight, - fontFamily: theme.typography.axisTitle.fontFamily, - }, - }, - ticks: { - text: { - fill: theme.palette.surface.onSurface, - }, - }, - }, - }; - const defaultMargins = { top: 10, left: 10, right: 10, bottom: 10 }; - const finalMargins = { - ...defaultMargins, - ...margins, - bottom: margins?.bottom || defaultMargins.bottom, - }; - const { xTicks, yTicks, fnScaleX, fnScaleY, innerHeight } = useChartScales({ - bars, - lines, - width: containerSize.width, - height: containerSize.height, - margins: finalMargins, - }); - - const CustomGridLayer = () => { - const scaledWidth = fnScaleX(xTicks[xTicks.length - 1]); - const scaledHeight = innerHeight - fnScaleY(yTicks[0]); - - return ( - fnScaleX(d)} - yScale={(d: number) => innerHeight - fnScaleY(d)} - width={scaledWidth} - height={innerHeight} - xTicks={xTicks} - yTicks={yTicks} - scaledHeight={scaledHeight} - /> - ); - }; - - const CustomBarLayer = (props: BarCustomLayerProps) => { - const heightOffset = innerHeight - fnScaleY(yTicks[0]); - return ( - fnScaleX(d)} - yScaleFunc={(d: number) => innerHeight - fnScaleY(d)} - heightOffset={heightOffset} - /> - ); - }; - return ( -
- ( - fnScaleX(d)} - tick={xTicks[tick.tickIndex]} - isFirst={tick.tickIndex === 0} - isLast={tick.tickIndex === xTicks.length - 1} - /> - ), - }} - layers={['axes', CustomGridLayer, CustomBarLayer]} - theme={combinedGraphTheme} - /> - {/* */} -
- ); -}; diff --git a/src/ui/lib/components/Charts/MiniCombined/MiniCombined.interfaces.ts b/src/ui/lib/components/Charts/MiniCombined/MiniCombined.interfaces.ts deleted file mode 100644 index 6e2b6b13c..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/MiniCombined.interfaces.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { LinesSeries, Margins, Point } from '../common/interfaces'; -import { ContainerSize } from './components/ContainerSizeWrapper'; - -export interface MiniCombinedProps { - bars: Point[]; - lines: LinesSeries[]; - width: number; - height: number; - margins?: Margins; - xLegend: string; -} - -export interface MiniCombinedWithResizeProps extends MiniCombinedProps { - containerSize: ContainerSize; -} diff --git a/src/ui/lib/components/Charts/MiniCombined/components/ContainerSizeWrapper/index.tsx b/src/ui/lib/components/Charts/MiniCombined/components/ContainerSizeWrapper/index.tsx deleted file mode 100644 index 032df6f82..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/components/ContainerSizeWrapper/index.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import React, { useState, useEffect, useRef } from 'react'; - -interface ContainerSizeWrapperProps { - children: (containerSize: ContainerSize) => React.ReactNode; -} - -export interface ContainerSize { - width: number; - height: number; -} - -const ContainerSizeWrapper: React.FC = ({ children }) => { - const [containerSize, setContainerSize] = useState({ - width: 0, - height: 0, - }); - const containerRef = useRef(null); - - useEffect(() => { - const updateSize = () => { - if (containerRef.current) { - setContainerSize({ - width: containerRef.current.offsetWidth, - height: containerRef.current.offsetHeight, - }); - } - }; - - updateSize(); - window.addEventListener('resize', updateSize); - - return () => window.removeEventListener('resize', updateSize); - }, []); - - return ( -
- {children(containerSize)} -
- ); -}; - -export default ContainerSizeWrapper; diff --git a/src/ui/lib/components/Charts/MiniCombined/components/CustomBars/CustomBars.interfaces.ts b/src/ui/lib/components/Charts/MiniCombined/components/CustomBars/CustomBars.interfaces.ts deleted file mode 100644 index faad401e0..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/components/CustomBars/CustomBars.interfaces.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { BarCustomLayerProps } from '@nivo/bar'; - -export interface CustomBarsProps extends BarCustomLayerProps { - xScaleFunc: (d: number) => number; - yScaleFunc: (d: number) => number; - heightOffset: number; -} diff --git a/src/ui/lib/components/Charts/MiniCombined/components/CustomBars/index.tsx b/src/ui/lib/components/Charts/MiniCombined/components/CustomBars/index.tsx deleted file mode 100644 index 5ecc6e27d..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/components/CustomBars/index.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import { ComputedBarDatum } from '@nivo/bar'; -import { Point } from '@nivo/core'; -import { useTooltip, BasicTooltip } from '@nivo/tooltip'; -import React from 'react'; - -import { CustomBarsProps } from './CustomBars.interfaces'; - -const CustomBars = ({ - bars, - xScaleFunc, - yScaleFunc, - heightOffset, -}: CustomBarsProps) => { - const { showTooltipFromEvent, hideTooltip } = useTooltip(); - const minX = - bars.length === 1 - ? 0 - : Math.min(...bars.map((bar) => xScaleFunc(bar.data.data.x || 0))); - const maxX = Math.max(...bars.map((bar) => xScaleFunc(bar.data.data.x || 0))); - const handleMouseEnter = ( - event: React.MouseEvent, - bar: ComputedBarDatum - ) => { - const x = xScaleFunc(bar.data.data.x || 0) || 0; - const normalizedPosition = (x - minX) / (maxX - minX); - const maxPadding = 80; - - let paddingLeft = 0; - let paddingRight = 0; - // log scale padding so that tooltip doesn't get cut off by the edges - if (normalizedPosition < 0.5) { - const logFactor = -Math.log(2 * normalizedPosition + 0.01) / Math.log(100); - paddingLeft = Math.min(maxPadding, Math.max(0, logFactor * maxPadding)); - } else { - const logFactor = -Math.log(2 * (1 - normalizedPosition) + 0.01) / Math.log(100); - paddingRight = Math.min(maxPadding, Math.max(0, logFactor * maxPadding)); - } - showTooltipFromEvent( -
- -
, - event - ); - }; - - const handleMouseLeave = () => { - hideTooltip(); - }; - - return ( - - {bars.map((bar) => { - const barWidth = Math.min(10, bar.width); - const maxRadius = Math.floor(barWidth / 2); - const x = xScaleFunc(Number(bar.data.data.x || 0)) - barWidth / 2; - const y = yScaleFunc(Number(bar.data.data.y)); - let r; - if (bar.height < 4) { - r = Math.min(1, maxRadius); - } else if (bar.height < barWidth) { - r = Math.min(Math.floor(bar.height / 2), maxRadius); - } else { - r = maxRadius; - } - r = Math.min(r, Math.floor(bar.height / 2)); - const v = Math.max(0, bar.height - r); - const path = `M ${x + r},${y} h ${ - barWidth - 2 * r - } a ${r},${r} 0 0 1 ${r},${r} v ${v} h -${barWidth} v -${v} a ${r},${r} 0 0 1 ${r},-${r} z`; - - return ( - handleMouseEnter(event, bar)} - onMouseLeave={handleMouseLeave} - /> - ); - })} - - ); -}; - -export default CustomBars; diff --git a/src/ui/lib/components/Charts/MiniCombined/components/CustomGrid/CustomGrid.interfaces.ts b/src/ui/lib/components/Charts/MiniCombined/components/CustomGrid/CustomGrid.interfaces.ts deleted file mode 100644 index 2e440fba0..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/components/CustomGrid/CustomGrid.interfaces.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface CustomGridProps { - xScale: (d: number) => number; - yScale: (d: number) => number; - width: number; - height: number; - xTicks: number[]; - yTicks: number[]; - scaledHeight: number; - fullGrid?: boolean; -} diff --git a/src/ui/lib/components/Charts/MiniCombined/components/CustomGrid/index.tsx b/src/ui/lib/components/Charts/MiniCombined/components/CustomGrid/index.tsx deleted file mode 100644 index 0ef400b37..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/components/CustomGrid/index.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { useTheme } from '@mui/material'; - -import { CustomGridProps } from './CustomGrid.interfaces'; - -const CustomGrid = ({ - xScale, - yScale, - width, - height, - xTicks, - yTicks, - scaledHeight, - fullGrid = false, -}: CustomGridProps) => { - const theme = useTheme(); - // const xTick = xTicks[0]; - const yTick = yTicks[yTicks.length - 1]; - - const renderAxlesOnly = ( - <> - {/**/} - - - ); - - const renderFullGrid = ( - <> - {xTicks.map((tick) => ( - - ))} - {yTicks.map((tick) => ( - - ))} - - ); - - return ( - - {fullGrid ? renderFullGrid : renderAxlesOnly} - - ); -}; - -export default CustomGrid; diff --git a/src/ui/lib/components/Charts/MiniCombined/components/CustomTick/CustomTick.interfaces.ts b/src/ui/lib/components/Charts/MiniCombined/components/CustomTick/CustomTick.interfaces.ts deleted file mode 100644 index efe5ef043..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/components/CustomTick/CustomTick.interfaces.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface CustomTickProps { - scale: (d: number) => number; - isXAxis: boolean; - tick: number; - withTicks?: boolean; - isFirst: boolean; - isLast: boolean; -} diff --git a/src/ui/lib/components/Charts/MiniCombined/components/CustomTick/index.tsx b/src/ui/lib/components/Charts/MiniCombined/components/CustomTick/index.tsx deleted file mode 100644 index 8aac9fd48..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/components/CustomTick/index.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { useTheme } from '@mui/material'; - -import { formatNumber } from '@/lib/utils/helpers'; - -import { CustomTickProps } from './CustomTick.interfaces'; - -const CustomTick = ({ - isXAxis, - tick, - scale, - withTicks = false, - isFirst, - isLast, -}: CustomTickProps) => { - const theme = useTheme(); - - if (isXAxis && !isFirst && !isLast) { - return null; - } - - const getGroupPosition = () => { - if (isXAxis) { - let x = scale(tick); - if (isFirst) { - x = 4; - } - if (isLast) { - x -= 4; - } - return { x, y: 0 }; - } - return { x: 0, y: scale(tick) }; - }; - - const renderTickContent = (textAnchor: 'middle' | 'end', x: number, y: number) => ( - <> - {withTicks && ( - - )} - - {formatNumber(tick)} - - - ); - - const { x, y } = getGroupPosition(); - - return ( - - {isXAxis ? renderTickContent('middle', 0, 10) : renderTickContent('end', -5, 0)} - - ); -}; - -export default CustomTick; diff --git a/src/ui/lib/components/Charts/MiniCombined/components/DottedLines/DottedLines.interfaces.ts b/src/ui/lib/components/Charts/MiniCombined/components/DottedLines/DottedLines.interfaces.ts deleted file mode 100644 index be9085ee8..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/components/DottedLines/DottedLines.interfaces.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Point } from '../../../common/interfaces'; - -export interface DottedLinesProps { - lines: Point[]; - leftMargin: number; - topMargin: number; - innerHeight: number; - xScale: (d: number) => number; -} diff --git a/src/ui/lib/components/Charts/MiniCombined/components/DottedLines/index.tsx b/src/ui/lib/components/Charts/MiniCombined/components/DottedLines/index.tsx deleted file mode 100644 index 7c14fc15d..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/components/DottedLines/index.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { DottedLinesProps } from './DottedLines.interfaces'; -import useLineColors from '../../../common/useLineColors'; - -const DottedLines = ({ - lines, - leftMargin, - topMargin, - xScale, - innerHeight, -}: DottedLinesProps) => { - const lineColor = useLineColors(); - return ( - - - {lines.map((line, i) => ( - - ))} - - - ); -}; - -export default DottedLines; diff --git a/src/ui/lib/components/Charts/MiniCombined/index.tsx b/src/ui/lib/components/Charts/MiniCombined/index.tsx deleted file mode 100644 index 6e363fdce..000000000 --- a/src/ui/lib/components/Charts/MiniCombined/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -export { Component as MiniCombined } from './MiniCombined.component'; -export type { - MiniCombinedProps, - MiniCombinedWithResizeProps, -} from './MiniCombined.interfaces'; diff --git a/src/ui/lib/components/Charts/common/interfaces.ts b/src/ui/lib/components/Charts/common/interfaces.ts deleted file mode 100644 index 468fb4af1..000000000 --- a/src/ui/lib/components/Charts/common/interfaces.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { MiniCombinedProps } from '../MiniCombined/MiniCombined.interfaces'; - -export type Point = { - x: number; - y: number; -}; - -export type LinesSeries = Point & { - id: string; -}; - -export type Margins = { - top?: number; - bottom?: number; - left?: number; - right?: number; -}; - -type RequiredCombinedProps = Required; -type RequiredMargins = Required; -type BaseChartScalesProps = Omit; -export type ChartScalesProps = BaseChartScalesProps & { - margins: RequiredMargins; -}; - -export interface CombinedProps { - bars: Point[]; - lines: LinesSeries[]; - width: number; - height: number; - margins?: Margins; - xLegend: string; - yLegend: string; -} diff --git a/src/ui/lib/components/Charts/common/useChartScales.ts b/src/ui/lib/components/Charts/common/useChartScales.ts deleted file mode 100644 index 43f0a81f5..000000000 --- a/src/ui/lib/components/Charts/common/useChartScales.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { useMemo } from 'react'; - -import { ChartScalesProps } from './interfaces'; - -export const calculateStep = (min: number, max: number) => { - const range = max - min; - const approxStep = range / 10; - const magnitude = Math.pow(10, Math.floor(Math.log10(approxStep))); - return Math.ceil(approxStep / magnitude) * magnitude; -}; - -const useChartScales = ({ bars, width, height, margins }: ChartScalesProps) => { - return useMemo(() => { - const xValues = bars.map((d) => d.x); - const yValues = bars.map((d) => d.y); - - const xMin = xValues.length === 1 ? 0 : Math.min(...xValues); - const xMax = Math.max(...xValues); - const yMin = Math.min(...yValues) > 0 ? 0 : Math.min(...yValues); - const yMax = Math.max(...yValues); - - const xStep = calculateStep(xMin, xMax); - const yStep = calculateStep(yMin, yMax); - - const xTicks = Array.from( - { length: Math.ceil((xMax - xMin) / xStep) + 1 }, - (_, i) => xMin + i * xStep - ); - const yTicks = Array.from( - { length: Math.ceil((yMax - yMin) / yStep) + 1 }, - (_, i) => yMin + i * yStep - ).reverse(); - - const innerHeight = height - margins.top - margins.bottom; - const innerWidth = width - margins.left - margins.right; - const fnScaleX = (d: number) => - innerWidth * Math.min(1, (d - xMin) / (xMax - xMin)); - const fnScaleY = (d: number) => (innerHeight * (d - yMin)) / (yMax - yMin); - - return { - xTicks, - yTicks, - fnScaleX, - fnScaleY, - innerWidth, - innerHeight, - }; - }, [bars, width, height, margins]); -}; - -export default useChartScales; diff --git a/src/ui/lib/components/Charts/common/useLineColors.tsx b/src/ui/lib/components/Charts/common/useLineColors.tsx deleted file mode 100644 index b0c9fe07b..000000000 --- a/src/ui/lib/components/Charts/common/useLineColors.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { useTheme } from '@mui/material'; - -const useLineColors = () => { - const theme = useTheme(); - const palette = theme.palette; - return [ - palette.primary.shades.W100, - palette.secondary.main, - palette.tertiary.main, - palette.quarternary.main, - ]; -}; - -export default useLineColors; diff --git a/src/ui/lib/components/DataPanel/DataPanel.component.tsx b/src/ui/lib/components/DataPanel/DataPanel.component.tsx deleted file mode 100644 index 19d94e301..000000000 --- a/src/ui/lib/components/DataPanel/DataPanel.component.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { Typography } from '@mui/material'; - -import { DataPanelProps } from './DataPanel.interfaces'; -import { - BottomCell, - InnerContainer, - TopCell, - HeaderContainer, -} from './DataPanel.styles'; - -export const Component = ({ - header, - topContainer, - bottomContainer, -}: DataPanelProps) => { - return ( - - - - {header} - - - - - {topContainer} - - - {bottomContainer && ( - - {bottomContainer} - - )} - - ); -}; diff --git a/src/ui/lib/components/DataPanel/DataPanel.interfaces.ts b/src/ui/lib/components/DataPanel/DataPanel.interfaces.ts deleted file mode 100644 index 3ea55a8d7..000000000 --- a/src/ui/lib/components/DataPanel/DataPanel.interfaces.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ReactNode } from 'react'; - -export interface DataPanelProps { - header: string; - topContainer: ReactNode; - bottomContainer?: ReactNode; -} diff --git a/src/ui/lib/components/DataPanel/DataPanel.styles.tsx b/src/ui/lib/components/DataPanel/DataPanel.styles.tsx deleted file mode 100644 index 7c364ab84..000000000 --- a/src/ui/lib/components/DataPanel/DataPanel.styles.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { Grid, styled } from '@mui/material'; - -import { HeaderContainer as HeaderContainerBase } from '../MetricsContainer/MetricsContainer.styles'; - -export const InnerContainer = styled(Grid)(({ theme }) => ({ - borderWidth: '1px', - borderStyle: 'solid', - borderColor: theme.palette.outline.subdued, - borderRadius: '8px', - overflow: 'hidden', - backgroundColor: theme.palette.surface.surfaceContainerLow, -})); - -export const TopCell = styled(Grid)({ - display: 'flex', - alignItems: 'flex-start', - height: '180px', - padding: '24px !important', -}); - -export const BottomCell = styled(Grid)(({ theme }) => ({ - display: 'flex', - alignItems: 'center', - minHeight: '220px', - height: '180px', - borderTopWidth: '1px', - borderTopStyle: 'solid', - borderTopColor: theme.palette.outline.subdued, - padding: '24px !important', -})); - -export const HeaderContainer = styled(HeaderContainerBase)({ - display: 'flex', - justifyContent: 'flex-start', -}); diff --git a/src/ui/lib/components/DataPanel/index.tsx b/src/ui/lib/components/DataPanel/index.tsx deleted file mode 100644 index 73cfde05e..000000000 --- a/src/ui/lib/components/DataPanel/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as DataPanel } from './DataPanel.component'; -export type { DataPanelProps } from './DataPanel.interfaces'; diff --git a/src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.component.tsx b/src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.component.tsx deleted file mode 100644 index b9cadc064..000000000 --- a/src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.component.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { Box, Typography } from '@mui/material'; - -import { Badge } from '../Badge'; -import { Section } from '../Section'; -import { DistributionPercentilesProps } from './DistributionPercentiles.interfaces'; - -export const Component = ({ list, rpsValue, units }: DistributionPercentilesProps) => { - return ( - - - - Distribution At - - - - - {list.map((item) => ( -
- ))} - - ); -}; diff --git a/src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.interfaces.tsx b/src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.interfaces.tsx deleted file mode 100644 index 23e86cfbb..000000000 --- a/src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.interfaces.tsx +++ /dev/null @@ -1,10 +0,0 @@ -export type PercentileItem = { - label: string; - value: string; -}; - -export interface DistributionPercentilesProps { - list: PercentileItem[]; - rpsValue: number; - units: string; -} diff --git a/src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.styles.tsx b/src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.styles.tsx deleted file mode 100644 index 19c7bd343..000000000 --- a/src/ui/lib/components/DistributionPercentiles/DistributionPercentiles.styles.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { Box, styled } from '@mui/material'; - -export const BadgeContainer = styled(Box)(({ theme }) => ({ - backgroundColor: theme.palette.surface.surfaceContainerHigh, - borderRadius: '6px', - padding: '4px 6px', - marginLeft: '12px', -})); diff --git a/src/ui/lib/components/DistributionPercentiles/index.tsx b/src/ui/lib/components/DistributionPercentiles/index.tsx deleted file mode 100644 index 2e75fad0d..000000000 --- a/src/ui/lib/components/DistributionPercentiles/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -export { Component as DistributionPercentiles } from './DistributionPercentiles.component'; -export type { - PercentileItem, - DistributionPercentilesProps, -} from './DistributionPercentiles.interfaces'; diff --git a/src/ui/lib/components/GraphTitle/GraphTitle.component.tsx b/src/ui/lib/components/GraphTitle/GraphTitle.component.tsx deleted file mode 100644 index a7a406022..000000000 --- a/src/ui/lib/components/GraphTitle/GraphTitle.component.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { Typography, useTheme } from '@mui/material'; - -import { GraphTitleProps } from './GraphTitle.interfaces'; - -export const Component = ({ title }: GraphTitleProps) => { - const theme = useTheme(); - return ( - - {title} - - ); -}; diff --git a/src/ui/lib/components/GraphTitle/GraphTitle.interfaces.ts b/src/ui/lib/components/GraphTitle/GraphTitle.interfaces.ts deleted file mode 100644 index 70853edb9..000000000 --- a/src/ui/lib/components/GraphTitle/GraphTitle.interfaces.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface GraphTitleProps { - title: string; -} diff --git a/src/ui/lib/components/GraphTitle/index.tsx b/src/ui/lib/components/GraphTitle/index.tsx deleted file mode 100644 index 0dad3c2b6..000000000 --- a/src/ui/lib/components/GraphTitle/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as GraphTitle } from './GraphTitle.component'; -export type { GraphTitleProps } from './GraphTitle.interfaces'; diff --git a/src/ui/lib/components/Input/Input.component.tsx b/src/ui/lib/components/Input/Input.component.tsx deleted file mode 100644 index 2fd68b6b9..000000000 --- a/src/ui/lib/components/Input/Input.component.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { Box, Typography } from '@mui/material'; -import React, { FC } from 'react'; - -import { useColor } from '@/lib/hooks/useColor'; - -import { InputProps } from './Input.interfaces'; -import { StyledTextField, InputContainer, ErrorMessage } from './Input.styles'; - -export const Component: FC = ({ - label, - prefix, - disabled = false, - value, - onChange, - fullWidth = false, - fontColor, - error, - isNumber = false, -}) => { - const selectedColor = useColor(fontColor); - return ( - - - - {label} - - - {prefix && ( - - {prefix} - - )} - - - - - {error || ' '} - - - ); -}; diff --git a/src/ui/lib/components/Input/Input.interfaces.ts b/src/ui/lib/components/Input/Input.interfaces.ts deleted file mode 100644 index 820132c36..000000000 --- a/src/ui/lib/components/Input/Input.interfaces.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ChangeEvent } from 'react'; - -import { LineColor } from '@/lib/components/Charts/MetricLine'; - -export interface InputProps { - label: string; - prefix?: string; - disabled?: boolean; - value: number | undefined; - onChange: (event: ChangeEvent) => void; - fullWidth?: boolean; - fontColor?: LineColor; - error?: string | undefined; - isNumber?: boolean; -} - -export type CustomInputContainer = { - fullWidth?: boolean; -}; - -export type CustomInputProps = { - fontColor: string; -}; diff --git a/src/ui/lib/components/Input/Input.styles.tsx b/src/ui/lib/components/Input/Input.styles.tsx deleted file mode 100644 index 1d5a832e9..000000000 --- a/src/ui/lib/components/Input/Input.styles.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import { Box, styled, TextField, Typography } from '@mui/material'; - -import { CustomInputContainer, CustomInputProps } from './Input.interfaces'; - -export const StyledTextField = styled(TextField, { - shouldForwardProp: (propName) => propName !== 'fontColor', -})(({ theme, fontColor }) => ({ - '& .MuiInputBase-input': { - color: fontColor, - fontSize: theme.typography.body1.fontSize, - fontWeight: theme.typography.body1.fontWeight, - padding: '0', - }, - '& .MuiInput-underline:before': { - borderBottomColor: 'transparent', - }, - '& .MuiInput-underline:hover:not(.Mui-disabled):before': { - borderBottomColor: 'transparent', - }, - '& .MuiInput-underline:after': { - borderBottomColor: 'transparent', - }, - '& input[type=number]': { - MozAppearance: 'textfield', - }, - '& input[type=number]::-webkit-outer-spin-button': { - WebkitAppearance: 'none', - margin: 0, - }, - '& input[type=number]::-webkit-inner-spin-button': { - WebkitAppearance: 'none', - margin: 0, - }, - '& .Mui-disabled': { - color: theme.palette.surface.onSurfaceSubdued + ' !important', - WebkitTextFillColor: theme.palette.surface.onSurfaceSubdued + ' !important', - }, -})); - -export const InputContainer = styled(Box, { - shouldForwardProp: (propName) => propName !== 'fullWidth', -})(({ theme, fullWidth }) => ({ - backgroundColor: theme.palette.surface.surfaceContainerHigh, - marginBottom: '8px', - padding: '8px 12px 11px 12px', - display: fullWidth ? 'block' : 'inline-block', - borderRadius: '8px', - minWidth: '168px', - width: 'auto', - flex: 1, - '&.disabled': { opacity: 0.4 }, -})); - -export const ErrorMessage = styled(Typography)({ - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - textAlign: 'center', - minHeight: '15px', -}); diff --git a/src/ui/lib/components/Input/index.tsx b/src/ui/lib/components/Input/index.tsx deleted file mode 100644 index 70ca783d0..000000000 --- a/src/ui/lib/components/Input/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as Input } from './Input.component'; -export type { InputProps } from './Input.interfaces'; diff --git a/src/ui/lib/components/MeanMetricSummary/MeanMetricSummary.component.tsx b/src/ui/lib/components/MeanMetricSummary/MeanMetricSummary.component.tsx deleted file mode 100644 index 904db20a1..000000000 --- a/src/ui/lib/components/MeanMetricSummary/MeanMetricSummary.component.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Box, Typography } from '@mui/material'; - -import { Badge } from '../Badge'; -import { MeanMetricSummaryProps } from './MeanMetricSummary.interfaces'; - -export const Component = ({ - meanValue, - meanUnit, - rpsValue, -}: MeanMetricSummaryProps) => { - return ( - - - - Mean At - - - - - - {meanValue} {meanUnit} - - - - ); -}; diff --git a/src/ui/lib/components/MeanMetricSummary/MeanMetricSummary.interfaces.tsx b/src/ui/lib/components/MeanMetricSummary/MeanMetricSummary.interfaces.tsx deleted file mode 100644 index d7561593d..000000000 --- a/src/ui/lib/components/MeanMetricSummary/MeanMetricSummary.interfaces.tsx +++ /dev/null @@ -1,5 +0,0 @@ -export interface MeanMetricSummaryProps { - meanValue: string; - meanUnit: string; - rpsValue: number; -} diff --git a/src/ui/lib/components/MeanMetricSummary/index.tsx b/src/ui/lib/components/MeanMetricSummary/index.tsx deleted file mode 100644 index 86d23f77d..000000000 --- a/src/ui/lib/components/MeanMetricSummary/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as MeanMetricSummary } from './MeanMetricSummary.component'; -export type { MeanMetricSummaryProps } from './MeanMetricSummary.interfaces'; diff --git a/src/ui/lib/components/MetricsContainer/MetricsContainer.component.tsx b/src/ui/lib/components/MetricsContainer/MetricsContainer.component.tsx deleted file mode 100644 index 456d14d4c..000000000 --- a/src/ui/lib/components/MetricsContainer/MetricsContainer.component.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { Grid, Typography } from '@mui/material'; - -import { MetricsContainerProps } from './MetricsContainer.interfaces'; -import { - HeaderContainer, - InnerContainer, - MainContainer, - RightColumn, -} from './MetricsContainer.styles'; - -export const Component = ({ - header, - leftColumn, - rightColumn, - children, -}: MetricsContainerProps) => { - return ( - - - - {header} - - - - - {children} - - - {/* middle containers */} - - {leftColumn} - - {rightColumn && ( - - {rightColumn} - - )} - - ); -}; diff --git a/src/ui/lib/components/MetricsContainer/MetricsContainer.interfaces.ts b/src/ui/lib/components/MetricsContainer/MetricsContainer.interfaces.ts deleted file mode 100644 index cd709539b..000000000 --- a/src/ui/lib/components/MetricsContainer/MetricsContainer.interfaces.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ReactNode } from 'react'; - -export interface MetricsContainerProps { - header: string; - leftColumn: ReactNode; - rightColumn?: ReactNode; - children: ReactNode; -} diff --git a/src/ui/lib/components/MetricsContainer/MetricsContainer.styles.tsx b/src/ui/lib/components/MetricsContainer/MetricsContainer.styles.tsx deleted file mode 100644 index 2117afaaa..000000000 --- a/src/ui/lib/components/MetricsContainer/MetricsContainer.styles.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { Grid, styled } from '@mui/material'; - -export const InnerContainer = styled(Grid)(({ theme }) => ({ - borderWidth: '1px', - borderStyle: 'solid', - borderColor: theme.palette.outline.subdued, - borderRadius: '8px', - overflow: 'hidden', - backgroundColor: theme.palette.surface.surfaceContainerLow, - marginLeft: 0, - marginTop: 0, -})); - -export const HeaderContainer = styled(Grid)(({ theme }) => ({ - backgroundColor: theme.palette.surface.surfaceContainer, - borderBottomWidth: '1px', - borderBottomStyle: 'solid', - borderBottomColor: theme.palette.outline.subdued, - padding: '18px 24px', - margin: 0, -})); - -export const RightColumn = styled(Grid)(({ theme }) => ({ - borderLeftWidth: '1px', - borderLeftStyle: 'solid', - borderLeftColor: theme.palette.outline.subdued, -})); - -export const MainContainer = styled(Grid)(({ theme }) => ({ - borderBottomWidth: '1px', - borderBottomStyle: 'solid', - borderBottomColor: theme.palette.outline.subdued, -})); diff --git a/src/ui/lib/components/MetricsContainer/index.tsx b/src/ui/lib/components/MetricsContainer/index.tsx deleted file mode 100644 index d6bbc5f23..000000000 --- a/src/ui/lib/components/MetricsContainer/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as MetricsContainer } from './MetricsContainer.component'; -export type { MetricsContainerProps } from './MetricsContainer.interfaces'; diff --git a/src/ui/lib/components/MetricsSummary/MetricSummary.interfaces.ts b/src/ui/lib/components/MetricsSummary/MetricSummary.interfaces.ts deleted file mode 100644 index b806b4e68..000000000 --- a/src/ui/lib/components/MetricsSummary/MetricSummary.interfaces.ts +++ /dev/null @@ -1,3 +0,0 @@ -export type CustomSelectProps = { - placeholder?: string; -}; diff --git a/src/ui/lib/components/MetricsSummary/MetricsSummary.component.tsx b/src/ui/lib/components/MetricsSummary/MetricsSummary.component.tsx deleted file mode 100644 index 8f5e3aed2..000000000 --- a/src/ui/lib/components/MetricsSummary/MetricsSummary.component.tsx +++ /dev/null @@ -1,310 +0,0 @@ -import { Box, Button, Typography, useTheme } from '@mui/material'; -import React, { ElementType } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; - -import { MetricLine, LineColor } from '@/lib/components/Charts/MetricLine'; -import { selectSloState } from '@/lib/store/slices/slo/slo.selectors'; -import { setCurrentRequestRate } from '@/lib/store/slices/slo/slo.slice'; -import { Expand } from '@assets/icons'; - -import { - selectInterpolatedMetrics, - selectMetricsSummaryLineData, - useGetBenchmarksQuery, -} from '../../store/slices/benchmarks'; -import { selectRunInfo } from '../../store/slices/runInfo'; -import { formatNumber } from '../../utils/helpers'; -import { BlockHeader } from '../BlockHeader'; -import { Input } from '../Input'; -import { MetricValue } from './components/MetricValue'; -import { - CustomSlider, - FieldCell, - FieldsContainer, - FooterLeftCell, - FooterRightCell, - GraphContainer, - HeaderLeftCell, - HeaderRightCell, - MetricsSummaryContainer, - MiddleColumn, - InputContainer, - StyledSelect, - StyledInputLabel, - OptionItem, - StyledFormControl, -} from './MetricsSummary.styles'; -import { useSummary } from './useSummary'; - -const percentileOptions = ['p50', 'p90', 'p95', 'p99']; - -export const Component = () => { - const theme = useTheme(); - const dispatch = useDispatch(); - const { data } = useGetBenchmarksQuery(); - - const lineDataByRps = useSelector(selectMetricsSummaryLineData); - const interpolatedMetricData = useSelector(selectInterpolatedMetrics); - const runInfo = useSelector(selectRunInfo); - - const { currentRequestRate } = useSelector(selectSloState); - const handleSliderChange = (event: Event, newValue: number | number[]) => { - dispatch(setCurrentRequestRate(newValue as number)); - }; - - const { - ttft: ttftSLO, - itl: itlSLO, - timePerRequest: timePerRequestSLO, - throughput: throughputSLO, - percentile, - minX, - maxX, - errors, - handleTtft, - handleItl, - handleTimePerRequest, - handleThroughput, - handlePercentileChange, - handleReset, - } = useSummary(); - - const isTtftMatch = Boolean( - ttftSLO && interpolatedMetricData.ttft.enforcedPercentileValue <= ttftSLO - ); - const isItlMatch = Boolean( - itlSLO && interpolatedMetricData.itl.enforcedPercentileValue <= itlSLO - ); - const isTprMatch = Boolean( - timePerRequestSLO && - interpolatedMetricData.timePerRequest.enforcedPercentileValue <= timePerRequestSLO - ); - const isThroughputMatch = Boolean( - throughputSLO && - interpolatedMetricData.throughput.enforcedPercentileValue >= throughputSLO - ); - - const sliderMarks = [ - { - value: minX, - label: minX, - }, - { - value: maxX, - label: maxX, - }, - ]; - - if ((data?.length ?? 0) <= 1) { - return <>; - } - - return ( - <> - - - - - - Service Level Objectives for{' '} - - [{runInfo?.task || 'N/A'}] - - : - - - - - - - - - - - - - - - - - - - - - - - Observed Values at: - - - - - percentile - - {percentileOptions.map((value) => ( - - {value} - - ))} - - - - - {/* graphs */} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {/* slider */} - - - - - - Measured RPS (Mean) - - - {formatNumber(currentRequestRate)} rps - - - - - ); -}; diff --git a/src/ui/lib/components/MetricsSummary/MetricsSummary.styles.tsx b/src/ui/lib/components/MetricsSummary/MetricsSummary.styles.tsx deleted file mode 100644 index 83b5ce1d8..000000000 --- a/src/ui/lib/components/MetricsSummary/MetricsSummary.styles.tsx +++ /dev/null @@ -1,213 +0,0 @@ -import { - Box, - FormControl, - Grid, - InputLabel, - MenuItem, - Select, - Slider, - styled, -} from '@mui/material'; - -import { CustomSelectProps } from './MetricSummary.interfaces'; - -export const MetricsSummaryContainer = styled(Grid)(({ theme }) => ({ - borderWidth: '1px', - borderStyle: 'solid', - borderColor: theme.palette.outline.subdued, - borderRadius: '8px', - overflow: 'hidden', - backgroundColor: theme.palette.surface.surfaceContainerLow, -})); - -export const MiddleColumn = styled(Grid)(({ theme }) => ({ - borderBottomWidth: 1, - borderBottomColor: theme.palette.outline.subdued, - borderBottomStyle: 'solid', - padding: '16px', -})); - -export const FieldsContainer = styled('div')({ - display: 'flex', - justifyContent: 'space-between', - gap: '16px', -}); - -export const FieldCell = styled('div')({ - flex: 1, - minWidth: 'calc((100% - 3 * 16px) / 4)', - boxSizing: 'border-box', -}); - -export const HeaderLeftCell = styled(Grid)(({ theme }) => ({ - borderBottomWidth: 1, - borderBottomColor: theme.palette.outline.subdued, - borderBottomStyle: 'solid', - paddingTop: '16px', - paddingLeft: '16px', - paddingBottom: '16px', - paddingRight: '8px', -})); - -export const HeaderRightCell = styled(Grid)(({ theme }) => ({ - borderBottomWidth: 1, - borderBottomColor: theme.palette.outline.subdued, - borderBottomStyle: 'solid', - borderLeftWidth: 1, - borderLeftColor: theme.palette.outline.subdued, - borderLeftStyle: 'solid', - paddingTop: '16px', - paddingLeft: '8px', - paddingBottom: '16px', - paddingRight: '24px', -})); - -export const FooterRightCell = styled(Grid)(({ theme }) => ({ - backgroundColor: theme.palette.surface.surfaceContainerHigh, - display: 'flex', - flexDirection: 'column', - alignItems: 'flex-end', - padding: '16px', -})); - -export const FooterLeftCell = styled(Grid)(({ theme }) => ({ - backgroundColor: theme.palette.surface.surfaceContainerHigh, - paddingTop: '32px', - paddingBottom: '16px', - paddingLeft: '36px', - paddingRight: '26px', -})); - -export const CustomSlider = styled(Slider)(({ theme }) => ({ - '& .MuiSlider-valueLabel': { - backgroundColor: theme.palette.surface.surfaceContainer, - color: theme.palette.surface.onSurface, - opacity: 1, - fontSize: theme.typography.caption.fontSize, - fontFamily: theme.typography.caption.fontFamily, - fontWeight: theme.typography.caption.fontWeight, - lineHeight: theme.typography.caption.lineHeight, - }, - '& .MuiSlider-markLabel': { - color: theme.palette.surface.onSurface, - opacity: 1, - fontSize: theme.typography.caption.fontSize, - fontFamily: theme.typography.caption.fontFamily, - fontWeight: theme.typography.caption.fontWeight, - lineHeight: theme.typography.caption.lineHeight, - }, - '& .MuiSlider-thumb': { - position: 'relative', - '&::before, &::after': { - borderRadius: 0, - content: '""', - position: 'absolute', - top: '-510px', - left: '50%', - transform: 'translateX(-50%)', - width: '1px', - height: '470px', - display: 'block', - borderLeftColor: theme.palette.primary.main, - borderLeftWidth: '1px', - borderLeftStyle: 'dashed', - }, - // '&::after': { - // left: 'calc(50% - 1px)', - // }, - }, -})); - -export const GraphContainer = styled('div')({ - width: '100%', - height: '90px', - overflow: 'visible', -}); - -export const InputContainer = styled(Box)(({ theme }) => ({ - backgroundColor: theme.palette.surface.surfaceContainerHigh, - padding: '8px 12px', - display: 'block', - borderRadius: '8px', - minWidth: '168px', - width: 'auto', - height: '50px', - overflow: 'hidden', - '&.disabled': { opacity: 0.4 }, -})); - -export const StyledSelect = styled(Select, { - shouldForwardProp: (propName) => propName !== 'placeholder', -})(({ theme, placeholder }) => ({ - '& .MuiSelect-select .notranslate::after': placeholder - ? { - content: `"${placeholder}"`, - opacity: 0.42, - } - : {}, - '& .MuiOutlinedInput-root': { - '& fieldset': { - borderColor: 'transparent', - }, - '&:hover fieldset': { - borderColor: 'transparent', - }, - '&.Mui-focused fieldset': { - borderColor: 'transparent', - }, - }, - '& .MuiSelect-select': { - padding: '24px 14px', - }, - '& .MuiInputLabel-root': { - color: theme.palette.text.secondary, - marginTop: '8px', - marginBottom: '8px', - }, - '& .MuiInputLabel-root.Mui-focused': { - color: theme.palette.surface.onSurfaceSubdued, - }, - '& .MuiInputLabel-root.MuiFormLabel-filled': { - color: theme.palette.surface.onSurfaceSubdued, - }, - '& .MuiInputBase-input': { - color: theme.palette.surface.onSurfaceSubdued, - }, -})); - -export const StyledInputLabel = styled(InputLabel)(({ theme }) => ({ - color: theme.palette.surface.onSurface, - textTransform: 'uppercase', - marginTop: '6px', - '&.MuiInputLabel-shrink': { - transform: 'translate(14px, 0px) scale(0.75)', - color: theme.palette.surface.onSurface, - }, -})); - -export const StyledFormControl = styled(FormControl)({ - '& .MuiOutlinedInput-root': { - '& fieldset': { - borderColor: 'transparent', - }, - '&:hover fieldset': { - borderColor: 'transparent', - }, - '&.Mui-focused fieldset': { - borderColor: 'transparent', - }, - }, -}); - -export const OptionItem = styled(MenuItem)(({ theme }) => ({ - backgroundColor: theme.palette.surface.surfaceContainerLow, - color: theme.palette.surface.onSurface, - '&:hover': { - backgroundColor: theme.palette.surface.surfaceContainerHigh, - color: theme.palette.surface.onSurface, - }, - '&.Mui-selected': { - backgroundColor: theme.palette.surface.surfaceContainerHigh, - color: theme.palette.surface.onSurface, - }, -})); diff --git a/src/ui/lib/components/MetricsSummary/components/MetricValue/MetricValue.component.tsx b/src/ui/lib/components/MetricsSummary/components/MetricValue/MetricValue.component.tsx deleted file mode 100644 index 1e9daeb46..000000000 --- a/src/ui/lib/components/MetricsSummary/components/MetricValue/MetricValue.component.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { Box, Typography } from '@mui/material'; -import { FC } from 'react'; - -import { useColor } from '@/lib/hooks/useColor'; -import { CheckCircle, WarningCircle } from '@assets/icons'; - -import { MetricValueProps } from './MetricValue.interfaces'; - -export const Component: FC = ({ - label, - value, - match, - valueColor, -}) => { - const selectedColor = useColor(valueColor); - return ( - - - - {label} - - - (observed) - - - - {value} - - {match ? : } - - ); -}; diff --git a/src/ui/lib/components/MetricsSummary/components/MetricValue/MetricValue.interfaces.ts b/src/ui/lib/components/MetricsSummary/components/MetricValue/MetricValue.interfaces.ts deleted file mode 100644 index fb3155e34..000000000 --- a/src/ui/lib/components/MetricsSummary/components/MetricValue/MetricValue.interfaces.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { LineColor } from '@/lib/components/Charts/MetricLine'; - -export interface MetricValueProps { - label: string; - value: string; - match: boolean; - valueColor: LineColor; -} diff --git a/src/ui/lib/components/MetricsSummary/components/MetricValue/index.tsx b/src/ui/lib/components/MetricsSummary/components/MetricValue/index.tsx deleted file mode 100644 index 45775c65a..000000000 --- a/src/ui/lib/components/MetricsSummary/components/MetricValue/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as MetricValue } from './MetricValue.component'; -export type { MetricValueProps } from './MetricValue.interfaces'; diff --git a/src/ui/lib/components/MetricsSummary/index.tsx b/src/ui/lib/components/MetricsSummary/index.tsx deleted file mode 100644 index ef1a8e000..000000000 --- a/src/ui/lib/components/MetricsSummary/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { Component as MetricsSummary } from './MetricsSummary.component'; diff --git a/src/ui/lib/components/MetricsSummary/useSummary.ts b/src/ui/lib/components/MetricsSummary/useSummary.ts deleted file mode 100644 index 3046fcb98..000000000 --- a/src/ui/lib/components/MetricsSummary/useSummary.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { SelectChangeEvent } from '@mui/material'; -import { ChangeEvent, useState } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; - -import { Point } from '@/lib/components/Charts/common/interfaces'; - -import { selectMetricsSummaryLineData } from '../../store/slices/benchmarks'; -import { selectSloState } from '../../store/slices/slo/slo.selectors'; -import { setEnforcedPercentile, setSloValue } from '../../store/slices/slo/slo.slice'; -import { ceil, floor } from '../../utils/helpers'; - -type Errors = { [key: string]: string | undefined }; - -const initErrorsState: Errors = { - ttft: undefined, - itl: undefined, - timePerRequest: undefined, - throughput: undefined, -}; - -const findMinMax = (lineData: Point[]) => { - let minX = Infinity; - let maxX = -Infinity; - let minY = Infinity; - let maxY = -Infinity; - - for (let i = 0; i < lineData.length; i++) { - const { x, y } = lineData[i]; - if (x < minX) { - minX = ceil(x, 2); - } - if (x > maxX) { - maxX = floor(x, 2); - } - if (y < minY) { - minY = ceil(y, 2); - } - if (y > maxY) { - maxY = floor(y, 2); - } - } - - return { minX, maxX, minY, maxY }; -}; - -export const useSummary = () => { - const dispatch = useDispatch(); - - const { current, enforcedPercentile, tasksDefaults } = useSelector(selectSloState); - const { ttft, itl, timePerRequest, throughput } = useSelector( - selectMetricsSummaryLineData - ); - - const [errors, setErrors] = useState(initErrorsState); - - const ttftLimits = findMinMax(ttft || []); - const itlLimits = findMinMax(itl || []); - const timePerRequestLimits = findMinMax(timePerRequest || []); - const throughputLimits = findMinMax(throughput || []); - - const limitsByMetric = { - ttft: ttftLimits, - itl: itlLimits, - timePerRequest: timePerRequestLimits, - throughput: throughputLimits, - }; - - const validateInput = (field: keyof typeof current, value?: number) => { - let error: string | undefined; - const limits = limitsByMetric[field]; - if (value === undefined) { - error = 'Invalid value'; - } else if (value > limits.maxY) { - error = 'Error: Larger than maximum'; - } else if (value < limits.minY) { - error = 'Error: Smaller than minimum'; - } - setErrors((prev) => ({ ...prev, [field]: error })); - }; - - const sanitizeInput = (value: string) => { - const sanitizedValue = value.replace(/\D/g, ''); - return sanitizedValue !== '' ? Number(sanitizedValue) : undefined; - }; - - const handleChange = - (metric: keyof typeof current) => (event: ChangeEvent) => { - const newValue = sanitizeInput(event.target.value); - validateInput(metric, newValue); - if (newValue !== undefined) { - dispatch(setSloValue({ metric, value: newValue })); - } - }; - - const handlePercentileChange = (event: SelectChangeEvent) => { - // TODO: need to validate slos on percentile change - const newValue = `${event.target.value as string}`; - dispatch(setEnforcedPercentile(newValue)); - }; - - const handleReset = () => { - Object.entries(tasksDefaults).forEach(([metric, value]) => { - dispatch(setSloValue({ metric: metric as keyof typeof current, value })); - }); - setErrors(initErrorsState); - }; - - return { - ...current, - percentile: enforcedPercentile, - minX: ttftLimits.minX, - maxX: ttftLimits.maxX, - errors, - handleTtft: handleChange('ttft'), - handleItl: handleChange('itl'), - handleTimePerRequest: handleChange('timePerRequest'), - handleThroughput: handleChange('throughput'), - handlePercentileChange, - handleReset, - }; -}; diff --git a/src/ui/lib/components/PageFooter/PageFooter.component.tsx b/src/ui/lib/components/PageFooter/PageFooter.component.tsx deleted file mode 100644 index 64082f9c3..000000000 --- a/src/ui/lib/components/PageFooter/PageFooter.component.tsx +++ /dev/null @@ -1,33 +0,0 @@ -'use client'; -import { Box, Link, Typography } from '@mui/material'; -import React from 'react'; - -import { guideLLMLogoLight } from '@assets/icons'; - -export const Component = () => { - return ( - - - - Got questions? - - alert('Not implemented')} underline="none" ml={1}> - - Send us a message on Slack - - - - - guidellm logo - - - ); -}; diff --git a/src/ui/lib/components/PageFooter/index.tsx b/src/ui/lib/components/PageFooter/index.tsx deleted file mode 100644 index 0d91795f9..000000000 --- a/src/ui/lib/components/PageFooter/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { Component as PageFooter } from './PageFooter.component'; diff --git a/src/ui/lib/components/PageHeader/PageHeader.component.tsx b/src/ui/lib/components/PageHeader/PageHeader.component.tsx deleted file mode 100644 index 683cf837d..000000000 --- a/src/ui/lib/components/PageHeader/PageHeader.component.tsx +++ /dev/null @@ -1,38 +0,0 @@ -'use client'; -import { Box, Typography } from '@mui/material'; - -import { useGetRunInfoQuery } from '../../store/slices/runInfo'; -import { formateDate } from '../../utils/helpers'; -import { SpecBadge } from '../SpecBadge'; -import { HeaderCell, HeaderWrapper } from './PageHeader.styles'; - -export const Component = () => { - const { data } = useGetRunInfoQuery(); - return ( - - - GuideLLM - - - Workload Report - - - - - - - - - - - ); -}; diff --git a/src/ui/lib/components/PageHeader/PageHeader.interfaces.ts b/src/ui/lib/components/PageHeader/PageHeader.interfaces.ts deleted file mode 100644 index af994cdca..000000000 --- a/src/ui/lib/components/PageHeader/PageHeader.interfaces.ts +++ /dev/null @@ -1,3 +0,0 @@ -export type HeaderCellProps = { - withDivider?: boolean; -}; diff --git a/src/ui/lib/components/PageHeader/PageHeader.styles.tsx b/src/ui/lib/components/PageHeader/PageHeader.styles.tsx deleted file mode 100644 index a292becf8..000000000 --- a/src/ui/lib/components/PageHeader/PageHeader.styles.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Grid, styled } from '@mui/material'; - -import { HeaderCellProps } from './PageHeader.interfaces'; - -export const HeaderWrapper = styled(Grid)(({ theme }) => ({ - backgroundColor: theme.palette.surface.surfaceContainerLow, - padding: '0 16px', - borderRadius: '8px', -})); - -export const HeaderCell = styled(Grid, { - shouldForwardProp: (propName) => propName !== 'withDivider', -})(({ theme, withDivider }) => ({ - overflow: 'hidden', - padding: '8px', - ...(withDivider && { - borderRight: `1px solid ${theme.palette.outline.subdued}`, - }), -})); diff --git a/src/ui/lib/components/PageHeader/index.tsx b/src/ui/lib/components/PageHeader/index.tsx deleted file mode 100644 index 86e81a23d..000000000 --- a/src/ui/lib/components/PageHeader/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { Component as PageHeader } from './PageHeader.component'; diff --git a/src/ui/lib/components/RequestOverTime/RequestOverTime.component.tsx b/src/ui/lib/components/RequestOverTime/RequestOverTime.component.tsx deleted file mode 100644 index ac1455a78..000000000 --- a/src/ui/lib/components/RequestOverTime/RequestOverTime.component.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import { Box, Grid, Typography } from '@mui/material'; -import { FC } from 'react'; - -import { RequestOverTimeProps } from './RequestOverTime.interfaces'; -import { Badge } from '../../components/Badge'; -import { SpecBadge } from '../../components/SpecBadge'; -import { MiniCombined } from '../Charts/MiniCombined'; -import ContainerSizeWrapper, { - ContainerSize, -} from '../Charts/MiniCombined/components/ContainerSizeWrapper'; - -export const Component: FC = ({ - benchmarksCount, - barData, - rateType, - lines = [], -}) => ( - - - - - - - - Rate Type - - - - - - -
- - {(containerSize: ContainerSize) => ( - - )} - -
-
-); diff --git a/src/ui/lib/components/RequestOverTime/RequestOverTime.interfaces.ts b/src/ui/lib/components/RequestOverTime/RequestOverTime.interfaces.ts deleted file mode 100644 index b40c7da22..000000000 --- a/src/ui/lib/components/RequestOverTime/RequestOverTime.interfaces.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface RequestOverTimeProps { - benchmarksCount: number; - barData: { - x: number; - y: number; - }[]; - rateType: string; - lines?: { x: number; y: number; id: string }[]; -} diff --git a/src/ui/lib/components/RequestOverTime/index.tsx b/src/ui/lib/components/RequestOverTime/index.tsx deleted file mode 100644 index cdb735933..000000000 --- a/src/ui/lib/components/RequestOverTime/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as RequestOverTime } from './RequestOverTime.component'; -export type { RequestOverTimeProps } from './RequestOverTime.interfaces'; diff --git a/src/ui/lib/components/RowContainer/RowContainer.component.tsx b/src/ui/lib/components/RowContainer/RowContainer.component.tsx deleted file mode 100644 index 31c5ac821..000000000 --- a/src/ui/lib/components/RowContainer/RowContainer.component.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Grid, Typography } from '@mui/material'; - -import { RowContainerProps } from './RowContainer.interfaces'; - -export const Component = ({ label, children }: RowContainerProps) => { - return ( - - - - {label} - - - - {children} - - - ); -}; diff --git a/src/ui/lib/components/RowContainer/RowContainer.interfaces.tsx b/src/ui/lib/components/RowContainer/RowContainer.interfaces.tsx deleted file mode 100644 index d25aab891..000000000 --- a/src/ui/lib/components/RowContainer/RowContainer.interfaces.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import { ReactNode } from 'react'; - -export interface RowContainerProps { - label: string; - children: ReactNode; -} diff --git a/src/ui/lib/components/RowContainer/index.tsx b/src/ui/lib/components/RowContainer/index.tsx deleted file mode 100644 index c9aa63de9..000000000 --- a/src/ui/lib/components/RowContainer/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as RowContainer } from './RowContainer.component'; -export type { RowContainerProps } from './RowContainer.interfaces'; diff --git a/src/ui/lib/components/Section/Section.component.tsx b/src/ui/lib/components/Section/Section.component.tsx deleted file mode 100644 index 11969a7a1..000000000 --- a/src/ui/lib/components/Section/Section.component.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Grid, Typography } from '@mui/material'; - -import { SectionProps } from './Section.interfaces'; -import { ValueCell } from './Section.styles'; - -export const Component = ({ label, value }: SectionProps) => { - return ( - - - - {label} - - - - {value} - - - ); -}; diff --git a/src/ui/lib/components/Section/Section.interfaces.ts b/src/ui/lib/components/Section/Section.interfaces.ts deleted file mode 100644 index 792bfe677..000000000 --- a/src/ui/lib/components/Section/Section.interfaces.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface SectionProps { - label: string; - value: string; -} diff --git a/src/ui/lib/components/Section/Section.styles.tsx b/src/ui/lib/components/Section/Section.styles.tsx deleted file mode 100644 index 4ae5d1f20..000000000 --- a/src/ui/lib/components/Section/Section.styles.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Grid, styled } from '@mui/material'; - -export const ValueCell = styled(Grid)(({ theme }) => ({ - backgroundColor: theme.palette.surface.surfaceContainerHigh, - color: theme.palette.surface.onSurface, - borderRadius: '6px', - padding: '6px', - gap: 10, - marginLeft: '12px', -})); diff --git a/src/ui/lib/components/Section/index.tsx b/src/ui/lib/components/Section/index.tsx deleted file mode 100644 index 8182a403d..000000000 --- a/src/ui/lib/components/Section/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as Section } from './Section.component'; -export type { SectionProps } from './Section.interfaces'; diff --git a/src/ui/lib/components/SectionContainer/SectionContainer.component.tsx b/src/ui/lib/components/SectionContainer/SectionContainer.component.tsx deleted file mode 100644 index e432112fa..000000000 --- a/src/ui/lib/components/SectionContainer/SectionContainer.component.tsx +++ /dev/null @@ -1,73 +0,0 @@ -'use client'; -import { Grid, useTheme } from '@mui/material'; -import { MutableRefObject, useEffect, useRef, useState } from 'react'; - -import { ArrowDown, ArrowUp } from '@assets/icons'; - -import { SectionContainerProps } from './SectionContainer.interfaces'; -import { Container, RoundedButton } from './SectionContainer.styles'; -import { SvgContainer } from '../../utils/SvgContainer'; - -export const Component = ({ children }: SectionContainerProps) => { - const theme = useTheme(); - const [expanded, setExpanded] = useState(false); - const [showButton, setShowButton] = useState(false); - const containerRef: MutableRefObject = useRef(null); - - useEffect(() => { - const checkOverflow = () => { - const container = containerRef.current; - if (container) { - const hasOverflow = container.scrollHeight > container.clientHeight; - setShowButton(hasOverflow); - } - }; - - checkOverflow(); - window.addEventListener('resize', checkOverflow); - - return () => { - window.removeEventListener('resize', checkOverflow); - }; - }, []); - - return ( - - - {children} - - - {showButton && ( - setExpanded(!expanded)} - sx={{ marginTop: '4px' }} - > - - {expanded ? ( - - - - ) : ( - - - - )} - - - )} - - - ); -}; diff --git a/src/ui/lib/components/SectionContainer/SectionContainer.interfaces.ts b/src/ui/lib/components/SectionContainer/SectionContainer.interfaces.ts deleted file mode 100644 index 629b06b66..000000000 --- a/src/ui/lib/components/SectionContainer/SectionContainer.interfaces.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { ReactElement } from 'react'; - -export interface SectionContainerProps { - children: ReactElement; -} diff --git a/src/ui/lib/components/SectionContainer/SectionContainer.styles.tsx b/src/ui/lib/components/SectionContainer/SectionContainer.styles.tsx deleted file mode 100644 index 9e4e36953..000000000 --- a/src/ui/lib/components/SectionContainer/SectionContainer.styles.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Grid, styled } from '@mui/material'; - -export const Container = styled(Grid)(({ theme }) => ({ - backgroundColor: theme.palette.surface.surfaceContainerLow, - borderRadius: '6px', - padding: '12px', - width: 'auto', - margin: '8px', -})); - -export const RoundedButton = styled('div')(({ theme }) => ({ - backgroundColor: theme.palette.primary.shades.B80, - width: '32px', - height: '32px', - borderRadius: '16px', - justifyContent: 'center', - alignItems: 'center', - display: 'flex', - cursor: 'pointer', - userSelect: 'none', -})); diff --git a/src/ui/lib/components/SectionContainer/index.tsx b/src/ui/lib/components/SectionContainer/index.tsx deleted file mode 100644 index 1b857fe8f..000000000 --- a/src/ui/lib/components/SectionContainer/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as SectionContainer } from './SectionContainer.component'; -export type { SectionContainerProps } from './SectionContainer.interfaces'; diff --git a/src/ui/lib/components/SpecBadge/SpecBadge.component.tsx b/src/ui/lib/components/SpecBadge/SpecBadge.component.tsx deleted file mode 100644 index f3c63c8d5..000000000 --- a/src/ui/lib/components/SpecBadge/SpecBadge.component.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { Box, Typography, Tooltip } from '@mui/material'; -import { FC } from 'react'; - -import { SpecBadgeProps } from './SpecBadge.interfaces'; -import { Container, EllipsisTypography, ValueWrapper } from './SpecBadge.styles'; - -export const Component: FC = ({ - label, - value, - variant, - additionalValue, - withTooltip = false, -}) => { - const tooltipContent = ( - - {value} - - ); - return ( - - - {label} - - - {withTooltip ? ( - {tooltipContent} - ) : ( - tooltipContent - )} - {additionalValue && {additionalValue}} - - - ); -}; diff --git a/src/ui/lib/components/SpecBadge/SpecBadge.interfaces.ts b/src/ui/lib/components/SpecBadge/SpecBadge.interfaces.ts deleted file mode 100644 index 5bc778b32..000000000 --- a/src/ui/lib/components/SpecBadge/SpecBadge.interfaces.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Variant } from '@mui/material/styles/createTypography'; -import { TypographyPropsVariantOverrides } from '@mui/material/Typography/Typography'; -import { OverridableStringUnion } from '@mui/types'; -import { ReactNode } from 'react'; - -export interface SpecBadgeProps { - label: string; - value: string; - variant: OverridableStringUnion; - additionalValue?: ReactNode; - withTooltip?: boolean; -} diff --git a/src/ui/lib/components/SpecBadge/SpecBadge.styles.tsx b/src/ui/lib/components/SpecBadge/SpecBadge.styles.tsx deleted file mode 100644 index 3057d7f29..000000000 --- a/src/ui/lib/components/SpecBadge/SpecBadge.styles.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Box, styled, Typography } from '@mui/material'; - -export const EllipsisTypography = styled(Typography)({ - whiteSpace: 'nowrap', - overflow: 'hidden', - textOverflow: 'ellipsis', -}); - -export const Container = styled(Box)({ - display: 'flex', - flexDirection: 'column', - alignItems: 'flex-start', - marginBottom: '8px', -}); - -export const ValueWrapper = styled(Box)({ - display: 'flex', - alignItems: 'center', - maxWidth: '100%', - width: 'auto', -}); diff --git a/src/ui/lib/components/SpecBadge/index.tsx b/src/ui/lib/components/SpecBadge/index.tsx deleted file mode 100644 index 54052cc2a..000000000 --- a/src/ui/lib/components/SpecBadge/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as SpecBadge } from './SpecBadge.component'; -export type { SpecBadgeProps } from './SpecBadge.interfaces'; diff --git a/src/ui/lib/components/TokenLength/TokenLength.component.tsx b/src/ui/lib/components/TokenLength/TokenLength.component.tsx deleted file mode 100644 index aaca273fe..000000000 --- a/src/ui/lib/components/TokenLength/TokenLength.component.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { Box, Typography } from '@mui/material'; -import { FC } from 'react'; - -import { TokenLengthProps } from './TokenLength.interfaces'; -import { MiniCombined } from '../../components/Charts/MiniCombined'; -import ContainerSizeWrapper, { - ContainerSize, -} from '../../components/Charts/MiniCombined/components/ContainerSizeWrapper'; - -export const Component: FC = ({ label, tokenCount, bars, lines }) => ( - - - - - {label} - - - - - {`${tokenCount} token${tokenCount !== 1 ? 's' : ''}`} - - - -
- - {(containerSize: ContainerSize) => ( - - )} - -
-
-); diff --git a/src/ui/lib/components/TokenLength/TokenLength.interfaces.ts b/src/ui/lib/components/TokenLength/TokenLength.interfaces.ts deleted file mode 100644 index d8e9dd15b..000000000 --- a/src/ui/lib/components/TokenLength/TokenLength.interfaces.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface TokenLengthProps { - label: string; - tokenCount: number; - bars: { x: number; y: number }[]; - lines: { x: number; y: number; id: string }[]; -} diff --git a/src/ui/lib/components/TokenLength/index.tsx b/src/ui/lib/components/TokenLength/index.tsx deleted file mode 100644 index e0eba3894..000000000 --- a/src/ui/lib/components/TokenLength/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Component as TokenLength } from './TokenLength.component'; -export type { TokenLengthProps } from './TokenLength.interfaces'; diff --git a/src/ui/lib/components/WorkloadDetails/WorkloadDetails.component.tsx b/src/ui/lib/components/WorkloadDetails/WorkloadDetails.component.tsx deleted file mode 100644 index d1defe3bc..000000000 --- a/src/ui/lib/components/WorkloadDetails/WorkloadDetails.component.tsx +++ /dev/null @@ -1,108 +0,0 @@ -'use client'; - -import { Box, Grid } from '@mui/material'; -import { useSelector } from 'react-redux'; - -import { - selectGenerationsHistogramBarData, - selectGenerationsHistogramLineData, - selectPromptsHistogramBarData, - selectPromptsHistogramLineData, - selectRequestOverTimeBarData, - useGetWorkloadDetailsQuery, -} from '../../store/slices/workloadDetails'; -import { formatNumber, parseUrlParts } from '../../utils/helpers'; -import { BlockHeader } from '../BlockHeader'; -import { Carousel } from '../Carousel'; -import { DataPanel } from '../DataPanel'; -import { RequestOverTime } from '../RequestOverTime'; -import { SpecBadge } from '../SpecBadge'; -import { TokenLength } from '../TokenLength'; - -export const Component = () => { - const { data } = useGetWorkloadDetailsQuery(); - const promptsBarData = useSelector(selectPromptsHistogramBarData); - const promptsLineData = useSelector(selectPromptsHistogramLineData); - const generationsBarData = useSelector(selectGenerationsHistogramBarData); - const generationsLineData = useSelector(selectGenerationsHistogramLineData); - const { barChartData: requestOverTimeBarData } = useSelector( - selectRequestOverTimeBarData - ); - const { type, target, port } = parseUrlParts(data?.server?.target || ''); - - return ( - <> - - - - } - bottomContainer={ - - } - key="dp-1" - /> - - - - - - - - - - - - } - bottomContainer={ - - } - key="dp-2" - /> - - } - bottomContainer={ - - } - key="dp-3" - /> - - - ); -}; diff --git a/src/ui/lib/components/WorkloadDetails/index.tsx b/src/ui/lib/components/WorkloadDetails/index.tsx deleted file mode 100644 index 702f16ad6..000000000 --- a/src/ui/lib/components/WorkloadDetails/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { Component as WorkloadDetails } from './WorkloadDetails.component'; diff --git a/src/ui/lib/components/WorkloadMetrics/WorkloadMetricSummary.interfaces.tsx b/src/ui/lib/components/WorkloadMetrics/WorkloadMetricSummary.interfaces.tsx deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/ui/lib/components/WorkloadMetrics/WorkloadMetrics.component.tsx b/src/ui/lib/components/WorkloadMetrics/WorkloadMetrics.component.tsx deleted file mode 100644 index e7e632ca4..000000000 --- a/src/ui/lib/components/WorkloadMetrics/WorkloadMetrics.component.tsx +++ /dev/null @@ -1,147 +0,0 @@ -'use client'; -import { Box } from '@mui/material'; -import { useSelector } from 'react-redux'; - -import { DashedLine } from '../../components/Charts/DashedLine'; -import { - DistributionPercentiles, - PercentileItem, -} from '../../components/DistributionPercentiles'; -import { MeanMetricSummary } from '../../components/MeanMetricSummary'; -import { - selectInterpolatedMetrics, - selectMetricsDetailsLineData, - useGetBenchmarksQuery, -} from '../../store/slices/benchmarks'; -import { selectSloState } from '../../store/slices/slo/slo.selectors'; -import { formatNumber } from '../../utils/helpers'; -import { BlockHeader } from '../BlockHeader'; -import { GraphTitle } from '../GraphTitle'; -import { MetricsContainer } from '../MetricsContainer'; -import { GraphsWrapper } from './WorkloadMetrics.styles'; - -export const columnContent = ( - rpsValue: number, - percentiles: PercentileItem[], - units: string -) => ; - -export const leftColumn = (rpsValue: number, value: number, units: string) => ( - -); - -export const leftColumn3 = (rpsValue: number, value: number, units: string) => ( - -); - -export const Component = () => { - const { data } = useGetBenchmarksQuery(); - const { ttft, itl, timePerRequest, throughput } = useSelector( - selectMetricsDetailsLineData - ); - const { currentRequestRate } = useSelector(selectSloState); - const formattedRequestRate = formatNumber(currentRequestRate); - const { - ttft: ttftAtRPS, - itl: itlAtRPS, - timePerRequest: timePerRequestAtRPS, - throughput: throughputAtRPS, - } = useSelector(selectInterpolatedMetrics); - - const minX = Math.floor(Math.min(...(data?.map((bm) => bm.requestsPerSecond) || []))); - if ((data?.length ?? 0) <= 1) { - return <>; - } - return ( - <> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ); -}; diff --git a/src/ui/lib/components/WorkloadMetrics/WorkloadMetrics.styles.tsx b/src/ui/lib/components/WorkloadMetrics/WorkloadMetrics.styles.tsx deleted file mode 100644 index 2e59c0f5e..000000000 --- a/src/ui/lib/components/WorkloadMetrics/WorkloadMetrics.styles.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import { styled } from '@mui/material'; - -export const GraphsWrapper = styled('div')({ - width: '540px', - height: '288px', -}); diff --git a/src/ui/lib/components/WorkloadMetrics/index.tsx b/src/ui/lib/components/WorkloadMetrics/index.tsx deleted file mode 100644 index 611578ba3..000000000 --- a/src/ui/lib/components/WorkloadMetrics/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { Component as WorkloadMetrics } from './WorkloadMetrics.component'; diff --git a/src/ui/lib/hooks/useColor.ts b/src/ui/lib/hooks/useColor.ts deleted file mode 100644 index 28c5df776..000000000 --- a/src/ui/lib/hooks/useColor.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useTheme } from '@mui/material'; - -import { LineColor } from '@/lib/components/Charts/MetricLine'; - -export const useColor = (colorType: LineColor | undefined) => { - const theme = useTheme(); - switch (colorType) { - case LineColor.Primary: - return theme.palette.primary.main; - case LineColor.Secondary: - return theme.palette.secondary.main; - case LineColor.Tertiary: - return theme.palette.tertiary.main; - case LineColor.Quarternary: - return theme.palette.quarternary.main; - default: - return theme.palette.surface.onSurfaceAccent; - } -}; diff --git a/src/ui/lib/layouts/FullPageWithHeaderAndFooterLayout.tsx b/src/ui/lib/layouts/FullPageWithHeaderAndFooterLayout.tsx deleted file mode 100644 index 5c9e3c9de..000000000 --- a/src/ui/lib/layouts/FullPageWithHeaderAndFooterLayout.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Box, BoxProps } from '@mui/material'; -import { FC, ReactNode } from 'react'; - -export interface Props extends BoxProps { - body: ReactNode; - footer: ReactNode; - header: ReactNode; -} - -export const FullPageWithHeaderAndFooterLayout: FC = ({ - body, - footer, - header, - ...rest -}) => { - return ( - - {header} - {body} - {footer} - - ); -}; diff --git a/src/ui/lib/layouts/helpers/ContentCenterer.tsx b/src/ui/lib/layouts/helpers/ContentCenterer.tsx deleted file mode 100644 index 3cb703b76..000000000 --- a/src/ui/lib/layouts/helpers/ContentCenterer.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { ReactNode } from 'react'; - -import { useCurrentBreakpoint } from './useCurrentBreakpoint'; - -type HasChildren = { - children: ReactNode; -}; - -/** - * Helper function that returns appropriate padding based on breakpoint. - * - * @param breakpoint - The current MUI breakpoint name - * @returns Padding value as a CSS string - */ -const getPaddingForBreakpoint = (breakpoint: string) => - breakpoint === 'xs' ? '16px' : '32px'; - -/** - * Component that centers content with responsive padding and max-width constraints. - * - * Automatically adjusts padding and max-width based on the current screen size - * using MUI breakpoints for optimal display across devices. - * - * @param children - React nodes to be centered and constrained - */ -export const ContentCenterer = ({ children }: HasChildren) => { - const breakpoint = useCurrentBreakpoint(); - const padding = getPaddingForBreakpoint(breakpoint); - const maxWidth = breakpoint === 'sm' ? '600px' : '1440px'; - return ( -
- {children} -
- ); -}; diff --git a/src/ui/lib/layouts/helpers/useCurrentBreakpoint.ts b/src/ui/lib/layouts/helpers/useCurrentBreakpoint.ts deleted file mode 100644 index 1bb79f996..000000000 --- a/src/ui/lib/layouts/helpers/useCurrentBreakpoint.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { useMediaQuery, useTheme } from '@mui/material'; - -/** - * Custom hook that returns the current MUI breakpoint based on screen width. - * - * Uses Material-UI's breakpoint system to determine which breakpoint matches - * the current viewport size. - * - * @returns {'xs' | 'sm' | 'md' | 'lg' | 'xl'} The current breakpoint name - */ -export function useCurrentBreakpoint() { - const theme = useTheme(); - const isXs = useMediaQuery(theme.breakpoints.only('xs')); - const isSm = useMediaQuery(theme.breakpoints.only('sm')); - const isMd = useMediaQuery(theme.breakpoints.only('md')); - const isLg = useMediaQuery(theme.breakpoints.only('lg')); - const isXl = useMediaQuery(theme.breakpoints.only('xl')); - - if (isXs) { - return 'xs'; - } else if (isSm) { - return 'sm'; - } else if (isMd) { - return 'md'; - } else if (isLg) { - return 'lg'; - } else if (isXl) { - return 'xl'; - } - return 'xs'; -} diff --git a/src/ui/lib/store/benchmarksWindowData.ts b/src/ui/lib/store/benchmarksWindowData.ts deleted file mode 100644 index 87faf7bc3..000000000 --- a/src/ui/lib/store/benchmarksWindowData.ts +++ /dev/null @@ -1,1712 +0,0 @@ -export const benchmarksScript = `window.benchmarks = [ - { - requestsPerSecond: 11.411616848282272, - itl: { - mean: 8.758024845683707, - median: 8.788176945277623, - mode: 7.119315011160714, - variance: 0.3289263782653722, - stdDev: 0.5735210355909992, - min: 7.119315011160714, - max: 10.9208311353411, - count: 141, - totalSum: 1234.8815032414027, - percentiles: { - p001: 7.119315011160714, - p01: 7.164444242204938, - p05: 7.513999938964844, - p10: 8.169140134538923, - p25: 8.586951664515905, - p50: 8.788176945277623, - p75: 9.003571101597377, - p90: 9.308576583862305, - p95: 9.504761014665876, - p99: 10.393142700195312, - p999: 10.9208311353411, - }, - percentileRows: [ - { - percentile: 'p50', - value: 8.788176945277623, - }, - { - percentile: 'p90', - value: 9.308576583862305, - }, - { - percentile: 'p95', - value: 9.504761014665876, - }, - { - percentile: 'p99', - value: 10.393142700195312, - }, - ], - }, - ttft: { - mean: 24.680864726398006, - median: 23.874998092651367, - mode: 22.01700210571289, - variance: 6.960879030702799, - stdDev: 2.6383477842587015, - min: 22.01700210571289, - max: 38.763999938964844, - count: 141, - totalSum: 3480.001926422119, - percentiles: { - p001: 22.01700210571289, - p01: 22.218942642211914, - p05: 22.49598503112793, - p10: 22.723674774169922, - p25: 23.18596839904785, - p50: 23.874998092651367, - p75: 24.981975555419922, - p90: 27.83489227294922, - p95: 30.942916870117188, - p99: 34.74783897399902, - p999: 38.763999938964844, - }, - percentileRows: [ - { - percentile: 'p50', - value: 23.874998092651367, - }, - { - percentile: 'p90', - value: 27.83489227294922, - }, - { - percentile: 'p95', - value: 30.942916870117188, - }, - { - percentile: 'p99', - value: 34.74783897399902, - }, - ], - }, - throughput: { - mean: 91.21200133343346, - median: 111.06031880527459, - mode: 112.25822337606724, - variance: 1131.7836977561178, - stdDev: 33.64199307050814, - min: 0.0, - max: 132.49633560778366, - count: 388, - totalSum: 33659.178494722335, - percentiles: { - p001: 0.0, - p01: 29.332438178359627, - p05: 37.242645687749174, - p10: 39.52416132679985, - p25: 42.258712582994974, - p50: 111.06031880527459, - p75: 114.19908516663037, - p90: 116.31136130445634, - p95: 117.65228611500702, - p99: 122.08714888662495, - p999: 132.49633560778366, - }, - percentileRows: [ - { - percentile: 'p50', - value: 111.06031880527459, - }, - { - percentile: 'p90', - value: 116.31136130445634, - }, - { - percentile: 'p95', - value: 117.65228611500702, - }, - { - percentile: 'p99', - value: 122.08714888662495, - }, - ], - }, - timePerRequest: { - mean: 0.0869351363351159, - median: 0.08605790138244629, - mode: 0.08000683784484863, - variance: 1.7069091574769884e-5, - stdDev: 0.004131475713927153, - min: 0.08000683784484863, - max: 0.10561299324035645, - count: 141, - totalSum: 12.257854223251343, - percentiles: { - p001: 0.08000683784484863, - p01: 0.08143115043640137, - p05: 0.08298420906066895, - p10: 0.08342385292053223, - p25: 0.08434486389160156, - p50: 0.08605790138244629, - p75: 0.08783197402954102, - p90: 0.09138989448547363, - p95: 0.09475302696228027, - p99: 0.10389590263366699, - p999: 0.10561299324035645, - }, - percentileRows: [ - { - percentile: 'p50', - value: 0.08605790138244629, - }, - { - percentile: 'p90', - value: 0.09138989448547363, - }, - { - percentile: 'p95', - value: 0.09475302696228027, - }, - { - percentile: 'p99', - value: 0.10389590263366699, - }, - ], - }, - }, - { - requestsPerSecond: 36.289181300710815, - itl: { - mean: 588.0161376137819, - median: 461.7137227739607, - mode: 323.1611592429025, - variance: 19560.214456505688, - stdDev: 139.85783659311224, - min: 323.1611592429025, - max: 988.006728036063, - count: 256, - totalSum: 150532.13122912816, - percentiles: { - p001: 323.1611592429025, - p01: 388.2312774658203, - p05: 394.99473571777344, - p10: 460.00800813947404, - p25: 460.8048711504255, - p50: 461.7137227739607, - p75: 726.0744231087821, - p90: 726.3181550162179, - p95: 726.4585835593087, - p99: 726.9112723214286, - p999: 988.006728036063, - }, - percentileRows: [ - { - percentile: 'p50', - value: 461.7137227739607, - }, - { - percentile: 'p90', - value: 726.3181550162179, - }, - { - percentile: 'p95', - value: 726.4585835593087, - }, - { - percentile: 'p99', - value: 726.9112723214286, - }, - ], - }, - ttft: { - mean: 2801.9311213865876, - median: 3645.9569931030273, - mode: 120.23282051086426, - variance: 876438.9633642528, - stdDev: 936.1831889989548, - min: 120.23282051086426, - max: 4289.892911911011, - count: 256, - totalSum: 717294.3670749664, - percentiles: { - p001: 120.23282051086426, - p01: 1860.9709739685059, - p05: 1867.4709796905518, - p10: 1874.9330043792725, - p25: 1898.1659412384033, - p50: 3645.9569931030273, - p75: 3683.4659576416016, - p90: 3707.062005996704, - p95: 3714.3311500549316, - p99: 4193.973064422607, - p999: 4289.892911911011, - }, - percentileRows: [ - { - percentile: 'p50', - value: 3645.9569931030273, - }, - { - percentile: 'p90', - value: 3707.062005996704, - }, - { - percentile: 'p95', - value: 3714.3311500549316, - }, - { - percentile: 'p99', - value: 4193.973064422607, - }, - ], - }, - throughput: { - mean: 290.17169579123066, - median: 2.574805445619618, - mode: 1.0106780980195134, - variance: 32683153.434954323, - stdDev: 5716.91817633892, - min: 0.0, - max: 1677721.6, - count: 541, - totalSum: 26954108.473821327, - percentiles: { - p001: 0.0, - p01: 0.0, - p05: 1.0106780980195134, - p10: 1.0106780980195134, - p25: 1.1875075558681243, - p50: 2.574805445619618, - p75: 4.724922214536926, - p90: 7.90451942158339, - p95: 16.513072886113726, - p99: 1795.5068493150684, - p999: 62601.55223880597, - }, - percentileRows: [ - { - percentile: 'p50', - value: 2.574805445619618, - }, - { - percentile: 'p90', - value: 7.90451942158339, - }, - { - percentile: 'p95', - value: 16.513072886113726, - }, - { - percentile: 'p99', - value: 1795.5068493150684, - }, - ], - }, - timePerRequest: { - mean: 6.962754532694817, - median: 6.958127975463867, - mode: 6.888041973114014, - variance: 0.002266230397153679, - stdDev: 0.04760494089013954, - min: 6.888041973114014, - max: 7.051568031311035, - count: 256, - totalSum: 1782.465160369873, - percentiles: { - p001: 6.888041973114014, - p01: 6.888926029205322, - p05: 6.892949104309082, - p10: 6.902682065963745, - p25: 6.92248797416687, - p50: 6.958127975463867, - p75: 6.9972498416900635, - p90: 7.035952091217041, - p95: 7.041622877120972, - p99: 7.051159858703613, - p999: 7.051568031311035, - }, - percentileRows: [ - { - percentile: 'p50', - value: 6.958127975463867, - }, - { - percentile: 'p90', - value: 7.035952091217041, - }, - { - percentile: 'p95', - value: 7.041622877120972, - }, - { - percentile: 'p99', - value: 7.051159858703613, - }, - ], - }, - }, - { - requestsPerSecond: 20.752070927855794, - itl: { - mean: 116.28360712595156, - median: 26.769569941929408, - mode: 10.624987738473076, - variance: 12697.514443947253, - stdDev: 112.68324828450436, - min: 10.624987738473076, - max: 378.4891196659633, - count: 229, - totalSum: 26628.946031842912, - percentiles: { - p001: 10.624987738473076, - p01: 11.029584067208427, - p05: 12.239864894321986, - p10: 12.511866433279854, - p25: 13.14084870474679, - p50: 26.769569941929408, - p75: 254.47828429085868, - p90: 254.67797688075476, - p95: 254.72869191850936, - p99: 340.54568835667203, - p999: 378.4891196659633, - }, - percentileRows: [ - { - percentile: 'p50', - value: 26.769569941929408, - }, - { - percentile: 'p90', - value: 254.67797688075476, - }, - { - percentile: 'p95', - value: 254.72869191850936, - }, - { - percentile: 'p99', - value: 340.54568835667203, - }, - ], - }, - ttft: { - mean: 350.13929725213853, - median: 48.3551025390625, - mode: 23.19192886352539, - variance: 171533.22641308085, - stdDev: 414.1656992232467, - min: 23.19192886352539, - max: 974.7560024261475, - count: 229, - totalSum: 80181.89907073975, - percentiles: { - p001: 23.19192886352539, - p01: 23.784875869750977, - p05: 25.762081146240234, - p10: 27.454376220703125, - p25: 30.905961990356445, - p50: 48.3551025390625, - p75: 924.9362945556641, - p90: 960.2079391479492, - p95: 966.1390781402588, - p99: 974.3149280548096, - p999: 974.7560024261475, - }, - percentileRows: [ - { - percentile: 'p50', - value: 48.3551025390625, - }, - { - percentile: 'p90', - value: 960.2079391479492, - }, - { - percentile: 'p95', - value: 966.1390781402588, - }, - { - percentile: 'p99', - value: 974.3149280548096, - }, - ], - }, - throughput: { - mean: 165.92594702578148, - median: 78.71010358804985, - mode: 2.640067325020095, - variance: 6402491.209634123, - stdDev: 2530.314448766027, - min: 0.0, - max: 1048576.0, - count: 1287, - totalSum: 19225083.512811106, - percentiles: { - p001: 0.0, - p01: 2.640067325020095, - p05: 2.6408868303973385, - p10: 8.261512885765386, - p25: 63.60692133877254, - p50: 78.71010358804985, - p75: 113.60827758064953, - p90: 186.8536552768744, - p95: 244.65142323845077, - p99: 554.5087255420412, - p999: 19878.218009478675, - }, - percentileRows: [ - { - percentile: 'p50', - value: 78.71010358804985, - }, - { - percentile: 'p90', - value: 186.8536552768744, - }, - { - percentile: 'p95', - value: 244.65142323845077, - }, - { - percentile: 'p99', - value: 554.5087255420412, - }, - ], - }, - timePerRequest: { - mean: 1.1796869305023459, - median: 0.22142529487609863, - mode: 0.10968017578125, - variance: 1.3985689524884573, - stdDev: 1.1826110740596238, - min: 0.10968017578125, - max: 2.7613768577575684, - count: 229, - totalSum: 270.14830708503723, - percentiles: { - p001: 0.10968017578125, - p01: 0.11065411567687988, - p05: 0.11456704139709473, - p10: 0.11728477478027344, - p25: 0.12422728538513184, - p50: 0.22142529487609863, - p75: 2.7111761569976807, - p90: 2.748539924621582, - p95: 2.7520828247070312, - p99: 2.7607710361480713, - p999: 2.7613768577575684, - }, - percentileRows: [ - { - percentile: 'p50', - value: 0.22142529487609863, - }, - { - percentile: 'p90', - value: 2.748539924621582, - }, - { - percentile: 'p95', - value: 2.7520828247070312, - }, - { - percentile: 'p99', - value: 2.7607710361480713, - }, - ], - }, - }, - { - requestsPerSecond: 26.81917480361788, - itl: { - mean: 299.7306064613554, - median: 372.7384294782366, - mode: 13.360295976911273, - variance: 43881.168589896006, - stdDev: 209.47832486893722, - min: 13.360295976911273, - max: 646.5137345450265, - count: 278, - totalSum: 83325.1085962568, - percentiles: { - p001: 13.360295976911273, - p01: 14.045170375279017, - p05: 17.420836857387, - p10: 18.262999398367747, - p25: 35.025290080479216, - p50: 372.7384294782366, - p75: 484.5614092690604, - p90: 484.67516899108887, - p95: 646.2434019361224, - p99: 646.4788573128836, - p999: 646.5137345450265, - }, - percentileRows: [ - { - percentile: 'p50', - value: 372.7384294782366, - }, - { - percentile: 'p90', - value: 484.67516899108887, - }, - { - percentile: 'p95', - value: 646.2434019361224, - }, - { - percentile: 'p99', - value: 646.4788573128836, - }, - ], - }, - ttft: { - mean: 603.4488720859555, - median: 323.30799102783203, - mode: 23.794889450073242, - variance: 385351.6075362678, - stdDev: 620.7669510663948, - min: 23.794889450073242, - max: 2183.549165725708, - count: 278, - totalSum: 167758.78643989563, - percentiles: { - p001: 23.794889450073242, - p01: 25.097131729125977, - p05: 28.53107452392578, - p10: 31.769990921020508, - p25: 42.52219200134277, - p50: 323.30799102783203, - p75: 1421.4229583740234, - p90: 1454.333782196045, - p95: 1465.749979019165, - p99: 1481.3649654388428, - p999: 2183.549165725708, - }, - percentileRows: [ - { - percentile: 'p50', - value: 323.30799102783203, - }, - { - percentile: 'p90', - value: 1454.333782196045, - }, - { - percentile: 'p95', - value: 1465.749979019165, - }, - { - percentile: 'p99', - value: 1481.3649654388428, - }, - ], - }, - throughput: { - mean: 214.45692657713144, - median: 59.739410340407346, - mode: 1.5484621717509202, - variance: 10330273.607661681, - stdDev: 3214.0743002708696, - min: 0.0, - max: 1677721.6, - count: 1408, - totalSum: 23048554.08119256, - percentiles: { - p001: 0.0, - p01: 0.0, - p05: 1.5484621717509202, - p10: 1.5484621717509202, - p25: 11.441965016422422, - p50: 59.739410340407346, - p75: 104.92580177115124, - p90: 204.92007035372288, - p95: 328.06445052796244, - p99: 1077.6731757451182, - p999: 27776.847682119205, - }, - percentileRows: [ - { - percentile: 'p50', - value: 59.739410340407346, - }, - { - percentile: 'p90', - value: 204.92007035372288, - }, - { - percentile: 'p95', - value: 328.06445052796244, - }, - { - percentile: 'p99', - value: 1077.6731757451182, - }, - ], - }, - timePerRequest: { - mean: 2.727286984594606, - median: 2.9081506729125977, - mode: 0.12541699409484863, - variance: 3.887494791582503, - stdDev: 1.9716730945018504, - min: 0.12541699409484863, - max: 4.927099943161011, - count: 278, - totalSum: 758.1857817173004, - percentiles: { - p001: 0.12541699409484863, - p01: 0.12821292877197266, - p05: 0.15644598007202148, - p10: 0.1615278720855713, - p25: 0.2925078868865967, - p50: 2.9081506729125977, - p75: 4.833041191101074, - p90: 4.866931915283203, - p95: 4.889725923538208, - p99: 4.91511082649231, - p999: 4.927099943161011, - }, - percentileRows: [ - { - percentile: 'p50', - value: 2.9081506729125977, - }, - { - percentile: 'p90', - value: 4.866931915283203, - }, - { - percentile: 'p95', - value: 4.889725923538208, - }, - { - percentile: 'p99', - value: 4.91511082649231, - }, - ], - }, - }, - { - requestsPerSecond: 26.823988819498975, - itl: { - mean: 683.8011571339198, - median: 742.2689029148647, - mode: 317.1694278717041, - variance: 28604.497606927893, - stdDev: 169.12864218377646, - min: 317.1694278717041, - max: 1093.381404876709, - count: 282, - totalSum: 192831.9263117654, - percentiles: { - p001: 317.1694278717041, - p01: 321.53899329049244, - p05: 339.3098626817976, - p10: 382.89002009800504, - p25: 576.0242598397391, - p50: 742.2689029148647, - p75: 835.7884543282645, - p90: 835.8725479670933, - p95: 835.9301771436419, - p99: 835.9494209289551, - p999: 1093.381404876709, - }, - percentileRows: [ - { - percentile: 'p50', - value: 742.2689029148647, - }, - { - percentile: 'p90', - value: 835.8725479670933, - }, - { - percentile: 'p95', - value: 835.9301771436419, - }, - { - percentile: 'p99', - value: 835.9494209289551, - }, - ], - }, - ttft: { - mean: 1175.8291366252492, - median: 1099.5359420776367, - mode: 31.527996063232422, - variance: 656345.7486101, - stdDev: 810.1516824706963, - min: 31.527996063232422, - max: 3620.6698417663574, - count: 282, - totalSum: 331583.8165283203, - percentiles: { - p001: 31.527996063232422, - p01: 45.86386680603027, - p05: 83.20093154907227, - p10: 158.12087059020996, - p25: 363.6949062347412, - p50: 1099.5359420776367, - p75: 1955.5552005767822, - p90: 2000.9040832519531, - p95: 2015.0668621063232, - p99: 2435.93692779541, - p999: 3620.6698417663574, - }, - percentileRows: [ - { - percentile: 'p50', - value: 1099.5359420776367, - }, - { - percentile: 'p90', - value: 2000.9040832519531, - }, - { - percentile: 'p95', - value: 2015.0668621063232, - }, - { - percentile: 'p99', - value: 2435.93692779541, - }, - ], - }, - throughput: { - mean: 214.4967900282631, - median: 7.5584893487808, - mode: 0.9142165629474438, - variance: 14926330.042152546, - stdDev: 3863.4608891708153, - min: 0.0, - max: 838860.8, - count: 888, - totalSum: 21536027.789829955, - percentiles: { - p001: 0.0, - p01: 0.0, - p05: 0.9142165629474438, - p10: 0.9142165629474438, - p25: 3.153194765204003, - p50: 7.5584893487808, - p75: 23.973067975925787, - p90: 67.82180683343304, - p95: 126.88864014521252, - p99: 1646.116169544741, - p999: 39568.90566037736, - }, - percentileRows: [ - { - percentile: 'p50', - value: 7.5584893487808, - }, - { - percentile: 'p90', - value: 67.82180683343304, - }, - { - percentile: 'p95', - value: 126.88864014521252, - }, - { - percentile: 'p99', - value: 1646.116169544741, - }, - ], - }, - timePerRequest: { - mean: 5.992494348938584, - median: 6.383468866348267, - mode: 2.272388219833374, - variance: 3.362285611082358, - stdDev: 1.8336536235293617, - min: 2.272388219833374, - max: 7.87853217124939, - count: 282, - totalSum: 1689.8834064006805, - percentiles: { - p001: 2.272388219833374, - p01: 2.36775279045105, - p05: 2.9363210201263428, - p10: 3.3975088596343994, - p25: 4.363567113876343, - p50: 6.383468866348267, - p75: 7.805588245391846, - p90: 7.848597049713135, - p95: 7.86446475982666, - p99: 7.874046802520752, - p999: 7.87853217124939, - }, - percentileRows: [ - { - percentile: 'p50', - value: 6.383468866348267, - }, - { - percentile: 'p90', - value: 7.848597049713135, - }, - { - percentile: 'p95', - value: 7.86446475982666, - }, - { - percentile: 'p99', - value: 7.874046802520752, - }, - ], - }, - }, - { - requestsPerSecond: 24.50047903792646, - itl: { - mean: 742.9258901891964, - median: 773.0941431862967, - mode: 538.750410079956, - variance: 5888.534815943889, - stdDev: 76.73678919490891, - min: 538.750410079956, - max: 1112.7384049551827, - count: 256, - totalSum: 190189.02788843427, - percentiles: { - p001: 538.750410079956, - p01: 559.9275997706821, - p05: 622.4285534449986, - p10: 651.3757365090506, - p25: 691.4628573826382, - p50: 773.0941431862967, - p75: 803.8818495614188, - p90: 804.060867854527, - p95: 804.1924408503941, - p99: 804.2235374450684, - p999: 1112.7384049551827, - }, - percentileRows: [ - { - percentile: 'p50', - value: 773.0941431862967, - }, - { - percentile: 'p90', - value: 804.060867854527, - }, - { - percentile: 'p95', - value: 804.1924408503941, - }, - { - percentile: 'p99', - value: 804.2235374450684, - }, - ], - }, - ttft: { - mean: 1639.041354879737, - median: 2199.6800899505615, - mode: 40.383100509643555, - variance: 769961.5680314268, - stdDev: 877.4745398194906, - min: 40.383100509643555, - max: 3934.627056121826, - count: 256, - totalSum: 419594.58684921265, - percentiles: { - p001: 40.383100509643555, - p01: 46.3411808013916, - p05: 128.04388999938965, - p10: 259.2899799346924, - p25: 663.4221076965332, - p50: 2199.6800899505615, - p75: 2240.969181060791, - p90: 2276.355028152466, - p95: 2569.640874862671, - p99: 2960.084915161133, - p999: 3934.627056121826, - }, - percentileRows: [ - { - percentile: 'p50', - value: 2199.6800899505615, - }, - { - percentile: 'p90', - value: 2276.355028152466, - }, - { - percentile: 'p95', - value: 2569.640874862671, - }, - { - percentile: 'p99', - value: 2960.084915161133, - }, - ], - }, - throughput: { - mean: 195.90812730716976, - median: 5.651687770251424, - mode: 0.8974143971723011, - variance: 16305893.758862041, - stdDev: 4038.0556904111713, - min: 0.0, - max: 1048576.0, - count: 718, - totalSum: 25179910.958649173, - percentiles: { - p001: 0.0, - p01: 0.0, - p05: 0.8974143971723011, - p10: 0.8974143971723011, - p25: 1.3957095523970422, - p50: 5.651687770251424, - p75: 13.66877299553858, - p90: 32.61435580818488, - p95: 59.516467299533154, - p99: 990.1567516525024, - p999: 40136.88038277512, - }, - percentileRows: [ - { - percentile: 'p50', - value: 5.651687770251424, - }, - { - percentile: 'p90', - value: 32.61435580818488, - }, - { - percentile: 'p95', - value: 59.516467299533154, - }, - { - percentile: 'p99', - value: 990.1567516525024, - }, - ], - }, - timePerRequest: { - mean: 6.883434834890068, - median: 7.825762987136841, - mode: 4.416188955307007, - variance: 1.3703848800474456, - stdDev: 1.1706343921342162, - min: 4.416188955307007, - max: 7.9228410720825195, - count: 256, - totalSum: 1762.1593177318573, - percentiles: { - p001: 4.416188955307007, - p01: 4.504012584686279, - p05: 4.920926094055176, - p10: 5.141816139221191, - p25: 5.672410011291504, - p50: 7.825762987136841, - p75: 7.86903715133667, - p90: 7.897527694702148, - p95: 7.910752058029175, - p99: 7.920928716659546, - p999: 7.9228410720825195, - }, - percentileRows: [ - { - percentile: 'p50', - value: 7.825762987136841, - }, - { - percentile: 'p90', - value: 7.897527694702148, - }, - { - percentile: 'p95', - value: 7.910752058029175, - }, - { - percentile: 'p99', - value: 7.920928716659546, - }, - ], - }, - }, - { - requestsPerSecond: 25.617829792196602, - itl: { - mean: 663.3098317044122, - median: 613.7458937508719, - mode: 440.9824098859514, - variance: 10479.9469011006, - stdDev: 102.37161179301907, - min: 440.9824098859514, - max: 1060.6839997427803, - count: 256, - totalSum: 169807.31691632952, - percentiles: { - p001: 440.9824098859514, - p01: 440.9982817513602, - p05: 442.1650000980922, - p10: 534.6532889774868, - p25: 612.1257373264858, - p50: 613.7458937508719, - p75: 755.2382605416434, - p90: 755.9503146580288, - p95: 756.0351576123919, - p99: 786.0629899161203, - p999: 1060.6839997427803, - }, - percentileRows: [ - { - percentile: 'p50', - value: 613.7458937508719, - }, - { - percentile: 'p90', - value: 755.9503146580288, - }, - { - percentile: 'p95', - value: 756.0351576123919, - }, - { - percentile: 'p99', - value: 786.0629899161203, - }, - ], - }, - ttft: { - mean: 1987.0930286124349, - median: 2171.497106552124, - mode: 26.77607536315918, - variance: 755024.7838922634, - stdDev: 868.9216212595146, - min: 26.77607536315918, - max: 4371.719121932983, - count: 256, - totalSum: 508695.8153247833, - percentiles: { - p001: 26.77607536315918, - p01: 55.07302284240723, - p05: 291.4888858795166, - p10: 515.1617527008057, - p25: 1566.1020278930664, - p50: 2171.497106552124, - p75: 2225.597858428955, - p90: 3119.4918155670166, - p95: 3129.302978515625, - p99: 4363.926887512207, - p999: 4371.719121932983, - }, - percentileRows: [ - { - percentile: 'p50', - value: 2171.497106552124, - }, - { - percentile: 'p90', - value: 3119.4918155670166, - }, - { - percentile: 'p95', - value: 3129.302978515625, - }, - { - percentile: 'p99', - value: 4363.926887512207, - }, - ], - }, - throughput: { - mean: 204.84256868994706, - median: 1.3254838186715343, - mode: 0.9418142869653279, - variance: 13137897.553754935, - stdDev: 3624.623780995061, - min: 0.0, - max: 1677721.6, - count: 808, - totalSum: 26909147.73473306, - percentiles: { - p001: 0.0, - p01: 0.0, - p05: 0.9418142869653279, - p10: 0.9418142869653279, - p25: 1.2725896353660826, - p50: 1.3254838186715343, - p75: 8.018996417141132, - p90: 20.67656874682652, - p95: 52.4720894738159, - p99: 2868.8809849521203, - p999: 36157.793103448275, - }, - percentileRows: [ - { - percentile: 'p50', - value: 1.3254838186715343, - }, - { - percentile: 'p90', - value: 20.67656874682652, - }, - { - percentile: 'p95', - value: 52.4720894738159, - }, - { - percentile: 'p99', - value: 2868.8809849521203, - }, - ], - }, - timePerRequest: { - mean: 6.655263062566519, - median: 7.432342052459717, - mode: 3.603327989578247, - variance: 1.427610769055824, - stdDev: 1.194826669042763, - min: 3.603327989578247, - max: 7.537046670913696, - count: 256, - totalSum: 1703.7473440170288, - percentiles: { - p001: 3.603327989578247, - p01: 3.6770501136779785, - p05: 4.052419900894165, - p10: 4.532166004180908, - p25: 5.912662982940674, - p50: 7.432342052459717, - p75: 7.480893135070801, - p90: 7.51776123046875, - p95: 7.526960849761963, - p99: 7.536363124847412, - p999: 7.537046670913696, - }, - percentileRows: [ - { - percentile: 'p50', - value: 7.432342052459717, - }, - { - percentile: 'p90', - value: 7.51776123046875, - }, - { - percentile: 'p95', - value: 7.526960849761963, - }, - { - percentile: 'p99', - value: 7.536363124847412, - }, - ], - }, - }, - { - requestsPerSecond: 37.02892550982192, - itl: { - mean: 606.4144710877113, - median: 543.5235500335693, - mode: 331.6155501774379, - variance: 9907.596850846778, - stdDev: 99.53691200176334, - min: 331.6155501774379, - max: 970.1211452484131, - count: 256, - totalSum: 155242.10459845408, - percentiles: { - p001: 331.6155501774379, - p01: 401.9838741847447, - p05: 471.85257502964566, - p10: 482.9780033656529, - p25: 542.1572753361294, - p50: 543.5235500335693, - p75: 707.3319980076382, - p90: 708.0604348863874, - p95: 708.2712990897043, - p99: 708.6352961403983, - p999: 970.1211452484131, - }, - percentileRows: [ - { - percentile: 'p50', - value: 543.5235500335693, - }, - { - percentile: 'p90', - value: 708.0604348863874, - }, - { - percentile: 'p95', - value: 708.2712990897043, - }, - { - percentile: 'p99', - value: 708.6352961403983, - }, - ], - }, - ttft: { - mean: 1941.031264141202, - median: 1882.4608325958252, - mode: 95.6277847290039, - variance: 475070.5414439769, - stdDev: 689.2536118468854, - min: 95.6277847290039, - max: 4049.8838424682617, - count: 256, - totalSum: 496904.0036201477, - percentiles: { - p001: 95.6277847290039, - p01: 381.1471462249756, - p05: 627.6748180389404, - p10: 1059.0367317199707, - p25: 1838.1130695343018, - p50: 1882.4608325958252, - p75: 2040.8010482788086, - p90: 2977.8239727020264, - p95: 2986.7701530456543, - p99: 3983.0429553985596, - p999: 4049.8838424682617, - }, - percentileRows: [ - { - percentile: 'p50', - value: 1882.4608325958252, - }, - { - percentile: 'p90', - value: 2977.8239727020264, - }, - { - percentile: 'p95', - value: 2986.7701530456543, - }, - { - percentile: 'p99', - value: 3983.0429553985596, - }, - ], - }, - throughput: { - mean: 296.0867598383026, - median: 2.8321597670693794, - mode: 1.0269062248433556, - variance: 26077653.461617615, - stdDev: 5106.628384914808, - min: 0.0, - max: 838860.8, - count: 659, - totalSum: 24515718.391140904, - percentiles: { - p001: 0.0, - p01: 0.0, - p05: 1.0269062248433556, - p10: 1.0269062248433556, - p25: 1.155029909085852, - p50: 2.8321597670693794, - p75: 6.789239657033897, - p90: 12.755506761996577, - p95: 21.059231700030626, - p99: 4969.554502369669, - p999: 56679.78378378379, - }, - percentileRows: [ - { - percentile: 'p50', - value: 2.8321597670693794, - }, - { - percentile: 'p90', - value: 12.755506761996577, - }, - { - percentile: 'p95', - value: 21.059231700030626, - }, - { - percentile: 'p99', - value: 4969.554502369669, - }, - ], - }, - timePerRequest: { - mean: 6.242897774092853, - median: 6.808126211166382, - mode: 3.6642260551452637, - variance: 0.919577384180231, - stdDev: 0.958945975631699, - min: 3.6642260551452637, - max: 6.912218809127808, - count: 256, - totalSum: 1598.1818301677704, - percentiles: { - p001: 3.6642260551452637, - p01: 3.728823661804199, - p05: 4.065090894699097, - p10: 4.494028091430664, - p25: 5.758455991744995, - p50: 6.808126211166382, - p75: 6.852805137634277, - p90: 6.882004976272583, - p95: 6.897234916687012, - p99: 6.907586097717285, - p999: 6.912218809127808, - }, - percentileRows: [ - { - percentile: 'p50', - value: 6.808126211166382, - }, - { - percentile: 'p90', - value: 6.882004976272583, - }, - { - percentile: 'p95', - value: 6.897234916687012, - }, - { - percentile: 'p99', - value: 6.907586097717285, - }, - ], - }, - }, - { - requestsPerSecond: 37.29183354201869, - itl: { - mean: 603.3237551205925, - median: 528.1183038439069, - mode: 400.96027510506764, - variance: 12393.495352536762, - stdDev: 111.32607669605878, - min: 400.96027510506764, - max: 963.4451525551932, - count: 256, - totalSum: 154450.8813108717, - percentiles: { - p001: 400.96027510506764, - p01: 409.7368376595633, - p05: 410.0832939147949, - p10: 477.33085496085033, - p25: 527.9027053288052, - p50: 528.1183038439069, - p75: 722.0331260136196, - p90: 722.1321378435407, - p95: 722.210134778704, - p99: 722.3572731018066, - p999: 963.4451525551932, - }, - percentileRows: [ - { - percentile: 'p50', - value: 528.1183038439069, - }, - { - percentile: 'p90', - value: 722.1321378435407, - }, - { - percentile: 'p95', - value: 722.210134778704, - }, - { - percentile: 'p99', - value: 722.3572731018066, - }, - ], - }, - ttft: { - mean: 2091.1083230748773, - median: 1747.6298809051514, - mode: 90.54684638977051, - variance: 479250.36269232794, - stdDev: 692.2791075081841, - min: 90.54684638977051, - max: 3954.521894454956, - count: 256, - totalSum: 535323.7307071686, - percentiles: { - p001: 90.54684638977051, - p01: 905.7919979095459, - p05: 1236.3860607147217, - p10: 1478.6958694458008, - p25: 1703.301191329956, - p50: 1747.6298809051514, - p75: 2842.387914657593, - p90: 3039.8709774017334, - p95: 3047.684907913208, - p99: 3951.2219429016113, - p999: 3954.521894454956, - }, - percentileRows: [ - { - percentile: 'p50', - value: 1747.6298809051514, - }, - { - percentile: 'p90', - value: 3039.8709774017334, - }, - { - percentile: 'p95', - value: 3047.684907913208, - }, - { - percentile: 'p99', - value: 3951.2219429016113, - }, - ], - }, - throughput: { - mean: 298.188997111376, - median: 3.797001003045347, - mode: 1.0358592736273142, - variance: 19142664.16642712, - stdDev: 4375.2330413850095, - min: 0.0, - max: 1398101.3333333333, - count: 783, - totalSum: 26051541.418045178, - percentiles: { - p001: 0.0, - p01: 0.0, - p05: 1.0358592736273142, - p10: 1.0358592736273142, - p25: 1.3815590063114291, - p50: 3.797001003045347, - p75: 5.743851552603649, - p90: 11.806858966960643, - p95: 24.753772699641765, - p99: 7781.640074211503, - p999: 43240.24742268041, - }, - percentileRows: [ - { - percentile: 'p50', - value: 3.797001003045347, - }, - { - percentile: 'p90', - value: 11.806858966960643, - }, - { - percentile: 'p95', - value: 24.753772699641765, - }, - { - percentile: 'p99', - value: 7781.640074211503, - }, - ], - }, - timePerRequest: { - mean: 6.360964580439031, - median: 6.761261701583862, - mode: 4.238183259963989, - variance: 0.5511043357306581, - stdDev: 0.7423640183431967, - min: 4.238183259963989, - max: 6.863919734954834, - count: 256, - totalSum: 1628.406932592392, - percentiles: { - p001: 4.238183259963989, - p01: 4.295440912246704, - p05: 4.5983030796051025, - p10: 4.984205961227417, - p25: 6.1305251121521, - p50: 6.761261701583862, - p75: 6.79938006401062, - p90: 6.837599039077759, - p95: 6.842914819717407, - p99: 6.856215000152588, - p999: 6.863919734954834, - }, - percentileRows: [ - { - percentile: 'p50', - value: 6.761261701583862, - }, - { - percentile: 'p90', - value: 6.837599039077759, - }, - { - percentile: 'p95', - value: 6.842914819717407, - }, - { - percentile: 'p99', - value: 6.856215000152588, - }, - ], - }, - }, - { - requestsPerSecond: 37.45318312972309, - itl: { - mean: 600.7204526769262, - median: 626.2100083487375, - mode: 398.7384523664202, - variance: 19496.451141682686, - stdDev: 139.62969290835917, - min: 398.7384523664202, - max: 876.9458702632359, - count: 256, - totalSum: 153784.43588529312, - percentiles: { - p001: 398.7384523664202, - p01: 398.79986218043734, - p05: 465.77743121555875, - p10: 465.8282824925014, - p25: 465.9903049468994, - p50: 626.2100083487375, - p75: 626.3504368918283, - p90: 876.4010156903948, - p95: 876.5457017081125, - p99: 876.6791820526123, - p999: 876.9458702632359, - }, - percentileRows: [ - { - percentile: 'p50', - value: 626.2100083487375, - }, - { - percentile: 'p90', - value: 876.4010156903948, - }, - { - percentile: 'p95', - value: 876.5457017081125, - }, - { - percentile: 'p99', - value: 876.6791820526123, - }, - ], - }, - ttft: { - mean: 2270.3185863792896, - median: 2333.8708877563477, - mode: 624.4189739227295, - variance: 689884.3929942232, - stdDev: 830.5927961367249, - min: 624.4189739227295, - max: 4022.5632190704346, - count: 256, - totalSum: 581201.5581130981, - percentiles: { - p001: 624.4189739227295, - p01: 627.3941993713379, - p05: 636.2800598144531, - p10: 646.9879150390625, - p25: 2297.8010177612305, - p50: 2333.8708877563477, - p75: 2491.302967071533, - p90: 3417.022943496704, - p95: 3426.0239601135254, - p99: 3947.2179412841797, - p999: 4022.5632190704346, - }, - percentileRows: [ - { - percentile: 'p50', - value: 2333.8708877563477, - }, - { - percentile: 'p90', - value: 3417.022943496704, - }, - { - percentile: 'p95', - value: 3426.0239601135254, - }, - { - percentile: 'p99', - value: 3947.2179412841797, - }, - ], - }, - throughput: { - mean: 299.4791635411842, - median: 3.030949722688924, - mode: 1.1391714581369894, - variance: 22450634.582333777, - stdDev: 4738.210061018167, - min: 0.0, - max: 1258291.2, - count: 644, - totalSum: 24922318.936492577, - percentiles: { - p001: 0.0, - p01: 0.0, - p05: 0.0, - p10: 1.1391714581369894, - p25: 1.1490267949845356, - p50: 3.030949722688924, - p75: 5.887742339400797, - p90: 8.667779853522244, - p95: 16.13454481108487, - p99: 7358.428070175439, - p999: 49932.19047619047, - }, - percentileRows: [ - { - percentile: 'p50', - value: 3.030949722688924, - }, - { - percentile: 'p90', - value: 8.667779853522244, - }, - { - percentile: 'p95', - value: 16.13454481108487, - }, - { - percentile: 'p99', - value: 7358.428070175439, - }, - ], - }, - timePerRequest: { - mean: 6.510815089568496, - median: 6.725250959396362, - mode: 4.9165239334106445, - variance: 0.2361784686553011, - stdDev: 0.48598196330244714, - min: 4.9165239334106445, - max: 6.835154294967651, - count: 256, - totalSum: 1666.768662929535, - percentiles: { - p001: 4.9165239334106445, - p01: 4.9701738357543945, - p05: 5.246534109115601, - p10: 5.63304591178894, - p25: 6.683944940567017, - p50: 6.725250959396362, - p75: 6.763767957687378, - p90: 6.793000221252441, - p95: 6.804349184036255, - p99: 6.820380926132202, - p999: 6.835154294967651, - }, - percentileRows: [ - { - percentile: 'p50', - value: 6.725250959396362, - }, - { - percentile: 'p90', - value: 6.793000221252441, - }, - { - percentile: 'p95', - value: 6.804349184036255, - }, - { - percentile: 'p99', - value: 6.820380926132202, - }, - ], - }, - }, -];`; diff --git a/src/ui/lib/store/index.ts b/src/ui/lib/store/index.ts deleted file mode 100644 index 39ec0aa4d..000000000 --- a/src/ui/lib/store/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { configureStore } from '@reduxjs/toolkit'; - -import { benchmarksApi, benchmarksReducer } from './slices/benchmarks'; -import metricsReducer from './slices/metrics/metrics.slice'; -import { runInfoApi, infoReducer } from './slices/runInfo'; -import sloReducer from './slices/slo/slo.slice'; -import { workloadDetailsApi, workloadDetailsReducer } from './slices/workloadDetails'; - -export const store = configureStore({ - reducer: { - metrics: metricsReducer, - slo: sloReducer, - runInfo: infoReducer, - [runInfoApi.reducerPath]: runInfoApi.reducer, - benchmarks: benchmarksReducer, - [benchmarksApi.reducerPath]: benchmarksApi.reducer, - workloadDetails: workloadDetailsReducer, - [workloadDetailsApi.reducerPath]: workloadDetailsApi.reducer, - }, - middleware: (getDefaultMiddleware) => - getDefaultMiddleware().concat( - runInfoApi.middleware, - benchmarksApi.middleware, - workloadDetailsApi.middleware - ), -}); - -export type RootState = ReturnType; -export type AppDispatch = typeof store.dispatch; diff --git a/src/ui/lib/store/mockData.ts b/src/ui/lib/store/mockData.ts deleted file mode 100644 index 2fcb4b8f1..000000000 --- a/src/ui/lib/store/mockData.ts +++ /dev/null @@ -1,191 +0,0 @@ -export const runInfo = { - model: { - name: 'Model name', - size: 12345678, - }, - task: 'Task name', - dataset: { - name: 'Dataset name', - }, - timestamp: '1686700800', -}; - -export const workloadDetails = { - prompts: { - samples: ['string'], - tokenDistributions: { - statistics: { - total: 0, - mean: 0, - std: 0, - median: 0, - min: 0, - max: 0, - }, - percentiles: [ - { - percentile: 'p50', - value: 0, - }, - ], - buckets: [ - { - value: 0, - count: 0, - }, - ], - bucketWidth: 0, - }, - }, - generations: { - samples: ['string'], - tokenDistributions: { - statistics: { - total: 0, - mean: 0, - std: 0, - median: 0, - min: 0, - max: 0, - }, - percentiles: [ - { - percentile: 'p50', - value: 0, - }, - ], - buckets: [ - { - value: 0, - count: 0, - }, - ], - bucketWidth: 0, - }, - }, - server: { - target: '128.0.0.1', - protocolType: 'string', - port: '8000', - }, -}; - -export const benchmarks = [ - { - ttft: { - statistics: { - total: 0, - mean: 0, - std: 0, - median: 0, - min: 0, - max: 0, - }, - percentiles: [ - { - percentile: 'p50', - value: 0, - }, - ], - buckets: [ - { - value: 0, - count: 0, - }, - ], - bucketWidth: 0, - }, - itl: { - statistics: { - total: 0, - mean: 0, - std: 0, - median: 0, - min: 0, - max: 0, - }, - percentiles: [ - { - percentile: 'p50', - value: 0, - }, - ], - buckets: [ - { - value: 0, - count: 0, - }, - ], - bucketWidth: 0, - }, - timePerRequest: { - statistics: { - total: 0, - mean: 0, - std: 0, - median: 0, - min: 0, - max: 0, - }, - percentiles: [ - { - percentile: 'p50', - value: 0, - }, - ], - buckets: [ - { - value: 0, - count: 0, - }, - ], - bucketWidth: 0, - }, - requestOverTime: { - statistics: { - total: 0, - mean: 0, - std: 0, - median: 0, - min: 0, - max: 0, - }, - percentiles: [ - { - percentile: 'p50', - value: 0, - }, - ], - buckets: [ - { - value: 0, - count: 0, - }, - ], - bucketWidth: 0, - }, - throughput: { - statistics: { - total: 0, - mean: 0, - std: 0, - median: 0, - min: 0, - max: 0, - }, - percentiles: [ - { - percentile: 'p50', - value: 0, - }, - ], - buckets: [ - { - value: 0, - count: 0, - }, - ], - bucketWidth: 0, - }, - }, -]; diff --git a/src/ui/lib/store/provider.tsx b/src/ui/lib/store/provider.tsx deleted file mode 100644 index 780c71077..000000000 --- a/src/ui/lib/store/provider.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { ReactNode } from 'react'; -import { Provider } from 'react-redux'; - -import { store } from './index'; - -export function ReduxProvider({ children }: { children: ReactNode }) { - return {children}; -} diff --git a/src/ui/lib/store/runInfoWindowData.ts b/src/ui/lib/store/runInfoWindowData.ts deleted file mode 100644 index 43b99909b..000000000 --- a/src/ui/lib/store/runInfoWindowData.ts +++ /dev/null @@ -1,11 +0,0 @@ -export const runInfoScript = `window.runInfo = { - "model": { - "name": "neuralmagic/Qwen2.5-7B-quantized.w8a8", - "size": 0 - }, - "task": "N/A", - "dataset": { - "name": "N/A" - }, - "timestamp": 1744310555.0286171 -};`; diff --git a/src/ui/lib/store/slices/benchmarks/benchmarks.api.ts b/src/ui/lib/store/slices/benchmarks/benchmarks.api.ts deleted file mode 100644 index efddfc394..000000000 --- a/src/ui/lib/store/slices/benchmarks/benchmarks.api.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'; -import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; - -import { Benchmarks, Statistics } from './benchmarks.interfaces'; -import { formatNumber } from '../../../utils/helpers'; -import { defaultPercentile } from '../slo/slo.constants'; -import { setSloData } from '../slo/slo.slice'; - -const USE_MOCK_API = process.env.NEXT_PUBLIC_USE_MOCK_API === 'true'; - -// currently the injector requires 'window.benchmarks = {};' to be present in the html, but benchmarks is expected to be null or an array -const fetchBenchmarks = () => { - let benchmarks = window.benchmarks; - if (!Array.isArray(benchmarks)) { - benchmarks = []; - } - return { data: benchmarks as Benchmarks }; -}; - -const getAverageValueForPercentile = ( - firstMetric: Statistics, - lastMetric: Statistics, - percentile: string -) => { - const firstPercentile = firstMetric?.percentileRows.find( - (p) => p.percentile === percentile - ); - const lastPercentile = lastMetric?.percentileRows.find( - (p) => p.percentile === percentile - ); - return ((firstPercentile?.value ?? 0) + (lastPercentile?.value ?? 0)) / 2; -}; - -const setDefaultSLOs = ( - data: Benchmarks, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - dispatch: ThunkDispatch -) => { - // temporarily set default slo values, long term the backend should set default slos that will not just be the avg at the default percentile - const firstBM = data[0]; - const lastBM = data[data.length - 1]; - - const ttftAvg = getAverageValueForPercentile( - firstBM?.ttft, - lastBM?.ttft, - defaultPercentile - ); - const itlAvg = getAverageValueForPercentile( - firstBM?.itl, - lastBM?.itl, - defaultPercentile - ); - const timePerRequestAvg = getAverageValueForPercentile( - firstBM?.timePerRequest, - lastBM?.timePerRequest, - defaultPercentile - ); - const throughputAvg = getAverageValueForPercentile( - firstBM?.throughput, - lastBM?.throughput, - defaultPercentile - ); - - dispatch( - setSloData({ - currentRequestRate: firstBM?.requestsPerSecond, - current: { - ttft: formatNumber(ttftAvg, 0), - itl: formatNumber(itlAvg, 0), - timePerRequest: formatNumber(timePerRequestAvg, 0), - throughput: formatNumber(throughputAvg, 0), - }, - tasksDefaults: { - ttft: formatNumber(ttftAvg, 0), - itl: formatNumber(itlAvg, 0), - timePerRequest: formatNumber(timePerRequestAvg, 0), - throughput: formatNumber(throughputAvg, 0), - }, - }) - ); -}; - -export const benchmarksApi = createApi({ - reducerPath: 'benchmarksApi', - baseQuery: USE_MOCK_API ? fetchBenchmarks : fetchBaseQuery({ baseUrl: '/api' }), - endpoints: (builder) => ({ - getBenchmarks: builder.query({ - query: () => 'benchmarks', - async onQueryStarted(_, { dispatch, queryFulfilled }) { - try { - const { data } = await queryFulfilled; - setDefaultSLOs(data, dispatch); - } catch (err) { - console.error('Failed to fetch benchmarks:', err); - } - }, - }), - }), -}); - -export const { useGetBenchmarksQuery } = benchmarksApi; diff --git a/src/ui/lib/store/slices/benchmarks/benchmarks.constants.ts b/src/ui/lib/store/slices/benchmarks/benchmarks.constants.ts deleted file mode 100644 index 38bddb740..000000000 --- a/src/ui/lib/store/slices/benchmarks/benchmarks.constants.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Benchmarks, Name } from './benchmarks.interfaces'; - -export const name: Readonly = 'benchmarks'; - -export const initialState: Benchmarks = []; diff --git a/src/ui/lib/store/slices/benchmarks/benchmarks.interfaces.ts b/src/ui/lib/store/slices/benchmarks/benchmarks.interfaces.ts deleted file mode 100644 index 2a5f319eb..000000000 --- a/src/ui/lib/store/slices/benchmarks/benchmarks.interfaces.ts +++ /dev/null @@ -1,32 +0,0 @@ -export type Name = 'benchmarks'; - -export interface Statistics { - total: number; - mean: number; - std: number; - median: number; - min: number; - max: number; - percentileRows: Percentile[]; - percentiles: Record; -} - -export type PercentileValues = 'p50' | 'p90' | 'p95' | 'p99'; - -interface Percentile { - percentile: PercentileValues; - value: number; -} - -export interface BenchmarkMetrics { - ttft: Statistics; - itl: Statistics; - timePerRequest: Statistics; - throughput: Statistics; -} - -export interface Benchmark extends BenchmarkMetrics { - requestsPerSecond: number; -} - -export type Benchmarks = Benchmark[]; diff --git a/src/ui/lib/store/slices/benchmarks/benchmarks.selectors.ts b/src/ui/lib/store/slices/benchmarks/benchmarks.selectors.ts deleted file mode 100644 index 9aa5fd819..000000000 --- a/src/ui/lib/store/slices/benchmarks/benchmarks.selectors.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; - -import { Point } from '@/lib/components/Charts/common/interfaces'; - -import { BenchmarkMetrics, PercentileValues } from './benchmarks.interfaces'; -import { PercentileItem } from '../../../components/DistributionPercentiles'; -import { formatNumber } from '../../../utils/helpers'; -import { createMonotoneSpline } from '../../../utils/interpolation'; -import { RootState } from '../../index'; -import { selectSloState } from '../slo/slo.selectors'; - -export const selectBenchmarks = (state: RootState) => state.benchmarks.data; - -export const selectMetricsSummaryLineData = createSelector( - [selectBenchmarks, selectSloState], - (benchmarks, sloState) => { - const sortedByRPS = benchmarks - ?.slice() - ?.sort((bm1, bm2) => (bm1.requestsPerSecond > bm2.requestsPerSecond ? 1 : -1)); - const selectedPercentile = sloState.enforcedPercentile; - - const lineData: { [K in keyof BenchmarkMetrics]: Point[] } = { - ttft: [], - itl: [], - timePerRequest: [], - throughput: [], - }; - const metrics: (keyof BenchmarkMetrics)[] = [ - 'ttft', - 'itl', - 'timePerRequest', - 'throughput', - ]; - metrics.forEach((metric) => { - const data: Point[] = []; - sortedByRPS?.forEach((benchmark) => { - const percentile = benchmark[metric].percentileRows.find( - (p) => p.percentile === selectedPercentile - ); - data.push({ - x: benchmark.requestsPerSecond, - y: percentile?.value ?? 0, - }); - }); - - lineData[metric] = data; - }); - return lineData; - } -); - -const getDefaultMetricValues = () => ({ - enforcedPercentileValue: 0, - mean: 0, - percentiles: [], -}); - -export const selectInterpolatedMetrics = createSelector( - [selectBenchmarks, selectSloState], - (benchmarks, sloState) => { - const metricData: { - [K in keyof BenchmarkMetrics | 'mean']: { - enforcedPercentileValue: number; - mean: number; - percentiles: PercentileItem[]; - }; - } = { - ttft: getDefaultMetricValues(), - itl: getDefaultMetricValues(), - timePerRequest: getDefaultMetricValues(), - throughput: getDefaultMetricValues(), - mean: getDefaultMetricValues(), - }; - if ((benchmarks?.length || 0) < 2) { - return metricData; - } - const sortedByRPS = benchmarks - ?.slice() - ?.sort((bm1, bm2) => (bm1.requestsPerSecond > bm2.requestsPerSecond ? 1 : -1)); - const requestRates = sortedByRPS?.map((bm) => bm.requestsPerSecond) || []; - const { enforcedPercentile, currentRequestRate } = sloState; - const metrics: (keyof BenchmarkMetrics)[] = [ - 'ttft', - 'itl', - 'timePerRequest', - 'throughput', - ]; - if (!sortedByRPS || sortedByRPS.length === 0) { - return metricData; - } - const invalidRps = - currentRequestRate < sortedByRPS[0].requestsPerSecond || - currentRequestRate > sortedByRPS[sortedByRPS.length - 1].requestsPerSecond; - if (invalidRps) { - return metricData; - } - metrics.forEach((metric) => { - const meanValues = sortedByRPS.map((bm) => bm[metric].mean); - const interpolateMeanAt = createMonotoneSpline(requestRates, meanValues); - const interpolatedMeanValue: number = interpolateMeanAt(currentRequestRate) || 0; - const percentiles: PercentileValues[] = ['p50', 'p90', 'p95', 'p99']; - const valuesByPercentile = percentiles.map((p) => { - const bmValuesAtP = sortedByRPS.map((bm) => { - const result = bm[metric].percentiles[p] || 0; - return result; - }); - const interpolateValueAtP = createMonotoneSpline(requestRates, bmValuesAtP); - const interpolatedValueAtP = formatNumber( - interpolateValueAtP(currentRequestRate) - ); - return { label: p, value: `${interpolatedValueAtP}` } as PercentileItem; - }); - const interpolatedPercentileValue = - Number(valuesByPercentile.find((p) => p.label === enforcedPercentile)?.value) || - 0; - metricData[metric] = { - enforcedPercentileValue: interpolatedPercentileValue, - mean: interpolatedMeanValue, - percentiles: valuesByPercentile, - }; - }); - return metricData; - } -); - -export const selectMetricsDetailsLineData = createSelector( - [selectBenchmarks], - (benchmarks) => { - const sortedByRPS = - benchmarks - ?.slice() - ?.sort((bm1, bm2) => - bm1.requestsPerSecond > bm2.requestsPerSecond ? 1 : -1 - ) || []; - - const lineData: { - [K in keyof BenchmarkMetrics]: { data: Point[]; id: string; solid?: boolean }[]; - } = { - ttft: [], - itl: [], - timePerRequest: [], - throughput: [], - }; - const props: (keyof BenchmarkMetrics)[] = [ - 'ttft', - 'itl', - 'timePerRequest', - 'throughput', - ]; - props.forEach((prop) => { - if (sortedByRPS.length === 0) { - return; - } - const data: { [key: string]: { data: Point[]; id: string; solid?: boolean } } = - {}; - sortedByRPS[0].ttft.percentileRows.forEach((p) => { - data[p.percentile] = { data: [], id: p.percentile }; - }); - data.mean = { data: [], id: 'mean', solid: true }; - sortedByRPS?.forEach((benchmark) => { - const rps = benchmark.requestsPerSecond; - benchmark[prop].percentileRows.forEach((p) => { - data[p.percentile].data.push({ x: rps, y: p.value }); - }); - const mean = benchmark[prop].mean; - data.mean.data.push({ x: rps, y: mean }); - }); - lineData[prop] = Object.keys(data).map((key) => { - return data[key]; - }); - }); - return lineData; - } -); diff --git a/src/ui/lib/store/slices/benchmarks/benchmarks.slice.ts b/src/ui/lib/store/slices/benchmarks/benchmarks.slice.ts deleted file mode 100644 index 1090da3e2..000000000 --- a/src/ui/lib/store/slices/benchmarks/benchmarks.slice.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; - -import { benchmarksApi } from './benchmarks.api'; -import * as Constants from './benchmarks.constants'; -import { Benchmarks } from './benchmarks.interfaces'; - -interface BenchmarksState { - data: Benchmarks | null; -} - -const initialState: BenchmarksState = { - data: null, -}; - -const benchmarksSlice = createSlice({ - name: Constants.name, - initialState, - reducers: { - setBenchmarks: (state, action: PayloadAction) => { - state.data = action.payload; - }, - }, - extraReducers: (builder) => { - builder.addMatcher( - benchmarksApi.endpoints.getBenchmarks.matchFulfilled, - (state, action) => { - state.data = action.payload; - } - ); - }, -}); - -export const { setBenchmarks } = benchmarksSlice.actions; -export default benchmarksSlice.reducer; diff --git a/src/ui/lib/store/slices/benchmarks/index.ts b/src/ui/lib/store/slices/benchmarks/index.ts deleted file mode 100644 index 953b52c8f..000000000 --- a/src/ui/lib/store/slices/benchmarks/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './benchmarks.api'; -export { default as benchmarksReducer } from './benchmarks.slice'; -export * from './benchmarks.selectors'; -export * from './benchmarks.interfaces'; diff --git a/src/ui/lib/store/slices/metrics/metrics.constants.ts b/src/ui/lib/store/slices/metrics/metrics.constants.ts deleted file mode 100644 index d61efac13..000000000 --- a/src/ui/lib/store/slices/metrics/metrics.constants.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { MetricsState, Name } from './metrics.interfaces'; -export const name: Readonly = 'metrics.state'; - -export const initialState: MetricsState = { - currentRequestRate: 0, - timePerRequest: { valuesByRps: {} }, - ttft: { valuesByRps: {} }, - itl: { valuesByRps: {} }, - throughput: { valuesByRps: {} }, -}; diff --git a/src/ui/lib/store/slices/metrics/metrics.interfaces.ts b/src/ui/lib/store/slices/metrics/metrics.interfaces.ts deleted file mode 100644 index bd56018b2..000000000 --- a/src/ui/lib/store/slices/metrics/metrics.interfaces.ts +++ /dev/null @@ -1,13 +0,0 @@ -export type Name = 'metrics.state'; - -export interface MetricsState { - currentRequestRate: number; - timePerRequest: SingleMetricsState; - ttft: SingleMetricsState; - itl: SingleMetricsState; - throughput: SingleMetricsState; -} - -export type SingleMetricsState = { - valuesByRps: Record; -}; diff --git a/src/ui/lib/store/slices/metrics/metrics.selectors.ts b/src/ui/lib/store/slices/metrics/metrics.selectors.ts deleted file mode 100644 index 9aa4d46ac..000000000 --- a/src/ui/lib/store/slices/metrics/metrics.selectors.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { RootState } from '../../index'; - -export const selectMetricsState = (state: RootState) => state.metrics; diff --git a/src/ui/lib/store/slices/metrics/metrics.slice.ts b/src/ui/lib/store/slices/metrics/metrics.slice.ts deleted file mode 100644 index 40f16dc15..000000000 --- a/src/ui/lib/store/slices/metrics/metrics.slice.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; - -import * as Constants from './metrics.constants'; -import { MetricsState } from './metrics.interfaces'; - -const metricsSlice = createSlice({ - name: Constants.name, - initialState: Constants.initialState, - reducers: { - setMetricsData: (state, action: PayloadAction) => { - return { ...state, ...action.payload }; - }, - setSliderRps: (state, action: PayloadAction) => { - state.currentRequestRate = action.payload; - }, - }, -}); - -export const { setMetricsData, setSliderRps } = metricsSlice.actions; -export default metricsSlice.reducer; diff --git a/src/ui/lib/store/slices/runInfo/index.ts b/src/ui/lib/store/slices/runInfo/index.ts deleted file mode 100644 index 5595fface..000000000 --- a/src/ui/lib/store/slices/runInfo/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './runInfo.api'; -export { default as infoReducer } from './runInfo.slice'; -export * from './runInfo.selectors'; -export * from './runInfo.interfaces'; diff --git a/src/ui/lib/store/slices/runInfo/runInfo.api.ts b/src/ui/lib/store/slices/runInfo/runInfo.api.ts deleted file mode 100644 index 158a04fd0..000000000 --- a/src/ui/lib/store/slices/runInfo/runInfo.api.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; - -import { RunInfo } from './runInfo.interfaces'; - -const USE_MOCK_API = process.env.NEXT_PUBLIC_USE_MOCK_API === 'true'; - -const fetchRunInfo = () => { - return { data: window.runInfo as RunInfo }; -}; - -export const runInfoApi = createApi({ - reducerPath: 'runInfoApi', - baseQuery: USE_MOCK_API ? fetchRunInfo : fetchBaseQuery({ baseUrl: '/api' }), - endpoints: (builder) => ({ - getRunInfo: builder.query({ - query: () => 'run-info', - }), - }), -}); - -export const { useGetRunInfoQuery } = runInfoApi; diff --git a/src/ui/lib/store/slices/runInfo/runInfo.constants.ts b/src/ui/lib/store/slices/runInfo/runInfo.constants.ts deleted file mode 100644 index af773759a..000000000 --- a/src/ui/lib/store/slices/runInfo/runInfo.constants.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Name } from './runInfo.interfaces'; - -export const name: Readonly = 'runInfo'; diff --git a/src/ui/lib/store/slices/runInfo/runInfo.interfaces.ts b/src/ui/lib/store/slices/runInfo/runInfo.interfaces.ts deleted file mode 100644 index 6fb8b393f..000000000 --- a/src/ui/lib/store/slices/runInfo/runInfo.interfaces.ts +++ /dev/null @@ -1,13 +0,0 @@ -export type Name = 'runInfo'; - -export interface RunInfo { - model: { - name: string; - size: number; - }; - task: string; - dataset: { - name: string; - }; - timestamp: string; -} diff --git a/src/ui/lib/store/slices/runInfo/runInfo.selectors.ts b/src/ui/lib/store/slices/runInfo/runInfo.selectors.ts deleted file mode 100644 index 1f8338cab..000000000 --- a/src/ui/lib/store/slices/runInfo/runInfo.selectors.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { RootState } from '../../index'; - -export const selectRunInfo = (state: RootState) => state.runInfo.data; diff --git a/src/ui/lib/store/slices/runInfo/runInfo.slice.ts b/src/ui/lib/store/slices/runInfo/runInfo.slice.ts deleted file mode 100644 index 8bb484250..000000000 --- a/src/ui/lib/store/slices/runInfo/runInfo.slice.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; - -import { runInfoApi } from './runInfo.api'; -import * as Constants from './runInfo.constants'; -import { RunInfo } from './runInfo.interfaces'; - -interface RunInfoState { - data: RunInfo | null; -} - -const initialState: RunInfoState = { - data: null, -}; - -const runInfoSlice = createSlice({ - name: Constants.name, - initialState, - reducers: { - setRunInfo: (state, action: PayloadAction) => { - state.data = action.payload; - }, - }, - extraReducers: (builder) => { - builder.addMatcher( - runInfoApi.endpoints.getRunInfo.matchFulfilled, - (state, action) => { - state.data = action.payload; - } - ); - }, -}); - -export const { setRunInfo } = runInfoSlice.actions; -export default runInfoSlice.reducer; diff --git a/src/ui/lib/store/slices/slo/slo.constants.ts b/src/ui/lib/store/slices/slo/slo.constants.ts deleted file mode 100644 index d491b7126..000000000 --- a/src/ui/lib/store/slices/slo/slo.constants.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Name, SloState } from './slo.interfaces'; - -export const name: Readonly = 'slo.state'; - -export const defaultPercentile = 'p90'; - -export const initialState: SloState = { - currentRequestRate: 0, - enforcedPercentile: defaultPercentile, - current: { - timePerRequest: 0, - ttft: 0, - itl: 0, - throughput: 0, - }, - tasksDefaults: { - timePerRequest: 0, - ttft: 0, - itl: 0, - throughput: 0, - }, -}; diff --git a/src/ui/lib/store/slices/slo/slo.interfaces.ts b/src/ui/lib/store/slices/slo/slo.interfaces.ts deleted file mode 100644 index ecbc2f716..000000000 --- a/src/ui/lib/store/slices/slo/slo.interfaces.ts +++ /dev/null @@ -1,18 +0,0 @@ -export type Name = 'slo.state'; - -export interface SloState { - currentRequestRate: number; - enforcedPercentile: string; - current: { - timePerRequest: number; - ttft: number; - itl: number; - throughput: number; - }; - tasksDefaults: { - timePerRequest: number; - ttft: number; - itl: number; - throughput: number; - }; -} diff --git a/src/ui/lib/store/slices/slo/slo.selectors.ts b/src/ui/lib/store/slices/slo/slo.selectors.ts deleted file mode 100644 index 38000830a..000000000 --- a/src/ui/lib/store/slices/slo/slo.selectors.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { RootState } from '../../index'; - -export const selectSloState = (state: RootState) => state.slo; diff --git a/src/ui/lib/store/slices/slo/slo.slice.ts b/src/ui/lib/store/slices/slo/slo.slice.ts deleted file mode 100644 index 5b3b88536..000000000 --- a/src/ui/lib/store/slices/slo/slo.slice.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; - -import * as Constants from './slo.constants'; -import { SloState } from './slo.interfaces'; - -const sloSlice = createSlice({ - name: Constants.name, - initialState: Constants.initialState, - reducers: { - setSloData: (state, action: PayloadAction>) => { - if (action.payload.enforcedPercentile !== undefined) { - state.enforcedPercentile = action.payload.enforcedPercentile; - } - if (action.payload.current) { - state.current = { ...state.current, ...action.payload.current }; - } - if (action.payload.tasksDefaults) { - state.tasksDefaults = { - ...state.tasksDefaults, - ...action.payload.tasksDefaults, - }; - } - if (action.payload.currentRequestRate) { - state.currentRequestRate = action.payload.currentRequestRate; - } - }, - setEnforcedPercentile: (state, action: PayloadAction) => { - state.enforcedPercentile = action.payload; - }, - setCurrentRequestRate: (state, action: PayloadAction) => { - state.currentRequestRate = action.payload; - }, - setSloValue: ( - state, - action: PayloadAction<{ metric: keyof SloState['current']; value: number }> - ) => { - const { metric, value } = action.payload; - if (value >= 0) { - state.current[metric] = value; - } - }, - }, -}); - -export const { setCurrentRequestRate, setEnforcedPercentile, setSloData, setSloValue } = - sloSlice.actions; -export default sloSlice.reducer; diff --git a/src/ui/lib/store/slices/workloadDetails/index.ts b/src/ui/lib/store/slices/workloadDetails/index.ts deleted file mode 100644 index e5cd556bd..000000000 --- a/src/ui/lib/store/slices/workloadDetails/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './workloadDetails.api'; -export { default as workloadDetailsReducer } from './workloadDetails.slice'; -export * from './workloadDetails.selectors'; -export * from './workloadDetails.interfaces'; diff --git a/src/ui/lib/store/slices/workloadDetails/workloadDetails.api.ts b/src/ui/lib/store/slices/workloadDetails/workloadDetails.api.ts deleted file mode 100644 index 386164ee4..000000000 --- a/src/ui/lib/store/slices/workloadDetails/workloadDetails.api.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; - -import { WorkloadDetails } from './workloadDetails.interfaces'; - -const USE_MOCK_API = process.env.NEXT_PUBLIC_USE_MOCK_API === 'true'; - -const fetchWorkloadDetails = () => { - return { data: window.workloadDetails as WorkloadDetails }; -}; - -export const workloadDetailsApi = createApi({ - reducerPath: 'workloadDetailsApi', - baseQuery: USE_MOCK_API ? fetchWorkloadDetails : fetchBaseQuery({ baseUrl: '/api' }), - endpoints: (builder) => ({ - getWorkloadDetails: builder.query({ - query: () => 'workload-details', - }), - }), -}); - -export const { useGetWorkloadDetailsQuery } = workloadDetailsApi; diff --git a/src/ui/lib/store/slices/workloadDetails/workloadDetails.constants.ts b/src/ui/lib/store/slices/workloadDetails/workloadDetails.constants.ts deleted file mode 100644 index e6604add5..000000000 --- a/src/ui/lib/store/slices/workloadDetails/workloadDetails.constants.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Name, WorkloadDetails } from './workloadDetails.interfaces'; -import { PercentileValues } from '../benchmarks/benchmarks.interfaces'; -export const name: Readonly = 'workloadDetails'; - -export const initialState: WorkloadDetails = { - prompts: { - samples: [], - tokenDistributions: { - statistics: { - total: 0, - mean: 0, - std: 0, - median: 0, - min: 0, - max: 0, - percentiles: {} as Record, - percentileRows: [], - }, - buckets: [], - bucketWidth: 0, - }, - }, - generations: { - samples: [], - tokenDistributions: { - statistics: { - total: 0, - mean: 0, - std: 0, - median: 0, - min: 0, - max: 0, - percentiles: {} as Record, - percentileRows: [], - }, - buckets: [], - bucketWidth: 0, - }, - }, - requestsOverTime: { - numBenchmarks: 0, - requestsOverTime: { - statistics: { - total: 0, - mean: 0, - std: 0, - median: 0, - min: 0, - max: 0, - percentiles: {} as Record, - percentileRows: [], - }, - buckets: [], - bucketWidth: 0, - }, - }, - rateType: '', - server: { - target: '', - }, -}; diff --git a/src/ui/lib/store/slices/workloadDetails/workloadDetails.interfaces.ts b/src/ui/lib/store/slices/workloadDetails/workloadDetails.interfaces.ts deleted file mode 100644 index bbe5d7df7..000000000 --- a/src/ui/lib/store/slices/workloadDetails/workloadDetails.interfaces.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Statistics } from '../benchmarks'; - -export type Name = 'workloadDetails'; - -interface Bucket { - value: number; - count: number; -} - -interface Distribution { - statistics: Statistics; - buckets: Bucket[]; - bucketWidth: number; -} - -interface TokenData { - samples: string[]; - tokenDistributions: Distribution; -} - -interface BenchmarkData { - numBenchmarks: number; - requestsOverTime: Distribution; -} - -interface Server { - target: string; -} - -export interface WorkloadDetails { - prompts: TokenData; - generations: TokenData; - requestsOverTime: BenchmarkData; - rateType: string; - server: Server; -} diff --git a/src/ui/lib/store/slices/workloadDetails/workloadDetails.selectors.ts b/src/ui/lib/store/slices/workloadDetails/workloadDetails.selectors.ts deleted file mode 100644 index a3fde606f..000000000 --- a/src/ui/lib/store/slices/workloadDetails/workloadDetails.selectors.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; - -import { formatNumber } from '../../../utils/helpers'; -import { RootState } from '../../index'; - -export const selectWorkloadDetails = (state: RootState) => state.workloadDetails.data; - -export const selectPromptsHistogramBarData = createSelector( - [selectWorkloadDetails], - (workloadDetails) => { - return workloadDetails?.prompts?.tokenDistributions.buckets.map((bucket) => ({ - x: formatNumber(bucket.value), - y: bucket.count, - })); - } -); - -export const selectGenerationsHistogramBarData = createSelector( - [selectWorkloadDetails], - (workloadDetails) => { - return workloadDetails?.generations?.tokenDistributions.buckets.map((bucket) => ({ - x: formatNumber(bucket.value), - y: bucket.count, - })); - } -); - -export const selectPromptsHistogramLineData = createSelector( - [selectWorkloadDetails], - (workloadDetails) => [ - { - x: formatNumber( - workloadDetails?.prompts?.tokenDistributions.statistics.mean ?? 0 - ), - y: 35, - id: 'mean', - }, - { - x: formatNumber( - workloadDetails?.prompts?.tokenDistributions.statistics.median ?? 0 - ), - y: 35, - id: 'median', - }, - ] -); - -export const selectGenerationsHistogramLineData = createSelector( - [selectWorkloadDetails], - (workloadDetails) => [ - { - x: formatNumber( - workloadDetails?.generations?.tokenDistributions.statistics.mean ?? 0 - ), - y: 35, - id: 'mean', - }, - { - x: formatNumber( - workloadDetails?.generations?.tokenDistributions.statistics.median ?? 0 - ), - y: 35, - id: 'median', - }, - ] -); - -export const selectRequestOverTimeBarData = createSelector( - [selectWorkloadDetails], - (workloadDetails) => { - const requestObjs = workloadDetails?.requestsOverTime?.requestsOverTime; - return { - barChartData: requestObjs?.buckets?.map((bucket) => ({ - x: formatNumber(bucket.value), - y: bucket.count, - })), - }; - } -); diff --git a/src/ui/lib/store/slices/workloadDetails/workloadDetails.slice.ts b/src/ui/lib/store/slices/workloadDetails/workloadDetails.slice.ts deleted file mode 100644 index 7d05a0d7d..000000000 --- a/src/ui/lib/store/slices/workloadDetails/workloadDetails.slice.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; - -import { workloadDetailsApi } from './workloadDetails.api'; -import * as Constants from './workloadDetails.constants'; -import { WorkloadDetails } from './workloadDetails.interfaces'; - -interface WorkloadDetailsState { - data: WorkloadDetails | null; -} - -const initialState: WorkloadDetailsState = { - data: null, -}; - -const workloadDetailsSlice = createSlice({ - name: Constants.name, - initialState, - reducers: { - setWorkloadDetails: (state, action: PayloadAction) => { - state.data = action.payload; - }, - }, - extraReducers: (builder) => { - builder.addMatcher( - workloadDetailsApi.endpoints.getWorkloadDetails.matchFulfilled, - (state, action) => { - state.data = action.payload; - } - ); - }, -}); - -export const { setWorkloadDetails } = workloadDetailsSlice.actions; -export default workloadDetailsSlice.reducer; diff --git a/src/ui/lib/store/workloadDetailsWindowData.ts b/src/ui/lib/store/workloadDetailsWindowData.ts deleted file mode 100644 index 634e5eef2..000000000 --- a/src/ui/lib/store/workloadDetailsWindowData.ts +++ /dev/null @@ -1,167 +0,0 @@ -export const workloadDetailsScript = `window.workloadDetails = { - "prompts": { - "samples": [ - "such a sacrifice to her advantage as years of gratitude cannot enough acknowledge. By this time she is actually with them! If such goodness does not make her miserable now, she will never deserve to be happy! What a meeting for her, when she first sees my aunt! We must endeavour to forget all that has passed on either side, said Jane I hope and trust they will yet be happy. His consenting to marry her is a proof, I will believe, that he is come to a right way of thinking. Their mutual affection will steady them; and I flatter myself they will settle so quietly, and live in so rational a manner", - "a reconciliation; and, after a little further resistance on the part of his aunt, her resentment gave way, either to her affection for him, or her curiosity to see how his wife conducted herself; and she condescended to wait on them at Pemberley, in spite of that pollution which its woods had received, not merely from the presence of such a mistress, but the visits of her uncle and aunt from the city. With the Gardiners they were always on the most intimate terms. Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who,", - "struck her, that _she_ was selected from among her sisters as worthy of being the mistress of Hunsford Parsonage, and of assisting to form a quadrille table at Rosings, in the absence of more eligible visitors. The idea soon reached to conviction, as she observed his increasing civilities towards herself, and heard his frequent attempt at a compliment on her wit and vivacity; and though more astonished than gratified herself by this effect of her charms, it was not long before her mother gave her to understand that the probability of their marriage was exceedingly agreeable to _her_. Elizabeth, however, did not choose", - "were comfortable on this subject. Day after day passed away without bringing any other tidings of him than the report which shortly prevailed in Meryton of his coming no more to Netherfield the whole winter; a report which highly incensed Mrs. Bennet, and which she never failed to contradict as a most scandalous falsehood. Even Elizabeth began to fear not that Bingley was indifferent but that his sisters would be successful in keeping him away. Unwilling as she was to admit an idea so destructive to Jane s happiness, and so dishonourable to the stability of her lover, she could not prevent its frequently recurring", - "? cried Elizabeth, brightening up for a moment. Upon my word, said Mrs. Gardiner, I begin to be of your uncle s opinion. It is really too great a violation of decency, honour, and interest, for him to be guilty of it. I cannot think so very ill of Wickham. Can you, yourself, Lizzie, so wholly give him up, as to believe him capable of it? Not perhaps of neglecting his own interest. But of every other neglect I can believe him capable. If, indeed, it should be so! But I dare not hope it. Why should they not go on" - ], - "tokenDistributions": { - "statistics": { - "mean": 128.07115246019785 - }, - "buckets": [ - { - "value": 128, - "count": 14389 - }, - { - "value": 130, - "count": 182 - }, - { - "value": 129, - "count": 677 - }, - { - "value": 131, - "count": 15 - } - ] - } - }, - "generations": { - "samples": [ - ", that his relations could not choose but be struck with their pleasing and advantageous change. Ten years of reproofs, threats, and chastisements, may not have given them all they ought to know; but surely evidence and conviction will soon do the rest, thanks to the happy truth-so-discovered is Bess", - " for her sake, had generously given up the one interest, and risked the other, the only real friends whom she could ever be able to acknowledge. Miss Gardiner had attended her nephew, the season before, and it was some consolation to Elizabeth to see his sisters again at Pemberley. Henry, of course", - " to attend to any reasoning. He was already so far her friend, and the habit of their acquaintance, attended as it was by a new share of regard, could produce but good offices among them, and we must take our comfort as well as we may. This comfort he soon united with, in possessesing her esteem", - " to her by the conduct of her mother and sisters. Charlotte was ins el amorous, silly, and headstrong; but he is, or seems to be, really in love with her. El , The rury waning of his best songs, and no man over 50", - ", with a certain tolerable income, in the genteel style they had known before? Why should not you, your father, and their cousins, protect and assist them, if you could prevail on your uncle to indemnify them sufficiently? -- But to deal out money recklessly, is indeed disgraceful. Had he" - ], - "tokenDistributions": { - "statistics": { - "mean": 63.951778811504944 - }, - "buckets": [ - { - "value": 64, - "count": 14618 - }, - { - "value": 62, - "count": 147 - }, - { - "value": 63, - "count": 431 - }, - { - "value": 61, - "count": 19 - }, - { - "value": 65, - "count": 40 - }, - { - "value": 66, - "count": 4 - }, - { - "value": 67, - "count": 2 - }, - { - "value": 60, - "count": 2 - } - ] - } - }, - "requestsOverTime": { - "numBenchmarks": 10, - "requestsOverTime": { - "statistic": {}, - "percentiles": [], - "buckets": [ - { - "value": 0.12647485733032227, - "count": 46 - }, - { - "value": 68.87534944216411, - "count": 831 - }, - { - "value": 137.6242240269979, - "count": 2076 - }, - { - "value": 206.37309861183167, - "count": 629 - }, - { - "value": 275.12197319666546, - "count": 282 - }, - { - "value": 343.87084778149926, - "count": 397 - }, - { - "value": 412.619722366333, - "count": 517 - }, - { - "value": 481.3685969511668, - "count": 669 - }, - { - "value": 550.1174715360006, - "count": 732 - }, - { - "value": 618.8663461208344, - "count": 958 - }, - { - "value": 687.6152207056682, - "count": 962 - }, - { - "value": 756.364095290502, - "count": 1224 - }, - { - "value": 825.1129698753357, - "count": 1197 - }, - { - "value": 893.8618444601696, - "count": 1458 - }, - { - "value": 962.6107190450033, - "count": 1435 - }, - { - "value": 1031.359593629837, - "count": 1695 - }, - { - "value": 1100.108468214671, - "count": 1640 - }, - { - "value": 1168.8573427995047, - "count": 1931 - } - ] - } - }, - "rateType": "sweep", - "server": { - "target": "http://192.168.4.13:8000" - } -};`; diff --git a/src/ui/lib/utils/ColorHelper.ts b/src/ui/lib/utils/ColorHelper.ts deleted file mode 100644 index 26a8009ab..000000000 --- a/src/ui/lib/utils/ColorHelper.ts +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Converts a hex color string to RGB values. - * - * @param hex - Hex color string (e.g., "#FF5733") - * @returns Object with r, g, b numeric values - */ -function hexToRGB(hex: string) { - const r = parseInt(hex.slice(1, 3), 16); - const g = parseInt(hex.slice(3, 5), 16); - const b = parseInt(hex.slice(5, 7), 16); - return { r, g, b }; -} - -/** - * Converts RGB values to a hex color string. - * - * @param r - Red value (0-255) - * @param g - Green value (0-255) - * @param b - Blue value (0-255) - * @returns Hex color string (e.g., "#FF5733") - */ -function rgbToHex(r: number, g: number, b: number) { - return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); -} - -/** - * Blends two hex colors by a specified step amount. - * - * @param colorA - First hex color - * @param colorB - Second hex color - * @param step - Blend ratio (0 = colorA, 1 = colorB) - * @returns Blended hex color - */ -function mixColors(colorA: string, colorB: string, step: number) { - const colorARGB = hexToRGB(colorA); - const colorBRGB = hexToRGB(colorB); - - const r = Math.round(colorARGB.r * (1 - step) + colorBRGB.r * step); - const g = Math.round(colorARGB.g * (1 - step) + colorBRGB.g * step); - const b = Math.round(colorARGB.b * (1 - step) + colorBRGB.b * step); - - return rgbToHex(r, g, b); -} - -const NEURAL_WHITE = '#FFFFFF'; -const NEURAL_BLACK = '#0F161F'; - -/** - * Generates a complete shade palette from a base color. - * - * Creates lighter (W10-W100) and darker (B10-B100) variations by mixing - * the base color with neural white and black at different ratios. - * - * @param color - Base hex color to generate shades from - * @returns Object mapping shade keys to hex color values - */ -export const generateShades = (color: string) => { - const shades: { [key: string]: string } = { '0': color }; - for (let i = 1; i <= 9; i++) { - const lightened = mixColors(color, NEURAL_WHITE, i * 0.1); - shades[`W${i * 10}`] = lightened; - const darkened = mixColors(color, NEURAL_BLACK, i * 0.1); - shades[`B${i * 10}`] = darkened; - } - shades.W99 = mixColors(color, NEURAL_WHITE, 0.99); - shades.W100 = mixColors(color, NEURAL_WHITE, 1); - shades.B99 = mixColors(color, NEURAL_BLACK, 0.99); - shades.B100 = mixColors(color, NEURAL_BLACK, 1); - return shades; -}; diff --git a/src/ui/lib/utils/Colors.ts b/src/ui/lib/utils/Colors.ts deleted file mode 100644 index e5b6c028a..000000000 --- a/src/ui/lib/utils/Colors.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { generateShades } from './ColorHelper'; - -export const WHITE = '#FFFFFF'; -export const BLACK = '#000000'; - -export const NEURAL_BLUE = '#2A8EFD'; -export const NEURAL_BLUE_SHADES = generateShades(NEURAL_BLUE); - -export const CARIBBEAN_GREEN = '#03C883'; -export const CARIBBEAN_GREEN_SHADES = generateShades(CARIBBEAN_GREEN); - -export const YELLOW = '#FFC93F'; -export const YELLOW_SHADES = generateShades(YELLOW); - -export const ORANGE = '#FF8228'; -export const ORANGE_SHADES = generateShades(ORANGE); - -export const RED = '#FF2929'; -export const RED_SHADES = generateShades(RED); - -export const SURFACE_SHADE_1 = '#FBFCFF'; -export const SURFACE_SHADE_2 = '#F9F9FF'; -export const SURFACE_SHADE_3 = '#D9DAE0'; - -export const LAVENDER_GRAY = '#E1E2E9'; - -export const SURFACE_CONTAINER_SHADE_1 = '#FFFFFF'; -export const SURFACE_CONTAINER_SHADE_2 = '#F3F3FA'; -export const SURFACE_CONTAINER_SHADE_3 = '#EDEDF4'; -export const SURFACE_CONTAINER_SHADE_4 = '#E7E8EE'; -export const SURFACE_CONTAINER_SHADE_5 = LAVENDER_GRAY; - -export const CHARCOAL_NAVY = '#0F161F'; -export const SEA_LION = '#7F8795'; -export const MIDNIGHT_BLUE = '#001B3C'; -export const DEEP_FOREST_GREEN = '#002112'; -export const DARK_BRONZE = '#251A00'; - -export const CRIMSON_FLAME = '#C32427'; -export const BLUSH_PINK = '#FFCACA'; -export const DEEP_MAROON = '#4B1B22'; -export const LIME_GREEN = '#6AAA0F'; -export const MINT_CREAM = '#DFECCD'; -export const FOREST_GREEN = '#2F5000'; - -export const STORM_GRAY = '#74777F'; -export const LIGHT_SLATE_GRAY = '#C4C6CF'; - -export const DARK_SURFACE_SHADE_1 = CHARCOAL_NAVY; -export const DARK_SURFACE_SHADE_2 = '#37393E'; -export const DARK_SURFACE_SHADE_3 = '#111318'; - -export const DARK_SURFACE_CONTAINER_SHADE_1 = '#0C0E13'; -export const DARK_SURFACE_CONTAINER_SHADE_2 = '#191C20'; -export const DARK_SURFACE_CONTAINER_SHADE_3 = '#1D2024'; -export const DARK_SURFACE_CONTAINER_SHADE_4 = '#282A2F'; -export const DARK_SURFACE_CONTAINER_SHADE_5 = '#33353A'; - -export const ASH_GRAY = '#B5B7BE'; -export const DEEP_TEAL = '#0D3A33'; -export const OLIVE_DRAB = '#574C29'; -export const LIGHT_SKY_BLUE = '#D4E8FF'; -export const LIGHT_AQUAMARINE = '#CDF4E6'; -export const IVORY = '#FFFAEC'; -export const VERY_DARK_GREEN = '#192901'; -export const OUTER_SPACE_GRAY = '#42464E'; diff --git a/src/ui/lib/utils/SvgContainer.tsx b/src/ui/lib/utils/SvgContainer.tsx deleted file mode 100644 index c0ef502d6..000000000 --- a/src/ui/lib/utils/SvgContainer.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { styled } from '@mui/material'; - -export const SvgContainer = styled('span')(({ color }) => ({ - path: { - fill: color, - }, -})); diff --git a/src/ui/lib/utils/helpers.ts b/src/ui/lib/utils/helpers.ts deleted file mode 100644 index e96d2ea6f..000000000 --- a/src/ui/lib/utils/helpers.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { filesize } from 'filesize'; - -export const formatValue = (value: number, fractionDigits = 2) => - `$ ${value.toFixed(fractionDigits)}`; - -export const ceil = (number: number, precision = 0) => { - const n = number * Math.pow(10, precision); - return Math.ceil(n) / Math.pow(10, precision); -}; - -export const floor = (number: number, precision = 0) => { - const n = number * Math.pow(10, precision); - return Math.floor(n) / Math.pow(10, precision); -}; - -export const formatNumber = (number: number, precision = 2) => - Number(number.toFixed(precision)); - -export const parseUrlParts = (urlString: string) => { - try { - const url = new URL(urlString); - return { - type: url.protocol.replace(':', ''), - target: url.hostname, - port: url.port || '', - path: url.pathname, - }; - } catch (_) { - return { - type: '', - target: '', - port: '', - path: '', - }; - } -}; - -export const getFileSize = ( - size?: string | number | null, - roundDecimal?: number, - bits?: boolean -): { size: string; units: string } | undefined => { - if (size) { - const round = roundDecimal === 0 ? 0 : roundDecimal || 1; - const fileSize = `${filesize(size, { round, bits })}`.split(' '); - - return { - size: fileSize[0], - units: fileSize[1].toUpperCase(), - }; - } -}; - -export const formateDate = (timestamp: string) => { - const date = new Date(Number(timestamp) * 1000); - - const options: Intl.DateTimeFormatOptions = { - year: 'numeric', - month: 'long', - day: 'numeric', - hour: '2-digit', - minute: '2-digit', - second: '2-digit', - hour12: false, - }; - - return date.toLocaleString('en-US', options).replace(',', ''); -}; diff --git a/src/ui/lib/utils/interpolation.ts b/src/ui/lib/utils/interpolation.ts deleted file mode 100644 index 50e559a00..000000000 --- a/src/ui/lib/utils/interpolation.ts +++ /dev/null @@ -1,67 +0,0 @@ -export function createMonotoneSpline(xs: number[], ys: number[]) { - const n = xs.length; - if (n < 2) { - throw new Error('Need at least two points'); - } - const dx = new Array(n - 1); - const dy = new Array(n - 1); - const m = new Array(n - 1); - const c1 = new Array(n); - - for (let i = 0; i < n - 1; i++) { - dx[i] = xs[i + 1] - xs[i]; - if (dx[i] === 0) { - throw new Error(`xs[${i}] == xs[${i + 1}]`); - } - dy[i] = ys[i + 1] - ys[i]; - m[i] = dy[i] / dx[i]; - } - - c1[0] = m[0]; - for (let i = 1; i < n - 1; i++) { - if (m[i - 1] * m[i] <= 0) { - c1[i] = 0; - } else { - const dx1 = dx[i - 1], - dx2 = dx[i], - common = dx1 + dx2; - c1[i] = (3 * common) / ((common + dx2) / m[i - 1] + (common + dx1) / m[i]); - } - } - c1[n - 1] = m[n - 2]; - - return function (x: number) { - // Binary search for interval i: xs[i] <= x < xs[i+1] - let lo = 0, - hi = n - 2; - while (lo <= hi) { - const mid = (lo + hi) >> 1; - if (x < xs[mid]) { - hi = mid - 1; - } else if (x > xs[mid + 1]) { - lo = mid + 1; - } else { - lo = mid; - break; - } - } - let i = lo; - if (i < 0) { - i = 0; - } else if (i > n - 2) { - i = n - 2; - } - - const h = dx[i]; - const t = (x - xs[i]) / h; - const t2 = t * t, - t3 = t2 * t; - - const h00 = 2 * t3 - 3 * t2 + 1; - const h10 = t3 - 2 * t2 + t; - const h01 = -2 * t3 + 3 * t2; - const h11 = t3 - t2; - - return h00 * ys[i] + h10 * h * c1[i] + h01 * ys[i + 1] + h11 * h * c1[i + 1]; - }; -} diff --git a/src/ui/next.config.mjs b/src/ui/next.config.mjs deleted file mode 100644 index 1495cadd2..000000000 --- a/src/ui/next.config.mjs +++ /dev/null @@ -1,44 +0,0 @@ -const nextConfig = { - images: { unoptimized: true }, - output: 'export', - assetPrefix: process.env.ASSET_PREFIX || '', - experimental: { - esmExternals: 'loose', - }, - webpack(config) { - // Grab the existing rule that handles SVG imports - const fileLoaderRule = config.module.rules.find((rule) => - rule.test?.test?.('.svg') - ); - - config.module.rules.push( - // Reapply the existing rule, but only for svg imports ending in ?url - { - ...fileLoaderRule, - test: /\.svg$/i, - resourceQuery: /url/, // *.svg?url - }, - // Convert all other *.svg imports to React components - { - test: /\.svg$/i, - issuer: fileLoaderRule.issuer, - resourceQuery: { not: [...fileLoaderRule.resourceQuery.not, /url/] }, // exclude if *.svg?url - use: ['@svgr/webpack'], - }, - { - test: /\.(woff|woff2|eot|ttf|otf)$/, - type: 'asset/resource', - generator: { - filename: 'static/fonts/[name][ext]', - }, - } - ); - - // Modify the file loader rule to ignore *.svg, since we have it handled now. - fileLoaderRule.exclude = /\.svg$/i; - - return config; - }, -}; - -export default nextConfig; diff --git a/src/ui/public/android-chrome-192x192.png b/src/ui/public/android-chrome-192x192.png deleted file mode 100644 index 60cb9c65d128e6f57a7faad1f1fe66595c2fc302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14350 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 diff --git a/src/ui/public/android-chrome-512x512.png b/src/ui/public/android-chrome-512x512.png deleted file mode 100644 index 70918355ac33d8b7526ac9a42b0c2e74759fdf34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25846 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 A?EnA( diff --git a/src/ui/public/apple-touch-icon.png b/src/ui/public/apple-touch-icon.png deleted file mode 100644 index 2e570c52c3115682e5dd762d87cc2fe0c8996f13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2800 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 diff --git a/src/ui/public/favicon-192x192.png b/src/ui/public/favicon-192x192.png deleted file mode 100644 index 60cb9c65d128e6f57a7faad1f1fe66595c2fc302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14350 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 diff --git a/src/ui/public/favicon-32x32.png b/src/ui/public/favicon-32x32.png deleted file mode 100644 index 56e58bd7dda4b06e9007664cb00de8c696940aa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2188 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 A?EnA( diff --git a/src/ui/public/favicon.ico b/src/ui/public/favicon.ico deleted file mode 100644 index 48fcc7792d535621103efad2e3be0d3961cc652a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24046 zcmds93v^t?c^;wNl?=vK93Zy#t|SO~fL3eSCd8(I6>zQH6*ziW2`yk`XnhhAgN

u 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 - export default ReactComponent; - const src: string; - export const src; -} diff --git a/tests/ui/__mocks__/@nivo/bar.tsx b/tests/ui/__mocks__/@nivo/bar.tsx deleted file mode 100644 index a99b6dec4..000000000 --- a/tests/ui/__mocks__/@nivo/bar.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export const ResponsiveBar = () => null; -export const BarCustomLayerProps = () => null; diff --git a/tests/ui/__mocks__/@nivo/core.tsx b/tests/ui/__mocks__/@nivo/core.tsx deleted file mode 100644 index 66e2da8a2..000000000 --- a/tests/ui/__mocks__/@nivo/core.tsx +++ /dev/null @@ -1 +0,0 @@ -export const Point = () => null; diff --git a/tests/ui/__mocks__/@nivo/line.tsx b/tests/ui/__mocks__/@nivo/line.tsx deleted file mode 100644 index bf985ef31..000000000 --- a/tests/ui/__mocks__/@nivo/line.tsx +++ /dev/null @@ -1 +0,0 @@ -export const ResponsiveLine = () => null; diff --git a/tests/ui/__mocks__/fileMock.js b/tests/ui/__mocks__/fileMock.js deleted file mode 100644 index 86059f362..000000000 --- a/tests/ui/__mocks__/fileMock.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'test-file-stub'; diff --git a/tests/ui/__mocks__/styleMock.js b/tests/ui/__mocks__/styleMock.js deleted file mode 100644 index f053ebf79..000000000 --- a/tests/ui/__mocks__/styleMock.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {}; diff --git a/tests/ui/__mocks__/svg.js b/tests/ui/__mocks__/svg.js deleted file mode 100644 index 9260dc353..000000000 --- a/tests/ui/__mocks__/svg.js +++ /dev/null @@ -1,4 +0,0 @@ -const svgMock = 'svg'; -export default svgMock; -export const ReactComponent = 'div'; -//This was from svgr docs: https://react-svgr.com/docs/jest/ diff --git a/tests/ui/cypress/e2e/homepage.cy.ts b/tests/ui/cypress/e2e/homepage.cy.ts deleted file mode 100644 index 31933a3b8..000000000 --- a/tests/ui/cypress/e2e/homepage.cy.ts +++ /dev/null @@ -1,6 +0,0 @@ -describe('Check if text exists on the page', () => { - it('should find the text on the page', () => { - cy.visit('http://localhost:3000'); - cy.contains('GuideLLM').should('exist'); - }); -}); diff --git a/tests/ui/cypress/support/e2e.ts b/tests/ui/cypress/support/e2e.ts deleted file mode 100644 index 3357cc06f..000000000 --- a/tests/ui/cypress/support/e2e.ts +++ /dev/null @@ -1,2 +0,0 @@ -// Add custom support logic here if needed in future. -// Currently minimal, as no global behavior is required. diff --git a/tests/ui/integration/page.test.tsx b/tests/ui/integration/page.test.tsx deleted file mode 100644 index cbd8f3246..000000000 --- a/tests/ui/integration/page.test.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { render, waitFor } from '@testing-library/react'; - -import Home from '@/app/page'; - -import { mockBenchmarks } from '../unit/mocks/mockBenchmarks'; - -const jsonResponse = (data: unknown, status = 200) => - Promise.resolve( - new Response(JSON.stringify(data), { - status, - headers: { 'Content-Type': 'application/json' }, - }) - ); - -const route = (input: RequestInfo) => { - const url = typeof input === 'string' ? input : input.url; - - if (url.endsWith('/run-info')) return jsonResponse({}); - if (url.endsWith('/workload-details')) return jsonResponse({}); - if (url.endsWith('/benchmarks')) return jsonResponse(mockBenchmarks); - - /* fall-through → 404 */ - return { ok: false, status: 404, json: () => Promise.resolve({}) }; -}; - -beforeEach(() => { - jest.resetAllMocks(); - (global.fetch as jest.Mock).mockImplementation(route); -}); - -describe('Home Page', () => { - it('renders the homepage content', async () => { - const { getByText } = render(); - await waitFor(() => { - expect(getByText('GuideLLM')).toBeInTheDocument(); - }); - }); -}); diff --git a/tests/ui/test.helper.tsx b/tests/ui/test.helper.tsx deleted file mode 100644 index 7d93b4e7c..000000000 --- a/tests/ui/test.helper.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { ThemeProvider } from '@mui/material/styles'; -import React, { ReactNode } from 'react'; - -import { muiThemeV3Dark } from '@/app/theme'; -import { ReduxProvider } from '@/lib/store/provider'; - -interface TestProvidersProps { - children: ReactNode; -} - -export const MockedWrapper = ({ children }: TestProvidersProps) => { - return ( - - {children} - - ); -}; diff --git a/tests/ui/unit/components/Charts/DashedLine/helpers.test.ts b/tests/ui/unit/components/Charts/DashedLine/helpers.test.ts deleted file mode 100644 index 4d670ddf7..000000000 --- a/tests/ui/unit/components/Charts/DashedLine/helpers.test.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { - roundDownNice, - roundNearestNice, - roundUpNice, - spacedLogValues, -} from '@/lib/components/Charts/DashedLine/helpers'; - -describe('roundNearestNice', () => { - it('rounds to a nearby nice number', () => { - expect([10, 12]).toContain(roundNearestNice(11)); - expect([25, 30]).toContain(roundNearestNice(27)); - expect([50]).toContain(roundNearestNice(49)); - expect([75, 80, 85]).toContain(roundNearestNice(81)); - expect([800]).toContain(roundNearestNice(810)); - expect([1300, 1400, 1500]).toContain(roundNearestNice(1342)); - }); - it("doesn't round some nice numbers", () => { - expect(roundNearestNice(15)).toBe(15); - expect(roundNearestNice(20)).toBe(20); - expect(roundNearestNice(30)).toBe(30); - expect(roundNearestNice(40)).toBe(40); - expect(roundNearestNice(75)).toBe(75); - expect(roundNearestNice(100)).toBe(100); - expect(roundNearestNice(150)).toBe(150); - expect(roundNearestNice(200)).toBe(200); - expect(roundNearestNice(400)).toBe(400); - expect(roundNearestNice(1000)).toBe(1000); - expect(roundNearestNice(1200)).toBe(1200); - }); -}); - -describe('roundUpNice', () => { - it('rounds up to a nearby nice number', () => { - expect([12, 15]).toContain(roundUpNice(11)); - expect([30]).toContain(roundUpNice(27)); - expect([50]).toContain(roundUpNice(49)); - expect([80, 85, 90]).toContain(roundUpNice(79)); - expect([85, 90]).toContain(roundUpNice(81)); - expect([850, 900, 1000]).toContain(roundUpNice(810)); - expect([1350, 1400, 1500]).toContain(roundUpNice(1342)); - }); - it("doesn't round some nice numbers", () => { - expect(roundUpNice(15)).toBe(15); - expect(roundUpNice(20)).toBe(20); - expect(roundUpNice(30)).toBe(30); - expect(roundUpNice(40)).toBe(40); - expect(roundUpNice(75)).toBe(75); - expect(roundUpNice(100)).toBe(100); - expect(roundUpNice(150)).toBe(150); - expect(roundUpNice(200)).toBe(200); - expect(roundUpNice(400)).toBe(400); - expect(roundUpNice(1000)).toBe(1000); - expect(roundUpNice(1200)).toBe(1200); - }); - it("doesn't unexpectedly round down", () => { - expect(roundUpNice(1.3)).toBeGreaterThanOrEqual(1.5); - expect(roundUpNice(3)).toBeGreaterThanOrEqual(3); - expect(roundUpNice(3.3)).toBeGreaterThanOrEqual(3.5); - expect(roundUpNice(7.3)).toBeGreaterThanOrEqual(7.5); - expect(roundUpNice(11)).toBeGreaterThanOrEqual(11); - expect(roundUpNice(19)).toBeGreaterThanOrEqual(19); - }); -}); - -describe('roundDownNice', () => { - it('rounds down to a nearby nice number', () => { - expect([10]).toContain(roundDownNice(11)); - expect([20, 25]).toContain(roundDownNice(27)); - expect([40, 45, 48]).toContain(roundDownNice(49)); - expect([70, 75]).toContain(roundDownNice(79)); - expect([75, 80]).toContain(roundDownNice(81)); - expect([700, 750, 800]).toContain(roundDownNice(810)); - expect([1200, 1250, 1300]).toContain(roundDownNice(1342)); - }); - it("doesn't round some nice numbers", () => { - expect(roundDownNice(15)).toBe(15); - expect(roundDownNice(20)).toBe(20); - expect(roundDownNice(30)).toBe(30); - expect(roundDownNice(40)).toBe(40); - expect(roundDownNice(75)).toBe(75); - expect(roundDownNice(100)).toBe(100); - expect(roundDownNice(150)).toBe(150); - expect(roundDownNice(200)).toBe(200); - expect(roundDownNice(400)).toBe(400); - expect(roundDownNice(1000)).toBe(1000); - expect(roundDownNice(1200)).toBe(1200); - }); - it("doesn't unexpectedly round up", () => { - expect(roundDownNice(1.6)).toBeLessThanOrEqual(1.5); - expect(roundDownNice(3)).toBeLessThanOrEqual(3); - expect(roundDownNice(3.6)).toBeLessThanOrEqual(3.5); - expect(roundDownNice(7.6)).toBeLessThanOrEqual(7.5); - expect(roundDownNice(11)).toBeLessThanOrEqual(11); - expect(roundDownNice(19)).toBeLessThanOrEqual(19); - }); -}); - -describe('spacedLogValues', () => { - const checkValuesRoughlyLogSpaced = (values: number[]) => { - let i = 1; - if (values[0] === 0) { - i++; - } - const valuesRatios = []; - for (i; i < values.length; i++) { - valuesRatios.push(values[i] / values[i - 1]); - } - const valuesRatiosAvg = valuesRatios.reduce((a, b) => a + b) / valuesRatios.length; - valuesRatios.forEach((ratio) => { - expect(ratio).toBeCloseTo(valuesRatiosAvg, -0.5); - }); - }; - - it('generates an array of roughly log-scale spaced values', () => { - expect(spacedLogValues(1, 1000, 4)).toEqual([1, 10, 100, 1000]); - checkValuesRoughlyLogSpaced(spacedLogValues(1, 1324, 4)); - checkValuesRoughlyLogSpaced(spacedLogValues(123, 12324, 6)); - checkValuesRoughlyLogSpaced(spacedLogValues(1, 122, 6)); - checkValuesRoughlyLogSpaced(spacedLogValues(1, 122, 9)); - }); - it('can handle ticks for small numbers', () => { - checkValuesRoughlyLogSpaced(spacedLogValues(0, 8, 6)); - }); - - it('generates an array of nice round numbers', () => { - for (const value of spacedLogValues(1, 1000, 4)) { - expect([roundUpNice(value), roundNearestNice(value)]).toContain(value); - } - for (const value of spacedLogValues(1, 1324, 4)) { - expect([roundUpNice(value), roundNearestNice(value)]).toContain(value); - } - for (const value of spacedLogValues(1, 132, 7)) { - expect([roundUpNice(value), roundNearestNice(value)]).toContain(value); - } - }); -}); diff --git a/tests/ui/unit/mocks/mockBenchmarks.ts b/tests/ui/unit/mocks/mockBenchmarks.ts deleted file mode 100644 index e89475083..000000000 --- a/tests/ui/unit/mocks/mockBenchmarks.ts +++ /dev/null @@ -1,266 +0,0 @@ -export const mockBenchmarks = [ - { - requestsPerSecond: 0.6668550387660497, - itl: { - total: 80, - mean: 23.00635663936911, - median: 22.959455611213805, - min: 22.880917503720237, - max: 24.14080301920573, - std: 0.18918760384209338, - percentiles: { - p50: 22.959455611213805, - p90: 23.01789086962503, - p95: 23.30297423947242, - p99: 24.14080301920573, - }, - percentileRows: [ - { - percentile: 'p50', - value: 22.959455611213805, - }, - { - percentile: 'p90', - value: 23.01789086962503, - }, - { - percentile: 'p95', - value: 23.30297423947242, - }, - { - percentile: 'p99', - value: 24.14080301920573, - }, - ], - }, - ttft: { - total: 80, - mean: 49.64659512042999, - median: 49.23129081726074, - min: 44.538259506225586, - max: 55.47308921813965, - std: 1.7735485090634995, - percentiles: { - p50: 49.23129081726074, - p90: 50.16160011291504, - p95: 54.918766021728516, - p99: 55.47308921813965, - }, - percentileRows: [ - { - percentile: 'p50', - value: 49.23129081726074, - }, - { - percentile: 'p90', - value: 50.16160011291504, - }, - { - percentile: 'p95', - value: 54.918766021728516, - }, - { - percentile: 'p99', - value: 55.47308921813965, - }, - ], - }, - throughput: { - total: 210, - mean: 42.58702991319684, - median: 43.536023084668, - min: 0.0, - max: 43.68247620237872, - std: 4.559764488536857, - percentiles: { - p50: 43.536023084668, - p90: 43.62613633999709, - p95: 43.64020767654067, - p99: 43.68202126662431, - }, - percentileRows: [ - { - percentile: 'p50', - value: 43.536023084668, - }, - { - percentile: 'p90', - value: 43.62613633999709, - }, - { - percentile: 'p95', - value: 43.64020767654067, - }, - { - percentile: 'p99', - value: 43.68202126662431, - }, - ], - }, - timePerRequest: { - total: 80, - mean: 1496.706646680832, - median: 1496.1087703704834, - min: 1490.584135055542, - max: 1505.8784484863281, - std: 3.4553340533022667, - percentiles: { - p50: 1496.1087703704834, - p90: 1500.9305477142334, - p95: 1505.3200721740723, - p99: 1505.8784484863281, - }, - percentileRows: [ - { - percentile: 'p50', - value: 1496.1087703704834, - }, - { - percentile: 'p90', - value: 1500.9305477142334, - }, - { - percentile: 'p95', - value: 1505.3200721740723, - }, - { - percentile: 'p99', - value: 1505.8784484863281, - }, - ], - }, - }, - { - requestsPerSecond: 28.075330129628725, - itl: { - total: 3416, - mean: 126.08707076148656, - median: 125.30853256346687, - min: 23.034303907364134, - max: 138.08223756693178, - std: 3.508992115582193, - percentiles: { - p50: 125.30853256346687, - p90: 129.21135009281218, - p95: 129.52291770059554, - p99: 132.21229490686636, - }, - percentileRows: [ - { - percentile: 'p50', - value: 125.30853256346687, - }, - { - percentile: 'p90', - value: 129.21135009281218, - }, - { - percentile: 'p95', - value: 129.52291770059554, - }, - { - percentile: 'p99', - value: 132.21229490686636, - }, - ], - }, - ttft: { - total: 3416, - mean: 8585.486161415694, - median: 8965.316534042358, - min: 110.53991317749023, - max: 12575.379610061646, - std: 1929.5632525234505, - percentiles: { - p50: 8965.316534042358, - p90: 9231.79316520691, - p95: 9485.00108718872, - p99: 12096.465587615967, - }, - percentileRows: [ - { - percentile: 'p50', - value: 8965.316534042358, - }, - { - percentile: 'p90', - value: 9231.79316520691, - }, - { - percentile: 'p95', - value: 9485.00108718872, - }, - { - percentile: 'p99', - value: 12096.465587615967, - }, - ], - }, - throughput: { - statistics: { - total: 15981, - mean: 1795.4403743554367, - median: 670.1236619268253, - min: 0.0, - max: 838860.8, - std: 5196.545581836957, - }, - percentiles: { - p50: 670.1236619268253, - p90: 4068.1901066925316, - p95: 6374.322188449848, - p99: 16194.223938223939, - }, - percentileRows: [ - { - percentile: 'p50', - value: 670.1236619268253, - }, - { - percentile: 'p90', - value: 4068.1901066925316, - }, - { - percentile: 'p95', - value: 6374.322188449848, - }, - { - percentile: 'p99', - value: 16194.223938223939, - }, - ], - }, - timePerRequest: { - total: 3416, - mean: 16526.811318389147, - median: 17058.441638946533, - min: 1711.3444805145264, - max: 20646.55351638794, - std: 2054.9553770234484, - percentiles: { - p50: 17058.441638946533, - p90: 17143.84412765503, - p95: 17248.060703277588, - p99: 20116.52660369873, - }, - percentileRows: [ - { - percentile: 'p50', - value: 17058.441638946533, - }, - { - percentile: 'p90', - value: 17143.84412765503, - }, - { - percentile: 'p95', - value: 17248.060703277588, - }, - { - percentile: 'p99', - value: 20116.52660369873, - }, - ], - }, - }, -]; diff --git a/tests/ui/unit/store/slices/slo.test.tsx b/tests/ui/unit/store/slices/slo.test.tsx deleted file mode 100644 index 254d2818d..000000000 --- a/tests/ui/unit/store/slices/slo.test.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { initialState } from '@/lib/store/slices/slo/slo.constants'; -import { SloState } from '@/lib/store/slices/slo/slo.interfaces'; -import sloReducer, { setSloData } from '@/lib/store/slices/slo/slo.slice'; - -test('should handle initial state', () => { - expect(sloReducer(undefined, { type: '' })).toEqual(initialState); -}); - -test('should set slo data', () => { - const slo = { - enforcedPercentile: 'p50', - } as Partial; - - const fullSlos = { - ...initialState, - ...slo, - }; - expect(sloReducer(undefined, setSloData(slo))).toEqual(fullSlos); -}); diff --git a/tests/ui/unit/utils/interpolation.test.ts b/tests/ui/unit/utils/interpolation.test.ts deleted file mode 100644 index 244ec8118..000000000 --- a/tests/ui/unit/utils/interpolation.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { createMonotoneSpline } from '@/lib/utils/interpolation'; - -test('should reproduce points on a straight line', () => { - const xs = [0, 1, 2, 3]; - const ys = [0, 2, 4, 6]; - const interpolate = createMonotoneSpline(xs, ys); - - [0, 0.5, 1.5, 3].forEach((x) => { - expect(interpolate(x)).toBeCloseTo(2 * x, 1e-6); - }); -}); - -test('should return constant data on flat line', () => { - const xs = [0, 1, 2, 3]; - const ys = [5, 5, 5, 5]; - const interpolate = createMonotoneSpline(xs, ys); - - [0, 1.5, 2].forEach((x) => { - expect(interpolate(x)).toBeCloseTo(5, 1e-6); - }); -}); - -test('should hit each point precisely', () => { - const xs = [0, 2, 5]; - const ys = [1, 4, 2]; - const interpolate = createMonotoneSpline(xs, ys); - - xs.forEach((x, i) => { - expect(interpolate(x)).toBeCloseTo(ys[i], 1e-6); - }); -}); - -test('no local extremas added', () => { - // generate wavy line - const xs = Array.from(Array(50)).map((_, i) => (i + 1) / 10); - const ys = xs.map((x) => 1 + Math.sin((3 * Math.PI * x) / 10)); - // check that each interpolated point is between its two bounding points - const interpolate = createMonotoneSpline(xs, ys); - const loopedValuesToTest: { expected: number; actual: number }[] = []; - for (let i = xs[0]; i < xs[xs.length - 1]; i += 0.01) { - const upperIndex = xs.findIndex((x) => x >= i); - if (upperIndex === 0) { - loopedValuesToTest.push({ expected: interpolate(i), actual: ys[0] }); - continue; - } - const lowerY = ys[upperIndex - 1]; - const upperY = ys[upperIndex]; - expect(interpolate(i)).toBeLessThanOrEqual(Math.max(lowerY, upperY)); - expect(interpolate(i)).toBeGreaterThanOrEqual(Math.min(lowerY, upperY)); - } - loopedValuesToTest.forEach((value) => { - expect(value.expected).toBeCloseTo(value.actual); - }); -}); diff --git a/tsconfig.base.json b/tsconfig.base.json deleted file mode 100644 index 409e7abae..000000000 --- a/tsconfig.base.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "target": "ES2022", - "lib": ["dom", "dom.iterable", "esnext"], - "module": "esnext", - "jsx": "preserve", - "incremental": true, - "noEmit": true, - "moduleResolution": "node", - "baseUrl": ".", - "paths": { - "@assets/*": ["src/ui/app/assets/*"], - "@/*": ["src/ui/*"] - }, - "resolveJsonModule": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "plugins": [{ "name": "next" }], - "strict": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true - }, - "exclude": [".meta", ".next", "node_modules", ".vscode"] -} diff --git a/tsconfig.cypress.json b/tsconfig.cypress.json deleted file mode 100644 index 98c7a335c..000000000 --- a/tsconfig.cypress.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "types": ["cypress", "node"], - "noEmit": true - }, - "include": ["cypress.config.ts", "tests/ui/cypress/**/*.ts"] -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index bdebc2ee0..000000000 --- a/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "types": ["node"], - "allowJs": false, - "isolatedModules": true - }, - "include": ["*.ts", "*.cts", "*.mts", "scripts/**/*", "types/**/*"], - "exclude": ["src/ui", "tests", "node_modules"] -} diff --git a/tsconfig.test.json b/tsconfig.test.json deleted file mode 100644 index 54e5cb786..000000000 --- a/tsconfig.test.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "types": ["jest", "@testing-library/jest-dom", "node"], - "noEmit": true - }, - "include": [ - "jest.setup.ts", - "tests/ui/unit/**/*.ts", - "tests/ui/unit/**/*.tsx", - "tests/ui/integration/**/*.ts", - "tests/ui/integration/**/*.tsx", - "tests/ui/test.helper.tsx", - "tests/ui/__mocks__/**/*.{ts,tsx,js}", - "src/ui/app/types", - "src/ui/types" - ] -} From 80cea4a2023d5bfbe5853488abd3ec5aba200425 Mon Sep 17 00:00:00 2001 From: Samuel Monson Date: Tue, 28 Apr 2026 12:59:46 -0400 Subject: [PATCH 2/3] Clean up all references to HTML Signed-off-by: Samuel Monson --- src/guidellm/__main__.py | 6 +- src/guidellm/benchmark/__init__.py | 2 - src/guidellm/benchmark/entrypoints.py | 2 +- src/guidellm/benchmark/outputs/__init__.py | 4 +- src/guidellm/benchmark/outputs/html.py | 477 --------------------- src/guidellm/settings.py | 11 - 6 files changed, 5 insertions(+), 497 deletions(-) delete mode 100644 src/guidellm/benchmark/outputs/html.py diff --git a/src/guidellm/__main__.py b/src/guidellm/__main__.py index fc95031e0..4cdc88090 100644 --- a/src/guidellm/__main__.py +++ b/src/guidellm/__main__.py @@ -272,7 +272,7 @@ def benchmark(): default=BenchmarkGenerativeTextArgs.get_default("outputs"), help=( "The filename.ext for each of the outputs to create or the " - "alises (json, csv, html) for the output files to create with " + "alises (json, csv) for the output files to create with " "their default file names (benchmark.[EXT])" ), ) @@ -512,8 +512,8 @@ def run(**kwargs): # noqa: C901 "--output-formats", multiple=True, type=str, - default=("console", "json"), # ("console", "json", "html", "csv") - help="Output formats for benchmark results (e.g., console, json, html, csv).", + default=("console", "json"), + help="Output formats for benchmark results (e.g., console, json, csv).", ) def from_file(path, output_path, output_formats): asyncio.run(reimport_benchmarks_report(path, output_path, output_formats)) diff --git a/src/guidellm/benchmark/__init__.py b/src/guidellm/benchmark/__init__.py index c8f10459b..20327d502 100644 --- a/src/guidellm/benchmark/__init__.py +++ b/src/guidellm/benchmark/__init__.py @@ -15,7 +15,6 @@ from .outputs import ( GenerativeBenchmarkerConsole, GenerativeBenchmarkerCSV, - GenerativeBenchmarkerHTML, GenerativeBenchmarkerOutput, ) from .profiles import ( @@ -72,7 +71,6 @@ "GenerativeBenchmarkTimings", "GenerativeBenchmarkerCSV", "GenerativeBenchmarkerConsole", - "GenerativeBenchmarkerHTML", "GenerativeBenchmarkerOutput", "GenerativeBenchmarksReport", "GenerativeConsoleBenchmarkerProgress", diff --git a/src/guidellm/benchmark/entrypoints.py b/src/guidellm/benchmark/entrypoints.py index 1f0ed3043..ab431bffd 100644 --- a/src/guidellm/benchmark/entrypoints.py +++ b/src/guidellm/benchmark/entrypoints.py @@ -591,7 +591,7 @@ async def benchmark_generative_text( async def reimport_benchmarks_report( file: Path, output_path: Path | None, - output_formats: OutputFormatT = ("console", "json", "html", "csv"), + output_formats: OutputFormatT = ("console", "json", "csv"), ) -> tuple[GenerativeBenchmarksReport, dict[str, Any]]: """ Load and re-export an existing benchmarks report in specified output formats. diff --git a/src/guidellm/benchmark/outputs/__init__.py b/src/guidellm/benchmark/outputs/__init__.py index 2e321605d..bb2e8855d 100644 --- a/src/guidellm/benchmark/outputs/__init__.py +++ b/src/guidellm/benchmark/outputs/__init__.py @@ -2,7 +2,7 @@ Output formatters for benchmark results. Provides output formatter implementations that transform benchmark reports into -various file formats including JSON, CSV, HTML, and console display. All formatters +various file formats including JSON, CSV, and console display. All formatters extend the base GenerativeBenchmarkerOutput interface, enabling dynamic resolution and flexible output configuration for benchmark result persistence and analysis. """ @@ -11,14 +11,12 @@ from .console import GenerativeBenchmarkerConsole from .csv import GenerativeBenchmarkerCSV -from .html import GenerativeBenchmarkerHTML from .output import GenerativeBenchmarkerOutput from .serialized import GenerativeBenchmarkerSerialized __all__ = [ "GenerativeBenchmarkerCSV", "GenerativeBenchmarkerConsole", - "GenerativeBenchmarkerHTML", "GenerativeBenchmarkerOutput", "GenerativeBenchmarkerSerialized", ] diff --git a/src/guidellm/benchmark/outputs/html.py b/src/guidellm/benchmark/outputs/html.py deleted file mode 100644 index 464c730c4..000000000 --- a/src/guidellm/benchmark/outputs/html.py +++ /dev/null @@ -1,477 +0,0 @@ -""" -HTML output formatter for benchmark results. - -Transforms benchmark data into interactive web-based reports by building UI data -structures, converting keys to camelCase for JavaScript compatibility, and injecting -formatted data into HTML templates. The formatter processes GenerativeBenchmark -instances and their associated metrics, creating histogram buckets for distributions, -formatting percentile statistics for tabular display, and embedding all data as -JavaScript objects within an HTML template for client-side rendering and visualization. -""" - -from __future__ import annotations - -import json -import random -import re -from collections import defaultdict -from copy import deepcopy -from math import ceil -from pathlib import Path -from typing import Any, ClassVar - -from loguru import logger -from pydantic import BaseModel, Field, computed_field - -from guidellm.benchmark.outputs.output import GenerativeBenchmarkerOutput -from guidellm.benchmark.schemas import ( - BenchmarkGenerativeTextArgs, - GenerativeBenchmark, - GenerativeBenchmarksReport, -) -from guidellm.schemas import DistributionSummary, Percentiles -from guidellm.settings import settings -from guidellm.utils.dict import recursive_key_update -from guidellm.utils.text import camelize_str, load_text - -__all__ = ["GenerativeBenchmarkerHTML"] - - -@GenerativeBenchmarkerOutput.register("html") -class GenerativeBenchmarkerHTML(GenerativeBenchmarkerOutput): - """ - HTML output formatter for benchmark results. - - Generates interactive HTML reports from benchmark data by transforming results - into camelCase JSON structures and injecting them into HTML templates. The - formatter processes benchmark metrics, creates histogram distributions, and - embeds all data into a pre-built HTML template for browser-based visualization. - Reports are saved to the specified output path or current working directory. - - :cvar DEFAULT_FILE: Default filename for HTML output when a directory is provided - """ - - DEFAULT_FILE: ClassVar[str] = "benchmarks.html" - - output_path: Path = Field( - default_factory=lambda: Path.cwd(), - description=( - "Directory or file path for saving the HTML report, " - "defaults to current working directory" - ), - ) - - @classmethod - def validated_kwargs( - cls, output_path: str | Path | None, **_kwargs - ) -> dict[str, Any]: - """ - Validate and normalize output path argument. - - :param output_path: Output file or directory path for the HTML report - :return: Dictionary containing validated output_path if provided - """ - validated: dict[str, Any] = {} - if output_path is not None: - validated["output_path"] = ( - Path(output_path) if not isinstance(output_path, Path) else output_path - ) - return validated - - async def finalize(self, report: GenerativeBenchmarksReport) -> Path: - """ - Generate and save the HTML benchmark report. - - Transforms benchmark data into camelCase JSON format, injects it into the - HTML template, and writes the resulting report to the output path. Creates - parent directories if they don't exist. - - :param report: Completed benchmark report containing all results - :return: Path to the saved HTML report file - """ - output_path = self.output_path - if output_path.is_dir(): - output_path = output_path / self.DEFAULT_FILE - output_path.parent.mkdir(parents=True, exist_ok=True) - - data = _build_ui_data(report.benchmarks, report.args) - camel_data = recursive_key_update(deepcopy(data), camelize_str) - - ui_api_data = { - f"window.{key} = {{}};": f"window.{key} = {json.dumps(value, indent=2)};\n" - for key, value in camel_data.items() - } - - _create_html_report(ui_api_data, output_path) - - return output_path - - -class _Bucket(BaseModel): - """ - Histogram bucket for data distribution visualization. - - Represents a single bucket in a histogram with its starting value and count - of data points falling within the bucket range. Used to create distribution - histograms for metrics like token counts and request timings. - """ - - value: float | int = Field(description="Starting value of the bucket range") - count: int = Field(description="Number of data points falling within this bucket") - - @staticmethod - def from_data( - data: list[float] | list[int], - bucket_width: float | None = None, - n_buckets: int | None = None, - ) -> tuple[list[_Bucket], float]: - """ - Create histogram buckets from numeric data values. - - Divides the data range into equal-width buckets and counts values within - each bucket. Either bucket_width or n_buckets can be specified; if neither - is provided, defaults to 10 buckets. - - :param data: Numeric values to bucket - :param bucket_width: Width of each bucket, computed if None - :param n_buckets: Number of buckets, defaults to 10 if width not specified - :return: Tuple of bucket list and computed bucket width - """ - if not data: - return [], 1.0 - - min_v = min(data) - max_v = max(data) - range_v = (1 + max_v) - min_v - - if bucket_width is None: - if n_buckets is None: - n_buckets = 10 - bucket_width = range_v / n_buckets - else: - n_buckets = ceil(range_v / bucket_width) - - bucket_counts: defaultdict[float | int, int] = defaultdict(int) - for val in data: - idx = int((val - min_v) // bucket_width) - if idx >= n_buckets: - idx = n_buckets - 1 - bucket_start = min_v + idx * bucket_width - bucket_counts[bucket_start] += 1 - - buckets = [ - _Bucket(value=start, count=count) - for start, count in sorted(bucket_counts.items()) - ] - return buckets, bucket_width - - -class _TabularDistributionSummary(DistributionSummary): - """ - Distribution summary with tabular percentile representation. - - Extends DistributionSummary to provide percentile data formatted for table - display in the HTML report. Filters to show only key percentiles (p50, p90, - p95, p99) for concise presentation. - """ - - @computed_field - def percentile_rows(self) -> list[dict[str, str | float]]: - """ - Format percentiles as table rows for UI display. - - :return: List of dictionaries with percentile names and values - """ - rows = [ - {"percentile": name, "value": value} - for name, value in self.percentiles.model_dump().items() - ] - return list( - filter(lambda row: row["percentile"] in ["p50", "p90", "p95", "p99"], rows) - ) - - def model_dump(self, **kwargs) -> dict: - """ - Override model_dump to filter duplicate consecutive percentile values. - - This prevents visualization errors when distributions have limited data - points causing multiple percentiles to collapse to the same value. - - :param kwargs: Arguments to pass to parent model_dump - :return: Dictionary with filtered percentiles - """ - data = super().model_dump(**kwargs) - - if "percentiles" in data and data["percentiles"]: - filtered_percentiles = _filter_duplicate_percentiles(data["percentiles"]) - data["percentiles"] = filtered_percentiles - - return data - - @classmethod - def from_distribution_summary( - cls, distribution: DistributionSummary - ) -> _TabularDistributionSummary: - """ - Convert standard DistributionSummary to tabular format. - - :param distribution: Source distribution summary to convert - :return: Tabular distribution summary with formatted percentile rows - """ - return cls(**distribution.model_dump()) - - -def _create_html_report(js_data: dict[str, str], output_path: Path) -> Path: - """ - Create HTML report by injecting JavaScript data into template. - - Loads the HTML template, injects JavaScript data into the head section, and - writes the final report to the specified output path. - - :param js_data: Dictionary mapping placeholder strings to JavaScript code - :param output_path: Path where HTML report will be saved - :return: Path to the saved report file - """ - html_content = load_text(settings.report_generation.source) - report_content = _inject_data(js_data, html_content) - - output_path.parent.mkdir(parents=True, exist_ok=True) - output_path.write_text(report_content) - return output_path - - -def _filter_duplicate_percentiles(percentiles: dict[str, float]) -> dict[str, float]: - """ - Filter out consecutive duplicate percentile values. - - When distributions have very few data points, multiple percentiles can have - the same value, which causes visualization libraries to fail. This function - keeps only the largest percentile for consecutive duplicate values, which is - more mathematically accurate as higher percentiles have greater statistical - significance. - - :param percentiles: Dictionary of percentile names to values - :return: Filtered percentiles dictionary with no consecutive duplicates - """ - if not percentiles: - return percentiles - - percentile_order = list(Percentiles.model_fields.keys()) - - # Iterate in reverse to keep the largest percentile for each value - filtered = {} - previous_value = None - - for key in reversed(percentile_order): - if key in percentiles: - current_value = percentiles[key] - if previous_value is None or current_value != previous_value: - filtered[key] = current_value - previous_value = current_value - - # Restore original order - return {key: filtered[key] for key in percentile_order if key in filtered} - - -def _inject_data(js_data: dict[str, str], html: str) -> str: - """ - Inject JavaScript data into HTML head section. - - Replaces placeholder strings in the HTML head section with actual JavaScript - code containing benchmark data. Returns original HTML if no head section found. - - :param js_data: Dictionary mapping placeholder strings to JavaScript code - :param html: HTML template content - :return: HTML with injected JavaScript data - """ - head_match = re.search(r"]*>(.*?)", html, re.DOTALL | re.IGNORECASE) - if not head_match: - logger.warning(" section missing, returning original HTML.") - return html - - head_content = head_match.group(1) - - for placeholder, script in js_data.items(): - head_content = head_content.replace(placeholder, script) - - new_head = f"{head_content}" - return html[: head_match.start()] + new_head + html[head_match.end() :] - - -def _build_ui_data( - benchmarks: list[GenerativeBenchmark], args: BenchmarkGenerativeTextArgs -) -> dict[str, Any]: - """ - Build complete UI data structure from benchmarks. - - Aggregates benchmark results into a structured format for the HTML UI, - including run metadata, workload details, and per-benchmark metrics. - - :param benchmarks: List of completed benchmark results - :param args: Benchmark configuration arguments - :return: Dictionary with run_info, workload_details, and benchmarks sections - """ - return { - "run_info": _build_run_info(benchmarks, args), - "workload_details": _build_workload_details(benchmarks, args), - "benchmarks": _build_benchmarks(benchmarks), - } - - -def _build_run_info( - benchmarks: list[GenerativeBenchmark], args: BenchmarkGenerativeTextArgs -) -> dict[str, Any]: - """ - Build run metadata from benchmarks. - - Extracts model name, timestamp, and dataset information from the benchmark - configuration and results. - - :param benchmarks: List of completed benchmark results - :param args: Benchmark configuration arguments - :return: Dictionary with model, task, timestamp, and dataset information - """ - model = ( - args.backend_kwargs.model if hasattr(args.backend_kwargs, "model") else "N/A" - ) - timestamp = max(bm.start_time for bm in benchmarks if bm.start_time is not None) - return { - "model": {"name": model, "size": 0}, - "task": "N/A", - "timestamp": timestamp, - "dataset": {"name": "N/A"}, - } - - -def _build_workload_details( - benchmarks: list[GenerativeBenchmark], args: BenchmarkGenerativeTextArgs -) -> dict[str, Any]: - """ - Build workload details from benchmarks. - - Aggregates prompt and generation samples, token distribution statistics, - request timing histograms, and server configuration. Samples up to 5 random - prompts and outputs for display. - - :param benchmarks: List of completed benchmark results - :param args: Benchmark configuration arguments - :return: Dictionary with prompts, generations, request timing, and server info - """ - target = ( - args.backend_kwargs.target if hasattr(args.backend_kwargs, "target") else None - ) - rate_type = benchmarks[0].config.strategy.type_ - successful_requests = [req for bm in benchmarks for req in bm.requests.successful] - - sample_indices = random.sample( - range(len(successful_requests)), min(5, len(successful_requests)) - ) - sample_prompts = [ - req.request_args.replace("\n", " ").replace('"', "'") - if (req := successful_requests[i]).request_args - else "" - for i in sample_indices - ] - sample_outputs = [ - req.output.replace("\n", " ").replace('"', "'") - if (req := successful_requests[i]).output - else "" - for i in sample_indices - ] - - prompt_tokens = [ - float(req.prompt_tokens) if req.prompt_tokens is not None else -1 - for bm in benchmarks - for req in bm.requests.successful - ] - output_tokens = [ - float(req.output_tokens) if req.output_tokens is not None else -1 - for bm in benchmarks - for req in bm.requests.successful - ] - - prompt_token_buckets, _prompt_bucket_width = _Bucket.from_data(prompt_tokens, 1) - output_token_buckets, _output_bucket_width = _Bucket.from_data(output_tokens, 1) - - prompt_token_stats = DistributionSummary.from_values(prompt_tokens) - output_token_stats = DistributionSummary.from_values(output_tokens) - - min_start_time = benchmarks[0].start_time - all_req_times = [ - req.info.timings.request_start - min_start_time - for bm in benchmarks - for req in bm.requests.successful - if req.info.timings.request_start is not None - ] - - number_of_buckets = len(benchmarks) - request_buckets, bucket_width = _Bucket.from_data( - all_req_times, None, number_of_buckets - ) - - return { - "prompts": { - "samples": sample_prompts, - "token_distributions": { - "statistics": prompt_token_stats.model_dump() - if prompt_token_stats - else None, - "buckets": [b.model_dump() for b in prompt_token_buckets], - "bucket_width": 1, - }, - }, - "generations": { - "samples": sample_outputs, - "token_distributions": { - "statistics": output_token_stats.model_dump() - if output_token_stats - else None, - "buckets": [b.model_dump() for b in output_token_buckets], - "bucket_width": 1, - }, - }, - "requests_over_time": { - "requests_over_time": { - "buckets": [b.model_dump() for b in request_buckets], - "bucket_width": bucket_width, - }, - "num_benchmarks": number_of_buckets, - }, - "rate_type": rate_type, - "server": {"target": target}, - } - - -def _build_benchmarks(benchmarks: list[GenerativeBenchmark]) -> list[dict[str, Any]]: - """ - Build benchmark metrics data for UI display. - - Extracts key performance metrics from each benchmark including requests per - second, inter-token latency, time to first token, throughput, and request - latency. Formats distribution summaries for tabular display. - - :param benchmarks: List of completed benchmark results - :return: List of dictionaries with formatted benchmark metrics - """ - result = [] - for bm in benchmarks: - result.append( - { - "requests_per_second": bm.metrics.requests_per_second.successful.mean, - "itl": _TabularDistributionSummary.from_distribution_summary( - bm.metrics.inter_token_latency_ms.successful - ).model_dump(), - "ttft": _TabularDistributionSummary.from_distribution_summary( - bm.metrics.time_to_first_token_ms.successful - ).model_dump(), - "throughput": _TabularDistributionSummary.from_distribution_summary( - bm.metrics.output_tokens_per_second.successful - ).model_dump(), - "time_per_request": ( - _TabularDistributionSummary.from_distribution_summary( - bm.metrics.request_latency.successful - ).model_dump() - ), - } - ) - return result diff --git a/src/guidellm/settings.py b/src/guidellm/settings.py index f16ac5b6c..a7a6aaf02 100644 --- a/src/guidellm/settings.py +++ b/src/guidellm/settings.py @@ -53,14 +53,6 @@ class DatasetSettings(BaseModel): ) -class ReportGenerationSettings(BaseModel): - """ - Report generation settings for the application - """ - - source: str = "https://raw.githubusercontent.com/vllm-project/guidellm/refs/heads/gh-pages/ui/v0.5.4/index.html" - - class Settings(BaseSettings): """ All the settings are powered by pydantic_settings and could be @@ -108,9 +100,6 @@ class Settings(BaseSettings): # Data settings dataset: DatasetSettings = DatasetSettings() - # Report settings - report_generation: ReportGenerationSettings = ReportGenerationSettings() - # Output settings table_border_char: str = "=" table_headers_border_char: str = "-" From 3282b06cd43169cad5ad99ec9d5937f52632ad60 Mon Sep 17 00:00:00 2001 From: Samuel Monson Date: Tue, 28 Apr 2026 13:29:12 -0400 Subject: [PATCH 3/3] Drop tests Signed-off-by: Samuel Monson --- tests/unit/benchmark/test_html_output.py | 164 ----------------------- tests/unit/test_settings.py | 12 -- 2 files changed, 176 deletions(-) delete mode 100644 tests/unit/benchmark/test_html_output.py diff --git a/tests/unit/benchmark/test_html_output.py b/tests/unit/benchmark/test_html_output.py deleted file mode 100644 index 39c46a763..000000000 --- a/tests/unit/benchmark/test_html_output.py +++ /dev/null @@ -1,164 +0,0 @@ -## WRITTEN BY AI ## -from guidellm.benchmark.outputs.html import _filter_duplicate_percentiles -from guidellm.schemas import Percentiles - - -def test_filter_all_same_values(): - """Test filtering when all percentiles have the same value.""" - percentiles = { - "p001": 15.288091352804853, - "p01": 15.288091352804853, - "p05": 15.288091352804853, - "p10": 15.288091352804853, - "p25": 15.288091352804853, - "p50": 15.288091352804853, - "p75": 15.288091352804853, - "p90": 15.288091352804853, - "p95": 15.288091352804853, - "p99": 15.288091352804853, - "p999": 15.288091352804853, - } - - filtered = _filter_duplicate_percentiles(percentiles) - - # Should only keep the largest (p999) for mathematical accuracy - assert filtered == {"p999": 15.288091352804853} - - -def test_filter_consecutive_duplicates(): - """Test filtering when some consecutive percentiles have the same value.""" - percentiles = { - "p001": 15.288091352804853, - "p01": 15.288091352804853, - "p05": 15.288091352804853, - "p10": 15.288091352804853, - "p25": 15.288091352804853, - "p50": 16.41327511776994, # Different value - "p75": 16.41327511776994, - "p90": 17.03541629998259, # Different value - "p95": 17.03541629998259, - "p99": 17.03541629998259, - "p999": 17.03541629998259, - } - - filtered = _filter_duplicate_percentiles(percentiles) - - # Should keep largest of each group for mathematical accuracy - assert filtered == { - "p25": 15.288091352804853, - "p75": 16.41327511776994, - "p999": 17.03541629998259, - } - - -def test_no_duplicates(): - """Test that unique values are all preserved.""" - percentiles = { - "p001": 13.181080445834912, - "p01": 13.181080445834912, # Same as p001 - "p05": 13.530595573836457, # Different - "p10": 13.843972502554365, - "p25": 14.086376978251748, - "p50": 14.403258051191058, - "p75": 14.738608817056042, - "p90": 15.18136631856698, - "p95": 15.7213110894772, - "p99": 15.7213110894772, # Same as p95 - "p999": 15.7213110894772, # Same as p99 - } - - filtered = _filter_duplicate_percentiles(percentiles) - - # Should keep largest of each duplicate group (e.g. p999 instead of p95) - assert filtered == { - "p01": 13.181080445834912, - "p05": 13.530595573836457, - "p10": 13.843972502554365, - "p25": 14.086376978251748, - "p50": 14.403258051191058, - "p75": 14.738608817056042, - "p90": 15.18136631856698, - "p999": 15.7213110894772, - } - - -def test_empty_percentiles(): - """Test with empty percentiles dictionary.""" - filtered = _filter_duplicate_percentiles({}) - assert filtered == {} - - -def test_single_percentile(): - """Test with only one percentile.""" - percentiles = {"p50": 14.403258051191058} - filtered = _filter_duplicate_percentiles(percentiles) - assert filtered == {"p50": 14.403258051191058} - - -def test_two_different_values(): - """Test with two different values.""" - percentiles = { - "p25": 14.086376978251748, - "p50": 14.403258051191058, - } - filtered = _filter_duplicate_percentiles(percentiles) - assert filtered == percentiles - - -def test_partial_percentiles(): - """Test that order is maintained even with partial percentiles.""" - percentiles = { - "p50": 16.41327511776994, - "p10": 15.288091352804853, - "p90": 17.03541629998259, - } - - filtered = _filter_duplicate_percentiles(percentiles) - - # Should maintain order from percentile_order list - assert list(filtered.keys()) == ["p10", "p50", "p90"] - - -def test_model_dump_filters_duplicates(): - """Test that model_dump applies percentile filtering.""" - from guidellm.benchmark.outputs.html import _TabularDistributionSummary - - # Create a distribution with duplicate percentiles (typical of small datasets) - dist = _TabularDistributionSummary( - mean=15.5, - median=15.288091352804853, - mode=15.288091352804853, - variance=0.1, - std_dev=0.316, - min=15.288091352804853, - max=17.03541629998259, - count=3, - total_sum=46.5, - percentiles=Percentiles( - p001=15.288091352804853, - p01=15.288091352804853, - p05=15.288091352804853, - p10=15.288091352804853, - p25=15.288091352804853, - p50=16.41327511776994, - p75=16.41327511776994, - p90=17.03541629998259, - p95=17.03541629998259, - p99=17.03541629998259, - p999=17.03541629998259, - ), - ) - - data = dist.model_dump() - - # Check that percentiles were filtered, keeping largest of each group - assert data["percentiles"] == { - "p25": 15.288091352804853, - "p75": 16.41327511776994, - "p999": 17.03541629998259, - } - - # Ensure other fields remain unchanged - assert data["mean"] == 15.5 - assert data["median"] == 15.288091352804853 - assert data["count"] == 3 diff --git a/tests/unit/test_settings.py b/tests/unit/test_settings.py index a9abf1152..d50901879 100644 --- a/tests/unit/test_settings.py +++ b/tests/unit/test_settings.py @@ -3,23 +3,17 @@ from guidellm.settings import ( DatasetSettings, LoggingSettings, - ReportGenerationSettings, Settings, print_config, reload_settings, settings, ) -BASE_URL = ( - "https://raw.githubusercontent.com/vllm-project/guidellm/refs/heads/gh-pages/ui/" -) - @pytest.mark.smoke def test_default_settings(): settings = Settings() assert settings.logging == LoggingSettings() - assert settings.report_generation.source.startswith(BASE_URL) @pytest.mark.smoke @@ -34,7 +28,6 @@ def test_settings_from_env_variables(mocker): settings = Settings() assert settings.logging.disabled is True - assert settings.report_generation.source == "http://custom.url" @pytest.mark.sanity @@ -51,11 +44,6 @@ def test_logging_settings(): assert logging_settings.log_file_level == "ERROR" -def test_report_generation_settings(): - report_settings = ReportGenerationSettings(source="http://custom.report") - assert report_settings.source == "http://custom.report" - - @pytest.mark.sanity def test_generate_env_file(): settings = Settings()