From 83e2fc687fcdad07baf27b726f12802c300a55dd Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Tue, 5 Nov 2024 18:41:09 +0700 Subject: [PATCH 01/85] Rename check to grouping in dashboard UI --- .../DashboardControlsSummary/index.tsx | 4 +- .../components/SaveSnapshotButton/index.tsx | 6 +- .../dashboards/SearchPathEditor/index.tsx | 2 +- .../src/components/dashboards/Table/index.tsx | 2 +- .../Benchmark/ControlDimension.tsx | 0 .../{check => grouping}/Benchmark/index.tsx | 19 +++-- .../CheckFilterConfig/index.tsx | 4 +- .../CheckFilterEditor/index.test.ts | 2 +- .../CheckFilterEditor/index.tsx | 0 .../CheckGrouping/index.tsx | 12 ++-- .../CheckGroupingConfig/index.tsx | 0 .../CheckGroupingEditor/index.tsx | 0 .../{check => grouping}/CheckPanel/index.tsx | 13 ++-- .../CheckSummaryChart/index.tsx | 0 .../CustomizeViewSummary/index.tsx | 6 +- .../{check => grouping}/common/Benchmark.ts | 2 +- .../common/CheckEditorAddItem.tsx | 0 .../{check => grouping}/common/Control.ts | 2 +- .../{check => grouping}/common/index.test.js | 0 .../{check => grouping}/common/index.ts | 0 .../common/node/BenchmarkNode.ts | 0 .../common/node/ControlEmptyResultNode.ts | 0 .../common/node/ControlErrorNode.ts | 0 .../common/node/ControlNode.ts | 0 .../common/node/ControlResultNode.ts | 0 .../common/node/ControlRunningNode.ts | 0 .../common/node/HierarchyNode.ts | 0 .../common/node/KeyValuePairNode.ts | 0 .../common/node/RootNode.ts | 0 .../layout/Dashboard/DashboardControls.tsx | 4 +- .../src/hooks/useCheckGroupingConfig.ts | 2 +- .../{useCheckGrouping.tsx => useGrouping.tsx} | 69 +++++++++---------- ...erConfig.ts => useGroupingFilterConfig.ts} | 6 +- ui/dashboard/src/types/index.ts | 2 +- ui/dashboard/src/utils/registerComponents.ts | 2 +- ui/dashboard/src/utils/snapshot.test.ts | 2 +- ui/dashboard/src/utils/snapshot.ts | 2 +- 37 files changed, 75 insertions(+), 88 deletions(-) rename ui/dashboard/src/components/dashboards/{check => grouping}/Benchmark/ControlDimension.tsx (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/Benchmark/index.tsx (98%) rename ui/dashboard/src/components/dashboards/{check => grouping}/CheckFilterConfig/index.tsx (93%) rename ui/dashboard/src/components/dashboards/{check => grouping}/CheckFilterEditor/index.test.ts (97%) rename ui/dashboard/src/components/dashboards/{check => grouping}/CheckFilterEditor/index.tsx (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/CheckGrouping/index.tsx (80%) rename ui/dashboard/src/components/dashboards/{check => grouping}/CheckGroupingConfig/index.tsx (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/CheckGroupingEditor/index.tsx (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/CheckPanel/index.tsx (97%) rename ui/dashboard/src/components/dashboards/{check => grouping}/CheckSummaryChart/index.tsx (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/CustomizeViewSummary/index.tsx (74%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/Benchmark.ts (99%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/CheckEditorAddItem.tsx (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/Control.ts (99%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/index.test.js (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/index.ts (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/node/BenchmarkNode.ts (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/node/ControlEmptyResultNode.ts (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/node/ControlErrorNode.ts (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/node/ControlNode.ts (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/node/ControlResultNode.ts (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/node/ControlRunningNode.ts (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/node/HierarchyNode.ts (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/node/KeyValuePairNode.ts (100%) rename ui/dashboard/src/components/dashboards/{check => grouping}/common/node/RootNode.ts (100%) rename ui/dashboard/src/hooks/{useCheckGrouping.tsx => useGrouping.tsx} (94%) rename ui/dashboard/src/hooks/{useCheckFilterConfig.ts => useGroupingFilterConfig.ts} (79%) diff --git a/ui/dashboard/src/components/DashboardControlsSummary/index.tsx b/ui/dashboard/src/components/DashboardControlsSummary/index.tsx index fad3b754..c35c5e01 100644 --- a/ui/dashboard/src/components/DashboardControlsSummary/index.tsx +++ b/ui/dashboard/src/components/DashboardControlsSummary/index.tsx @@ -1,11 +1,11 @@ import { CheckDisplayGroup, CheckFilter, -} from "@powerpipe/components/dashboards/check/common"; +} from "@powerpipe/components/dashboards/grouping/common"; import { classNames } from "@powerpipe/utils/styles"; import { Noop } from "@powerpipe/types/func"; import { ReactNode } from "react"; -import { validateFilter } from "@powerpipe/components/dashboards/check/CheckFilterEditor"; +import { validateFilter } from "@powerpipe/components/dashboards/grouping/CheckFilterEditor"; type DashboardControlsSummaryProps = { searchPathPrefix: string[]; diff --git a/ui/dashboard/src/components/SaveSnapshotButton/index.tsx b/ui/dashboard/src/components/SaveSnapshotButton/index.tsx index a1d08e71..ee29f32e 100644 --- a/ui/dashboard/src/components/SaveSnapshotButton/index.tsx +++ b/ui/dashboard/src/components/SaveSnapshotButton/index.tsx @@ -1,6 +1,6 @@ import Icon from "@powerpipe/components/Icon"; import NeutralButton from "@powerpipe/components/forms/NeutralButton"; -import useCheckFilterConfig from "@powerpipe/hooks/useCheckFilterConfig"; +import useGroupingFilterConfig from "@powerpipe/hooks/useGroupingFilterConfig"; import useCheckGroupingConfig from "@powerpipe/hooks/useCheckGroupingConfig"; import { DashboardDataModeCLISnapshot, @@ -15,11 +15,11 @@ import { import { saveAs } from "file-saver"; import { timestampForFilename } from "@powerpipe/utils/date"; import { useDashboard } from "@powerpipe/hooks/useDashboard"; -import { validateFilter } from "@powerpipe/components/dashboards/check/CheckFilterEditor"; +import { validateFilter } from "@powerpipe/components/dashboards/grouping/CheckFilterEditor"; const SaveSnapshotButton = () => { const { dashboard, dataMode, selectedDashboard, snapshot } = useDashboard(); - const filterConfig = useCheckFilterConfig(); + const filterConfig = useGroupingFilterConfig(); const groupingConfig = useCheckGroupingConfig(); const saveSnapshot = () => { diff --git a/ui/dashboard/src/components/dashboards/SearchPathEditor/index.tsx b/ui/dashboard/src/components/dashboards/SearchPathEditor/index.tsx index d8ba3764..1d28d60a 100644 --- a/ui/dashboard/src/components/dashboards/SearchPathEditor/index.tsx +++ b/ui/dashboard/src/components/dashboards/SearchPathEditor/index.tsx @@ -1,4 +1,4 @@ -import CheckEditorAddItem from "@powerpipe/components/dashboards/check/common/CheckEditorAddItem"; +import CheckEditorAddItem from "@powerpipe/components/dashboards/grouping/common/CheckEditorAddItem"; import Icon from "@powerpipe/components/Icon"; import Select from "react-select"; import useSelectInputStyles from "@powerpipe/components/dashboards/inputs/common/useSelectInputStyles"; diff --git a/ui/dashboard/src/components/dashboards/Table/index.tsx b/ui/dashboard/src/components/dashboards/Table/index.tsx index 3abcf5d5..8c5277f1 100644 --- a/ui/dashboard/src/components/dashboards/Table/index.tsx +++ b/ui/dashboard/src/components/dashboards/Table/index.tsx @@ -1,4 +1,4 @@ -import ControlDimension from "../check/Benchmark/ControlDimension"; +import ControlDimension from "../grouping/Benchmark/ControlDimension"; import isEmpty from "lodash/isEmpty"; import isObject from "lodash/isObject"; import useDeepCompareEffect from "use-deep-compare-effect"; diff --git a/ui/dashboard/src/components/dashboards/check/Benchmark/ControlDimension.tsx b/ui/dashboard/src/components/dashboards/grouping/Benchmark/ControlDimension.tsx similarity index 100% rename from ui/dashboard/src/components/dashboards/check/Benchmark/ControlDimension.tsx rename to ui/dashboard/src/components/dashboards/grouping/Benchmark/ControlDimension.tsx diff --git a/ui/dashboard/src/components/dashboards/check/Benchmark/index.tsx b/ui/dashboard/src/components/dashboards/grouping/Benchmark/index.tsx similarity index 98% rename from ui/dashboard/src/components/dashboards/check/Benchmark/index.tsx rename to ui/dashboard/src/components/dashboards/grouping/Benchmark/index.tsx index 15101cec..b219e574 100644 --- a/ui/dashboard/src/components/dashboards/check/Benchmark/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/Benchmark/index.tsx @@ -8,6 +8,7 @@ import Error from "@powerpipe/components/dashboards/Error"; import Grid from "@powerpipe/components/dashboards/layout/Grid"; import Panel from "@powerpipe/components/dashboards/layout/Panel"; import PanelControls from "@powerpipe/components/dashboards/layout/Panel/PanelControls"; +import useGroupingFilterConfig from "@powerpipe/hooks/useGroupingFilterConfig"; import usePanelControls from "@powerpipe/hooks/usePanelControls"; import { BenchmarkTreeProps, @@ -17,23 +18,19 @@ import { CheckSummary, } from "../common"; import { CardType } from "@powerpipe/components/dashboards/data/CardDataProcessor"; -import { - CheckGroupingProvider, - useCheckGrouping, -} from "@powerpipe/hooks/useCheckGrouping"; import { default as BenchmarkType } from "../common/Benchmark"; import { getComponent, registerComponent, } from "@powerpipe/components/dashboards"; +import { GroupingProvider, useGrouping } from "@powerpipe/hooks/useGrouping"; import { noop } from "@powerpipe/utils/func"; import { DashboardActions, PanelDefinition, PanelsMap } from "@powerpipe/types"; import { useDashboard } from "@powerpipe/hooks/useDashboard"; import { useEffect, useMemo, useState } from "react"; -import { Width } from "@powerpipe/components/dashboards/common"; -import useCheckFilterConfig from "@powerpipe/hooks/useCheckFilterConfig"; -import { validateFilter } from "../CheckFilterEditor"; import { useSearchParams } from "react-router-dom"; +import { validateFilter } from "../CheckFilterEditor"; +import { Width } from "@powerpipe/components/dashboards/common"; const Table = getComponent("table"); @@ -56,7 +53,7 @@ type InnerCheckProps = { }; const Benchmark = (props: InnerCheckProps) => { - const { expressions } = useCheckFilterConfig(); + const { expressions } = useGroupingFilterConfig(); const { cliMode, dispatch, selectedPanel } = useDashboard(); const benchmarkDataTable = useMemo(() => { if ( @@ -499,7 +496,7 @@ const Inner = ({ showControls, withTitle }) => { firstChildSummaries, diffFirstChildSummaries, diffGrouping, - } = useCheckGrouping(); + } = useGrouping(); if (!definition || !benchmark || !grouping) { return null; @@ -550,9 +547,9 @@ type BenchmarkProps = PanelDefinition & { const BenchmarkWrapper = (props: BenchmarkProps) => { return ( - + - + ); }; diff --git a/ui/dashboard/src/components/dashboards/check/CheckFilterConfig/index.tsx b/ui/dashboard/src/components/dashboards/grouping/CheckFilterConfig/index.tsx similarity index 93% rename from ui/dashboard/src/components/dashboards/check/CheckFilterConfig/index.tsx rename to ui/dashboard/src/components/dashboards/grouping/CheckFilterConfig/index.tsx index d92da426..70e8976a 100644 --- a/ui/dashboard/src/components/dashboards/check/CheckFilterConfig/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/CheckFilterConfig/index.tsx @@ -1,5 +1,5 @@ import CheckFilterEditor, { validateFilter } from "../CheckFilterEditor"; -import useCheckFilterConfig from "@powerpipe/hooks/useCheckFilterConfig"; +import useGroupingFilterConfig from "@powerpipe/hooks/useGroupingFilterConfig"; import { CheckFilter } from "../common"; import { Fragment, ReactNode } from "react"; import { useSearchParams } from "react-router-dom"; @@ -42,7 +42,7 @@ const filtersToText = (filter: CheckFilter) => { const CheckFilterConfig = () => { const [, setSearchParams] = useSearchParams(); - const filterConfig = useCheckFilterConfig(); + const filterConfig = useGroupingFilterConfig(); const saveFilterConfig = (toSave: CheckFilter) => { setSearchParams((previous) => { diff --git a/ui/dashboard/src/components/dashboards/check/CheckFilterEditor/index.test.ts b/ui/dashboard/src/components/dashboards/grouping/CheckFilterEditor/index.test.ts similarity index 97% rename from ui/dashboard/src/components/dashboards/check/CheckFilterEditor/index.test.ts rename to ui/dashboard/src/components/dashboards/grouping/CheckFilterEditor/index.test.ts index 818b76c0..bae05df5 100644 --- a/ui/dashboard/src/components/dashboards/check/CheckFilterEditor/index.test.ts +++ b/ui/dashboard/src/components/dashboards/grouping/CheckFilterEditor/index.test.ts @@ -1,4 +1,4 @@ -import { validateFilter } from "@powerpipe/components/dashboards/check/CheckFilterEditor"; // Replace with the actual module path +import { validateFilter } from "@powerpipe/components/dashboards/grouping/CheckFilterEditor"; // Replace with the actual module path interface TestCase { name: string; diff --git a/ui/dashboard/src/components/dashboards/check/CheckFilterEditor/index.tsx b/ui/dashboard/src/components/dashboards/grouping/CheckFilterEditor/index.tsx similarity index 100% rename from ui/dashboard/src/components/dashboards/check/CheckFilterEditor/index.tsx rename to ui/dashboard/src/components/dashboards/grouping/CheckFilterEditor/index.tsx diff --git a/ui/dashboard/src/components/dashboards/check/CheckGrouping/index.tsx b/ui/dashboard/src/components/dashboards/grouping/CheckGrouping/index.tsx similarity index 80% rename from ui/dashboard/src/components/dashboards/check/CheckGrouping/index.tsx rename to ui/dashboard/src/components/dashboards/grouping/CheckGrouping/index.tsx index 70110e33..4ed5432e 100644 --- a/ui/dashboard/src/components/dashboards/check/CheckGrouping/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/CheckGrouping/index.tsx @@ -2,9 +2,9 @@ import CheckPanel from "../CheckPanel"; import sortBy from "lodash/sortBy"; import { CheckGroupNodeStates, - CheckGroupingActions, - useCheckGrouping, -} from "@powerpipe/hooks/useCheckGrouping"; + GroupingActions, + useGrouping, +} from "@powerpipe/hooks/useGrouping"; import { CheckNode } from "../common"; import { useCallback, useEffect, useState } from "react"; @@ -13,19 +13,19 @@ type CheckGroupingProps = { }; const CheckGrouping = ({ node }: CheckGroupingProps) => { - const { dispatch, nodeStates } = useCheckGrouping(); + const { dispatch, nodeStates } = useGrouping(); const [restoreNodeStates, setRestoreNodeStates] = useState(null); const expand = useCallback(() => { setRestoreNodeStates(nodeStates); - dispatch({ type: CheckGroupingActions.EXPAND_ALL_NODES }); + dispatch({ type: GroupingActions.EXPAND_ALL_NODES }); }, [dispatch, nodeStates]); const restore = useCallback(() => { if (restoreNodeStates) { dispatch({ - type: CheckGroupingActions.UPDATE_NODES, + type: GroupingActions.UPDATE_NODES, nodes: restoreNodeStates, }); } diff --git a/ui/dashboard/src/components/dashboards/check/CheckGroupingConfig/index.tsx b/ui/dashboard/src/components/dashboards/grouping/CheckGroupingConfig/index.tsx similarity index 100% rename from ui/dashboard/src/components/dashboards/check/CheckGroupingConfig/index.tsx rename to ui/dashboard/src/components/dashboards/grouping/CheckGroupingConfig/index.tsx diff --git a/ui/dashboard/src/components/dashboards/check/CheckGroupingEditor/index.tsx b/ui/dashboard/src/components/dashboards/grouping/CheckGroupingEditor/index.tsx similarity index 100% rename from ui/dashboard/src/components/dashboards/check/CheckGroupingEditor/index.tsx rename to ui/dashboard/src/components/dashboards/grouping/CheckGroupingEditor/index.tsx diff --git a/ui/dashboard/src/components/dashboards/check/CheckPanel/index.tsx b/ui/dashboard/src/components/dashboards/grouping/CheckPanel/index.tsx similarity index 97% rename from ui/dashboard/src/components/dashboards/check/CheckPanel/index.tsx rename to ui/dashboard/src/components/dashboards/grouping/CheckPanel/index.tsx index a48fcdad..40476586 100644 --- a/ui/dashboard/src/components/dashboards/check/CheckPanel/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/CheckPanel/index.tsx @@ -3,7 +3,7 @@ import ControlDimension from "../Benchmark/ControlDimension"; import ControlEmptyResultNode from "../common/node/ControlEmptyResultNode"; import ControlErrorNode from "../common/node/ControlErrorNode"; import ControlResultNode from "../common/node/ControlResultNode"; -import KeyValuePairNode from "@powerpipe/components/dashboards/check/common/node/KeyValuePairNode"; +import KeyValuePairNode from "@powerpipe/components/dashboards/grouping/common/node/KeyValuePairNode"; import sortBy from "lodash/sortBy"; import { AlarmIcon, @@ -16,10 +16,7 @@ import { SkipIcon, UnknownIcon, } from "@powerpipe/constants/icons"; -import { - CheckGroupingActions, - useCheckGrouping, -} from "@powerpipe/hooks/useCheckGrouping"; +import { GroupingActions, useGrouping } from "@powerpipe/hooks/useGrouping"; import { CheckNode, CheckResult, @@ -286,7 +283,7 @@ const CheckPanelSeverity = ({ severity_summary }: CheckPanelSeverityProps) => { const CheckPanel = ({ depth, node }: CheckPanelProps) => { const { firstChildSummaries, dispatch, groupingsConfig, nodeStates } = - useCheckGrouping(); + useGrouping(); const expanded = nodeStates[node.name] ? nodeStates[node.name].expanded : false; @@ -350,8 +347,8 @@ const CheckPanel = ({ depth, node }: CheckPanelProps) => { can_be_expanded ? dispatch({ type: expanded - ? CheckGroupingActions.COLLAPSE_NODE - : CheckGroupingActions.EXPAND_NODE, + ? GroupingActions.COLLAPSE_NODE + : GroupingActions.EXPAND_NODE, name: node.name, }) : null diff --git a/ui/dashboard/src/components/dashboards/check/CheckSummaryChart/index.tsx b/ui/dashboard/src/components/dashboards/grouping/CheckSummaryChart/index.tsx similarity index 100% rename from ui/dashboard/src/components/dashboards/check/CheckSummaryChart/index.tsx rename to ui/dashboard/src/components/dashboards/grouping/CheckSummaryChart/index.tsx diff --git a/ui/dashboard/src/components/dashboards/check/CustomizeViewSummary/index.tsx b/ui/dashboard/src/components/dashboards/grouping/CustomizeViewSummary/index.tsx similarity index 74% rename from ui/dashboard/src/components/dashboards/check/CustomizeViewSummary/index.tsx rename to ui/dashboard/src/components/dashboards/grouping/CustomizeViewSummary/index.tsx index 90328f9b..bdb111a2 100644 --- a/ui/dashboard/src/components/dashboards/check/CustomizeViewSummary/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/CustomizeViewSummary/index.tsx @@ -1,9 +1,9 @@ -import useCheckFilterConfig from "@powerpipe/hooks/useCheckFilterConfig"; +import useGroupingFilterConfig from "@powerpipe/hooks/useGroupingFilterConfig"; import useCheckGroupingConfig from "@powerpipe/hooks/useCheckGroupingConfig"; -import { validateFilter } from "@powerpipe/components/dashboards/check/CheckFilterEditor"; +import { validateFilter } from "@powerpipe/components/dashboards/grouping/CheckFilterEditor"; const CustomizeViewSummary = () => { - const filterConfig = useCheckFilterConfig(); + const filterConfig = useGroupingFilterConfig(); const groupingConfig = useCheckGroupingConfig(); const filterCount = filterConfig?.expressions?.length diff --git a/ui/dashboard/src/components/dashboards/check/common/Benchmark.ts b/ui/dashboard/src/components/dashboards/grouping/common/Benchmark.ts similarity index 99% rename from ui/dashboard/src/components/dashboards/check/common/Benchmark.ts rename to ui/dashboard/src/components/dashboards/grouping/common/Benchmark.ts index 8f008a33..22bc0325 100644 --- a/ui/dashboard/src/components/dashboards/check/common/Benchmark.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/Benchmark.ts @@ -11,7 +11,7 @@ import { CheckResult, CheckSeveritySummary, CheckSummary, -} from "@powerpipe/components/dashboards/check/common"; +} from "@powerpipe/components/dashboards/grouping/common"; import { DashboardLayoutNode, PanelsMap } from "@powerpipe/types"; import { LeafNodeData, diff --git a/ui/dashboard/src/components/dashboards/check/common/CheckEditorAddItem.tsx b/ui/dashboard/src/components/dashboards/grouping/common/CheckEditorAddItem.tsx similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/CheckEditorAddItem.tsx rename to ui/dashboard/src/components/dashboards/grouping/common/CheckEditorAddItem.tsx diff --git a/ui/dashboard/src/components/dashboards/check/common/Control.ts b/ui/dashboard/src/components/dashboards/grouping/common/Control.ts similarity index 99% rename from ui/dashboard/src/components/dashboards/check/common/Control.ts rename to ui/dashboard/src/components/dashboards/grouping/common/Control.ts index dc7f0edc..60098018 100644 --- a/ui/dashboard/src/components/dashboards/check/common/Control.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/Control.ts @@ -12,7 +12,7 @@ import { CheckSummary, CheckTags, findDimension, -} from "@powerpipe/components/dashboards/check/common"; +} from "@powerpipe/components/dashboards/grouping/common"; import { DashboardRunState } from "@powerpipe/types"; import { LeafNodeData, diff --git a/ui/dashboard/src/components/dashboards/check/common/index.test.js b/ui/dashboard/src/components/dashboards/grouping/common/index.test.js similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/index.test.js rename to ui/dashboard/src/components/dashboards/grouping/common/index.test.js diff --git a/ui/dashboard/src/components/dashboards/check/common/index.ts b/ui/dashboard/src/components/dashboards/grouping/common/index.ts similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/index.ts rename to ui/dashboard/src/components/dashboards/grouping/common/index.ts diff --git a/ui/dashboard/src/components/dashboards/check/common/node/BenchmarkNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/BenchmarkNode.ts similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/node/BenchmarkNode.ts rename to ui/dashboard/src/components/dashboards/grouping/common/node/BenchmarkNode.ts diff --git a/ui/dashboard/src/components/dashboards/check/common/node/ControlEmptyResultNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlEmptyResultNode.ts similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/node/ControlEmptyResultNode.ts rename to ui/dashboard/src/components/dashboards/grouping/common/node/ControlEmptyResultNode.ts diff --git a/ui/dashboard/src/components/dashboards/check/common/node/ControlErrorNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlErrorNode.ts similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/node/ControlErrorNode.ts rename to ui/dashboard/src/components/dashboards/grouping/common/node/ControlErrorNode.ts diff --git a/ui/dashboard/src/components/dashboards/check/common/node/ControlNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlNode.ts similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/node/ControlNode.ts rename to ui/dashboard/src/components/dashboards/grouping/common/node/ControlNode.ts diff --git a/ui/dashboard/src/components/dashboards/check/common/node/ControlResultNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlResultNode.ts similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/node/ControlResultNode.ts rename to ui/dashboard/src/components/dashboards/grouping/common/node/ControlResultNode.ts diff --git a/ui/dashboard/src/components/dashboards/check/common/node/ControlRunningNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlRunningNode.ts similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/node/ControlRunningNode.ts rename to ui/dashboard/src/components/dashboards/grouping/common/node/ControlRunningNode.ts diff --git a/ui/dashboard/src/components/dashboards/check/common/node/HierarchyNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/HierarchyNode.ts similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/node/HierarchyNode.ts rename to ui/dashboard/src/components/dashboards/grouping/common/node/HierarchyNode.ts diff --git a/ui/dashboard/src/components/dashboards/check/common/node/KeyValuePairNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/KeyValuePairNode.ts similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/node/KeyValuePairNode.ts rename to ui/dashboard/src/components/dashboards/grouping/common/node/KeyValuePairNode.ts diff --git a/ui/dashboard/src/components/dashboards/check/common/node/RootNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/RootNode.ts similarity index 100% rename from ui/dashboard/src/components/dashboards/check/common/node/RootNode.ts rename to ui/dashboard/src/components/dashboards/grouping/common/node/RootNode.ts diff --git a/ui/dashboard/src/components/dashboards/layout/Dashboard/DashboardControls.tsx b/ui/dashboard/src/components/dashboards/layout/Dashboard/DashboardControls.tsx index 684e7f34..81ae6200 100644 --- a/ui/dashboard/src/components/dashboards/layout/Dashboard/DashboardControls.tsx +++ b/ui/dashboard/src/components/dashboards/layout/Dashboard/DashboardControls.tsx @@ -1,5 +1,5 @@ -import CheckFilterConfig from "@powerpipe/components/dashboards/check/CheckFilterConfig"; -import CheckGroupingConfig from "@powerpipe/components/dashboards/check/CheckGroupingConfig"; +import CheckFilterConfig from "@powerpipe/components/dashboards/grouping/CheckFilterConfig"; +import CheckGroupingConfig from "@powerpipe/components/dashboards/grouping/CheckGroupingConfig"; import Icon from "@powerpipe/components/Icon"; import { DashboardActions } from "@powerpipe/types"; import { useDashboard } from "@powerpipe/hooks/useDashboard"; diff --git a/ui/dashboard/src/hooks/useCheckGroupingConfig.ts b/ui/dashboard/src/hooks/useCheckGroupingConfig.ts index d90eca7b..04882be8 100644 --- a/ui/dashboard/src/hooks/useCheckGroupingConfig.ts +++ b/ui/dashboard/src/hooks/useCheckGroupingConfig.ts @@ -1,7 +1,7 @@ import { CheckDisplayGroup, CheckDisplayGroupType, -} from "@powerpipe/components/dashboards/check/common"; +} from "@powerpipe/components/dashboards/grouping/common"; import { useMemo } from "react"; import { useSearchParams } from "react-router-dom"; diff --git a/ui/dashboard/src/hooks/useCheckGrouping.tsx b/ui/dashboard/src/hooks/useGrouping.tsx similarity index 94% rename from ui/dashboard/src/hooks/useCheckGrouping.tsx rename to ui/dashboard/src/hooks/useGrouping.tsx index c0efc362..e7e35eb7 100644 --- a/ui/dashboard/src/hooks/useCheckGrouping.tsx +++ b/ui/dashboard/src/hooks/useGrouping.tsx @@ -1,12 +1,12 @@ -import BenchmarkNode from "@powerpipe/components/dashboards/check/common/node/BenchmarkNode"; -import ControlEmptyResultNode from "@powerpipe/components/dashboards/check/common/node/ControlEmptyResultNode"; -import ControlErrorNode from "@powerpipe/components/dashboards/check/common/node/ControlErrorNode"; -import ControlNode from "@powerpipe/components/dashboards/check/common/node/ControlNode"; -import ControlResultNode from "@powerpipe/components/dashboards/check/common/node/ControlResultNode"; -import ControlRunningNode from "@powerpipe/components/dashboards/check/common/node/ControlRunningNode"; -import KeyValuePairNode from "@powerpipe/components/dashboards/check/common/node/KeyValuePairNode"; -import RootNode from "@powerpipe/components/dashboards/check/common/node/RootNode"; -import useCheckFilterConfig from "./useCheckFilterConfig"; +import BenchmarkNode from "@powerpipe/components/dashboards/grouping/common/node/BenchmarkNode"; +import ControlEmptyResultNode from "@powerpipe/components/dashboards/grouping/common/node/ControlEmptyResultNode"; +import ControlErrorNode from "@powerpipe/components/dashboards/grouping/common/node/ControlErrorNode"; +import ControlNode from "@powerpipe/components/dashboards/grouping/common/node/ControlNode"; +import ControlResultNode from "@powerpipe/components/dashboards/grouping/common/node/ControlResultNode"; +import ControlRunningNode from "@powerpipe/components/dashboards/grouping/common/node/ControlRunningNode"; +import KeyValuePairNode from "@powerpipe/components/dashboards/grouping/common/node/KeyValuePairNode"; +import RootNode from "@powerpipe/components/dashboards/grouping/common/node/RootNode"; +import useGroupingFilterConfig from "./useGroupingFilterConfig"; import useCheckGroupingConfig from "./useCheckGroupingConfig"; import usePrevious from "./usePrevious"; import { @@ -20,7 +20,7 @@ import { CheckSummary, CheckTags, findDimension, -} from "@powerpipe/components/dashboards/check/common"; +} from "@powerpipe/components/dashboards/grouping/common"; import { createContext, useContext, @@ -28,7 +28,7 @@ import { useMemo, useReducer, } from "react"; -import { default as BenchmarkType } from "@powerpipe/components/dashboards/check/common/Benchmark"; +import { default as BenchmarkType } from "@powerpipe/components/dashboards/grouping/common/Benchmark"; import { ElementType, IActions, @@ -76,7 +76,7 @@ type ICheckGroupingContext = { dispatch(action: CheckGroupingAction): void; }; -const CheckGroupingActions: IActions = { +const GroupingActions: IActions = { COLLAPSE_ALL_NODES: "collapse_all_nodes", COLLAPSE_NODE: "collapse_node", EXPAND_ALL_NODES: "expand_all_nodes", @@ -84,9 +84,9 @@ const CheckGroupingActions: IActions = { UPDATE_NODES: "update_nodes", }; -const checkGroupingActions = Object.values(CheckGroupingActions); +const checkGroupingActions = Object.values(GroupingActions); -const CheckGroupingContext = createContext(null); +const GroupingContext = createContext(null); const addBenchmarkTrunkNode = ( benchmark_trunk: BenchmarkType[], @@ -519,7 +519,7 @@ const getCheckResultNode = (checkResult: CheckResult) => { const reducer = (state: CheckGroupNodeStates, action) => { switch (action.type) { - case CheckGroupingActions.COLLAPSE_ALL_NODES: { + case GroupingActions.COLLAPSE_ALL_NODES: { const newNodes = {}; for (const [name, node] of Object.entries(state)) { newNodes[name] = { @@ -532,7 +532,7 @@ const reducer = (state: CheckGroupNodeStates, action) => { nodes: newNodes, }; } - case CheckGroupingActions.COLLAPSE_NODE: + case GroupingActions.COLLAPSE_NODE: return { ...state, [action.name]: { @@ -540,7 +540,7 @@ const reducer = (state: CheckGroupNodeStates, action) => { expanded: false, }, }; - case CheckGroupingActions.EXPAND_ALL_NODES: { + case GroupingActions.EXPAND_ALL_NODES: { const newNodes = {}; Object.entries(state).forEach(([name, node]) => { newNodes[name] = { @@ -550,7 +550,7 @@ const reducer = (state: CheckGroupNodeStates, action) => { }); return newNodes; } - case CheckGroupingActions.EXPAND_NODE: { + case GroupingActions.EXPAND_NODE: { return { ...state, [action.name]: { @@ -559,7 +559,7 @@ const reducer = (state: CheckGroupNodeStates, action) => { }, }; } - case CheckGroupingActions.UPDATE_NODES: + case GroupingActions.UPDATE_NODES: return action.nodes; default: return state; @@ -785,13 +785,13 @@ const includeResult = ( return matches.every((m) => m); }; -const useGrouping = ( +const useGroupingInternal = ( definition: PanelDefinition | null, panelsMap: PanelsMap | undefined, groupingsConfig: CheckDisplayGroup[], skip = false, ) => { - const checkFilterConfig = useCheckFilterConfig(); + const checkFilterConfig = useGroupingFilterConfig(); return useMemo(() => { const filterValues = { @@ -882,7 +882,7 @@ const useGrouping = ( }, [checkFilterConfig, definition, groupingsConfig, panelsMap, skip]); }; -const CheckGroupingProvider = ({ +const GroupingProvider = ({ children, definition, diff_panels, @@ -899,9 +899,9 @@ const CheckGroupingProvider = ({ firstChildSummaries, tempNodeStates, filterValues, - ] = useGrouping(definition, panelsMap, groupingsConfig); + ] = useGroupingInternal(definition, panelsMap, groupingsConfig); - const [, , diffGrouping, diffFirstChildSummaries] = useGrouping( + const [, , diffGrouping, diffFirstChildSummaries] = useGroupingInternal( definition, diff_panels, groupingsConfig, @@ -919,7 +919,7 @@ const CheckGroupingProvider = ({ return; } dispatch({ - type: CheckGroupingActions.UPDATE_NODES, + type: GroupingActions.UPDATE_NODES, nodes: tempNodeStates, }); }, [previousGroupings, groupingsConfig, tempNodeStates]); @@ -929,7 +929,7 @@ const CheckGroupingProvider = ({ }, [filterValues, setDashboardControlsContext]); return ( - {children} - + ); }; -const useCheckGrouping = () => { - const context = useContext(CheckGroupingContext); +const useGrouping = () => { + const context = useContext(GroupingContext); if (context === undefined) { - throw new Error( - "useCheckGrouping must be used within a CheckGroupingContext", - ); + throw new Error("useCheckGrouping must be used within a GroupingContext"); } return context as ICheckGroupingContext; }; -export { - CheckGroupingActions, - CheckGroupingContext, - CheckGroupingProvider, - useCheckGrouping, -}; +export { GroupingActions, GroupingContext, GroupingProvider, useGrouping }; // https://stackoverflow.com/questions/50737098/multi-level-grouping-in-javascript // keys = ['level1', 'level2'], diff --git a/ui/dashboard/src/hooks/useCheckFilterConfig.ts b/ui/dashboard/src/hooks/useGroupingFilterConfig.ts similarity index 79% rename from ui/dashboard/src/hooks/useCheckFilterConfig.ts rename to ui/dashboard/src/hooks/useGroupingFilterConfig.ts index c5695536..2f46c2aa 100644 --- a/ui/dashboard/src/hooks/useCheckFilterConfig.ts +++ b/ui/dashboard/src/hooks/useGroupingFilterConfig.ts @@ -1,8 +1,8 @@ -import { CheckFilter } from "@powerpipe/components/dashboards/check/common"; +import { CheckFilter } from "@powerpipe/components/dashboards/grouping/common"; import { useMemo } from "react"; import { useSearchParams } from "react-router-dom"; -const useCheckFilterConfig = (): CheckFilter => { +const useGroupingFilterConfig = (): CheckFilter => { const [searchParams] = useSearchParams(); const defaultFilter = { operator: "and", @@ -26,4 +26,4 @@ const useCheckFilterConfig = (): CheckFilter => { }, [searchParams]); }; -export default useCheckFilterConfig; +export default useGroupingFilterConfig; diff --git a/ui/dashboard/src/types/index.ts b/ui/dashboard/src/types/index.ts index 46ba516b..540b1f5f 100644 --- a/ui/dashboard/src/types/index.ts +++ b/ui/dashboard/src/types/index.ts @@ -1,7 +1,7 @@ import { CheckDisplayGroup, CheckFilter, -} from "@powerpipe/components/dashboards/check/common"; +} from "@powerpipe/components/dashboards/grouping/common"; import { LeafNodeData, Width } from "@powerpipe/components/dashboards/common"; import { Ref } from "react"; import { Theme } from "@powerpipe/hooks/useTheme"; diff --git a/ui/dashboard/src/utils/registerComponents.ts b/ui/dashboard/src/utils/registerComponents.ts index b06caabd..c81c0cb5 100644 --- a/ui/dashboard/src/utils/registerComponents.ts +++ b/ui/dashboard/src/utils/registerComponents.ts @@ -39,7 +39,7 @@ import "@powerpipe/components/dashboards/inputs/TextInput"; import "@powerpipe/components/dashboards/inputs/Input"; // Check -import "@powerpipe/components/dashboards/check/Benchmark"; +import "@powerpipe/components/dashboards/grouping/Benchmark"; // Dashboard import "@powerpipe/components/dashboards/layout/Dashboard"; diff --git a/ui/dashboard/src/utils/snapshot.test.ts b/ui/dashboard/src/utils/snapshot.test.ts index 2de3428f..da811eb0 100644 --- a/ui/dashboard/src/utils/snapshot.test.ts +++ b/ui/dashboard/src/utils/snapshot.test.ts @@ -13,7 +13,7 @@ import { import { CheckDisplayGroup, CheckDisplayGroupType, -} from "@powerpipe/components/dashboards/check/common"; +} from "@powerpipe/components/dashboards/grouping/common"; describe("snapshot utils", () => { describe("stripSnapshotDataForExport", () => { diff --git a/ui/dashboard/src/utils/snapshot.ts b/ui/dashboard/src/utils/snapshot.ts index 180e7f5d..e2199124 100644 --- a/ui/dashboard/src/utils/snapshot.ts +++ b/ui/dashboard/src/utils/snapshot.ts @@ -10,7 +10,7 @@ import { CheckDisplayGroup, CheckDisplayGroupType, CheckFilter, -} from "@powerpipe/components/dashboards/check/common"; +} from "@powerpipe/components/dashboards/grouping/common"; const stripObjectProperties = (obj) => { if (!obj) { From 32f8912b4bf3fd3ede18111f6f23bf7f039180fc Mon Sep 17 00:00:00 2001 From: kai Date: Wed, 6 Nov 2024 12:31:44 +0700 Subject: [PATCH 02/85] Add Detection and DetectionBenchmark.go --- internal/cmd/resource_cmd.go | 11 ++ internal/cmd/root.go | 1 + internal/dashboardevents/dashboard_changed.go | 127 ++++++++++------- internal/dashboardexecute/container_run.go | 5 + .../dashboard_execution_tree.go | 2 + internal/dashboardexecute/dashboard_run.go | 6 + .../detection_benchmark_run.go | 112 +++++++++++++++ internal/dashboardserver/server.go | 2 +- internal/parse/mod_decoder.go | 103 +++++++++++--- internal/parse/schema.go | 7 + internal/resources/benchmark.go | 5 +- internal/resources/dashboard_container.go | 4 - internal/resources/detection.go | 133 ++++++++++++++++++ internal/resources/detection_benchmark.go | 133 ++++++++++++++++++ internal/resources/generic_type.go | 2 + internal/resources/mod_resources.go | 65 +++++++++ 16 files changed, 639 insertions(+), 79 deletions(-) create mode 100644 internal/dashboardexecute/detection_benchmark_run.go create mode 100644 internal/resources/detection.go create mode 100644 internal/resources/detection_benchmark.go diff --git a/internal/cmd/resource_cmd.go b/internal/cmd/resource_cmd.go index 76559691..e9ff1510 100644 --- a/internal/cmd/resource_cmd.go +++ b/internal/cmd/resource_cmd.go @@ -127,6 +127,8 @@ func dashboardChildCommands() []*cobra.Command { resourceCmd[*resources.DashboardHierarchy](withCmdName("hierarchy")), resourceCmd[*resources.DashboardImage](withCmdName("image")), resourceCmd[*resources.DashboardTable](withCmdName("table")), + resourceCmd[*resources.Detection](withCmdName("detection")), + resourceCmd[*resources.DetectionBenchmark](withCmdName("detectionbenchmark")), resourceCmd[*resources.DashboardText](withCmdName("text")), } @@ -170,6 +172,9 @@ func resourceCommandShortDescription(typeName string) string { case schema.BlockTypeBenchmark: return "List, view, and run Powerpipe benchmarks" + case schema.BlockTypeDetectionBenchmark: + return "List, view, and run Powerpipe benchmarks" + case schema.BlockTypeDashboard: return "List, view, and run Powerpipe dashboards in batch mode" @@ -198,6 +203,12 @@ view details of a control from the current mod or its direct dependents or from case schema.BlockTypeBenchmark: return `List, view, and run Powerpipe benchmarks and its direct dependents. +Run a benchmark from the current mod or its direct dependents or from a Powerpipe server instance or +view details of a benchmark from the current mod or its direct dependents or from a Powerpipe server instance.` + + case schema.BlockTypeDetectionBenchmark: + return `List, view, and run Powerpipe benchmarks and its direct dependents. + Run a benchmark from the current mod or its direct dependents or from a Powerpipe server instance or view details of a benchmark from the current mod or its direct dependents or from a Powerpipe server instance.` diff --git a/internal/cmd/root.go b/internal/cmd/root.go index fc797ebe..f9fcde5f 100644 --- a/internal/cmd/root.go +++ b/internal/cmd/root.go @@ -55,6 +55,7 @@ func rootCommand() *cobra.Command { modCmd(), loginCmd(), resourceCmd[*resources.Benchmark](), + resourceCmd[*resources.DetectionBenchmark](), resourceCmd[*resources.Control](), resourceCmd[*resources.Dashboard](), resourceCmd[*resources.Query](), diff --git a/internal/dashboardevents/dashboard_changed.go b/internal/dashboardevents/dashboard_changed.go index 1427d14e..a3e2e3cb 100644 --- a/internal/dashboardevents/dashboard_changed.go +++ b/internal/dashboardevents/dashboard_changed.go @@ -6,56 +6,62 @@ import ( ) type DashboardChanged struct { - ChangedDashboards []*modconfig.ModTreeItemDiffs - ChangedContainers []*modconfig.ModTreeItemDiffs - ChangedControls []*modconfig.ModTreeItemDiffs - ChangedBenchmarks []*modconfig.ModTreeItemDiffs - ChangedCategories []*modconfig.ModTreeItemDiffs - ChangedCards []*modconfig.ModTreeItemDiffs - ChangedCharts []*modconfig.ModTreeItemDiffs - ChangedFlows []*modconfig.ModTreeItemDiffs - ChangedGraphs []*modconfig.ModTreeItemDiffs - ChangedHierarchies []*modconfig.ModTreeItemDiffs - ChangedImages []*modconfig.ModTreeItemDiffs - ChangedInputs []*modconfig.ModTreeItemDiffs - ChangedTables []*modconfig.ModTreeItemDiffs - ChangedTexts []*modconfig.ModTreeItemDiffs - ChangedNodes []*modconfig.ModTreeItemDiffs - ChangedEdges []*modconfig.ModTreeItemDiffs + ChangedDashboards []*modconfig.ModTreeItemDiffs + ChangedContainers []*modconfig.ModTreeItemDiffs + ChangedControls []*modconfig.ModTreeItemDiffs + ChangedBenchmarks []*modconfig.ModTreeItemDiffs + ChangedCategories []*modconfig.ModTreeItemDiffs + ChangedCards []*modconfig.ModTreeItemDiffs + ChangedCharts []*modconfig.ModTreeItemDiffs + ChangedDetections []*modconfig.ModTreeItemDiffs + ChangedDetectionBenchmarks []*modconfig.ModTreeItemDiffs + ChangedFlows []*modconfig.ModTreeItemDiffs + ChangedGraphs []*modconfig.ModTreeItemDiffs + ChangedHierarchies []*modconfig.ModTreeItemDiffs + ChangedImages []*modconfig.ModTreeItemDiffs + ChangedInputs []*modconfig.ModTreeItemDiffs + ChangedTables []*modconfig.ModTreeItemDiffs + ChangedTexts []*modconfig.ModTreeItemDiffs + ChangedNodes []*modconfig.ModTreeItemDiffs + ChangedEdges []*modconfig.ModTreeItemDiffs - NewDashboards []*resources.Dashboard - NewContainers []*resources.DashboardContainer - NewControls []*resources.Control - NewBenchmarks []*resources.Benchmark - NewCards []*resources.DashboardCard - NewCategories []*resources.DashboardCategory - NewCharts []*resources.DashboardChart - NewFlows []*resources.DashboardFlow - NewGraphs []*resources.DashboardGraph - NewHierarchies []*resources.DashboardHierarchy - NewImages []*resources.DashboardImage - NewInputs []*resources.DashboardInput - NewTables []*resources.DashboardTable - NewTexts []*resources.DashboardText - NewNodes []*resources.DashboardNode - NewEdges []*resources.DashboardEdge + NewDashboards []*resources.Dashboard + NewContainers []*resources.DashboardContainer + NewControls []*resources.Control + NewBenchmarks []*resources.Benchmark + NewCards []*resources.DashboardCard + NewCategories []*resources.DashboardCategory + NewCharts []*resources.DashboardChart + NewDetections []*resources.Detection + NewDetectionBenchmarks []*resources.DetectionBenchmark + NewFlows []*resources.DashboardFlow + NewGraphs []*resources.DashboardGraph + NewHierarchies []*resources.DashboardHierarchy + NewImages []*resources.DashboardImage + NewInputs []*resources.DashboardInput + NewTables []*resources.DashboardTable + NewTexts []*resources.DashboardText + NewNodes []*resources.DashboardNode + NewEdges []*resources.DashboardEdge - DeletedDashboards []*resources.Dashboard - DeletedContainers []*resources.DashboardContainer - DeletedControls []*resources.Control - DeletedBenchmarks []*resources.Benchmark - DeletedCards []*resources.DashboardCard - DeletedCategories []*resources.DashboardCategory - DeletedCharts []*resources.DashboardChart - DeletedFlows []*resources.DashboardFlow - DeletedGraphs []*resources.DashboardGraph - DeletedHierarchies []*resources.DashboardHierarchy - DeletedImages []*resources.DashboardImage - DeletedInputs []*resources.DashboardInput - DeletedTables []*resources.DashboardTable - DeletedTexts []*resources.DashboardText - DeletedNodes []*resources.DashboardNode - DeletedEdges []*resources.DashboardEdge + DeletedDashboards []*resources.Dashboard + DeletedContainers []*resources.DashboardContainer + DeletedControls []*resources.Control + DeletedBenchmarks []*resources.Benchmark + DeletedCards []*resources.DashboardCard + DeletedCategories []*resources.DashboardCategory + DeletedCharts []*resources.DashboardChart + DeletedDetections []*resources.Detection + DeletedDetectionBenchmarks []*resources.DetectionBenchmark + DeletedFlows []*resources.DashboardFlow + DeletedGraphs []*resources.DashboardGraph + DeletedHierarchies []*resources.DashboardHierarchy + DeletedImages []*resources.DashboardImage + DeletedInputs []*resources.DashboardInput + DeletedTables []*resources.DashboardTable + DeletedTexts []*resources.DashboardText + DeletedNodes []*resources.DashboardNode + DeletedEdges []*resources.DashboardEdge } // IsDashboardEvent implements DashboardEvent interface @@ -75,7 +81,8 @@ func (c *DashboardChanged) HasChanges() bool { len(c.ChangedImages)+ len(c.ChangedInputs)+ len(c.ChangedTables)+ - len(c.ChangedTexts)+ + len(c.ChangedDetections)+ + len(c.ChangedDetectionBenchmarks)+ len(c.ChangedNodes)+ len(c.ChangedEdges)+ len(c.NewDashboards)+ @@ -91,6 +98,8 @@ func (c *DashboardChanged) HasChanges() bool { len(c.NewImages)+ len(c.NewInputs)+ len(c.NewTables)+ + len(c.NewDetections)+ + len(c.NewDetectionBenchmarks)+ len(c.NewTexts)+ len(c.NewNodes)+ len(c.NewEdges)+ @@ -107,6 +116,8 @@ func (c *DashboardChanged) HasChanges() bool { len(c.DeletedImages)+ len(c.DeletedInputs)+ len(c.DeletedTables)+ + len(c.DeletedDetections)+ + len(c.DeletedDetectionBenchmarks)+ len(c.DeletedTexts)+ len(c.DeletedNodes)+ len(c.DeletedEdges) > 0 @@ -173,6 +184,16 @@ func (c *DashboardChanged) WalkChangedResources(resourceFunc func(item modconfig return err } } + for _, r := range c.ChangedDetections { + if continueWalking, err := resourceFunc(r.Item); err != nil || !continueWalking { + return err + } + } + for _, r := range c.ChangedDetectionBenchmarks { + if continueWalking, err := resourceFunc(r.Item); err != nil || !continueWalking { + return err + } + } for _, r := range c.ChangedTexts { if continueWalking, err := resourceFunc(r.Item); err != nil || !continueWalking { return err @@ -386,6 +407,14 @@ func (c *DashboardChanged) AddChanged(item modconfig.ModTreeItem) { if !c.diffsContain(c.ChangedTables, item) { c.ChangedTables = append(c.ChangedTables, diff) } + case *resources.Detection: + if !c.diffsContain(c.ChangedDetections, item) { + c.ChangedDetections = append(c.ChangedDetections, diff) + } + case *resources.DetectionBenchmark: + if !c.diffsContain(c.ChangedDetectionBenchmarks, item) { + c.ChangedDetectionBenchmarks = append(c.ChangedDetectionBenchmarks, diff) + } case *resources.DashboardText: if !c.diffsContain(c.ChangedTexts, item) { c.ChangedTexts = append(c.ChangedTexts, diff) diff --git a/internal/dashboardexecute/container_run.go b/internal/dashboardexecute/container_run.go index 5d2242ed..5fb1a8af 100644 --- a/internal/dashboardexecute/container_run.go +++ b/internal/dashboardexecute/container_run.go @@ -59,6 +59,11 @@ func NewDashboardContainerRun(container *resources.DashboardContainer, parent da if err != nil { return nil, err } + case *resources.DetectionBenchmark: + childRun, err = NewDetectionBenchmarkRun(i, r, executionTree) + if err != nil { + return nil, err + } case *resources.Benchmark, *resources.Control: childRun, err = NewCheckRun(i.(resources.DashboardLeafNode), r, executionTree) if err != nil { diff --git a/internal/dashboardexecute/dashboard_execution_tree.go b/internal/dashboardexecute/dashboard_execution_tree.go index c0ffcc5f..75222613 100644 --- a/internal/dashboardexecute/dashboard_execution_tree.go +++ b/internal/dashboardexecute/dashboard_execution_tree.go @@ -94,6 +94,8 @@ func (e *DashboardExecutionTree) createRootItem(rootResource modconfig.ModTreeIt return NewDashboardRun(r, e, e) case *resources.Benchmark: return NewCheckRun(r, e, e) + case *resources.DetectionBenchmark: + return NewDetectionBenchmarkRun(r, e, e) case *resources.Query: // wrap this in a chart and a dashboard dashboard, err := resources.NewQueryDashboard(r) diff --git a/internal/dashboardexecute/dashboard_run.go b/internal/dashboardexecute/dashboard_run.go index f5ac81b0..b2c89713 100644 --- a/internal/dashboardexecute/dashboard_run.go +++ b/internal/dashboardexecute/dashboard_run.go @@ -136,6 +136,12 @@ func (r *DashboardRun) createChildRuns(executionTree *DashboardExecutionTree) er if err != nil { return err } + case *resources.DetectionBenchmark: + childRun, err = NewDetectionBenchmarkRun(i, r, executionTree) + if err != nil { + return err + } + case *resources.Benchmark, *resources.Control: childRun, err = NewCheckRun(i.(resources.DashboardLeafNode), r, executionTree) if err != nil { diff --git a/internal/dashboardexecute/detection_benchmark_run.go b/internal/dashboardexecute/detection_benchmark_run.go new file mode 100644 index 00000000..ce20deb0 --- /dev/null +++ b/internal/dashboardexecute/detection_benchmark_run.go @@ -0,0 +1,112 @@ +package dashboardexecute + +import ( + "context" + "fmt" + "log/slog" + + "github.com/turbot/pipe-fittings/steampipeconfig" + "github.com/turbot/powerpipe/internal/dashboardtypes" + "github.com/turbot/powerpipe/internal/resources" +) + +// DetectionBenchmarkRun is a struct representing a container run +type DetectionBenchmarkRun struct { + DashboardParentImpl + + dashboardNode *resources.DetectionBenchmark +} + +func (r *DetectionBenchmarkRun) AsTreeNode() *steampipeconfig.SnapshotTreeNode { + res := &steampipeconfig.SnapshotTreeNode{ + Name: r.Name, + NodeType: r.NodeType, + Children: make([]*steampipeconfig.SnapshotTreeNode, len(r.children)), + } + for i, c := range r.children { + res.Children[i] = c.AsTreeNode() + } + return res +} + +func NewDetectionBenchmarkRun(container *resources.DetectionBenchmark, parent dashboardtypes.DashboardParent, executionTree *DashboardExecutionTree) (*DetectionBenchmarkRun, error) { + children := container.GetChildren() + + r := &DetectionBenchmarkRun{dashboardNode: container} + // create NewDashboardTreeRunImpl + // (we must create after creating the run as it requires a ref to the run) + r.DashboardParentImpl = newDashboardParentImpl(container, parent, r, executionTree) + + if container.Title != nil { + r.Title = *container.Title + } + + if container.Width != nil { + r.Width = *container.Width + } + r.childCompleteChan = make(chan dashboardtypes.DashboardTreeRun, len(children)) + for _, child := range children { + var childRun dashboardtypes.DashboardTreeRun + var err error + switch i := child.(type) { + case *resources.DetectionBenchmark: + childRun, err = NewDetectionBenchmarkRun(i, r, executionTree) + if err != nil { + return nil, err + } + case *resources.Detection: + childRun, err = NewLeafRun(i, r, executionTree) + if err != nil { + return nil, err + } + default: + return nil, fmt.Errorf("invalid child type %T", i) + } + + // should never happen - container children must be either container or counter + if childRun == nil { + continue + } + + // if our child has not completed, we have not completed + if childRun.GetRunStatus() == dashboardtypes.RunInitialized { + r.Status = dashboardtypes.RunInitialized + } + r.children = append(r.children, childRun) + } + // add r into execution tree + executionTree.runs[r.Name] = r + return r, nil +} + +// Initialise implements DashboardTreeRun +func (r *DetectionBenchmarkRun) Initialise(ctx context.Context) { + // initialise our children + if err := r.initialiseChildren(ctx); err != nil { + r.SetError(ctx, err) + } +} + +// Execute implements DashboardTreeRun +// execute all children and wait for them to complete +func (r *DetectionBenchmarkRun) Execute(ctx context.Context) { + // execute all children asynchronously + r.executeChildrenAsync(ctx) + + // try to set status as running (will be set to blocked if any children are blocked) + r.setRunning(ctx) + + // wait for children to complete + err := <-r.waitForChildrenAsync(ctx) + if err == nil { + slog.Debug("Execute waitForChildrenAsync returned success", "name", r.Name) + // set complete status on dashboard + r.SetComplete(ctx) + } else { + slog.Debug("Execute waitForChildrenAsync failed", "name", r.Name, "error", err.Error()) + r.SetError(ctx, err) + } +} + +// IsSnapshotPanel implements SnapshotPanel +func (*DetectionBenchmarkRun) IsSnapshotPanel() {} diff --git a/internal/dashboardserver/server.go b/internal/dashboardserver/server.go index bc5b6bfd..0028e27c 100644 --- a/internal/dashboardserver/server.go +++ b/internal/dashboardserver/server.go @@ -506,7 +506,7 @@ func getDashboardsInterestedInResourceChanges(dashboardsBeingWatched []string, e for _, nodeName := range nodePath { resourceParts, _ := modconfig.ParseResourceName(nodeName) // We only care about changes from these resource types - if !helpers.StringSliceContains([]string{schema.BlockTypeDashboard, schema.BlockTypeBenchmark}, resourceParts.ItemType) { + if !helpers.StringSliceContains([]string{schema.BlockTypeDashboard, schema.BlockTypeBenchmark, schema.BlockTypeDetectionBenchmark}, resourceParts.ItemType) { continue } diff --git a/internal/parse/mod_decoder.go b/internal/parse/mod_decoder.go index 77240d40..8ab182a6 100644 --- a/internal/parse/mod_decoder.go +++ b/internal/parse/mod_decoder.go @@ -32,6 +32,7 @@ func NewPowerpipeModDecoder(opts ...parse.DecoderOption) parse.Decoder { d.DecodeFuncs[schema.BlockTypeDashboard] = d.decodeDashboard d.DecodeFuncs[schema.BlockTypeContainer] = d.decodeDashboardContainer d.DecodeFuncs[schema.BlockTypeBenchmark] = d.decodeBenchmark + d.DecodeFuncs[schema.BlockTypeDetectionBenchmark] = d.decodeDetectionBenchmark // apply options for _, opt := range opts { opt(d) @@ -235,7 +236,12 @@ func (d *PowerpipeModDecoder) decodeDashboard(block *hcl.Block, parseCtx *parse. res.HandleDecodeDiags(diags) if dashboard.Base != nil && len(dashboard.Base.ChildNames) > 0 { - supportedChildren := []string{schema.BlockTypeContainer, schema.BlockTypeChart, schema.BlockTypeCard, schema.BlockTypeFlow, schema.BlockTypeGraph, schema.BlockTypeHierarchy, schema.BlockTypeImage, schema.BlockTypeInput, schema.BlockTypeTable, schema.BlockTypeText} + supportedChildren := []string{ + schema.BlockTypeContainer, schema.BlockTypeChart, schema.BlockTypeCard, + schema.BlockTypeDetection, schema.BlockTypeFlow, schema.BlockTypeGraph, + schema.BlockTypeHierarchy, schema.BlockTypeImage, schema.BlockTypeInput, + schema.BlockTypeTable, schema.BlockTypeText} + // TACTICAL: we should be passing in the block for the Base resource - but this is only used for diags // and we do not expect to get any (as this function has already succeeded when the base was originally parsed) children, _ := parse.ResolveChildrenFromNames(dashboard.Base.ChildNames, block, supportedChildren, parseCtx) @@ -378,9 +384,10 @@ func (d *PowerpipeModDecoder) decodeBenchmark(block *hcl.Block, parseCtx *parse. diags = parse.DecodeProperty(content, "display", &benchmark.Display, parseCtx.EvalCtx) res.HandleDecodeDiags(diags) + supportedChildren := []string{schema.BlockTypeBenchmark, schema.BlockTypeControl} + // now add children if res.Success() { - supportedChildren := []string{schema.BlockTypeBenchmark, schema.BlockTypeControl} children, diags := parse.ResolveChildrenFromNames(benchmark.ChildNames.StringList(), block, supportedChildren, parseCtx) res.HandleDecodeDiags(diags) @@ -392,7 +399,57 @@ func (d *PowerpipeModDecoder) decodeBenchmark(block *hcl.Block, parseCtx *parse. diags = parse.DecodeProperty(content, "base", &benchmark.Base, parseCtx.EvalCtx) res.HandleDecodeDiags(diags) if benchmark.Base != nil && len(benchmark.Base.ChildNames) > 0 { - supportedChildren := []string{schema.BlockTypeBenchmark, schema.BlockTypeControl} + // TACTICAL: we should be passing in the block for the Base resource - but this is only used for diags + // and we do not expect to get any (as this function has already succeeded when the base was originally parsed) + children, _ := parse.ResolveChildrenFromNames(benchmark.Base.ChildNameStrings, block, supportedChildren, parseCtx) + benchmark.Children = children + } + diags = parse.DecodeProperty(content, "width", &benchmark.Width, parseCtx.EvalCtx) + res.HandleDecodeDiags(diags) + return benchmark, res +} + +func (d *PowerpipeModDecoder) decodeDetectionBenchmark(block *hcl.Block, parseCtx *parse.ModParseContext) (modconfig.HclResource, *parse.DecodeResult) { + res := parse.NewDecodeResult() + benchmark := resources.NewDetectionBenchmark(block, parseCtx.CurrentMod, parseCtx.DetermineBlockName(block)).(*resources.Benchmark) + content, diags := block.Body.Content(parse.BenchmarkBlockSchema) + res.HandleDecodeDiags(diags) + + diags = parse.DecodeProperty(content, "children", &benchmark.ChildNames, parseCtx.EvalCtx) + res.HandleDecodeDiags(diags) + + diags = parse.DecodeProperty(content, "description", &benchmark.Description, parseCtx.EvalCtx) + res.HandleDecodeDiags(diags) + + diags = parse.DecodeProperty(content, "documentation", &benchmark.Documentation, parseCtx.EvalCtx) + res.HandleDecodeDiags(diags) + + diags = parse.DecodeProperty(content, "tags", &benchmark.Tags, parseCtx.EvalCtx) + res.HandleDecodeDiags(diags) + + diags = parse.DecodeProperty(content, "title", &benchmark.Title, parseCtx.EvalCtx) + res.HandleDecodeDiags(diags) + + diags = parse.DecodeProperty(content, "type", &benchmark.Type, parseCtx.EvalCtx) + res.HandleDecodeDiags(diags) + + diags = parse.DecodeProperty(content, "display", &benchmark.Display, parseCtx.EvalCtx) + res.HandleDecodeDiags(diags) + + supportedChildren := []string{schema.BlockTypeDetectionBenchmark, schema.BlockTypeDetection} + + // now add children + if res.Success() { + children, diags := parse.ResolveChildrenFromNames(benchmark.ChildNames.StringList(), block, supportedChildren, parseCtx) + res.HandleDecodeDiags(diags) + // now set children and child name strings + benchmark.Children = children + benchmark.ChildNameStrings = parse.GetChildNameStringsFromModTreeItem(children) + } + + diags = parse.DecodeProperty(content, "base", &benchmark.Base, parseCtx.EvalCtx) + res.HandleDecodeDiags(diags) + if benchmark.Base != nil && len(benchmark.Base.ChildNames) > 0 { // TACTICAL: we should be passing in the block for the Base resource - but this is only used for diags // and we do not expect to get any (as this function has already succeeded when the base was originally parsed) children, _ := parse.ResolveChildrenFromNames(benchmark.Base.ChildNameStrings, block, supportedChildren, parseCtx) @@ -429,25 +486,27 @@ func (d *PowerpipeModDecoder) resourceForBlock(block *hcl.Block, parseCtx *parse factoryFuncs := map[string]func(*hcl.Block, *modconfig.Mod, string) modconfig.HclResource{ // for block type mod, just use the current mod - schema.BlockTypeMod: func(*hcl.Block, *modconfig.Mod, string) modconfig.HclResource { return mod }, - schema.BlockTypeQuery: resources.NewQuery, - schema.BlockTypeControl: resources.NewControl, - schema.BlockTypeBenchmark: resources.NewBenchmark, - schema.BlockTypeDashboard: resources.NewDashboard, - schema.BlockTypeContainer: resources.NewDashboardContainer, - schema.BlockTypeChart: resources.NewDashboardChart, - schema.BlockTypeCard: resources.NewDashboardCard, - schema.BlockTypeFlow: resources.NewDashboardFlow, - schema.BlockTypeGraph: resources.NewDashboardGraph, - schema.BlockTypeHierarchy: resources.NewDashboardHierarchy, - schema.BlockTypeImage: resources.NewDashboardImage, - schema.BlockTypeInput: resources.NewDashboardInput, - schema.BlockTypeTable: resources.NewDashboardTable, - schema.BlockTypeText: resources.NewDashboardText, - schema.BlockTypeNode: resources.NewDashboardNode, - schema.BlockTypeEdge: resources.NewDashboardEdge, - schema.BlockTypeCategory: resources.NewDashboardCategory, - schema.BlockTypeWith: resources.NewDashboardWith, + schema.BlockTypeBenchmark: resources.NewBenchmark, + schema.BlockTypeCard: resources.NewDashboardCard, + schema.BlockTypeCategory: resources.NewDashboardCategory, + schema.BlockTypeContainer: resources.NewDashboardContainer, + schema.BlockTypeChart: resources.NewDashboardChart, + schema.BlockTypeControl: resources.NewControl, + schema.BlockTypeDashboard: resources.NewDashboard, + schema.BlockTypeDetection: resources.NewDetection, + schema.BlockTypeDetectionBenchmark: resources.NewDetectionBenchmark, + schema.BlockTypeEdge: resources.NewDashboardEdge, + schema.BlockTypeFlow: resources.NewDashboardFlow, + schema.BlockTypeGraph: resources.NewDashboardGraph, + schema.BlockTypeHierarchy: resources.NewDashboardHierarchy, + schema.BlockTypeImage: resources.NewDashboardImage, + schema.BlockTypeInput: resources.NewDashboardInput, + schema.BlockTypeMod: func(*hcl.Block, *modconfig.Mod, string) modconfig.HclResource { return mod }, + schema.BlockTypeNode: resources.NewDashboardNode, + schema.BlockTypeQuery: resources.NewQuery, + schema.BlockTypeTable: resources.NewDashboardTable, + schema.BlockTypeText: resources.NewDashboardText, + schema.BlockTypeWith: resources.NewDashboardWith, } factoryFunc, ok := factoryFuncs[block.Type] diff --git a/internal/parse/schema.go b/internal/parse/schema.go index 80d1d6a2..1286e0f2 100644 --- a/internal/parse/schema.go +++ b/internal/parse/schema.go @@ -17,6 +17,7 @@ func GetResourceSchema(resource modconfig.HclResource, res *hcl.BodySchema) *hcl hcl.BlockHeaderSchema{Type: schema.BlockTypeCard}, hcl.BlockHeaderSchema{Type: schema.BlockTypeChart}, hcl.BlockHeaderSchema{Type: schema.BlockTypeContainer}, + hcl.BlockHeaderSchema{Type: schema.BlockTypeDetection}, hcl.BlockHeaderSchema{Type: schema.BlockTypeFlow}, hcl.BlockHeaderSchema{Type: schema.BlockTypeGraph}, hcl.BlockHeaderSchema{Type: schema.BlockTypeHierarchy}, @@ -26,6 +27,12 @@ func GetResourceSchema(resource modconfig.HclResource, res *hcl.BodySchema) *hcl hcl.BlockHeaderSchema{Type: schema.BlockTypeText}, hcl.BlockHeaderSchema{Type: schema.BlockTypeWith}, ) + // TODO is this neede3d + case schema.BlockTypeDetectionBenchmark: + res.Blocks = append(res.Blocks, + hcl.BlockHeaderSchema{Type: schema.BlockTypeDetectionBenchmark}, + hcl.BlockHeaderSchema{Type: schema.BlockTypeDetection}, + ) case schema.BlockTypeQuery: // remove `Query` from attributes var querySchema = &hcl.BodySchema{} diff --git a/internal/resources/benchmark.go b/internal/resources/benchmark.go index 3a094925..24fb0e5f 100644 --- a/internal/resources/benchmark.go +++ b/internal/resources/benchmark.go @@ -24,9 +24,8 @@ type Benchmark struct { Remain hcl.Body `hcl:",remain" json:"-"` // child names as NamedItem structs - used to allow setting children via the 'children' property - ChildNames modconfig.NamedItemList `cty:"child_names" json:"-"` - // used for introspection tables - ChildNameStrings []string `cty:"child_name_strings" json:"children,omitempty"` + ChildNames modconfig.NamedItemList `cty:"child_names" json:"-"` + ChildNameStrings []string `cty:"child_name_strings" json:"children,omitempty"` // dashboard specific properties Base *Benchmark `hcl:"base" json:"-"` diff --git a/internal/resources/dashboard_container.go b/internal/resources/dashboard_container.go index 7a18c188..7d307d30 100644 --- a/internal/resources/dashboard_container.go +++ b/internal/resources/dashboard_container.go @@ -2,7 +2,6 @@ package resources import ( "github.com/hashicorp/hcl/v2" - "github.com/stevenle/topsort" typehelpers "github.com/turbot/go-kit/types" "github.com/turbot/pipe-fittings/cty_helpers" "github.com/turbot/pipe-fittings/modconfig" @@ -26,9 +25,6 @@ type DashboardContainer struct { Inputs []*DashboardInput `cty:"inputs" json:"inputs,omitempty"` // store children in a way which can be serialised via cty ChildNames []string `cty:"children" json:"children,omitempty"` - - //nolint:unused // TODO: unused attribute - runtimeDependencyGraph *topsort.Graph } func NewDashboardContainer(block *hcl.Block, mod *modconfig.Mod, shortName string) modconfig.HclResource { diff --git a/internal/resources/detection.go b/internal/resources/detection.go new file mode 100644 index 00000000..1f0eb4a1 --- /dev/null +++ b/internal/resources/detection.go @@ -0,0 +1,133 @@ +package resources + +import ( + "github.com/hashicorp/hcl/v2" + typehelpers "github.com/turbot/go-kit/types" + "github.com/turbot/pipe-fittings/cty_helpers" + "github.com/turbot/pipe-fittings/modconfig" + "github.com/turbot/pipe-fittings/printers" + "github.com/turbot/pipe-fittings/utils" + "github.com/zclconf/go-cty/cty" +) + +// Detection is a struct representing a leaf dashboard node +type Detection struct { + modconfig.ResourceWithMetadataImpl + QueryProviderImpl + + // required to allow partial decoding + Remain hcl.Body `hcl:",remain" json:"-"` + Width *int `cty:"width" hcl:"width" json:"width,omitempty"` + + Columns map[string]*DashboardTableColumn `cty:"columns" snapshot:"columns"` + + // TODO K what is this for + Type *string `cty:"type" hcl:"type" json:"type,omitempty"` + Display *string `cty:"display" hcl:"display" json:"display,omitempty" snapshot:"display"` + + Base *Detection `hcl:"base" json:"-"` +} + +func NewDetection(block *hcl.Block, mod *modconfig.Mod, shortName string) modconfig.HclResource { + t := &Detection{ + QueryProviderImpl: NewQueryProviderImpl(block, mod, shortName), + } + t.SetAnonymous(block) + return t +} + +func (t *Detection) Equals(other *Detection) bool { + diff := t.Diff(other) + return !diff.HasChanges() +} + +// OnDecoded implements HclResource +func (t *Detection) OnDecoded(block *hcl.Block, resourceMapProvider modconfig.ModResourcesProvider) hcl.Diagnostics { + t.SetBaseProperties() + t.Columns = map[string]*DashboardTableColumn{ + "reason": { + Name: "reason", + }, + } + return t.QueryProviderImpl.OnDecoded(block, resourceMapProvider) +} + +func (t *Detection) Diff(other *Detection) *modconfig.ModTreeItemDiffs { + res := &modconfig.ModTreeItemDiffs{ + Item: t, + Name: t.Name(), + } + + if !utils.SafeStringsEqual(t.Type, other.Type) { + res.AddPropertyDiff("Type") + } + + res.PopulateChildDiffs(t, other) + res.Merge(t.QueryProviderImpl.Diff(other)) + res.Merge(dashboardLeafNodeDiff(t, other)) + + return res +} + +// GetWidth implements DashboardLeafNode +func (t *Detection) GetWidth() int { + if t.Width == nil { + return 0 + } + return *t.Width +} + +// GetDisplay implements DashboardLeafNode +func (t *Detection) GetDisplay() string { + return typehelpers.SafeString(t.Display) +} + +// GetDocumentation implements DashboardLeafNode, ModTreeItem +func (*Detection) GetDocumentation() string { + return "" +} + +// GetType implements DashboardLeafNode +func (t *Detection) GetType() string { + return typehelpers.SafeString(t.Type) +} + +// CtyValue implements CtyValueProvider +func (t *Detection) CtyValue() (cty.Value, error) { + return cty_helpers.GetCtyValue(t) +} + +func (t *Detection) SetBaseProperties() { + if t.Base == nil { + return + } + // copy base into the HclResourceImpl 'base' property so it is accessible to all nested structs + t.HclResourceImpl.SetBase(t.Base) + + // call into parent nested struct SetBaseProperties + t.QueryProviderImpl.SetBaseProperties() + + if t.Width == nil { + t.Width = t.Base.Width + } + + if t.Type == nil { + t.Type = t.Base.Type + } + + if t.Display == nil { + t.Display = t.Base.Display + } +} + +// GetShowData implements printers.Showable +func (t *Detection) GetShowData() *printers.RowData { + res := printers.NewRowData( + printers.NewFieldValue("Width", t.Width), + printers.NewFieldValue("Type", t.Type), + printers.NewFieldValue("Display", t.Display), + ) + // merge fields from base, putting base fields first + res.Merge(t.QueryProviderImpl.GetShowData()) + return res +} diff --git a/internal/resources/detection_benchmark.go b/internal/resources/detection_benchmark.go new file mode 100644 index 00000000..bb4e7241 --- /dev/null +++ b/internal/resources/detection_benchmark.go @@ -0,0 +1,133 @@ +package resources + +import ( + "github.com/hashicorp/hcl/v2" + "github.com/stevenle/topsort" + typehelpers "github.com/turbot/go-kit/types" + "github.com/turbot/pipe-fittings/cty_helpers" + "github.com/turbot/pipe-fittings/modconfig" + "github.com/turbot/pipe-fittings/printers" + "github.com/turbot/pipe-fittings/utils" + "github.com/zclconf/go-cty/cty" +) + +type DetectionBenchmark struct { + modconfig.ResourceWithMetadataImpl + modconfig.ModTreeItemImpl + + // required to allow partial decoding + Remain hcl.Body `hcl:",remain" json:"-"` + + Width *int `cty:"width" hcl:"width" json:"width,omitempty"` + Display *string `cty:"display" hcl:"display" json:"display,omitempty"` + Inputs []*DashboardInput `cty:"inputs" json:"inputs,omitempty"` + // store children in a way which can be serialised via cty + ChildNames []string `cty:"children" json:"children,omitempty"` + + //nolint:unused // TODO: unused attribute + runtimeDependencyGraph *topsort.Graph +} + +func NewDetectionBenchmark(block *hcl.Block, mod *modconfig.Mod, shortName string) modconfig.HclResource { + c := &DetectionBenchmark{ + ModTreeItemImpl: modconfig.NewModTreeItemImpl(block, mod, shortName), + } + c.SetAnonymous(block) + + return c +} + +func (c *DetectionBenchmark) Equals(other *DetectionBenchmark) bool { + diff := c.Diff(other) + return !diff.HasChanges() +} + +// OnDecoded implements HclResource +func (c *DetectionBenchmark) OnDecoded(block *hcl.Block, _ modconfig.ModResourcesProvider) hcl.Diagnostics { + c.ChildNames = make([]string, len(c.GetChildren())) + for i, child := range c.GetChildren() { + c.ChildNames[i] = child.Name() + } + return nil +} + +// GetWidth implements DashboardLeafNode +func (c *DetectionBenchmark) GetWidth() int { + if c.Width == nil { + return 0 + } + return *c.Width +} + +// GetDisplay implements DashboardLeafNode +func (c *DetectionBenchmark) GetDisplay() string { + return typehelpers.SafeString(c.Display) +} + +// GetType implements DashboardLeafNode +func (c *DetectionBenchmark) GetType() string { + return "" +} + +func (c *DetectionBenchmark) Diff(other *DetectionBenchmark) *modconfig.ModTreeItemDiffs { + res := &modconfig.ModTreeItemDiffs{ + Item: c, + Name: c.Name(), + } + + if !utils.SafeStringsEqual(c.FullName, other.FullName) { + res.AddPropertyDiff("Name") + } + + if !utils.SafeStringsEqual(c.Title, other.Title) { + res.AddPropertyDiff("Title") + } + + if !utils.SafeIntEqual(c.Width, other.Width) { + res.AddPropertyDiff("Width") + } + + if !utils.SafeStringsEqual(c.Display, other.Display) { + res.AddPropertyDiff("Display") + } + + res.PopulateChildDiffs(c, other) + return res +} + +func (c *DetectionBenchmark) WalkResources(resourceFunc func(resource modconfig.HclResource) (bool, error)) error { + for _, child := range c.Children { + continueWalking, err := resourceFunc(child.(modconfig.HclResource)) + if err != nil { + return err + } + if !continueWalking { + break + } + + if childContainer, ok := child.(*DetectionBenchmark); ok { + if err := childContainer.WalkResources(resourceFunc); err != nil { + return err + } + } + } + return nil +} + +// CtyValue implements CtyValueProvider +func (c *DetectionBenchmark) CtyValue() (cty.Value, error) { + return cty_helpers.GetCtyValue(c) +} + +// GetShowData implements printers.Showable +func (c *DetectionBenchmark) GetShowData() *printers.RowData { + res := printers.NewRowData( + printers.NewFieldValue("Width", c.Width), + printers.NewFieldValue("Display", c.Display), + printers.NewFieldValue("Inputs", c.Inputs), + printers.NewFieldValue("Children", c.ChildNames), + ) + // merge fields from base, putting base fields first + res.Merge(c.ModTreeItemImpl.GetShowData()) + return res +} diff --git a/internal/resources/generic_type.go b/internal/resources/generic_type.go index a8d91a93..3e880ca6 100644 --- a/internal/resources/generic_type.go +++ b/internal/resources/generic_type.go @@ -21,6 +21,8 @@ func GenericTypeToBlockType[T modconfig.ModTreeItem]() string { resourceType = schema.BlockTypeChart case *DashboardContainer: resourceType = schema.BlockTypeContainer + case *Detection: + resourceType = schema.BlockTypeDetection case *DashboardFlow: resourceType = schema.BlockTypeFlow case *DashboardGraph: diff --git a/internal/resources/mod_resources.go b/internal/resources/mod_resources.go index bfc26ae5..dd7713bd 100644 --- a/internal/resources/mod_resources.go +++ b/internal/resources/mod_resources.go @@ -37,6 +37,8 @@ type PowerpipeModResources struct { DashboardImages map[string]*DashboardImage DashboardInputs map[string]map[string]*DashboardInput DashboardTables map[string]*DashboardTable + Detections map[string]*Detection + DetectionBenchmarks map[string]*DetectionBenchmark DashboardTexts map[string]*DashboardText DashboardNodes map[string]*DashboardNode GlobalDashboardInputs map[string]*DashboardInput @@ -73,6 +75,7 @@ func emptyPowerpipeModResources() *PowerpipeModResources { DashboardImages: make(map[string]*DashboardImage), DashboardInputs: make(map[string]map[string]*DashboardInput), DashboardTables: make(map[string]*DashboardTable), + Detections: make(map[string]*Detection), DashboardTexts: make(map[string]*DashboardText), DashboardNodes: make(map[string]*DashboardNode), DashboardCategories: make(map[string]*DashboardCategory), @@ -348,6 +351,20 @@ func (m *PowerpipeModResources) Equals(o modconfig.ModResources) bool { return false } } + for name, detection := range m.Detections { + if otherDetection, ok := other.Detections[name]; !ok { + return false + } else if !detection.Equals(otherDetection) { + return false + } + } + for name, benchmark := range m.DetectionBenchmarks { + if otherBenchmark, ok := other.DetectionBenchmarks[name]; !ok { + return false + } else if !benchmark.Equals(otherBenchmark) { + return false + } + } for name, category := range m.DashboardCategories { if otherCategory, ok := other.DashboardCategories[name]; !ok { return false @@ -360,6 +377,16 @@ func (m *PowerpipeModResources) Equals(o modconfig.ModResources) bool { return false } } + for name := range other.Detections { + if _, ok := m.Detections[name]; !ok { + return false + } + } + for name := range other.DetectionBenchmarks { + if _, ok := m.DetectionBenchmarks[name]; !ok { + return false + } + } for name, text := range m.DashboardTexts { if otherText, ok := other.DashboardTexts[name]; !ok { @@ -436,6 +463,10 @@ func (m *PowerpipeModResources) GetResource(parsedName *modconfig.ParsedResource resource, found = m.DashboardNodes[longName] case schema.BlockTypeTable: resource, found = m.DashboardTables[longName] + case schema.BlockTypeDetection: + resource, found = m.Detections[longName] + case schema.BlockTypeDetectionBenchmark: + resource, found = m.DetectionBenchmarks[longName] case schema.BlockTypeText: resource, found = m.DashboardTexts[longName] case schema.BlockTypeInput: @@ -573,6 +604,8 @@ func (m *PowerpipeModResources) Empty() bool { len(m.DashboardImages)+ len(m.DashboardInputs)+ len(m.DashboardTables)+ + len(m.Detections)+ + len(m.DetectionBenchmarks)+ len(m.DashboardTexts)+ len(m.References) == 0 } @@ -678,6 +711,16 @@ func (m *PowerpipeModResources) WalkResources(resourceFunc func(item modconfig.H return err } } + for _, r := range m.Detections { + if continueWalking, err := resourceFunc(r); err != nil || !continueWalking { + return err + } + } + for _, r := range m.DetectionBenchmarks { + if continueWalking, err := resourceFunc(r); err != nil || !continueWalking { + return err + } + } for _, r := range m.DashboardTexts { if continueWalking, err := resourceFunc(r); err != nil || !continueWalking { return err @@ -851,6 +894,20 @@ func (m *PowerpipeModResources) AddResource(item modconfig.HclResource) hcl.Diag break } m.DashboardTables[name] = r + case *Detection: + name := r.Name() + if existing, ok := m.Detections[name]; ok { + diags = append(diags, modconfig.CheckForDuplicate(existing, item)...) + break + } + m.Detections[name] = r + case *DetectionBenchmark: + name := r.Name() + if existing, ok := m.DetectionBenchmarks[name]; ok { + diags = append(diags, modconfig.CheckForDuplicate(existing, item)...) + break + } + m.DetectionBenchmarks[name] = r case *DashboardText: name := r.Name() @@ -935,6 +992,12 @@ func (m *PowerpipeModResources) AddMaps(sourceMaps ...modconfig.ModResources) { for k, v := range source.DashboardTables { m.DashboardTables[k] = v } + for k, v := range source.Detections { + m.Detections[k] = v + } + for k, v := range source.DetectionBenchmarks { + m.DetectionBenchmarks[k] = v + } for k, v := range source.DashboardTexts { m.DashboardTexts[k] = v } @@ -981,6 +1044,8 @@ func (m *PowerpipeModResources) queryProviderCount() int { numDashboardInputs + len(m.DashboardNodes) + len(m.DashboardTables) + + len(m.Detections) + + len(m.DetectionBenchmarks) + len(m.GlobalDashboardInputs) + len(m.Queries) return numItems From 0115a41daa6a079739e871f9a7d0d807e6c9fe62 Mon Sep 17 00:00:00 2001 From: kai Date: Wed, 6 Nov 2024 13:04:20 +0700 Subject: [PATCH 03/85] Fix DetectionBenchmark Add severity to DetectionBenchmark --- internal/parse/mod_decoder.go | 18 ++-- internal/parse/schema.go | 2 +- internal/resources/detection.go | 6 +- internal/resources/detection_benchmark.go | 100 +++++++++++++--------- internal/resources/mod_resources.go | 1 + 5 files changed, 79 insertions(+), 48 deletions(-) diff --git a/internal/parse/mod_decoder.go b/internal/parse/mod_decoder.go index 8ab182a6..47edaeb3 100644 --- a/internal/parse/mod_decoder.go +++ b/internal/parse/mod_decoder.go @@ -238,9 +238,9 @@ func (d *PowerpipeModDecoder) decodeDashboard(block *hcl.Block, parseCtx *parse. if dashboard.Base != nil && len(dashboard.Base.ChildNames) > 0 { supportedChildren := []string{ schema.BlockTypeContainer, schema.BlockTypeChart, schema.BlockTypeCard, - schema.BlockTypeDetection, schema.BlockTypeFlow, schema.BlockTypeGraph, - schema.BlockTypeHierarchy, schema.BlockTypeImage, schema.BlockTypeInput, - schema.BlockTypeTable, schema.BlockTypeText} + schema.BlockTypeDetection, schema.BlockTypeDetectionBenchmark, schema.BlockTypeFlow, + schema.BlockTypeGraph, schema.BlockTypeHierarchy, schema.BlockTypeImage, + schema.BlockTypeInput, schema.BlockTypeTable, schema.BlockTypeText} // TACTICAL: we should be passing in the block for the Base resource - but this is only used for diags // and we do not expect to get any (as this function has already succeeded when the base was originally parsed) @@ -359,7 +359,11 @@ func (d *PowerpipeModDecoder) decodeDashboardContainerBlocks(content *hclsyntax. func (d *PowerpipeModDecoder) decodeBenchmark(block *hcl.Block, parseCtx *parse.ModParseContext) (modconfig.HclResource, *parse.DecodeResult) { res := parse.NewDecodeResult() - benchmark := resources.NewBenchmark(block, parseCtx.CurrentMod, parseCtx.DetermineBlockName(block)).(*resources.Benchmark) + benchmark, ok := resources.NewBenchmark(block, parseCtx.CurrentMod, parseCtx.DetermineBlockName(block)).(*resources.Benchmark) + if !ok { + // coding error + panic(fmt.Sprintf("block type %s not convertible to a Benchmark", block.Type)) + } content, diags := block.Body.Content(parse.BenchmarkBlockSchema) res.HandleDecodeDiags(diags) @@ -411,7 +415,11 @@ func (d *PowerpipeModDecoder) decodeBenchmark(block *hcl.Block, parseCtx *parse. func (d *PowerpipeModDecoder) decodeDetectionBenchmark(block *hcl.Block, parseCtx *parse.ModParseContext) (modconfig.HclResource, *parse.DecodeResult) { res := parse.NewDecodeResult() - benchmark := resources.NewDetectionBenchmark(block, parseCtx.CurrentMod, parseCtx.DetermineBlockName(block)).(*resources.Benchmark) + benchmark, ok := resources.NewDetectionBenchmark(block, parseCtx.CurrentMod, parseCtx.DetermineBlockName(block)).(*resources.DetectionBenchmark) + if !ok { + // coding error + panic(fmt.Sprintf("block type %s not convertible to a DetectionBenchmark", block.Type)) + } content, diags := block.Body.Content(parse.BenchmarkBlockSchema) res.HandleDecodeDiags(diags) diff --git a/internal/parse/schema.go b/internal/parse/schema.go index 1286e0f2..0dcc9ea9 100644 --- a/internal/parse/schema.go +++ b/internal/parse/schema.go @@ -18,6 +18,7 @@ func GetResourceSchema(resource modconfig.HclResource, res *hcl.BodySchema) *hcl hcl.BlockHeaderSchema{Type: schema.BlockTypeChart}, hcl.BlockHeaderSchema{Type: schema.BlockTypeContainer}, hcl.BlockHeaderSchema{Type: schema.BlockTypeDetection}, + hcl.BlockHeaderSchema{Type: schema.BlockTypeDetectionBenchmark}, hcl.BlockHeaderSchema{Type: schema.BlockTypeFlow}, hcl.BlockHeaderSchema{Type: schema.BlockTypeGraph}, hcl.BlockHeaderSchema{Type: schema.BlockTypeHierarchy}, @@ -27,7 +28,6 @@ func GetResourceSchema(resource modconfig.HclResource, res *hcl.BodySchema) *hcl hcl.BlockHeaderSchema{Type: schema.BlockTypeText}, hcl.BlockHeaderSchema{Type: schema.BlockTypeWith}, ) - // TODO is this neede3d case schema.BlockTypeDetectionBenchmark: res.Blocks = append(res.Blocks, hcl.BlockHeaderSchema{Type: schema.BlockTypeDetectionBenchmark}, diff --git a/internal/resources/detection.go b/internal/resources/detection.go index 1f0eb4a1..16b4cec6 100644 --- a/internal/resources/detection.go +++ b/internal/resources/detection.go @@ -16,12 +16,12 @@ type Detection struct { QueryProviderImpl // required to allow partial decoding - Remain hcl.Body `hcl:",remain" json:"-"` - Width *int `cty:"width" hcl:"width" json:"width,omitempty"` + Remain hcl.Body `hcl:",remain" json:"-"` + Width *int `cty:"width" hcl:"width" json:"width,omitempty"` + Severity *string `cty:"severity" hcl:"severity" snapshot:"severity" json:"severity,omitempty"` Columns map[string]*DashboardTableColumn `cty:"columns" snapshot:"columns"` - // TODO K what is this for Type *string `cty:"type" hcl:"type" json:"type,omitempty"` Display *string `cty:"display" hcl:"display" json:"display,omitempty" snapshot:"display"` diff --git a/internal/resources/detection_benchmark.go b/internal/resources/detection_benchmark.go index bb4e7241..8e020238 100644 --- a/internal/resources/detection_benchmark.go +++ b/internal/resources/detection_benchmark.go @@ -2,7 +2,6 @@ package resources import ( "github.com/hashicorp/hcl/v2" - "github.com/stevenle/topsort" typehelpers "github.com/turbot/go-kit/types" "github.com/turbot/pipe-fittings/cty_helpers" "github.com/turbot/pipe-fittings/modconfig" @@ -18,14 +17,16 @@ type DetectionBenchmark struct { // required to allow partial decoding Remain hcl.Body `hcl:",remain" json:"-"` - Width *int `cty:"width" hcl:"width" json:"width,omitempty"` - Display *string `cty:"display" hcl:"display" json:"display,omitempty"` - Inputs []*DashboardInput `cty:"inputs" json:"inputs,omitempty"` // store children in a way which can be serialised via cty - ChildNames []string `cty:"children" json:"children,omitempty"` - - //nolint:unused // TODO: unused attribute - runtimeDependencyGraph *topsort.Graph + ChildNames modconfig.NamedItemList `cty:"child_names" json:"-"` + ChildNameStrings []string `cty:"child_name_strings" json:"children,omitempty"` + + // dashboard specific properties + Inputs []*DashboardInput `cty:"inputs" json:"inputs,omitempty"` + Base *DetectionBenchmark `hcl:"base" json:"-"` + Width *int `cty:"width" hcl:"width" json:"width,omitempty"` + Type *string `cty:"type" hcl:"type" json:"type,omitempty"` + Display *string `cty:"display" hcl:"display" json:"display,omitempty"` } func NewDetectionBenchmark(block *hcl.Block, mod *modconfig.Mod, shortName string) modconfig.HclResource { @@ -37,66 +38,63 @@ func NewDetectionBenchmark(block *hcl.Block, mod *modconfig.Mod, shortName strin return c } -func (c *DetectionBenchmark) Equals(other *DetectionBenchmark) bool { - diff := c.Diff(other) +func (d *DetectionBenchmark) Equals(other *DetectionBenchmark) bool { + diff := d.Diff(other) return !diff.HasChanges() } // OnDecoded implements HclResource -func (c *DetectionBenchmark) OnDecoded(block *hcl.Block, _ modconfig.ModResourcesProvider) hcl.Diagnostics { - c.ChildNames = make([]string, len(c.GetChildren())) - for i, child := range c.GetChildren() { - c.ChildNames[i] = child.Name() - } +func (d *DetectionBenchmark) OnDecoded(block *hcl.Block, _ modconfig.ModResourcesProvider) hcl.Diagnostics { + d.SetBaseProperties() return nil } // GetWidth implements DashboardLeafNode -func (c *DetectionBenchmark) GetWidth() int { - if c.Width == nil { +func (d *DetectionBenchmark) GetWidth() int { + if d.Width == nil { return 0 } - return *c.Width + return *d.Width } // GetDisplay implements DashboardLeafNode -func (c *DetectionBenchmark) GetDisplay() string { - return typehelpers.SafeString(c.Display) +func (d *DetectionBenchmark) GetDisplay() string { + return typehelpers.SafeString(d.Display) } // GetType implements DashboardLeafNode -func (c *DetectionBenchmark) GetType() string { +func (d *DetectionBenchmark) GetType() string { return "" } -func (c *DetectionBenchmark) Diff(other *DetectionBenchmark) *modconfig.ModTreeItemDiffs { +func (d *DetectionBenchmark) Diff(other *DetectionBenchmark) *modconfig.ModTreeItemDiffs { res := &modconfig.ModTreeItemDiffs{ - Item: c, - Name: c.Name(), + Item: d, + Name: d.Name(), } - if !utils.SafeStringsEqual(c.FullName, other.FullName) { + if !utils.SafeStringsEqual(d.FullName, other.FullName) { res.AddPropertyDiff("Name") } - if !utils.SafeStringsEqual(c.Title, other.Title) { + if !utils.SafeStringsEqual(d.Title, other.Title) { res.AddPropertyDiff("Title") } - if !utils.SafeIntEqual(c.Width, other.Width) { + if !utils.SafeIntEqual(d.Width, other.Width) { res.AddPropertyDiff("Width") } - if !utils.SafeStringsEqual(c.Display, other.Display) { + if !utils.SafeStringsEqual(d.Display, other.Display) { res.AddPropertyDiff("Display") } - res.PopulateChildDiffs(c, other) + res.PopulateChildDiffs(d, other) return res } -func (c *DetectionBenchmark) WalkResources(resourceFunc func(resource modconfig.HclResource) (bool, error)) error { - for _, child := range c.Children { +func (d *DetectionBenchmark) WalkResources(resourceFunc func(resource modconfig.HclResource) (bool, error)) error { + for _, child := range d.Children { continueWalking, err := resourceFunc(child.(modconfig.HclResource)) if err != nil { return err @@ -115,19 +113,43 @@ func (c *DetectionBenchmark) WalkResources(resourceFunc func(resource modconfig. } // CtyValue implements CtyValueProvider -func (c *DetectionBenchmark) CtyValue() (cty.Value, error) { - return cty_helpers.GetCtyValue(c) +func (d *DetectionBenchmark) CtyValue() (cty.Value, error) { + return cty_helpers.GetCtyValue(d) +} + +func (d *DetectionBenchmark) SetBaseProperties() { + if d.Base == nil { + return + } + // copy base into the HclResourceImpl 'base' property so it is accessible to all nested structs + d.HclResourceImpl.SetBase(d.Base) + // call into parent nested struct SetBaseProperties + d.ModTreeItemImpl.SetBaseProperties() + + if d.Width == nil { + d.Width = d.Base.Width + } + + if d.Display == nil { + d.Display = d.Base.Display + } + + if len(d.GetChildren()) == 0 { + d.Children = d.Base.Children + d.ChildNameStrings = d.Base.ChildNameStrings + d.ChildNames = d.Base.ChildNames + } } // GetShowData implements printers.Showable -func (c *DetectionBenchmark) GetShowData() *printers.RowData { +func (d *DetectionBenchmark) GetShowData() *printers.RowData { res := printers.NewRowData( - printers.NewFieldValue("Width", c.Width), - printers.NewFieldValue("Display", c.Display), - printers.NewFieldValue("Inputs", c.Inputs), - printers.NewFieldValue("Children", c.ChildNames), + printers.NewFieldValue("Width", d.Width), + printers.NewFieldValue("Display", d.Display), + printers.NewFieldValue("Inputs", d.Inputs), + printers.NewFieldValue("Children", d.ChildNames), ) // merge fields from base, putting base fields first - res.Merge(c.ModTreeItemImpl.GetShowData()) + res.Merge(d.ModTreeItemImpl.GetShowData()) return res } diff --git a/internal/resources/mod_resources.go b/internal/resources/mod_resources.go index dd7713bd..c298ac9d 100644 --- a/internal/resources/mod_resources.go +++ b/internal/resources/mod_resources.go @@ -76,6 +76,7 @@ func emptyPowerpipeModResources() *PowerpipeModResources { DashboardInputs: make(map[string]map[string]*DashboardInput), DashboardTables: make(map[string]*DashboardTable), Detections: make(map[string]*Detection), + DetectionBenchmarks: make(map[string]*DetectionBenchmark), DashboardTexts: make(map[string]*DashboardText), DashboardNodes: make(map[string]*DashboardNode), DashboardCategories: make(map[string]*DashboardCategory), From 26e9495058f53bb06192816e2e0657620743b84d Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Wed, 6 Nov 2024 15:06:35 +0700 Subject: [PATCH 04/85] WIP for making detections a supported resource --- .../dashboards/grouping/Benchmark/index.tsx | 7 +- .../grouping/CheckGrouping/index.tsx | 6 +- .../dashboards/grouping/CheckPanel/index.tsx | 7 +- .../DetectionBenchmark/ControlDimension.tsx | 13 + .../grouping/DetectionBenchmark/index.tsx | 557 ++++++++++ .../grouping/DetectionGrouping/index.tsx | 48 + .../dashboards/layout/Child/index.tsx | 10 + ...eGrouping.tsx => useBenchmarkGrouping.tsx} | 9 +- .../src/hooks/useDetectionGrouping.tsx | 980 ++++++++++++++++++ .../src/hooks/useDetectionGroupingConfig.ts | 68 ++ ui/dashboard/src/types/index.ts | 2 + ui/dashboard/src/utils/registerComponents.ts | 3 + 12 files changed, 1701 insertions(+), 9 deletions(-) create mode 100644 ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/ControlDimension.tsx create mode 100644 ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx create mode 100644 ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx rename ui/dashboard/src/hooks/{useGrouping.tsx => useBenchmarkGrouping.tsx} (99%) create mode 100644 ui/dashboard/src/hooks/useDetectionGrouping.tsx create mode 100644 ui/dashboard/src/hooks/useDetectionGroupingConfig.ts diff --git a/ui/dashboard/src/components/dashboards/grouping/Benchmark/index.tsx b/ui/dashboard/src/components/dashboards/grouping/Benchmark/index.tsx index b219e574..d406caeb 100644 --- a/ui/dashboard/src/components/dashboards/grouping/Benchmark/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/Benchmark/index.tsx @@ -23,7 +23,10 @@ import { getComponent, registerComponent, } from "@powerpipe/components/dashboards"; -import { GroupingProvider, useGrouping } from "@powerpipe/hooks/useGrouping"; +import { + GroupingProvider, + useBenchmarkGrouping, +} from "@powerpipe/hooks/useBenchmarkGrouping"; import { noop } from "@powerpipe/utils/func"; import { DashboardActions, PanelDefinition, PanelsMap } from "@powerpipe/types"; import { useDashboard } from "@powerpipe/hooks/useDashboard"; @@ -496,7 +499,7 @@ const Inner = ({ showControls, withTitle }) => { firstChildSummaries, diffFirstChildSummaries, diffGrouping, - } = useGrouping(); + } = useBenchmarkGrouping(); if (!definition || !benchmark || !grouping) { return null; diff --git a/ui/dashboard/src/components/dashboards/grouping/CheckGrouping/index.tsx b/ui/dashboard/src/components/dashboards/grouping/CheckGrouping/index.tsx index 4ed5432e..9870a6e7 100644 --- a/ui/dashboard/src/components/dashboards/grouping/CheckGrouping/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/CheckGrouping/index.tsx @@ -3,8 +3,8 @@ import sortBy from "lodash/sortBy"; import { CheckGroupNodeStates, GroupingActions, - useGrouping, -} from "@powerpipe/hooks/useGrouping"; + useBenchmarkGrouping, +} from "@powerpipe/hooks/useBenchmarkGrouping"; import { CheckNode } from "../common"; import { useCallback, useEffect, useState } from "react"; @@ -13,7 +13,7 @@ type CheckGroupingProps = { }; const CheckGrouping = ({ node }: CheckGroupingProps) => { - const { dispatch, nodeStates } = useGrouping(); + const { dispatch, nodeStates } = useBenchmarkGrouping(); const [restoreNodeStates, setRestoreNodeStates] = useState(null); diff --git a/ui/dashboard/src/components/dashboards/grouping/CheckPanel/index.tsx b/ui/dashboard/src/components/dashboards/grouping/CheckPanel/index.tsx index 40476586..6059e828 100644 --- a/ui/dashboard/src/components/dashboards/grouping/CheckPanel/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/CheckPanel/index.tsx @@ -16,7 +16,10 @@ import { SkipIcon, UnknownIcon, } from "@powerpipe/constants/icons"; -import { GroupingActions, useGrouping } from "@powerpipe/hooks/useGrouping"; +import { + GroupingActions, + useBenchmarkGrouping, +} from "@powerpipe/hooks/useBenchmarkGrouping"; import { CheckNode, CheckResult, @@ -283,7 +286,7 @@ const CheckPanelSeverity = ({ severity_summary }: CheckPanelSeverityProps) => { const CheckPanel = ({ depth, node }: CheckPanelProps) => { const { firstChildSummaries, dispatch, groupingsConfig, nodeStates } = - useGrouping(); + useBenchmarkGrouping(); const expanded = nodeStates[node.name] ? nodeStates[node.name].expanded : false; diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/ControlDimension.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/ControlDimension.tsx new file mode 100644 index 00000000..becd82f5 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/ControlDimension.tsx @@ -0,0 +1,13 @@ +import { stringToColor } from "@powerpipe/utils/color"; + +const ControlDimension = ({ dimensionKey, dimensionValue }) => ( + + {dimensionValue} + +); + +export default ControlDimension; diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx new file mode 100644 index 00000000..e89a38a6 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx @@ -0,0 +1,557 @@ +// Ensure Table is loaded & registered first +import "@powerpipe/components/dashboards/Table"; +import Card, { CardProps } from "@powerpipe/components/dashboards/Card"; +import CustomizeViewSummary from "../CustomizeViewSummary"; +import DashboardTitle from "@powerpipe/components/dashboards/titles/DashboardTitle"; +import DetectionGrouping from "../DetectionGrouping"; +import Error from "@powerpipe/components/dashboards/Error"; +import Grid from "@powerpipe/components/dashboards/layout/Grid"; +import Panel from "@powerpipe/components/dashboards/layout/Panel"; +import PanelControls from "@powerpipe/components/dashboards/layout/Panel/PanelControls"; +import useGroupingFilterConfig from "@powerpipe/hooks/useGroupingFilterConfig"; +import usePanelControls from "@powerpipe/hooks/usePanelControls"; +import { + BenchmarkTreeProps, + CheckDisplayGroup, + CheckFilter, + CheckNode, + CheckSummary, +} from "../common"; +import { CardType } from "@powerpipe/components/dashboards/data/CardDataProcessor"; +import { default as BenchmarkType } from "../common/Benchmark"; +import { + getComponent, + registerComponent, +} from "@powerpipe/components/dashboards"; +import { + GroupingProvider, + useDetectionGrouping, +} from "@powerpipe/hooks/useDetectionGrouping"; +import { noop } from "@powerpipe/utils/func"; +import { DashboardActions, PanelDefinition, PanelsMap } from "@powerpipe/types"; +import { useDashboard } from "@powerpipe/hooks/useDashboard"; +import { useEffect, useMemo, useState } from "react"; +import { useSearchParams } from "react-router-dom"; +import { validateFilter } from "../CheckFilterEditor"; +import { Width } from "@powerpipe/components/dashboards/common"; + +const Table = getComponent("table"); + +type BenchmarkTableViewProps = { + benchmark: BenchmarkType; + definition: PanelDefinition; +}; + +type InnerCheckProps = { + benchmark: BenchmarkType; + definition: PanelDefinition; + diff_panels?: PanelsMap; + grouping: CheckNode; + groupingConfig: CheckDisplayGroup[]; + firstChildSummaries: CheckSummary[]; + diffFirstChildSummaries: CheckSummary[] | undefined; + diffGrouping: CheckNode | null; + showControls: boolean; + withTitle: boolean; +}; + +const DetectionBenchmark = (props: InnerCheckProps) => { + const { expressions } = useGroupingFilterConfig(); + const { cliMode, dispatch, selectedPanel } = useDashboard(); + const benchmarkDataTable = useMemo(() => { + if ( + !props.benchmark || + !props.grouping || + props.grouping.status !== "complete" + ) { + return undefined; + } + return props.benchmark.get_data_table(); + }, [props.benchmark, props.grouping]); + const [referenceElement, setReferenceElement] = useState(null); + const [showBenchmarkControls, setShowBenchmarkControls] = useState(false); + const definitionWithData = useMemo(() => { + return { + ...props.definition, + data: benchmarkDataTable, + }; + }, [benchmarkDataTable, props.definition]); + const { panelControls: benchmarkControls, setCustomControls } = + usePanelControls(definitionWithData, props.showControls); + + useEffect(() => { + setCustomControls([ + { + action: async () => + dispatch({ type: DashboardActions.SHOW_CUSTOMIZE_BENCHMARK_PANEL }), + component: , + title: "Filter & Group", + }, + ]); + }, [cliMode, dispatch, setCustomControls]); + + const summaryCards = useMemo(() => { + if (!props.grouping) { + return []; + } + + const totalSummary = props.firstChildSummaries.reduce( + (cumulative, current) => { + cumulative.error += current.error; + cumulative.alarm += current.alarm; + cumulative.ok += current.ok; + cumulative.info += current.info; + cumulative.skip += current.skip; + return cumulative; + }, + { error: 0, alarm: 0, ok: 0, info: 0, skip: 0 }, + ); + + let diffTotalSummary: CheckSummary | null = null; + if ( + props.diffFirstChildSummaries && + props.diffFirstChildSummaries?.length > 0 + ) { + diffTotalSummary = props.diffFirstChildSummaries.reduce( + (cumulative, current) => { + cumulative.error += current.error; + cumulative.alarm += current.alarm; + cumulative.ok += current.ok; + cumulative.info += current.info; + cumulative.skip += current.skip; + return cumulative; + }, + { error: 0, alarm: 0, ok: 0, info: 0, skip: 0 }, + ); + } + + const summary_cards = [ + { + name: `${props.definition.name}.container.summary.ok`, + width: 2, + display_type: totalSummary.ok > 0 ? "ok" : "skip", + properties: { + label: "OK", + value: totalSummary.ok, + // icon: "materialsymbols-solid:check", + icon: "materialsymbols-solid:check_circle", + // icon: "materialsymbols-outline:check_circle", + }, + diff_panel: !!diffTotalSummary + ? { + name: `${props.definition.name}.container.summary.ok.diff`, + width: 2, + display_type: diffTotalSummary.ok > 0 ? "ok" : "skip", + properties: { + label: "OK", + value: diffTotalSummary.ok, + // icon: "materialsymbols-solid:check", + icon: "materialsymbols-solid:check_circle", + // icon: "materialsymbols-outline:check_circle", + }, + } + : null, + }, + { + name: `${props.definition.name}.container.summary.alarm`, + width: 2, + display_type: totalSummary.alarm > 0 ? "alert" : "skip", + properties: { + label: "Alarm", + value: totalSummary.alarm, + icon: "materialsymbols-solid:circle_notifications", + // icon: "materialsymbols-solid:circle_notifications", + // icon: "materialsymbols-outline:circle_notifications", + }, + diff_panel: !!diffTotalSummary + ? { + name: `${props.definition.name}.container.summary.alarm.diff`, + width: 2, + display_type: diffTotalSummary.alarm > 0 ? "alert" : "skip", + properties: { + label: "Alarm", + value: diffTotalSummary.alarm, + icon: "materialsymbols-solid:circle_notifications", + // icon: "materialsymbols-solid:circle_notifications", + // icon: "materialsymbols-outline:circle_notifications", + }, + } + : null, + }, + { + name: `${props.definition.name}.container.summary.error`, + width: 2, + display_type: totalSummary.error > 0 ? "alert" : "skip", + properties: { + label: "Error", + value: totalSummary.error, + // icon: "materialsymbols-solid:priority_high", + icon: "materialsymbols-solid:error", + // icon: "materialsymbols-outline:error", + }, + diff_panel: !!diffTotalSummary + ? { + name: `${props.definition.name}.container.summary.error.diff`, + width: 2, + display_type: diffTotalSummary.error > 0 ? "alert" : "skip", + properties: { + label: "Error", + value: diffTotalSummary.error, + // icon: "materialsymbols-solid:priority_high", + icon: "materialsymbols-solid:error", + // icon: "materialsymbols-outline:error", + }, + } + : null, + }, + { + name: `${props.definition.name}.container.summary.info`, + width: 2, + display_type: totalSummary.info > 0 ? "info" : "skip", + properties: { + label: "Info", + value: totalSummary.info, + // icon: "materialsymbols-solid:info_i", + icon: "materialsymbols-solid:info", + // icon: "materialsymbols-outline:info", + }, + diff_panel: !!diffTotalSummary + ? { + name: `${props.definition.name}.container.summary.info.diff`, + width: 2, + display_type: diffTotalSummary.info > 0 ? "info" : "skip", + properties: { + label: "Info", + value: diffTotalSummary.info, + // icon: "materialsymbols-solid:info_i", + icon: "materialsymbols-solid:info", + // icon: "materialsymbols-outline:info", + }, + } + : null, + }, + { + name: `${props.definition.name}.container.summary.skip`, + width: 2, + display_type: "skip", + properties: { + label: "Skipped", + value: totalSummary.skip, + // icon: "materialsymbols-solid:arrow_right_alt", + icon: "materialsymbols-solid:arrow_circle_right", + // icon: "materialsymbols-outline:arrow_circle_right", + }, + diff_panel: !!diffTotalSummary + ? { + name: `${props.definition.name}.container.summary.skip.diff`, + width: 2, + display_type: "skip", + properties: { + label: "Skipped", + value: diffTotalSummary.skip, + // icon: "materialsymbols-solid:arrow_right_alt", + icon: "materialsymbols-solid:arrow_circle_right", + // icon: "materialsymbols-solid:arrow_circle_right", + // icon: "materialsymbols-outline:arrow_circle_right", + }, + } + : null, + }, + ]; + + const severity_summary = props.grouping.severity_summary; + const criticalRaw = severity_summary["critical"]; + const highRaw = severity_summary["high"]; + const critical = criticalRaw || 0; + const high = highRaw || 0; + + // Calc diff vs previous + const diff_severity_summary = props.diffGrouping?.severity_summary; + let diffCriticalRaw, diffHighRaw, diffCritical, diffHigh; + if (diff_severity_summary) { + diffCriticalRaw = diff_severity_summary["critical"]; + diffHighRaw = diff_severity_summary["high"]; + diffCritical = diffCriticalRaw || 0; + diffHigh = diffHighRaw || 0; + } + + // If we have at least 1 critical or undefined control defined in this run + if (criticalRaw !== undefined || highRaw !== undefined) { + const total = critical + high; + const diffTotal = diffCritical + diffHigh; + summary_cards.push({ + name: `${props.definition.name}.container.summary.severity`, + width: 2, + display_type: total > 0 ? "severity" : "", + properties: { + label: "Critical / High", + value: total, + icon: "materialsymbols-solid:warning", + }, + diff_panel: diff_severity_summary + ? { + name: `${props.definition.name}.container.summary.severity.diff`, + width: 2, + display_type: diffTotal > 0 ? "severity" : "", + properties: { + label: "Critical / High", + value: diffTotal, + icon: "materialsymbols-solid:warning", + }, + } + : null, + }); + } + return summary_cards; + }, [ + props.firstChildSummaries, + props.diffFirstChildSummaries, + props.grouping, + props.diffGrouping, + props.definition.name, + ]); + + const [, setSearchParams] = useSearchParams(); + + if (!props.grouping) { + return null; + } + + const toggleFilter = (filterName: string) => () => { + const split = filterName.split("."); + filterName = split[split.length - 1]; + const expressionHasFilter = !!expressions?.find( + (expr) => expr.type === "status", + ); + let newFilter: CheckFilter; + if (expressionHasFilter) { + newFilter = { + operator: "and", + expressions: expressions?.filter((expr) => expr.type !== "status"), + } as CheckFilter; + if (validateFilter(newFilter)) { + setSearchParams((prev) => { + const newParams = new URLSearchParams(prev); + const asJson = JSON.stringify(newFilter); + newParams.set("where", asJson); + return newParams; + }); + } else { + setSearchParams((prev) => { + const newParams = new URLSearchParams(prev); + newParams.delete("where"); + return newParams; + }); + } + } else { + newFilter = { + operator: "and", + expressions: expressions + ?.filter((expr) => !!expr.type) + .concat({ + type: "status", + value: filterName, + operator: "equal", + title: filterName, + }), + } as CheckFilter; + if (validateFilter(newFilter)) { + setSearchParams((prev) => { + const newParams = new URLSearchParams(prev); + const asJson = JSON.stringify(newFilter); + newParams.set("where", asJson); + return newParams; + }); + } + } + }; + + return ( + setShowBenchmarkControls(true) + : noop, + onMouseLeave: () => setShowBenchmarkControls(false), + }} + setRef={setReferenceElement} + > + {/*Don't show when in panel detail view*/} + {!selectedPanel && ( + + ) : null + } + /> + )} + + {summaryCards + .filter(({ name }) => { + const statusFromExpressions = expressions?.find( + (expr) => expr.type === "status", + )?.value; + if (statusFromExpressions) { + return name.includes(statusFromExpressions); + } + return true; + }) + .map((summaryCard) => { + const cardProps: CardProps = { + name: summaryCard.name, + dashboard: props.definition.dashboard, + display_type: summaryCard.display_type as CardType, + panel_type: "card", + properties: summaryCard.properties, + status: "complete", + width: summaryCard.width as Width, + }; + return ( + + + {/*@ts-ignore*/} + + + + ); + })} + + + + + + ); +}; + +const BenchmarkTree = (props: BenchmarkTreeProps) => { + if (!props.properties || !props.properties.first_child_summaries) { + return null; + } + + return ; +}; + +const BenchmarkTableView = ({ + benchmark, + definition, +}: BenchmarkTableViewProps) => { + const benchmarkDataTable = useMemo( + () => benchmark.get_data_table(), + [benchmark], + ); + + return ( + + + + ); +}; + +const Inner = ({ showControls, withTitle }) => { + const { + benchmark, + definition, + grouping, + groupingsConfig, + firstChildSummaries, + diffFirstChildSummaries, + diffGrouping, + } = useDetectionGrouping(); + + if (!definition || !benchmark || !grouping) { + return null; + } + + if (!definition.display_type || definition.display_type === "benchmark") { + return ( + + ); + // @ts-ignore + } else if (definition.display_type === "table") { + return ; + } else { + return ( + + + + ); + } +}; + +type DetectionBenchmarkWrapperProps = PanelDefinition & { + diff_panels?: PanelsMap; + showControls: boolean; + withTitle: boolean; +}; + +const DetectionBenchmarkWrapper = (props: DetectionBenchmarkWrapperProps) => { + return ( + + + + ); +}; + +registerComponent("detection_benchmark", DetectionBenchmarkWrapper); + +export default DetectionBenchmarkWrapper; diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx new file mode 100644 index 00000000..80a645a4 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx @@ -0,0 +1,48 @@ +import CheckPanel from "../CheckPanel"; +import sortBy from "lodash/sortBy"; +import { + CheckGroupNodeStates, + GroupingActions, + useDetectionGrouping, +} from "@powerpipe/hooks/useDetectionGrouping"; +import { CheckNode } from "../common"; +import { useCallback, useEffect, useState } from "react"; + +type CheckGroupingProps = { + node: CheckNode; +}; + +const DetectionGrouping = ({ node }: CheckGroupingProps) => { + const { dispatch, nodeStates } = useDetectionGrouping(); + const [restoreNodeStates, setRestoreNodeStates] = + useState(null); + + const expand = useCallback(() => { + setRestoreNodeStates(nodeStates); + dispatch({ type: GroupingActions.EXPAND_ALL_NODES }); + }, [dispatch, nodeStates]); + + const restore = useCallback(() => { + if (restoreNodeStates) { + dispatch({ + type: GroupingActions.UPDATE_NODES, + nodes: restoreNodeStates, + }); + } + }, [dispatch, restoreNodeStates]); + + useEffect(() => { + window.onbeforeprint = expand; + window.onafterprint = restore; + }, [expand, restore]); + + return ( +
+ {sortBy(node.children, "sort")?.map((child) => ( + + ))} +
+ ); +}; + +export default DetectionGrouping; diff --git a/ui/dashboard/src/components/dashboards/layout/Child/index.tsx b/ui/dashboard/src/components/dashboards/layout/Child/index.tsx index db5d43de..13426147 100644 --- a/ui/dashboard/src/components/dashboards/layout/Child/index.tsx +++ b/ui/dashboard/src/components/dashboards/layout/Child/index.tsx @@ -37,6 +37,16 @@ const Child = ({ showControls={showPanelControls} /> ); + case "detection_benchmark": + case "detection": + const DetectionBenchmark = getComponent("detection_benchmark"); + return ( + + ); case "card": const Card = getComponent("card"); return ( diff --git a/ui/dashboard/src/hooks/useGrouping.tsx b/ui/dashboard/src/hooks/useBenchmarkGrouping.tsx similarity index 99% rename from ui/dashboard/src/hooks/useGrouping.tsx rename to ui/dashboard/src/hooks/useBenchmarkGrouping.tsx index e7e35eb7..d2d4dee9 100644 --- a/ui/dashboard/src/hooks/useGrouping.tsx +++ b/ui/dashboard/src/hooks/useBenchmarkGrouping.tsx @@ -949,7 +949,7 @@ const GroupingProvider = ({ ); }; -const useGrouping = () => { +const useBenchmarkGrouping = () => { const context = useContext(GroupingContext); if (context === undefined) { throw new Error("useCheckGrouping must be used within a GroupingContext"); @@ -957,7 +957,12 @@ const useGrouping = () => { return context as ICheckGroupingContext; }; -export { GroupingActions, GroupingContext, GroupingProvider, useGrouping }; +export { + GroupingActions, + GroupingContext, + GroupingProvider, + useBenchmarkGrouping, +}; // https://stackoverflow.com/questions/50737098/multi-level-grouping-in-javascript // keys = ['level1', 'level2'], diff --git a/ui/dashboard/src/hooks/useDetectionGrouping.tsx b/ui/dashboard/src/hooks/useDetectionGrouping.tsx new file mode 100644 index 00000000..1199b60f --- /dev/null +++ b/ui/dashboard/src/hooks/useDetectionGrouping.tsx @@ -0,0 +1,980 @@ +import BenchmarkNode from "@powerpipe/components/dashboards/grouping/common/node/BenchmarkNode"; +import ControlEmptyResultNode from "@powerpipe/components/dashboards/grouping/common/node/ControlEmptyResultNode"; +import ControlErrorNode from "@powerpipe/components/dashboards/grouping/common/node/ControlErrorNode"; +import ControlNode from "@powerpipe/components/dashboards/grouping/common/node/ControlNode"; +import ControlResultNode from "@powerpipe/components/dashboards/grouping/common/node/ControlResultNode"; +import ControlRunningNode from "@powerpipe/components/dashboards/grouping/common/node/ControlRunningNode"; +import KeyValuePairNode from "@powerpipe/components/dashboards/grouping/common/node/KeyValuePairNode"; +import RootNode from "@powerpipe/components/dashboards/grouping/common/node/RootNode"; +import useGroupingFilterConfig from "./useGroupingFilterConfig"; +import useDetectionGroupingConfig from "./useDetectionGroupingConfig"; +import usePrevious from "./usePrevious"; +import { + CheckDisplayGroup, + CheckFilter, + CheckNode, + CheckResult, + CheckResultDimension, + CheckResultStatus, + CheckSeverity, + CheckSummary, + CheckTags, + findDimension, +} from "@powerpipe/components/dashboards/grouping/common"; +import { + createContext, + useContext, + useEffect, + useMemo, + useReducer, +} from "react"; +import { default as BenchmarkType } from "@powerpipe/components/dashboards/grouping/common/Benchmark"; +import { + ElementType, + IActions, + PanelDefinition, + PanelsMap, +} from "@powerpipe/types"; +import { useDashboard } from "./useDashboard"; +import { useDashboardControls } from "@powerpipe/components/dashboards/layout/Dashboard/DashboardControlsProvider"; + +type CheckGroupingActionType = ElementType; + +export type CheckGroupNodeState = { + expanded: boolean; +}; + +export type CheckGroupNodeStates = { + [name: string]: CheckGroupNodeState; +}; + +export type CheckGroupingAction = { + type: CheckGroupingActionType; + [key: string]: any; +}; + +type CheckGroupFilterStatusValuesMap = { + [key in keyof typeof CheckResultStatus]: number; +}; + +export type CheckGroupFilterValues = { + status: CheckGroupFilterStatusValuesMap; + control_tag: { key: {}; value: {} }; + dimension: { key: {}; value: {} }; +}; + +type ICheckGroupingContext = { + benchmark: BenchmarkType | null; + definition: PanelDefinition; + grouping: CheckNode | null; + groupingsConfig: CheckDisplayGroup[]; + firstChildSummaries: CheckSummary[]; + diffFirstChildSummaries?: CheckSummary[]; + diffGrouping: CheckNode | null; + nodeStates: CheckGroupNodeStates; + filterValues: CheckGroupFilterValues; + dispatch(action: CheckGroupingAction): void; +}; + +const GroupingActions: IActions = { + COLLAPSE_ALL_NODES: "collapse_all_nodes", + COLLAPSE_NODE: "collapse_node", + EXPAND_ALL_NODES: "expand_all_nodes", + EXPAND_NODE: "expand_node", + UPDATE_NODES: "update_nodes", +}; + +const checkGroupingActions = Object.values(GroupingActions); + +const GroupingContext = createContext(null); + +const addBenchmarkTrunkNode = ( + benchmark_trunk: BenchmarkType[], + children: CheckNode[], + benchmarkChildrenLookup: { [name: string]: CheckNode[] }, + groupingKeysBeforeBenchmark: string[], + parentGroupType: string | null, +): CheckNode => { + let newChildren: CheckNode[]; + if (benchmark_trunk.length > 1) { + newChildren = [ + addBenchmarkTrunkNode( + benchmark_trunk.slice(1), + children, + benchmarkChildrenLookup, + groupingKeysBeforeBenchmark, + parentGroupType, + ), + ]; + } else { + newChildren = children; + } + const currentNode = benchmark_trunk.length > 0 ? benchmark_trunk[0] : null; + if (!!currentNode?.name) { + const lookupKey = + groupingKeysBeforeBenchmark.length > 0 + ? `${groupingKeysBeforeBenchmark.join("/")}/${ + currentNode?.name || "Other" + }` + : currentNode?.name || "Other"; + const existingChildren = benchmarkChildrenLookup[lookupKey]; + if (existingChildren) { + // We only want to add children that are not already in the list, + // else we end up with duplicate nodes in the tree + for (const child of newChildren) { + if ( + existingChildren && + existingChildren.find((c) => c.name === child.name) + ) { + continue; + } + existingChildren.push(child); + } + } else { + benchmarkChildrenLookup[lookupKey] = newChildren; + } + } + return new BenchmarkNode( + !!parentGroupType + ? currentNode?.title || "Other" + : currentNode?.sort || "Other", + currentNode?.name || "Other", + currentNode?.title || "Other", + newChildren, + ); +}; + +const getCheckStatusGroupingKey = (status: CheckResultStatus): string => { + switch (status) { + case CheckResultStatus.alarm: + return "Alarm"; + case CheckResultStatus.error: + return "Error"; + case CheckResultStatus.info: + return "Info"; + case CheckResultStatus.ok: + return "OK"; + case CheckResultStatus.skip: + return "Skipped"; + case CheckResultStatus.empty: + return "Empty"; + } +}; + +const getCheckStatusSortKey = (status: CheckResultStatus): string => { + switch (status) { + case CheckResultStatus.ok: + return "0"; + case CheckResultStatus.alarm: + return "1"; + case CheckResultStatus.error: + return "2"; + case CheckResultStatus.info: + return "3"; + case CheckResultStatus.skip: + return "4"; + case CheckResultStatus.empty: + return "5"; + } +}; + +const getCheckSeverityGroupingKey = ( + severity: CheckSeverity | undefined, +): string => { + switch (severity) { + case "critical": + return "Critical"; + case "high": + return "High"; + case "low": + return "Low"; + case "medium": + return "Medium"; + default: + return "Unspecified"; + } +}; + +const getCheckSeveritySortKey = ( + severity: CheckSeverity | undefined, +): string => { + switch (severity) { + case "critical": + return "0"; + case "high": + return "1"; + case "medium": + return "2"; + case "low": + return "3"; + default: + return "4"; + } +}; + +const getCheckDimensionGroupingKey = ( + dimensionKey: string | undefined, + dimensions: CheckResultDimension[], +): string => { + if (!dimensionKey) { + return ""; + } + const foundDimension = findDimension(dimensions, dimensionKey); + return foundDimension ? foundDimension.value : ``; +}; + +function getCheckTagGroupingKey(tagKey: string | undefined, tags: CheckTags) { + if (!tagKey) { + return "Tag key not set"; + } + return tags[tagKey] || ``; +} + +const getCheckReasonGroupingKey = (reason: string | undefined): string => { + return reason || ""; +}; + +const getCheckResourceGroupingKey = (resource: string | undefined): string => { + return resource || ""; +}; + +// const getCheckResultGroupingKey = (checkResult: CheckResult): string => { +// return `${checkResult.control.name}-${checkResult.resource}`; +// }; + +const getCheckGroupingKey = ( + checkResult: CheckResult, + group: CheckDisplayGroup, +) => { + switch (group.type) { + case "dimension": + return getCheckDimensionGroupingKey(group.value, checkResult.dimensions); + case "control_tag": + return getCheckTagGroupingKey(group.value, checkResult.tags); + case "reason": + return getCheckReasonGroupingKey(checkResult.reason); + case "resource": + return getCheckResourceGroupingKey(checkResult.resource); + // case "result": + // return getCheckResultGroupingKey(checkResult); + case "severity": + return getCheckSeverityGroupingKey(checkResult.control.severity); + case "status": + return getCheckStatusGroupingKey(checkResult.status); + case "benchmark": + if (checkResult.benchmark_trunk.length <= 1) { + return null; + } + return checkResult.benchmark_trunk[checkResult.benchmark_trunk.length - 1] + .name; + case "control": + return checkResult.control.name; + default: + return "Other"; + } +}; + +const getCheckGroupingNode = ( + checkResult: CheckResult, + group: CheckDisplayGroup, + children: CheckNode[], + benchmarkChildrenLookup: { [name: string]: CheckNode[] }, + groupingKeysBeforeBenchmark: string[] = [], + parentGroupType: string | null, +): CheckNode => { + switch (group.type) { + case "dimension": + const dimensionValue = getCheckDimensionGroupingKey( + group.value, + checkResult.dimensions, + ); + return new KeyValuePairNode( + dimensionValue, + "dimension", + group.value || "Dimension key not set", + dimensionValue, + children, + ); + case "control_tag": + const value = getCheckTagGroupingKey(group.value, checkResult.tags); + return new KeyValuePairNode( + value, + "control_tag", + group.value || "Tag key not set", + value, + children, + ); + case "reason": + return new KeyValuePairNode( + checkResult.reason || "𤭢", // U+24B62 - very high in sort order - will almost guarantee to put this to the end, + "reason", + "reason", + getCheckReasonGroupingKey(checkResult.reason), + children, + ); + case "resource": + return new KeyValuePairNode( + checkResult.resource || "𤭢", // U+24B62 - very high in sort order - will almost guarantee to put this to the end + "resource", + "resource", + getCheckResourceGroupingKey(checkResult.resource), + children, + ); + // case "result": + // return new ControlResultNode( + // checkResult, + // `${checkResult.control.name}-${checkResult.resource}`, + // "result", + // "result", + // getCheckResultGroupingKey(checkResult), + // children, + // ); + case "severity": + return new KeyValuePairNode( + getCheckSeveritySortKey(checkResult.control.severity), + "severity", + "severity", + getCheckSeverityGroupingKey(checkResult.control.severity), + children, + ); + case "status": + return new KeyValuePairNode( + getCheckStatusSortKey(checkResult.status), + "status", + "status", + getCheckStatusGroupingKey(checkResult.status), + children, + ); + case "benchmark": + return checkResult.benchmark_trunk.length > 1 + ? addBenchmarkTrunkNode( + checkResult.benchmark_trunk.slice(1), + children, + benchmarkChildrenLookup, + groupingKeysBeforeBenchmark, + parentGroupType, + ) + : children[0]; + case "control": + return new ControlNode( + parentGroupType === "benchmark" + ? checkResult.control.sort + : checkResult.control.title || checkResult.control.name, + checkResult.control.name, + checkResult.control.title, + children, + ); + default: + throw new Error(`Unknown group type ${group.type}`); + } +}; + +const addBenchmarkGroupingNode = ( + existingGroups: CheckNode[], + groupingNode: CheckNode, +) => { + const existingGroup = existingGroups.find( + (existingGroup) => existingGroup.name === groupingNode.name, + ); + if (existingGroup) { + (existingGroup as BenchmarkNode).merge(groupingNode); + } else { + existingGroups.push(groupingNode); + } +}; + +function getBenchmarkChildrenLookupKey( + groupingHierarchyKeys: string[], + groupKey: string, +) { + const groupingKeysBeforeBenchmark = groupingHierarchyKeys.slice( + 0, + groupingHierarchyKeys.indexOf("benchmark"), + ); + const benchmarkChildrenLookupKey = + groupingKeysBeforeBenchmark.length > 0 + ? `${groupingKeysBeforeBenchmark.join("/")}/${groupKey}` + : groupKey; + return { groupingKeysBeforeBenchmark, benchmarkChildrenLookupKey }; +} + +const groupCheckItems = ( + temp: { _: CheckNode[] }, + checkResult: CheckResult, + groupingsConfig: CheckDisplayGroup[], + checkNodeStates: CheckGroupNodeStates, + benchmarkChildrenLookup: { [name: string]: CheckNode[] }, + groupingHierarchyKeys: string[], +) => { + return groupingsConfig + .filter((groupConfig) => groupConfig.type !== "result") + .reduce( + ( + cumulativeGrouping, + currentGroupingConfig, + currentIndex, + filteredGroups, + ) => { + // We want to capture the parent group type to use later for sorting purposes. + // If we're trying to decide how to sort a control node, we need to know if + // we're under a benchmark or some other grouping type. If we're under a benchmark, + // we'll sort by the order determined by the benchmark, else we'll sort by title + const parentGroupType = + currentIndex > 0 ? filteredGroups[currentIndex - 1].type : null; + // Get this items grouping key - e.g. control or benchmark name + const groupKey = getCheckGroupingKey( + checkResult, + currentGroupingConfig, + ); + + if (!groupKey) { + return cumulativeGrouping; + } + + groupingHierarchyKeys.push(groupKey); + + // Collapse all benchmark trunk nodes + if (currentGroupingConfig.type === "benchmark") { + checkResult.benchmark_trunk.forEach( + (benchmark) => + (checkNodeStates[benchmark.name] = { + expanded: false, + }), + ); + } else { + checkNodeStates[groupKey] = { + expanded: false, + }; + } + + const { groupingKeysBeforeBenchmark, benchmarkChildrenLookupKey } = + getBenchmarkChildrenLookupKey(groupingHierarchyKeys, groupKey); + + if (!cumulativeGrouping[groupKey]) { + cumulativeGrouping[groupKey] = { _: [] }; + + const groupingNode = getCheckGroupingNode( + checkResult, + currentGroupingConfig, + cumulativeGrouping[groupKey]._, + benchmarkChildrenLookup, + groupingKeysBeforeBenchmark, + parentGroupType, + ); + + if (groupingNode) { + if (currentGroupingConfig.type === "benchmark") { + // For benchmarks, we need to get the benchmark nodes including the trunk + addBenchmarkGroupingNode(cumulativeGrouping._, groupingNode); + } else { + cumulativeGrouping._.push(groupingNode); + } + } + } + + // If the grouping key for this has already been logged by another result, + // use the existing children from that - this covers cases where we may have + // benchmark 1 -> benchmark 2 -> control 1 + // benchmark 1 -> control 2 + // ...when we build the benchmark grouping node for control 1, its key will be + // for benchmark 2, but we'll add a hierarchical grouping node for benchmark 1 -> benchmark 2 + // When we come to get the benchmark grouping node for control 2, we'll need to add + // the control to the existing children of benchmark 1 + if ( + currentGroupingConfig.type === "benchmark" && + benchmarkChildrenLookup[benchmarkChildrenLookupKey] + ) { + const groupingEntry = cumulativeGrouping[groupKey]; + const { _, ...rest } = groupingEntry || {}; + cumulativeGrouping[groupKey] = { + _: benchmarkChildrenLookup[benchmarkChildrenLookupKey], + ...rest, + }; + } + + return cumulativeGrouping[groupKey]; + }, + temp, + ); +}; + +const getCheckResultNode = (checkResult: CheckResult) => { + if (checkResult.type === "loading") { + return new ControlRunningNode(checkResult); + } else if (checkResult.type === "error") { + return new ControlErrorNode(checkResult); + } else if (checkResult.type === "empty") { + return new ControlEmptyResultNode(checkResult); + } + return new ControlResultNode(checkResult); + // return new ControlResultNode( + // checkResult, + // `${checkResult.control.name}-${checkResult.resource}`, + // "result", + // "result", + // getCheckResultGroupingKey(checkResult), + // undefined, + // ); +}; + +const reducer = (state: CheckGroupNodeStates, action) => { + switch (action.type) { + case GroupingActions.COLLAPSE_ALL_NODES: { + const newNodes = {}; + for (const [name, node] of Object.entries(state)) { + newNodes[name] = { + ...node, + expanded: false, + }; + } + return { + ...state, + nodes: newNodes, + }; + } + case GroupingActions.COLLAPSE_NODE: + return { + ...state, + [action.name]: { + ...(state[action.name] || {}), + expanded: false, + }, + }; + case GroupingActions.EXPAND_ALL_NODES: { + const newNodes = {}; + Object.entries(state).forEach(([name, node]) => { + newNodes[name] = { + ...node, + expanded: true, + }; + }); + return newNodes; + } + case GroupingActions.EXPAND_NODE: { + return { + ...state, + [action.name]: { + ...(state[action.name] || {}), + expanded: true, + }, + }; + } + case GroupingActions.UPDATE_NODES: + return action.nodes; + default: + return state; + } +}; + +type CheckGroupingProviderProps = { + children: null | JSX.Element | JSX.Element[]; + definition: PanelDefinition; + diff_panels: PanelsMap | undefined; +}; + +function recordFilterValues( + filterValues: { + severity: { value: {} }; + reason: { value: {} }; + resource: { value: {} }; + control: { value: {} }; + control_tag: { key: {}; value: {} }; + dimension: { key: {}; value: {} }; + benchmark: { value: {} }; + status: { + alarm: number; + skip: number; + error: number; + ok: number; + empty: number; + info: number; + }; + }, + checkResult: CheckResult, +) { + // Record the benchmark of this check result to allow assisted filtering later + if (!!checkResult.benchmark_trunk && checkResult.benchmark_trunk.length > 0) { + for (const benchmark of checkResult.benchmark_trunk) { + filterValues.benchmark.value[benchmark.name] = filterValues.benchmark + .value[benchmark.name] || { title: benchmark.title, count: 0 }; + filterValues.benchmark.value[benchmark.name].count += 1; + } + } + + // Record the control of this check result to allow assisted filtering later + filterValues.control.value[checkResult.control.name] = filterValues.control + .value[checkResult.control.name] || { + title: checkResult.control.title, + count: 0, + }; + filterValues.control.value[checkResult.control.name].count += 1; + + // Record the status of this check result to allow assisted filtering later + filterValues.status[checkResult.status] = + filterValues.status[checkResult.status] || 0; + filterValues.status[checkResult.status] += 1; + + // Record the reason of this check result to allow assisted filtering later + if (checkResult.reason) { + filterValues.reason.value[checkResult.reason] = + filterValues.reason.value[checkResult.reason] || 0; + filterValues.reason.value[checkResult.reason] += 1; + } + + // Record the resource of this check result to allow assisted filtering later + if (checkResult.resource) { + filterValues.resource.value[checkResult.resource] = + filterValues.resource.value[checkResult.resource] || 0; + filterValues.resource.value[checkResult.resource] += 1; + } + + // Record the severity of this check result to allow assisted filtering later + if (checkResult.severity) { + filterValues.severity.value[checkResult.severity.toString()] = + filterValues.severity.value[checkResult.severity.toString()] || 0; + filterValues.severity.value[checkResult.severity.toString()] += 1; + } + + // Record the dimension keys/values + value/key counts of this check result to allow assisted filtering later + for (const dimension of checkResult.dimensions) { + if (!(dimension.key in filterValues.dimension.key)) { + filterValues.dimension.key[dimension.key] = { + [dimension.value]: 0, + }; + } + if (!(dimension.value in filterValues.dimension.key[dimension.key])) { + filterValues.dimension.key[dimension.key][dimension.value] = 0; + } + filterValues.dimension.key[dimension.key][dimension.value] += 1; + + if (!(dimension.value in filterValues.dimension.value)) { + filterValues.dimension.value[dimension.value] = { + [dimension.key]: 0, + }; + } + if (!(dimension.key in filterValues.dimension.value[dimension.value])) { + filterValues.dimension.value[dimension.value][dimension.key] = 0; + } + filterValues.dimension.value[dimension.value][dimension.key] += 1; + } + + // Record the dimension keys/values + value/key counts of this check result to allow assisted filtering later + for (const [tagKey, tagValue] of Object.entries(checkResult.tags || {})) { + if (!(tagKey in filterValues.control_tag.key)) { + filterValues.control_tag.key[tagKey] = { + [tagValue]: 0, + }; + } + if (!(tagValue in filterValues.control_tag.key[tagKey])) { + filterValues.control_tag.key[tagKey][tagValue] = 0; + } + filterValues.control_tag.key[tagKey][tagValue] += 1; + + if (!(tagValue in filterValues.control_tag.value)) { + filterValues.control_tag.value[tagValue] = { + [tagKey]: 0, + }; + } + if (!(tagKey in filterValues.control_tag.value[tagValue])) { + filterValues.control_tag.value[tagValue][tagKey] = 0; + } + filterValues.control_tag.value[tagValue][tagKey] += 1; + } +} + +const escapeRegex = (string) => { + if (!string) { + return string; + } + return string.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&"); +}; + +const wildcardToRegex = (wildcard: string) => { + const escaped = escapeRegex(wildcard); + return escaped.replaceAll("\\*", ".*"); +}; + +const includeResult = ( + checkResult: CheckResult, + checkFilterConfig: CheckFilter, +): boolean => { + if ( + !checkFilterConfig || + !checkFilterConfig.expressions || + checkFilterConfig.expressions.length === 0 + ) { + return true; + } + let matches: boolean[] = []; + for (const filter of checkFilterConfig.expressions) { + if (!filter.type) { + continue; + } + + // @ts-ignore + const valueRegex = new RegExp(`^${wildcardToRegex(filter.value)}$`); + + switch (filter.type) { + case "benchmark": { + let matchesTrunk = false; + for (const benchmark of checkResult.benchmark_trunk || []) { + const match = valueRegex.test(benchmark.name); + if (match) { + matchesTrunk = true; + break; + } + } + matches.push(matchesTrunk); + break; + } + case "control": { + matches.push(valueRegex.test(checkResult.control.name)); + break; + } + case "reason": { + matches.push(valueRegex.test(checkResult.reason)); + break; + } + case "resource": { + matches.push(valueRegex.test(checkResult.resource)); + break; + } + case "severity": { + matches.push(valueRegex.test(checkResult.severity || "")); + break; + } + case "status": { + matches.push(valueRegex.test(checkResult.status.toString())); + break; + } + case "dimension": { + // @ts-ignore + const keyRegex = new RegExp(`^${wildcardToRegex(filter.key)}$`); + let matchesDimensions = false; + for (const dimension of checkResult.dimensions || []) { + if ( + keyRegex.test(dimension.key) && + valueRegex.test(dimension.value) + ) { + matchesDimensions = true; + break; + } + } + matches.push(matchesDimensions); + break; + } + case "control_tag": { + // @ts-ignore + const keyRegex = new RegExp(`^${wildcardToRegex(filter.key)}$`); + let matchesTags = false; + for (const [tagKey, tagValue] of Object.entries( + checkResult.tags || {}, + )) { + if (keyRegex.test(tagKey) && valueRegex.test(tagValue)) { + matchesTags = true; + break; + } + } + matches.push(matchesTags); + break; + } + default: + matches.push(true); + } + } + return matches.every((m) => m); +}; + +const useGroupingInternal = ( + definition: PanelDefinition | null, + panelsMap: PanelsMap | undefined, + groupingsConfig: CheckDisplayGroup[], + skip = false, +) => { + const checkFilterConfig = useGroupingFilterConfig(); + + return useMemo(() => { + const filterValues = { + benchmark: { value: {} }, + control: { value: {} }, + control_tag: { key: {}, value: {} }, + dimension: { key: {}, value: {} }, + reason: { value: {} }, + resource: { value: {} }, + severity: { value: {} }, + status: { alarm: 0, empty: 0, error: 0, info: 0, ok: 0, skip: 0 }, + }; + + if (!definition || skip || !panelsMap) { + return [null, null, null, [], {}, filterValues]; + } + + // @ts-ignore + const nestedBenchmarks = definition.children?.filter( + (child) => child.panel_type === "benchmark", + ); + const nestedControls = + definition.panel_type === "control" + ? [definition] + : // @ts-ignore + definition.children?.filter( + (child) => child.panel_type === "control", + ); + + const rootBenchmarkPanel = panelsMap[definition.name]; + const b = new BenchmarkType( + "0", + rootBenchmarkPanel.name, + rootBenchmarkPanel.title, + rootBenchmarkPanel.description, + nestedBenchmarks, + nestedControls, + panelsMap, + [], + ); + + const checkNodeStates: CheckGroupNodeStates = {}; + const result: CheckNode[] = []; + const temp = { _: result }; + const benchmarkChildrenLookup = {}; + + // We'll loop over each control result and build up the grouped nodes from there + b.all_control_results.forEach((checkResult) => { + // Record values pre-filter so we can expand out from filtered states with all values later on + recordFilterValues(filterValues, checkResult); + + // See if the result needs to be filtered + if (!includeResult(checkResult, checkFilterConfig)) { + return; + } + + // Build a grouping node - this will be the leaf node down from the root group + // e.g. benchmark -> control (where control is the leaf) + const grouping = groupCheckItems( + temp, + checkResult, + groupingsConfig, + checkNodeStates, + benchmarkChildrenLookup, + [], + ); + // Build and add a check result node to the children of the trailing group. + // This will be used to calculate totals and severity, amongst other things. + const node = getCheckResultNode(checkResult); + grouping._.push(node); + }); + + const results = new RootNode(result); + + const firstChildSummaries: CheckSummary[] = []; + for (const child of results.children) { + firstChildSummaries.push(child.summary); + } + + return [ + b, + { ...rootBenchmarkPanel, children: definition.children }, + results, + firstChildSummaries, + checkNodeStates, + filterValues, + ] as const; + }, [checkFilterConfig, definition, groupingsConfig, panelsMap, skip]); +}; + +const GroupingProvider = ({ + children, + definition, + diff_panels, +}: CheckGroupingProviderProps) => { + const { panelsMap } = useDashboard(); + const { setContext: setDashboardControlsContext } = useDashboardControls(); + const [nodeStates, dispatch] = useReducer(reducer, { nodes: {} }); + const groupingsConfig = useDetectionGroupingConfig(); + + const [ + benchmark, + panelDefinition, + grouping, + firstChildSummaries, + tempNodeStates, + filterValues, + ] = useGroupingInternal(definition, panelsMap, groupingsConfig); + + const [, , diffGrouping, diffFirstChildSummaries] = useGroupingInternal( + definition, + diff_panels, + groupingsConfig, + !diff_panels, + ); + + const previousGroupings = usePrevious({ groupingsConfig }); + + useEffect(() => { + if ( + previousGroupings && + // @ts-ignore + previousGroupings.groupingsConfig === groupingsConfig + ) { + return; + } + dispatch({ + type: GroupingActions.UPDATE_NODES, + nodes: tempNodeStates, + }); + }, [previousGroupings, groupingsConfig, tempNodeStates]); + + useEffect(() => { + setDashboardControlsContext(filterValues); + }, [filterValues, setDashboardControlsContext]); + + return ( + + {children} + + ); +}; + +const useDetectionGrouping = () => { + const context = useContext(GroupingContext); + if (context === undefined) { + throw new Error("useCheckGrouping must be used within a GroupingContext"); + } + return context as ICheckGroupingContext; +}; + +export { + GroupingActions, + GroupingContext, + GroupingProvider, + useDetectionGrouping, +}; + +// https://stackoverflow.com/questions/50737098/multi-level-grouping-in-javascript +// keys = ['level1', 'level2'], +// result = [], +// temp = { _: result }; +// +// data.forEach(function (a) { +// keys.reduce(function (r, k) { +// if (!r[a[k]]) { +// r[a[k]] = { _: [] }; +// r._.push({ [k]: a[k], [k + 'list']: r[a[k]]._ }); +// } +// return r[a[k]]; +// }, temp)._.push({ Id: a.Id }); +// }); diff --git a/ui/dashboard/src/hooks/useDetectionGroupingConfig.ts b/ui/dashboard/src/hooks/useDetectionGroupingConfig.ts new file mode 100644 index 00000000..04882be8 --- /dev/null +++ b/ui/dashboard/src/hooks/useDetectionGroupingConfig.ts @@ -0,0 +1,68 @@ +import { + CheckDisplayGroup, + CheckDisplayGroupType, +} from "@powerpipe/components/dashboards/grouping/common"; +import { useMemo } from "react"; +import { useSearchParams } from "react-router-dom"; + +const groupingKeys = [ + "benchmark", + "control", + "control_tag", + "dimension", + "reason", + "resource", + "result", + "severity", + "status", +]; + +const useCheckGroupingConfig = () => { + const [searchParams] = useSearchParams(); + return useMemo(() => { + const rawGrouping = searchParams.get("grouping"); + if (rawGrouping) { + const groupings: CheckDisplayGroup[] = []; + const groupingParts = rawGrouping.split(",").filter((g) => !!g); + for (const groupingPart of groupingParts) { + const typeValueParts = groupingPart.split("|"); + const groupingKey = typeValueParts[0]; + + // Is this a valid grouping key? + const isValid = groupingKeys.includes(groupingKey); + if (!isValid) { + throw new Error(`Unsupported grouping key ${groupingKey}`); + } + + if (typeValueParts.length > 1) { + groupings.push({ + type: typeValueParts[0] as CheckDisplayGroupType, + value: typeValueParts[1], + }); + } else { + groupings.push({ + type: typeValueParts[0] as CheckDisplayGroupType, + }); + } + } + return groupings; + } else { + return [ + // { type: "status" }, + // { type: "reason" }, + // { type: "resource" }, + // { type: "severity" }, + // { type: "dimension", value: "account_id" }, + // { type: "dimension", value: "region" }, + // { type: "control_tag", value: "service" }, + // { type: "control_tag", value: "cis_type" }, + // { type: "control_tag", value: "cis_level" }, + { type: "benchmark" }, + { type: "control" }, + { type: "result" }, + ] as CheckDisplayGroup[]; + } + }, [searchParams]); +}; + +export default useCheckGroupingConfig; diff --git a/ui/dashboard/src/types/index.ts b/ui/dashboard/src/types/index.ts index 540b1f5f..66086729 100644 --- a/ui/dashboard/src/types/index.ts +++ b/ui/dashboard/src/types/index.ts @@ -325,6 +325,8 @@ export type DashboardPanelType = | "container" | "control" | "dashboard" + | "detection" + | "detection_benchmark" | "edge" | "error" | "flow" diff --git a/ui/dashboard/src/utils/registerComponents.ts b/ui/dashboard/src/utils/registerComponents.ts index c81c0cb5..ed5ad478 100644 --- a/ui/dashboard/src/utils/registerComponents.ts +++ b/ui/dashboard/src/utils/registerComponents.ts @@ -41,6 +41,9 @@ import "@powerpipe/components/dashboards/inputs/Input"; // Check import "@powerpipe/components/dashboards/grouping/Benchmark"; +// Detection +import "@powerpipe/components/dashboards/grouping/DetectionBenchmark"; + // Dashboard import "@powerpipe/components/dashboards/layout/Dashboard"; From d7c991dd2f0580f7f812dd6a53576533c73b5c41 Mon Sep 17 00:00:00 2001 From: kai Date: Wed, 6 Nov 2024 18:22:17 +0700 Subject: [PATCH 05/85] Add detection run and detection_benchmark run commands --- internal/cmd/check.go | 2 +- internal/cmd/detection.go | 213 ++++++++++++++++++ internal/cmd/resource_cmd.go | 4 + internal/cmd/root.go | 1 + internal/cmdconfig/cmd_targets.go | 4 +- internal/constants/flags.go | 14 ++ .../dashboard_execution_tree.go | 5 + internal/dashboardexecute/snapshot.go | 2 - internal/dashboardinit/init_data.go | 27 --- internal/initialisation/init_data.go | 2 +- internal/resources/detection_benchmark.go | 17 ++ internal/resources/generic_type.go | 2 + 12 files changed, 260 insertions(+), 33 deletions(-) create mode 100644 internal/cmd/detection.go delete mode 100644 internal/dashboardinit/init_data.go diff --git a/internal/cmd/check.go b/internal/cmd/check.go index 6813d7eb..2f8f4a48 100644 --- a/internal/cmd/check.go +++ b/internal/cmd/check.go @@ -111,7 +111,7 @@ func checkCmdShort(typeName string) string { func checkCmdLong(typeName string) string { return fmt.Sprintf(`Execute one or more %ss. -You may specify one or more benchmarks to run, separated by a space.`, typeName) +You may specify one or more %ss to run, separated by a space.`, typeName, typeName) } // exitCode=0 no runtime errors, no control alarms or errors diff --git a/internal/cmd/detection.go b/internal/cmd/detection.go new file mode 100644 index 00000000..3e928c6d --- /dev/null +++ b/internal/cmd/detection.go @@ -0,0 +1,213 @@ +package cmd + +import ( + "context" + "errors" + "fmt" + "github.com/turbot/pipe-fittings/modconfig" + "github.com/turbot/powerpipe/internal/dashboardexecute" + "os" + "strings" + + "github.com/spf13/cobra" + "github.com/spf13/viper" + "github.com/thediveo/enumflag/v2" + "github.com/turbot/go-kit/helpers" + "github.com/turbot/pipe-fittings/cmdconfig" + "github.com/turbot/pipe-fittings/constants" + "github.com/turbot/pipe-fittings/error_helpers" + "github.com/turbot/pipe-fittings/export" + "github.com/turbot/pipe-fittings/statushooks" + "github.com/turbot/pipe-fittings/workspace" + localcmdconfig "github.com/turbot/powerpipe/internal/cmdconfig" + localconstants "github.com/turbot/powerpipe/internal/constants" + "github.com/turbot/powerpipe/internal/initialisation" + "github.com/turbot/powerpipe/internal/resources" + "github.com/turbot/steampipe-plugin-sdk/v5/logging" +) + +type DetectionTarget interface { + modconfig.ModTreeItem + *resources.DetectionBenchmark | *resources.Detection +} + +// variable used to assign the output mode flag +var detectionOutputMode = localconstants.DetectionOutputModeSnapshotShort + +func detectionRunCmd[T DetectionTarget]() *cobra.Command { + typeName := resources.GenericTypeToBlockType[T]() + + cmd := &cobra.Command{ + Use: detectionCmdUse(typeName), + TraverseChildren: true, + Args: cobra.ExactArgs(1), + Run: detectionRun[T], + Short: detectionCmdShort(typeName), + Long: detectionCmdLong(typeName), + } + + // when running mod install before the detection execution, we use the minimal update strategy + var updateStrategy = constants.ModUpdateIdMinimal + + cmdconfig.OnCmd(cmd). + AddCloudFlags(). + AddModLocationFlag(). + AddStringArrayFlag(constants.ArgArg, nil, "Specify the value of a detection argument"). + AddStringSliceFlag(constants.ArgExport, nil, "Export output to file, supported format: pps (snapshot)"). + AddStringFlag(constants.ArgDatabase, "", "Turbot Pipes workspace database", localcmdconfig.Deprecated("see https://powerpipe.io/docs/run#selecting-a-database for the new syntax")). + AddIntFlag(constants.ArgDatabaseQueryTimeout, localconstants.DatabaseDefaultQueryTimeout, "The query timeout"). + AddBoolFlag(constants.ArgHelp, false, "Help for detection", cmdconfig.FlagOptions.WithShortHand("h")). + AddBoolFlag(constants.ArgInput, true, "Enable interactive prompts"). + AddIntFlag(constants.ArgMaxParallel, constants.DefaultMaxConnections, "The maximum number of concurrent database connections to open"). + AddBoolFlag(constants.ArgModInstall, true, "Specify whether to install mod dependencies before running the detection"). + AddVarFlag(enumflag.New(&updateStrategy, constants.ArgPull, constants.ModUpdateStrategyIds, enumflag.EnumCaseInsensitive), + constants.ArgPull, + fmt.Sprintf("Update strategy; one of: %s", strings.Join(constants.FlagValues(constants.ModUpdateStrategyIds), ", "))). + AddVarFlag(enumflag.New(&detectionOutputMode, constants.ArgOutput, localconstants.DetectionOutputModeIds, enumflag.EnumCaseInsensitive), + constants.ArgOutput, + fmt.Sprintf("Output format; one of: %s", strings.Join(constants.FlagValues(localconstants.DetectionOutputModeIds), ", "))). + AddBoolFlag(constants.ArgProgress, true, "Display detection execution progress respected when a detection name argument is passed"). + AddBoolFlag(constants.ArgSnapshot, false, "Create snapshot in Turbot Pipes with the default (workspace) visibility"). + AddBoolFlag(constants.ArgShare, false, "Create snapshot in Turbot Pipes with 'anyone_with_link' visibility"). + AddStringFlag(constants.ArgSnapshotTitle, "", "The title to give a snapshot"). + // NOTE: use StringArrayFlag for ArgDetectionInput, not StringSliceFlag + // Cobra will interpret values passed to a StringSliceFlag as CSV, where args passed to StringArrayFlag are not parsed and used raw + AddStringArrayFlag(constants.ArgSnapshotTag, nil, "Specify tags to set on the snapshot"). + AddStringFlag(constants.ArgSnapshotLocation, "", "The location to write snapshots - either a local file path or a Turbot Pipes workspace"). + // NOTE: use StringArrayFlag for ArgVariable, not StringSliceFlag + // Cobra will interpret values passed to a StringSliceFlag as CSV, where args passed to StringArrayFlag are not parsed and used raw + AddStringArrayFlag(constants.ArgVariable, nil, "Specify the value of a variable"). + AddStringSliceFlag(constants.ArgVarFile, nil, "Specify an .ppvar file containing variable values"). + AddIntFlag(constants.ArgDetectionTimeout, 0, "Set the detection execution timeout") + + return cmd +} + +func detectionRun[T DetectionTarget](cmd *cobra.Command, args []string) { + ctx := cmd.Context() + + // there can only be a single arg - cobra will validate + detectionName := args[0] + + var err error + logging.LogTime("detectionRun start") + defer func() { + logging.LogTime("detectionRun end") + if r := recover(); r != nil { + err = helpers.ToError(r) + error_helpers.ShowError(ctx, err) + + } + setExitCodeForDetectionError(err) + }() + + // first check whether a single detection name has been passed as an arg + error_helpers.FailOnError(validateDetectionArgs(ctx)) + + // if diagnostic mode is set, print out config and return + if _, ok := os.LookupEnv(localconstants.EnvConfigDump); ok { + localcmdconfig.DisplayConfig() + return + } + // create context for the detection execution + ctx = createSnapshotContext(ctx, detectionName) + + statushooks.SetStatus(ctx, "Initializing…") + initData := initialisation.NewInitData[T](ctx, cmd, detectionName) + + if len(viper.GetStringSlice(constants.ArgExport)) > 0 { + err := initData.RegisterExporters(detectionExporters()...) + error_helpers.FailOnError(err) + + // validate required export formats + err = initData.ExportManager.ValidateExportFormat(viper.GetStringSlice(constants.ArgExport)) + error_helpers.FailOnError(err) + } + + statushooks.Done(ctx) + + // shutdown the service on exit + defer initData.Cleanup(ctx) + error_helpers.FailOnError(initData.Result.Error) + + // if there is a usage warning we display it + initData.Result.DisplayMessages() + + // so a detection name was specified - just call GenerateSnapshot + target, err := initData.GetSingleTarget() + error_helpers.FailOnError(err) + + snap, err := dashboardexecute.GenerateSnapshot(ctx, initData.Workspace, target, map[string]any{}) + error_helpers.FailOnError(err) + // display the snapshot result (if needed) + displaySnapshot(snap) + + // upload the snapshot (if needed) + err = publishSnapshotIfNeeded(ctx, snap) + if err != nil { + exitCode = constants.ExitCodeSnapshotUploadFailed + error_helpers.FailOnErrorWithMessage(err, fmt.Sprintf("failed to publish snapshot to %s", viper.GetString(constants.ArgSnapshotLocation))) + } + + // export the result (if needed) + exportArgs := viper.GetStringSlice(constants.ArgExport) + exportMsg, err := initData.ExportManager.DoExport(ctx, snap.FileNameRoot, snap, exportArgs) + error_helpers.FailOnErrorWithMessage(err, "failed to export snapshot") + + // print the location where the file is exported + if len(exportMsg) > 0 && viper.GetBool(constants.ArgProgress) { + //nolint:forbidigo // Intentional UI output + fmt.Printf("\n%s\n", strings.Join(exportMsg, "\n")) + } +} + +// validate the args and extract a detection name, if provided +func validateDetectionArgs(ctx context.Context) error { + err := localcmdconfig.ValidateSnapshotArgs(ctx) + if err != nil { + return err + } + + if viper.IsSet(constants.ArgSearchPath) && viper.IsSet(constants.ArgSearchPathPrefix) { + return fmt.Errorf("only one of --search-path or --search-path-prefix may be set") + } + + // only 1 of 'share' and 'snapshot' may be set + share := viper.GetBool(constants.ArgShare) + snapshot := viper.GetBool(constants.ArgSnapshot) + if share && snapshot { + return fmt.Errorf("only one of --share or --snapshot may be set") + } + + return localcmdconfig.ValidateDatabaseArg() +} + +func detectionExporters() []export.Exporter { + return []export.Exporter{&export.SnapshotExporter{}} +} + +func setExitCodeForDetectionError(err error) { + // if exit code already set, leave as is + if exitCode != 0 || err == nil { + return + } + + if errors.Is(err, workspace.ErrorNoModDefinition) { + exitCode = constants.ExitCodeNoModFile + } else { + exitCode = constants.ExitCodeUnknownErrorPanic + } +} + +func detectionCmdUse(typeName string) string { + return fmt.Sprintf("run [flags] [%s]", typeName) +} + +func detectionCmdShort(typeName string) string { + return fmt.Sprintf("Execute one or more %ss", typeName) +} +func detectionCmdLong(typeName string) string { + return fmt.Sprintf(`Execute one or more %ss. + +You may specify one or more %ss to run, separated by a space.`, typeName, typeName) +} diff --git a/internal/cmd/resource_cmd.go b/internal/cmd/resource_cmd.go index e9ff1510..7e2d8c17 100644 --- a/internal/cmd/resource_cmd.go +++ b/internal/cmd/resource_cmd.go @@ -149,6 +149,10 @@ func runCmd[T modconfig.HclResource]() *cobra.Command { return dashboardRunCmd() case *resources.Benchmark: return checkCmd[*resources.Benchmark]() + case *resources.DetectionBenchmark: + return detectionRunCmd[*resources.DetectionBenchmark]() + case *resources.Detection: + return detectionRunCmd[*resources.Detection]() case *resources.Control: return checkCmd[*resources.Control]() } diff --git a/internal/cmd/root.go b/internal/cmd/root.go index f9fcde5f..4d81b9fd 100644 --- a/internal/cmd/root.go +++ b/internal/cmd/root.go @@ -56,6 +56,7 @@ func rootCommand() *cobra.Command { loginCmd(), resourceCmd[*resources.Benchmark](), resourceCmd[*resources.DetectionBenchmark](), + resourceCmd[*resources.Detection](), resourceCmd[*resources.Control](), resourceCmd[*resources.Dashboard](), resourceCmd[*resources.Query](), diff --git a/internal/cmdconfig/cmd_targets.go b/internal/cmdconfig/cmd_targets.go index 87988323..eab278a8 100644 --- a/internal/cmdconfig/cmd_targets.go +++ b/internal/cmdconfig/cmd_targets.go @@ -44,7 +44,7 @@ func ResolveTargets[T modconfig.ModTreeItem](cmdArgs []string, w *pworkspace.Pow // // TODO K add unit test func resolveSingleTarget[T modconfig.ModTreeItem](cmdArg string, w *pworkspace.PowerpipeWorkspace) ([]modconfig.ModTreeItem, error) { - + typeName := resources.GenericTypeToBlockType[T]() var target modconfig.ModTreeItem var queryArgs *resources.QueryArgs var err error @@ -53,7 +53,7 @@ func resolveSingleTarget[T modconfig.ModTreeItem](cmdArg string, w *pworkspace.P return nil, err } if helpers.IsNil(target) { - return nil, fmt.Errorf("'%s' not found in %s (%s)", cmdArg, w.Mod.Name(), w.Path) + return nil, fmt.Errorf("'%s.%s' not found in %s (%s)", typeName, cmdArg, w.Mod.Name(), w.Path) } // TODO KAI CHECK QUERY ARGS LOGIC HERE //if queryArgs != nil { diff --git a/internal/constants/flags.go b/internal/constants/flags.go index 5ce61050..f2b67feb 100644 --- a/internal/constants/flags.go +++ b/internal/constants/flags.go @@ -62,6 +62,20 @@ var DashboardOutputModeIds = map[DashboardOutputMode][]string{ DashboardOutputModeNone: {constants.OutputFormatNone}, } +type DetectionOutputMode enumflag.Flag + +const ( + DetectionOutputModeSnapshot DetectionOutputMode = iota + DetectionOutputModeSnapshotShort + DetectionOutputModeNone +) + +var DetectionOutputModeIds = map[DetectionOutputMode][]string{ + DetectionOutputModeSnapshot: {constants.OutputFormatSnapshot}, + DetectionOutputModeSnapshotShort: {OutputFormatPpSnapshotShort}, + DetectionOutputModeNone: {constants.OutputFormatNone}, +} + type CheckOutputMode enumflag.Flag const ( diff --git a/internal/dashboardexecute/dashboard_execution_tree.go b/internal/dashboardexecute/dashboard_execution_tree.go index 75222613..da6d7d03 100644 --- a/internal/dashboardexecute/dashboard_execution_tree.go +++ b/internal/dashboardexecute/dashboard_execution_tree.go @@ -94,6 +94,11 @@ func (e *DashboardExecutionTree) createRootItem(rootResource modconfig.ModTreeIt return NewDashboardRun(r, e, e) case *resources.Benchmark: return NewCheckRun(r, e, e) + case *resources.Detection: + // create a wrapper for the detection + benchmark := resources.NewWrapperDetectionBenchmark(r) + return NewDetectionBenchmarkRun(benchmark, e, e) + case *resources.DetectionBenchmark: return NewDetectionBenchmarkRun(r, e, e) case *resources.Query: diff --git a/internal/dashboardexecute/snapshot.go b/internal/dashboardexecute/snapshot.go index e8e3636c..00d7d9ab 100644 --- a/internal/dashboardexecute/snapshot.go +++ b/internal/dashboardexecute/snapshot.go @@ -21,8 +21,6 @@ func GenerateSnapshot(ctx context.Context, w *workspace.PowerpipeWorkspace, root // clear event handlers again in case another snapshot will be generated in this run defer w.UnregisterDashboardEventHandlers() - // pull out the target resource - // all runtime dependencies must be resolved before execution (i.e. inputs must be passed in) Executor.interactive = false diff --git a/internal/dashboardinit/init_data.go b/internal/dashboardinit/init_data.go deleted file mode 100644 index 1cb047cc..00000000 --- a/internal/dashboardinit/init_data.go +++ /dev/null @@ -1,27 +0,0 @@ -package dashboardinit - -//import ( -// "github.com/turbot/powerpipe/internal/dashboardworkspace" -// "github.com/turbot/powerpipe/internal/initialisation" -//) -// -//// InitData is a wrapper around initialisation.InitData that adds dashboard specific initialisation data -//type InitData struct { -// *initialisation.InitData -// -// DashboardWorkspace *dashboardworkspace.Workspace -//} -// -//func NewInitData(i *initialisation.InitData) *InitData { -// -// return &InitData{ -// InitData: i, -// DashboardWorkspace: dashboardworkspace.NewWorkspace(i.Workspace), -// } -//} -// -//func NewErrorDashboardInitData(err error) *InitData { -// return &InitData{ -// InitData: initialisation.NewErrorInitData(err), -// } -//} diff --git a/internal/initialisation/init_data.go b/internal/initialisation/init_data.go index 96a23bda..346a8b44 100644 --- a/internal/initialisation/init_data.go +++ b/internal/initialisation/init_data.go @@ -3,7 +3,6 @@ package initialisation import ( "context" "fmt" - "github.com/turbot/powerpipe/internal/cmdconfig" "log/slog" "github.com/spf13/cobra" @@ -19,6 +18,7 @@ import ( "github.com/turbot/pipe-fittings/plugin" "github.com/turbot/pipe-fittings/statushooks" "github.com/turbot/pipe-fittings/utils" + "github.com/turbot/powerpipe/internal/cmdconfig" localconstants "github.com/turbot/powerpipe/internal/constants" "github.com/turbot/powerpipe/internal/dashboardexecute" "github.com/turbot/powerpipe/internal/db_client" diff --git a/internal/resources/detection_benchmark.go b/internal/resources/detection_benchmark.go index 8e020238..4138a290 100644 --- a/internal/resources/detection_benchmark.go +++ b/internal/resources/detection_benchmark.go @@ -2,10 +2,12 @@ package resources import ( "github.com/hashicorp/hcl/v2" + "github.com/hashicorp/hcl/v2/hclsyntax" typehelpers "github.com/turbot/go-kit/types" "github.com/turbot/pipe-fittings/cty_helpers" "github.com/turbot/pipe-fittings/modconfig" "github.com/turbot/pipe-fittings/printers" + "github.com/turbot/pipe-fittings/schema" "github.com/turbot/pipe-fittings/utils" "github.com/zclconf/go-cty/cty" ) @@ -29,6 +31,21 @@ type DetectionBenchmark struct { Display *string `cty:"display" hcl:"display" json:"display,omitempty"` } +// NewWrapperDetectionBenchmark creates a new DetectionBenchmark to wrap a detection which we wish to execute +func NewWrapperDetectionBenchmark(detection *Detection) *DetectionBenchmark { + // create a fake block for the wrapper benchmark + block := &hcl.Block{ + Type: schema.BlockTypeDetectionBenchmark, + Labels: []string{detection.ShortName + "_benchmark"}, + Body: &hclsyntax.Body{SrcRange: detection.DeclRange}, + } + b := NewDetectionBenchmark(block, detection.Mod, detection.ShortName).(*DetectionBenchmark) + b.AddChild(detection) + b.ChildNames = append(b.ChildNames, modconfig.NamedItem{Name: detection.UnqualifiedName}) + b.ChildNameStrings = append(b.ChildNameStrings, detection.UnqualifiedName) + return b +} + func NewDetectionBenchmark(block *hcl.Block, mod *modconfig.Mod, shortName string) modconfig.HclResource { c := &DetectionBenchmark{ ModTreeItemImpl: modconfig.NewModTreeItemImpl(block, mod, shortName), diff --git a/internal/resources/generic_type.go b/internal/resources/generic_type.go index 3e880ca6..a495767e 100644 --- a/internal/resources/generic_type.go +++ b/internal/resources/generic_type.go @@ -23,6 +23,8 @@ func GenericTypeToBlockType[T modconfig.ModTreeItem]() string { resourceType = schema.BlockTypeContainer case *Detection: resourceType = schema.BlockTypeDetection + case *DetectionBenchmark: + resourceType = schema.BlockTypeDetectionBenchmark case *DashboardFlow: resourceType = schema.BlockTypeFlow case *DashboardGraph: From 99cae1470c7a00fed0c302338af0fc4345c35281 Mon Sep 17 00:00:00 2001 From: Darkness4ever Date: Wed, 6 Nov 2024 19:13:05 +0700 Subject: [PATCH 06/85] Add DateTimeRange Picker for Detetction Benchmark --- ui/dashboard/Makefile | 4 +- ui/dashboard/package.json | 3 + .../DateRangePicker/DateRangePicker.css | 218 + .../DateRangePicker/DateRangePicker.js | 296 + .../grouping/DetectionBenchmark/index.tsx | 4 + ui/dashboard/yarn.lock | 12293 +++++++--------- 6 files changed, 5740 insertions(+), 7078 deletions(-) create mode 100644 ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.css create mode 100644 ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.js diff --git a/ui/dashboard/Makefile b/ui/dashboard/Makefile index be3f6f96..32644973 100644 --- a/ui/dashboard/Makefile +++ b/ui/dashboard/Makefile @@ -24,7 +24,5 @@ clean: [ ! -e assets/assets.zip ] || rm assets/assets.zip rm -rf build -run-local: - yarn install +run-local: setup-icons yarn start - diff --git a/ui/dashboard/package.json b/ui/dashboard/package.json index a213ef72..c216c0d9 100644 --- a/ui/dashboard/package.json +++ b/ui/dashboard/package.json @@ -23,6 +23,7 @@ "color-convert": "2.0.1", "copy-to-clipboard": "3.3.3", "dagre": "0.8.5", + "date-fns": "^4.1.0", "dayjs": "1.11.13", "deepdash": "5.3.9", "echarts": "5.5.1", @@ -34,6 +35,7 @@ "lodash": "4.17.21", "react": "18.3.1", "react-cool-img": "1.2.12", + "react-day-picker": "^9.3.0", "react-dom": "18.3.1", "react-hotkeys": "2.0.0", "react-markdown": "9.0.1", @@ -45,6 +47,7 @@ "react-select": "5.8.0", "react-syntax-highlighter": "15.5.0", "react-table": "7.8.0", + "react-time-picker": "^7.0.0", "react-use-websocket": "4.8.1", "reactflow": "11.11.4", "remark-gfm": "4.0.0", diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.css b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.css new file mode 100644 index 00000000..f2974fdf --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.css @@ -0,0 +1,218 @@ +.date-range-picker { + display: flex; + flex-direction: column; + max-width: 23vw; + font-family: Arial, sans-serif; +} + +.presets { + display: flex; + gap: 5px; + margin-bottom: 10px; + justify-content: space-between; +} + +.preset-button { + padding: 5px 10px; + background-color: #f5f5f5; + border: 1px solid #ddd; + border-radius: 3px; + cursor: pointer; + transition: background-color 0.3s; +} + +.preset-button.active { + background-color: #0073e6; + color: #fff; + border-color: #0073e6; +} + +.custom-panel { + margin-top: 10px; + display: flex; + flex-direction: column; +} + +.tabs { + display: flex; + gap: 10px; + margin-bottom: 10px; +} + +.tab-button { + flex: 1; + padding: 8px; + cursor: pointer; + background-color: #f5f5f5; + border: 1px solid #ddd; + text-align: center; + font-weight: bold; +} + +.tab-button.active { + background-color: #0073e6; + color: #fff; +} + +.calendar-container { + display: flex; + justify-content: center; + margin-bottom: 20px; +} + +.single-day-picker { + margin: 0 auto; +} + +.rdp-month { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.rdp-caption_month { + display: flex; + justify-content: center; +} + +.time-input-container { + display: flex; + flex-direction: column; + align-items: flex-start; + width: 48%; +} + +.time-input-container label { + font-size: 12px; + color: #333; + margin-bottom: 4px; +} + +.time-input-container input[type="date"], +.time-input-container input[type="time"] { + padding: 5px; + border: 1px solid #ddd; + border-radius: 3px; + width: 100%; + font-size: 14px; + box-sizing: border-box; +} + +.actions { + display: flex; + gap: 10px; + justify-content: flex-end; + margin-top: 15px; +} + +.apply-button, +.cancel-button { + padding: 8px 16px; + cursor: pointer; + border: none; + border-radius: 3px; + transition: background-color 0.3s; + font-weight: bold; +} + +.apply-button { + background-color: #0073e6; + color: #fff; +} + +.cancel-button { + background-color: #f5f5f5; +} + +.apply-button:hover { + background-color: #005bb5; +} + +.cancel-button:hover { + background-color: #ddd; +} + +.relative-panel { + padding: 10px; +} + +.time-option-groups label { + display: block; + font-size: 14px; + margin-top: 15px; + margin-bottom: 5px; +} + +.option-group { + display: flex; + gap: 8px; + margin-bottom: 10px; +} + +.time-option { + padding: 5px 10px; + border: 1px solid #ddd; + border-radius: 4px; + cursor: pointer; + background-color: #f5f5f5; + transition: background-color 0.3s; +} + +.time-option.active { + background-color: #0073e6; + color: #fff; + border-color: #0073e6; +} + +.duration-input { + display: flex; + align-items: center; + gap: 10px; + margin-top: 15px; +} + +.duration-input label { + font-size: 14px; +} + +.duration-input input[type="number"] { + width: 60px; + /* padding: 5px; */ + font-size: 14px; + border: 1px solid #ddd; + border-radius: 4px; +} + +.duration-input select { + padding: 5px; + font-size: 14px; + border: 1px solid #ddd; + border-radius: 4px; + background-color: #f5f5f5; +} + +.actions { + display: flex; + gap: 10px; + justify-content: flex-end; + margin-top: 15px; +} + +.time-inputs { + display: flex !important; + gap: 20px; + justify-content: space-between; + +} + +/* Styles for the custom popover */ +.custom-popover { + position: absolute; + border: 1px solid #ddd; + border-radius: 5px; + background-color: #fff; + padding: 20px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + z-index: 1000; +} \ No newline at end of file diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.js b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.js new file mode 100644 index 00000000..a0d57fe5 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.js @@ -0,0 +1,296 @@ +import React, { useState, useRef } from 'react'; +import { DayPicker } from 'react-day-picker'; +import 'react-day-picker/dist/style.css'; +import './DateRangePicker.css'; +import 'react-time-picker/dist/TimePicker.css'; +import { format } from 'date-fns'; +import TimePicker from 'react-time-picker'; + +const presets = [ + { label: '1h', value: '1h' }, + { label: '3h', value: '3h' }, + { label: '6h', value: '6h' }, + { label: '12h', value: '12h' }, + { label: '1d', value: '1d' }, + { label: '7d', value: '7d' }, + { label: 'Custom', value: 'custom' }, +]; + +const timeOptions = { + minutes: [5, 10, 15, 30, 45], + hours: [1, 2, 3, 6, 8, 12], + days: [1, 2, 3, 4, 5, 6], + weeks: [1, 2, 3, 4], +}; + +const DateRangePicker = () => { + const [selectedPreset, setSelectedPreset] = useState('1h'); + const [startDate, setStartDate] = useState(null); + const [endDate, setEndDate] = useState(null); + const [startTime, setStartTime] = useState('00:00:00'); + const [endTime, setEndTime] = useState('23:59:59'); + const [tab, setTab] = useState('absolute'); + const [duration, setDuration] = useState(1); + const [unitOfTime, setUnitOfTime] = useState('hours'); + const [showCustomPanel, setShowCustomPanel] = useState(false); + const [savedDateTime, setSavedDateTime] = useState({}); + const customButtonRef = useRef(null); + + const handlePresetChange = (preset) => { + setSelectedPreset(preset); + if (preset === 'custom') { + setShowCustomPanel(!showCustomPanel); // Toggle visibility + } else { + setShowCustomPanel(false); + } + }; + +const handleApply = () => { + const urlParams = new URLSearchParams(window.location.search); + + if (tab === 'absolute') { + // Handle absolute case + const formattedStartDate = startDate ? format(startDate, 'yyyy-MM-dd') : ''; + const formattedEndDate = endDate ? format(endDate, 'yyyy-MM-dd') : ''; + const detectionFromValue = `${formattedStartDate} ${startTime}`; + const detectionToValue = `${formattedEndDate} ${endTime}`; + + // Add/Update URL parameters for absolute values + urlParams.set('detection_from', detectionFromValue); + urlParams.set('detection_to', detectionToValue); + + // Clear relative parameter if it was previously set + urlParams.delete('detection_to_relative'); + + // Save the selected date/time + setSavedDateTime({ + type: 'absolute', + detection_from: detectionFromValue, + detection_to: detectionToValue, + }); + + alert(`Saved Absolute Date/Time:\nDetection From: ${detectionFromValue}\nDetection To: ${detectionToValue}`); + } else if (tab === 'relative') { + // Handle relative case + const relativeValue = `T-${duration}${unitOfTime[0].toUpperCase()}`; // E.g., "T-5M" for 5 minutes + + // Add/Update URL parameter for relative value + urlParams.set('detection_to', relativeValue); + + // Clear absolute parameters if they were previously set + urlParams.delete('detection_from'); + + // Save the selected relative time + setSavedDateTime({ + type: 'relative', + detection_to: relativeValue, + }); + + alert(`Saved Relative Date/Time:\nDetection To: ${relativeValue}`); + } + + // Update the URL without refreshing the page + window.history.replaceState(null, '', '?' + urlParams.toString()); + + // Hide the custom panel + setShowCustomPanel(false); +}; + + + + + const handleCancel = () => { + setSelectedPreset('1h'); + setStartDate(null); + setEndDate(null); + setStartTime('00:00:00'); + setEndTime('23:59:59'); + setDuration(1); + setUnitOfTime('hours'); + setShowCustomPanel(false); + }; + + const handleTimeOptionClick = (value, unit) => { + setDuration(value); + setUnitOfTime(unit); + }; + + return ( +
+
+ {presets.map((preset) => ( + + ))} +
+ + {showCustomPanel && selectedPreset === 'custom' && ( +
+
+ + +
+ + {tab === 'absolute' ? ( +
+
+ { + setStartDate(from); + setEndDate(to); + }} + className="single-day-picker" + captionLayout="dropdown" + pagedNavigation + /> +
+
+
+ + setStartDate(new Date(e.target.value))} + /> + + setStartTime(e.target.value)} + /> +
+
+ + setEndDate(new Date(e.target.value))} + /> + + setEndTime(e.target.value)} + /> +
+
+
+ ) : ( +
+
+ +
+ {timeOptions.minutes.map((min) => ( + + ))} +
+ + +
+ {timeOptions.hours.map((hour) => ( + + ))} +
+ + +
+ {timeOptions.days.map((day) => ( + + ))} +
+ + +
+ {timeOptions.weeks.map((week) => ( + + ))} +
+
+ +
+ + setDuration(Number(e.target.value))} + /> + +
+
+ )} + +
+ + +
+
+ )} +
+ ); +}; + +export default DateRangePicker; diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx index e89a38a6..c3badfaa 100644 --- a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx @@ -34,6 +34,7 @@ import { useEffect, useMemo, useState } from "react"; import { useSearchParams } from "react-router-dom"; import { validateFilter } from "../CheckFilterEditor"; import { Width } from "@powerpipe/components/dashboards/common"; +import DateRangePicker from "./DateRangePicker/DateRangePicker"; const Table = getComponent("table"); @@ -392,6 +393,9 @@ const DetectionBenchmark = (props: InnerCheckProps) => { } /> )} + + + {summaryCards .filter(({ name }) => { diff --git a/ui/dashboard/yarn.lock b/ui/dashboard/yarn.lock index 14e7a0ec..d6882ee8 100644 --- a/ui/dashboard/yarn.lock +++ b/ui/dashboard/yarn.lock @@ -30,1520 +30,450 @@ __metadata: linkType: hard "@apideck/better-ajv-errors@npm:^0.3.1": - version: 0.3.1 - resolution: "@apideck/better-ajv-errors@npm:0.3.1" + version: 0.3.6 + resolution: "@apideck/better-ajv-errors@npm:0.3.6" dependencies: json-schema: "npm:^0.4.0" jsonpointer: "npm:^5.0.0" leven: "npm:^3.1.0" peerDependencies: ajv: ">=8" - checksum: 10c0/8aa9313d41a59660fd3c1e0e3cc6b8f108187dde87ce00bc09d6ed059c00ba164b41a4232f52b058aa603cc3f9af4adc290d6732b8ac0a75b98f14f7a8cb81c8 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.8.3": - version: 7.12.13 - resolution: "@babel/code-frame@npm:7.12.13" - dependencies: - "@babel/highlight": "npm:^7.12.13" - checksum: 10c0/bc966d2d7900c54009c6abb472548390d405601c09ec91ee7a0fd0e503e51c407e5bb5adbc656c3052b7944631c4f599908e6efbc8e59ce62166e285a15f97be - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/code-frame@npm:7.16.0" - dependencies: - "@babel/highlight": "npm:^7.16.0" - checksum: 10c0/12e111dcbb568a2b625969f4021eb46845e752eb8d2637f00f9e04e4f2216572f5c38d6f278d201b8b6fadd56a855e012c97734c90fabf680783b1ff13dc6a98 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/code-frame@npm:7.16.7" - dependencies: - "@babel/highlight": "npm:^7.16.7" - checksum: 10c0/bed53eab44e67480e67b353b94ab9bef7bce6cdea799dde591c296cfb47d872348f20cf9a3b82b0dbf8530bf67ca438b5bed3d80622ea76c7227cea3e6f04aa6 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/code-frame@npm:7.23.5" - dependencies: - "@babel/highlight": "npm:^7.23.4" - chalk: "npm:^2.4.2" - checksum: 10c0/a10e843595ddd9f97faa99917414813c06214f4d9205294013e20c70fbdf4f943760da37dec1d998bf3e6fc20fa2918a47c0e987a7e458663feb7698063ad7c6 + checksum: 10c0/f89a1e16ecbc2ada91c56d4391c8345471e385f0b9c38d62c3bccac40ec94482cdfa496d4c2fe0af411e9851a9931c0d5042a8040f52213f603ba6b6fd7f949b languageName: node linkType: hard -"@babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.8.3": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" dependencies: - "@babel/highlight": "npm:^7.24.7" + "@babel/helper-validator-identifier": "npm:^7.25.9" + js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/compat-data@npm:7.12.13" - checksum: 10c0/11b2a2fa6ec8279b0a0a37a73901fe8d3047aa6a6d5f43094e57ca1aa46708240d8195955706eb763720c13bbe49693fd299cc259f4a54c526c51f94ff055980 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.16.0, @babel/compat-data@npm:^7.16.4": - version: 7.16.4 - resolution: "@babel/compat-data@npm:7.16.4" - checksum: 10c0/2b4acf1353e183954d3ed4b6a0493d6077bdd3c447d6987c8b955c18c7d99a9159318430d1b6565257d4ddcaf8b1e9c85124bd73863c603b083755efe4a6f152 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/compat-data@npm:7.13.12" - checksum: 10c0/94abdfee6d1b2683e80dedc28f74c6cfe3a104b6c194ed8a9b93bc6e7a48636ae765eb3fa416e453111b974de2ace4d3dd096ad1c01bce81ebd725f4a22efd2d - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.25.2": - version: 7.25.4 - resolution: "@babel/compat-data@npm:7.25.4" - checksum: 10c0/50d79734d584a28c69d6f5b99adfaa064d0f41609a378aef04eb06accc5b44f8520e68549eba3a082478180957b7d5783f1bfb1672e4ae8574e797ce8bae79fa - languageName: node - linkType: hard - -"@babel/core@npm:^7.1.0": - version: 7.13.14 - resolution: "@babel/core@npm:7.13.14" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@babel/generator": "npm:^7.13.9" - "@babel/helper-compilation-targets": "npm:^7.13.13" - "@babel/helper-module-transforms": "npm:^7.13.14" - "@babel/helpers": "npm:^7.13.10" - "@babel/parser": "npm:^7.13.13" - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.13.13" - "@babel/types": "npm:^7.13.14" - convert-source-map: "npm:^1.7.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.1.2" - semver: "npm:^6.3.0" - source-map: "npm:^0.5.0" - checksum: 10c0/f2d48ccc62146adb7a36b6ab8682015d1dc90e3e442304fd5118050ed9452196990e0f987bb7d13cad5b1dab6129314aab11e53c45460167283364ec2f397e42 - languageName: node - linkType: hard - -"@babel/core@npm:^7.11.1, @babel/core@npm:^7.16.0, @babel/core@npm:^7.7.2": - version: 7.16.5 - resolution: "@babel/core@npm:7.16.5" - dependencies: - "@babel/code-frame": "npm:^7.16.0" - "@babel/generator": "npm:^7.16.5" - "@babel/helper-compilation-targets": "npm:^7.16.3" - "@babel/helper-module-transforms": "npm:^7.16.5" - "@babel/helpers": "npm:^7.16.5" - "@babel/parser": "npm:^7.16.5" - "@babel/template": "npm:^7.16.0" - "@babel/traverse": "npm:^7.16.5" - "@babel/types": "npm:^7.16.0" - convert-source-map: "npm:^1.7.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.1.2" - semver: "npm:^6.3.0" - source-map: "npm:^0.5.0" - checksum: 10c0/81c942c18aac3620920b6b724d606d5b39f4f205340a1913fcb7d46d33c9003979f9985c01c9692f0327f0ecae404a20a7367136b9a550e76dbf3c858e8aa4d7 + checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 languageName: node linkType: hard -"@babel/core@npm:^7.12.3, @babel/core@npm:^7.7.5": - version: 7.12.13 - resolution: "@babel/core@npm:7.12.13" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@babel/generator": "npm:^7.12.13" - "@babel/helper-module-transforms": "npm:^7.12.13" - "@babel/helpers": "npm:^7.12.13" - "@babel/parser": "npm:^7.12.13" - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" - convert-source-map: "npm:^1.7.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.1" - json5: "npm:^2.1.2" - lodash: "npm:^4.17.19" - semver: "npm:^5.4.1" - source-map: "npm:^0.5.0" - checksum: 10c0/17af15935b9bae07c254d967da83f83580e19c3d32e2a05f1007ff96ebc0e3225559db9e48630a69a966718f742af7cf2ef43caedf79fb0dd0070f7f62a5b8f3 +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9, @babel/compat-data@npm:^7.26.0": + version: 7.26.2 + resolution: "@babel/compat-data@npm:7.26.2" + checksum: 10c0/c9b5f3724828d17f728a778f9d66c19b55c018d0d76de6d731178cca64f182c22b71400a73bf2b65dcc4fcfe52b630088a94d5902911b54206aa90e3ffe07d12 languageName: node linkType: hard -"@babel/core@npm:^7.18.9": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" +"@babel/core@npm:^7.1.0, @babel/core@npm:^7.11.1, @babel/core@npm:^7.12.3, @babel/core@npm:^7.16.0, @babel/core@npm:^7.18.9, @babel/core@npm:^7.7.2, @babel/core@npm:^7.8.0": + version: 7.26.0 + resolution: "@babel/core@npm:7.26.0" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-module-transforms": "npm:^7.25.2" - "@babel/helpers": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.2" - "@babel/types": "npm:^7.25.2" + "@babel/code-frame": "npm:^7.26.0" + "@babel/generator": "npm:^7.26.0" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helpers": "npm:^7.26.0" + "@babel/parser": "npm:^7.26.0" + "@babel/template": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/a425fa40e73cb72b6464063a57c478bc2de9dbcc19c280f1b55a3d88b35d572e87e8594e7d7b4880331addb6faef641bbeb701b91b41b8806cd4deae5d74f401 + checksum: 10c0/91de73a7ff5c4049fbc747930aa039300e4d2670c2a91f5aa622f1b4868600fc89b01b6278385fbcd46f9574186fa3d9b376a9e7538e50f8d118ec13cfbcb63e languageName: node linkType: hard "@babel/eslint-parser@npm:^7.16.3": - version: 7.16.5 - resolution: "@babel/eslint-parser@npm:7.16.5" + version: 7.25.9 + resolution: "@babel/eslint-parser@npm:7.25.9" dependencies: - eslint-scope: "npm:^5.1.1" + "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" eslint-visitor-keys: "npm:^2.1.0" - semver: "npm:^6.3.0" + semver: "npm:^6.3.1" peerDependencies: - "@babel/core": ">=7.11.0" - eslint: ^7.5.0 || ^8.0.0 - checksum: 10c0/4fa4438e5f2847da522f8099833bf376284b74ccf4f42baca2e23d22ae6ee52bee1b1c049c65ab984673c97656902b6253448e9ff2408cfb920c8f8631fa9713 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/generator@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - jsesc: "npm:^2.5.1" - source-map: "npm:^0.5.0" - checksum: 10c0/c601b130e6db2a42a2ef0ac5beb7a9cdb4183a46476f29012b6062a2084b3ab062b6113ab4bae90e8ce0951bf66a6b3a26c4006bc25f3399d42b9d8ec7d51c5f - languageName: node - linkType: hard - -"@babel/generator@npm:^7.13.9": - version: 7.13.9 - resolution: "@babel/generator@npm:7.13.9" - dependencies: - "@babel/types": "npm:^7.13.0" - jsesc: "npm:^2.5.1" - source-map: "npm:^0.5.0" - checksum: 10c0/63935efed7b16e6a6662bcd1bf8a932e9a60555761dc3d6d8b073f15ca2adb41f95de58afcb7653f1ee58faa6fe1db40662913f849bee2be78a8766863d007c5 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.16.5, @babel/generator@npm:^7.7.2": - version: 7.16.5 - resolution: "@babel/generator@npm:7.16.5" - dependencies: - "@babel/types": "npm:^7.16.0" - jsesc: "npm:^2.5.1" - source-map: "npm:^0.5.0" - checksum: 10c0/d621a5688d3dbc2df67b85d887633b8b1c543cb59e02a8416ee2822a0373c832a12d84e2851a50002c5a2d619665191d4faa5882bdbe75c607a2967595560cb6 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/generator@npm:7.23.6" - dependencies: - "@babel/types": "npm:^7.23.6" - "@jridgewell/gen-mapping": "npm:^0.3.2" - "@jridgewell/trace-mapping": "npm:^0.3.17" - jsesc: "npm:^2.5.1" - checksum: 10c0/53540e905cd10db05d9aee0a5304e36927f455ce66f95d1253bb8a179f286b88fa7062ea0db354c566fe27f8bb96567566084ffd259f8feaae1de5eccc8afbda + "@babel/core": ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + checksum: 10c0/7dc525da9a076906aff562f82373765785732edf306e2be6497e347ed73be80d3544f2f845a77c2376bfa1c7c8c3580ea7346b12b78d8ddf4365c44fe9c35c4b languageName: node linkType: hard -"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/generator@npm:7.25.6" +"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0, @babel/generator@npm:^7.7.2": + version: 7.26.2 + resolution: "@babel/generator@npm:7.26.2" dependencies: - "@babel/types": "npm:^7.25.6" + "@babel/parser": "npm:^7.26.2" + "@babel/types": "npm:^7.26.0" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10c0/f89282cce4ddc63654470b98086994d219407d025497f483eb03ba102086e11e2b685b27122f6ff2e1d93b5b5fa0c3a6b7e974fbf2e4a75b685041a746a4291e - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.10.4, @babel/helper-annotate-as-pure@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-annotate-as-pure@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 10c0/9c4c0e738d42dedd40c87757bffb1454d1bdcaf1e6318f9768bc71874319c4ca5c45d5ed38b9dfb3b9980b27658fd0bf8fc44e53a2a43652a25d9a66c649f98a - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-annotate-as-pure@npm:7.16.0" - dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 10c0/91e665af6bf7199d68b39d68ab3583fb7e9acb7a1f88cc2924b256d48c0015c71934923a549b1065d3f8e8f9652b65b3b0205ba6412c405cf0c33bb80af30797 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10c0/4679f7df4dffd5b3e26083ae65228116c3da34c3fff2c11ae11b259a61baec440f51e30fd236f7a0435b9d471acd93d0bc5a95df8213cbf02b1e083503d81b9a - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.12.13" - dependencies: - "@babel/helper-explode-assignable-expression": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" - checksum: 10c0/eda7c1f96c91229ab8b9f28a13104405278fe6a9a439e8db03cb073199e085291214ae85e360e4e5c8e320e3cb1f9e94bdc0f228b1bd66cbfc15e29e2b653d84 - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.16.5" - dependencies: - "@babel/helper-explode-assignable-expression": "npm:^7.16.0" - "@babel/types": "npm:^7.16.0" - checksum: 10c0/5a81a21357fd2ae9e60dff9e53a82e259400a04a6959009fc4af06d66faa13356e8404ba555e7d3b591632477e01496433d63cc0075d1beb31bde41012c1def9 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-compilation-targets@npm:7.12.13" - dependencies: - "@babel/compat-data": "npm:^7.12.13" - "@babel/helper-validator-option": "npm:^7.12.11" - browserslist: "npm:^4.14.5" - semver: "npm:^5.5.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/10230dec622d3effa7359e312dbbf53e3883cb57171f1721002a1d12e0b7759327f001e5b7e67ed68423b8b15a8b1be54a2264a67bb961e9f9ba80efe6430f69 + jsesc: "npm:^3.0.2" + checksum: 10c0/167ebce8977142f5012fad6bd91da51ac52bcd752f2261a54b7ab605d928aebe57e21636cdd2a9c7757e552652c68d9fcb5d40b06fcb66e02d9ee7526e118a5c languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.13.13": - version: 7.13.13 - resolution: "@babel/helper-compilation-targets@npm:7.13.13" +"@babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" dependencies: - "@babel/compat-data": "npm:^7.13.12" - "@babel/helper-validator-option": "npm:^7.12.17" - browserslist: "npm:^4.14.5" - semver: "npm:^6.3.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/29f6ab747e647da51f6970dba4e18cca630c9717ee59231e95dac77a968bcbbbac44c124b73cdb811b4e1135cce91a5337a8346db3942fad4dca52e0b32956c3 + "@babel/types": "npm:^7.25.9" + checksum: 10c0/095b6ba50489d797733abebc4596a81918316a99e3632755c9f02508882912b00c2ae5e468532a25a5c2108d109ddbe9b7da78333ee7cc13817fc50c00cf06fe languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.16.3": - version: 7.16.3 - resolution: "@babel/helper-compilation-targets@npm:7.16.3" +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.9" dependencies: - "@babel/compat-data": "npm:^7.16.0" - "@babel/helper-validator-option": "npm:^7.14.5" - browserslist: "npm:^4.17.5" - semver: "npm:^6.3.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/33626de16c9bf0b6f112eab84f04e8c2e8bc7fa8dd1c99b6153a8375d859a05d06645e62c0ebaf9738ceb3e7ae5f6b72bcf9d9adea1065a66674b5e5f4afa643 + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/a6068bb813e7f72d12b72edeecb99167f60cd7964cacedfb60e01fff5e7bed4a5a7f4f7414de7cf352a1b71487df5f8dab8c2b5230de4ad5aea16adf32e14219 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" +"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-compilation-targets@npm:7.25.9" dependencies: - "@babel/compat-data": "npm:^7.25.2" - "@babel/helper-validator-option": "npm:^7.24.8" - browserslist: "npm:^4.23.1" + "@babel/compat-data": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10c0/de10e986b5322c9f807350467dc845ec59df9e596a5926a3b5edbb4710d8e3b8009d4396690e70b88c3844fe8ec4042d61436dd4b92d1f5f75655cf43ab07e99 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-create-class-features-plugin@npm:7.12.13" - dependencies: - "@babel/helper-function-name": "npm:^7.12.13" - "@babel/helper-member-expression-to-functions": "npm:^7.12.13" - "@babel/helper-optimise-call-expression": "npm:^7.12.13" - "@babel/helper-replace-supers": "npm:^7.12.13" - "@babel/helper-split-export-declaration": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/7e3dbe5e59060e33dfae78f61aac3a748cf4372f5e46d9b8b58f99197df741a92edeca1ebab285b3bf6f93341a1ce5e10600445f648b5ec0bfcaef43659f2eac - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.16.0, @babel/helper-create-class-features-plugin@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/helper-create-class-features-plugin@npm:7.16.5" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.0" - "@babel/helper-environment-visitor": "npm:^7.16.5" - "@babel/helper-function-name": "npm:^7.16.0" - "@babel/helper-member-expression-to-functions": "npm:^7.16.5" - "@babel/helper-optimise-call-expression": "npm:^7.16.0" - "@babel/helper-replace-supers": "npm:^7.16.5" - "@babel/helper-split-export-declaration": "npm:^7.16.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/f8c9049d6fee56092d85e1ea850bffab6e093d8f11d83fc4e3ca293320f326faafde29ed144e52153f1be897ccb2a1d9bb863e45eb7365ed84851a0513d5e50e + checksum: 10c0/a6b26a1e4222e69ef8e62ee19374308f060b007828bc11c65025ecc9e814aba21ff2175d6d3f8bf53c863edd728ee8f94ba7870f8f90a37d39552ad9933a8aaa languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.21.0": - version: 7.25.4 - resolution: "@babel/helper-create-class-features-plugin@npm:7.25.4" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-create-class-features-plugin@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-member-expression-to-functions": "npm:^7.24.8" - "@babel/helper-optimise-call-expression": "npm:^7.24.7" - "@babel/helper-replace-supers": "npm:^7.25.0" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.4" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/a765d9e0482e13cf96642fa8aa28e6f7d4d7d39f37840d6246e5e10a7c47f47c52d52522edd3073f229449d17ec0db6f9b7b5e398bff6bb0b4994d65957a164c - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.12.13" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.12.13" - regexpu-core: "npm:^4.7.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/2a186c75e1bf8d15e0238d847df184b0f7c8abb3ea2d0617838b5ca33008b84a5241d0e324fd66648c707cd28bc739a7fc6782e0162333c8e6b7e36d9bb71cce + checksum: 10c0/b2bdd39f38056a76b9ba00ec5b209dd84f5c5ebd998d0f4033cf0e73d5f2c357fbb49d1ce52db77a2709fb29ee22321f84a5734dc9914849bdfee9ad12ce8caf languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.16.0" +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.0" - regexpu-core: "npm:^4.7.1" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + regexpu-core: "npm:^6.1.1" + semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/67d6f8c86ed9f948c338fcbb4b2c91f0fb6b67595379b0a148666ac628896f10043ec78b252162c645fe344ebe9ed93818cdd65d0a650a1fae4776fcd4b05520 + checksum: 10c0/3adc60a758febbf07d65a15eaccab1f7b9fcc55e7141e59122f13c9f81fc0d1cce4525b7f4af50285d27c93b34c859fd2c39c39820c5fb92211898c3bbdc77ef languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.3.0": - version: 0.3.0 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.0" +"@babel/helper-define-polyfill-provider@npm:^0.6.2": + version: 0.6.2 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.2" dependencies: - "@babel/helper-compilation-targets": "npm:^7.13.0" - "@babel/helper-module-imports": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/traverse": "npm:^7.13.0" + "@babel/helper-compilation-targets": "npm:^7.22.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" debug: "npm:^4.1.1" lodash.debounce: "npm:^4.0.8" resolve: "npm:^1.14.2" - semver: "npm:^6.1.2" peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 10c0/59135ecb144646f2d3c1ceaf38a855200f0ec53d9069deee30bdb2a7971027bde771ba0f87e564119a6d8fcb09673245c15dce89dc8c182a79088b7b80c2915d - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/helper-environment-visitor@npm:7.16.5" - dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 10c0/4132f70a1d6408b6dab4f5d4e8e2f9fc9ee8e2b37d618239a0148d196aeb797f0bd78953e49b022770684089c52e5d97189a5e4787680288ff58700399ea2edb - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-environment-visitor@npm:7.22.20" - checksum: 10c0/e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 - languageName: node - linkType: hard - -"@babel/helper-explode-assignable-expression@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-explode-assignable-expression@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 10c0/7af00308e92a0f238d60146eaa29c01e28018b90e792c5e3c8db8b2010b1e72639e49e6bddc206db3af3f037ceede5b9bcea6b639fe60ee8f1be6206e4e03c51 - languageName: node - linkType: hard - -"@babel/helper-explode-assignable-expression@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-explode-assignable-expression@npm:7.16.0" - dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 10c0/9821d4a292b23976c5adce031cde82adf726515d6d6b6cdca7a9ed4aa00c6fc8ccd8b580a2db80a8dec96541ffd374f2f5bf8ca3c90e5cdb0a6d8338103c6efd - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-function-name@npm:7.12.13" - dependencies: - "@babel/helper-get-function-arity": "npm:^7.12.13" - "@babel/template": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" - checksum: 10c0/4f1107fdfeefea2096d4564346938fd7ef5411d819f50076a15fd65cf2c390d849723ba2a329e12859929b60d03af7e9271b63b461affadf56cfdc643f42a99a - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-function-name@npm:7.16.0" - dependencies: - "@babel/helper-get-function-arity": "npm:^7.16.0" - "@babel/template": "npm:^7.16.0" - "@babel/types": "npm:^7.16.0" - checksum: 10c0/ffaade6be3840364d77f0ad4515c715b1787c47f4631e69de0c204a314a00862a6dc8e37d1baadbdeeb9d8bae9d943b235ae0303d3cd095bc740cf3aa8794e92 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-function-name@npm:7.23.0" - dependencies: - "@babel/template": "npm:^7.22.15" - "@babel/types": "npm:^7.23.0" - checksum: 10c0/d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 - languageName: node - linkType: hard - -"@babel/helper-get-function-arity@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-get-function-arity@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 10c0/12c34afd52e88f52f313d7b6acff2a62f55de93bdf2f57086417147e20c8391b2ee18da30dedf7102775f291c0b340240ed4538bbcfefc3b55e8eae1899c1227 - languageName: node - linkType: hard - -"@babel/helper-get-function-arity@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-get-function-arity@npm:7.16.0" - dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 10c0/a37fe88007b10fc2bc62b610ed1943cfd7bfb90b8321c87bd4d6dae583df04cbafc2ee58d237ebc2580cd0ffa05369f1063e3f9d51c494e821dea287a0a4911e - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-hoist-variables@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 10c0/98f348f1ab17dfd3d30629db1c09c287f32d97c5f847f9bfe7c6f531ce7050864fbce771bb5f574ee7fe7bdc599af531d0fedbfa931525a50bdb6a717cda5183 - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-hoist-variables@npm:7.16.0" - dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 10c0/0f4ada53a9901981825c73e305c04674c958b0ec367e0aef0221ec865b3620e8743f2cf3f5c29530181ee86f3b10d0e113a0e8c9e283ea7f2709134684383b1f - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-hoist-variables@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10c0/60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-member-expression-to-functions@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 10c0/213caa7b788a1f486c73fbad0897bf066ad17ec30fdccf2913c3f42533fb760f508b318118ce61ef689c58e94021abdd8348bea77f0723c8c2e767881e116cc6 - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-member-expression-to-functions@npm:7.13.12" - dependencies: - "@babel/types": "npm:^7.13.12" - checksum: 10c0/752f8ca5a9a3fa5f506392410f907a05d04754defcbd7eab281847610657d47ccf1af22948a482ee9dd7413c1aaf0bb4e09b39f5ca9fc354cfaa3d888848cf9a - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/helper-member-expression-to-functions@npm:7.16.5" - dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 10c0/df5b4cda306ece71656d19df77a3caa686f97011a60103b85c22a4ce4659f87e88273480fd8fa61830cc9fc82e58017c45c624a37ac2eb692d230fcc1bc5847c - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-member-expression-to-functions@npm:7.24.8" - dependencies: - "@babel/traverse": "npm:^7.24.8" - "@babel/types": "npm:^7.24.8" - checksum: 10c0/7e14a5acc91f6cd26305a4441b82eb6f616bd70b096a4d2099a968f16b26d50207eec0b9ebfc466fefd62bd91587ac3be878117cdfec819b7151911183cb0e5a + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/f777fe0ee1e467fdaaac059c39ed203bdc94ef2465fb873316e9e1acfc511a276263724b061e3b0af2f6d7ad3ff174f2bb368fde236a860e0f650fda43d7e022 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-module-imports@npm:7.16.0" +"@babel/helper-member-expression-to-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-member-expression-to-functions@npm:7.25.9" dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 10c0/8d9e8c92e44f7c327e9cffd07825b488c49828ea7bd31bbfe1fb019233cab6600461a751af8b0d42340b4a3737108ba839d05fbd7ef0b716508c1c9133b93b89 + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/e08c7616f111e1fb56f398365e78858e26e466d4ac46dff25921adc5ccae9b232f66e952a2f4162bbe336627ba336c7fd9eca4835b6548935973d3380d77eaff languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-module-imports@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 10c0/7e09f1b0a7de16767802d64cf0e916d49c6655c9a5d38c9c72880cacc61f68f4971069b7c973a575d3c3a3d676ab591cd820aac3ee2091058d8c89c94b30e65c - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-module-imports@npm:7.13.12" - dependencies: - "@babel/types": "npm:^7.13.12" - checksum: 10c0/4f7e700c3f9cf4e56116232f96722ffda384eae21a09584e1c695f4a939a6f443284de33d193ae3e2d9c786f24e2985c55ccca5b3b0dbd6d252a8c944b3bc4c7 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" +"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/97c57db6c3eeaea31564286e328a9fb52b0313c5cfcc7eee4bc226aebcf0418ea5b6fe78673c0e4a774512ec6c86e309d0f326e99d2b37bfc16a25a032498af0 + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/078d3c2b45d1f97ffe6bb47f61961be4785d2342a4156d8b42c92ee4e1b7b9e365655dd6cb25329e8fe1a675c91eeac7e3d04f0c518b67e417e29d6e27b6aa70 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-module-transforms@npm:7.12.13" +"@babel/helper-module-transforms@npm:^7.25.9, @babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" dependencies: - "@babel/helper-module-imports": "npm:^7.12.13" - "@babel/helper-replace-supers": "npm:^7.12.13" - "@babel/helper-simple-access": "npm:^7.12.13" - "@babel/helper-split-export-declaration": "npm:^7.12.13" - "@babel/helper-validator-identifier": "npm:^7.12.11" - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" - lodash: "npm:^4.17.19" - checksum: 10c0/3c173c16b4996d7710a6879a5a536e9c80956dd3ebe54d9c37f07e911e5f68d935542d19da871ca5ab530df25808ae0a130e25b51857f323f1e27ec2f0f3b232 + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ee111b68a5933481d76633dad9cdab30c41df4479f0e5e1cc4756dc9447c1afd2c9473b5ba006362e35b17f4ebddd5fca090233bef8dfc84dca9d9127e56ec3a languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.13.14": - version: 7.13.14 - resolution: "@babel/helper-module-transforms@npm:7.13.14" +"@babel/helper-optimise-call-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-optimise-call-expression@npm:7.25.9" dependencies: - "@babel/helper-module-imports": "npm:^7.13.12" - "@babel/helper-replace-supers": "npm:^7.13.12" - "@babel/helper-simple-access": "npm:^7.13.12" - "@babel/helper-split-export-declaration": "npm:^7.12.13" - "@babel/helper-validator-identifier": "npm:^7.12.11" - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.13.13" - "@babel/types": "npm:^7.13.14" - checksum: 10c0/7cb11bb35268db7c5b5b4a8b2d9796ab93703c08af832e5e52a5de496c7e7d3ef0af5095eb12744a8df52cdf887c0b338ef3cc9922ecb97eaa8b0a094f690dfd + "@babel/types": "npm:^7.25.9" + checksum: 10c0/90203e6607edeadd2a154940803fd616c0ed92c1013d6774c4b8eb491f1a5a3448b68faae6268141caa5c456e55e3ee49a4ed2bd7ddaf2365daea321c435914c languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/helper-module-transforms@npm:7.16.5" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.16.5" - "@babel/helper-module-imports": "npm:^7.16.0" - "@babel/helper-simple-access": "npm:^7.16.0" - "@babel/helper-split-export-declaration": "npm:^7.16.0" - "@babel/helper-validator-identifier": "npm:^7.15.7" - "@babel/template": "npm:^7.16.0" - "@babel/traverse": "npm:^7.16.5" - "@babel/types": "npm:^7.16.0" - checksum: 10c0/44f46c090fdfff1cbec0704a15cd8ff66c4f9f746024bc25fa994b023362485b662d8ba29024dc18e051335723d801ef2cd9dd35788521228486bd5aeab58372 +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.25.9 + resolution: "@babel/helper-plugin-utils@npm:7.25.9" + checksum: 10c0/483066a1ba36ff16c0116cd24f93de05de746a603a777cd695ac7a1b034928a65a4ecb35f255761ca56626435d7abdb73219eba196f9aa83b6c3c3169325599d languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" +"@babel/helper-remap-async-to-generator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-simple-access": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.2" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-wrap-function": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/adaa15970ace0aee5934b5a633789b5795b6229c6a9cf3e09a7e80aa33e478675eee807006a862aa9aa517935d81f88a6db8a9f5936e3a2a40ec75f8062bc329 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-optimise-call-expression@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 10c0/5858d42a6119d0e4e68e3f916d08748a02f4f7d2a346453f5c61a0003aa79b40a3280010f3691e3d05aa4db04b3665dd872b31b1cfe55048c7d7201df37678a6 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-optimise-call-expression@npm:7.16.0" - dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 10c0/29a76903e84462aba44e13cfc0321e9eeee68bc791f414d7aa7bb3f9f3844cfcff394788dd0a3c5235ba3cefb43b125cb972784ad28268b8365425de1350fe01 + checksum: 10c0/6798b562f2788210980f29c5ee96056d90dc73458c88af5bd32f9c82e28e01975588aa2a57bb866c35556bd9b76bac937e824ee63ba472b6430224b91b4879e9 languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" +"@babel/helper-replace-supers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-replace-supers@npm:7.25.9" dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10c0/ca6a9884705dea5c95a8b3ce132d1e3f2ae951ff74987d400d1d9c215dae9c0f9e29924d8f8e131e116533d182675bc261927be72f6a9a2968eaeeaa51eb1d0f - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.12.13 - resolution: "@babel/helper-plugin-utils@npm:7.12.13" - checksum: 10c0/088e20289d1dde618c52550561d890abce9a38ee220879e770df68c9f37a2383fa5b3258d4589706fc34f58084a5620164553beadfdd684ffdf5bd2218ecf206 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-plugin-utils@npm:7.13.0" - checksum: 10c0/49bbc12940fdc2f3afb744141a8af037325eb5d1c78cd30de90ffefc440dde3abc9b979ddc9c5e681f4257e158329179c7c2dc353d3791faa9af32ef6b8356d5 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/helper-plugin-utils@npm:7.16.5" - checksum: 10c0/0cfb0943ea38d3faa17ae8ba7104b2842adb0fb2c4247f2fcd5cdd18233831ba1e4de03a50dd2f1f1562b77ee0bcaecb1b7fc53641beed464295f05ff1f4637c - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.20.2": - version: 7.24.8 - resolution: "@babel/helper-plugin-utils@npm:7.24.8" - checksum: 10c0/0376037f94a3bfe6b820a39f81220ac04f243eaee7193774b983e956c1750883ff236b30785795abbcda43fac3ece74750566830c2daa4d6e3870bb0dff34c2d + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/0b40d7d2925bd3ba4223b3519e2e4d2456d471ad69aa458f1c1d1783c80b522c61f8237d3a52afc9e47c7174129bbba650df06393a6787d5722f2ec7f223c3f4 languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-remap-async-to-generator@npm:7.12.13" +"@babel/helper-simple-access@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-simple-access@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.12.13" - "@babel/helper-wrap-function": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" - checksum: 10c0/c24952b857648e4cf4bc901d791eb3c2484d1a63bffd8526c0d55edf5684b9e9bf21ff6b975066a75eaa35328f877707ef53e8e1a361da402a25f851c81ea5bc + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/3f1bcdb88ee3883ccf86959869a867f6bbf8c4737cd44fb9f799c38e54f67474590bc66802500ae9fe18161792875b2cfb7ec15673f48ed6c8663f6d09686ca8 languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/helper-remap-async-to-generator@npm:7.16.5" +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.0" - "@babel/helper-wrap-function": "npm:^7.16.5" - "@babel/types": "npm:^7.16.0" - checksum: 10c0/8837fd35ede587c9f2a76c6796405b4b3e42697452793e688f62edf0c64806c3af44c33378d7ebd769fb7fcf6be5712c7f65fd3281a3f19bbdaaec53a439278f + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/09ace0c6156961624ac9524329ce7f45350bab94bbe24335cbe0da7dfaa1448e658771831983cb83fe91cf6635b15d0a3cab57c03b92657480bfb49fb56dd184 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-replace-supers@npm:7.12.13" - dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.12.13" - "@babel/helper-optimise-call-expression": "npm:^7.12.13" - "@babel/traverse": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" - checksum: 10c0/5fb5b2febdec9d61a4edf3adcdffc74d8fd678a63dec6f38df20da7825615015c5658e762743595bcaba3321fbfa228de90921806148ca1c1dd3a670d1265383 +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 10c0/7244b45d8e65f6b4338a6a68a8556f2cb161b782343e97281a5f2b9b93e420cad0d9f5773a59d79f61d0c448913d06f6a2358a87f2e203cf112e3c5b53522ee6 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-replace-supers@npm:7.13.12" - dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.13.12" - "@babel/helper-optimise-call-expression": "npm:^7.12.13" - "@babel/traverse": "npm:^7.13.0" - "@babel/types": "npm:^7.13.12" - checksum: 10c0/3a289eeccd0897e93d0bdb586d1da6d5aba358f125eaeaf29caba2a8c33cacbdfc43a1b7cd7a234e22a220c864b1be77a757aecf778f39da17b4f2aef994bada +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/helper-replace-supers@npm:7.16.5" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.16.5" - "@babel/helper-member-expression-to-functions": "npm:^7.16.5" - "@babel/helper-optimise-call-expression": "npm:^7.16.0" - "@babel/traverse": "npm:^7.16.5" - "@babel/types": "npm:^7.16.0" - checksum: 10c0/a7a6371f4eef11ad9aa71a4fe89fd86094d12ebc8fb27a670e6efa0565d1ffec3e49759d0548049605b31126f231e28415e5ae68d9d7a295ad83746d57d1e9b1 +"@babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 10c0/27fb195d14c7dcb07f14e58fe77c44eea19a6a40a74472ec05c441478fa0bb49fa1c32b2d64be7a38870ee48ef6601bdebe98d512f0253aea0b39756c4014f3e languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helper-replace-supers@npm:7.25.0" +"@babel/helper-wrap-function@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-wrap-function@npm:7.25.9" dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.24.8" - "@babel/helper-optimise-call-expression": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/b4b6650ab3d56c39a259367cd97f8df2f21c9cebb3716fea7bca40a150f8847bfb82f481e98927c7c6579b48a977b5a8f77318a1c6aeb497f41ecd6dbc3fdfef + "@babel/template": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/b6627d83291e7b80df020f8ee2890c52b8d49272962cac0114ef90f189889c90f1027985873d1b5261a4e986e109b2754292dc112392f0b1fcbfc91cc08bd003 languageName: node linkType: hard - -"@babel/helper-simple-access@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-simple-access@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 10c0/a9317bbb25637b87bf6977e24c1fc3f46cbc729655b2603eef561cc3b7a54f4f2c56c9411c7b3e9f6354bbc4836061801f2f7c89547625460b2f287b7f2e881a - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-simple-access@npm:7.13.12" - dependencies: - "@babel/types": "npm:^7.13.12" - checksum: 10c0/fd1277179eff5cde9d59d5f073902d44db76ed006d93c522d8c2633b03ea9028db051b2639608355d0da1ef909d390a83774741920dd42597ad5620e89513b5b - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-simple-access@npm:7.16.0" - dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 10c0/ff19387cd7df7a8c4fdf0fc459fa78beef621225ce572eed3a2188e771a5479f5d1ebccdc80e25246a41d18b7904b779207ff9a60f9d03c7c1d1b61906114738 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-simple-access@npm:7.24.7" - dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/7230e419d59a85f93153415100a5faff23c133d7442c19e0cd070da1784d13cd29096ee6c5a5761065c44e8164f9f80e3a518c41a0256df39e38f7ad6744fed7 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.12.1": - version: 7.12.1 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.12.1" - dependencies: - "@babel/types": "npm:^7.12.1" - checksum: 10c0/ce2f7aa07f625d985e7f9783d552826d1645f7a29e57452691512feae7948f9f1c0ec7657c584a30b63f894cdb290e182b7596b0b77f332878ba0715adb3bb86 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.16.0" - dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 10c0/d3b8668a355e82a1c18137a1d5f3d8565ec88cff464f1c0a7c6e99c4cd0d92a77aeb51ca7fa71afa3bf8c50035bc5cf25504f46e01a94b9e6a297bdf3ac35f40 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7" - dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/e3a9b8ac9c262ac976a1bcb5fe59694db5e6f0b4f9e7bdba5c7693b8b5e28113c23bdaa60fe8d3ec32a337091b67720b2053bcb3d5655f5406536c3d0584242b - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-split-export-declaration@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 10c0/c73d211c706926ddca15c165384fe33ffff51952d0b654823175430c366d37787f6ce5de77d7ccf09cdf9c1c4dcbebc528334715e3b922d84e7f7c05a2effd85 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-split-export-declaration@npm:7.16.0" - dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 10c0/d4c18c8feb9f115e9b75741f7daa818050a3b4adb0a3cd991d8d58da9db627cd5043e5f24f5118933a3dc8e9891adfb9c1c63929741b74b6e0aec03ac30b2702 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-split-export-declaration@npm:7.22.6" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10c0/d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/helper-string-parser@npm:7.23.4" - checksum: 10c0/f348d5637ad70b6b54b026d6544bd9040f78d24e7ec245a0fc42293968181f6ae9879c22d89744730d246ce8ec53588f716f102addd4df8bbc79b73ea10004ac - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 10c0/6361f72076c17fabf305e252bf6d580106429014b3ab3c1f5c4eb3e6d465536ea6b670cc0e9a637a77a9ad40454d3e41361a2909e70e305116a23d68ce094c08 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.12.11": - version: 7.12.11 - resolution: "@babel/helper-validator-identifier@npm:7.12.11" - checksum: 10c0/b88e813b950bcd935edb5a59cab948c39d94fe108477ede3ff7eb38098e25f093793aa4d7f5a0012deff1f6c448f5a33fda0cbb4b662cee3ef33151c18d4d748 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.15.7": - version: 7.15.7 - resolution: "@babel/helper-validator-identifier@npm:7.15.7" - checksum: 10c0/398bbf808232073504426d08fa6a5ee7b70a41eda3c7a02115d9f879fbd89c057bef27e8013df2084d59eed43587dac91c915074fa8385544fae0caf03791c2b - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-validator-identifier@npm:7.16.7" - checksum: 10c0/5dfeea422c375edef9bfc65c70e944091b487c937a1f4f49d473d812bf4d527c4b7730ab5542137b631b76bd6a68af37701620043d32fa42fda82d2fe064a75e - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: 10c0/dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-identifier@npm:7.24.7" - checksum: 10c0/87ad608694c9477814093ed5b5c080c2e06d44cb1924ae8320474a74415241223cc2a725eea2640dd783ff1e3390e5f95eede978bc540e870053152e58f1d651 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.12.11": - version: 7.12.11 - resolution: "@babel/helper-validator-option@npm:7.12.11" - checksum: 10c0/e46fdba95cf48b7433056688077d3ca30ea2bf27dba78bf7f2c45cfef1b730703477802dc78fdc537bdacb5ca1e663f687ea18d335171735220c218d7cabffe7 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.12.17": - version: 7.12.17 - resolution: "@babel/helper-validator-option@npm:7.12.17" - checksum: 10c0/9574ee40afe9fa26a61f651aa4fb1ad0befc84f3b7e5713937beab4ba8e2a02d0e4a8b3969b0e67baad676d0e65fed99b72a862638c28a155ca2514664a0986f - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/helper-validator-option@npm:7.14.5" - checksum: 10c0/9cb2d6c72e73459abfccc7ed42bb1055ce4ca4aba9754edbad694f7f47d0dee940382f51b5f19bb16f1d69b6c32fc734bea9a5654a8f98da09d6be9641b02029 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: 10c0/73db93a34ae89201351288bee7623eed81a54000779462a986105b54ffe82069e764afd15171a428b82e7c7a9b5fec10b5d5603b216317a414062edf5c67a21f - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-wrap-function@npm:7.12.13" - dependencies: - "@babel/helper-function-name": "npm:^7.12.13" - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" - checksum: 10c0/9420ded5341dd8619f6f31df02c6e5d6457c5b5db0421a7a60385ff7ac9f16cc57272733c153b7849c8beb7875c2e8c7e80fb6456d4cf502e651c62a4d4c3843 - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/helper-wrap-function@npm:7.16.5" - dependencies: - "@babel/helper-function-name": "npm:^7.16.0" - "@babel/template": "npm:^7.16.0" - "@babel/traverse": "npm:^7.16.5" - "@babel/types": "npm:^7.16.0" - checksum: 10c0/c434355f654952bb36c8e95d20a329b414a2978a98b1ce97092d4566d1a1f4d44faa1fd7cc03fd258da857fda2fb03be92b331eb2b31dfe19e6e85dc0d010b8b - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helpers@npm:7.12.13" - dependencies: - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" - checksum: 10c0/06f0cc2a26adc7e0131a1a4871954baad2fb68f6f6a37502c40c60f8bece772e070dcce2ec11473d125d5d2a3677bc631d4c5cbeeabb70a699c57c8581edaa54 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.13.10": - version: 7.13.10 - resolution: "@babel/helpers@npm:7.13.10" - dependencies: - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.13.0" - "@babel/types": "npm:^7.13.0" - checksum: 10c0/edfb9466d17979e09e79de4091185ac8066b26245f1de9a91c636e8a3db316e2cebdfca368e4da51ed58162883ea200a169208a85f27420285bdaa5870f6c527 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/helpers@npm:7.16.5" - dependencies: - "@babel/template": "npm:^7.16.0" - "@babel/traverse": "npm:^7.16.5" - "@babel/types": "npm:^7.16.0" - checksum: 10c0/a20d02ef59ecc75b0108793c6f8a4dda1f8ad281738e4f80791c29c0d57fad5b31d811f305a992c2539baf75682ddf5202d41cbb7a6add6ff07243be43496ead - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.25.0": - version: 7.25.6 - resolution: "@babel/helpers@npm:7.25.6" - dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.6" - checksum: 10c0/448c1cdabccca42fd97a252f73f1e4bcd93776dbf24044f3b4f49b756bf2ece73ee6df05177473bb74ea7456dddd18d6f481e4d96d2cc7839d078900d48c696c - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/highlight@npm:7.12.13" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.12.11" - chalk: "npm:^2.0.0" - js-tokens: "npm:^4.0.0" - checksum: 10c0/41a17ddda1e1a89c091b24a6ed2804ce0065f447518247d18c62d6df7655cd36f56caa26693881d45c387525d3423bb750936efd938aa900c301296640e51f39 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/highlight@npm:7.16.0" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.15.7" - chalk: "npm:^2.0.0" - js-tokens: "npm:^4.0.0" - checksum: 10c0/47cf5ea9c18bc5cb3e469fcdc45a005d1b2d15614a55ac9fa36d38a5e02d0e402f0454080ffeee153aa164f61d2f06aa4dc98857dc2bd01e67d0c8a3be84929f - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.16.7": - version: 7.16.10 - resolution: "@babel/highlight@npm:7.16.10" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.16.7" - chalk: "npm:^2.0.0" - js-tokens: "npm:^4.0.0" - checksum: 10c0/0ec2007a1fbd826f4433daded828a65b824fa653c65c57d7a45aea161636994099db8c071a7a4e0844c2a2cec3aeaea62359f4b8b907f9cae7e440693af65331 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/highlight@npm:7.23.4" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.22.20" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - checksum: 10c0/fbff9fcb2f5539289c3c097d130e852afd10d89a3a08ac0b5ebebbc055cc84a4bcc3dcfed463d488cde12dd0902ef1858279e31d7349b2e8cee43913744bda33 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.24.7" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.13": - version: 7.12.14 - resolution: "@babel/parser@npm:7.12.14" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/43aaef50e29ef0569242c25b5d3dd3672fba4c6dd5cafd3fcdaa3287032a161287b0e153358af0fd3b89bced2cceaa2cbe9e85a64729ef08b3bd81301e304658 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.13.13": - version: 7.13.13 - resolution: "@babel/parser@npm:7.13.13" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/eeb6dbd769fac10a44bfc1893643773ca3c188ff67f47169bbd6aa89e91b24e2fb1c3eef7474a231d9c4c49182d59252e4414a970baeec649308d5a6d7c5100f - languageName: node - linkType: hard - -"@babel/parser@npm:^7.16.0, @babel/parser@npm:^7.16.5, @babel/parser@npm:^7.7.2": - version: 7.16.6 - resolution: "@babel/parser@npm:7.16.6" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/f34f088382403a9d8ad895f2b5b1db48f01e0e652e90a01873f549e9d8a979c0391e6bfb029daf906f4687b2e0c74339c62d41c0878e08cb4c300b4bc48bfc3d - languageName: node - linkType: hard - -"@babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/parser@npm:7.25.6" - dependencies: - "@babel/types": "npm:^7.25.6" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/f88a0e895dbb096fd37c4527ea97d12b5fc013720602580a941ac3a339698872f0c911e318c292b184c36b5fbe23b612f05aff9d24071bc847c7b1c21552c41d - languageName: node - linkType: hard - -"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/parser@npm:7.23.6" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/6f76cd5ccae1fa9bcab3525b0865c6222e9c1d22f87abc69f28c5c7b2c8816a13361f5bd06bddbd5faf903f7320a8feba02545c981468acec45d12a03db7755e - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.16.2": - version: 7.16.2 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.16.2" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/0f7c37f50483bcdfa9df806dca5cd25a1ac3aac9a65f45f0098310258c6336c73b2f0b6997fabe409e089e0d01cebd67b416c6f926c9319192c27793aeb704f7 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.16.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.16.0" - "@babel/plugin-proposal-optional-chaining": "npm:^7.16.0" - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 10c0/7844afeb5b94b69de73e5cb331cbf9727e99dbc463072a68b3562b8785a498ee9823b3ffc2be2a9653ce47d6a91841b76c99b0c3479ef92446211852ad7d0fa8 - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/helper-remap-async-to-generator": "npm:^7.12.13" - "@babel/plugin-syntax-async-generators": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/33dc8c4f8df032b5bff139dc76d550b2aa8f599f6714e707d411cdafd0ec2d8d39b17059cf15749284bc60428b2aa1776a4cdd1d6bb441bbe302ca12544de100 - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/helper-remap-async-to-generator": "npm:^7.16.5" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/85e7be1deb372f7e1aade8cad07a20df351fdc892e95924080c00caeb9d5c16f4a3b93cfa69bccc945d2210484e3dc2da57b8ec56b1dbfeea568fd4080afa8c6 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/d3524e780384376694b32b95601634d2ada38834ad310364f78b9547eb81cb36671139c534ad8d3f8ce8988b76d847be695d537f1cd120fb3c49fd0b2a8e3a84 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.16.0, @babel/plugin-proposal-class-properties@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-class-properties@npm:7.16.5" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.16.5" - "@babel/helper-plugin-utils": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/90814d13f05299fecba49e7022c4e95794115521a6a3f03b68aa4295d6db63afdca98cf8aae68a917ea304566a8475d583a0525524fcde202adb7c26d4a33c62 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-static-block@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.16.5" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.16.5" - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.12.0 - checksum: 10c0/89a1167a57f874fd8aa6b55cf08add909cbdc7e36bd7dd8eef4036c9c9978c90fc7d2cc42f8ca5b039dfd1551028a95234d30eb53b457350bc3ce7a4cdf898d9 - languageName: node - linkType: hard - -"@babel/plugin-proposal-decorators@npm:^7.16.4": - version: 7.16.5 - resolution: "@babel/plugin-proposal-decorators@npm:7.16.5" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.16.5" - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-decorators": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/6dfef4746dfe1bf41426de7aee0553f35a28f1f3bb80e9b9a959ca64567e94429351a44df5d8caaf5a7906204fb10c415b9fefb634a62348357a74b4fce40c55 - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.12.1": - version: 7.12.1 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.12.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/cac6514399618ee55a810d6d47d82ec8be8702b9975e78e0309151d7b1def055e1efefa67a876d9f03c06c30ff0e43dc842a5e303fcfc5d610d52312ab67e3a1 - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/66711dcb7af257ab77e20d76c6234f6a7cd8c08fdfc40248f9602bc57b4dfc40f4c8594ed948d065f8a102e8ffe1553af42cd2730af444ca29a3fa6ea1c2d812 - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/64cf46fd3c98be85a05616d370bc2186640b5d764231e4ab50961c2d58da340356cb4e33f00c20504a9c3cb156d374023114ab012a1922008d41951a796ab04f - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/56a29a7dcbd6eeb82aa5dfc788a06bebcb11ea816c471621daecae5f4bfd521461fa482f1ede5a22bd9c195d74c33207d2b2939938e73e2982be82d6958f0de2 - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-json-strings@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/plugin-syntax-json-strings": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/c05d58aeb689f73b1731f46f7a7834dba751d404e18b624700f6d9a611c7f372557b797af7c3d368097bf56fb51513f2ec1a4cafeb9058e987edf0a1a768043c - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-json-strings@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/54fc4d8d557555cff5df173a18c5b335be7b01276c648aced2fe941ddaa500d31761f624153b5574086a2cb3da3d41ae951a05934dcd62229a35c44faaffe533 - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/58c61df0dd1afbb56084f84bef9b54044a035ade6008d3162964a5050bc58c2bff89bd0e8651c7fcd7b73bbf550e6c96a0d0ca28ec75bd620b18ba98402011d4 - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/2babe0805f4386d64593d875fd7624107878e10344d47709b7ba48482f8c47810773136c33ec8db2a0d2194cf995e82ecdb42cd723491877acff6612613b43e9 + +"@babel/helpers@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helpers@npm:7.26.0" + dependencies: + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" + checksum: 10c0/343333cced6946fe46617690a1d0789346960910225ce359021a88a60a65bc0d791f0c5d240c0ed46cf8cc63b5fd7df52734ff14e43b9c32feae2b61b1647097 languageName: node linkType: hard -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.12.13" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/parser@npm:7.26.2" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/9a66c14269f27b20da742b6094b985ce1b4381972bdf05815e1485fcfef23ef424a9db033234824d5e981686e4e84678d538715ad342dded127155c485a47b78 + "@babel/types": "npm:^7.26.0" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/751a743087b3a9172a7599f1421830d44c38f065ef781588d2bfb1c98f9b461719a226feb13c868d7a284783eee120c88ea522593118f2668f46ebfb1105c4d7 languageName: node linkType: hard -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.16.0, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.16.5" +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/83b3bd4e7860ce18a412acd26eb329c81afc37d766a8113b9ed714dd26d37da7ecdb8a4375cb5eb4d709f457ad6a559deeb2c19d4fbe46ae2a46586a07be01d0 + "@babel/core": ^7.0.0 + checksum: 10c0/7aab47fcbb8c1ddc195a3cd66609edcad54c5022f018db7de40185f0182950389690e953e952f117a1737b72f665ff02ad30de6c02b49b97f1d8f4ccdffedc34 languageName: node linkType: hard -"@babel/plugin-proposal-numeric-separator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.12.13" +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/78692bad57c47591d58a5351175dc172a580db45af22bb613886cae8cdab93dcdebdd98fc0185ff7d90ad6d87dab2749cbabb26455843c6f47fbdda3aa9e0211 + "@babel/core": ^7.0.0 + checksum: 10c0/3a652b3574ca62775c5f101f8457950edc540c3581226579125da535d67765f41ad7f0e6327f8efeb2540a5dad5bb0c60a89fb934af3f67472e73fb63612d004 languageName: node linkType: hard -"@babel/plugin-proposal-numeric-separator@npm:^7.16.0, @babel/plugin-proposal-numeric-separator@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.16.5" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/a2bbf634fb64c132c828cc52d07dcf5dccd3303ec8731e2cfd3095216a8b6750632e347e7cc990c9e0c035991d3ccbce7d125795a35aad9c992db8848f62693b + "@babel/core": ^7.0.0 + checksum: 10c0/18fc9004104a150f9f5da9f3307f361bc3104d16778bb593b7523d5110f04a8df19a2587e6bdd5e726fb1d397191add45223f4f731bb556c33f14f2779d596e8 languageName: node linkType: hard -"@babel/plugin-proposal-object-rest-spread@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.12.13" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.0" - "@babel/plugin-transform-parameters": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.9" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/4f231c84aaee93e204d62b33c53c3d546ab5416d3b166eccf0db4033f25339806c377978eea6a866b259d8754bb9050a7a8337c355bcc450e8ca6e8334592c80 + "@babel/core": ^7.13.0 + checksum: 10c0/3f6c8781a2f7aa1791a31d2242399ca884df2ab944f90c020b6f112fb19f05fa6dad5be143d274dad1377e40415b63d24d5489faf5060b9c4a99e55d8f0c317c languageName: node linkType: hard -"@babel/plugin-proposal-object-rest-spread@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.16.5" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.9" dependencies: - "@babel/compat-data": "npm:^7.16.4" - "@babel/helper-compilation-targets": "npm:^7.16.3" - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-transform-parameters": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/4360031972bc713c646a71a51b5c9f339302d0ccbaf33ad8858a32c8396c68a2adcc122f89b0a7da660622fe902f7a44f43bb107e522da4d5a097512890984ca + "@babel/core": ^7.0.0 + checksum: 10c0/02b365f0cc4df8b8b811c68697c93476da387841e5f153fe42766f34241b685503ea51110d5ed6df7132759820b93e48d9fa3743cffc091eed97c19f7e5fe272 languageName: node linkType: hard -"@babel/plugin-proposal-optional-catch-binding@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.12.13" +"@babel/plugin-proposal-class-properties@npm:^7.16.0": + version: 7.18.6 + resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.0" + "@babel/helper-create-class-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/db8715650c31a6a75869b058491fd2764747d049fc254e3b6f6556242f4de0db9d788b18cdd7aec8efd23cb11dd8905821cac120495d81d46ff8f6db462b0911 + checksum: 10c0/d5172ac6c9948cdfc387e94f3493ad86cb04035cf7433f86b5d358270b1b9752dc25e176db0c5d65892a246aca7bdb4636672e15626d7a7de4bc0bd0040168d9 languageName: node linkType: hard -"@babel/plugin-proposal-optional-catch-binding@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.16.5" +"@babel/plugin-proposal-decorators@npm:^7.16.4": + version: 7.25.9 + resolution: "@babel/plugin-proposal-decorators@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-syntax-decorators": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ef4948fb37236b51a84c4e3c54da032bc8afa141cbae915a919a7c88971d2af96b75fee5bc601df395d5293c7abf87f58628b4f4574ebdc1da971b9628c7ebd5 + checksum: 10c0/d7d54644f50a60c47090d70121905ca76534bd7a837c03d25e163ca6ae384b48ef6dcfb125a99f12b3ce7e78e074a33f6fa8c4531c1a46aa31274153f587b05e languageName: node linkType: hard -"@babel/plugin-proposal-optional-chaining@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.12.13" +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.16.0": + version: 7.18.6 + resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.12.1" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.0" + "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e5e0050bb3ae2e10866a2e696133a2876c17fc8d395ed6d77cf1aedd4d558eae27a88cc155631b9e31fa9b7079db81e0e14b7206120ee6e0a0a041a0d591efb3 + checksum: 10c0/f6629158196ee9f16295d16db75825092ef543f8b98f4dfdd516e642a0430c7b1d69319ee676d35485d9b86a53ade6de0b883490d44de6d4336d38cdeccbe0bf languageName: node linkType: hard -"@babel/plugin-proposal-optional-chaining@npm:^7.16.0, @babel/plugin-proposal-optional-chaining@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.16.5" +"@babel/plugin-proposal-numeric-separator@npm:^7.16.0": + version: 7.18.6 + resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.16.0" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/770aeea5dc6f16fe577221f2ea66862720797d5483cc154323597c01462deb55c1f838cb6db5abeea6c37fbe924485f78eebb4b8a2a05fc580e97606eb8167ca + checksum: 10c0/a83a65c6ec0d2293d830e9db61406d246f22d8ea03583d68460cb1b6330c6699320acce1b45f66ba3c357830720e49267e3d99f95088be457c66e6450fbfe3fa languageName: node linkType: hard -"@babel/plugin-proposal-private-methods@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-private-methods@npm:7.12.13" +"@babel/plugin-proposal-optional-chaining@npm:^7.16.0": + version: 7.21.0 + resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/08118c7e4e548849319bd86b2a5162d6ac7ce5ec3ddb38be27bf4897d29c6191881650bcf2542fd2e5bfa84a0ac20f9b56972f393cd4d139bb41bead95dd9cae + checksum: 10c0/b524a61b1de3f3ad287cd1e98c2a7f662178d21cd02205b0d615512e475f0159fa1b569fa7e34c8ed67baef689c0136fa20ba7d1bf058d186d30736a581a723f languageName: node linkType: hard -"@babel/plugin-proposal-private-methods@npm:^7.16.0, @babel/plugin-proposal-private-methods@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-private-methods@npm:7.16.5" +"@babel/plugin-proposal-private-methods@npm:^7.16.0": + version: 7.18.6 + resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.16.5" - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-create-class-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1f47beff36b1aaee9813579722a3427c9c800f19b1c9f285401d5c77decec926527b74fd53f091920d31983c1213c1dceaafc2b710c5e2565c6495ed3b42e81e + checksum: 10c0/1c273d0ec3d49d0fe80bd754ec0191016e5b3ab4fb1e162ac0c014e9d3c1517a5d973afbf8b6dc9f9c98a8605c79e5f9e8b5ee158a4313fa68d1ff7b02084b6a languageName: node linkType: hard -"@babel/plugin-proposal-private-property-in-object@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.16.5" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.0" - "@babel/helper-create-class-features-plugin": "npm:^7.16.5" - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/3d87398ff15d07ed89116fc17ac02fd462a45e92fb3060c691875da4a913fa9482275c5e161f6655892510d413b9ee446702312a39eb8c1852afc8c7a5f0bc2b + checksum: 10c0/e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 languageName: node linkType: hard @@ -1561,31 +491,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-unicode-property-regex@npm:^7.12.13, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.12.13 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.12.13" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e1474b4394627c588051886d28c5c53b23b0e5da23c64aa7ecd10517722e359d1c1eb3af7480774b6240d77e0f3aa84f7f5b0e1424a9afcca2fab1f2e47fab82 - languageName: node - linkType: hard - -"@babel/plugin-proposal-unicode-property-regex@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.16.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.16.0" - "@babel/helper-plugin-utils": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/991dc3189143a794f0abda10c1ee792f28f386d85e01b7fb3f1304052e12cb805c231d265a538edec53abbb405c0d7c8d5f78743de42a4c26a987bcb1897ce1f - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.0, @babel/plugin-syntax-async-generators@npm:^7.8.4": +"@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" dependencies: @@ -1607,7 +513,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": +"@babel/plugin-syntax-class-properties@npm:^7.12.13": version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: @@ -1629,51 +535,51 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-syntax-decorators@npm:7.16.5" +"@babel/plugin-syntax-decorators@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-decorators@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c136c303ffcafab6f8d3ee59b940842934f38d1e7a6ac3d58b1a7669180581842721fce790544aae60b077b11bec184ac473db82784e0bf733cbf472d164fa41 + checksum: 10c0/47e44a7d61b76dac4f18fd61edc186012e084eb8f1fe253c483b0fe90b73366b4ebd2b0b03728e000fd1fdedc8af3aa6e93246caf97183a8d9d42a0eb57ecfcc languageName: node linkType: hard -"@babel/plugin-syntax-dynamic-import@npm:^7.8.0, @babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" +"@babel/plugin-syntax-flow@npm:^7.25.9": + version: 7.26.0 + resolution: "@babel/plugin-syntax-flow@npm:7.26.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/9c50927bf71adf63f60c75370e2335879402648f468d0172bc912e303c6a3876927d8eb35807331b57f415392732ed05ab9b42c68ac30a936813ab549e0246c5 + checksum: 10c0/3d5cc1627a67af8be9df8cfe246869f18e7e9e2592f4b6f1c4bcd9bbe4ad27102784a25b31ebdbed23499ecb6fc23aaf7891ccf5ac3f432fd26a27123d1e242b languageName: node linkType: hard -"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" +"@babel/plugin-syntax-import-assertions@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.26.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.3" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5100d658ba563829700cd8d001ddc09f4c0187b1a13de300d729c5b3e87503f75a6d6c99c1794182f7f1a9f546ee009df4f15a0ce36376e206ed0012fa7cdc24 + checksum: 10c0/525b174e60b210d96c1744c1575fc2ddedcc43a479cba64a5344cf77bd0541754fc58120b5a11ff832ba098437bb05aa80900d1f49bb3d888c5e349a4a3a356e languageName: node linkType: hard -"@babel/plugin-syntax-flow@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-syntax-flow@npm:7.16.5" +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/9afd558ca17f36d7eee54f503e058eeca6daff04e65480c7927e12705cbb85ffd98cd9de323d18c8f9e59f21b90de1b78293ecf3fbdb427dff25351aac90586d + checksum: 10c0/e594c185b12bfe0bbe7ca78dfeebe870e6d569a12128cac86f3164a075fe0ff70e25ddbd97fd0782906b91f65560c9dc6957716b7b4a68aba2516c9b7455e352 languageName: node linkType: hard -"@babel/plugin-syntax-import-meta@npm:^7.8.3": +"@babel/plugin-syntax-import-meta@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" dependencies: @@ -1684,7 +590,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-json-strings@npm:^7.8.0, @babel/plugin-syntax-json-strings@npm:^7.8.3": +"@babel/plugin-syntax-json-strings@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" dependencies: @@ -1695,29 +601,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-jsx@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/c79976ba737f7eba2a84f6bc04f3802b5c63faf73b8a85902600610c9596adf4e8ebb06bb2fb9dcfb92d4e8deb508f1182fb50a74317e2c8f7a7121d2374e693 - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-syntax-jsx@npm:7.16.5" +"@babel/plugin-syntax-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/507df52d394b98f1d53f7516a8249fd9843f5033765c9a4aed254c811f2b5c2906a9105391f930c4ebd0e0b318847465036ae9473807a4676b66325b0394949f + checksum: 10c0/d56597aff4df39d3decda50193b6dfbe596ca53f437ff2934622ce19a743bf7f43492d3fb3308b0289f5cee2b825d99ceb56526a2b9e7b68bf04901546c5618c languageName: node linkType: hard -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" dependencies: @@ -1728,7 +623,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.0, @babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" dependencies: @@ -1739,7 +634,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4, @babel/plugin-syntax-numeric-separator@npm:^7.8.3": +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" dependencies: @@ -1750,7 +645,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" dependencies: @@ -1761,7 +656,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.0, @babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" dependencies: @@ -1772,7 +667,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-optional-chaining@npm:^7.8.0, @babel/plugin-syntax-optional-chaining@npm:^7.8.3": +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" dependencies: @@ -1794,17 +689,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-top-level-await@npm:^7.12.13, @babel/plugin-syntax-top-level-await@npm:^7.8.3": - version: 7.12.13 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/a74e6954c784d7ae44009f06195dd6a8166ce43e3c3edda23af5c8b319733a4b3e1fe8cee12404f7662285273e7eb1f76727b2b28a8a098bf0bce54683cbe1ab - languageName: node - linkType: hard - "@babel/plugin-syntax-top-level-await@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" @@ -1816,1550 +700,1238 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.16.0, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.16.5 - resolution: "@babel/plugin-syntax-typescript@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/57298146d7b8d349ee1059d368bf7fe9868e99c728b48ad30e4bf035fa6788cca2a02e11873d3b27951d93107f359944aaf91ddf71b80121b0001bde9190ef3e - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.12.13" +"@babel/plugin-syntax-typescript@npm:^7.25.9, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e759603c00b311d0aa4ec3a0fadf70e740bcd2a6fa7940c0498c7a3702c7d9ff6d991d83fac9c79b3d6c439ba29e758297146822d015770551e3e3ad5640a352 + checksum: 10c0/5192ebe11bd46aea68b7a60fd9555465c59af7e279e71126788e59121b86e00b505816685ab4782abe159232b0f73854e804b54449820b0d950b397ee158caa2 languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.16.5" +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/04039fc0ec2b4f1a8e83aac8414e909b5f2d17c7db33e99289acdf005f3b97f47e05685d6b2436ca6ef7d918d809e8047e3324c71f0b3178cfc9abd072052105 + "@babel/core": ^7.0.0 + checksum: 10c0/9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.12.13" +"@babel/plugin-transform-arrow-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.9" dependencies: - "@babel/helper-module-imports": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/helper-remap-async-to-generator": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5d7ff5322af755eae2f17712289a6138a5b8e8d2b0baa0b4bdbe8db9a0dc709d8e81482301d2e2ad3eb9ad3b65a62433de01ab1cbd38b8c60416a14ff59db362 + checksum: 10c0/851fef9f58be60a80f46cc0ce1e46a6f7346a6f9d50fa9e0fa79d46ec205320069d0cc157db213e2bea88ef5b7d9bd7618bb83f0b1996a836e2426c3a3a1f622 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.16.5" +"@babel/plugin-transform-async-generator-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.9" dependencies: - "@babel/helper-module-imports": "npm:^7.16.0" - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/helper-remap-async-to-generator": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-remap-async-to-generator": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/717b8c974d32a2316002b47690d038d12c264d0056932cd887afe140bf1472ce534dde19becb0f3a22c25b5584d190c15b6c21e7552029b653adc7c46f080767 + checksum: 10c0/e3fcb9fc3d6ab6cbd4fcd956b48c17b5e92fe177553df266ffcd2b2c1f2f758b893e51b638e77ed867941e0436487d2b8b505908d615c41799241699b520dec6 languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.12.13" +"@babel/plugin-transform-async-to-generator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-remap-async-to-generator": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/79006bbfc62c7bc38493b5944de5bd6ec5231af25cff0abc00ad9b8bc430743ff011adeace60db3e3b3fef2d2174d8680169e87731b078a0066d018a6943be9e + checksum: 10c0/c443d9e462ddef733ae56360064f32fc800105803d892e4ff32d7d6a6922b3765fa97b9ddc9f7f1d3f9d8c2d95721d85bef9dbf507804214c6cf6466b105c168 languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.16.5" +"@babel/plugin-transform-block-scoped-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/3472a91e7a2395c6698b2e029f8ff856e38b741975f9b4c89369028b73d2b466f9a677b7b985c2eb5c0954bc0c5aac621d0e42fe0833a3c0585cb1a22f6180d2 + checksum: 10c0/e92ba0e3d72c038513844d8fca1cc8437dcb35cd42778e97fd03cb8303380b201468611e7ecfdcae3de33473b2679fe2de1552c5f925d112c5693425cf851f10 languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-block-scoping@npm:7.12.13" +"@babel/plugin-transform-block-scoping@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-block-scoping@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/6e7832c98d6f891c61f25200fddce85d4daadfdb6bc4512ff3ad30ae2720db2ecb0c5ca46d0223d0ab9f79a15ccd2507c2e2fb3b8e9c5ed9bcea14c924915b1d + checksum: 10c0/a76e30becb6c75b4d87a2cd53556fddb7c88ddd56bfadb965287fd944810ac159aa8eb5705366fc37336041f63154ed9fab3862fb10482a45bf5ede63fd55fda languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-block-scoping@npm:7.16.5" +"@babel/plugin-transform-class-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ba39bdcef6c2a1eb5784c65ea8be81225e830dda0a52ee1d0f71d6425f8ccba42ec145936cd8e9d256c78e0a3643a71a2d677caeb0275c6432517022b5abd1c1 + checksum: 10c0/f0603b6bd34d8ba62c03fc0572cb8bbc75874d097ac20cc7c5379e001081210a84dba1749e7123fca43b978382f605bb9973c99caf2c5b4c492d5c0a4a441150 languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-classes@npm:7.12.13" +"@babel/plugin-transform-class-static-block@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-transform-class-static-block@npm:7.26.0" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.12.13" - "@babel/helper-function-name": "npm:^7.12.13" - "@babel/helper-optimise-call-expression": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/helper-replace-supers": "npm:^7.12.13" - "@babel/helper-split-export-declaration": "npm:^7.12.13" - globals: "npm:^11.1.0" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/a1625e002e45ccc1ccbdc031cca406c0e78408ffc5158038ac584679fe7cd2c09593be93348b435c41fffbfec485bfddbfd078ac990f8c0d444ed8128eab607a + "@babel/core": ^7.12.0 + checksum: 10c0/cdcf5545ae6514ed75fbd73cccfa209c6a5dfdf0c2bb7bb62c0fb4ec334a32281bcf1bc16ace494d9dbe93feb8bdc0bd3cf9d9ccb6316e634a67056fa13b741b languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-classes@npm:7.16.5" +"@babel/plugin-transform-classes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-classes@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.0" - "@babel/helper-environment-visitor": "npm:^7.16.5" - "@babel/helper-function-name": "npm:^7.16.0" - "@babel/helper-optimise-call-expression": "npm:^7.16.0" - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/helper-replace-supers": "npm:^7.16.5" - "@babel/helper-split-export-declaration": "npm:^7.16.0" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" globals: "npm:^11.1.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/2294487802f31fa5d2fd2c1dda569cbe04d4448403756b1bba55db9f2aadae90e008ef77e4c80a82647acd228a3c39c8576e91ccbcc386fd07cc4ac05ab6b5a8 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-computed-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/757c644c16264ab267d0a3f2b5e21542e67fd61ed45007959ae6e4fd6294d9aae281fa2472b9ee8b13f1f5a60f94c9d958bc0457749e851be65496e461eed28b - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-computed-properties@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/b717bd50476a798eeadd677e3b90e8fd28467a38e1f01e3e0bd4e46e067591cefbe1f004494a05636b637ab7f4c6c33f8261900b3fe8e8d325eef6104df1308c + checksum: 10c0/02742ea7cd25be286c982e672619effca528d7a931626a6f3d6cea11852951b7ee973276127eaf6418ac0e18c4d749a16b520709c707e86a67012bd23ff2927d languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-destructuring@npm:7.12.13" +"@babel/plugin-transform-computed-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-computed-properties@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/template": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ef58ce4f6bb6d13d65fe1d8588616e52c308cff383a13042d09fa4aa176dae39af223fb19b15860b6272408d09984e5d1b9c0356f21a3617ff2101d3d57ab116 + checksum: 10c0/948c0ae3ce0ba2375241d122a9bc7cda4a7ac8110bd8a62cd804bc46a5fdb7a7a42c7799c4cd972e14e0a579d2bd0999b92e53177b73f240bb0d4b09972c758b languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-destructuring@npm:7.16.5" +"@babel/plugin-transform-destructuring@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-destructuring@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a52638a58f433796784343897bed8004350e96bad5e351f845c10497f1890140864523480c4a05e9dd5b55979dd9a9860e782aa4a5a5fe257a604f42394e5f07 + checksum: 10c0/7beec5fda665d108f69d5023aa7c298a1e566b973dd41290faa18aeea70f6f571295c1ece0a058f3ceb6c6c96de76de7cd34f5a227fbf09a1b8d8a735d28ca49 languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.12.13, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.12.13 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.12.13" +"@babel/plugin-transform-dotall-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/40d79120e22e2533bc424bd3afff8cc5fada593c8f12b30e4df3e1f5409b75d9da37ca7626d700c6e29f7017d5b43eef32e5130bf72f5daa292e43b83a4756e5 + checksum: 10c0/7c3471ae5cf7521fd8da5b03e137e8d3733fc5ee4524ce01fb0c812f0bb77cb2c9657bc8a6253186be3a15bb4caa8974993c7ddc067f554ecc6a026f0a3b5e12 languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.16.5" +"@babel/plugin-transform-duplicate-keys@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.16.0" - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/fd03db6b5fd531e7382ca3708f1ff8aa4fd81dc17e8d533e260830fe5ab2ebc038d751d422b10d9258d625d86a1fb043736fdb64335b74cd693fea54d1baa4cc + checksum: 10c0/d0c74894b9bf6ff2a04189afffb9cd43d87ebd7b7943e51a827c92d2aaa40fa89ac81565a2fd6fbeabf9e38413a9264c45862eee2b017f1d49046cc3c8ff06b4 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.12.13" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/62e699ce5e6a56cfea72e45fe7ed631676df2b9077e53e498bfde81b5cee7866e44405e48df475226ed3247af4b96ee5d68540914b6883322cbb337ad07e0f38 + "@babel/core": ^7.0.0 + checksum: 10c0/a8039a6d2b90e011c7b30975edee47b5b1097cf3c2f95ec1f5ddd029898d783a995f55f7d6eb8d6bb8873c060fb64f9f1ccba938dfe22d118d09cf68e0cd3bf6 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.16.5" +"@babel/plugin-transform-dynamic-import@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/78d468c22013a0a4d6eca676236ca7d14ce98dc0fb4fd2a09dfd675df8303d6eb43328d3872c9b5301543579c0d587fda2c6255a4691787d9395d074a78347ac + checksum: 10c0/5e643a8209072b668350f5788f23c64e9124f81f958b595c80fecca6561086d8ef346c04391b9e5e4cad8b8cbe22c258f0cd5f4ea89b97e74438e7d1abfd98cf languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.12.13" +"@babel/plugin-transform-exponentiation-operator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.9" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1d19053b6ab15d140dbeee9a0015333bdd28b47b4bb247059f676ff425f95dbd4cc97ba43b4b47ee5d0e571c56a8d717ccb3039104f353479aa7a31429dcb66a + checksum: 10c0/3b42f65bab3fee28c385115ce6bcb6ba544dff187012df408a432c9fb44c980afd898911020c723dc1c9257aaf3d7d0131ad83ba15102bf30ad9a86fc2a8a912 languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.16.5" +"@babel/plugin-transform-export-namespace-from@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.9" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.16.5" - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/31a853bceed790c14a54b42aae03ed4de1c92443139b244066e030d4a1a2bd0184db7dfa5cbd471709020ac0fe717eb8c281d6a9b9d533f9b1acad1ac8a5a471 + checksum: 10c0/f291ea2ec5f36de9028a00cbd5b32f08af281b8183bf047200ff001f4cb260be56f156b2449f42149448a4a033bd6e86a3a7f06d0c2825532eb0ae6b03058dfb languageName: node linkType: hard "@babel/plugin-transform-flow-strip-types@npm:^7.16.0": - version: 7.16.5 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-flow": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/016c124483c8ef96dbd9d9905e591f8e72e7676b2ed6ec14dae3141782ccf33ea329f7b01ab33293e8ed3a681a5fe7067f5b8c689e82d21d5b114ad22de47817 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-for-of@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/c098f1ba65359ee9b6e2ecb3e31297d1993d9be44a6b794e62b766b4d5f66925547cde660d2b9128c5ab6eb30f4219add1e6157b074f38177de07afa0d2e19b9 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-for-of@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/60d399d7273a7bb14de37a115ded55325a35e4e9665c96d0d82389e955a370ee848a1ba485fb0d0c52128043d1cf121e99a3c392dfaea797202cc4f48142734e - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-function-name@npm:7.12.13" - dependencies: - "@babel/helper-function-name": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/ad12739bd44c1d545775bcfebc75b905e3ee6b358a36534d8d3e2b923aff652ebba13960b34e15dc4d9aaed0e45ef04291d9fdf79d0c005a64837122013a479f - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-function-name@npm:7.16.5" - dependencies: - "@babel/helper-function-name": "npm:^7.16.0" - "@babel/helper-plugin-utils": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/cc552d37f10b593214d93c335cb618a65e570984952ce14d6e3dfccadc44e503fe486fb8253c647b63d655eae38a15e61db3c5bd8d25ea654db15a97e2a73961 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-literals@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e2a3f82375ed1542434993790d83c9374b36235e56776e9df02849985e088b7bfcef2f9449ef3d95c96cd76247d32e6aa8a0c6234f28398cd5cbca074f9e4902 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-literals@npm:7.16.5" + version: 7.25.9 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-syntax-flow": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/2eeeff2f767cb9bb520c76f196f3336ab8e1debc0bfe50455cb6098dcf86583a4f4a4a56e51133bd5191c149a1315397f0f4b9268a046bc11a26bdde13ad0bea + checksum: 10c0/d4b79769a5b8bfc1a0766ed2158417e7efa53cdb5776161f641a642019c0822a1288f2ccd36c16a4bca77c64ccf1bab7e36aa1419adc417606acc6eddc126339 languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.12.13" +"@babel/plugin-transform-for-of@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-for-of@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/0f974b47a199883b00a49faff71368c66128f5dd7f74e3f3d447760cd5fcb389c5f3020672d2115b1a8ec2030c785031d9ed6440df8cf3d1208dfa552e7857b0 + checksum: 10c0/bf11abc71934a1f369f39cd7a33cf3d4dc5673026a53f70b7c1238c4fcc44e68b3ca1bdbe3db2076f60defb6ffe117cbe10b90f3e1a613b551d88f7c4e693bbe languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.16.5" +"@babel/plugin-transform-function-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-function-name@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8f40df2ae1533ad92061a9701a3d8f48bb7340a1bb09c7fd0774496c93fe1ab5888e61b3500a0e275c45bbc3c017fbc870f86a424460bd90e40e36881e539fee + checksum: 10c0/8e67fbd1dd367927b8b6afdf0a6e7cb3a3fd70766c52f700ca77428b6d536f6c9d7ec643e7762d64b23093233765c66bffa40e31aabe6492682879bcb45423e1 languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-modules-amd@npm:7.12.13" +"@babel/plugin-transform-json-strings@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-json-strings@npm:7.25.9" dependencies: - "@babel/helper-module-transforms": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - babel-plugin-dynamic-import-node: "npm:^2.3.3" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/63bdc3d6b8d11ff1faf2207126a6455b85bb547f3804470c3651f6b940ee57ee8ca220283c1df2bb1b300bce823d90ecd5ce1951ff897e212ce50d80a8a79255 + checksum: 10c0/00bc2d4751dfc9d44ab725be16ee534de13cfd7e77dfb386e5dac9e48101ce8fcbc5971df919dc25b3f8a0fa85d6dc5f2a0c3cf7ec9d61c163d9823c091844f0 languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-modules-amd@npm:7.16.5" +"@babel/plugin-transform-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-literals@npm:7.25.9" dependencies: - "@babel/helper-module-transforms": "npm:^7.16.5" - "@babel/helper-plugin-utils": "npm:^7.16.5" - babel-plugin-dynamic-import-node: "npm:^2.3.3" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/72db5d1b66df252567f7f7d903270d1704d22a91b90b2ff0cbc3c14c6e5809d2f04d9e7c21e0dd571eaa1a6226fa2caff66e52f5f2e1192fbb6fef286a0310f5 + checksum: 10c0/00b14e9c14cf1e871c1f3781bf6334cac339c360404afd6aba63d2f6aca9270854d59a2b40abff1c4c90d4ffdca614440842d3043316c2f0ceb155fdf7726b3b languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.12.13" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.9" dependencies: - "@babel/helper-module-transforms": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/helper-simple-access": "npm:^7.12.13" - babel-plugin-dynamic-import-node: "npm:^2.3.3" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c35be44af9ead85edef418d6c9fd10e8e9fb5459dc5ce6fdb39e2b89893d27e33e1dac4a78c3af1d7cee7a9c91ff6f7234e705f3bc4d37abeda2185f59dff673 + checksum: 10c0/6e2051e10b2d6452980fc4bdef9da17c0d6ca48f81b8529e8804b031950e4fff7c74a7eb3de4a2b6ad22ffb631d0b67005425d232cce6e2b29ce861c78ed04f5 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.16.5" +"@babel/plugin-transform-member-expression-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.9" dependencies: - "@babel/helper-module-transforms": "npm:^7.16.5" - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/helper-simple-access": "npm:^7.16.0" - babel-plugin-dynamic-import-node: "npm:^2.3.3" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1b6eabab96242f4f7da8e86506f83dbcfbb4f722f12d417ce0b4bacd49898738601b7533b1edc8fb8af350872062f565883fea2d948480c1a22bbca10c2f83c8 + checksum: 10c0/91d17b451bcc5ea9f1c6f8264144057ade3338d4b92c0b248366e4db3a7790a28fd59cc56ac433a9627a9087a17a5684e53f4995dd6ae92831cb72f1bd540b54 languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.12.13" +"@babel/plugin-transform-modules-amd@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-amd@npm:7.25.9" dependencies: - "@babel/helper-hoist-variables": "npm:^7.12.13" - "@babel/helper-module-transforms": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/helper-validator-identifier": "npm:^7.12.11" - babel-plugin-dynamic-import-node: "npm:^2.3.3" + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f459b6e6e13cf88ccfe88e9a23a4441dfb4f52c3c069f87fcb9d43d351d0450685ed23f2c2220ea2f04e7a2d803f28d12f47ea5f7a9dc0f1d8ea9fc104be0e59 + checksum: 10c0/849957d9484d0a2d93331226ed6cf840cee7d57454549534c447c93f8b839ef8553eae9877f8f550e3c39f14d60992f91244b2e8e7502a46064b56c5d68ba855 languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.16.5" +"@babel/plugin-transform-modules-commonjs@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.25.9" dependencies: - "@babel/helper-hoist-variables": "npm:^7.16.0" - "@babel/helper-module-transforms": "npm:^7.16.5" - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/helper-validator-identifier": "npm:^7.15.7" - babel-plugin-dynamic-import-node: "npm:^2.3.3" + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-simple-access": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7e75b1fef09a3fca7c68d7a53797c84b3103bd67ffd4c034c8b61a79e341355aa2709331f306029ef5e1183a5b94fb174eb2cb01a33f3805e24ae5432cec18b5 + checksum: 10c0/6ce771fb04d4810257fc8900374fece877dacaed74b05eaa16ad9224b390f43795c4d046cbe9ae304e1eb5aad035d37383895e3c64496d647c2128d183916e74 languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-modules-umd@npm:7.12.13" +"@babel/plugin-transform-modules-systemjs@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.9" dependencies: - "@babel/helper-module-transforms": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1298a6c1124ee37975ae19a0847c309b5b36f5855aa00af48ee251bb178d6c824acee0695f1ef3f761cb0ea26807f38837bc70eb609e2cfe600240c82e91f661 + checksum: 10c0/8299e3437542129c2684b86f98408c690df27db4122a79edded4782cf04e755d6ecb05b1e812c81a34224a81e664303392d5f3c36f3d2d51fdc99bb91c881e9a languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-modules-umd@npm:7.16.5" +"@babel/plugin-transform-modules-umd@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-umd@npm:7.25.9" dependencies: - "@babel/helper-module-transforms": "npm:^7.16.5" - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ad8e69299e46f978b276769b2ea49631eecd022365764798906486c16a4a454b8d2a7e5d6056ac0525fd0160869ae948a564b231d72cd287fb67d6fa0d3f63d1 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.12.13" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/a519ff8276edd7783ec3ae97874d688eb4e1c48d206c167161525b6fbe3783448c4898f452682628dc1120af8246046ac3b0c90bce85ddbdf833372da2f1ca80 + checksum: 10c0/fa11a621f023e2ac437b71d5582f819e667c94306f022583d77da9a8f772c4128861a32bbb63bef5cba581a70cd7dbe87a37238edaafcfacf889470c395e7076 languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.16.5" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.16.0" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/87895bc8c0ffe926547f4abbe0d5f5e578dd237faeadc2d24c3eb43a4b6af3612bb3f5ed7b16666d58720058b4b2b9148a844b0373c0c4cfed84dab36f0784a6 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-new-target@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/6fd374379dee6430163b4e0ed7a4dc86343dd5e4dfb6b0310a3699cda7ae06193cd4b78a1d5c40395f20cecf235adc6d2377edf2eff69f598eaa73f2df08060c - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-new-target@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e22f2b7f684f425357a86b5640e7ad0382eaad58230eab9305274a9b88543bcb3c2c773e43763d2eae7033e9214400cb4ea32fb9462b252e9735e3bbfb3ed913 + checksum: 10c0/32b14fda5c885d1706863f8af2ee6c703d39264355b57482d3a24fce7f6afbd4c7a0896e501c0806ed2b0759beb621bf7f3f7de1fbbc82026039a98d961e78ef languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-object-super@npm:7.12.13" +"@babel/plugin-transform-new-target@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-new-target@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/helper-replace-supers": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ca75506af8890b5099f255902c1fd6e8b19f22056aa266dc9ca1e4703438c4bea4b5bd5cc14fbee85e48b32e575a9144ef0e4af9972fe7893ba66bc46096a03b + checksum: 10c0/7b5f1b7998f1cf183a7fa646346e2f3742e5805b609f28ad5fee22d666a15010f3e398b7e1ab78cddb7901841a3d3f47135929af23d54e8bf4ce69b72051f71e languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-object-super@npm:7.16.5" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/helper-replace-supers": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b74c5b9a5ac15a2c083459011dcd74fb0f8ab25ced64384c8d66ade87e64ffe5adb712e86232b8b36b00e58c392694c050866412325bcc5ab89f2f61cc83b6fd + checksum: 10c0/eb623db5be078a1c974afe7c7797b0309ba2ea9e9237c0b6831ade0f56d8248bb4ab3432ab34495ff8c877ec2fe412ff779d1e9b3c2b8139da18e1753d950bc3 languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-parameters@npm:7.12.13" +"@babel/plugin-transform-numeric-separator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f1e6c1b5a0337718d326dfa55f853ab4d5844a0d435536d395355b85ad6563e7a5e4d8a1a24d952cc25c15c8938cce8d8cfea1ac70ff03b6fa32a1b78877257e + checksum: 10c0/ad63ad341977844b6f9535fcca15ca0d6d6ad112ed9cc509d4f6b75e9bf4b1b1a96a0bcb1986421a601505d34025373608b5f76d420d924b4e21f86b1a1f2749 languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-parameters@npm:7.16.5" +"@babel/plugin-transform-object-rest-spread@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-transform-parameters": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/6ee9e262ed80258163c7fb24c95277cf09ba519f54ab9b75fbe76d531406b160e542de3eb801e03a0c1ded5a948d0c9c6f89e7e7568dfa23dc8f870aba2ccd12 + checksum: 10c0/02077d8abd83bf6a48ff0b59e98d7561407cf75b591cffd3fdc5dc5e9a13dec1c847a7a690983762a3afecddb244831e897e0515c293e7c653b262c30cd614af languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-property-literals@npm:7.12.13" +"@babel/plugin-transform-object-super@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-object-super@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a9115ed5633d26ab7cc852093012e3dd209d205f2568431cea157ea4aa30c622717b1a0870a8eedeb1d15835b59dfeec272080d7f9de6f013bf2a69e8f410113 + checksum: 10c0/0348d00e76f1f15ada44481a76e8c923d24cba91f6e49ee9b30d6861eb75344e7f84d62a18df8a6f9e9a7eacf992f388174b7f9cc4ce48287bcefca268c07600 languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-property-literals@npm:7.16.5" +"@babel/plugin-transform-optional-catch-binding@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/53ce2d53349fa9582a0cca6f1e96c2eb61e27354c2d62b08aef8938c09aa7486082c81509b6e3ba9fd922168aec479fcbbefbd24640a7e7abe6ee997a5daddb1 + checksum: 10c0/722fd5ee12ab905309d4e84421584fce4b6d9e6b639b06afb20b23fa809e6ab251e908a8d5e8b14d066a28186b8ef8f58d69fd6eca9ce1b9ef7af08333378f6c languageName: node linkType: hard -"@babel/plugin-transform-react-constant-elements@npm:^7.12.1": - version: 7.12.13 - resolution: "@babel/plugin-transform-react-constant-elements@npm:7.12.13" +"@babel/plugin-transform-optional-chaining@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/32a4a296900347011174115317e2e76fd8613b92b2c6fd5d73e5bc59d68d4e192ab087ca618ee58788607a827a0bb70b72cad53b47f825e0e8ba1da517cccced + checksum: 10c0/041ad2beae5affb8e68a0bcb6882a2dadb758db3c629a0e012f57488ab43a822ac1ea17a29db8ef36560a28262a5dfa4dbbbf06ed6e431db55abe024b7cd3961 languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-react-display-name@npm:7.12.13" +"@babel/plugin-transform-parameters@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-parameters@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/727963c7b50ceb66405db4dd2946ef790ffe1adfddab42255acb1ada157dbf8bc700f67e10fdd9a1196789c92591f3241588d72aa04b4d5e2de6df1bbe2acabb + checksum: 10c0/aecb446754b9e09d6b6fa95fd09e7cf682f8aaeed1d972874ba24c0a30a7e803ad5f014bb1fffc7bfeed22f93c0d200947407894ea59bf7687816f2f464f8df3 languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.16.0, @babel/plugin-transform-react-display-name@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-react-display-name@npm:7.16.5" +"@babel/plugin-transform-private-methods@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/9bac96c297dd922ae3a2cde3319c54986f82408edb07496f3870dfa44e3b4e588fe9f82a8764b372df2252078a664c3975cfc0053a246f136a1c7892654f94e3 + checksum: 10c0/64bd71de93d39daefa3e6c878d6f2fd238ed7d4ecfb13b0e771ddbbc131487def3ceb405b62b534a5cbb5043046b504e1b189b0a45229cc75af979a9fbcaa7bd languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.12.12": - version: 7.12.12 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.12.12" +"@babel/plugin-transform-private-property-in-object@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.9" dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.12.12" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c08bfc1f5ee4ddac7ed53de2daa7417459e2301e3b6e260d01a7400ea94202cc9b12a5f5c9a0ec570490d271f19be654669e4d0eecfebbd77a97394d8496db35 + checksum: 10c0/d4965de19d9f204e692cc74dbc39f0bb469e5f29df96dd4457ea23c5e5596fba9d5af76eaa96f9d48a9fc20ec5f12a94c679285e36b8373406868ea228109e27 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.16.5" +"@babel/plugin-transform-property-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-property-literals@npm:7.25.9" dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/49082995b21721946f861869af0d27cf54cc9e804fe17e57a111e87b45faf956082fbfbd2fac302499c81cd3a00a49a7da3bdeeb8b20cb6c909cbb3105e1ed33 + checksum: 10c0/1639e35b2438ccf3107af760d34e6a8e4f9acdd3ae6186ae771a6e3029bd59dfe778e502d67090f1185ecda5c16addfed77561e39c518a3f51ff10d41790e106 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.12.12, @babel/plugin-transform-react-jsx@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-react-jsx@npm:7.12.13" +"@babel/plugin-transform-react-constant-elements@npm:^7.12.1": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-constant-elements@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.12.13" - "@babel/helper-module-imports": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/plugin-syntax-jsx": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/44db82b57fa3513f13a196e2525e1a9ec46e786856a4f579a364a04c936994f34117cd0e72f16b81451529e05d3fd823850c5d33ee2aa8f434a178eb5772bc46 + checksum: 10c0/50aca3df122cf801abd251cc2507ef3011ead8f047d31d8f35b10627dd722f6a165245b09e81b3c6876515fd266a97aed0052f6b409aa1fe961fb36dd7cc0822 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-react-jsx@npm:7.16.5" +"@babel/plugin-transform-react-display-name@npm:^7.16.0, @babel/plugin-transform-react-display-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-display-name@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.0" - "@babel/helper-module-imports": "npm:^7.16.0" - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/plugin-syntax-jsx": "npm:^7.16.5" - "@babel/types": "npm:^7.16.0" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ed711914aa3570759441c2b81bb90323bbbff0699af691d597fda95ccbb47a4e3b9304ed6bf2aa2146a8131442e9efeeed5f5080eb8733689f9608b24c109a03 + checksum: 10c0/63a0f962d64e71baf87c212755419e25c637d2d95ea6fdc067df26b91e606ae186442ae815b99a577eca9bf5404d9577ecad218a3cf42d0e9e286ca7b003a992 languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.12.1": - version: 7.12.1 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.12.1" +"@babel/plugin-transform-react-jsx-development@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.10.4" - "@babel/helper-plugin-utils": "npm:^7.10.4" + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/706386f5e21ce66dafc375ad1815284ddd74d4dbc41726419b7ba7565a7fa1c9269135cd955bfe15fb0c8aa9ab609967354a8455b9c0caf48dfaf7966965ba94 + checksum: 10c0/c0b92ff9eb029620abf320ff74aae182cea87524723d740fb48a4373d0d16bddf5edbe1116e7ba341332a5337e55c2ceaee8b8cad5549e78af7f4b3cfe77debb languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.16.5" +"@babel/plugin-transform-react-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.0" - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b80ad6738389f9a1bfcc949c66b721262e1388dacc6f07dbc1975065c3bea1a5c9265ea3d2d13b9a5a030fe193ca305fd61a62ee16d068b19e8898ea0398c483 + checksum: 10c0/5c9947e8ed141f7606f54da3e05eea1074950c5b8354c39df69cb7f43cb5a83c6c9d7973b24bc3d89341c8611f8ad50830a98ab10d117d850e6bdd8febdce221 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-regenerator@npm:7.12.13" +"@babel/plugin-transform-react-pure-annotations@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.9" dependencies: - regenerator-transform: "npm:^0.14.2" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/9f55d77e9c88977de319fc53244f393324b3e50c3002b7c66497ebe4935ab14fd33a46c63576e86fad8bd3f0548fee0142817a02b8cc93a902870ba21c039d1f + checksum: 10c0/7c8eac04644ad19dcd71bb8e949b0ae22b9e548fa4a58e545d3d0342f647fb89db7f8789a7c5b8074d478ce6d3d581eaf47dd4b36027e16fd68211c383839abc languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.16.5" +"@babel/plugin-transform-regenerator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-regenerator@npm:7.25.9" dependencies: - regenerator-transform: "npm:^0.14.2" + "@babel/helper-plugin-utils": "npm:^7.25.9" + regenerator-transform: "npm:^0.15.2" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e411aea285c0d2d70cde1e69da1b3b5b307f3645fc48035ab7d0af8d80a668a63fa4bfeb55b388f0fdd9b1ae17413bdba76a951f4385d55ff96ddfef996801c7 + checksum: 10c0/eef3ffc19f7d291b863635f32b896ad7f87806d9219a0d3404a470219abcfc5b43aabecd691026c48e875b965760d9c16abee25e6447272233f30cd07f453ec7 languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-reserved-words@npm:7.12.13" +"@babel/plugin-transform-regexp-modifiers@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.26.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/681f4a5e735d2db25ab83dda5957630a40767e4a5f736d60af2d926fb65721c96f26e48071010dadacd5811f879454a5db555ff767c7b1fea761e7da30fc160e + "@babel/core": ^7.0.0 + checksum: 10c0/4abc1db6c964efafc7a927cda814c7275275afa4b530483e0936fd614de23cb5802f7ca43edaa402008a723d4e7eac282b6f5283aa2eeb3b27da6d6c1dd7f8ed languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-reserved-words@npm:7.16.5" +"@babel/plugin-transform-reserved-words@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-reserved-words@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/831f9b600392f8b92696c2b1c62784ce3a0c1d3a88427de6091f239368fa01f64983a7d3a9ae5689cd5adcf953cb333afa851ad3a4a492f71683685127bf4032 + checksum: 10c0/8b028b80d1983e3e02f74e21924323cc66ba930e5c5758909a122aa7d80e341b8b0f42e1698e42b50d47a6ba911332f584200b28e1a4e2104b7514d9dc011e96 languageName: node linkType: hard "@babel/plugin-transform-runtime@npm:^7.16.4": - version: 7.16.5 - resolution: "@babel/plugin-transform-runtime@npm:7.16.5" - dependencies: - "@babel/helper-module-imports": "npm:^7.16.0" - "@babel/helper-plugin-utils": "npm:^7.16.5" - babel-plugin-polyfill-corejs2: "npm:^0.3.0" - babel-plugin-polyfill-corejs3: "npm:^0.4.0" - babel-plugin-polyfill-regenerator: "npm:^0.3.0" - semver: "npm:^6.3.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/d9c04311d5ac8b35315aedabbb5e734a2462e6f17d97baed8b6e4952e0eaba6a3a49565aa6c74ff37c8b8a812c9ea33d0e7f603ec97c186cb1db072e7e82721e - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/0d1bb477087570fc64458254b6bcaf3eb448138682ee4a136a382005531d3f89784148b11fa5240e581e9c9f9de74f5aebd377609f42bfb379429358870b343a - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/949d0f0f63e5ae79ce3f3af7c6581c77b61ee00a299435e2dc2553488bac262cd4a0a084fdf2f6c7966a05b4d211b2dec3692f59ace02a0f60e5f7584a03b086 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-spread@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.12.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/86feb3e02382873ec888b42e9f2b1b88fa4f9f847e88e83d4812702459fc6db8db527a6417dae16062ce08ca052b9cf1be3daa39f5536b662a242692ffc28a72 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-spread@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.16.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/774d50c801e9d1256fefc7569a9ef9b0140875a5ef234ce2d26927d9d76623f8032dc2d43b938769a2af7b9074b19a92cf606ffeae2a35c41e90c1dd7ab98a92 - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/065f712e0781fe9ed772dbe84d179af8e89f84ce04d719ace31519b793dde6418da2c3626b714b38985d99978445c153eede8c61e8181b33c15fea28db1113a6 - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.16.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + version: 7.25.9 + resolution: "@babel/plugin-transform-runtime@npm:7.25.9" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + babel-plugin-polyfill-corejs2: "npm:^0.4.10" + babel-plugin-polyfill-corejs3: "npm:^0.10.6" + babel-plugin-polyfill-regenerator: "npm:^0.6.1" + semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/0dcff0bcec56ce02f8448b5743674dac58b13839bdaa252da676c8679b8b054833e7695f2cc8faf8b9a327b078b4735c1a364f3383510dc6ab535d5719efdfed + checksum: 10c0/888a4998ba0a2313de347954c9a8dfeccbff0633c69d33aee385b8878eba2b429dbfb00c3cc04f6bca454b9be8afa01ebbd73defb7fbbb6e2d3086205c07758b languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-template-literals@npm:7.12.13" +"@babel/plugin-transform-shorthand-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d1d606af570883b2a62908b5bd6204baa0a2d9869a92f28a236f295b982643b4930ce6f486ef115fc5584f0f49330ab99f13de9e4c296d3b0802b8cf308760e2 + checksum: 10c0/05a20d45f0fb62567644c507ccd4e379c1a74dacf887d2b2cac70247415e3f6d7d3bf4850c8b336053144715fedb6200fc38f7130c4b76c94eec9b9c0c2a8e9b languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-template-literals@npm:7.16.5" +"@babel/plugin-transform-spread@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-spread@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/937c08a62f3bca12e4ed4e0a24d33d8279c4d695688db9558436a4bd79943523e72eae96d0ab6fa7b83fe41f6b071011d4d32a4f1707164e8c1a15fee88dff10 + checksum: 10c0/996c8fed238efc30e0664f9f58bd7ec8c148f4659f84425f68923a094fe891245711d26eb10d1f815f50c124434e076e860dbe9662240844d1b77cd09907dcdf languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.12.13" +"@babel/plugin-transform-sticky-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1696a271b6c59c4ec2ce76f57937471b993d80d9207ef157b7c0caa995c4273eb803b4c7e8c4e86163a6ae0c6bb85b93485dd9c38abbed136884f321f9807384 + checksum: 10c0/e9612b0615dab4c4fba1c560769616a9bd7b9226c73191ef84b6c3ee185c8b719b4f887cdd8336a0a13400ce606ab4a0d33bc8fa6b4fcdb53e2896d07f2568f6 languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.16.5" +"@babel/plugin-transform-template-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-template-literals@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f1dca589937a4930a0548d34b91dacead21f45b310da4fdfd49c64d4119a2504186173d6bcf34c5c53daae32225b7acfaae0b1fd0adecc9ba54851d5c5451eaa + checksum: 10c0/5144da6036807bbd4e9d2a8b92ae67a759543929f34f4db9b463448a77298f4a40bf1e92e582db208fe08ee116224806a3bd0bed75d9da404fc2c0af9e6da540 languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.16.1": - version: 7.16.1 - resolution: "@babel/plugin-transform-typescript@npm:7.16.1" +"@babel/plugin-transform-typeof-symbol@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.25.9" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.16.0" - "@babel/helper-plugin-utils": "npm:^7.14.5" - "@babel/plugin-syntax-typescript": "npm:^7.16.0" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a450a28ff4b493b154cad96ab7aa1ba0c5ad44cf4fec0b5d825ef2fa19381077948ba0600a92dbc21a71d09c8b0d204d0422061499eb851b1e6a3d934bd87285 + checksum: 10c0/2b19fd88608589d9bc6b607ff17b06791d35c67ef3249f4659283454e6a9984241e3bd4c4eb72bb8b3d860a73223f3874558b861adb7314aa317c1c6a2f0cafb languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.12.13" +"@babel/plugin-transform-typescript@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-typescript@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/plugin-syntax-typescript": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7da5ed8222703c4d2ff07a6405ba67c8c7fa271a4a86749af3f228625b1ae7eb2c0ffebddebd72ee2a640a4729548c5576fb17883bad5af8c69a7bdef77b07ef + checksum: 10c0/c607ddb45f7e33cfcb928aad05cb1b18b1ecb564d2329d8f8e427f75192511aa821dee42d26871f1bdffbd883853e150ba81436664646c6e6b13063e65ce1475 languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.16.5" +"@babel/plugin-transform-unicode-escapes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1c6ea775c1f3ef2b648c6df96ee38cc0edd93a28b64a3fc2ba807e49d7066b1842a7165aac598da540fb1371e10f98a05e75e1472123c4e49af80cf6d45c6143 + checksum: 10c0/615c84d7c53e1575d54ba9257e753e0b98c5de1e3225237d92f55226eaab8eb5bceb74df43f50f4aa162b0bbcc934ed11feafe2b60b8ec4934ce340fad4b8828 languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.12.13" +"@babel/plugin-transform-unicode-property-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1b4ec3e89b7c16d3ab0ae687fb69194b28144c27a82dcaea1ff24c93387ece7d2a0017f45b49e3e376d13f1521a3556069f7aae36e08dfac6fe01518dba7092c + checksum: 10c0/1685836fc38af4344c3d2a9edbd46f7c7b28d369b63967d5b83f2f6849ec45b97223461cea3d14cc3f0be6ebb284938e637a5ca3955c0e79c873d62f593d615c languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.16.5": - version: 7.16.5 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.16.5" +"@babel/plugin-transform-unicode-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.16.0" - "@babel/helper-plugin-utils": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/8fde2ef28b3ae1146c447fad680a26cd62729ef687f9acd749a3c1c5f7d1ae502031dccdc2442d285d972c626b221498c29eb30910b057f332823657bd4240b1 - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.16.4": - version: 7.16.5 - resolution: "@babel/preset-env@npm:7.16.5" - dependencies: - "@babel/compat-data": "npm:^7.16.4" - "@babel/helper-compilation-targets": "npm:^7.16.3" - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/helper-validator-option": "npm:^7.14.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.16.2" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.16.0" - "@babel/plugin-proposal-async-generator-functions": "npm:^7.16.5" - "@babel/plugin-proposal-class-properties": "npm:^7.16.5" - "@babel/plugin-proposal-class-static-block": "npm:^7.16.5" - "@babel/plugin-proposal-dynamic-import": "npm:^7.16.5" - "@babel/plugin-proposal-export-namespace-from": "npm:^7.16.5" - "@babel/plugin-proposal-json-strings": "npm:^7.16.5" - "@babel/plugin-proposal-logical-assignment-operators": "npm:^7.16.5" - "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.16.5" - "@babel/plugin-proposal-numeric-separator": "npm:^7.16.5" - "@babel/plugin-proposal-object-rest-spread": "npm:^7.16.5" - "@babel/plugin-proposal-optional-catch-binding": "npm:^7.16.5" - "@babel/plugin-proposal-optional-chaining": "npm:^7.16.5" - "@babel/plugin-proposal-private-methods": "npm:^7.16.5" - "@babel/plugin-proposal-private-property-in-object": "npm:^7.16.5" - "@babel/plugin-proposal-unicode-property-regex": "npm:^7.16.5" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" - "@babel/plugin-transform-arrow-functions": "npm:^7.16.5" - "@babel/plugin-transform-async-to-generator": "npm:^7.16.5" - "@babel/plugin-transform-block-scoped-functions": "npm:^7.16.5" - "@babel/plugin-transform-block-scoping": "npm:^7.16.5" - "@babel/plugin-transform-classes": "npm:^7.16.5" - "@babel/plugin-transform-computed-properties": "npm:^7.16.5" - "@babel/plugin-transform-destructuring": "npm:^7.16.5" - "@babel/plugin-transform-dotall-regex": "npm:^7.16.5" - "@babel/plugin-transform-duplicate-keys": "npm:^7.16.5" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.16.5" - "@babel/plugin-transform-for-of": "npm:^7.16.5" - "@babel/plugin-transform-function-name": "npm:^7.16.5" - "@babel/plugin-transform-literals": "npm:^7.16.5" - "@babel/plugin-transform-member-expression-literals": "npm:^7.16.5" - "@babel/plugin-transform-modules-amd": "npm:^7.16.5" - "@babel/plugin-transform-modules-commonjs": "npm:^7.16.5" - "@babel/plugin-transform-modules-systemjs": "npm:^7.16.5" - "@babel/plugin-transform-modules-umd": "npm:^7.16.5" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.16.5" - "@babel/plugin-transform-new-target": "npm:^7.16.5" - "@babel/plugin-transform-object-super": "npm:^7.16.5" - "@babel/plugin-transform-parameters": "npm:^7.16.5" - "@babel/plugin-transform-property-literals": "npm:^7.16.5" - "@babel/plugin-transform-regenerator": "npm:^7.16.5" - "@babel/plugin-transform-reserved-words": "npm:^7.16.5" - "@babel/plugin-transform-shorthand-properties": "npm:^7.16.5" - "@babel/plugin-transform-spread": "npm:^7.16.5" - "@babel/plugin-transform-sticky-regex": "npm:^7.16.5" - "@babel/plugin-transform-template-literals": "npm:^7.16.5" - "@babel/plugin-transform-typeof-symbol": "npm:^7.16.5" - "@babel/plugin-transform-unicode-escapes": "npm:^7.16.5" - "@babel/plugin-transform-unicode-regex": "npm:^7.16.5" - "@babel/preset-modules": "npm:^0.1.5" - "@babel/types": "npm:^7.16.0" - babel-plugin-polyfill-corejs2: "npm:^0.3.0" - babel-plugin-polyfill-corejs3: "npm:^0.4.0" - babel-plugin-polyfill-regenerator: "npm:^0.3.0" - core-js-compat: "npm:^3.19.1" - semver: "npm:^6.3.0" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/bdcd686c647e599b5b0284fbbd2bc642478f60c73e840ebf81b2b4a3ccdde64040765db974cfc0781bac2d8ebb0fd90841a94da32cf93d21ef274259bf4b366b + checksum: 10c0/448004f978279e726af26acd54f63f9002c9e2582ecd70d1c5c4436f6de490fcd817afb60016d11c52f5ef17dbaac2590e8cc7bfaf4e91b58c452cf188c7920f languageName: node linkType: hard -"@babel/preset-env@npm:^7.12.1": - version: 7.12.13 - resolution: "@babel/preset-env@npm:7.12.13" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.9" dependencies: - "@babel/compat-data": "npm:^7.12.13" - "@babel/helper-compilation-targets": "npm:^7.12.13" - "@babel/helper-module-imports": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/helper-validator-option": "npm:^7.12.11" - "@babel/plugin-proposal-async-generator-functions": "npm:^7.12.13" - "@babel/plugin-proposal-class-properties": "npm:^7.12.13" - "@babel/plugin-proposal-dynamic-import": "npm:^7.12.1" - "@babel/plugin-proposal-export-namespace-from": "npm:^7.12.13" - "@babel/plugin-proposal-json-strings": "npm:^7.12.13" - "@babel/plugin-proposal-logical-assignment-operators": "npm:^7.12.13" - "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.12.13" - "@babel/plugin-proposal-numeric-separator": "npm:^7.12.13" - "@babel/plugin-proposal-object-rest-spread": "npm:^7.12.13" - "@babel/plugin-proposal-optional-catch-binding": "npm:^7.12.13" - "@babel/plugin-proposal-optional-chaining": "npm:^7.12.13" - "@babel/plugin-proposal-private-methods": "npm:^7.12.13" - "@babel/plugin-proposal-unicode-property-regex": "npm:^7.12.13" - "@babel/plugin-syntax-async-generators": "npm:^7.8.0" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.0" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - "@babel/plugin-syntax-json-strings": "npm:^7.8.0" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.0" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.0" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.0" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.0" - "@babel/plugin-syntax-top-level-await": "npm:^7.12.13" - "@babel/plugin-transform-arrow-functions": "npm:^7.12.13" - "@babel/plugin-transform-async-to-generator": "npm:^7.12.13" - "@babel/plugin-transform-block-scoped-functions": "npm:^7.12.13" - "@babel/plugin-transform-block-scoping": "npm:^7.12.13" - "@babel/plugin-transform-classes": "npm:^7.12.13" - "@babel/plugin-transform-computed-properties": "npm:^7.12.13" - "@babel/plugin-transform-destructuring": "npm:^7.12.13" - "@babel/plugin-transform-dotall-regex": "npm:^7.12.13" - "@babel/plugin-transform-duplicate-keys": "npm:^7.12.13" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.12.13" - "@babel/plugin-transform-for-of": "npm:^7.12.13" - "@babel/plugin-transform-function-name": "npm:^7.12.13" - "@babel/plugin-transform-literals": "npm:^7.12.13" - "@babel/plugin-transform-member-expression-literals": "npm:^7.12.13" - "@babel/plugin-transform-modules-amd": "npm:^7.12.13" - "@babel/plugin-transform-modules-commonjs": "npm:^7.12.13" - "@babel/plugin-transform-modules-systemjs": "npm:^7.12.13" - "@babel/plugin-transform-modules-umd": "npm:^7.12.13" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.12.13" - "@babel/plugin-transform-new-target": "npm:^7.12.13" - "@babel/plugin-transform-object-super": "npm:^7.12.13" - "@babel/plugin-transform-parameters": "npm:^7.12.13" - "@babel/plugin-transform-property-literals": "npm:^7.12.13" - "@babel/plugin-transform-regenerator": "npm:^7.12.13" - "@babel/plugin-transform-reserved-words": "npm:^7.12.13" - "@babel/plugin-transform-shorthand-properties": "npm:^7.12.13" - "@babel/plugin-transform-spread": "npm:^7.12.13" - "@babel/plugin-transform-sticky-regex": "npm:^7.12.13" - "@babel/plugin-transform-template-literals": "npm:^7.12.13" - "@babel/plugin-transform-typeof-symbol": "npm:^7.12.13" - "@babel/plugin-transform-unicode-escapes": "npm:^7.12.13" - "@babel/plugin-transform-unicode-regex": "npm:^7.12.13" - "@babel/preset-modules": "npm:^0.1.3" - "@babel/types": "npm:^7.12.13" - core-js-compat: "npm:^3.8.0" - semver: "npm:^5.5.0" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/56ee04fbe236b77cbcd6035cbf0be7566d1386b8349154ac33244c25f61170c47153a9423cd1d92855f7d6447b53a4a653d9e8fd1eaeeee14feb4b2baf59bd9f + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.16.4": + version: 7.26.0 + resolution: "@babel/preset-env@npm:7.26.0" + dependencies: + "@babel/compat-data": "npm:^7.26.0" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.9" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions": "npm:^7.26.0" + "@babel/plugin-syntax-import-attributes": "npm:^7.26.0" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.25.9" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.9" + "@babel/plugin-transform-async-to-generator": "npm:^7.25.9" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.25.9" + "@babel/plugin-transform-block-scoping": "npm:^7.25.9" + "@babel/plugin-transform-class-properties": "npm:^7.25.9" + "@babel/plugin-transform-class-static-block": "npm:^7.26.0" + "@babel/plugin-transform-classes": "npm:^7.25.9" + "@babel/plugin-transform-computed-properties": "npm:^7.25.9" + "@babel/plugin-transform-destructuring": "npm:^7.25.9" + "@babel/plugin-transform-dotall-regex": "npm:^7.25.9" + "@babel/plugin-transform-duplicate-keys": "npm:^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.9" + "@babel/plugin-transform-dynamic-import": "npm:^7.25.9" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.25.9" + "@babel/plugin-transform-export-namespace-from": "npm:^7.25.9" + "@babel/plugin-transform-for-of": "npm:^7.25.9" + "@babel/plugin-transform-function-name": "npm:^7.25.9" + "@babel/plugin-transform-json-strings": "npm:^7.25.9" + "@babel/plugin-transform-literals": "npm:^7.25.9" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.9" + "@babel/plugin-transform-member-expression-literals": "npm:^7.25.9" + "@babel/plugin-transform-modules-amd": "npm:^7.25.9" + "@babel/plugin-transform-modules-commonjs": "npm:^7.25.9" + "@babel/plugin-transform-modules-systemjs": "npm:^7.25.9" + "@babel/plugin-transform-modules-umd": "npm:^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.25.9" + "@babel/plugin-transform-new-target": "npm:^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.25.9" + "@babel/plugin-transform-numeric-separator": "npm:^7.25.9" + "@babel/plugin-transform-object-rest-spread": "npm:^7.25.9" + "@babel/plugin-transform-object-super": "npm:^7.25.9" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.25.9" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.9" + "@babel/plugin-transform-parameters": "npm:^7.25.9" + "@babel/plugin-transform-private-methods": "npm:^7.25.9" + "@babel/plugin-transform-private-property-in-object": "npm:^7.25.9" + "@babel/plugin-transform-property-literals": "npm:^7.25.9" + "@babel/plugin-transform-regenerator": "npm:^7.25.9" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.26.0" + "@babel/plugin-transform-reserved-words": "npm:^7.25.9" + "@babel/plugin-transform-shorthand-properties": "npm:^7.25.9" + "@babel/plugin-transform-spread": "npm:^7.25.9" + "@babel/plugin-transform-sticky-regex": "npm:^7.25.9" + "@babel/plugin-transform-template-literals": "npm:^7.25.9" + "@babel/plugin-transform-typeof-symbol": "npm:^7.25.9" + "@babel/plugin-transform-unicode-escapes": "npm:^7.25.9" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.25.9" + "@babel/plugin-transform-unicode-regex": "npm:^7.25.9" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.25.9" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.10" + babel-plugin-polyfill-corejs3: "npm:^0.10.6" + babel-plugin-polyfill-regenerator: "npm:^0.6.1" + core-js-compat: "npm:^3.38.1" + semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8950d6cfbad4230ccd548c03c790798ec0cac6749dbb21ecc816de501470926920701a23685d05c37592de6bd1d2791ca1f2e62c4ce9d3ff8650c3db0d1e559a + checksum: 10c0/26e19dc407cfa1c5166be638b4c54239d084fe15d8d7e6306d8c6dc7bc1decc51070a8dcf28352c1a2feeefbe52a06d193a12e302327ad5f529583df75fb7a26 languageName: node linkType: hard -"@babel/preset-modules@npm:^0.1.3": - version: 0.1.4 - resolution: "@babel/preset-modules@npm:0.1.4" +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" dependencies: "@babel/helper-plugin-utils": "npm:^7.0.0" - "@babel/plugin-proposal-unicode-property-regex": "npm:^7.4.4" - "@babel/plugin-transform-dotall-regex": "npm:^7.4.4" "@babel/types": "npm:^7.4.4" esutils: "npm:^2.0.2" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/3f2fed853d1c1c29dddf851b98228a8f755d099352d08c841ae5a86e71086138b10b2cc533bfe871bab5632ee3ea41c82690b1e62617d17ee3b3272be3ec3f8d + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 languageName: node linkType: hard -"@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" +"@babel/preset-react@npm:^7.12.5, @babel/preset-react@npm:^7.16.0": + version: 7.25.9 + resolution: "@babel/preset-react@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@babel/plugin-proposal-unicode-property-regex": "npm:^7.4.4" - "@babel/plugin-transform-dotall-regex": "npm:^7.4.4" - "@babel/types": "npm:^7.4.4" - esutils: "npm:^2.0.2" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-transform-react-display-name": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx-development": "npm:^7.25.9" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/bd90081d96b746c1940dc1ce056dee06ed3a128d20936aee1d1795199f789f9a61293ef738343ae10c6d53970c17285d5e147a945dded35423aacb75083b8a89 + checksum: 10c0/c294b475ee741f01f63ea0d828862811c453fabc6023f01814ce983bc316388e9d73290164d2b1384c2684db9c330803a3d4d2170285b105dcbacd483329eb93 languageName: node linkType: hard -"@babel/preset-react@npm:^7.12.5": - version: 7.12.13 - resolution: "@babel/preset-react@npm:7.12.13" +"@babel/preset-typescript@npm:^7.16.0": + version: 7.26.0 + resolution: "@babel/preset-typescript@npm:7.26.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/plugin-transform-react-display-name": "npm:^7.12.13" - "@babel/plugin-transform-react-jsx": "npm:^7.12.13" - "@babel/plugin-transform-react-jsx-development": "npm:^7.12.12" - "@babel/plugin-transform-react-pure-annotations": "npm:^7.12.1" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/plugin-transform-modules-commonjs": "npm:^7.25.9" + "@babel/plugin-transform-typescript": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7638b08c5704ee7524509fb7edb3ecccf5c82a4d54f5c52320bfec5f774431ce941bc4e64e082184ae8c92ca848100f9ee5f0e135c45b6e763a124026289e678 + checksum: 10c0/20d86bc45d2bbfde2f84fc7d7b38746fa6481d4bde6643039ad4b1ff0b804c6d210ee43e6830effd8571f2ff43fa7ffd27369f42f2b3a2518bb92dc86c780c61 languageName: node linkType: hard -"@babel/preset-react@npm:^7.16.0": - version: 7.16.5 - resolution: "@babel/preset-react@npm:7.16.5" +"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7": + version: 7.26.0 + resolution: "@babel/runtime@npm:7.26.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/helper-validator-option": "npm:^7.14.5" - "@babel/plugin-transform-react-display-name": "npm:^7.16.5" - "@babel/plugin-transform-react-jsx": "npm:^7.16.5" - "@babel/plugin-transform-react-jsx-development": "npm:^7.16.5" - "@babel/plugin-transform-react-pure-annotations": "npm:^7.16.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/3d3d6c1f8bbfc043612ee6c9b186cd216d525347757a311d0553b61fd423bed96969d45615e0566ecaf923b5a62dad73a06333efda890a50083c6670e6f19d3d + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/12c01357e0345f89f4f7e8c0e81921f2a3e3e101f06e8eaa18a382b517376520cd2fa8c237726eb094dab25532855df28a7baaf1c26342b52782f6936b07c287 languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.16.0": - version: 7.16.5 - resolution: "@babel/preset-typescript@npm:7.16.5" +"@babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.5" - "@babel/helper-validator-option": "npm:^7.14.5" - "@babel/plugin-transform-typescript": "npm:^7.16.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/1a6defa6eb7c053c51f0b2c36bde8a0ade0ae0edee4dca0290eed2ad6da4c1ecbb749f1b3ca20c0fbfaca4849bfb4094ca5161f3b8f236e793596a59c45d6eb7 + "@babel/code-frame": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/ebe677273f96a36c92cc15b7aa7b11cc8bc8a3bb7a01d55b2125baca8f19cae94ff3ce15f1b1880fb8437f3a690d9f89d4e91f16fc1dc4d3eb66226d128983ab languageName: node linkType: hard -"@babel/runtime-corejs3@npm:^7.10.2": - version: 7.12.13 - resolution: "@babel/runtime-corejs3@npm:7.12.13" +"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/traverse@npm:7.25.9" dependencies: - core-js-pure: "npm:^3.0.0" - regenerator-runtime: "npm:^0.13.4" - checksum: 10c0/8e85e4276ee5cde7c5403f206cb56db126f5ab1f2986dee05286f4c54edc1728a425cd535fa185743ec0409ae00ba2ddb47c770dca8def592742188bd75ae2dd + "@babel/code-frame": "npm:^7.25.9" + "@babel/generator": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/e90be586a714da4adb80e6cb6a3c5cfcaa9b28148abdafb065e34cc109676fc3db22cf98cd2b2fff66ffb9b50c0ef882cab0f466b6844be0f6c637b82719bba1 languageName: node linkType: hard -"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4": - version: 7.12.13 - resolution: "@babel/runtime@npm:7.12.13" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.26.0 + resolution: "@babel/types@npm:7.26.0" dependencies: - regenerator-runtime: "npm:^0.13.4" - checksum: 10c0/ad0989cd0b3448919f8cc7e557ac53861b08c258de46971b12e8216d23078472f4021d20c174a1306c91c367f77927fa5b2ef25a9141bf6577e259a70a92f0c7 + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10c0/b694f41ad1597127e16024d766c33a641508aad037abd08d0d1f73af753e1119fa03b4a107d04b5f92cc19c095a594660547ae9bead1db2299212d644b0a5cb8 languageName: node linkType: hard -"@babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.8.7": - version: 7.16.7 - resolution: "@babel/runtime@npm:7.16.7" - dependencies: - regenerator-runtime: "npm:^0.13.4" - checksum: 10c0/db68a6cd665930288d8fc96e751932413246eb72e71aa2f16376553eb6ed64db469bf462eb9fa137bda3109f181cab74ae136505fa4cca464674a1a1ab9c2fea +"@base2/pretty-print-object@npm:1.0.1": + version: 1.0.1 + resolution: "@base2/pretty-print-object@npm:1.0.1" + checksum: 10c0/98f77ea185a30c854897feb2a68fe51be8451a1a0b531bac61a5dd67033926a0ba0c9be6e0f819b8cb72ca349b3e7648bf81c12fd21df0b45219c75a3a75784b languageName: node linkType: hard -"@babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.3.1": - version: 7.13.10 - resolution: "@babel/runtime@npm:7.13.10" - dependencies: - regenerator-runtime: "npm:^0.13.4" - checksum: 10c0/bd016f13aa941a147aad60d7dbc49a1403717144146fc9d1d1a38660e0ca2d36740db6a540235e9c86de8e60e383abee3ef4e905094d96a7e9a4dbfe5788a37e +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 languageName: node linkType: hard -"@babel/runtime@npm:^7.16.3": - version: 7.16.5 - resolution: "@babel/runtime@npm:7.16.5" +"@chromatic-com/storybook@npm:2.0.1": + version: 2.0.1 + resolution: "@chromatic-com/storybook@npm:2.0.1" dependencies: - regenerator-runtime: "npm:^0.13.4" - checksum: 10c0/73bad69270f88e8ec27a3884f941c5e5391696904c7c62f5e28e5d2516831f65652b7c95c7690f1911bf1834e62680fbde2c2e895946a1421452422cd8db4ba0 + chromatic: "npm:^11.4.0" + filesize: "npm:^10.0.12" + jsonfile: "npm:^6.1.0" + react-confetti: "npm:^6.1.0" + strip-ansi: "npm:^7.1.0" + checksum: 10c0/d77c08b754c67e5ef24912b7cbef1cf71bf78f1918d4a5bc3bb2577f4bbe6a2d50cb89449cec501ed65f3b5f37868baf7c92f7831c526521398a7cd9ff6a6818 languageName: node linkType: hard -"@babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.7.2": - version: 7.17.9 - resolution: "@babel/runtime@npm:7.17.9" +"@craco/craco@npm:7.1.0": + version: 7.1.0 + resolution: "@craco/craco@npm:7.1.0" dependencies: - regenerator-runtime: "npm:^0.13.4" - checksum: 10c0/758ce8855a75408555ed9d196c82c86350257765095a5d3e05df35875d1b0cd42223c6f62356f000b1e1efe8e345d6312c60ae98e8727a2a49909a656f0fd805 + autoprefixer: "npm:^10.4.12" + cosmiconfig: "npm:^7.0.1" + cosmiconfig-typescript-loader: "npm:^1.0.0" + cross-spawn: "npm:^7.0.3" + lodash: "npm:^4.17.21" + semver: "npm:^7.3.7" + webpack-merge: "npm:^5.8.0" + peerDependencies: + react-scripts: ^5.0.0 + bin: + craco: dist/bin/craco.js + checksum: 10c0/cd9b2e49676e75b0776265acfb5d0f632547d2e3e5653b1de7972196e5c507e5105e231ae2444528857d9702368c2a316f5f48b2cf2209bd6cb643cc94c48ee4 languageName: node linkType: hard -"@babel/template@npm:^7.12.13, @babel/template@npm:^7.3.3": - version: 7.12.13 - resolution: "@babel/template@npm:7.12.13" +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@babel/parser": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" - checksum: 10c0/b89183826190cdb10e63e92ec98256cb79b7da459a176db313ffa691b6b10dada068b0eeef15c16d8964ba979aa203434351c5bb22e050a79bc617f430184600 + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 languageName: node linkType: hard -"@babel/template@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/template@npm:7.16.0" - dependencies: - "@babel/code-frame": "npm:^7.16.0" - "@babel/parser": "npm:^7.16.0" - "@babel/types": "npm:^7.16.0" - checksum: 10c0/24f65ebd01839e5e501cd74e5466ef5dc5066bfd36ff03c44eb33a0485fd2eccbb22745c2ed6fc9ffb65e279cfc7c8c438ae72ec1892a8a103eba36f823a8dff +"@csstools/normalize.css@npm:*": + version: 12.1.1 + resolution: "@csstools/normalize.css@npm:12.1.1" + checksum: 10c0/28fbba6cfd9aa71252001800decfd0f2dc4116fe57b52a2adcbe40733ada36fffc676a768a67fd9865d7b5b17d3e8456de1e642c3c5c9e06526fa3fe8ab5fec4 languageName: node linkType: hard -"@babel/template@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/template@npm:7.22.15" +"@csstools/postcss-cascade-layers@npm:^1.1.1": + version: 1.1.1 + resolution: "@csstools/postcss-cascade-layers@npm:1.1.1" dependencies: - "@babel/code-frame": "npm:^7.22.13" - "@babel/parser": "npm:^7.22.15" - "@babel/types": "npm:^7.22.15" - checksum: 10c0/9312edd37cf1311d738907003f2aa321a88a42ba223c69209abe4d7111db019d321805504f606c7fd75f21c6cf9d24d0a8223104cd21ebd207e241b6c551f454 + "@csstools/selector-specificity": "npm:^2.0.2" + postcss-selector-parser: "npm:^6.0.10" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/8dcfe748194c95b2bf24cb90845d3b1e7f9a3d831f76d5ce97188026a39bec28379a5672e62ab09e4e83b24dfb93e6d784d194e4fb9474c933f93ce131cae769 languageName: node linkType: hard -"@babel/template@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" +"@csstools/postcss-color-function@npm:^1.1.1": + version: 1.1.1 + resolution: "@csstools/postcss-color-function@npm:1.1.1" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10c0/4e31afd873215744c016e02b04f43b9fa23205d6d0766fb2e93eb4091c60c1b88897936adb895fb04e3c23de98dfdcbe31bc98daaa1a4e0133f78bb948e1209b + "@csstools/postcss-progressive-custom-properties": "npm:^1.1.0" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/802e23fc5ac38aed7366be2ffc3ae5572b45c82b31a0ced10a8fb8e69e7e15f6e975053ce54a6dabb6e56aa5d90a396d49c24eea5723165316acc9b3f988a085 languageName: node linkType: hard -"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.12.13, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.13.13, @babel/traverse@npm:^7.16.5, @babel/traverse@npm:^7.7.2": - version: 7.23.7 - resolution: "@babel/traverse@npm:7.23.7" +"@csstools/postcss-font-format-keywords@npm:^1.0.1": + version: 1.0.1 + resolution: "@csstools/postcss-font-format-keywords@npm:1.0.1" dependencies: - "@babel/code-frame": "npm:^7.23.5" - "@babel/generator": "npm:^7.23.6" - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-function-name": "npm:^7.23.0" - "@babel/helper-hoist-variables": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.23.6" - "@babel/types": "npm:^7.23.6" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10c0/e32fceb4249beec2bde83968ddffe17444221c1ee5cd18c543a2feaf94e3ca83f2a4dfbc2dcca87cf226e0105973e0fe3717063a21e982a9de9945615ab3f3f5 + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/bbd52500809ddc62fe5052d43f3353797d47608bab59e0f62da8165de33404ed047a024f190d69b22e1d4883a43e5a48af443c390010bcc1d58d880cc808715e languageName: node linkType: hard -"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.4": - version: 7.25.6 - resolution: "@babel/traverse@npm:7.25.6" +"@csstools/postcss-hwb-function@npm:^1.0.2": + version: 1.0.2 + resolution: "@csstools/postcss-hwb-function@npm:1.0.2" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.6" - "@babel/parser": "npm:^7.25.6" - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.6" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10c0/964304c6fa46bd705428ba380bf73177eeb481c3f26d82ea3d0661242b59e0dd4329d23886035e9ca9a4ceb565c03a76fd615109830687a27bcd350059d6377e + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/28dfbfc01b5b1d9dd33d2cc9c2ae9b57e73bdf90f2f698f786863c3e116145a1bbe4146b2db2fdfa470444cd8cc9cedac86cf893a9025a690a350a47a040107a languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.13, @babel/types@npm:^7.12.6, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.12.13 - resolution: "@babel/types@npm:7.12.13" +"@csstools/postcss-ic-unit@npm:^1.0.1": + version: 1.0.1 + resolution: "@csstools/postcss-ic-unit@npm:1.0.1" dependencies: - "@babel/helper-validator-identifier": "npm:^7.12.11" - lodash: "npm:^4.17.19" - to-fast-properties: "npm:^2.0.0" - checksum: 10c0/b65cafc0057c608bcbf98e9068f82378fe06765b8de581e4c8212350ede0e20f6884ecf38dafe1464b4ec0091575d7aa69df798b553e811db6cd40d60b616396 + "@csstools/postcss-progressive-custom-properties": "npm:^1.1.0" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/f12ee4c3e6858be4fdf3cad05013898b7b8e62122709ef62c3b236232b1181bd142e7f19460e968fd7759e6d10b113e82a87c206f5adcaaf5ef3acf1c446e5f8 languageName: node linkType: hard -"@babel/types@npm:^7.13.0, @babel/types@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/types@npm:7.13.12" +"@csstools/postcss-is-pseudo-class@npm:^2.0.7": + version: 2.0.7 + resolution: "@csstools/postcss-is-pseudo-class@npm:2.0.7" dependencies: - "@babel/helper-validator-identifier": "npm:^7.12.11" - lodash: "npm:^4.17.19" - to-fast-properties: "npm:^2.0.0" - checksum: 10c0/2341dc2e3d19a11e9d22ea0c877d66f684190e0ea577dab63d0a917e174aecd24b63d3ef196ff7372af659e3b7a149e1a3ecc17af455cfba79450b3c500c80a7 + "@csstools/selector-specificity": "npm:^2.0.0" + postcss-selector-parser: "npm:^6.0.10" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/7b0a511f6283b5a2c6f6fc2eecf08f7fbe3772c44cf3a2be327b41731aeafcc93cf7f2a4e01ff6dcb7c5fa88d941ae4b818f0ed2ec93f708d7efda5a3e5a8089 languageName: node linkType: hard -"@babel/types@npm:^7.13.14": - version: 7.13.14 - resolution: "@babel/types@npm:7.13.14" +"@csstools/postcss-nested-calc@npm:^1.0.0": + version: 1.0.0 + resolution: "@csstools/postcss-nested-calc@npm:1.0.0" dependencies: - "@babel/helper-validator-identifier": "npm:^7.12.11" - lodash: "npm:^4.17.19" - to-fast-properties: "npm:^2.0.0" - checksum: 10c0/560c6a1bf783e0fae0b8ea478145224df41fd620e0ca35bad1d8000ac6ef79549787d1213f7c8ef8e799d24e7f541a16378caa3a6bc4d78eb8c076c09f2e68dc + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/b737ed55581282c9c23b65e6b6fbc7be26f354f384c617f1f73cc252f5d9f4b3386f9b3eef5267efc84452c329895dd438864b6e4f46b0fc7d37045e00a4408c languageName: node linkType: hard -"@babel/types@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/types@npm:7.16.0" +"@csstools/postcss-normalize-display-values@npm:^1.0.1": + version: 1.0.1 + resolution: "@csstools/postcss-normalize-display-values@npm:1.0.1" dependencies: - "@babel/helper-validator-identifier": "npm:^7.15.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10c0/85109116bb5f8a5779b1ce900eb076c9035607cf354173eb9af8cfdaacc4892161f795fd062561f680ab4fd09f792db9529b4515e99c9ace2c844b21c9f5d2b0 + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/92361a0917b22f3d47c61706c4124560265d9b316b3d877ab2a759de9ae8fe4c50729cc79b99a81aa3a4b54e67d4acc7512c6d460bf308c2197acdc3e9f1287e languageName: node linkType: hard -"@babel/types@npm:^7.18.9, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6, @babel/types@npm:^7.8.3": - version: 7.25.6 - resolution: "@babel/types@npm:7.25.6" +"@csstools/postcss-oklab-function@npm:^1.1.1": + version: 1.1.1 + resolution: "@csstools/postcss-oklab-function@npm:1.1.1" dependencies: - "@babel/helper-string-parser": "npm:^7.24.8" - "@babel/helper-validator-identifier": "npm:^7.24.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10c0/89d45fbee24e27a05dca2d08300a26b905bd384a480448823f6723c72d3a30327c517476389b7280ce8cb9a2c48ef8f47da7f9f6d326faf6f53fd6b68237bdc4 + "@csstools/postcss-progressive-custom-properties": "npm:^1.1.0" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/f7a3734154bbe3658cee776417cadb99cedfe138b2c1893095a87694fce5498cb623c743cdd5eef933c450cfbba8961b3fa079ebcb5039636f81567deb9db5d5 languageName: node linkType: hard -"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/types@npm:7.23.6" +"@csstools/postcss-progressive-custom-properties@npm:^1.1.0, @csstools/postcss-progressive-custom-properties@npm:^1.3.0": + version: 1.3.0 + resolution: "@csstools/postcss-progressive-custom-properties@npm:1.3.0" dependencies: - "@babel/helper-string-parser": "npm:^7.23.4" - "@babel/helper-validator-identifier": "npm:^7.22.20" - to-fast-properties: "npm:^2.0.0" - checksum: 10c0/42cefce8a68bd09bb5828b4764aa5586c53c60128ac2ac012e23858e1c179347a4aac9c66fc577994fbf57595227611c5ec8270bf0cfc94ff033bbfac0550b70 + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.3 + checksum: 10c0/1910a564e433c7673ad9ceef04e08ec6ac91fa91b8e5b433d018c84983be341ba84232afcb8a4217fb7a31e3711f22115266bfe040efeb7d6ec2a314de826f7e languageName: node linkType: hard -"@base2/pretty-print-object@npm:1.0.1": +"@csstools/postcss-stepped-value-functions@npm:^1.0.1": version: 1.0.1 - resolution: "@base2/pretty-print-object@npm:1.0.1" - checksum: 10c0/98f77ea185a30c854897feb2a68fe51be8451a1a0b531bac61a5dd67033926a0ba0c9be6e0f819b8cb72ca349b3e7648bf81c12fd21df0b45219c75a3a75784b - languageName: node - linkType: hard - -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + resolution: "@csstools/postcss-stepped-value-functions@npm:1.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/ba04c94bf0b21616df278c317a047f809cfb855e4939f9511d82e80018386ccff1cef92c73c5382866491e7a1db61f7889703b97433381e882440c1f3668298a languageName: node linkType: hard -"@chromatic-com/storybook@npm:2.0.1": - version: 2.0.1 - resolution: "@chromatic-com/storybook@npm:2.0.1" +"@csstools/postcss-text-decoration-shorthand@npm:^1.0.0": + version: 1.0.0 + resolution: "@csstools/postcss-text-decoration-shorthand@npm:1.0.0" dependencies: - chromatic: "npm:^11.4.0" - filesize: "npm:^10.0.12" - jsonfile: "npm:^6.1.0" - react-confetti: "npm:^6.1.0" - strip-ansi: "npm:^7.1.0" - checksum: 10c0/d77c08b754c67e5ef24912b7cbef1cf71bf78f1918d4a5bc3bb2577f4bbe6a2d50cb89449cec501ed65f3b5f37868baf7c92f7831c526521398a7cd9ff6a6818 + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/1aadbc9d7966af0bc7d459cdf34d9814e721635210d1082df277ea623820d6119058d519f6f0f027ec03026793568c7c7adf831479faafc6ff8de76a3d866a31 languageName: node linkType: hard -"@craco/craco@npm:7.1.0": - version: 7.1.0 - resolution: "@craco/craco@npm:7.1.0" +"@csstools/postcss-trigonometric-functions@npm:^1.0.2": + version: 1.0.2 + resolution: "@csstools/postcss-trigonometric-functions@npm:1.0.2" dependencies: - autoprefixer: "npm:^10.4.12" - cosmiconfig: "npm:^7.0.1" - cosmiconfig-typescript-loader: "npm:^1.0.0" - cross-spawn: "npm:^7.0.3" - lodash: "npm:^4.17.21" - semver: "npm:^7.3.7" - webpack-merge: "npm:^5.8.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: - react-scripts: ^5.0.0 - bin: - craco: dist/bin/craco.js - checksum: 10c0/cd9b2e49676e75b0776265acfb5d0f632547d2e3e5653b1de7972196e5c507e5105e231ae2444528857d9702368c2a316f5f48b2cf2209bd6cb643cc94c48ee4 + postcss: ^8.2 + checksum: 10c0/a7ebc9a90b52089fbcf484d992beb2c881f1d9370450cf789e175c4682b4e9ae0c9c3879775b4f353a2a58f7f75462a8e3b6fb0a3fe9572aa52c85e99b4f94f4 languageName: node linkType: hard -"@cspotcode/source-map-consumer@npm:0.8.0": - version: 0.8.0 - resolution: "@cspotcode/source-map-consumer@npm:0.8.0" - checksum: 10c0/44428e50f896df065c3a22d6bddeac344f3e31af57cbc2ddf753a95addcabbe685d92e534f4dcde0cabbbcfbc122d1cb957785b36344d54c422b781a8d1a2a01 +"@csstools/postcss-unset-value@npm:^1.0.2": + version: 1.0.2 + resolution: "@csstools/postcss-unset-value@npm:1.0.2" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/43d656360ffda504f22f3470cd8c1826362e8938da8eea1c2878302b878d38305c48c31090455fe760f40386c10ccbe17e9a95d63fb4e7934c035e805b641e12 languageName: node linkType: hard -"@cspotcode/source-map-support@npm:0.7.0": - version: 0.7.0 - resolution: "@cspotcode/source-map-support@npm:0.7.0" - dependencies: - "@cspotcode/source-map-consumer": "npm:0.8.0" - checksum: 10c0/be290e5b9f49c1fa83997f80e02c29d5bece279fad08d8b7ee862c68aaf74be613cfcf396d19701273a5d47436f08905b36fdd286bef704767b493394a8ade39 +"@csstools/selector-specificity@npm:^2.0.0, @csstools/selector-specificity@npm:^2.0.2": + version: 2.2.0 + resolution: "@csstools/selector-specificity@npm:2.2.0" + peerDependencies: + postcss-selector-parser: ^6.0.10 + checksum: 10c0/d81c9b437f7d45ad0171e09240454ced439fa3e67576daae4ec7bb9c03e7a6061afeb0fa21d41f5f45d54bf8e242a7aa8101fbbba7ca7632dd847601468b5d9e languageName: node linkType: hard -"@csstools/normalize.css@npm:*": - version: 12.0.0 - resolution: "@csstools/normalize.css@npm:12.0.0" - checksum: 10c0/707e3699727dec0d28537a06d7340bcea844824dd704f8fee6e4a2bc08f3e0ed2b0d6f99ff20534a8632a6cd1dcd82d6c04c431bb1c6e396bfed0c4572ec724e +"@date-fns/tz@npm:^1.1.2": + version: 1.2.0 + resolution: "@date-fns/tz@npm:1.2.0" + checksum: 10c0/411e9d4303b10951f6fd0189d18fb845f0d934a575df2176bc10daf664282c765fb6b057a977e446bbb1229151d89e7788978600a019f1fc24b5c75276d496bd languageName: node linkType: hard -"@emotion/babel-plugin@npm:^11.7.1": - version: 11.9.2 - resolution: "@emotion/babel-plugin@npm:11.9.2" +"@emotion/babel-plugin@npm:^11.12.0": + version: 11.12.0 + resolution: "@emotion/babel-plugin@npm:11.12.0" dependencies: - "@babel/helper-module-imports": "npm:^7.12.13" - "@babel/plugin-syntax-jsx": "npm:^7.12.13" - "@babel/runtime": "npm:^7.13.10" - "@emotion/hash": "npm:^0.8.0" - "@emotion/memoize": "npm:^0.7.5" - "@emotion/serialize": "npm:^1.0.2" - babel-plugin-macros: "npm:^2.6.1" + "@babel/helper-module-imports": "npm:^7.16.7" + "@babel/runtime": "npm:^7.18.3" + "@emotion/hash": "npm:^0.9.2" + "@emotion/memoize": "npm:^0.9.0" + "@emotion/serialize": "npm:^1.2.0" + babel-plugin-macros: "npm:^3.1.0" convert-source-map: "npm:^1.5.0" escape-string-regexp: "npm:^4.0.0" find-root: "npm:^1.1.0" source-map: "npm:^0.5.7" - stylis: "npm:4.0.13" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/337d683a657f14fd9f30a50561794e9b7b986c4dfa3de4747defb38f7f352eedae56bf73b1ff6e315f05e938b7e6c11e100c3a1485722d9bcdc4018f32b9b9a1 + stylis: "npm:4.2.0" + checksum: 10c0/930ff6f8768b0c24d05896ad696be20e1c65f32ed61fb5c1488f571120a947ef0a2cf69187b17114cc76e7886f771fac150876ed7b5341324fec2377185d6573 languageName: node linkType: hard -"@emotion/cache@npm:^11.4.0, @emotion/cache@npm:^11.7.1": - version: 11.7.1 - resolution: "@emotion/cache@npm:11.7.1" +"@emotion/cache@npm:^11.13.0, @emotion/cache@npm:^11.4.0": + version: 11.13.1 + resolution: "@emotion/cache@npm:11.13.1" dependencies: - "@emotion/memoize": "npm:^0.7.4" - "@emotion/sheet": "npm:^1.1.0" - "@emotion/utils": "npm:^1.0.0" - "@emotion/weak-memoize": "npm:^0.2.5" - stylis: "npm:4.0.13" - checksum: 10c0/d7bf7827e683ba773a503fc9718effc66b1a0a069bd1c16546da178bc0e72e49706d66459e8d3ef13370f4a82e3078b9cf21991ceef6aecc1095e0afdfd737c6 + "@emotion/memoize": "npm:^0.9.0" + "@emotion/sheet": "npm:^1.4.0" + "@emotion/utils": "npm:^1.4.0" + "@emotion/weak-memoize": "npm:^0.4.0" + stylis: "npm:4.2.0" + checksum: 10c0/321e97d8980885737de13b47e41fd4febfbd83086f10c620f865fcbddb29b8fe198adec7e1c69cc7b137638ea9242d7c475c57f954f7ca229157fa92e368f473 languageName: node linkType: hard -"@emotion/hash@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/hash@npm:0.8.0" - checksum: 10c0/706303d35d416217cd7eb0d36dbda4627bb8bdf4a32ea387e8dd99be11b8e0a998e10af21216e8a5fade518ad955ff06aa8890f20e694ce3a038ae7fc1000556 +"@emotion/hash@npm:^0.9.2": + version: 0.9.2 + resolution: "@emotion/hash@npm:0.9.2" + checksum: 10c0/0dc254561a3cc0a06a10bbce7f6a997883fd240c8c1928b93713f803a2e9153a257a488537012efe89dbe1246f2abfe2add62cdb3471a13d67137fcb808e81c2 languageName: node linkType: hard -"@emotion/memoize@npm:^0.7.4, @emotion/memoize@npm:^0.7.5": - version: 0.7.5 - resolution: "@emotion/memoize@npm:0.7.5" - checksum: 10c0/28d061ec9fb9b8c495d58b4e2dcc62207d75d4e8d8f4e6a0b42342d6e7c649d41461e807363d1a0a2c33d2235f6ee59dd6394fbec88b7da65e3d5852fc34387e +"@emotion/memoize@npm:^0.9.0": + version: 0.9.0 + resolution: "@emotion/memoize@npm:0.9.0" + checksum: 10c0/13f474a9201c7f88b543e6ea42f55c04fb2fdc05e6c5a3108aced2f7e7aa7eda7794c56bba02985a46d8aaa914fcdde238727a98341a96e2aec750d372dadd15 languageName: node linkType: hard "@emotion/react@npm:^11.8.1": - version: 11.9.0 - resolution: "@emotion/react@npm:11.9.0" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@emotion/babel-plugin": "npm:^11.7.1" - "@emotion/cache": "npm:^11.7.1" - "@emotion/serialize": "npm:^1.0.3" - "@emotion/utils": "npm:^1.1.0" - "@emotion/weak-memoize": "npm:^0.2.5" + version: 11.13.3 + resolution: "@emotion/react@npm:11.13.3" + dependencies: + "@babel/runtime": "npm:^7.18.3" + "@emotion/babel-plugin": "npm:^11.12.0" + "@emotion/cache": "npm:^11.13.0" + "@emotion/serialize": "npm:^1.3.1" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.1.0" + "@emotion/utils": "npm:^1.4.0" + "@emotion/weak-memoize": "npm:^0.4.0" hoist-non-react-statics: "npm:^3.3.1" peerDependencies: - "@babel/core": ^7.0.0 react: ">=16.8.0" peerDependenciesMeta: - "@babel/core": - optional: true "@types/react": optional: true - checksum: 10c0/97e3a17c73d46c6379e09e8c8bbd01d2e829a7db22099412afb60377779fed9c9d37589c0b74998fe510f8d52f2520e834b6836237701fcb9513165ef18a76b2 - languageName: node - linkType: hard - -"@emotion/serialize@npm:^1.0.2": - version: 1.0.2 - resolution: "@emotion/serialize@npm:1.0.2" - dependencies: - "@emotion/hash": "npm:^0.8.0" - "@emotion/memoize": "npm:^0.7.4" - "@emotion/unitless": "npm:^0.7.5" - "@emotion/utils": "npm:^1.0.0" - csstype: "npm:^3.0.2" - checksum: 10c0/b29dbf33c1801d2aa039d355fa87bb921a8dd4dcecd9ef8cea0c1d7796d39ea137c913824b3173c7d3acd65ff2bb8bc6912095690a266c79696f5528c1a1c509 + checksum: 10c0/a55e770b9ea35de5d35db05a7ad40a4a3f442809fa8e4fabaf56da63ac9444f09aaf691c4e75a1455dc388991ab0c0ab4e253ce67c5836f27513e45ebd01b673 languageName: node linkType: hard -"@emotion/serialize@npm:^1.0.3": - version: 1.0.3 - resolution: "@emotion/serialize@npm:1.0.3" +"@emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.1": + version: 1.3.2 + resolution: "@emotion/serialize@npm:1.3.2" dependencies: - "@emotion/hash": "npm:^0.8.0" - "@emotion/memoize": "npm:^0.7.4" - "@emotion/unitless": "npm:^0.7.5" - "@emotion/utils": "npm:^1.0.0" + "@emotion/hash": "npm:^0.9.2" + "@emotion/memoize": "npm:^0.9.0" + "@emotion/unitless": "npm:^0.10.0" + "@emotion/utils": "npm:^1.4.1" csstype: "npm:^3.0.2" - checksum: 10c0/b5b156872eb1249ccb7bd3c24abfb458a573a03477ded6c9c933bcf0c18e69119db9df47e6bb0770cbbe647d6c8e7799f7a796830b63aa8b99cfe0af9b132a46 + checksum: 10c0/b4873b643721d28b4450f9d77b71e6c8d0109e6825c54fc79e649d2fa438fe4080d2fa696ec8fda421b8e713fcd42306d6197b6121ddd2486ffab8e4b6311ce0 languageName: node linkType: hard -"@emotion/sheet@npm:^1.1.0": - version: 1.1.0 - resolution: "@emotion/sheet@npm:1.1.0" - checksum: 10c0/5b13035550a08b5c94e24289eed44f1157cfbdc3465e6fe40c492dd113cc10270241f2d5e28b2ed95d4a6fd7b28e31b2d556a1f0fcd632f9e57fbb429870f2d1 +"@emotion/sheet@npm:^1.4.0": + version: 1.4.0 + resolution: "@emotion/sheet@npm:1.4.0" + checksum: 10c0/3ca72d1650a07d2fbb7e382761b130b4a887dcd04e6574b2d51ce578791240150d7072a9bcb4161933abbcd1e38b243a6fb4464a7fe991d700c17aa66bb5acc7 languageName: node linkType: hard -"@emotion/unitless@npm:^0.7.5": - version: 0.7.5 - resolution: "@emotion/unitless@npm:0.7.5" - checksum: 10c0/4d0d94f53cb97b4481bbfa394953e1899a0b877644642ba9dd7247c27eb8c48e14e22aeb11411d7d9874685ad85dd5fb5b50eb78c6d8840eb56a84b92dcef2f4 +"@emotion/unitless@npm:^0.10.0": + version: 0.10.0 + resolution: "@emotion/unitless@npm:0.10.0" + checksum: 10c0/150943192727b7650eb9a6851a98034ddb58a8b6958b37546080f794696141c3760966ac695ab9af97efe10178690987aee4791f9f0ad1ff76783cdca83c1d49 languageName: node linkType: hard -"@emotion/utils@npm:^1.0.0": - version: 1.0.0 - resolution: "@emotion/utils@npm:1.0.0" - checksum: 10c0/52b74082bccfc0d16e8c2c176c628a3cfd83a3d6261fbb201c7012249822840ae69dca1c6f99ba8fafee8cc80cf1a0868bb91b9f792c25e3f2d9e69afc92d71e +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.1.0": + version: 1.1.0 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.1.0" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/a883480f3a7139fb4a43e71d3114ca57e2b7ae5ff204e05cd9e59251a113773b8f64eb75d3997726250aca85eb73447638c8f51930734bdd16b96762b65e58c3 languageName: node linkType: hard -"@emotion/utils@npm:^1.1.0": - version: 1.1.0 - resolution: "@emotion/utils@npm:1.1.0" - checksum: 10c0/4659bb4c447fa8c5303fae5cae829c22ce29ba0d9e0a8fb1f3f33b8bfd9304a435af327abccbf133040eeb1771a572fad3e68decd267e26459b8ea6ea1f2ba68 +"@emotion/utils@npm:^1.4.0, @emotion/utils@npm:^1.4.1": + version: 1.4.1 + resolution: "@emotion/utils@npm:1.4.1" + checksum: 10c0/f4704e0bdf48062fd6eb9c64771c88f521aab1e108a48cb23d65b6438597c63a6945301cef4c43611e79e0e76a304ec5481c31025ea8f573d7ad5423d747602c languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.2.5": - version: 0.2.5 - resolution: "@emotion/weak-memoize@npm:0.2.5" - checksum: 10c0/cabfaaecabbb407d323098afc0bb2dd2ec9aaea0672f8f2c54b84b99d5f8cc680356cf166583fd5593330ceef29f2c26554c2c65dff06c0a8f5f8c7da69d89f1 +"@emotion/weak-memoize@npm:^0.4.0": + version: 0.4.0 + resolution: "@emotion/weak-memoize@npm:0.4.0" + checksum: 10c0/64376af11f1266042d03b3305c30b7502e6084868e33327e944b539091a472f089db307af69240f7188f8bc6b319276fd7b141a36613f1160d73d12a60f6ca1a languageName: node linkType: hard @@ -3531,49 +2103,112 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^1.0.5": - version: 1.0.5 - resolution: "@eslint/eslintrc@npm:1.0.5" +"@eslint-community/eslint-utils@npm:^4.2.0": + version: 4.4.1 + resolution: "@eslint-community/eslint-utils@npm:4.4.1" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/2aa0ac2fc50ff3f234408b10900ed4f1a0b19352f21346ad4cc3d83a1271481bdda11097baa45d484dd564c895e0762a27a8240be7a256b3ad47129e96528252 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" - espree: "npm:^9.2.0" - globals: "npm:^13.9.0" - ignore: "npm:^4.0.6" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" import-fresh: "npm:^3.2.1" js-yaml: "npm:^4.1.0" - minimatch: "npm:^3.0.4" + minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: 10c0/eef6b80afab34acd0728295ceeccba80906265926109447ef9380d8eb44d3ea529e3b42f646c43b7fa468552f04f093bc9a0a76667b9952c1b61c94b96250da7 + checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 languageName: node linkType: hard -"@floating-ui/core@npm:^1.0.1": - version: 1.0.1 - resolution: "@floating-ui/core@npm:1.0.1" - checksum: 10c0/c8b7c09b852e9b3422c5ff57f09cdaa0b40206ed147ab6721aa8ee2c4e88eab2e2a8f7d886d92df4ec08537d85b534aae19aa5eff1fa45dd80be885a435389b0 +"@eslint/js@npm:8.57.1": + version: 8.57.1 + resolution: "@eslint/js@npm:8.57.1" + checksum: 10c0/b489c474a3b5b54381c62e82b3f7f65f4b8a5eaaed126546520bf2fede5532a8ed53212919fed1e9048dcf7f37167c8561d58d0ba4492a4244004e7793805223 languageName: node linkType: hard -"@floating-ui/dom@npm:^1.0.1": - version: 1.0.3 - resolution: "@floating-ui/dom@npm:1.0.3" +"@floating-ui/core@npm:^1.6.0": + version: 1.6.8 + resolution: "@floating-ui/core@npm:1.6.8" + dependencies: + "@floating-ui/utils": "npm:^0.2.8" + checksum: 10c0/d6985462aeccae7b55a2d3f40571551c8c42bf820ae0a477fc40ef462e33edc4f3f5b7f11b100de77c9b58ecb581670c5c3f46d0af82b5e30aa185c735257eb9 + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.0.0, @floating-ui/dom@npm:^1.0.1": + version: 1.6.12 + resolution: "@floating-ui/dom@npm:1.6.12" + dependencies: + "@floating-ui/core": "npm:^1.6.0" + "@floating-ui/utils": "npm:^0.2.8" + checksum: 10c0/c67b39862175b175c6ac299ea970f17a22c7482cfdf3b1bc79313407bf0880188b022b878953fa69d3ce166ff2bd9ae57c86043e5dd800c262b470d877591b7d + languageName: node + linkType: hard + +"@floating-ui/react-dom@npm:^2.1.2": + version: 2.1.2 + resolution: "@floating-ui/react-dom@npm:2.1.2" + dependencies: + "@floating-ui/dom": "npm:^1.0.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10c0/e855131c74e68cab505f7f44f92cd4e2efab1c125796db3116c54c0859323adae4bf697bf292ee83ac77b9335a41ad67852193d7aeace90aa2e1c4a640cafa60 + languageName: node + linkType: hard + +"@floating-ui/react@npm:^0.26.16": + version: 0.26.27 + resolution: "@floating-ui/react@npm:0.26.27" dependencies: - "@floating-ui/core": "npm:^1.0.1" - checksum: 10c0/b1ccc5677a5945ab26ca334357678593444e40858a1c10e7a6e25b9a1af215e419dcd4fbc428387767278dc6191a6c5169806750e13b19f49dc09916256ff0dc + "@floating-ui/react-dom": "npm:^2.1.2" + "@floating-ui/utils": "npm:^0.2.8" + tabbable: "npm:^6.0.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10c0/6a27fadeb04862ecdb192f8e5428185ab0217b0c084e5464b2c218697f317a437dbfa47a7fb44332d505f047c17721e00f3705cb20e61b406117fea1ba2995b2 + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.2.8": + version: 0.2.8 + resolution: "@floating-ui/utils@npm:0.2.8" + checksum: 10c0/a8cee5f17406c900e1c3ef63e3ca89b35e7a2ed645418459a73627b93b7377477fc888081011c6cd177cac45ec2b92a6cab018c14ea140519465498dddd2d3f9 languageName: node linkType: hard -"@headlessui/react@npm:1.7.19": - version: 1.7.19 - resolution: "@headlessui/react@npm:1.7.19" +"@headlessui/react@npm:2.1.7": + version: 2.1.7 + resolution: "@headlessui/react@npm:2.1.7" dependencies: - "@tanstack/react-virtual": "npm:^3.0.0-beta.60" - client-only: "npm:^0.0.1" + "@floating-ui/react": "npm:^0.26.16" + "@react-aria/focus": "npm:^3.17.1" + "@react-aria/interactions": "npm:^3.21.3" + "@tanstack/react-virtual": "npm:^3.8.1" peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - checksum: 10c0/c0ece0db6ca15092439177a5322de50b60fa5fd90354ae0f999b3e56abab0065ed54fa7b4b69994ec1bdc23adc6ae9919d7dd57f97922d0b9bb6515d27e3a7e5 + react: ^18 + react-dom: ^18 + checksum: 10c0/45d4eb094ad5e9972919987a27e0b8ecad4394fd2d5320d1d2954bf30a0bf119a5b6fc410f2a3adad9791e545204b9bd9491f5f189c1ebcad5621b042501f086 languageName: node linkType: hard @@ -3586,21 +2221,28 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.9.2": - version: 0.9.2 - resolution: "@humanwhocodes/config-array@npm:0.9.2" +"@humanwhocodes/config-array@npm:^0.13.0": + version: 0.13.0 + resolution: "@humanwhocodes/config-array@npm:0.13.0" dependencies: - "@humanwhocodes/object-schema": "npm:^1.2.1" - debug: "npm:^4.1.1" - minimatch: "npm:^3.0.4" - checksum: 10c0/fa1656699b9e0dd27bad98205e327c95d94cec6f980de6f724c9c49ceb50a82c605242dfacbed95479c4b9d4a2c09bcc00514cf22cf3199d60a98b37b4f88892 + "@humanwhocodes/object-schema": "npm:^2.0.3" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: 10c0/205c99e756b759f92e1f44a3dc6292b37db199beacba8f26c2165d4051fe73a4ae52fdcfd08ffa93e7e5cb63da7c88648f0e84e197d154bbbbe137b2e0dd332e languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^1.2.1": - version: 1.2.1 - resolution: "@humanwhocodes/object-schema@npm:1.2.1" - checksum: 10c0/c3c35fdb70c04a569278351c75553e293ae339684ed75895edc79facc7276e351115786946658d78133130c0cca80e57e2203bc07f8fa7fe7980300e8deef7db +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.3": + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c languageName: node linkType: hard @@ -3632,54 +2274,68 @@ __metadata: linkType: hard "@istanbuljs/schema@npm:^0.1.2": - version: 0.1.2 - resolution: "@istanbuljs/schema@npm:0.1.2" - checksum: 10c0/0bd98d140df9afe03c1edc54f5172ec07c114cb1a8771e7be6d3d28dc76c5292eb31fb6cf1834c1eb786c35920687487b46f67736a6c79034bea3f2ca1a93aec + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@jest/console@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/console@npm:27.5.1" + dependencies: + "@jest/types": "npm:^27.5.1" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + jest-message-util: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + slash: "npm:^3.0.0" + checksum: 10c0/6cb46d721698aaeb0d57ace967f7a36bbefc20719d420ea8bf8ec8adf9994cb1ec11a93bbd9b1514c12a19b5dd99dcbbd1d3e22fd8bea8e41e845055b03ac18d languageName: node linkType: hard -"@jest/console@npm:^27.4.2": - version: 27.4.2 - resolution: "@jest/console@npm:27.4.2" +"@jest/console@npm:^28.1.3": + version: 28.1.3 + resolution: "@jest/console@npm:28.1.3" dependencies: - "@jest/types": "npm:^27.4.2" + "@jest/types": "npm:^28.1.3" "@types/node": "npm:*" chalk: "npm:^4.0.0" - jest-message-util: "npm:^27.4.2" - jest-util: "npm:^27.4.2" + jest-message-util: "npm:^28.1.3" + jest-util: "npm:^28.1.3" slash: "npm:^3.0.0" - checksum: 10c0/78a43a8a0ef6ed21adcc13c6a00e24cded677c3cca4da9ced0738a901b4dc0eba55dd3a1373f98af2c30ab0b1a4470861631f247b43a2a75fc0a98e4af35ec0a + checksum: 10c0/c539b814cd9d3eadb53ce04e2ac00716fe0d808511cb64aebf2920bcb1646c65f094188a7f9aa74fca73a501c00ee5835e906717dc3682cbb4ecf7fbb316fc75 languageName: node linkType: hard -"@jest/core@npm:^27.4.5": - version: 27.4.5 - resolution: "@jest/core@npm:27.4.5" +"@jest/core@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/core@npm:27.5.1" dependencies: - "@jest/console": "npm:^27.4.2" - "@jest/reporters": "npm:^27.4.5" - "@jest/test-result": "npm:^27.4.2" - "@jest/transform": "npm:^27.4.5" - "@jest/types": "npm:^27.4.2" + "@jest/console": "npm:^27.5.1" + "@jest/reporters": "npm:^27.5.1" + "@jest/test-result": "npm:^27.5.1" + "@jest/transform": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" "@types/node": "npm:*" ansi-escapes: "npm:^4.2.1" chalk: "npm:^4.0.0" emittery: "npm:^0.8.1" exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.4" - jest-changed-files: "npm:^27.4.2" - jest-config: "npm:^27.4.5" - jest-haste-map: "npm:^27.4.5" - jest-message-util: "npm:^27.4.2" - jest-regex-util: "npm:^27.4.0" - jest-resolve: "npm:^27.4.5" - jest-resolve-dependencies: "npm:^27.4.5" - jest-runner: "npm:^27.4.5" - jest-runtime: "npm:^27.4.5" - jest-snapshot: "npm:^27.4.5" - jest-util: "npm:^27.4.2" - jest-validate: "npm:^27.4.2" - jest-watcher: "npm:^27.4.2" + graceful-fs: "npm:^4.2.9" + jest-changed-files: "npm:^27.5.1" + jest-config: "npm:^27.5.1" + jest-haste-map: "npm:^27.5.1" + jest-message-util: "npm:^27.5.1" + jest-regex-util: "npm:^27.5.1" + jest-resolve: "npm:^27.5.1" + jest-resolve-dependencies: "npm:^27.5.1" + jest-runner: "npm:^27.5.1" + jest-runtime: "npm:^27.5.1" + jest-snapshot: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + jest-validate: "npm:^27.5.1" + jest-watcher: "npm:^27.5.1" micromatch: "npm:^4.0.4" rimraf: "npm:^3.0.0" slash: "npm:^3.0.0" @@ -3689,80 +2345,80 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 10c0/051fd4fcc902259ab8312cf3faefd65871100735bd32e2479cdfbc9f23524f0c33f3de880a0dc7b25e6a3e5d3a2d262bddae99b7504e531c73f20fb71d549271 + checksum: 10c0/8c858fe99cec9eabde8c894d4313171b923e1d4b8f66884b1fa1b7a0123db9f94b797f77d888a2b57d4832e7e46cd67aa1e2f227f1544643478de021c4b84db2 languageName: node linkType: hard -"@jest/environment@npm:^27.4.4": - version: 27.4.4 - resolution: "@jest/environment@npm:27.4.4" +"@jest/environment@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/environment@npm:27.5.1" dependencies: - "@jest/fake-timers": "npm:^27.4.2" - "@jest/types": "npm:^27.4.2" + "@jest/fake-timers": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" "@types/node": "npm:*" - jest-mock: "npm:^27.4.2" - checksum: 10c0/ee3ac9f480759dfa31a37f140008926c1da41eaabc9bce283b35fdc451b9e294dcb3ed9207b36048f633e1db532c6d8823f31372dbc3508138334efcf03c0a16 + jest-mock: "npm:^27.5.1" + checksum: 10c0/50e40b4f0a351a83f21af03c5cffd9f061729aee8f73131dbb32b39838c575a89d313e946ded91c08e16cf58ff470d74d6b3a48f664cec5c70a946aff45310b3 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.0.2": - version: 29.0.2 - resolution: "@jest/expect-utils@npm:29.0.2" +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" dependencies: - jest-get-type: "npm:^29.0.0" - checksum: 10c0/170125c120659bd0e4aeb59e1e162f9aba96374e1e3487f43ecce25fbd401d5a8c76f91b84e4bf05f38cac69fa0b745024f2b6f6cc89d6e81497fac4d630fe36 + jest-get-type: "npm:^29.6.3" + checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a languageName: node linkType: hard -"@jest/fake-timers@npm:^27.4.2": - version: 27.4.2 - resolution: "@jest/fake-timers@npm:27.4.2" +"@jest/fake-timers@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/fake-timers@npm:27.5.1" dependencies: - "@jest/types": "npm:^27.4.2" + "@jest/types": "npm:^27.5.1" "@sinonjs/fake-timers": "npm:^8.0.1" "@types/node": "npm:*" - jest-message-util: "npm:^27.4.2" - jest-mock: "npm:^27.4.2" - jest-util: "npm:^27.4.2" - checksum: 10c0/f5ba463449f3d36314688a9fd44e27cf44578c0ae0811f3c91d82089a8262d8a56f059e501f8dcbc113e8a51ba6b0797677376cb3d60f61eadbefbe3cacb1fb2 + jest-message-util: "npm:^27.5.1" + jest-mock: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + checksum: 10c0/df6113d11f572219ac61d3946b6cc1aaa8632e3afed9ff959bdb46e122e7cc5b5a16451a88d5fca7cc8daa66333adde3cf70d96c936f3d8406276f6e6e2cbacd languageName: node linkType: hard -"@jest/globals@npm:^27.4.4": - version: 27.4.4 - resolution: "@jest/globals@npm:27.4.4" +"@jest/globals@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/globals@npm:27.5.1" dependencies: - "@jest/environment": "npm:^27.4.4" - "@jest/types": "npm:^27.4.2" - expect: "npm:^27.4.2" - checksum: 10c0/6fa2a66ccf3921673d6e81902d1b06c556e6057a269e8fdc8a089cfd700d6d582ec984e6ccd41dd9a88d79d06b3b064df9094acdc46dddf409de4cb77bb8d548 + "@jest/environment": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" + expect: "npm:^27.5.1" + checksum: 10c0/b7309297f13b02bf748782772ab2054bbd11f10eb13e9b4660b33acb8c2c4bc7ee07aa1175045feb27ce3a6916b2d3982a3c5350ea1f9c2c3852334942077471 languageName: node linkType: hard -"@jest/reporters@npm:^27.4.5": - version: 27.4.5 - resolution: "@jest/reporters@npm:27.4.5" +"@jest/reporters@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/reporters@npm:27.5.1" dependencies: "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:^27.4.2" - "@jest/test-result": "npm:^27.4.2" - "@jest/transform": "npm:^27.4.5" - "@jest/types": "npm:^27.4.2" + "@jest/console": "npm:^27.5.1" + "@jest/test-result": "npm:^27.5.1" + "@jest/transform": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" "@types/node": "npm:*" chalk: "npm:^4.0.0" collect-v8-coverage: "npm:^1.0.0" exit: "npm:^0.1.2" glob: "npm:^7.1.2" - graceful-fs: "npm:^4.2.4" + graceful-fs: "npm:^4.2.9" istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^4.0.3" + istanbul-lib-instrument: "npm:^5.1.0" istanbul-lib-report: "npm:^3.0.0" istanbul-lib-source-maps: "npm:^4.0.0" - istanbul-reports: "npm:^3.0.2" - jest-haste-map: "npm:^27.4.5" - jest-resolve: "npm:^27.4.5" - jest-util: "npm:^27.4.2" - jest-worker: "npm:^27.4.5" + istanbul-reports: "npm:^3.1.3" + jest-haste-map: "npm:^27.5.1" + jest-resolve: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + jest-worker: "npm:^27.5.1" slash: "npm:^3.0.0" source-map: "npm:^0.6.0" string-length: "npm:^4.0.1" @@ -3773,116 +2429,140 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 10c0/a5513f79b5723b9d063f850c59ebdcd650b14cc9588d5e34d4b48d8278671fd6c9fdc830b36a4f70355bef0a7be2971c85fa67a15517f79c99abe8e02f77ab28 + checksum: 10c0/fd66b17ca8af0464759d12525cfd84ae87403132da61f18ee76a2f07ecd64427797f7ad6e56d338ffa9f956cce153444edf1e5775093e9be2903aaf4d0e049bc languageName: node linkType: hard -"@jest/schemas@npm:^29.0.0": - version: 29.0.0 - resolution: "@jest/schemas@npm:29.0.0" +"@jest/schemas@npm:^28.1.3": + version: 28.1.3 + resolution: "@jest/schemas@npm:28.1.3" dependencies: "@sinclair/typebox": "npm:^0.24.1" - checksum: 10c0/08c2f6b0237f52ab9448eb6633561ee1e499871082ac41a51b581e91571f6da317b4be0529307caf4cb3fd50798f7c096665db6bb2b5dde999a2c0c08b8775c9 + checksum: 10c0/8c325918f3e1b83e687987b05c2e5143d171f372b091f891fe17835f06fadd864ddae3c7e221a704bdd7e2ea28c4b337124c02023d8affcbdd51eca2879162ac + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be languageName: node linkType: hard -"@jest/source-map@npm:^27.4.0": - version: 27.4.0 - resolution: "@jest/source-map@npm:27.4.0" +"@jest/source-map@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/source-map@npm:27.5.1" dependencies: callsites: "npm:^3.0.0" - graceful-fs: "npm:^4.2.4" + graceful-fs: "npm:^4.2.9" source-map: "npm:^0.6.0" - checksum: 10c0/dda40dbe1fda64549c8f1d7e017933043cb9c6872a9aeab25db27391e36f27c259263be7dc302fb6c8d1a74399107c02e634567d626d98c05446aacf84074371 + checksum: 10c0/7d9937675ba4cb2f27635b13be0f86588d18cf3b2d5442e818e702ea87afa5048c5f8892c749857fd7dd884fd6e14f799851ec9af61940813a690c6d5a70979e languageName: node linkType: hard -"@jest/test-result@npm:^27.4.2": - version: 27.4.2 - resolution: "@jest/test-result@npm:27.4.2" +"@jest/test-result@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/test-result@npm:27.5.1" dependencies: - "@jest/console": "npm:^27.4.2" - "@jest/types": "npm:^27.4.2" + "@jest/console": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" "@types/istanbul-lib-coverage": "npm:^2.0.0" collect-v8-coverage: "npm:^1.0.0" - checksum: 10c0/770e6072988fa90b12241a91c830aa187889d60f750fcbbf32eb1536c30476216ff0e0010edac9f8995bbae2992c4dce1af194d97fe7f181956e4522dab562bf + checksum: 10c0/4fb8cbefda8f645c57e2fc0d0df169b0bf5f6cb456b42dc09f5138595b736e800d8d83e3fd36a47fd801a2359988c841792d7fc46784bec908c88b39b6581749 languageName: node linkType: hard -"@jest/test-sequencer@npm:^27.4.5": - version: 27.4.5 - resolution: "@jest/test-sequencer@npm:27.4.5" +"@jest/test-result@npm:^28.1.3": + version: 28.1.3 + resolution: "@jest/test-result@npm:28.1.3" dependencies: - "@jest/test-result": "npm:^27.4.2" - graceful-fs: "npm:^4.2.4" - jest-haste-map: "npm:^27.4.5" - jest-runtime: "npm:^27.4.5" - checksum: 10c0/5b0b362e854ff783b7769506d75827c4040fa7c787de9914fe0cb7abdc386b6f81e0bc13ed69af028a41d81d813854135f9864f8a4b90ec6c98916c3ba9eb377 + "@jest/console": "npm:^28.1.3" + "@jest/types": "npm:^28.1.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + collect-v8-coverage: "npm:^1.0.0" + checksum: 10c0/2dcc5dda444d4a308c6cb5b62f71a72ee5ff5702541e7faeec0314b4d50139d9004efd503baa15dec692856005c8a5c4afc3a94dabd92825645832eb12f00bea + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/test-sequencer@npm:27.5.1" + dependencies: + "@jest/test-result": "npm:^27.5.1" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^27.5.1" + jest-runtime: "npm:^27.5.1" + checksum: 10c0/f43ecfc5b4c736c7f6e8521c13ef7b447ad29f96732675776be69b2631eb76019793a02ad58e69baf7ffbce1cc8d5b62ca30294091c4ad3acbdce6c12b73d049 languageName: node linkType: hard -"@jest/transform@npm:^27.4.5": - version: 27.4.5 - resolution: "@jest/transform@npm:27.4.5" +"@jest/transform@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/transform@npm:27.5.1" dependencies: "@babel/core": "npm:^7.1.0" - "@jest/types": "npm:^27.4.2" - babel-plugin-istanbul: "npm:^6.0.0" + "@jest/types": "npm:^27.5.1" + babel-plugin-istanbul: "npm:^6.1.1" chalk: "npm:^4.0.0" convert-source-map: "npm:^1.4.0" fast-json-stable-stringify: "npm:^2.0.0" - graceful-fs: "npm:^4.2.4" - jest-haste-map: "npm:^27.4.5" - jest-regex-util: "npm:^27.4.0" - jest-util: "npm:^27.4.2" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^27.5.1" + jest-regex-util: "npm:^27.5.1" + jest-util: "npm:^27.5.1" micromatch: "npm:^4.0.4" - pirates: "npm:^4.0.1" + pirates: "npm:^4.0.4" slash: "npm:^3.0.0" source-map: "npm:^0.6.1" write-file-atomic: "npm:^3.0.0" - checksum: 10c0/8dd3f7fa9145509a57055c96e459d5e9ad02dcf051c003e6e06dca35b5f6bd6c992720b72fe67c58fb7eba5e04b3ddaf7b8f1da01c164fd1deba15fb9ea112c3 + checksum: 10c0/2d1819dad9621a562a1ff6eceefeb5ae0900063c50e982b9f08e48d7328a0c343520ba27ce291cb72c113d4f441ef4a95285b9d4ef6604cffd53740e951c99b6 languageName: node linkType: hard -"@jest/types@npm:^27.4.2": - version: 27.4.2 - resolution: "@jest/types@npm:27.4.2" +"@jest/types@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/types@npm:27.5.1" dependencies: "@types/istanbul-lib-coverage": "npm:^2.0.0" "@types/istanbul-reports": "npm:^3.0.0" "@types/node": "npm:*" "@types/yargs": "npm:^16.0.0" chalk: "npm:^4.0.0" - checksum: 10c0/e72dbc1234e714c04f2b95f5542f6fae1b8bae222d3afa1b48e425875097d1ea63a4a6f8d0bc85965a0d3fab6534e154ab93f412e88f32e414e56366912bd02e + checksum: 10c0/4598b302398db0eb77168b75a6c58148ea02cc9b9f21c5d1bbe985c1c9257110a5653cf7b901c3cab87fba231e3fed83633687f1c0903b4bc6939ab2a8452504 languageName: node linkType: hard -"@jest/types@npm:^29.0.2": - version: 29.0.2 - resolution: "@jest/types@npm:29.0.2" +"@jest/types@npm:^28.1.3": + version: 28.1.3 + resolution: "@jest/types@npm:28.1.3" dependencies: - "@jest/schemas": "npm:^29.0.0" + "@jest/schemas": "npm:^28.1.3" "@types/istanbul-lib-coverage": "npm:^2.0.0" "@types/istanbul-reports": "npm:^3.0.0" "@types/node": "npm:*" "@types/yargs": "npm:^17.0.8" chalk: "npm:^4.0.0" - checksum: 10c0/f817dc8447f3b2273a60ed7bfcbe1ba2386383e5c88198ac9f6214b2b7a0f27bdf5696aba95f2d473555a6510b343aa28180f59a2d06baed1740cb8d6a94bfc1 + checksum: 10c0/3cffae7d1133aa7952a6b5c4806f89ed78cb0dfe3ec4e8c5a6e704d7bab3cff86c714abb5f0f637540da22776900a33b3bad79c5ed5fc5b5535fb24e3006e3cb languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.3 - resolution: "@jridgewell/gen-mapping@npm:0.3.3" +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" dependencies: - "@jridgewell/set-array": "npm:^1.0.1" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 10c0/376fc11cf5a967318ba3ddd9d8e91be528eab6af66810a713c49b0c3f8dc67e9949452c51c38ab1b19aa618fb5e8594da5a249977e26b1e7fea1ee5a1fcacc74 + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.5": +"@jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.5 resolution: "@jridgewell/gen-mapping@npm:0.3.5" dependencies: @@ -3893,24 +2573,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: 10c0/78055e2526108331126366572045355051a930f017d1904a4f753d3f4acee8d92a14854948095626f6163cffc24ea4e3efa30637417bb866b84743dec7ef6fd9 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.1 - resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: 10c0/0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 10c0/bc7ab4c4c00470de4e7562ecac3c0c84f53e7ee8a711e546d67c47da7febe7c45cd67d4d84ee3c9b2c05ae8e872656cdded8a707a283d30bd54fbc65aef821ab +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e languageName: node linkType: hard @@ -3922,43 +2588,29 @@ __metadata: linkType: hard "@jridgewell/source-map@npm:^0.3.3": - version: 0.3.5 - resolution: "@jridgewell/source-map@npm:0.3.5" + version: 0.3.6 + resolution: "@jridgewell/source-map@npm:0.3.6" dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.0" - "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 10c0/b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:1.4.14": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 10c0/3fbaff1387c1338b097eeb6ff92890d7838f7de0dde259e4983763b44540bfd5ca6a1f7644dc8ad003a57f7e80670d5b96a8402f1386ba9aee074743ae9bad51 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: 10c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + checksum: 10c0/6a4ecc713ed246ff8e5bdcc1ef7c49aaa93f7463d948ba5054dda18b02dcc6a055e2828c577bcceee058f302ce1fc95595713d44f5c45e43d459f88d267f2f04 languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.5.0": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": version: 1.5.0 resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.17": - version: 0.3.20 - resolution: "@jridgewell/trace-mapping@npm:0.3.20" +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10c0/0ea0b2675cf513ec44dc25605616a3c9b808b9832e74b5b63c44260d66b58558bba65764f81928fc1033ead911f8718dca1134049c3e7a93937faf436671df31 + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b languageName: node linkType: hard @@ -3972,13 +2624,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.18 - resolution: "@jridgewell/trace-mapping@npm:0.3.18" - dependencies: - "@jridgewell/resolve-uri": "npm:3.1.0" - "@jridgewell/sourcemap-codec": "npm:1.4.14" - checksum: 10c0/e5045775f076022b6c7cc64a7b55742faa5442301cb3389fd0e6712fafc46a2bb13c68fa1ffaf7b8bb665a91196f050b4115885fc802094ebc06a1cf665935ac +"@leichtgewicht/ip-codec@npm:^2.0.1": + version: 2.0.5 + resolution: "@leichtgewicht/ip-codec@npm:2.0.5" + checksum: 10c0/14a0112bd59615eef9e3446fea018045720cd3da85a98f801a685a818b0d96ef2a1f7227e8d271def546b2e2a0fe91ef915ba9dc912ab7967d2317b1a051d66b languageName: node linkType: hard @@ -3990,41 +2639,50 @@ __metadata: linkType: hard "@mdx-js/react@npm:^3.0.0": - version: 3.0.1 - resolution: "@mdx-js/react@npm:3.0.1" + version: 3.1.0 + resolution: "@mdx-js/react@npm:3.1.0" dependencies: "@types/mdx": "npm:^2.0.0" peerDependencies: "@types/react": ">=16" react: ">=16" - checksum: 10c0/d210d926ef488d39ad65f04d821936b668eadcdde3b6421e94ec4200ca7ad17f17d24c5cbc543882586af9f08b10e2eea715c728ce6277487945e05c5199f532 + checksum: 10c0/381ed1211ba2b8491bf0ad9ef0d8d1badcdd114e1931d55d44019d4b827cc2752586708f9c7d2f9c3244150ed81f1f671a6ca95fae0edd5797fb47a22e06ceca languageName: node linkType: hard -"@nodelib/fs.scandir@npm:2.1.4": - version: 2.1.4 - resolution: "@nodelib/fs.scandir@npm:2.1.4" +"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": + version: 5.1.1-v1 + resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" + dependencies: + eslint-scope: "npm:5.1.1" + checksum: 10c0/75dda3e623b8ad7369ca22552d6beee337a814b2d0e8a32d23edd13fcb65c8082b32c5d86e436f3860dd7ade30d91d5db55d4ef9a08fb5a976c718ecc0d88a74 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" dependencies: - "@nodelib/fs.stat": "npm:2.0.4" + "@nodelib/fs.stat": "npm:2.0.5" run-parallel: "npm:^1.1.9" - checksum: 10c0/6c0f930380615d830e99260dd09d8f01015b55c4c2486367e15147a6c9822a62a8b6c7604e09871de930981d0d15e9640a7a7a877fdba418e26fe68bf84dee31 + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb languageName: node linkType: hard -"@nodelib/fs.stat@npm:2.0.4, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.4 - resolution: "@nodelib/fs.stat@npm:2.0.4" - checksum: 10c0/773dc0990a0890180feb9758123200bf73144f46f00c42d9b2c2dd7e03bef6ac53af209ccbeb32ba046b41ea890d73f12cd780a0114cac1dbcd0da631da8b3f8 +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.6 - resolution: "@nodelib/fs.walk@npm:1.2.6" +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: - "@nodelib/fs.scandir": "npm:2.1.4" + "@nodelib/fs.scandir": "npm:2.1.5" fastq: "npm:^1.6.0" - checksum: 10c0/6feb845a2ed0a1e2a6d4597fe404a5654e958d2e23963029370966c47c26ff7a9a9978fd3a9abce2c49ddddfe485afc0be0f52894fcbd19b15e4fa7c088c438a + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 languageName: node linkType: hard @@ -4058,25 +2716,23 @@ __metadata: linkType: hard "@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.1, @pmmmwh/react-refresh-webpack-plugin@npm:^0.5.3": - version: 0.5.3 - resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.3" + version: 0.5.15 + resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.15" dependencies: - ansi-html-community: "npm:^0.0.8" - common-path-prefix: "npm:^3.0.0" - core-js-pure: "npm:^3.8.1" + ansi-html: "npm:^0.0.9" + core-js-pure: "npm:^3.23.3" error-stack-parser: "npm:^2.0.6" - find-up: "npm:^5.0.0" html-entities: "npm:^2.1.0" - loader-utils: "npm:^2.0.0" - schema-utils: "npm:^3.0.0" + loader-utils: "npm:^2.0.4" + schema-utils: "npm:^4.2.0" source-map: "npm:^0.7.3" peerDependencies: "@types/webpack": 4.x || 5.x react-refresh: ">=0.10.0 <1.0.0" sockjs-client: ^1.4.0 - type-fest: ">=0.17.0 <3.0.0" + type-fest: ">=0.17.0 <5.0.0" webpack: ">=4.43.0 <6.0.0" - webpack-dev-server: 3.x || 4.x + webpack-dev-server: 3.x || 4.x || 5.x webpack-hot-middleware: 2.x webpack-plugin-serve: 0.x || 1.x peerDependenciesMeta: @@ -4092,7 +2748,7 @@ __metadata: optional: true webpack-plugin-serve: optional: true - checksum: 10c0/b33fc7c02c7f45682407813c747ba5fce44d14f05eac48724b8a910abace0a4774bbb9c090fc75d10779a77368581d7d22e30ac39ee2c8186e1aafddf5f28208 + checksum: 10c0/ba310aa4d53070f59c8a374d1d256c5965c044c0c3fb1ff6b55353fb5e86de08a490a7bd59a31f0d4951f8f29f81864c7df224fe1342543a95d048b7413ff171 languageName: node linkType: hard @@ -4103,6 +2759,81 @@ __metadata: languageName: node linkType: hard +"@react-aria/focus@npm:^3.17.1": + version: 3.18.4 + resolution: "@react-aria/focus@npm:3.18.4" + dependencies: + "@react-aria/interactions": "npm:^3.22.4" + "@react-aria/utils": "npm:^3.25.3" + "@react-types/shared": "npm:^3.25.0" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/141f8ef80060c5b58384af4af9446c0792618671e9f963942c3edc29bb15b7eb0ebb62cbe118135c7379c2732e86071aa7d7c890903a0ae411be07f2ec854e6a + languageName: node + linkType: hard + +"@react-aria/interactions@npm:^3.21.3, @react-aria/interactions@npm:^3.22.4": + version: 3.22.4 + resolution: "@react-aria/interactions@npm:3.22.4" + dependencies: + "@react-aria/ssr": "npm:^3.9.6" + "@react-aria/utils": "npm:^3.25.3" + "@react-types/shared": "npm:^3.25.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/8455a68540a4085b71ed034cad5c349a7e756e44cd30d69d340d7f7a66ce1886882021fbcc8049a5d8aeba54b47cd2ca49a7bc4e6910aab2d13b41703d55c7a5 + languageName: node + linkType: hard + +"@react-aria/ssr@npm:^3.9.6": + version: 3.9.6 + resolution: "@react-aria/ssr@npm:3.9.6" + dependencies: + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/be52f2909035e093d3f72cccde15b66b4eef2dc30c71dac46a1ea43d3847dace1a709114640bfa3e9aa72ba716749635fb72116f4da16f7d80248ca348146456 + languageName: node + linkType: hard + +"@react-aria/utils@npm:^3.25.3": + version: 3.25.3 + resolution: "@react-aria/utils@npm:3.25.3" + dependencies: + "@react-aria/ssr": "npm:^3.9.6" + "@react-stately/utils": "npm:^3.10.4" + "@react-types/shared": "npm:^3.25.0" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/dc86ea48c24232f5c51d0b5317d947c4ccf01a8afb3bdc89cb880a7b0a695a04c8a7c615fb190664f4f3c7da8669ab2bd2f7cdfb2861339f5816cbd600249a84 + languageName: node + linkType: hard + +"@react-stately/utils@npm:^3.10.4": + version: 3.10.4 + resolution: "@react-stately/utils@npm:3.10.4" + dependencies: + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/875c11424fadf4419caceeee13e5bfdee2b0c330fe0220c0ea9d68d570cc9a34525f2f124d977e519b397a738cd2f8e36b7b03a046e3e7da99460e99282977a4 + languageName: node + linkType: hard + +"@react-types/shared@npm:^3.25.0": + version: 3.25.0 + resolution: "@react-types/shared@npm:3.25.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/d168f6b404c345928ef8ead94f0cecd3831d8f6df708dbe897ac62d566949a0931c3b0d95ef6dd02bc5af05b183781b531e6f041ffd1d320bc2cab7697fd27d0 + languageName: node + linkType: hard + "@reactflow/background@npm:11.3.14": version: 11.3.14 resolution: "@reactflow/background@npm:11.3.14" @@ -4207,8 +2938,8 @@ __metadata: linkType: hard "@rollup/plugin-babel@npm:^5.2.0": - version: 5.3.0 - resolution: "@rollup/plugin-babel@npm:5.3.0" + version: 5.3.1 + resolution: "@rollup/plugin-babel@npm:5.3.1" dependencies: "@babel/helper-module-imports": "npm:^7.10.4" "@rollup/pluginutils": "npm:^3.1.0" @@ -4219,7 +2950,7 @@ __metadata: peerDependenciesMeta: "@types/babel__core": optional: true - checksum: 10c0/e014731ee431b4ad94aed150377037f5a6d653002e72807bddf6185d046834b826141b8016fa242b371950d799d4b33394b746a6b3aaa987437c586bc2d14e00 + checksum: 10c0/2766134dd5567c0d4fd6909d1f511ce9bf3bd9d727e1bc5ffdd6097a3606faca324107ae8e0961839ee4dbb45e5e579ae601efe472fc0a271259aea79920cafa languageName: node linkType: hard @@ -4264,26 +2995,40 @@ __metadata: languageName: node linkType: hard -"@rushstack/eslint-patch@npm:^1.1.0": +"@rtsao/scc@npm:^1.1.0": version: 1.1.0 - resolution: "@rushstack/eslint-patch@npm:1.1.0" - checksum: 10c0/003c96236b7e1f377ade56276830f232de0d61bba02080901e0b3a216d74384687730a4beebcbf61332c08eebefd70333fd41813c3242d39682abd1e9bdeca19 + resolution: "@rtsao/scc@npm:1.1.0" + checksum: 10c0/b5bcfb0d87f7d1c1c7c0f7693f53b07866ed9fec4c34a97a8c948fb9a7c0082e416ce4d3b60beb4f5e167cbe04cdeefbf6771320f3ede059b9ce91188c409a5b + languageName: node + linkType: hard + +"@rushstack/eslint-patch@npm:^1.1.0": + version: 1.10.4 + resolution: "@rushstack/eslint-patch@npm:1.10.4" + checksum: 10c0/de312bd7a3cb0f313c9720029eb719d8762fe54946cce2d33ac142b1cbb5817c4a5a92518dfa476c26311602d37f5a8f7caa90a0c73e3d6a56f9a05d2799c172 languageName: node linkType: hard "@sinclair/typebox@npm:^0.24.1": - version: 0.24.28 - resolution: "@sinclair/typebox@npm:0.24.28" - checksum: 10c0/805c991f4945f873d574d867e5f62962fdc086de92c10912d38f015887596c3257b2c297af1c2cfb9788feeb97d3ea9ab64b51d59aaa5dab218da1b2db00e939 + version: 0.24.51 + resolution: "@sinclair/typebox@npm:0.24.51" + checksum: 10c0/458131e83ca59ad3721f0abeef2aa5220aff2083767e1143d75c67c85d55ef7a212f48f394471ee6bdd2e860ba30f09a489cdd2a28a2824d5b0d1014bdfb2552 + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e languageName: node linkType: hard "@sinonjs/commons@npm:^1.7.0": - version: 1.8.2 - resolution: "@sinonjs/commons@npm:1.8.2" + version: 1.8.6 + resolution: "@sinonjs/commons@npm:1.8.6" dependencies: type-detect: "npm:4.0.8" - checksum: 10c0/2025c0406a582a767362ad70ab02867ec9fe87a36f503e44fa9ea451b7b36e099d03fefc045ad7e18c110e3ad209157a2f864285e43a7436a4989730eb2edb05 + checksum: 10c0/93b4d4e27e93652b83467869c2fe09cbd8f37cd5582327f0e081fbf9b93899e2d267db7b668c96810c63dc229867614ced825e5512b47db96ca6f87cb3ec0f61 languageName: node linkType: hard @@ -4524,20 +3269,20 @@ __metadata: linkType: hard "@storybook/components@npm:^8.0.0, @storybook/components@npm:^8.3.0": - version: 8.3.0 - resolution: "@storybook/components@npm:8.3.0" + version: 8.4.2 + resolution: "@storybook/components@npm:8.4.2" peerDependencies: - storybook: ^8.3.0 - checksum: 10c0/2ee1e18f0f24bf9c22c66f2db51bb1076ad3ad20c404c01ca288a49f6dd4b2209fc22ea48b6e9ed45edf4ce7373150197d91e7acc98eed813ce0d52ba30d3d58 + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10c0/36ffb5f73dceb481e76fa6e006118f382c23c8081cf47500f0eea8566e902a11d3fd219b599a9f622358f17652c445f71bc8d7a80e0d43f28cd85d60f7b4a15f languageName: node linkType: hard "@storybook/core-events@npm:^8.0.0": - version: 8.3.0 - resolution: "@storybook/core-events@npm:8.3.0" + version: 8.4.2 + resolution: "@storybook/core-events@npm:8.4.2" peerDependencies: - storybook: ^8.3.0 - checksum: 10c0/7852613c2fcde393ae84e1ab1ef41008f001f3486389e6901fc35f0dd0a8106045a8b43e628d8251974805ac289da27ab3642c2bab864b541f8cdcb6515dc315 + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10c0/2c424651b6eb4622b06af51710cf11d856b0e911ff83ba14f1ca423fe0c60d1f7a6183e2a8c9ec44167cde9e1cb3b64425e83eb15428a5c294b5892784bd7be2 languageName: node linkType: hard @@ -4600,21 +3345,21 @@ __metadata: linkType: hard "@storybook/icons@npm:^1.2.10, @storybook/icons@npm:^1.2.5": - version: 1.2.10 - resolution: "@storybook/icons@npm:1.2.10" + version: 1.2.12 + resolution: "@storybook/icons@npm:1.2.12" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/aadde2efd5c471b78096f29a6393db111ee95174cab94ade0d2859d476262f080aa8ffb414f82932afd81d5c57bed813193a04e92086962bde2224774dac9060 + checksum: 10c0/97f6a7b7841fb5a0d1c8a30c36173469e7b0814a674c8103c7c0fd8803f0f7c2a778545af864012d40883195a533534dbc98541deac2bafe31e6a3fe37fdfc66 languageName: node linkType: hard "@storybook/manager-api@npm:^8.0.0, @storybook/manager-api@npm:^8.3.0": - version: 8.3.0 - resolution: "@storybook/manager-api@npm:8.3.0" + version: 8.4.2 + resolution: "@storybook/manager-api@npm:8.4.2" peerDependencies: - storybook: ^8.3.0 - checksum: 10c0/d08b9f4428f3e909bd6c002fd734d189aacc3bc04525e050251ca3f8935ba7012f66ab226c7099b959f159c1f08b98103a21152371c0c2b34f330f67cf2c25b8 + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10c0/306e16af4a4babf18d7b32335f974ac969a3f9139534f37e3ce238462f69f1ad52e3091a45bf76b1cbdd8f3cf989836c8433cad6cbb2c3eb4dcbc7ccb0f8ae82 languageName: node linkType: hard @@ -4671,7 +3416,7 @@ __metadata: languageName: node linkType: hard -"@storybook/preview-api@npm:8.3.0, @storybook/preview-api@npm:^8.3.0": +"@storybook/preview-api@npm:8.3.0": version: 8.3.0 resolution: "@storybook/preview-api@npm:8.3.0" peerDependencies: @@ -4680,6 +3425,15 @@ __metadata: languageName: node linkType: hard +"@storybook/preview-api@npm:^8.3.0": + version: 8.4.2 + resolution: "@storybook/preview-api@npm:8.4.2" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10c0/7b54c1962d27d32f29a3839660098ad8995cfcf31d4bde3662cff69d7a06cc4d315dad92f565901e3b0ebd7bf12fa8995cc625a71f13c34d82a4529412d8f83c + languageName: node + linkType: hard + "@storybook/react-docgen-typescript-plugin@npm:1.0.6--canary.9.0c3f3b7.0": version: 1.0.6--canary.9.0c3f3b7.0 resolution: "@storybook/react-docgen-typescript-plugin@npm:1.0.6--canary.9.0c3f3b7.0" @@ -4768,7 +3522,7 @@ __metadata: languageName: node linkType: hard -"@storybook/theming@npm:8.3.0, @storybook/theming@npm:^8.0.0, @storybook/theming@npm:^8.3.0": +"@storybook/theming@npm:8.3.0": version: 8.3.0 resolution: "@storybook/theming@npm:8.3.0" peerDependencies: @@ -4777,6 +3531,15 @@ __metadata: languageName: node linkType: hard +"@storybook/theming@npm:^8.0.0, @storybook/theming@npm:^8.3.0": + version: 8.4.2 + resolution: "@storybook/theming@npm:8.4.2" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10c0/8765a25952273f87f65018159228fa448a0bb6fa38486650344ddc076cd895546ab3b88d35a6e7f80d3223635e28d59f82510922c589a36a7c6afc33c5bcc0d7 + languageName: node + linkType: hard + "@supabase/sql-formatter@npm:4.0.3": version: 4.0.3 resolution: "@supabase/sql-formatter@npm:4.0.3" @@ -4931,6 +3694,15 @@ __metadata: languageName: node linkType: hard +"@swc/helpers@npm:^0.5.0": + version: 0.5.13 + resolution: "@swc/helpers@npm:0.5.13" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/b9df578401fc62405da9a6c31e79e447a2fd90f68b25b1daee12f2caf2821991bb89106f0397bc1acb4c4d84a8ce079d04b60b65f534496952e3bf8c9a52f40f + languageName: node + linkType: hard + "@tailwindcss/forms@npm:0.5.9": version: 0.5.9 resolution: "@tailwindcss/forms@npm:0.5.9" @@ -4965,22 +3737,22 @@ __metadata: languageName: node linkType: hard -"@tanstack/react-virtual@npm:^3.0.0-beta.60": - version: 3.10.9 - resolution: "@tanstack/react-virtual@npm:3.10.9" +"@tanstack/react-virtual@npm:^3.8.1": + version: 3.10.8 + resolution: "@tanstack/react-virtual@npm:3.10.8" dependencies: - "@tanstack/virtual-core": "npm:3.10.9" + "@tanstack/virtual-core": "npm:3.10.8" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/a854b6fb2bdccec9e581442def5ed6ee568fd2b12178e70450c03d9e60a1e5794be71c4ad3f385af717872c039e569ff88c52adb11a2ddf2c02ded3f83bc851d + checksum: 10c0/b7aec88ef48f604d3e7245b9996ba42f06e6ee2c1a45146cb96814cb3873a4c888bf86d26d10284c847a5ed97e16dc9430c380387abc1231c2e43c00f6ebadff languageName: node linkType: hard -"@tanstack/virtual-core@npm:3.10.9": - version: 3.10.9 - resolution: "@tanstack/virtual-core@npm:3.10.9" - checksum: 10c0/960cde330235daff5403e0da23837ac30a0f95a02c8866692f8382d03b675d6802e129436b0b3e7e737d8a5347ef2cadec448ba4c0878462228c094440d0207b +"@tanstack/virtual-core@npm:3.10.8": + version: 3.10.8 + resolution: "@tanstack/virtual-core@npm:3.10.8" + checksum: 10c0/ddb97cd03d84b343b38a2c14d85e33c788f4af622fccc0fdf997caf4e83e47e8f67b099b854c7dc4337d7662f647625ab3247cd8aa1bc9d4dda701bda83245f6 languageName: node linkType: hard @@ -5057,30 +3829,30 @@ __metadata: linkType: hard "@tsconfig/node10@npm:^1.0.7": - version: 1.0.8 - resolution: "@tsconfig/node10@npm:1.0.8" - checksum: 10c0/d400f7b5c02acd74620f892c0f41cea39e7c1b5f7f272ad6f127f4b1fba23346b2d8e30d272731a733675494145f6aa74f9faf050390c034c7c553123ab979b3 + version: 1.0.11 + resolution: "@tsconfig/node10@npm:1.0.11" + checksum: 10c0/28a0710e5d039e0de484bdf85fee883bfd3f6a8980601f4d44066b0a6bcd821d31c4e231d1117731c4e24268bd4cf2a788a6787c12fc7f8d11014c07d582783c languageName: node linkType: hard "@tsconfig/node12@npm:^1.0.7": - version: 1.0.9 - resolution: "@tsconfig/node12@npm:1.0.9" - checksum: 10c0/fc1fb68a89d8a641953036d23d95fe68f69f74d37a499db20791b09543ad23afe7ae9ee0840eea92dd470bdcba69eef6f1ed3fe90ba64d763bcd3f738e364597 + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 languageName: node linkType: hard "@tsconfig/node14@npm:^1.0.0": - version: 1.0.1 - resolution: "@tsconfig/node14@npm:1.0.1" - checksum: 10c0/abd4e27d9ad712e1e229716a3dbf35d5cbb580d624a82d67414e7606cefd85d502e58800a2ab930d46a428fcfcb199436283b1a88e47d738ca1a5f7fd022ee74 + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 languageName: node linkType: hard "@tsconfig/node16@npm:^1.0.2": - version: 1.0.2 - resolution: "@tsconfig/node16@npm:1.0.2" - checksum: 10c0/d402706562444a173d48810d13fdf866c78f1b876ed8962eeac6c7cddf4e29e8aaa06dc28093219e3e9eb6316799cf4d9a7acba62c6a4e215ee0c94d83f9081f + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb languageName: node linkType: hard @@ -5091,33 +3863,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.0.0": - version: 7.1.12 - resolution: "@types/babel__core@npm:7.1.12" - dependencies: - "@babel/parser": "npm:^7.1.0" - "@babel/types": "npm:^7.0.0" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: 10c0/ecc4d8559e99d943136dbc17d35694018a82745cad6675538f0c54216284753ce40fdc9a68ad025f9a66f37cb4b015714a9a575e48d628db3e1ab0a264eef316 - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.1.14": - version: 7.1.17 - resolution: "@types/babel__core@npm:7.1.17" - dependencies: - "@babel/parser": "npm:^7.1.0" - "@babel/types": "npm:^7.0.0" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: 10c0/d4f97c8c5ea9086700849c6b557cf8c073ccf278a8dd3bef4af0b0529f592756d2b6603c1ed76879b1cd65290354681f99b4a0b4947e31e5fd5f84c3ece514cd - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.18.0": +"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.18.0": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" dependencies: @@ -5131,34 +3877,25 @@ __metadata: linkType: hard "@types/babel__generator@npm:*": - version: 7.6.2 - resolution: "@types/babel__generator@npm:7.6.2" + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" dependencies: "@babel/types": "npm:^7.0.0" - checksum: 10c0/2ef998351d857fc76bc739ade10184300d1c8d12bb0d634333a42e927182390968ce78185f1e6c31214540515cdb232a7cb416c20eccc119837c6137f039ea73 + checksum: 10c0/f0ba105e7d2296bf367d6e055bb22996886c114261e2cb70bf9359556d0076c7a57239d019dee42bb063f565bade5ccb46009bce2044b2952d964bf9a454d6d2 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.0 - resolution: "@types/babel__template@npm:7.4.0" + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" dependencies: "@babel/parser": "npm:^7.1.0" "@babel/types": "npm:^7.0.0" - checksum: 10c0/b3fddd75a75249e5c2ad2f698b6761e64f20c6759b88b8a352e9a7fbba656b11c424ccafd86202c49fd8b41d0dd52fab48085f8f6761ded341be2a50fd9c3a7a - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6": - version: 7.11.0 - resolution: "@types/babel__traverse@npm:7.11.0" - dependencies: - "@babel/types": "npm:^7.3.0" - checksum: 10c0/17e3f1cbfa41b0f7f63755e64720c4012abff971626222573223e22964f9ce8183b83cb8aef9969a272f329a347feda4d1c4a8e2d8c9d3a395256f3e3848bd2f + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b languageName: node linkType: hard -"@types/babel__traverse@npm:^7.18.0": +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6, @types/babel__traverse@npm:^7.18.0": version: 7.20.6 resolution: "@types/babel__traverse@npm:7.20.6" dependencies: @@ -5177,261 +3914,271 @@ __metadata: languageName: node linkType: hard -"@types/connect@npm:*": - version: 3.4.38 - resolution: "@types/connect@npm:3.4.38" +"@types/bonjour@npm:^3.5.9": + version: 3.5.13 + resolution: "@types/bonjour@npm:3.5.13" dependencies: "@types/node": "npm:*" - checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c + checksum: 10c0/eebedbca185ac3c39dd5992ef18d9e2a9f99e7f3c2f52f5561f90e9ed482c5d224c7962db95362712f580ed5713264e777a98d8f0bd8747f4eadf62937baed16 languageName: node linkType: hard -"@types/cssnano@npm:^4.0.1": - version: 4.0.1 - resolution: "@types/cssnano@npm:4.0.1" +"@types/connect-history-api-fallback@npm:^1.3.5": + version: 1.5.4 + resolution: "@types/connect-history-api-fallback@npm:1.5.4" + dependencies: + "@types/express-serve-static-core": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/1b4035b627dcd714b05a22557f942e24a57ca48e7377dde0d2f86313fe685bc0a6566512a73257a55b5665b96c3041fb29228ac93331d8133011716215de8244 + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" dependencies: - postcss: "npm:5 - 7" - checksum: 10c0/4a5f72721caa4c2cb4961ee4ec29af697550b4d28067fd9b753891049767cd54f56554709ea0ccbf460a8934a93b153dde62c64546e6db22e107dcf7be9fc2b2 + "@types/node": "npm:*" + checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c languageName: node linkType: hard "@types/d3-array@npm:*": - version: 3.0.3 - resolution: "@types/d3-array@npm:3.0.3" - checksum: 10c0/4dddae293e6e16764f8e465539548454b202a0f325f7d1cd0777690c4598bd593b1fb952501421d771204988b1a10393cf062775d2fc23851b0dec96c92eb3a4 + version: 3.2.1 + resolution: "@types/d3-array@npm:3.2.1" + checksum: 10c0/38bf2c778451f4b79ec81a2288cb4312fe3d6449ecdf562970cc339b60f280f31c93a024c7ff512607795e79d3beb0cbda123bb07010167bce32927f71364bca languageName: node linkType: hard "@types/d3-axis@npm:*": - version: 3.0.1 - resolution: "@types/d3-axis@npm:3.0.1" + version: 3.0.6 + resolution: "@types/d3-axis@npm:3.0.6" dependencies: "@types/d3-selection": "npm:*" - checksum: 10c0/f9a940068049f606901d58b87bb947bda6588b45d8e8f5b0616f50659ccd22c66a99d2cfb6aff695f0d6c5a5ca35e484523b4e61070c2195f10875ff577ff520 + checksum: 10c0/d756d42360261f44d8eefd0950c5bb0a4f67a46dd92069da3f723ac36a1e8cb2b9ce6347d836ef19d5b8aef725dbcf8fdbbd6cfbff676ca4b0642df2f78b599a languageName: node linkType: hard "@types/d3-brush@npm:*": - version: 3.0.1 - resolution: "@types/d3-brush@npm:3.0.1" + version: 3.0.6 + resolution: "@types/d3-brush@npm:3.0.6" dependencies: "@types/d3-selection": "npm:*" - checksum: 10c0/65ff41be9252cd0ca4a2d306a9a6272053e0e53ac62b52aa020738ce4004ada9929d1dac02fb10dc053b5d000c507e0d3e09fae7123c503077212c4649132f14 + checksum: 10c0/fd6e2ac7657a354f269f6b9c58451ffae9d01b89ccb1eb6367fd36d635d2f1990967215ab498e0c0679ff269429c57fad6a2958b68f4d45bc9f81d81672edc01 languageName: node linkType: hard "@types/d3-chord@npm:*": - version: 3.0.1 - resolution: "@types/d3-chord@npm:3.0.1" - checksum: 10c0/81ad4f649192806ac847cfc400546d26dabaac37146a4c3286bfb97ee13dceee4a2c7e8be1e25fcb4a71771b6bdb7c9c89d9b08ea30c492ba44f689581c61f79 + version: 3.0.6 + resolution: "@types/d3-chord@npm:3.0.6" + checksum: 10c0/c5a25eb5389db01e63faec0c5c2ec7cc41c494e9b3201630b494c4e862a60f1aa83fabbc33a829e7e1403941e3c30d206c741559b14406ac2a4239cfdf4b4c17 languageName: node linkType: hard "@types/d3-color@npm:*": - version: 3.1.0 - resolution: "@types/d3-color@npm:3.1.0" - checksum: 10c0/5b4be21b4b025da9ffd0cef876fb7d82f99116fa26e7ee3449771faf0a953d160246b1ceb2a9bbc7d131e32ab60d7d19013131d098616369a56f9880f25f20ef + version: 3.1.3 + resolution: "@types/d3-color@npm:3.1.3" + checksum: 10c0/65eb0487de606eb5ad81735a9a5b3142d30bc5ea801ed9b14b77cb14c9b909f718c059f13af341264ee189acf171508053342142bdf99338667cea26a2d8d6ae languageName: node linkType: hard "@types/d3-contour@npm:*": - version: 3.0.1 - resolution: "@types/d3-contour@npm:3.0.1" + version: 3.0.6 + resolution: "@types/d3-contour@npm:3.0.6" dependencies: "@types/d3-array": "npm:*" "@types/geojson": "npm:*" - checksum: 10c0/d3bdeddcc957988f92b679f75576c86acb0b51c3807c8ea7127da301ea6834ba9c4a108cc7fc44b502f611041966ba404af7c5ba69befb9d6002c6e6354c3ffc + checksum: 10c0/e7d83e94719af4576ceb5ac7f277c5806f83ba6c3631744ae391cffc3641f09dfa279470b83053cd0b2acd6784e8749c71141d05bdffa63ca58ffb5b31a0f27c languageName: node linkType: hard "@types/d3-delaunay@npm:*": - version: 6.0.1 - resolution: "@types/d3-delaunay@npm:6.0.1" - checksum: 10c0/b03f84560a98e0d08b96095759484de6ebccc4fc137a9114795ece15898ccb67c5b0897ffe1e939658224fe387dd58090b951a2c3ff31c70ec9fe2dddc0df1f9 + version: 6.0.4 + resolution: "@types/d3-delaunay@npm:6.0.4" + checksum: 10c0/d154a8864f08c4ea23ecb9bdabcef1c406a25baa8895f0cb08a0ed2799de0d360e597552532ce7086ff0cdffa8f3563f9109d18f0191459d32bb620a36939123 languageName: node linkType: hard "@types/d3-dispatch@npm:*": - version: 3.0.1 - resolution: "@types/d3-dispatch@npm:3.0.1" - checksum: 10c0/1f038b6da3d19814fec2ebcb66566acbec1998b0efb8e74711f15079a217da516aca6503e5c39169f2d2fcda494fffc0e37dbea5e7576db4ec37d2a9088cf739 + version: 3.0.6 + resolution: "@types/d3-dispatch@npm:3.0.6" + checksum: 10c0/405eb7d0ec139fbf72fa6a43b0f3ca8a1f913bb2cb38f607827e63fca8d4393f021f32f3b96b33c93ddbd37789453a0b3624f14f504add5308fd9aec8a46dda0 languageName: node linkType: hard "@types/d3-drag@npm:*, @types/d3-drag@npm:^3.0.1": - version: 3.0.1 - resolution: "@types/d3-drag@npm:3.0.1" + version: 3.0.7 + resolution: "@types/d3-drag@npm:3.0.7" dependencies: "@types/d3-selection": "npm:*" - checksum: 10c0/a793faf224af0d338c2e3d45e1e998f122bce6d495f663287c6b543f1f2b4e0047ae5ea0a83430b81b3c20c2fdc4107a87035d39f13bd070bff3089e9bb2100e + checksum: 10c0/65e29fa32a87c72d26c44b5e2df3bf15af21cd128386bcc05bcacca255927c0397d0cd7e6062aed5f0abd623490544a9d061c195f5ed9f018fe0b698d99c079d languageName: node linkType: hard "@types/d3-dsv@npm:*": - version: 3.0.0 - resolution: "@types/d3-dsv@npm:3.0.0" - checksum: 10c0/aac71f72c220c3f4871c7f6e853e0b9955538e284a3ccfb644e5a75fba46124a2172689272a1d587118824bb36343c4b0012686f011c2f2fd30d92dbd4c99950 + version: 3.0.7 + resolution: "@types/d3-dsv@npm:3.0.7" + checksum: 10c0/c0f01da862465594c8a28278b51c850af3b4239cc22b14fd1a19d7a98f93d94efa477bf59d8071beb285dca45bf614630811451e18e7c52add3a0abfee0a1871 languageName: node linkType: hard "@types/d3-ease@npm:*": - version: 3.0.0 - resolution: "@types/d3-ease@npm:3.0.0" - checksum: 10c0/8fa64035f3b459cbf178e0bbb01cd188ec7337877e959fcf0a6ef08528b6caf93fd9f69635ec1c8fc11f6d2448d0e5d2a4e11988cb16bc6e001f0c0afe609204 + version: 3.0.2 + resolution: "@types/d3-ease@npm:3.0.2" + checksum: 10c0/aff5a1e572a937ee9bff6465225d7ba27d5e0c976bd9eacdac2e6f10700a7cb0c9ea2597aff6b43a6ed850a3210030870238894a77ec73e309b4a9d0333f099c languageName: node linkType: hard "@types/d3-fetch@npm:*": - version: 3.0.1 - resolution: "@types/d3-fetch@npm:3.0.1" + version: 3.0.7 + resolution: "@types/d3-fetch@npm:3.0.7" dependencies: "@types/d3-dsv": "npm:*" - checksum: 10c0/427c085c2e43e7113c9b07559ded95f016a6a9f5c591129b9fdc0f588e5854337abb84b4deeae4a08bf8400eb540dab059cf489934985ca6db21117cae1099e5 + checksum: 10c0/3d147efa52a26da1a5d40d4d73e6cebaaa964463c378068062999b93ea3731b27cc429104c21ecbba98c6090e58ef13429db6399238c5e3500162fb3015697a0 languageName: node linkType: hard "@types/d3-force@npm:*": - version: 3.0.3 - resolution: "@types/d3-force@npm:3.0.3" - checksum: 10c0/55dbddcc3c25900d9fe805deb00bd5b5a7f2ea92377a601e8ac468c545de7f86fd7e62cfc42c235f5505d311e7b3f38a4f72b70d56853f01f38215c3f2ab2ea8 + version: 3.0.10 + resolution: "@types/d3-force@npm:3.0.10" + checksum: 10c0/c82b459079a106b50e346c9b79b141f599f2fc4f598985a5211e72c7a2e20d35bd5dc6e91f306b323c8bfa325c02c629b1645f5243f1c6a55bd51bc85cccfa92 languageName: node linkType: hard "@types/d3-format@npm:*": - version: 3.0.1 - resolution: "@types/d3-format@npm:3.0.1" - checksum: 10c0/abfb57288fb26899bac98aeb03d652ed73d7074c12c96bb33d2d67ced9869f52f4b3e37579df883fc69a13d970199331a07e67a8bcd9f858efeb4f3a71e36188 + version: 3.0.4 + resolution: "@types/d3-format@npm:3.0.4" + checksum: 10c0/3ac1600bf9061a59a228998f7cd3f29e85cbf522997671ba18d4d84d10a2a1aff4f95aceb143fa9960501c3ec351e113fc75884e6a504ace44dc1744083035ee languageName: node linkType: hard "@types/d3-geo@npm:*": - version: 3.0.2 - resolution: "@types/d3-geo@npm:3.0.2" + version: 3.1.0 + resolution: "@types/d3-geo@npm:3.1.0" dependencies: "@types/geojson": "npm:*" - checksum: 10c0/19d38b270872e0bea01f3a829f875f4671f2fee1dcd7dc63fa146dca9995e8278daa1ac41d38a07dc920a2e414cf18ab25dc66cc187eed4d755e483b0917287e + checksum: 10c0/3745a93439038bb5b0b38facf435f7079812921d46406f5d38deaee59e90084ff742443c7ea0a8446df81a0d81eaf622fe7068cf4117a544bd4aa3b2dc182f88 languageName: node linkType: hard "@types/d3-hierarchy@npm:*": - version: 3.1.0 - resolution: "@types/d3-hierarchy@npm:3.1.0" - checksum: 10c0/da8aa8b52338476c81063f2740d3e06f7a039a54160fecff0e8d6322e6cb0e5ed4fb072ff1544af881224de97c3955954448439571297c98f3399303d2107f14 + version: 3.1.7 + resolution: "@types/d3-hierarchy@npm:3.1.7" + checksum: 10c0/873711737d6b8e7b6f1dda0bcd21294a48f75024909ae510c5d2c21fad2e72032e0958def4d9f68319d3aaac298ad09c49807f8bfc87a145a82693b5208613c7 languageName: node linkType: hard "@types/d3-interpolate@npm:*": - version: 3.0.1 - resolution: "@types/d3-interpolate@npm:3.0.1" + version: 3.0.4 + resolution: "@types/d3-interpolate@npm:3.0.4" dependencies: "@types/d3-color": "npm:*" - checksum: 10c0/1c7577045a4a30dc177bca10980c456a28c9b89b1a5406fe7303824dd9cc898f67f8dafd8e22a7702ca5df12a28a5f48f77d92a9b5d8f1fc0939f33831067114 + checksum: 10c0/066ebb8da570b518dd332df6b12ae3b1eaa0a7f4f0c702e3c57f812cf529cc3500ec2aac8dc094f31897790346c6b1ebd8cd7a077176727f4860c2b181a65ca4 languageName: node linkType: hard "@types/d3-path@npm:*": - version: 3.0.0 - resolution: "@types/d3-path@npm:3.0.0" - checksum: 10c0/64750aeb3e490112d2f1d812230201140de352743846150e022e44c6924f44d47deb1a50f3dc63b930fd6a8fd6482f8fcb7da2516a14b8e29a4749d2b86f90ca + version: 3.1.0 + resolution: "@types/d3-path@npm:3.1.0" + checksum: 10c0/85e8b3aa968a60a5b33198ade06ae7ffedcf9a22d86f24859ff58e014b053ccb7141ec163b78d547bc8215bb12bb54171c666057ab6156912814005b686afb31 languageName: node linkType: hard "@types/d3-polygon@npm:*": - version: 3.0.0 - resolution: "@types/d3-polygon@npm:3.0.0" - checksum: 10c0/6fce6672581cac3c5bcda6f0014527228bdc25ad9f99d1bf9103764f6ce89bc0d5690db55c92052ad7182fa20623aa4bb6bcb2b85aa7a77535610c06b3c32d97 + version: 3.0.2 + resolution: "@types/d3-polygon@npm:3.0.2" + checksum: 10c0/f46307bb32b6c2aef8c7624500e0f9b518de8f227ccc10170b869dc43e4c542560f6c8d62e9f087fac45e198d6e4b623e579c0422e34c85baf56717456d3f439 languageName: node linkType: hard "@types/d3-quadtree@npm:*": - version: 3.0.2 - resolution: "@types/d3-quadtree@npm:3.0.2" - checksum: 10c0/0a2a6921bb21d8bd14190bfd048990f80d2369e622822cbc344a897bb88534b1d7332445024e17cf0adfb4cef663a8a79f0e3bf2a4129a7d13f264854f06e379 + version: 3.0.6 + resolution: "@types/d3-quadtree@npm:3.0.6" + checksum: 10c0/7eaa0a4d404adc856971c9285e1c4ab17e9135ea669d847d6db7e0066126a28ac751864e7ce99c65d526e130f56754a2e437a1617877098b3bdcc3ef23a23616 languageName: node linkType: hard "@types/d3-random@npm:*": - version: 3.0.1 - resolution: "@types/d3-random@npm:3.0.1" - checksum: 10c0/e2818c15b157df55f48c50ca1ed8ba243859b56eb0eb07fdca162ea34ef77f373e5fd5402df4c2e483d6a71e0b57b97ce189cb9398d0433569be6318e1ede408 + version: 3.0.3 + resolution: "@types/d3-random@npm:3.0.3" + checksum: 10c0/5f4fea40080cd6d4adfee05183d00374e73a10c530276a6455348983dda341003a251def28565a27c25d9cf5296a33e870e397c9d91ff83fb7495a21c96b6882 languageName: node linkType: hard "@types/d3-scale-chromatic@npm:*": - version: 3.0.0 - resolution: "@types/d3-scale-chromatic@npm:3.0.0" - checksum: 10c0/58cef12deab19233d8d06f61993198930248fb7cf5de0754e38a9dd342a8fba2d917bc746b57eeee9f82e50bbc079a867e15cc045e8a338cf8502ebcde4561f9 + version: 3.0.3 + resolution: "@types/d3-scale-chromatic@npm:3.0.3" + checksum: 10c0/2f48c6f370edba485b57b73573884ded71914222a4580140ff87ee96e1d55ccd05b1d457f726e234a31269b803270ac95d5554229ab6c43c7e4a9894e20dd490 languageName: node linkType: hard "@types/d3-scale@npm:*": - version: 4.0.2 - resolution: "@types/d3-scale@npm:4.0.2" + version: 4.0.8 + resolution: "@types/d3-scale@npm:4.0.8" dependencies: "@types/d3-time": "npm:*" - checksum: 10c0/2c21be0a715f104bbc3cbfe648a7a1f0b1ccfb0ec93aad5df0ba1a342dced0bfa19761f5378a8790e9073bd001df176b814390c555984ce0917744d40e8efd3d + checksum: 10c0/57de90e4016f640b83cb960b7e3a0ab3ed02e720898840ddc5105264ffcfea73336161442fdc91895377c2d2f91904d637282f16852b8535b77e15a761c8e99e languageName: node linkType: hard "@types/d3-selection@npm:*, @types/d3-selection@npm:^3.0.3": - version: 3.0.3 - resolution: "@types/d3-selection@npm:3.0.3" - checksum: 10c0/d195a82c4a8cecc67c256d22a5688c6bf1eccfa9fb05b2f13b3a63b821174092c1d582fa72b1e1c9abb696f1fd871d685b5b8ae7d8ef212305de3b810d10c8c6 + version: 3.0.11 + resolution: "@types/d3-selection@npm:3.0.11" + checksum: 10c0/0c512956c7503ff5def4bb32e0c568cc757b9a2cc400a104fc0f4cfe5e56d83ebde2a97821b6f2cb26a7148079d3b86a2f28e11d68324ed311cf35c2ed980d1d languageName: node linkType: hard "@types/d3-shape@npm:*": - version: 3.1.0 - resolution: "@types/d3-shape@npm:3.1.0" + version: 3.1.6 + resolution: "@types/d3-shape@npm:3.1.6" dependencies: "@types/d3-path": "npm:*" - checksum: 10c0/28edff992b24a7b68c6b75b2c240e19f49ab6a3fd71f1f3665bd62f9eed8302f89df01560c3c23c3b4b34331a8adcee0e7e4ae536a5ae4b9a946b51deec5c83c + checksum: 10c0/0625715925d3c7ed3d44ce998b42c993f063c31605b6e4a8046c4be0fe724e2d214fc83e86d04f429a30a6e1f439053e92b0d9e59e1180c3a5327b4a6e79fa0a languageName: node linkType: hard "@types/d3-time-format@npm:*": - version: 4.0.0 - resolution: "@types/d3-time-format@npm:4.0.0" - checksum: 10c0/3b2b95950594ded5bb6c1b21da37b049daa945c93a93ced76eac2ea6d78d6d17ebabbcf226523b07e214fe53c5d0f98f5d2e9ce7c758bc29c25e3563afddcf87 + version: 4.0.3 + resolution: "@types/d3-time-format@npm:4.0.3" + checksum: 10c0/9ef5e8e2b96b94799b821eed5d61a3d432c7903247966d8ad951b8ce5797fe46554b425cb7888fa5bf604b4663c369d7628c0328ffe80892156671c58d1a7f90 languageName: node linkType: hard "@types/d3-time@npm:*": - version: 3.0.0 - resolution: "@types/d3-time@npm:3.0.0" - checksum: 10c0/4f900608d5c557b09b38e4b096723af5eb4508a1b32f9afae253fe77a4bcbbe821a14225bab1c2ea36ddbc5c4154ab3563452c6b6eba7a9f48cefad94276e6b5 + version: 3.0.3 + resolution: "@types/d3-time@npm:3.0.3" + checksum: 10c0/245a8aadca504df27edf730de502e47a68f16ae795c86b5ca35e7afa91c133aa9ef4d08778f8cf1ed2be732f89a4105ba4b437ce2afbdfd17d3d937b6ba5f568 languageName: node linkType: hard "@types/d3-timer@npm:*": - version: 3.0.0 - resolution: "@types/d3-timer@npm:3.0.0" - checksum: 10c0/7f6cd693f6c99a360dc01e1b5aa1185cfa8f65d603f537c52c810d475c8ef8aa07ac2f8be24cc489d2e69b843e384ab30dd079ac75011dbc91b21cd216a79502 + version: 3.0.2 + resolution: "@types/d3-timer@npm:3.0.2" + checksum: 10c0/c644dd9571fcc62b1aa12c03bcad40571553020feeb5811f1d8a937ac1e65b8a04b759b4873aef610e28b8714ac71c9885a4d6c127a048d95118f7e5b506d9e1 languageName: node linkType: hard "@types/d3-transition@npm:*": - version: 3.0.2 - resolution: "@types/d3-transition@npm:3.0.2" + version: 3.0.9 + resolution: "@types/d3-transition@npm:3.0.9" dependencies: "@types/d3-selection": "npm:*" - checksum: 10c0/8b9d8a5f60820ddcaee09fb5fcfc95f221461b6e776fd338cfc548ae799bfd6bce28ece76d83c12ee3579dcda1261c5a39ffdda52b791cdb2087285f79601cf4 + checksum: 10c0/4f68b9df7ac745b3491216c54203cbbfa0f117ae4c60e2609cdef2db963582152035407fdff995b10ee383bae2f05b7743493f48e1b8e46df54faa836a8fb7b5 languageName: node linkType: hard "@types/d3-zoom@npm:*, @types/d3-zoom@npm:^3.0.1": - version: 3.0.1 - resolution: "@types/d3-zoom@npm:3.0.1" + version: 3.0.8 + resolution: "@types/d3-zoom@npm:3.0.8" dependencies: "@types/d3-interpolate": "npm:*" "@types/d3-selection": "npm:*" - checksum: 10c0/b36811218527b695722d388f891c9a3dc0f6f792d22adda5f8e0a415f7da4f1fbce92bd05654fb65684e20a48f3ebdb65c15a2cc4ab99d23cfa8447b92921109 + checksum: 10c0/1dbdbcafddcae12efb5beb6948546963f29599e18bc7f2a91fb69cc617c2299a65354f2d47e282dfb86fec0968406cd4fb7f76ba2d2fb67baa8e8d146eb4a547 languageName: node linkType: hard "@types/d3@npm:^7.4.0": - version: 7.4.0 - resolution: "@types/d3@npm:7.4.0" + version: 7.4.3 + resolution: "@types/d3@npm:7.4.3" dependencies: "@types/d3-array": "npm:*" "@types/d3-axis": "npm:*" @@ -5463,16 +4210,16 @@ __metadata: "@types/d3-timer": "npm:*" "@types/d3-transition": "npm:*" "@types/d3-zoom": "npm:*" - checksum: 10c0/f382cb3c78257f77cf4a1f19279bbe46eeb1b8df3ef5ab58edba8e18ce7afda670e79dde91fb8c2b85565ad5d0b138e62909477f3e6452b9d586050ca3e605d7 + checksum: 10c0/a9c6d65b13ef3b42c87f2a89ea63a6d5640221869f97d0657b0cb2f1dac96a0f164bf5605643c0794e0de3aa2bf05df198519aaf15d24ca135eb0e8bd8a9d879 languageName: node linkType: hard "@types/debug@npm:^4.0.0": - version: 4.1.7 - resolution: "@types/debug@npm:4.1.7" + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" dependencies: "@types/ms": "npm:*" - checksum: 10c0/742b752b60e14a752d9bf172e64f28e172f630b9933e763d2b54c7c8c1f33b99b1ef067d7312665a4d0539d8df7ea3eb664a8039f900e4b8234c647a569d123a + checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f languageName: node linkType: hard @@ -5499,20 +4246,49 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:^7.28.2": - version: 7.29.0 - resolution: "@types/eslint@npm:7.29.0" +"@types/eslint-scope@npm:^3.7.7": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "npm:*" + "@types/estree": "npm:*" + checksum: 10c0/a0ecbdf2f03912679440550817ff77ef39a30fa8bfdacaf6372b88b1f931828aec392f52283240f0d648cf3055c5ddc564544a626bcf245f3d09fcb099ebe3cc + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10c0/69ba24fee600d1e4c5abe0df086c1a4d798abf13792d8cfab912d76817fe1a894359a1518557d21237fbaf6eda93c5ab9309143dee4c59ef54336d1b3570420e + languageName: node + linkType: hard + +"@types/eslint@npm:^7.29.0 || ^8.4.1": + version: 8.56.12 + resolution: "@types/eslint@npm:8.56.12" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10c0/e4ca426abe9d55f82b69a3250bec78b6d340ad1e567f91c97ecc59d3b2d6a1d8494955ac62ad0ea14b97519db580611c02be8277cbea370bdfb0f96aa2910504 + languageName: node + linkType: hard + +"@types/estree-jsx@npm:^1.0.0": + version: 1.0.5 + resolution: "@types/estree-jsx@npm:1.0.5" dependencies: "@types/estree": "npm:*" - "@types/json-schema": "npm:*" - checksum: 10c0/780ea3f4abba77a577a9ca5c4b66f74acc0f5ff5162b9a361ca931763ed65bca062389fc26027b416ed0a54d390e2206412db6c682f565e523d2b82159e6c46f + checksum: 10c0/07b354331516428b27a3ab99ee397547d47eb223c34053b48f84872fafb841770834b90cc1a0068398e7c7ccb15ec51ab00ec64b31dc5e3dbefd624638a35c6d languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^0.0.51": - version: 0.0.51 - resolution: "@types/estree@npm:0.0.51" - checksum: 10c0/a70c60d5e634e752fcd45b58c9c046ef22ad59ede4bc93ad5193c7e3b736ebd6bcd788ade59d9c3b7da6eeb0939235f011d4c59bb4fc04d8c346b76035099dd1 +"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a languageName: node linkType: hard @@ -5523,26 +4299,50 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^1.0.5": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d +"@types/estree@npm:^0.0.51": + version: 0.0.51 + resolution: "@types/estree@npm:0.0.51" + checksum: 10c0/a70c60d5e634e752fcd45b58c9c046ef22ad59ede4bc93ad5193c7e3b736ebd6bcd788ade59d9c3b7da6eeb0939235f011d4c59bb4fc04d8c346b76035099dd1 + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^5.0.0": + version: 5.0.1 + resolution: "@types/express-serve-static-core@npm:5.0.1" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/42919f9de55e9fd1524dc72c2f06a3f3e7fbd21f42ccc6e71ea2d530c8942cc0004d468f09e8557bf51c585d9673efd455b9668c2cd2416f5d61e70dc1bc49ac languageName: node linkType: hard "@types/express-serve-static-core@npm:^4.17.33": - version: 4.19.5 - resolution: "@types/express-serve-static-core@npm:4.19.5" + version: 4.19.6 + resolution: "@types/express-serve-static-core@npm:4.19.6" dependencies: "@types/node": "npm:*" "@types/qs": "npm:*" "@types/range-parser": "npm:*" "@types/send": "npm:*" - checksum: 10c0/ba8d8d976ab797b2602c60e728802ff0c98a00f13d420d82770f3661b67fa36ea9d3be0b94f2ddd632afe1fbc6e41620008b01db7e4fabdd71a2beb5539b0725 + checksum: 10c0/4281f4ead71723f376b3ddf64868ae26244d434d9906c101cf8d436d4b5c779d01bd046e4ea0ed1a394d3e402216fabfa22b1fa4dba501061cd7c81c54045983 + languageName: node + linkType: hard + +"@types/express@npm:*": + version: 5.0.0 + resolution: "@types/express@npm:5.0.0" + dependencies: + "@types/body-parser": "npm:*" + "@types/express-serve-static-core": "npm:^5.0.0" + "@types/qs": "npm:*" + "@types/serve-static": "npm:*" + checksum: 10c0/0d74b53aefa69c3b3817ee9b5145fd50d7dbac52a8986afc2d7500085c446656d0b6dc13158c04e2d9f18f4324d4d93b0452337c5ff73dd086dca3e4ff11f47b languageName: node linkType: hard -"@types/express@npm:^4.17.21": +"@types/express@npm:^4.17.13, @types/express@npm:^4.17.21": version: 4.17.21 resolution: "@types/express@npm:4.17.21" dependencies: @@ -5555,36 +4355,36 @@ __metadata: linkType: hard "@types/geojson@npm:*": - version: 7946.0.10 - resolution: "@types/geojson@npm:7946.0.10" - checksum: 10c0/4abba554467494c1496a60622c2cb6f8c7f80b0dbb909ff898812a9f67799fd1b254802d7d266361974bd8b0c9ef32a7686183aac83b20c437f6d0eee89cd0a1 + version: 7946.0.14 + resolution: "@types/geojson@npm:7946.0.14" + checksum: 10c0/54f3997708fa2970c03eeb31f7e4540a0eb6387b15e9f8a60513a1409c23cafec8d618525404573468b59c6fecbfd053724b3327f7fca416729c26271d799f55 languageName: node linkType: hard "@types/graceful-fs@npm:^4.1.2": - version: 4.1.4 - resolution: "@types/graceful-fs@npm:4.1.4" + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" dependencies: "@types/node": "npm:*" - checksum: 10c0/6da3cc983315f750bfe9822c627008b0e1efb344b11eebf27baed4b6c77f800845bb93c24ffb614014517384e30f2a90c05ee7015333c36c87030a2b6fb40cee + checksum: 10c0/235d2fc69741448e853333b7c3d1180a966dd2b8972c8cbcd6b2a0c6cd7f8d582ab2b8e58219dbc62cce8f1b40aa317ff78ea2201cdd8249da5025adebed6f0b languageName: node linkType: hard "@types/hast@npm:^2.0.0": - version: 2.3.1 - resolution: "@types/hast@npm:2.3.1" + version: 2.3.10 + resolution: "@types/hast@npm:2.3.10" dependencies: - "@types/unist": "npm:*" - checksum: 10c0/1c8302f30cc951ed963a8f3ac70533e9093c2aebe3a872e2a12dd71fbb005fd37fa1149c56d00d13290bf55f1929fa54ed2334c71874bae56158b4aa59fffa13 + "@types/unist": "npm:^2" + checksum: 10c0/16daac35d032e656defe1f103f9c09c341a6dc553c7ec17b388274076fa26e904a71ea5ea41fd368a6d5f1e9e53be275c80af7942b9c466d8511d261c9529c7e languageName: node linkType: hard "@types/hast@npm:^3.0.0": - version: 3.0.1 - resolution: "@types/hast@npm:3.0.1" + version: 3.0.4 + resolution: "@types/hast@npm:3.0.4" dependencies: "@types/unist": "npm:*" - checksum: 10c0/54379a82dc355f10d65580e2e55e5e37f02e36caf2bb9f5c78412c55afddc5183725585e9daf7257c9112564a4ecb6091293517cad738d0f968fae92870ecc9b + checksum: 10c0/3249781a511b38f1d330fd1e3344eed3c4e7ea8eff82e835d35da78e637480d36fad37a78be5a7aed8465d237ad0446abc1150859d0fde395354ea634decf9f7 languageName: node linkType: hard @@ -5612,27 +4412,27 @@ __metadata: linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.3 - resolution: "@types/istanbul-lib-coverage@npm:2.0.3" - checksum: 10c0/820d093eed629844074ae6b94b7d131eb0aacf33b9c952488d20ccab9dadf1376dbb33a461960ace5bc58208b5fac3ff5991283e9bf07914150998ebdfb0115e + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 languageName: node linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.0 - resolution: "@types/istanbul-lib-report@npm:3.0.0" + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" dependencies: "@types/istanbul-lib-coverage": "npm:*" - checksum: 10c0/7ced458631276a28082ee40645224c3cdd8b861961039ff811d841069171c987ec7e50bc221845ec0d04df0022b2f457a21fb2f816dab2fbe64d59377b32031f + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c languageName: node linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.0 - resolution: "@types/istanbul-reports@npm:3.0.0" + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" dependencies: "@types/istanbul-lib-report": "npm:*" - checksum: 10c0/cda61eab60d96305f9a168c8742536216e53bce172f7fa949a7f32f49e00fc5a1b5d72cb1f0452449c079cf00e0c99fff7fb88d52a63c842f98dc1f02116d407 + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee languageName: node linkType: hard @@ -5646,17 +4446,10 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.6": - version: 7.0.7 - resolution: "@types/json-schema@npm:7.0.7" - checksum: 10c0/fea3f318c98e16b648b1bb9ca8690b4c12f2f0d5295943e108624b855691d73143c2db76ae82155363a3dc7fb456e4d976fb52f50355b63ef682f131a73ab1a5 - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.9 - resolution: "@types/json-schema@npm:7.0.9" - checksum: 10c0/46a9e92b7922495a50f55632d802f7e7ab2dffd76b3f894baf7b28012e73983df832977bedd748aa9a2bc8400c6e8659ca39faf6ccd93d71d41d5b0293338a0e +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db languageName: node linkType: hard @@ -5675,18 +4468,18 @@ __metadata: linkType: hard "@types/lodash@npm:^4.14.167": - version: 4.17.4 - resolution: "@types/lodash@npm:4.17.4" - checksum: 10c0/0124c64cb9fe7a0f78b6777955abd05ef0d97844d49118652eae45f8fa57bfb7f5a7a9bccc0b5a84c0a6dc09631042e4590cb665acb9d58dfd5e6543c75341ec + version: 4.17.13 + resolution: "@types/lodash@npm:4.17.13" + checksum: 10c0/c3d0b7efe7933ac0369b99f2f7bff9240d960680fdb74b41ed4bd1b3ca60cca1e31fe4046d9abbde778f941a41bc2a75eb629abf8659fa6c27b66efbbb0802a9 languageName: node linkType: hard "@types/mdast@npm:^4.0.0": - version: 4.0.1 - resolution: "@types/mdast@npm:4.0.1" + version: 4.0.4 + resolution: "@types/mdast@npm:4.0.4" dependencies: "@types/unist": "npm:*" - checksum: 10c0/818e0e24eb48b4bfd1b31e8652e267d74ab3fe44275a92f98b60a75f8bae8ccd8eaf8d7a4755ffd6f626e24a78f16c30fa7feb169de14428e04cc9adc03d0459 + checksum: 10c0/84f403dbe582ee508fd9c7643ac781ad8597fcbfc9ccb8d4715a2c92e4545e5772cbd0dbdf18eda65789386d81b009967fdef01b24faf6640f817287f54d9c82 languageName: node linkType: hard @@ -5705,22 +4498,31 @@ __metadata: linkType: hard "@types/ms@npm:*": - version: 0.7.31 - resolution: "@types/ms@npm:0.7.31" - checksum: 10c0/19fae4f587651e8761c76a0c72ba8af1700d37054476878d164b758edcc926f4420ed06037a1a7fdddc1dbea25265895d743c8b2ea44f3f3f7ac06c449b9221e + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: 10c0/ac80bd90012116ceb2d188fde62d96830ca847823e8ca71255616bc73991aa7d9f057b8bfab79e8ee44ffefb031ddd1bcce63ea82f9e66f7c31ec02d2d823ccc + languageName: node + linkType: hard + +"@types/node-forge@npm:^1.3.0": + version: 1.3.11 + resolution: "@types/node-forge@npm:1.3.11" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/3d7d23ca0ba38ac0cf74028393bd70f31169ab9aba43f21deb787840170d307d662644bac07287495effe2812ddd7ac8a14dbd43f16c2936bbb06312e96fc3b9 languageName: node linkType: hard -"@types/node@npm:*": - version: 20.11.15 - resolution: "@types/node@npm:20.11.15" +"@types/node@npm:*, @types/node@npm:^22.0.0": + version: 22.9.0 + resolution: "@types/node@npm:22.9.0" dependencies: - undici-types: "npm:~5.26.4" - checksum: 10c0/7dfab4208fedc02e9584c619551906f46ade7955bb929b1e32e354a50522eb532d6bfb2844fdaad2c8dca03be84a590674460c64cb101e1a33bb318e1ec448d4 + undici-types: "npm:~6.19.8" + checksum: 10c0/3f46cbe0a49bab4ba30494025e4c8a6e699b98ac922857aa1f0209ce11a1313ee46e6808b8f13fe5b8b960a9d7796b77c8d542ad4e9810e85ef897d5593b5d51 languageName: node linkType: hard -"@types/node@npm:22.5.4, @types/node@npm:^22.0.0": +"@types/node@npm:22.5.4": version: 22.5.4 resolution: "@types/node@npm:22.5.4" dependencies: @@ -5730,46 +4532,46 @@ __metadata: linkType: hard "@types/papaparse@npm:^5.3.9": - version: 5.3.9 - resolution: "@types/papaparse@npm:5.3.9" + version: 5.3.15 + resolution: "@types/papaparse@npm:5.3.15" dependencies: "@types/node": "npm:*" - checksum: 10c0/eebc50780f26b2d999147df749dc930e88e5432191e811a9aeeae9df1a6b0a4f94d29126d07be1c75c46b94483689144a581aebc9ad9809deab134db479e14bf + checksum: 10c0/9333e980b9ed4102f80b1791b6dfefb23fb4d27252b2b6ee6084b2cd847cbe802cfb838d46b4f6b4cb035f9225e0323034c956ee21bbcbcb4cbdb663302d5eeb languageName: node linkType: hard "@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: 10c0/1d3012ab2fcdad1ba313e1d065b737578f6506c8958e2a7a5bdbdef517c7e930796cb1599ee067d5dee942fb3a764df64b5eef7e9ae98548d776e86dcffba985 + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 10c0/b1b863ac34a2c2172fbe0807a1ec4d5cb684e48d422d15ec95980b81475fac4fdb3768a8b13eef39130203a7c04340fc167bae057c7ebcafd7dec9fe6c36aeb1 languageName: node linkType: hard "@types/prettier@npm:^2.1.5": - version: 2.4.2 - resolution: "@types/prettier@npm:2.4.2" - checksum: 10c0/76cb69d0142e6007b7c1bcb7d4ff413e1bac3a9123abcb3a6fc773beb194e0cfbb1df5e3a3c5920eee6c1ed2382165219a7e1c4606187584b4e86aaaa94940c9 + version: 2.7.3 + resolution: "@types/prettier@npm:2.7.3" + checksum: 10c0/0960b5c1115bb25e979009d0b44c42cf3d792accf24085e4bfce15aef5794ea042e04e70c2139a2c3387f781f18c89b5706f000ddb089e9a4a2ccb7536a2c5f0 languageName: node linkType: hard "@types/prop-types@npm:*": - version: 15.7.4 - resolution: "@types/prop-types@npm:15.7.4" - checksum: 10c0/014bb826592fab01499931259969aafc21d5a8ff4ece3e3fb8e2b5186bed17656f7dcdccf9a98c27fee74d7d0697aa3f53ea971a72679597f0ca0c3d5ca585d3 + version: 15.7.13 + resolution: "@types/prop-types@npm:15.7.13" + checksum: 10c0/1b20fc67281902c6743379960247bc161f3f0406ffc0df8e7058745a85ea1538612109db0406290512947f9632fe9e10e7337bf0ce6338a91d6c948df16a7c61 languageName: node linkType: hard "@types/q@npm:^1.5.1": - version: 1.5.4 - resolution: "@types/q@npm:1.5.4" - checksum: 10c0/764e99b9d2589598493b5737d50a3d1e15093f796f3bd76f45a7275dcf074354276d80af24313957bc1f2f516fa4236a63c5064bea1102ec89105e0176d676a2 + version: 1.5.8 + resolution: "@types/q@npm:1.5.8" + checksum: 10c0/6b2903a03f23ce737503b8a4c409a4133f15009a70e125b5efd5d8c315a5426e64b574ee65288c9dd655c631dcc51c69e4b540b59905ad0b1398952ba367d88b languageName: node linkType: hard "@types/qs@npm:*": - version: 6.9.15 - resolution: "@types/qs@npm:6.9.15" - checksum: 10c0/49c5ff75ca3adb18a1939310042d273c9fc55920861bd8e5100c8a923b3cda90d759e1a95e18334092da1c8f7b820084687770c83a1ccef04fb2c6908117c823 + version: 6.9.16 + resolution: "@types/qs@npm:6.9.16" + checksum: 10c0/a4e871b80fff623755e356fd1f225aea45ff7a29da30f99fddee1a05f4f5f33485b314ab5758145144ed45708f97e44595aa9a8368e9bbc083932f931b12dbb6 languageName: node linkType: hard @@ -5790,22 +4592,21 @@ __metadata: linkType: hard "@types/react-transition-group@npm:^4.4.0": - version: 4.4.4 - resolution: "@types/react-transition-group@npm:4.4.4" + version: 4.4.11 + resolution: "@types/react-transition-group@npm:4.4.11" dependencies: "@types/react": "npm:*" - checksum: 10c0/0e593863c60550002bb7a5bf60dad719de78580017f87eadf32661d1870345a4ef22e2e37902e05d05955494f2c0cae5ef46510032005e8e969273eee0ae8519 + checksum: 10c0/8fbf0dcc1b81985cdcebe3c59d769fe2ea3f4525f12c3a10a7429a59f93e303c82b2abb744d21cb762879f4514969d70a7ab11b9bf486f92213e8fe70e04098d languageName: node linkType: hard -"@types/react@npm:*": - version: 18.0.5 - resolution: "@types/react@npm:18.0.5" +"@types/react@npm:*, @types/react@npm:^16.8.0 || ^17.0.0 || ^18.0.0": + version: 18.3.12 + resolution: "@types/react@npm:18.3.12" dependencies: "@types/prop-types": "npm:*" - "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 10c0/648fba7666c411e72cf58e13bb066760a8e872f9dc86ccde22c5e5ca711903a40a7cf6cd5c0caa7f7c90c428f6310513f4d39bb7668eb1d46d16443039bc163a + checksum: 10c0/8bae8d9a41619804561574792e29112b413044eb0d53746dde2b9720c1f9a59f71c895bbd7987cd8ce9500b00786e53bc032dced38cddf42910458e145675290 languageName: node linkType: hard @@ -5819,16 +4620,6 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^16.8.0 || ^17.0.0 || ^18.0.0": - version: 18.3.3 - resolution: "@types/react@npm:18.3.3" - dependencies: - "@types/prop-types": "npm:*" - csstype: "npm:^3.0.2" - checksum: 10c0/fe455f805c5da13b89964c3d68060cebd43e73ec15001a68b34634604a78140e6fc202f3f61679b9d809dde6d7a7c2cb3ed51e0fd1462557911db09879b55114 - languageName: node - linkType: hard - "@types/resolve@npm:1.17.1": version: 1.17.1 resolution: "@types/resolve@npm:1.17.1" @@ -5845,21 +4636,14 @@ __metadata: languageName: node linkType: hard -"@types/retry@npm:^0.12.0": +"@types/retry@npm:0.12.0": version: 0.12.0 resolution: "@types/retry@npm:0.12.0" checksum: 10c0/7c5c9086369826f569b83a4683661557cab1361bac0897a1cefa1a915ff739acd10ca0d62b01071046fe3f5a3f7f2aec80785fe283b75602dc6726781ea3e328 languageName: node linkType: hard -"@types/scheduler@npm:*": - version: 0.16.1 - resolution: "@types/scheduler@npm:0.16.1" - checksum: 10c0/78aa5a8b19b42b7b6dc1dc3fb64c1ef2cb87b685292a0951d06d15ac4de8926c9a219bd027f438c3cb701cf525cf1f233bc09a90af5488ae8b98af2ec84b656a - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.4, @types/semver@npm:^7.5.6": +"@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4, @types/semver@npm:^7.5.6": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" checksum: 10c0/8663ff927234d1c5fcc04b33062cb2b9fcfbe0f5f351ed26c4d1e1581657deebd506b41ff7fdf89e787e3d33ce05854bc01686379b89e9c49b564c4cfa988efa @@ -5876,7 +4660,16 @@ __metadata: languageName: node linkType: hard -"@types/serve-static@npm:*": +"@types/serve-index@npm:^1.9.1": + version: 1.9.4 + resolution: "@types/serve-index@npm:1.9.4" + dependencies: + "@types/express": "npm:*" + checksum: 10c0/94c1b9e8f1ea36a229e098e1643d5665d9371f8c2658521718e259130a237c447059b903bac0dcc96ee2c15fd63f49aa647099b7d0d437a67a6946527a837438 + languageName: node + linkType: hard + +"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10": version: 1.15.7 resolution: "@types/serve-static@npm:1.15.7" dependencies: @@ -5887,31 +4680,40 @@ __metadata: languageName: node linkType: hard +"@types/sockjs@npm:^0.3.33": + version: 0.3.36 + resolution: "@types/sockjs@npm:0.3.36" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/b20b7820ee813f22de4f2ce98bdd12c68c930e016a8912b1ed967595ac0d8a4cbbff44f4d486dd97f77f5927e7b5725bdac7472c9ec5b27f53a5a13179f0612f + languageName: node + linkType: hard + "@types/stack-utils@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/stack-utils@npm:2.0.0" - checksum: 10c0/caad537eef33daaa830e8ee5bc42e51803d7df175014495f2df6129c018a2e80bf19a4d6e5115937eafb03d3f2998a089b0a3892afbefd462d9e83ffad2fc93b + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c languageName: node linkType: hard "@types/trusted-types@npm:^2.0.2": - version: 2.0.2 - resolution: "@types/trusted-types@npm:2.0.2" - checksum: 10c0/8c5253d7a297ba375b1dff7704013fb8d31c08c681d257db9e7e0624309cbb4a1e0c916bdd5a8c378992391126af0adb731720ba7642244a2f2c1ff42aba5bcf + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 10c0/4c4855f10de7c6c135e0d32ce462419d8abbbc33713b31d294596c0cc34ae1fa6112a2f9da729c8f7a20707782b0d69da3b1f8df6645b0366d08825ca1522e0c languageName: node linkType: hard -"@types/unist@npm:*": - version: 2.0.3 - resolution: "@types/unist@npm:2.0.3" - checksum: 10c0/fd9a3514566023e6c3c96aaadd62118d1566ec28ac66dbcf01ad0d5439f625a757406327b0207335ae9e810051583f05047026a3354a4f57ce68cae6f5f86821 +"@types/unist@npm:*, @types/unist@npm:^3.0.0": + version: 3.0.3 + resolution: "@types/unist@npm:3.0.3" + checksum: 10c0/2b1e4adcab78388e088fcc3c0ae8700f76619dbcb4741d7d201f87e2cb346bfc29a89003cfea2d76c996e1061452e14fcd737e8b25aacf949c1f2d6b2bc3dd60 languageName: node linkType: hard -"@types/unist@npm:^3.0.0": - version: 3.0.0 - resolution: "@types/unist@npm:3.0.0" - checksum: 10c0/2910fe0eb4c2d85367bf4b1caaef1e8e5d2b212b9df17ba73c32b146571c0ef0322e67e5db0052c2a3071afff1196c14a0b906bcd1512e659221b911ca8e5991 +"@types/unist@npm:^2, @types/unist@npm:^2.0.0": + version: 2.0.11 + resolution: "@types/unist@npm:2.0.11" + checksum: 10c0/24dcdf25a168f453bb70298145eb043cfdbb82472db0bc0b56d6d51cd2e484b9ed8271d4ac93000a80da568f2402e9339723db262d0869e2bf13bc58e081768d languageName: node linkType: hard @@ -5922,49 +4724,60 @@ __metadata: languageName: node linkType: hard +"@types/ws@npm:^8.5.5": + version: 8.5.13 + resolution: "@types/ws@npm:8.5.13" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/a5430aa479bde588e69cb9175518d72f9338b6999e3b2ae16fc03d3bdcff8347e486dc031e4ed14601260463c07e1f9a0d7511dfc653712b047c439c680b0b34 + languageName: node + linkType: hard + "@types/yargs-parser@npm:*": - version: 20.2.0 - resolution: "@types/yargs-parser@npm:20.2.0" - checksum: 10c0/0464e5538340ef2541aa12ca2ccf0cbf2cd6f83edb964fdef61936885a7533b21189e6b9a31ad1aec2c81f8c9350707b2dd18697d88b752a20d2c731d968388d + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 languageName: node linkType: hard "@types/yargs@npm:^16.0.0": - version: 16.0.4 - resolution: "@types/yargs@npm:16.0.4" + version: 16.0.9 + resolution: "@types/yargs@npm:16.0.9" dependencies: "@types/yargs-parser": "npm:*" - checksum: 10c0/892bfe48183756d4e3b4922abf582c34c326975368f4572af0521f51b6628997c2f916cb2d27f91494e5bbcc0425a9224f2f02191003e4aa2e360b78116ee8a7 + checksum: 10c0/be24bd9a56c97ddb2964c1c18f5b9fe8271a50e100dc6945989901aae58f7ce6fb8f3a591c749a518401b6301358dbd1997e83c36138a297094feae7f9ac8211 languageName: node linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.11 - resolution: "@types/yargs@npm:17.0.11" + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" dependencies: "@types/yargs-parser": "npm:*" - checksum: 10c0/323fd7b420ddc9cb1014d11949b559bfb60c9123df882e7b84d92cc057e17e6fdd5419daa373a96c8025d82828bc05bedc72ff087aeb6a845410a0985b07e3b5 + checksum: 10c0/d16937d7ac30dff697801c3d6f235be2166df42e4a88bf730fa6dc09201de3727c0a9500c59a672122313341de5f24e45ee0ff579c08ce91928e519090b7906b languageName: node linkType: hard "@types/zrender@npm:*": - version: 4.0.3 - resolution: "@types/zrender@npm:4.0.3" - checksum: 10c0/942ff4b418b2227fd8ab767493cdabf70a5733045f17173f6d736971e90777b7ce52632fed0c1f1cbc3ef692495c27316663c6940494102f0815fb900c1224bb + version: 4.0.6 + resolution: "@types/zrender@npm:4.0.6" + checksum: 10c0/baaf25731115fe18cb281bf38e6d414964307532381d8479edf7a4b25baecec737fed620802380fa126139e506d56d62d70fe8142c5c386e340fa91aa988dddd languageName: node linkType: hard "@typescript-eslint/eslint-plugin@npm:^5.5.0": - version: 5.8.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.8.0" + version: 5.62.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" dependencies: - "@typescript-eslint/experimental-utils": "npm:5.8.0" - "@typescript-eslint/scope-manager": "npm:5.8.0" - debug: "npm:^4.3.2" - functional-red-black-tree: "npm:^1.0.1" - ignore: "npm:^5.1.8" - regexpp: "npm:^3.2.0" - semver: "npm:^7.3.5" + "@eslint-community/regexpp": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/type-utils": "npm:5.62.0" + "@typescript-eslint/utils": "npm:5.62.0" + debug: "npm:^4.3.4" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + natural-compare-lite: "npm:^1.4.0" + semver: "npm:^7.3.7" tsutils: "npm:^3.21.0" peerDependencies: "@typescript-eslint/parser": ^5.0.0 @@ -5972,89 +4785,119 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/4b9ab90af6a3e941002ea1f42866586bc7d2b8f2a829e776deb27bd3d5559f2d784e3a1200a135bcce83001654c80d620f0fc6fbd31e093b431007b1fba9e85a + checksum: 10c0/3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a languageName: node linkType: hard -"@typescript-eslint/experimental-utils@npm:5.8.0, @typescript-eslint/experimental-utils@npm:^5.0.0, @typescript-eslint/experimental-utils@npm:^5.5.0": - version: 5.8.0 - resolution: "@typescript-eslint/experimental-utils@npm:5.8.0" +"@typescript-eslint/experimental-utils@npm:^5.0.0": + version: 5.62.0 + resolution: "@typescript-eslint/experimental-utils@npm:5.62.0" dependencies: - "@types/json-schema": "npm:^7.0.9" - "@typescript-eslint/scope-manager": "npm:5.8.0" - "@typescript-eslint/types": "npm:5.8.0" - "@typescript-eslint/typescript-estree": "npm:5.8.0" - eslint-scope: "npm:^5.1.1" - eslint-utils: "npm:^3.0.0" + "@typescript-eslint/utils": "npm:5.62.0" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/a46cc49e92ac0f7c9e4b95d00d79b7b48ba33b7b88caf930c9ac3c6ac4762ef89e5db2c9e07a34019b3ad27ccb08cd3c94bd5d7fee951e6e5ca4bb175f49288e + checksum: 10c0/f7037977e00849cd8c03677a88b0659a4f0e0b1e0151aebb47c49c92b8e57408578142df598eac08b364623d926343c724f42494f87662e437b1c89f0b2e815b languageName: node linkType: hard "@typescript-eslint/parser@npm:^5.5.0": - version: 5.8.0 - resolution: "@typescript-eslint/parser@npm:5.8.0" + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" dependencies: - "@typescript-eslint/scope-manager": "npm:5.8.0" - "@typescript-eslint/types": "npm:5.8.0" - "@typescript-eslint/typescript-estree": "npm:5.8.0" - debug: "npm:^4.3.2" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + debug: "npm:^4.3.4" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/742be3b52de0900c9f621c29e056eabfaaf62f11845e35785f1ae3cd591522a6a015ca96b76bf924fc1b8ce89bece5c7c7e15b5ba0bf198763dca5b0d86c2b78 + checksum: 10c0/315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.8.0": - version: 5.8.0 - resolution: "@typescript-eslint/scope-manager@npm:5.8.0" +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" dependencies: - "@typescript-eslint/types": "npm:5.8.0" - "@typescript-eslint/visitor-keys": "npm:5.8.0" - checksum: 10c0/bc9f51c3d30c18ee5447db5a6a9182f56e26ef4605192b5d1a7082d18b27a38c404536d78af2fff7f3ebffa48a2e5aff514b67f3feef79507e33977b2defa7c3 + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f languageName: node linkType: hard -"@typescript-eslint/types@npm:5.8.0": - version: 5.8.0 - resolution: "@typescript-eslint/types@npm:5.8.0" - checksum: 10c0/106cffd7bc2027a8f4dddd2b5902facd3fcf4b2c381274049f96be3c6db4a519a0b7d92312c85f6ad60ff5d9d2b2d2426849b017b7d91f8350d70e599580650b +"@typescript-eslint/type-utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/type-utils@npm:5.62.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:5.62.0" + "@typescript-eslint/utils": "npm:5.62.0" + debug: "npm:^4.3.4" + tsutils: "npm:^3.21.0" + peerDependencies: + eslint: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.8.0": - version: 5.8.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.8.0" +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 10c0/7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" dependencies: - "@typescript-eslint/types": "npm:5.8.0" - "@typescript-eslint/visitor-keys": "npm:5.8.0" - debug: "npm:^4.3.2" - globby: "npm:^11.0.4" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" - semver: "npm:^7.3.5" + semver: "npm:^7.3.7" tsutils: "npm:^3.21.0" peerDependenciesMeta: typescript: optional: true - checksum: 10c0/38ffb0bef1270c81fcaef7151070b8486971d039906da2db20f24ed648b0e385d0f7c77554ee38b2b06024dfbc87471a726b06f23011cf983aba28d1875c55f3 + checksum: 10c0/d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.8.0": - version: 5.8.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.8.0" +"@typescript-eslint/utils@npm:5.62.0, @typescript-eslint/utils@npm:^5.58.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@types/json-schema": "npm:^7.0.9" + "@types/semver": "npm:^7.3.12" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + eslint-scope: "npm:^5.1.1" + semver: "npm:^7.3.7" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" dependencies: - "@typescript-eslint/types": "npm:5.8.0" - eslint-visitor-keys: "npm:^3.0.0" - checksum: 10c0/157dbdb7ac43d68c14e78d074a87f34229f932a3bd70a60d014fb0dd93ee51d6a7e98619b9e0719bf2d499fc42ff41f131d19c244d30ce87009d94bf1b7912bd + "@typescript-eslint/types": "npm:5.62.0" + eslint-visitor-keys: "npm:^3.3.0" + checksum: 10c0/7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.0.0": +"@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d @@ -6212,6 +5055,13 @@ __metadata: languageName: node linkType: hard +"@wojtekmaj/date-utils@npm:^1.1.3, @wojtekmaj/date-utils@npm:^1.5.0": + version: 1.5.1 + resolution: "@wojtekmaj/date-utils@npm:1.5.1" + checksum: 10c0/7c213cca5ab6b84ef61b9aea2b9fb8a04bf4c9764b28a97ffc4ee46a3e81560532a74d106a6f8aeef4792e1aaa6ea3dfd3c4a639dddbea560eb3f33cd62b8d7d + languageName: node + linkType: hard + "@xtuc/ieee754@npm:^1.2.0": version: 1.2.0 resolution: "@xtuc/ieee754@npm:1.2.0" @@ -6227,9 +5077,9 @@ __metadata: linkType: hard "abab@npm:^2.0.3, abab@npm:^2.0.5": - version: 2.0.5 - resolution: "abab@npm:2.0.5" - checksum: 10c0/6d70f6a1362a1bd31d8033cfc71c1930e336758b2ac517192338e76c3ea55f53a6aafad60162e8152c4e45c95e0a1499888e803fed9060764c4e102587c497a8 + version: 2.0.6 + resolution: "abab@npm:2.0.6" + checksum: 10c0/0b245c3c3ea2598fe0025abf7cc7bb507b06949d51e8edae5d12c1b847a0a0c09639abcb94788332b4e2044ac4491c1e8f571b51c7826fd4b0bda1685ad4a278 languageName: node linkType: hard @@ -6240,17 +5090,7 @@ __metadata: languageName: node linkType: hard -"accepts@npm:~1.3.4, accepts@npm:~1.3.5": - version: 1.3.7 - resolution: "accepts@npm:1.3.7" - dependencies: - mime-types: "npm:~2.1.24" - negotiator: "npm:0.6.2" - checksum: 10c0/74c5fc6ad208529258916abc240640caa09d577c991f36bc15916a537b6a2e72ef051c204499297bf7e78357d19e86eb989fb81f558d004be44a33fdc17a9057 - languageName: node - linkType: hard - -"accepts@npm:~1.3.8": +"accepts@npm:~1.3.4, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: @@ -6270,36 +5110,16 @@ __metadata: languageName: node linkType: hard -"acorn-import-attributes@npm:^1.9.5": - version: 1.9.5 - resolution: "acorn-import-attributes@npm:1.9.5" - peerDependencies: - acorn: ^8 - checksum: 10c0/5926eaaead2326d5a86f322ff1b617b0f698aa61dc719a5baa0e9d955c9885cc71febac3fb5bacff71bbf2c4f9c12db2056883c68c53eb962c048b952e1e013d - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.1": - version: 5.3.1 - resolution: "acorn-jsx@npm:5.3.1" +"acorn-jsx@npm:^5.3.1, acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/e3fa982a32bbaec085bf4a7638189a49bba1e015dc5d0a7e6b8731644e700d714488832bca24df0fe8ec9869811c4c1ee23b6f4b3ba25c2618db643ad0970fbd - languageName: node - linkType: hard - -"acorn-node@npm:^1.6.1": - version: 1.8.2 - resolution: "acorn-node@npm:1.8.2" - dependencies: - acorn: "npm:^7.0.0" - acorn-walk: "npm:^7.0.0" - xtend: "npm:^4.0.2" - checksum: 10c0/e9a20dae515701cd3d03812929a7f74c4363fdcb4c74d762f7c43566dc87175ad817aa281ba11c88dabf5e8d35aec590073393c02a04bbdcfda58c2f320d08ac + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 languageName: node linkType: hard -"acorn-walk@npm:^7.0.0, acorn-walk@npm:^7.1.1, acorn-walk@npm:^7.2.0": +"acorn-walk@npm:^7.1.1, acorn-walk@npm:^7.2.0": version: 7.2.0 resolution: "acorn-walk@npm:7.2.0" checksum: 10c0/ff99f3406ed8826f7d6ef6ac76b7608f099d45a1ff53229fa267125da1924188dbacf02e7903dfcfd2ae4af46f7be8847dc7d564c73c4e230dfb69c8ea8e6b4c @@ -6307,13 +5127,15 @@ __metadata: linkType: hard "acorn-walk@npm:^8.1.1": - version: 8.2.0 - resolution: "acorn-walk@npm:8.2.0" - checksum: 10c0/dbe92f5b2452c93e960c5594e666dd1fae141b965ff2cb4a1e1d0381e3e4db4274c5ce4ffa3d681a86ca2a8d4e29d5efc0670a08e23fd2800051ea387df56ca2 + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 languageName: node linkType: hard -"acorn@npm:^7.0.0, acorn@npm:^7.1.1, acorn@npm:^7.4.1": +"acorn@npm:^7.1.1, acorn@npm:^7.4.1": version: 7.4.1 resolution: "acorn@npm:7.4.1" bin: @@ -6322,28 +5144,19 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.11.3, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.6.0, acorn@npm:^8.8.2": - version: 8.11.3 - resolution: "acorn@npm:8.11.3" - bin: - acorn: bin/acorn - checksum: 10c0/3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 - languageName: node - linkType: hard - -"acorn@npm:^8.7.1": - version: 8.12.1 - resolution: "acorn@npm:8.12.1" +"acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" bin: acorn: bin/acorn - checksum: 10c0/51fb26cd678f914e13287e886da2d7021f8c2bc0ccc95e03d3e0447ee278dd3b40b9c57dc222acd5881adcf26f3edc40901a4953403232129e3876793cd17386 + checksum: 10c0/6d4ee461a7734b2f48836ee0fbb752903606e576cc100eb49340295129ca0b452f3ba91ddd4424a1d4406a98adfb2ebb6bd0ff4c49d7a0930c10e462719bbfd7 languageName: node linkType: hard "address@npm:^1.0.1, address@npm:^1.1.2": - version: 1.1.2 - resolution: "address@npm:1.1.2" - checksum: 10c0/3ac908133d1d8cc52110473833718e82775428e73b4eb51b42cd7c7f571c7459c28c3c54592231efdcb96f6ed376eb490194e97c533df9e8efb910fa29a34e55 + version: 1.2.2 + resolution: "address@npm:1.2.2" + checksum: 10c0/1c8056b77fb124456997b78ed682ecc19d2fd7ea8bd5850a2aa8c3e3134c913847c57bcae418622efd32ba858fa1e242a40a251ac31da0515664fc0ac03a047d languageName: node linkType: hard @@ -6408,7 +5221,7 @@ __metadata: languageName: node linkType: hard -"ajv-keywords@npm:^5.0.0": +"ajv-keywords@npm:^5.1.0": version: 5.1.0 resolution: "ajv-keywords@npm:5.1.0" dependencies: @@ -6419,7 +5232,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5": +"ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -6431,38 +5244,24 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.6.0, ajv@npm:^8.8.0": - version: 8.8.2 - resolution: "ajv@npm:8.8.2" +"ajv@npm:^8.0.0, ajv@npm:^8.6.0, ajv@npm:^8.9.0": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" dependencies: - fast-deep-equal: "npm:^3.1.1" + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" json-schema-traverse: "npm:^1.0.0" require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.2.2" - checksum: 10c0/526cb6e071d4f3f9c7c9aa94db8109d12cfe2f37e47abacf3853aafd92c325c32f1710677df3136740677f715631689607ed72fefe6aed631c00545e6018e077 - languageName: node - linkType: hard - -"alphanum-sort@npm:^1.0.2": - version: 1.0.2 - resolution: "alphanum-sort@npm:1.0.2" - checksum: 10c0/2944e7ae4d36328a2df071017c01cd1d06ef6a5d87c8fbbeffd9075d42f4da48051bde79a5e3d863b98f37778c76e8eebd4353c1e7bbba2480382096953ec2b8 - languageName: node - linkType: hard - -"ansi-colors@npm:^4.1.1": - version: 4.1.1 - resolution: "ansi-colors@npm:4.1.1" - checksum: 10c0/6086ade4336b4250b6b25e144b83e5623bcaf654d3df0c3546ce09c9c5ff999cb6a6f00c87e802d05cf98aef79d92dc76ade2670a2493b8dcb80220bec457838 + checksum: 10c0/ec3ba10a573c6b60f94639ffc53526275917a2df6810e4ab5a6b959d87459f9ef3f00d5e7865b82677cb7d21590355b34da14d1d0b9c32d75f95a187e76fff35 languageName: node linkType: hard "ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.1": - version: 4.3.1 - resolution: "ansi-escapes@npm:4.3.1" + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" dependencies: - type-fest: "npm:^0.11.0" - checksum: 10c0/85739659039d7c959a5f47067ec50bfead0b022fcc7ea6a2558f6dc32e2c7547ceda20a21e0f81d58685c388e7acdfeed66273f5ce1e32bcb0cae7d1f9d036a5 + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 languageName: node linkType: hard @@ -6484,7 +5283,16 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^5.0.0, ansi-regex@npm:^5.0.1": +"ansi-html@npm:^0.0.9": + version: 0.0.9 + resolution: "ansi-html@npm:0.0.9" + bin: + ansi-html: bin/ansi-html + checksum: 10c0/4a5de9802fb50193e32b51a9ea48dc0d7e4436b860cb819d7110c62f2bfb1410288e1a2f9a848269f5eab8f903797a7f0309fe4c552f92a92b61a5b759ed52bd + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 @@ -6492,9 +5300,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc languageName: node linkType: hard @@ -6523,14 +5331,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^6.0.0": - version: 6.1.0 - resolution: "ansi-styles@npm:6.1.0" - checksum: 10c0/39d4ffae6559b24716db7c84b5e750aef6b0b433651f7b4a789f40b41be24ee7ea532afe540cea9cedb518baf334f9d9029af47d851ae5dcbdb2ca5a4862b8b8 - languageName: node - linkType: hard - -"ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c @@ -6544,23 +5345,13 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.1": - version: 3.1.1 - resolution: "anymatch@npm:3.1.1" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 10c0/cddd4998188a9ad48d95181e8d502559ac81484d7c3dbe67a5fcf76abd3255e87906b8ff0a63c7c09a5226bfe5511b3ab42755acf0e44546d94733077577b435 - languageName: node - linkType: hard - -"anymatch@npm:~3.1.2": - version: 3.1.2 - resolution: "anymatch@npm:3.1.2" +"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" dependencies: normalize-path: "npm:^3.0.0" picomatch: "npm:^2.0.4" - checksum: 10c0/900645535aee46ed7958f4f5b5e38abcbf474b5230406e913de15fc9a1310f0d5322775deb609688efe31010fa57831e55d36040b19826c22ce61d537e9b9759 + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac languageName: node linkType: hard @@ -6571,13 +5362,6 @@ __metadata: languageName: node linkType: hard -"arg@npm:^5.0.1": - version: 5.0.1 - resolution: "arg@npm:5.0.1" - checksum: 10c0/b7087004468507db9bb5dbd00de408e0b589b63620e09ca8c45bef0731fce337ce43f66fb1dd88551648f31e8ae081a60a8ed27a60213d3968b6f65b7b1f5930 - languageName: node - linkType: hard - "arg@npm:^5.0.2": version: 5.0.2 resolution: "arg@npm:5.0.2" @@ -6610,20 +5394,20 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^4.2.2": - version: 4.2.2 - resolution: "aria-query@npm:4.2.2" - dependencies: - "@babel/runtime": "npm:^7.10.2" - "@babel/runtime-corejs3": "npm:^7.10.2" - checksum: 10c0/7e224fbbb4de8210c5d8cbaf0e1a22caa78f2068bf231f4c75302bd77eeba1c3e3b97912080535140be60174720d2ac817e5d6fec18592951b4b6488d4da7cdc +"aria-query@npm:^5.0.0, aria-query@npm:^5.3.2": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e languageName: node linkType: hard -"aria-query@npm:^5.0.0": - version: 5.0.2 - resolution: "aria-query@npm:5.0.2" - checksum: 10c0/fe1ce894c408b58a6bc9c905c7400ccf278944b1cc67be9766124324f1a2a78afdb07b90569faa2420a4f360dca7f641d3511ef42871b857b8079ac856a3b1bd +"array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.5" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 languageName: node linkType: hard @@ -6634,65 +5418,120 @@ __metadata: languageName: node linkType: hard -"array-flatten@npm:^2.1.0": - version: 2.1.2 - resolution: "array-flatten@npm:2.1.2" - checksum: 10c0/bdc1cee68e41bec9cfc1161408734e2269428ef371445606bce4e6241001e138a94b9a617cc9a5b4b7fe6a3a51e3d5a942646975ce82a2e202ccf3e9b478c82f +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": + version: 3.1.8 + resolution: "array-includes@npm:3.1.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + is-string: "npm:^1.0.7" + checksum: 10c0/5b1004d203e85873b96ddc493f090c9672fd6c80d7a60b798da8a14bff8a670ff95db5aafc9abc14a211943f05220dacf8ea17638ae0af1a6a47b8c0b48ce370 languageName: node linkType: hard -"array-includes@npm:^3.1.2": - version: 3.1.2 - resolution: "array-includes@npm:3.1.2" +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"array.prototype.findlast@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.1" - get-intrinsic: "npm:^1.0.1" - is-string: "npm:^1.0.5" - checksum: 10c0/7e3fd1982c102e72fc1fb2497f72b5dac0c57be0ebfb267679c9ef02f7edec5e7bffc56f99a1bb3c3b29fe68f8a8fe854d1a9a27316424ea636ddefcc8cffd64 + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775 languageName: node linkType: hard -"array-includes@npm:^3.1.3, array-includes@npm:^3.1.4": - version: 3.1.4 - resolution: "array-includes@npm:3.1.4" +"array.prototype.findlastindex@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlastindex@npm:1.2.5" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - get-intrinsic: "npm:^1.1.1" - is-string: "npm:^1.0.7" - checksum: 10c0/04c05682b45c1d58b9ad91296b3b91550c66196aae3076a42a0bb9094c00a9c3e4178520d13b093baab3313d862725a4596554da31989b12882be2073df038ac + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/962189487728b034f3134802b421b5f39e42ee2356d13b42d2ddb0e52057ffdcc170b9524867f4f0611a6f638f4c19b31e14606e8bcbda67799e26685b195aa3 languageName: node linkType: hard -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b languageName: node linkType: hard -"array.prototype.flat@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.flat@npm:1.2.5" +"array.prototype.flatmap@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.0" - checksum: 10c0/91f3a8f8a74552ffb8f001ff26aaacf2baedf8bf9334cee9ac440ffb095f05df40f88c78384d004d4999b5876b30a6520a77dd9e5bccf065d68d7f3910e5ed6e + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.flatmap@npm:1.2.5" +"array.prototype.reduce@npm:^1.0.6": + version: 1.0.7 + resolution: "array.prototype.reduce@npm:1.0.7" dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.0" - checksum: 10c0/dc58f602a8ab7871739e08f4a25b71ddbfbaa84c73b7e6eb203f4943c2f3b28c41ef313de2515b95cb059408b33699cb9abca89a1d3c4701e2ba7b25e07b4256 + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-array-method-boxes-properly: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + is-string: "npm:^1.0.7" + checksum: 10c0/97aac907d7b15088d5b991bad79de96f95ea0d47a701a034e2dc816e0aabaed2fb401d7fe65ab6fda05eafa58319aa2d1bac404f515e162b81b3b61a51224db2 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/eb3c4c4fc0381b0bf6dba2ea4d48d367c2827a0d4236a5718d97caaccc6b78f11f4cadf090736e86301d295a6aa4967ed45568f92ced51be8cbbacd9ca410943 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.3" + is-array-buffer: "npm:^3.0.4" + is-shared-array-buffer: "npm:^1.0.2" + checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 languageName: node linkType: hard @@ -6714,10 +5553,10 @@ __metadata: languageName: node linkType: hard -"ast-types-flow@npm:^0.0.7": - version: 0.0.7 - resolution: "ast-types-flow@npm:0.0.7" - checksum: 10c0/f381529f2da535949ba6cceddbdfaa33b4d5105842e147ec63582f560ea9ecc1a08f66457664f3109841d3053641fa8b9fa94ba607f1ea9f6c804fe5dee44a1d +"ast-types-flow@npm:^0.0.8": + version: 0.0.8 + resolution: "ast-types-flow@npm:0.0.8" + checksum: 10c0/f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e languageName: node linkType: hard @@ -6726,23 +5565,14 @@ __metadata: resolution: "ast-types@npm:0.16.1" dependencies: tslib: "npm:^2.0.1" - checksum: 10c0/abcc49e42eb921a7ebc013d5bec1154651fb6dbc3f497541d488859e681256901b2990b954d530ba0da4d0851271d484f7057d5eff5e07cb73e8b10909f711bf - languageName: node - linkType: hard - -"async@npm:^2.6.2": - version: 2.6.4 - resolution: "async@npm:2.6.4" - dependencies: - lodash: "npm:^4.17.14" - checksum: 10c0/0ebb3273ef96513389520adc88e0d3c45e523d03653cc9b66f5c46f4239444294899bfd13d2b569e7dbfde7da2235c35cf5fd3ece9524f935d41bbe4efccdad0 + checksum: 10c0/abcc49e42eb921a7ebc013d5bec1154651fb6dbc3f497541d488859e681256901b2990b954d530ba0da4d0851271d484f7057d5eff5e07cb73e8b10909f711bf languageName: node linkType: hard "async@npm:^3.2.3": - version: 3.2.5 - resolution: "async@npm:3.2.5" - checksum: 10c0/1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: 10c0/36484bb15ceddf07078688d95e27076379cc2f87b10c03b6dd8a83e89475a3c8df5848859dd06a4c95af1e4c16fc973de0171a77f18ea00be899aca2a4f85e70 languageName: node linkType: hard @@ -6760,7 +5590,7 @@ __metadata: languageName: node linkType: hard -"autoprefixer@npm:10.4.20": +"autoprefixer@npm:10.4.20, autoprefixer@npm:^10.4.12, autoprefixer@npm:^10.4.13": version: 10.4.20 resolution: "autoprefixer@npm:10.4.20" dependencies: @@ -6778,42 +5608,6 @@ __metadata: languageName: node linkType: hard -"autoprefixer@npm:^10.4.0": - version: 10.4.0 - resolution: "autoprefixer@npm:10.4.0" - dependencies: - browserslist: "npm:^4.17.5" - caniuse-lite: "npm:^1.0.30001272" - fraction.js: "npm:^4.1.1" - normalize-range: "npm:^0.1.2" - picocolors: "npm:^1.0.0" - postcss-value-parser: "npm:^4.1.0" - peerDependencies: - postcss: ^8.1.0 - bin: - autoprefixer: bin/autoprefixer - checksum: 10c0/07da901364c14e3b45b1f50dba247b04ee09e6616fb8d40c4e3f93359ee35baa0b51564436974c6c2c6d666aa56ef9777b685eb2b9ab943e417acdf92e67833b - languageName: node - linkType: hard - -"autoprefixer@npm:^10.4.12": - version: 10.4.13 - resolution: "autoprefixer@npm:10.4.13" - dependencies: - browserslist: "npm:^4.21.4" - caniuse-lite: "npm:^1.0.30001426" - fraction.js: "npm:^4.2.0" - normalize-range: "npm:^0.1.2" - picocolors: "npm:^1.0.0" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.1.0 - bin: - autoprefixer: bin/autoprefixer - checksum: 10c0/55ef1feb555516f68c740b3a0050d89b663c4a806a52ff23b184869ddf511b561fa56d66b2adb533bfef3798aee87b31132474582968d84fa59da133f837a230 - languageName: node - linkType: hard - "available-typed-arrays@npm:^1.0.7": version: 1.0.7 resolution: "available-typed-arrays@npm:1.0.7" @@ -6823,95 +5617,75 @@ __metadata: languageName: node linkType: hard -"axe-core@npm:^4.3.5": - version: 4.3.5 - resolution: "axe-core@npm:4.3.5" - checksum: 10c0/48c08748271964b9a09e523cd5739cc3b8be8982ffffda30269b7e4f75af35b56ba951467a0e37eb213380f7b3544b7503e1a213660aadc00b990d6427e11b1e +"axe-core@npm:^4.10.0": + version: 4.10.2 + resolution: "axe-core@npm:4.10.2" + checksum: 10c0/0e20169077de96946a547fce0df39d9aeebe0077f9d3eeff4896518b96fde857f80b98f0d4279274a7178791744dd5a54bb4f322de45b4f561ffa2586ff9a09d languageName: node linkType: hard -"axobject-query@npm:^2.2.0": - version: 2.2.0 - resolution: "axobject-query@npm:2.2.0" - checksum: 10c0/75e173c4f8477814a03c46b5864810c0d62d15515e3e1067093d934b77d2dd68704a4e5141e190e305fee9630405c1ea013642f50ed476b27d8d79033c489ce9 +"axobject-query@npm:^4.1.0": + version: 4.1.0 + resolution: "axobject-query@npm:4.1.0" + checksum: 10c0/c470e4f95008f232eadd755b018cb55f16c03ccf39c027b941cd8820ac6b68707ce5d7368a46756db4256fbc91bb4ead368f84f7fb034b2b7932f082f6dc0775 languageName: node linkType: hard -"babel-jest@npm:^27.4.2, babel-jest@npm:^27.4.5": - version: 27.4.5 - resolution: "babel-jest@npm:27.4.5" +"babel-jest@npm:^27.4.2, babel-jest@npm:^27.5.1": + version: 27.5.1 + resolution: "babel-jest@npm:27.5.1" dependencies: - "@jest/transform": "npm:^27.4.5" - "@jest/types": "npm:^27.4.2" + "@jest/transform": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" "@types/babel__core": "npm:^7.1.14" - babel-plugin-istanbul: "npm:^6.0.0" - babel-preset-jest: "npm:^27.4.0" + babel-plugin-istanbul: "npm:^6.1.1" + babel-preset-jest: "npm:^27.5.1" chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.4" + graceful-fs: "npm:^4.2.9" slash: "npm:^3.0.0" peerDependencies: "@babel/core": ^7.8.0 - checksum: 10c0/3054cf981fcf0b0e0b6ee065559d948e758f3b57fe5baeee640ca51ed6e2e8fe32f0002021a74cbcb6cd5c1ae17c795bd2d12323a6c8df70ccf785be6a841b50 + checksum: 10c0/3ec8fdabba150431e430ab98d31ba62a1e0bc0fb2fd8d9236cb7dffda740de99c0b04f24da54ff0b5814dce9f81ff0c35a61add53c0734775996a11a7ba38318 languageName: node linkType: hard "babel-loader@npm:^8.2.3": - version: 8.2.3 - resolution: "babel-loader@npm:8.2.3" + version: 8.4.1 + resolution: "babel-loader@npm:8.4.1" dependencies: find-cache-dir: "npm:^3.3.1" - loader-utils: "npm:^1.4.0" + loader-utils: "npm:^2.0.4" make-dir: "npm:^3.1.0" schema-utils: "npm:^2.6.5" peerDependencies: "@babel/core": ^7.0.0 webpack: ">=2" - checksum: 10c0/2457fca8d97ea0ff966b3dabe5abeaa4c2430af3e917ccf163067daf5ae3329adebb97baa78033215b40940a1ad03050aef34f6b468af4583c00ab9853fc6c6c - languageName: node - linkType: hard - -"babel-plugin-dynamic-import-node@npm:^2.3.3": - version: 2.3.3 - resolution: "babel-plugin-dynamic-import-node@npm:2.3.3" - dependencies: - object.assign: "npm:^4.1.0" - checksum: 10c0/1bd80df981e1fc1aff0cd4e390cf27aaa34f95f7620cd14dff07ba3bad56d168c098233a7d2deb2c9b1dc13643e596a6b94fc608a3412ee3c56e74a25cd2167e + checksum: 10c0/efdca9c3ef502af58b923a32123d660c54fd0be125b7b64562c8a43bda0a3a55dac0db32331674104e7e5184061b75c3a0e395b2c5ccdc7cb2125dd9ec7108d2 languageName: node linkType: hard -"babel-plugin-istanbul@npm:^6.0.0": - version: 6.0.0 - resolution: "babel-plugin-istanbul@npm:6.0.0" +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" dependencies: "@babel/helper-plugin-utils": "npm:^7.0.0" "@istanbuljs/load-nyc-config": "npm:^1.0.0" "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-instrument: "npm:^4.0.0" + istanbul-lib-instrument: "npm:^5.0.4" test-exclude: "npm:^6.0.0" - checksum: 10c0/7516fb6189e0e86dfa93b900a7d2cf1fb18c5d405c001f391e2fae7c9f9f04d121e71577fbd6652c86be941c1b245136b573e402fdf2749e0d23eafe1d8237f6 + checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^27.4.0": - version: 27.4.0 - resolution: "babel-plugin-jest-hoist@npm:27.4.0" +"babel-plugin-jest-hoist@npm:^27.5.1": + version: 27.5.1 + resolution: "babel-plugin-jest-hoist@npm:27.5.1" dependencies: "@babel/template": "npm:^7.3.3" "@babel/types": "npm:^7.3.3" "@types/babel__core": "npm:^7.0.0" "@types/babel__traverse": "npm:^7.0.6" - checksum: 10c0/24c67969037c07a2e23c9fd69c0ffa6529e778ee4b191c15ec12a52d1a2a2fcac8fb4c262db02d317cc01bfe728a8420ba115d018b293fe5fea2eb30e27dc725 - languageName: node - linkType: hard - -"babel-plugin-macros@npm:^2.6.1": - version: 2.8.0 - resolution: "babel-plugin-macros@npm:2.8.0" - dependencies: - "@babel/runtime": "npm:^7.7.2" - cosmiconfig: "npm:^6.0.0" - resolve: "npm:^1.12.0" - checksum: 10c0/9a101e2844a800e65662b2a8d0758bdbbe500ae02d68ef6f3466ead7eaa1350e3872b97014b20bf6f3a1a46b3c9613dfac7578af6f6ae6d4eccbd68ad7b6f228 + checksum: 10c0/2f08ebde32d9d2bffff75524bda44812995b3fcab6cbf259e1db52561b6c8d829f4688db77ef277054a362c9a61826e121a2a4853b0bf93d077ebb3b69685f8e languageName: node linkType: hard @@ -6935,39 +5709,39 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.3.0": - version: 0.3.0 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.0" +"babel-plugin-polyfill-corejs2@npm:^0.4.10": + version: 0.4.11 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" dependencies: - "@babel/compat-data": "npm:^7.13.11" - "@babel/helper-define-polyfill-provider": "npm:^0.3.0" - semver: "npm:^6.1.1" + "@babel/compat-data": "npm:^7.22.6" + "@babel/helper-define-polyfill-provider": "npm:^0.6.2" + semver: "npm:^6.3.1" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e3d86452139d3fd5e385644b429e8de6f9f70673294dba070c2dcd09a2075372e2f0e8837edbfae4e862c4ff891c5a1aebbc9e92adf6ee10798a42bc6ee9e505 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/b2217bc8d5976cf8142453ed44daabf0b2e0e75518f24eac83b54a8892e87a88f1bd9089daa92fd25df979ecd0acfd29b6bc28c4182c1c46344cee15ef9bce84 languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.4.0": - version: 0.4.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.4.0" +"babel-plugin-polyfill-corejs3@npm:^0.10.6": + version: 0.10.6 + resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.3.0" - core-js-compat: "npm:^3.18.0" + "@babel/helper-define-polyfill-provider": "npm:^0.6.2" + core-js-compat: "npm:^3.38.0" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/1b18ba8925b42a70f14f64be825664ddd11cd5f53b50c2cb859d2f8eb00d62b292c5cac78cbeeb0bc7ba621826aa8674e6d9cdf7a32cece4b0d76c8263f92966 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/3a69220471b07722c2ae6537310bf26b772514e12b601398082965459c838be70a0ca70b0662f0737070654ff6207673391221d48599abb4a2b27765206d9f79 languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.3.0": - version: 0.3.0 - resolution: "babel-plugin-polyfill-regenerator@npm:0.3.0" +"babel-plugin-polyfill-regenerator@npm:^0.6.1": + version: 0.6.2 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.3.0" + "@babel/helper-define-polyfill-provider": "npm:^0.6.2" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/2d4b83c7ae734cf1b1a41170dfa6d044e41f2c5262c0b9d41ee1195caa61f56cd85bad2d80cfe49f4d729be45f0d03276fa33b7433379fc4f39f82eb4fad865d + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/bc541037cf7620bc84ddb75a1c0ce3288f90e7d2799c070a53f8a495c8c8ae0316447becb06f958dd25dcce2a2fce855d318ecfa48036a1ddb218d55aa38a744 languageName: node linkType: hard @@ -6979,36 +5753,39 @@ __metadata: linkType: hard "babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.0.1 - resolution: "babel-preset-current-node-syntax@npm:1.0.1" + version: 1.1.0 + resolution: "babel-preset-current-node-syntax@npm:1.1.0" dependencies: "@babel/plugin-syntax-async-generators": "npm:^7.8.4" "@babel/plugin-syntax-bigint": "npm:^7.8.3" - "@babel/plugin-syntax-class-properties": "npm:^7.8.3" - "@babel/plugin-syntax-import-meta": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-top-level-await": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/5ba39a3a0e6c37d25e56a4fb843be632dac98d54706d8a0933f9bcb1a07987a96d55c2b5a6c11788a74063fb2534fe68c1f1dbb6c93626850c785e0938495627 + checksum: 10c0/0b838d4412e3322cb4436f246e24e9c00bebcedfd8f00a2f51489db683bd35406bbd55a700759c28d26959c6e03f84dd6a1426f576f440267c1d7a73c5717281 languageName: node linkType: hard -"babel-preset-jest@npm:^27.4.0": - version: 27.4.0 - resolution: "babel-preset-jest@npm:27.4.0" +"babel-preset-jest@npm:^27.5.1": + version: 27.5.1 + resolution: "babel-preset-jest@npm:27.5.1" dependencies: - babel-plugin-jest-hoist: "npm:^27.4.0" + babel-plugin-jest-hoist: "npm:^27.5.1" babel-preset-current-node-syntax: "npm:^1.0.0" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/0419c44c112b5113ac84604a60018ce9106307487973b5db489548bb737fc8db42cc58e8b3b86359910db43252b62c6a19369b1c59bc4a4bab5fe28c03da4714 + checksum: 10c0/fc2f7fd03d8cddb36e0a07a94f1bb1826f7d7dae1f3519ed170c7a5e56c863aecbdb3fd2b034674a53210088478f000318b06415bad511bcf203c5729e5dd079 languageName: node linkType: hard @@ -7044,9 +5821,9 @@ __metadata: linkType: hard "balanced-match@npm:^1.0.0": - version: 1.0.0 - resolution: "balanced-match@npm:1.0.0" - checksum: 10c0/d45f1aeec59d87562cd65415e2890b9fd6ab7fa89941a46fb2eb505e2165158680ee1be7110586cf86f3a9599f1b88ec4a7fcf57594560ca37814a560ab95f41 + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee languageName: node linkType: hard @@ -7065,14 +5842,15 @@ __metadata: linkType: hard "bfj@npm:^7.0.2": - version: 7.0.2 - resolution: "bfj@npm:7.0.2" + version: 7.1.0 + resolution: "bfj@npm:7.1.0" dependencies: - bluebird: "npm:^3.5.5" - check-types: "npm:^11.1.1" + bluebird: "npm:^3.7.2" + check-types: "npm:^11.2.3" hoopy: "npm:^0.1.4" + jsonpath: "npm:^1.1.1" tryer: "npm:^1.0.1" - checksum: 10c0/2e576c7e13a036c457dd45ce8d8aa3c407a801e90a4feb7e3adc42238befdef19a7c677a23725e42f6c7f79e76838afd72e7a0b7c5aa7a6e8147209709f57981 + checksum: 10c0/e5fc6690cd093c06ca6ed7584a2caf0c4a762bc9d9d9cb18efbabc75c973b071a8dad7037c617d0ea4d97b7b439821fea32f7c232ed0be8fa7840533a9643171 languageName: node linkType: hard @@ -7084,13 +5862,13 @@ __metadata: linkType: hard "binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: 10c0/d73d8b897238a2d3ffa5f59c0241870043aa7471335e89ea5e1ff48edb7c2d0bb471517a3e4c5c3f4c043615caa2717b5f80a5e61e07503d51dc85cb848e665d + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 languageName: node linkType: hard -"bluebird@npm:^3.5.5": +"bluebird@npm:^3.7.2": version: 3.7.2 resolution: "bluebird@npm:3.7.2" checksum: 10c0/680de03adc54ff925eaa6c7bb9a47a0690e8b5de60f4792604aae8ed618c65e6b63a7893b57ca924beaf53eee69c5af4f8314148c08124c550fe1df1add897d2 @@ -7104,7 +5882,7 @@ __metadata: languageName: node linkType: hard -"bn.js@npm:^5.0.0, bn.js@npm:^5.2.1": +"bn.js@npm:^5.2.1": version: 5.2.1 resolution: "bn.js@npm:5.2.1" checksum: 10c0/bed3d8bd34ec89dbcf9f20f88bd7d4a49c160fda3b561c7bb227501f974d3e435a48fb9b61bc3de304acab9215a3bda0803f7017ffb4d0016a0c3a740a283caa @@ -7131,17 +5909,13 @@ __metadata: languageName: node linkType: hard -"bonjour@npm:^3.5.0": - version: 3.5.0 - resolution: "bonjour@npm:3.5.0" +"bonjour-service@npm:^1.0.11": + version: 1.2.1 + resolution: "bonjour-service@npm:1.2.1" dependencies: - array-flatten: "npm:^2.1.0" - deep-equal: "npm:^1.0.1" - dns-equal: "npm:^1.0.0" - dns-txt: "npm:^2.0.2" - multicast-dns: "npm:^6.0.1" - multicast-dns-service-types: "npm:^1.1.0" - checksum: 10c0/0be7c4cd96df563571973706226e750f6feeacd81d01c1ade11247eb3a7e14846af49cffe397ab970059b828dd89f694f456e22bca4ca315a7f0326e9303e241 + fast-deep-equal: "npm:^3.1.3" + multicast-dns: "npm:^7.2.5" + checksum: 10c0/953cbfc27fc9e36e6f988012993ab2244817d82426603e0390d4715639031396c932b6657b1aa4ec30dbb5fa903d6b2c7f1be3af7a8ba24165c93e987c849730 languageName: node linkType: hard @@ -7239,12 +6013,13 @@ __metadata: linkType: hard "browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": - version: 4.1.0 - resolution: "browserify-rsa@npm:4.1.0" + version: 4.1.1 + resolution: "browserify-rsa@npm:4.1.1" dependencies: - bn.js: "npm:^5.0.0" - randombytes: "npm:^2.0.1" - checksum: 10c0/fb2b5a8279d8a567a28d8ee03fb62e448428a906bab5c3dc9e9c3253ace551b5ea271db15e566ac78f1b1d71b243559031446604168b9235c351a32cae99d02a + bn.js: "npm:^5.2.1" + randombytes: "npm:^2.1.0" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/b650ee1192e3d7f3d779edc06dd96ed8720362e72ac310c367b9d7fe35f7e8dbb983c1829142b2b3215458be8bf17c38adc7224920843024ed8cf39e19c513c0 languageName: node linkType: hard @@ -7266,61 +6041,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.1": - version: 4.16.3 - resolution: "browserslist@npm:4.16.3" - dependencies: - caniuse-lite: "npm:^1.0.30001181" - colorette: "npm:^1.2.1" - electron-to-chromium: "npm:^1.3.649" - escalade: "npm:^3.1.1" - node-releases: "npm:^1.1.70" - bin: - browserslist: cli.js - checksum: 10c0/3d84e09f8a798bd64fd3ba3ed5fa7cea396bcb067e8cc0a5b898f2d28848fa2e46c320d36fc8f72a4e2804d49ab957d375ec458cde522c613fcf29e819b68fbc - languageName: node - linkType: hard - -"browserslist@npm:^4.16.0, browserslist@npm:^4.16.6, browserslist@npm:^4.17.5, browserslist@npm:^4.18.1, browserslist@npm:^4.19.1": - version: 4.19.1 - resolution: "browserslist@npm:4.19.1" - dependencies: - caniuse-lite: "npm:^1.0.30001286" - electron-to-chromium: "npm:^1.4.17" - escalade: "npm:^3.1.1" - node-releases: "npm:^2.0.1" - picocolors: "npm:^1.0.0" - bin: - browserslist: cli.js - checksum: 10c0/0a5f88a895a95e612439a893dbb869ce52a211e186c0c2894326a27a9881f2ca6d7f8a4a15c24410b9f144b7ee6e8a91db4ece24738d1a63f7cdd5acc55271ae - languageName: node - linkType: hard - -"browserslist@npm:^4.21.10, browserslist@npm:^4.23.1, browserslist@npm:^4.23.3": - version: 4.23.3 - resolution: "browserslist@npm:4.23.3" +"browserslist@npm:^4.0.0, browserslist@npm:^4.18.1, browserslist@npm:^4.21.4, browserslist@npm:^4.23.3, browserslist@npm:^4.24.0, browserslist@npm:^4.24.2": + version: 4.24.2 + resolution: "browserslist@npm:4.24.2" dependencies: - caniuse-lite: "npm:^1.0.30001646" - electron-to-chromium: "npm:^1.5.4" + caniuse-lite: "npm:^1.0.30001669" + electron-to-chromium: "npm:^1.5.41" node-releases: "npm:^2.0.18" - update-browserslist-db: "npm:^1.1.0" - bin: - browserslist: cli.js - checksum: 10c0/3063bfdf812815346447f4796c8f04601bf5d62003374305fd323c2a463e42776475bcc5309264e39bcf9a8605851e53560695991a623be988138b3ff8c66642 - languageName: node - linkType: hard - -"browserslist@npm:^4.21.4": - version: 4.21.4 - resolution: "browserslist@npm:4.21.4" - dependencies: - caniuse-lite: "npm:^1.0.30001400" - electron-to-chromium: "npm:^1.4.251" - node-releases: "npm:^2.0.6" - update-browserslist-db: "npm:^1.0.9" + update-browserslist-db: "npm:^1.1.1" bin: browserslist: cli.js - checksum: 10c0/bbc5fe2b4280a590cb40b110cd282f18f4542d75ddb559dfe0a174fda0263d2a7dd5b1634d0f795d617d69cb5f9716479c4a90d9a954a7ef16bc0a2878965af8 + checksum: 10c0/d747c9fb65ed7b4f1abcae4959405707ed9a7b835639f8a9ba0da2911995a6ab9b0648fd05baf2a4d4e3cf7f9fdbad56d3753f91881e365992c1d49c8d88ff7a languageName: node linkType: hard @@ -7343,16 +6074,9 @@ __metadata: linkType: hard "buffer-from@npm:^1.0.0": - version: 1.1.1 - resolution: "buffer-from@npm:1.1.1" - checksum: 10c0/a8c5057c985d8071e7a64988ad72f313e08eb3001eda76bead78b1f9afc7a07d20be9677eed0b5791727baeecd56360fe541bc5dd74feb40efe202a74584d533 - languageName: node - linkType: hard - -"buffer-indexof@npm:^1.0.0": - version: 1.1.1 - resolution: "buffer-indexof@npm:1.1.1" - checksum: 10c0/67906b0a9892854e24ac717ef823c3b19790c653a8b1902835bbf3c3c46ea8d99f0680a92f7394fc5acbbecb3385775ccd504ea00587d2d67d8dfaadd460eeae + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 languageName: node linkType: hard @@ -7374,16 +6098,9 @@ __metadata: linkType: hard "builtin-modules@npm:^3.1.0": - version: 3.2.0 - resolution: "builtin-modules@npm:3.2.0" - checksum: 10c0/01bddc89cb9608884afb6c6be66f3dfa5c2576e3fe6850aa656f1282b68e4930dd67174fc764ea6fc3f5890436e370e6d6cdc4ce4c16b9576a3965860960b7e9 - languageName: node - linkType: hard - -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: 10c0/91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 + version: 3.3.0 + resolution: "builtin-modules@npm:3.3.0" + checksum: 10c0/2cb3448b4f7306dc853632a4fcddc95e8d4e4b9868c139400027b71938fc6806d4ff44007deffb362ac85724bd40c2c6452fb6a0aa4531650eeddb98d8e5ee8a languageName: node linkType: hard @@ -7414,17 +6131,7 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: "npm:^1.1.1" - get-intrinsic: "npm:^1.0.2" - checksum: 10c0/74ba3f31e715456e22e451d8d098779b861eba3c7cac0d9b510049aced70d75c231ba05071f97e1812c98e34e2bee734c0c6126653e0088c2d9819ca047f4073 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.7": +"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": version: 1.0.7 resolution: "call-bind@npm:1.0.7" dependencies: @@ -7468,17 +6175,10 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.2.0": - version: 6.2.0 - resolution: "camelcase@npm:6.2.0" - checksum: 10c0/d9f403a6153394c5bc68ec9c2672df1d04f00a7847708be12641b483b936cbfaaf14d891f92bb0026184e03923be24acd15a0476761e1286eec484d68f615fe5 - languageName: node - linkType: hard - -"camelcase@npm:^6.2.1": - version: 6.2.1 - resolution: "camelcase@npm:6.2.1" - checksum: 10c0/df7fc7ad9e6b76040e88708336d24bb43890f97745dec3002f11a97138d98dc9ed971cf872d23e48f735d45dbbd9c7863072a3ce0fd7e897a11c31e58d8c6e78 +"camelcase@npm:^6.2.0, camelcase@npm:^6.2.1": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 languageName: node linkType: hard @@ -7494,10 +6194,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001181, caniuse-lite@npm:^1.0.30001272, caniuse-lite@npm:^1.0.30001286, caniuse-lite@npm:^1.0.30001287, caniuse-lite@npm:^1.0.30001400, caniuse-lite@npm:^1.0.30001426, caniuse-lite@npm:^1.0.30001646": - version: 1.0.30001660 - resolution: "caniuse-lite@npm:1.0.30001660" - checksum: 10c0/d28900b56c597176d515c3175ca75c454f2d30cb2c09a44d7bdb009bb0c4d8a2557905adb77642889bbe9feb85fbfe9d974c8b8e53521fb4b50ee16ab246104e +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001669": + version: 1.0.30001677 + resolution: "caniuse-lite@npm:1.0.30001677" + checksum: 10c0/22b4aa738b213b5d0bc820c26ba23fa265ca90a5c59776e1a686b9ab6fff9120d0825fd920c0a601a4b65056ef40d01548405feb95c8dd6083255f50c71a0864 languageName: node linkType: hard @@ -7515,7 +6215,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2": +"chalk@npm:^2.4.1": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -7536,17 +6236,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.1.0": - version: 4.1.0 - resolution: "chalk@npm:4.1.0" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10c0/3787bd65ecd98ab3a1acc3b4f71d006268a675875e49ee6ea75fb54ba73d268b97544368358c18c42445e408e076ae8ad5cec8fbad36942a2c7ac654883dc61e - languageName: node - linkType: hard - -"chalk@npm:^4.0.2, chalk@npm:^4.1.2": +"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -7571,9 +6261,16 @@ __metadata: linkType: hard "char-regex@npm:^2.0.0": - version: 2.0.0 - resolution: "char-regex@npm:2.0.0" - checksum: 10c0/4b2f944541034316e123598675a13bba0362865eae379570211e7cba45c846bd48aa3096cf587eb47e79cb967321b35e657cd3eb70d596820a79a63874a8a855 + version: 2.0.1 + resolution: "char-regex@npm:2.0.1" + checksum: 10c0/ec592229ac3ef18f2ea1f5676ae9a829c37150db55fd7f709edce1bcdc9f506de22ae19388d853704806e51af71fe9239bcb7e7be583296951bfbf2a9a9763a2 + languageName: node + linkType: hard + +"character-entities-html4@npm:^2.0.0": + version: 2.1.0 + resolution: "character-entities-html4@npm:2.1.0" + checksum: 10c0/fe61b553f083400c20c0b0fd65095df30a0b445d960f3bbf271536ae6c3ba676f39cb7af0b4bf2755812f08ab9b88f2feed68f9aebb73bb153f7a115fe5c6e40 languageName: node linkType: hard @@ -7584,6 +6281,13 @@ __metadata: languageName: node linkType: hard +"character-entities-legacy@npm:^3.0.0": + version: 3.0.0 + resolution: "character-entities-legacy@npm:3.0.0" + checksum: 10c0/ec4b430af873661aa754a896a2b55af089b4e938d3d010fad5219299a6b6d32ab175142699ee250640678cd64bdecd6db3c9af0b8759ab7b155d970d84c4c7d1 + languageName: node + linkType: hard + "character-entities@npm:^1.0.0": version: 1.2.4 resolution: "character-entities@npm:1.2.4" @@ -7592,9 +6296,9 @@ __metadata: linkType: hard "character-entities@npm:^2.0.0": - version: 2.0.1 - resolution: "character-entities@npm:2.0.1" - checksum: 10c0/b70185f4a45399d8f1b0393a86e5c43b85b375a5b55e09a46cad5c2ac450f67330a30348b5d8ec52d4aa7d884471718fbf34de8964489561a53588cfd8c6b950 + version: 2.0.2 + resolution: "character-entities@npm:2.0.2" + checksum: 10c0/b0c645a45bcc90ff24f0e0140f4875a8436b8ef13b6bcd31ec02cfb2ca502b680362aa95386f7815bdc04b6464d48cf191210b3840d7c04241a149ede591a308 languageName: node linkType: hard @@ -7605,71 +6309,21 @@ __metadata: languageName: node linkType: hard -"check-types@npm:^11.1.1": - version: 11.1.2 - resolution: "check-types@npm:11.1.2" - checksum: 10c0/2860f38fd2e8c532920ec9e74960b530043e96ba96ddd2c854de4c0783c92c1515db91a164436adb104ded0d939b925385abec857d1f15872c0f5776b4c8a250 - languageName: node - linkType: hard - -"chokidar@npm:^3.4.2": - version: 3.5.1 - resolution: "chokidar@npm:3.5.1" - dependencies: - anymatch: "npm:~3.1.1" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.1" - glob-parent: "npm:~5.1.0" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.5.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/894d2fdeeef6a0bc61993a20b864e29e9296f2308628b8b2edf1bef2d59ab11f21938eebbbcbf581f15d16d3e030c08860d2fb035f7b9f3baebac57049a37959 - languageName: node - linkType: hard - -"chokidar@npm:^3.5.2": - version: 3.5.2 - resolution: "chokidar@npm:3.5.2" - dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/e7179a9dc4ce54c1ba660652319039b7ca0817a442dd05a45afcbdefcd4848b4276debfa9cf321798c2c567c6289da14dd48d9a1ee92056a7b526c554cffe129 +"character-reference-invalid@npm:^2.0.0": + version: 2.0.1 + resolution: "character-reference-invalid@npm:2.0.1" + checksum: 10c0/2ae0dec770cd8659d7e8b0ce24392d83b4c2f0eb4a3395c955dce5528edd4cc030a794cfa06600fcdd700b3f2de2f9b8e40e309c0011c4180e3be64a0b42e6a1 languageName: node linkType: hard -"chokidar@npm:^3.5.3": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" - dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/1076953093e0707c882a92c66c0f56ba6187831aa51bb4de878c1fec59ae611a3bf02898f190efec8e77a086b8df61c2b2a3ea324642a0558bdf8ee6c5dc9ca1 +"check-types@npm:^11.2.3": + version: 11.2.3 + resolution: "check-types@npm:11.2.3" + checksum: 10c0/08d17e528b189e0e431689f0f2f0a78f425202f6e5ac93def5c3b8d128eb888a5103fc980d4feb7b2d4248f8114d354c223dff3c0b5ac4b1def526ef441aaf55 languageName: node linkType: hard -"chokidar@npm:^3.6.0": +"chokidar@npm:^3.4.2, chokidar@npm:^3.5.3": version: 3.6.0 resolution: "chokidar@npm:3.6.0" dependencies: @@ -7696,8 +6350,8 @@ __metadata: linkType: hard "chromatic@npm:^11.4.0": - version: 11.9.0 - resolution: "chromatic@npm:11.9.0" + version: 11.16.5 + resolution: "chromatic@npm:11.16.5" peerDependencies: "@chromatic-com/cypress": ^0.*.* || ^1.0.0 "@chromatic-com/playwright": ^0.*.* || ^1.0.0 @@ -7710,23 +6364,21 @@ __metadata: chroma: dist/bin.js chromatic: dist/bin.js chromatic-cli: dist/bin.js - checksum: 10c0/84d64c04c4ef01080977bd13dd16c552ecdd03a3f7ea1f7235961c561d4d5252990fefc0131a49b1e504e3e52e5769779abd3ccf544751b651108f90ded34ac5 + checksum: 10c0/94fc65de8fdde6dfbc8c88419903e5f39a94945dc6de70d39570d4b522855e132fdaa4dcb1e0e3799d81d70db2bd07725c12c816b69617facfae10b5fd74585c languageName: node linkType: hard "chrome-trace-event@npm:^1.0.2": - version: 1.0.2 - resolution: "chrome-trace-event@npm:1.0.2" - dependencies: - tslib: "npm:^1.9.0" - checksum: 10c0/dcdf63a8a3f2f51faaff9c66bf86bb3d6a5634cbd9c2466f07963965243497bb814ea093332da3153197f7e0ca77255b6b3f46b72ccd5d80fa3fa6e5f8564cfe + version: 1.0.4 + resolution: "chrome-trace-event@npm:1.0.4" + checksum: 10c0/3058da7a5f4934b87cf6a90ef5fb68ebc5f7d06f143ed5a4650208e5d7acae47bc03ec844b29fbf5ba7e46e8daa6acecc878f7983a4f4bb7271593da91e61ff5 languageName: node linkType: hard "ci-info@npm:^3.2.0": - version: 3.3.0 - resolution: "ci-info@npm:3.3.0" - checksum: 10c0/f23ec1b3c4717abb5fb9934fe0ab6db621cf767abd3832f07af2803e4809d21908d8b87321de4b79861dfe8105c08dba1803a9fb6346d5586b0c57db2bfbce3b + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a languageName: node linkType: hard @@ -7749,28 +6401,14 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0": - version: 1.2.2 - resolution: "cjs-module-lexer@npm:1.2.2" - checksum: 10c0/83330e1feda2e3699b8c305bfa8f841b41822049393f5eefeb574e60bde556e2a251ee9b7971cde0cb47ac4f7823bf4ab4a6005b8471f86ad9f5509eefb66cbd - languageName: node - linkType: hard - -"cjs-module-lexer@npm:^1.2.3": +"cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.2.3": version: 1.4.1 resolution: "cjs-module-lexer@npm:1.4.1" checksum: 10c0/5a7d8279629c9ba8ccf38078c2fed75b7737973ced22b9b5a54180efa57fb2fe2bb7bec6aec55e3b8f3f5044f5d7b240347ad9bd285e7c3d0ee5b0a1d0504dfc languageName: node linkType: hard -"classcat@npm:^5.0.3": - version: 5.0.3 - resolution: "classcat@npm:5.0.3" - checksum: 10c0/378aa56e9f5f3febd7b21cdd09a7ede28093a3e356bbad0135ab8a8e35bc0c9b23f3e1540620155b9b8a960779756eb505c18b964275a7f7a825d5a455661e60 - languageName: node - linkType: hard - -"classcat@npm:^5.0.4": +"classcat@npm:^5.0.3, classcat@npm:^5.0.4": version: 5.0.5 resolution: "classcat@npm:5.0.5" checksum: 10c0/ff8d273055ef9b518529cfe80fd0486f7057a9917373807ff802d75ceb46e8f8e148f41fa094ee7625c8f34642cfaa98395ff182d9519898da7cbf383d4a210d @@ -7785,11 +6423,11 @@ __metadata: linkType: hard "clean-css@npm:^5.2.2": - version: 5.2.2 - resolution: "clean-css@npm:5.2.2" + version: 5.3.3 + resolution: "clean-css@npm:5.3.3" dependencies: source-map: "npm:~0.6.0" - checksum: 10c0/c380587b63a5e2241addc2edebc53e213dd08b1d6f47a6391b44f51d29cb98f2f5e2044a58b7a355b2eb12dc9edbd762423e8379d920df1e5cc4a70a97a2135d + checksum: 10c0/381de7523e23f3762eb180e327dcc0cedafaf8cb1cd8c26b7cc1fc56e0829a92e734729c4f955394d65ed72fb62f82d8baf78af34b33b8a7d41ebad2accdd6fb languageName: node linkType: hard @@ -7819,13 +6457,6 @@ __metadata: languageName: node linkType: hard -"client-only@npm:^0.0.1": - version: 0.0.1 - resolution: "client-only@npm:0.0.1" - checksum: 10c0/9d6cfd0c19e1c96a434605added99dff48482152af791ec4172fb912a71cff9027ff174efd8cdb2160cc7f377543e0537ffc462d4f279bc4701de3f2a3c4b358 - languageName: node - linkType: hard - "cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" @@ -7848,6 +6479,13 @@ __metadata: languageName: node linkType: hard +"clsx@npm:^2.0.0": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 + languageName: node + linkType: hard + "co@npm:^4.6.0": version: 4.6.0 resolution: "co@npm:4.6.0" @@ -7867,9 +6505,9 @@ __metadata: linkType: hard "collect-v8-coverage@npm:^1.0.0": - version: 1.0.1 - resolution: "collect-v8-coverage@npm:1.0.1" - checksum: 10c0/df8192811a773d10978fd25060124e4228d9a86bab40de3f18df5ce1a3730832351a52ba1c0e3915d5bd638298fc7bc9723760d25f534462746e269a6f0ac91c + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 languageName: node linkType: hard @@ -7898,7 +6536,7 @@ __metadata: languageName: node linkType: hard -"color-name@npm:^1.1.4, color-name@npm:~1.1.4": +"color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 @@ -7906,27 +6544,13 @@ __metadata: linkType: hard "colord@npm:^2.9.1": - version: 2.9.2 - resolution: "colord@npm:2.9.2" - checksum: 10c0/ff2de0fa956526abfc6d08ddb5696b09659fac26dc40917e7eed006689cc5181447fad819ccef3b8e73cbe1be056074b1422a2a84831515678022cbc49cc699c - languageName: node - linkType: hard - -"colorette@npm:^1.2.1": - version: 1.4.0 - resolution: "colorette@npm:1.4.0" - checksum: 10c0/4955c8f7daafca8ae7081d672e4bd89d553bd5782b5846d5a7e05effe93c2f15f7e9c0cb46f341b59f579a39fcf436241ff79594899d75d5f3460c03d607fe9e - languageName: node - linkType: hard - -"colorette@npm:^2.0.10": - version: 2.0.16 - resolution: "colorette@npm:2.0.16" - checksum: 10c0/7430bd996545347f262ae9716bfc8ca3776606e9db854279082004f3141b15a64ad2ee0e4f10cacba5a07cc92ca3edc2d01cbe73fd2843ccd80e98d0e3a8e79b + version: 2.9.3 + resolution: "colord@npm:2.9.3" + checksum: 10c0/9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110 languageName: node linkType: hard -"colorette@npm:^2.0.20": +"colorette@npm:^2.0.10, colorette@npm:^2.0.20": version: 2.0.20 resolution: "colorette@npm:2.0.20" checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 @@ -7950,9 +6574,9 @@ __metadata: linkType: hard "comma-separated-tokens@npm:^2.0.0": - version: 2.0.2 - resolution: "comma-separated-tokens@npm:2.0.2" - checksum: 10c0/5884b75fa52cb47c5d55f22401ca590db3e37a46e9b2ad7c7dc26fea17cca55c5c1a4db3247af1ce292eaf69241af213d7c44fc7c2e83a4b64f852014335c22b + version: 2.0.3 + resolution: "comma-separated-tokens@npm:2.0.3" + checksum: 10c0/91f90f1aae320f1755d6957ef0b864fe4f54737f3313bd95e0802686ee2ca38bff1dd381964d00ae5db42912dd1f4ae5c2709644e82706ffc6f6842a813cdd67 languageName: node linkType: hard @@ -7991,17 +6615,10 @@ __metadata: languageName: node linkType: hard -"common-path-prefix@npm:^3.0.0": - version: 3.0.0 - resolution: "common-path-prefix@npm:3.0.0" - checksum: 10c0/c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb - languageName: node - linkType: hard - "common-tags@npm:^1.8.0": - version: 1.8.0 - resolution: "common-tags@npm:1.8.0" - checksum: 10c0/851f2430c653e76602c23f4a851837c507d1e7d11679474856346a265307872c9a62da7cfc001a36871aa73587dac14e60f5397c012b6ff5d0669e4f81af037e + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 10c0/23efe47ff0a1a7c91489271b3a1e1d2a171c12ec7f9b35b29b2fce51270124aff0ec890087e2bc2182c1cb746e232ab7561aaafe05f1e7452aea733d2bfe3f63 languageName: node linkType: hard @@ -8019,7 +6636,7 @@ __metadata: languageName: node linkType: hard -"compressible@npm:~2.0.16": +"compressible@npm:~2.0.18": version: 2.0.18 resolution: "compressible@npm:2.0.18" dependencies: @@ -8029,17 +6646,17 @@ __metadata: linkType: hard "compression@npm:^1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" + version: 1.7.5 + resolution: "compression@npm:1.7.5" dependencies: - accepts: "npm:~1.3.5" - bytes: "npm:3.0.0" - compressible: "npm:~2.0.16" + bytes: "npm:3.1.2" + compressible: "npm:~2.0.18" debug: "npm:2.6.9" + negotiator: "npm:~0.6.4" on-headers: "npm:~1.0.2" - safe-buffer: "npm:5.1.2" + safe-buffer: "npm:5.2.1" vary: "npm:~1.1.2" - checksum: 10c0/138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc + checksum: 10c0/35c9d2d57c86d8107eab5e637f2146fcefec8475a2ff3e162f5eb0982ff856d385fb5d8c9823c3d50e075f2d9304bc622dac3df27bfef0355309c0a5307861c5 languageName: node linkType: hard @@ -8057,10 +6674,10 @@ __metadata: languageName: node linkType: hard -"connect-history-api-fallback@npm:^1.6.0": - version: 1.6.0 - resolution: "connect-history-api-fallback@npm:1.6.0" - checksum: 10c0/6d59c68070fcb2f6d981992f88d050d7544e8e1af6600c23ad680d955e316216794a742a1669d1f14ed5171fc628b916f8a4e15c5a1e55bffc8ccc60bfeb0b2c +"connect-history-api-fallback@npm:^2.0.0": + version: 2.0.0 + resolution: "connect-history-api-fallback@npm:2.0.0" + checksum: 10c0/90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 languageName: node linkType: hard @@ -8080,35 +6697,17 @@ __metadata: languageName: node linkType: hard -"content-type@npm:~1.0.4": - version: 1.0.4 - resolution: "content-type@npm:1.0.4" - checksum: 10c0/19e08f406f9ae3f80fb4607c75fbde1f22546647877e8047c9fa0b1c61e38f3ede853f51e915c95fd499c2e1c7478cb23c35cfb804d0e8e0495e8db88cfaed75 - languageName: node - linkType: hard - -"content-type@npm:~1.0.5": +"content-type@npm:~1.0.4, content-type@npm:~1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af languageName: node linkType: hard -"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": - version: 1.7.0 - resolution: "convert-source-map@npm:1.7.0" - dependencies: - safe-buffer: "npm:~5.1.1" - checksum: 10c0/e58240044fa2ca34943a450c9af1f2c739a053dc91a97543dd73df666b7e28d9687285926081883950fcc7cb409aad7254d05afbbaf4e2e47491bbf9fad8b952 - languageName: node - linkType: hard - -"convert-source-map@npm:^1.5.0": - version: 1.8.0 - resolution: "convert-source-map@npm:1.8.0" - dependencies: - safe-buffer: "npm:~5.1.1" - checksum: 10c0/da4649990b633c070c0dab1680b89a67b9315dd2b1168d143536f667214c97e4eb4a49e5b7ff912f0196fe303e31fc16a529457436d25b2b5a89613eaf4f27fa +"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: 10c0/281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b languageName: node linkType: hard @@ -8126,10 +6725,10 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.6.0": - version: 0.6.0 - resolution: "cookie@npm:0.6.0" - checksum: 10c0/f2318b31af7a31b4ddb4a678d024514df5e705f9be5909a192d7f116cfb6d45cbacf96a473fa733faa95050e7cff26e7832bb3ef94751592f1387b71c8956686 +"cookie@npm:0.7.1": + version: 0.7.1 + resolution: "cookie@npm:0.7.1" + checksum: 10c0/5de60c67a410e7c8dc8a46a4b72eb0fe925871d057c9a5d2c0e8145c4270a4f81076de83410c4d397179744b478e33cd80ccbcc457abf40a9409ad27dcd21dde languageName: node linkType: hard @@ -8142,65 +6741,47 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.18.0, core-js-compat@npm:^3.19.1": - version: 3.20.0 - resolution: "core-js-compat@npm:3.20.0" - dependencies: - browserslist: "npm:^4.19.1" - semver: "npm:7.0.0" - checksum: 10c0/78f07549d5c06c4a5c557f06ab40eb9bbf4bfb00c0e4051a781b5a42d02264664af38a72843650e98c1b21d94a55e7930e941f0dcb2560da8d8ef77fcca17be9 - languageName: node - linkType: hard - -"core-js-compat@npm:^3.8.0": - version: 3.8.3 - resolution: "core-js-compat@npm:3.8.3" +"core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.38.1": + version: 3.39.0 + resolution: "core-js-compat@npm:3.39.0" dependencies: - browserslist: "npm:^4.16.1" - semver: "npm:7.0.0" - checksum: 10c0/04b6d150ae89aed6369cacd31817185f3e137af04be04e9f9d5aac5fa9a7b15308265b7dedaeadb83a627513b94fdcb548d0428d59edad331ffa099c4e6b55eb - languageName: node - linkType: hard - -"core-js-pure@npm:^3.0.0": - version: 3.8.3 - resolution: "core-js-pure@npm:3.8.3" - checksum: 10c0/0ba6dc221bb162fd700c88935d344eafe1de2ddf1551556491ac4c1cd52f4dcc3e2294419f632e4c54ba10696c9cfc126cb2c6920a2833983e5f2025e42831ed + browserslist: "npm:^4.24.2" + checksum: 10c0/880579a3dab235e3b6350f1e324269c600753b48e891ea859331618d5051e68b7a95db6a03ad2f3cc7df4397318c25a5bc7740562ad39e94f56568638d09d414 languageName: node linkType: hard -"core-js-pure@npm:^3.8.1": - version: 3.20.0 - resolution: "core-js-pure@npm:3.20.0" - checksum: 10c0/627d95dfdc9b94bfd813c3de27a23a2a8a837c76ee80742cdbec581426557145b95816841fe56ac4c37e5f5a36dda260c3cb537e359279c5817b1768c8fc2ded +"core-js-pure@npm:^3.23.3": + version: 3.39.0 + resolution: "core-js-pure@npm:3.39.0" + checksum: 10c0/5d954e467703ea1e860eb070bd72cf9dc5bfddd7037c09d750f0eba3ffc4066db741a595af86dc833a709929e161a909e48da3cbdd2d9bee7795cb516dc9f7d4 languageName: node linkType: hard "core-js@npm:^3.19.2": - version: 3.20.0 - resolution: "core-js@npm:3.20.0" - checksum: 10c0/c82c2b69974103fd52d9c9f17bb906d4bc7f07fc3489c1f34176cfef6e438aa1fbf002e9fcd61788b765c180dc36dc29db55108a22d66cc02f6f7ec484c39c03 + version: 3.39.0 + resolution: "core-js@npm:3.39.0" + checksum: 10c0/f7602069b6afb2e3298eec612a5c1e0c3e6a458930fbfc7a4c5f9ac03426507f49ce395eecdd2d9bae9024f820e44582b67ffe16f2272395af26964f174eeb6b languageName: node linkType: hard "core-util-is@npm:~1.0.0": - version: 1.0.2 - resolution: "core-util-is@npm:1.0.2" - checksum: 10c0/980a37a93956d0de8a828ce508f9b9e3317039d68922ca79995421944146700e4aaf490a6dbfebcb1c5292a7184600c7710b957d724be1e37b8254c6bc0fe246 + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 languageName: node linkType: hard "cosmiconfig-typescript-loader@npm:^1.0.0": - version: 1.0.1 - resolution: "cosmiconfig-typescript-loader@npm:1.0.1" + version: 1.0.9 + resolution: "cosmiconfig-typescript-loader@npm:1.0.9" dependencies: cosmiconfig: "npm:^7" - ts-node: "npm:^10.4.0" + ts-node: "npm:^10.7.0" peerDependencies: "@types/node": "*" cosmiconfig: ">=7" typescript: ">=3" - checksum: 10c0/446d5850f7fe3d084805fe5b5dba467400dc9b3df3ef9fb8265d5e91baf08d1a9c54ed6694b68f503441a69e566d6ffd189322104aedd30f38185ff67cc91f54 + checksum: 10c0/cabad4f74654db12fa0623544956415b5d25ded8d6108ac56c8e6fc76cc00b0260d7e62c098078c153932a1d395f01e5e99c42309e61d585df9fac8eafc817d2 languageName: node linkType: hard @@ -8217,29 +6798,16 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^7, cosmiconfig@npm:^7.0.1": - version: 7.0.1 - resolution: "cosmiconfig@npm:7.0.1" - dependencies: - "@types/parse-json": "npm:^4.0.0" - import-fresh: "npm:^3.2.1" - parse-json: "npm:^5.0.0" - path-type: "npm:^4.0.0" - yaml: "npm:^1.10.0" - checksum: 10c0/3cd38525ba22e13da0ef9f4be131df226c94f5b96fb50f6297eb17baeedefe15cf5819f8c73cde69f71cc5034e712c86bd20c7756883dd8094087680ecc25932 - languageName: node - linkType: hard - -"cosmiconfig@npm:^7.0.0": - version: 7.0.0 - resolution: "cosmiconfig@npm:7.0.0" +"cosmiconfig@npm:^7, cosmiconfig@npm:^7.0.0, cosmiconfig@npm:^7.0.1": + version: 7.1.0 + resolution: "cosmiconfig@npm:7.1.0" dependencies: "@types/parse-json": "npm:^4.0.0" import-fresh: "npm:^3.2.1" parse-json: "npm:^5.0.0" path-type: "npm:^4.0.0" yaml: "npm:^1.10.0" - checksum: 10c0/532cb7fc3690afb00fa989d8127a824439e2e926a3d40b4e07c3e563fe1910b91ed19d611143267fa607538f324f07eeb79e917aea85859786e6e1c0c00b1cda + checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 languageName: node linkType: hard @@ -8348,62 +6916,42 @@ __metadata: languageName: node linkType: hard -"css-blank-pseudo@npm:^3.0.0": - version: 3.0.0 - resolution: "css-blank-pseudo@npm:3.0.0" +"css-blank-pseudo@npm:^3.0.3": + version: 3.0.3 + resolution: "css-blank-pseudo@npm:3.0.3" dependencies: - postcss-selector-parser: "npm:^6.0.7" + postcss-selector-parser: "npm:^6.0.9" peerDependencies: - postcss: ^8.3 + postcss: ^8.4 bin: - css-blank-pseudo: dist/cli.mjs - checksum: 10c0/c3e4ee5387fe9c8c5999c7c054a875cc04fe5febfe369083d8ea4d2edc1737d738c4078ec1ba330b271701af161567a491bc5e202f2ad094e50270a830392314 + css-blank-pseudo: dist/cli.cjs + checksum: 10c0/889b0c4e47f5172cbc1a036ed31c1b25b13e6331bd85f91c910ce29ba4a1bad33d8d7bd0d48343bc5d9bf30750b4626fe55fe9fd1042e09eda72f4a72c1d779c languageName: node linkType: hard -"css-declaration-sorter@npm:^6.0.3": - version: 6.1.3 - resolution: "css-declaration-sorter@npm:6.1.3" - dependencies: - timsort: "npm:^0.3.0" +"css-declaration-sorter@npm:^6.3.1": + version: 6.4.1 + resolution: "css-declaration-sorter@npm:6.4.1" peerDependencies: postcss: ^8.0.9 - checksum: 10c0/120e4ed2e046d12f4e0af0316fbc963d387594cefa2691243c715bd52ecf241a3fb90394ea9b977e777c62d7dafa0ff35cfdaa916cbf9a6aa5b0815b763c3404 + checksum: 10c0/b8b664338dac528266a1ed9b27927ac51a907fb16bc1954fa9038b5286c442603bd494cc920c6a3616111309d18ee6b5a85b6d9927938efc942af452a5145160 languageName: node linkType: hard -"css-has-pseudo@npm:^3.0.0": - version: 3.0.0 - resolution: "css-has-pseudo@npm:3.0.0" +"css-has-pseudo@npm:^3.0.4": + version: 3.0.4 + resolution: "css-has-pseudo@npm:3.0.4" dependencies: - postcss-selector-parser: "npm:^6.0.7" + postcss-selector-parser: "npm:^6.0.9" peerDependencies: - postcss: ^8.3 + postcss: ^8.4 bin: - css-has-pseudo: dist/cli.mjs - checksum: 10c0/981b7a4640f9e764d4e05c87b41921b166421539f36d7e768a4fa41c8173658fa3a266c22feaedbc82c231882048e5b951404d4fa8c648dd158566bfca398120 - languageName: node - linkType: hard - -"css-loader@npm:^6.5.1": - version: 6.5.1 - resolution: "css-loader@npm:6.5.1" - dependencies: - icss-utils: "npm:^5.1.0" - postcss: "npm:^8.2.15" - postcss-modules-extract-imports: "npm:^3.0.0" - postcss-modules-local-by-default: "npm:^4.0.0" - postcss-modules-scope: "npm:^3.0.0" - postcss-modules-values: "npm:^4.0.0" - postcss-value-parser: "npm:^4.1.0" - semver: "npm:^7.3.5" - peerDependencies: - webpack: ^5.0.0 - checksum: 10c0/06fbc837b2961b14f02fd54cb870b1646f64c1380896c1ad48199afdb49cac50aec714398d114ac9ef2b6f806aa3f3c528479d152d0ee5907f30bfc41e0a9922 + css-has-pseudo: dist/cli.cjs + checksum: 10c0/da950bd66a73b7e02b428c95eba98fe664583ea059200dc4ddac2dfa3e316b637c538b69a1a8ffe52c4f739818bf55a264d652f15b18b78a6332e73ae08f03ed languageName: node linkType: hard -"css-loader@npm:^6.7.1": +"css-loader@npm:^6.5.1, css-loader@npm:^6.7.1": version: 6.11.0 resolution: "css-loader@npm:6.11.0" dependencies: @@ -8428,10 +6976,9 @@ __metadata: linkType: hard "css-minimizer-webpack-plugin@npm:^3.2.0": - version: 3.3.0 - resolution: "css-minimizer-webpack-plugin@npm:3.3.0" + version: 3.4.1 + resolution: "css-minimizer-webpack-plugin@npm:3.4.1" dependencies: - "@types/cssnano": "npm:^4.0.1" cssnano: "npm:^5.0.6" jest-worker: "npm:^27.0.2" postcss: "npm:^8.3.5" @@ -8441,24 +6988,26 @@ __metadata: peerDependencies: webpack: ^5.0.0 peerDependenciesMeta: + "@parcel/css": + optional: true clean-css: optional: true csso: optional: true esbuild: optional: true - checksum: 10c0/7a08d1063ca5267e96adf1fdd962fad504c2d132b4f7c69cfff51e2c828ecad6d63b4454013705b6c23ad98f29d675350e030b77054c44136146b03174b4c608 + checksum: 10c0/a6b749a136f7a62a173e576a10c8f2ada18013800a2698ede08dfdf6df6761b9ad24cabfce153ef4958ffcf8509e7b6a40c6ddffa6eb06f3624a97c17b825e06 languageName: node linkType: hard -"css-prefers-color-scheme@npm:^6.0.0": - version: 6.0.0 - resolution: "css-prefers-color-scheme@npm:6.0.0" +"css-prefers-color-scheme@npm:^6.0.3": + version: 6.0.3 + resolution: "css-prefers-color-scheme@npm:6.0.3" peerDependencies: - postcss: ^8.3 + postcss: ^8.4 bin: - css-prefers-color-scheme: dist/cli.mjs - checksum: 10c0/231b67b85528655a768a2bd871b6eeff1c6a701f0b0b2d645164cd40f2cf2b1783d8e14193330ce292ab76599f4d1e0dcbec3c319760edb4fa772a60e94336d5 + css-prefers-color-scheme: dist/cli.cjs + checksum: 10c0/b0f1efba0384f52506a5ab54179a2b56a4a2b693c81e2d533529c6eae7ddb9ca4b1be3a6bc9d2d44f7c4b3750bb4eda7ae9d7254fe91379b25e0cc3b301fbdd8 languageName: node linkType: hard @@ -8482,15 +7031,15 @@ __metadata: linkType: hard "css-select@npm:^4.1.3": - version: 4.2.0 - resolution: "css-select@npm:4.2.0" + version: 4.3.0 + resolution: "css-select@npm:4.3.0" dependencies: boolbase: "npm:^1.0.0" - css-what: "npm:^5.1.0" - domhandler: "npm:^4.3.0" + css-what: "npm:^6.0.1" + domhandler: "npm:^4.3.1" domutils: "npm:^2.8.0" nth-check: "npm:^2.0.1" - checksum: 10c0/d56c573f556c3a840ab9799b8c702f4a9060497220e40fd55495d627d5a2b5bfc4126b218263b511a8f0032c0eae68a064bbcdb1704596c496953c25bb950bd9 + checksum: 10c0/a489d8e5628e61063d5a8fe0fa1cc7ae2478cb334a388a354e91cf2908154be97eac9fa7ed4dffe87a3e06cf6fcaa6016553115335c4fd3377e13dac7bd5a8e1 languageName: node linkType: hard @@ -8504,17 +7053,7 @@ __metadata: languageName: node linkType: hard -"css-tree@npm:^1.1.2": - version: 1.1.2 - resolution: "css-tree@npm:1.1.2" - dependencies: - mdn-data: "npm:2.0.14" - source-map: "npm:^0.6.1" - checksum: 10c0/ff02b61b63835f3ec5654153db8a1b29f57d68b9c42fe2a0a9d84654eb59aa0a631f1aca8e3cc401f33a1eccd349b52cce2b3f67136c74ba4f78d9f0ee0c670c - languageName: node - linkType: hard - -"css-tree@npm:^1.1.3": +"css-tree@npm:^1.1.2, css-tree@npm:^1.1.3": version: 1.1.3 resolution: "css-tree@npm:1.1.3" dependencies: @@ -8531,10 +7070,10 @@ __metadata: languageName: node linkType: hard -"css-what@npm:^5.1.0": - version: 5.1.0 - resolution: "css-what@npm:5.1.0" - checksum: 10c0/e6e4eacc9aa8773b4150af23b13c84e349adb697ef7e222e71bd03d3792b3562ea8d0ad579cc56c6cea37a7541e80547d292ea150ccaa8719b969f63d459fb34 +"css-what@npm:^6.0.1": + version: 6.1.0 + resolution: "css-what@npm:6.1.0" + checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 languageName: node linkType: hard @@ -8545,10 +7084,10 @@ __metadata: languageName: node linkType: hard -"cssdb@npm:^5.0.0": - version: 5.0.0 - resolution: "cssdb@npm:5.0.0" - checksum: 10c0/412d83c7aea92ab693cc4e30781365fb14cde855c6ec582ad3d7e57431bd5ba2974f1fe8f856641e7486dd00e5a8f3406a50854e3f22dd7c60c90455153f8168 +"cssdb@npm:^7.1.0": + version: 7.11.2 + resolution: "cssdb@npm:7.11.2" + checksum: 10c0/5cd8dfee703dfbd7b7a8c3a93d65d26007ec1cd9692379b5868a0ceedf23b88e28d4b98f1cb9a4161f8b01e4a229e08ba9603fb94b756a3df6e07c423fff5b5d languageName: node linkType: hard @@ -8561,64 +7100,64 @@ __metadata: languageName: node linkType: hard -"cssnano-preset-default@npm:^5.1.9": - version: 5.1.9 - resolution: "cssnano-preset-default@npm:5.1.9" - dependencies: - css-declaration-sorter: "npm:^6.0.3" - cssnano-utils: "npm:^2.0.1" - postcss-calc: "npm:^8.0.0" - postcss-colormin: "npm:^5.2.2" - postcss-convert-values: "npm:^5.0.2" - postcss-discard-comments: "npm:^5.0.1" - postcss-discard-duplicates: "npm:^5.0.1" - postcss-discard-empty: "npm:^5.0.1" - postcss-discard-overridden: "npm:^5.0.1" - postcss-merge-longhand: "npm:^5.0.4" - postcss-merge-rules: "npm:^5.0.3" - postcss-minify-font-values: "npm:^5.0.1" - postcss-minify-gradients: "npm:^5.0.3" - postcss-minify-params: "npm:^5.0.2" - postcss-minify-selectors: "npm:^5.1.0" - postcss-normalize-charset: "npm:^5.0.1" - postcss-normalize-display-values: "npm:^5.0.1" - postcss-normalize-positions: "npm:^5.0.1" - postcss-normalize-repeat-style: "npm:^5.0.1" - postcss-normalize-string: "npm:^5.0.1" - postcss-normalize-timing-functions: "npm:^5.0.1" - postcss-normalize-unicode: "npm:^5.0.1" - postcss-normalize-url: "npm:^5.0.4" - postcss-normalize-whitespace: "npm:^5.0.1" - postcss-ordered-values: "npm:^5.0.2" - postcss-reduce-initial: "npm:^5.0.2" - postcss-reduce-transforms: "npm:^5.0.1" - postcss-svgo: "npm:^5.0.3" - postcss-unique-selectors: "npm:^5.0.2" +"cssnano-preset-default@npm:^5.2.14": + version: 5.2.14 + resolution: "cssnano-preset-default@npm:5.2.14" + dependencies: + css-declaration-sorter: "npm:^6.3.1" + cssnano-utils: "npm:^3.1.0" + postcss-calc: "npm:^8.2.3" + postcss-colormin: "npm:^5.3.1" + postcss-convert-values: "npm:^5.1.3" + postcss-discard-comments: "npm:^5.1.2" + postcss-discard-duplicates: "npm:^5.1.0" + postcss-discard-empty: "npm:^5.1.1" + postcss-discard-overridden: "npm:^5.1.0" + postcss-merge-longhand: "npm:^5.1.7" + postcss-merge-rules: "npm:^5.1.4" + postcss-minify-font-values: "npm:^5.1.0" + postcss-minify-gradients: "npm:^5.1.1" + postcss-minify-params: "npm:^5.1.4" + postcss-minify-selectors: "npm:^5.2.1" + postcss-normalize-charset: "npm:^5.1.0" + postcss-normalize-display-values: "npm:^5.1.0" + postcss-normalize-positions: "npm:^5.1.1" + postcss-normalize-repeat-style: "npm:^5.1.1" + postcss-normalize-string: "npm:^5.1.0" + postcss-normalize-timing-functions: "npm:^5.1.0" + postcss-normalize-unicode: "npm:^5.1.1" + postcss-normalize-url: "npm:^5.1.0" + postcss-normalize-whitespace: "npm:^5.1.1" + postcss-ordered-values: "npm:^5.1.3" + postcss-reduce-initial: "npm:^5.1.2" + postcss-reduce-transforms: "npm:^5.1.0" + postcss-svgo: "npm:^5.1.0" + postcss-unique-selectors: "npm:^5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/8dbd2f70a8d2a591e1fd41b51b36511eee430eadad6982a95911746457adba4b0d1b8d1f0b76e4b4683a32d22690e007e7c5c61f633e6277a0d0be8fbcef0a42 + checksum: 10c0/d125bdb9ac007f97f920e30be953c550a8e7de0cb9298f67e0bc9744f4b920039046b5a6b817e345872836b08689af747f82fbf2189c8bd48da3e6f0c1087b89 languageName: node linkType: hard -"cssnano-utils@npm:^2.0.1": - version: 2.0.1 - resolution: "cssnano-utils@npm:2.0.1" +"cssnano-utils@npm:^3.1.0": + version: 3.1.0 + resolution: "cssnano-utils@npm:3.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/9f88ab7da8138a516697d72e12fd64a12203508ed958eee228ced9a1b4e20dbc835bb721f426b2f0c7cb265a09408618d58c6e56d5476ce2dd7df61e2f17fa57 + checksum: 10c0/057508645a3e7584decede1045daa5b362dbfa2f5df96c3527c7d52e41e787a3442a56a8ea0c0af6a757f518e79a459ee580a35c323ad0d0eec912afd67d7630 languageName: node linkType: hard "cssnano@npm:^5.0.6": - version: 5.0.14 - resolution: "cssnano@npm:5.0.14" + version: 5.1.15 + resolution: "cssnano@npm:5.1.15" dependencies: - cssnano-preset-default: "npm:^5.1.9" + cssnano-preset-default: "npm:^5.2.14" lilconfig: "npm:^2.0.3" yaml: "npm:^1.10.2" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/5ef0cf1fa7db108f79704acb745dd01f7c47586d0817eb8a506c79fea2f5807704fd08baef4d60693fa42010b770db87280d1711034095e7ee036f037d1f2cc3 + checksum: 10c0/4252e4f4edd7a0fbdd4017825c0f8632b7a12ecbfdd432d2ff7ec268d48eb956a0a10bbf209602181f9f84ceeecea4a864719ecde03aa2cc48f5d9636fcf5f9a languageName: node linkType: hard @@ -8655,9 +7194,9 @@ __metadata: linkType: hard "csstype@npm:^3.0.2": - version: 3.0.7 - resolution: "csstype@npm:3.0.7" - checksum: 10c0/5dbf4731ef791cb7e95f89d47623d943e6ac7657d5d313e711018a6687625604043985ff78409b7d8c43eccd47c84e2dde0d86eefd70f80d2d6d9735523f19d9 + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 languageName: node linkType: hard @@ -8753,10 +7292,10 @@ __metadata: languageName: node linkType: hard -"damerau-levenshtein@npm:^1.0.7": - version: 1.0.7 - resolution: "damerau-levenshtein@npm:1.0.7" - checksum: 10c0/05083ca068c3d126191a7bd9392e313117010166540bb3018b40e63cd24c376fe323161c46b1a1dd73e482f323416eaee4430352c69207d6a968b33f4af66217 +"damerau-levenshtein@npm:^1.0.8": + version: 1.0.8 + resolution: "damerau-levenshtein@npm:1.0.8" + checksum: 10c0/4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 languageName: node linkType: hard @@ -8771,6 +7310,46 @@ __metadata: languageName: node linkType: hard +"data-view-buffer@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-buffer@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/8984119e59dbed906a11fcfb417d7d861936f16697a0e7216fe2c6c810f6b5e8f4a5281e73f2c28e8e9259027190ac4a33e2a65fdd7fa86ac06b76e838918583 + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/b7d9e48a0cf5aefed9ab7d123559917b2d7e0d65531f43b2fd95b9d3a6b46042dd3fca597c42bba384e66b70d7ad66ff23932f8367b241f53d93af42cfe04ec2 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "data-view-byte-offset@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/21b0d2e53fd6e20cc4257c873bf6d36d77bd6185624b84076c0a1ddaa757b49aaf076254006341d35568e89f52eecd1ccb1a502cfb620f2beca04f48a6a62a8f + languageName: node + linkType: hard + +"date-fns@npm:^4.1.0": + version: 4.1.0 + resolution: "date-fns@npm:4.1.0" + checksum: 10c0/b79ff32830e6b7faa009590af6ae0fb8c3fd9ffad46d930548fbb5acf473773b4712ae887e156ba91a7b3dc30591ce0f517d69fd83bd9c38650fdc03b4e0bac8 + languageName: node + linkType: hard + "dayjs@npm:1.11.13": version: 1.11.13 resolution: "dayjs@npm:1.11.13" @@ -8778,7 +7357,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:2.6.9, debug@npm:^2.6.0, debug@npm:^2.6.9": +"debug@npm:2.6.9, debug@npm:^2.6.0": version: 2.6.9 resolution: "debug@npm:2.6.9" dependencies: @@ -8787,19 +7366,19 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2": - version: 4.3.3 - resolution: "debug@npm:4.3.3" +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:~4.3.6": + version: 4.3.7 + resolution: "debug@npm:4.3.7" dependencies: - ms: "npm:2.1.2" + ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10c0/31873df69ff7036ce4f4158dcd6f71cd399b834ab1efbf23383f660822d28c7e29442fa83d34ccdd2f5201ff69eb494f0c7e8c01ecd314f0207bb631bb048ac0 + checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b languageName: node linkType: hard -"debug@npm:^3.1.1, debug@npm:^3.2.7": +"debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -8808,43 +7387,19 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.3.1": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: "npm:2.1.2" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 - languageName: node - linkType: hard - -"debug@npm:^4.3.4, debug@npm:~4.3.6": - version: 4.3.7 - resolution: "debug@npm:4.3.7" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b - languageName: node - linkType: hard - "decimal.js@npm:^10.2.1": - version: 10.3.1 - resolution: "decimal.js@npm:10.3.1" - checksum: 10c0/510964a02a4102eb55173bf3f4f853f8d9184ab3f660b28163d4aab45f2f41ebfde6f71806afef7be59da10d6488db75613b6f4cbbda49d6ba198ad7b56e81cf + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee languageName: node linkType: hard "decode-named-character-reference@npm:^1.0.0": - version: 1.0.1 - resolution: "decode-named-character-reference@npm:1.0.1" + version: 1.0.2 + resolution: "decode-named-character-reference@npm:1.0.2" dependencies: character-entities: "npm:^2.0.0" - checksum: 10c0/f3e717f76ea416944508ccba8c8ccbf8ef8e202595ea3f94fdc0e1658eb3520f4de9e60f23368a024b866d89115c76ecd641085dd1a1bdf6348c0331cbfc4ce1 + checksum: 10c0/66a9fc5d9b5385a2b3675c69ba0d8e893393d64057f7dbbb585265bb4fc05ec513d76943b8e5aac7d8016d20eea4499322cbf4cd6d54b466976b78f3a7587a4c languageName: node linkType: hard @@ -8855,24 +7410,10 @@ __metadata: languageName: node linkType: hard -"deep-equal@npm:^1.0.1": - version: 1.1.1 - resolution: "deep-equal@npm:1.1.1" - dependencies: - is-arguments: "npm:^1.0.4" - is-date-object: "npm:^1.0.1" - is-regex: "npm:^1.0.4" - object-is: "npm:^1.0.1" - object-keys: "npm:^1.1.1" - regexp.prototype.flags: "npm:^1.2.0" - checksum: 10c0/473d5dd1d707afd5ad3068864765590591b049d0e0d9a01931599dbbd820e35f09d0a42faa6e4644deb7cf6b7dc90f7bfdf5559f42279d67f714209b62036212 - languageName: node - linkType: hard - -"deep-is@npm:^0.1.3": - version: 0.1.3 - resolution: "deep-is@npm:0.1.3" - checksum: 10c0/f4e21bf6fbb51bca0214e04f079deadfc5a0df3d7822f4b5e45e78960ae1e9a379b93d650377b80ccd0fc6bd7cd995a0aeabbcc7496b8c2dd16ec57aece82d74 +"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c languageName: node linkType: hard @@ -8887,9 +7428,9 @@ __metadata: linkType: hard "deepmerge@npm:^4.2.2": - version: 4.2.2 - resolution: "deepmerge@npm:4.2.2" - checksum: 10c0/d6136eee869057fea7a829aa2d10073ed49db5216e42a77cc737dd385334aab9b68dae22020a00c24c073d5f79cbbdd3f11b8d4fc87700d112ddaa0e1f968ef2 + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 languageName: node linkType: hard @@ -8902,7 +7443,7 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.1.4": +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" dependencies: @@ -8920,35 +7461,14 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3": - version: 1.1.3 - resolution: "define-properties@npm:1.1.3" - dependencies: - object-keys: "npm:^1.0.12" - checksum: 10c0/a2fa03d97ee44bb7c679bac7c3b3e63431a2efd83c12c0d61c7f5adf4fa1cf0a669c77afd274babbc5400926bdc2befb25679e4bf687140b078c0fe14f782e4f - languageName: node - linkType: hard - -"defined@npm:^1.0.0": - version: 1.0.0 - resolution: "defined@npm:1.0.0" - checksum: 10c0/2b9929414857729a97cfcc77987e65005e03b3fd92747e1d6a743b054c1387b62e669dc453b53e3a8105f1398df6aad54c07eed984871c93be8c7f4560a1828b - languageName: node - linkType: hard - -"del@npm:^6.0.0": - version: 6.0.0 - resolution: "del@npm:6.0.0" +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" dependencies: - globby: "npm:^11.0.1" - graceful-fs: "npm:^4.2.4" - is-glob: "npm:^4.0.1" - is-path-cwd: "npm:^2.2.0" - is-path-inside: "npm:^3.0.2" - p-map: "npm:^4.0.0" - rimraf: "npm:^3.0.2" - slash: "npm:^3.0.0" - checksum: 10c0/c803f6b8a7633cb28ac2feb581175af829ac2fcd1ab3f59aa1f012800898b84e8a4368243850a1590666a55f567347628cf44048bf12aba2e37debde6d589c1a + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 languageName: node linkType: hard @@ -8973,14 +7493,7 @@ __metadata: languageName: node linkType: hard -"dequal@npm:^2.0.0, dequal@npm:^2.0.2": - version: 2.0.2 - resolution: "dequal@npm:2.0.2" - checksum: 10c0/998a2c6f5ba12ae4e8e4ca5384aadba7bcd6cef66a4830bd9e359d91132b2dff74510db830f3815ef4fddc3d4989834f1a7f66e906347bd75fa04231bf311451 - languageName: node - linkType: hard - -"dequal@npm:^2.0.3": +"dequal@npm:^2.0.0, dequal@npm:^2.0.2, dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 @@ -9004,6 +7517,13 @@ __metadata: languageName: node linkType: hard +"detect-element-overflow@npm:^1.4.0": + version: 1.4.2 + resolution: "detect-element-overflow@npm:1.4.2" + checksum: 10c0/dcc5f6d89c31f6035202cce64b96093338e777752b62c401c672e84908097ef01f833af5864e1c86c6440e4f843658f006d1084fb9090983ea5c438c8ad4a180 + languageName: node + linkType: hard + "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -9012,9 +7532,9 @@ __metadata: linkType: hard "detect-node@npm:^2.0.4": - version: 2.0.4 - resolution: "detect-node@npm:2.0.4" - checksum: 10c0/51357b37b1b26afef72fa3fa70ae7aeb37346874a41802cd5e2c9a81400eeeeec04293b153e3b30bcb982997b0952b608bb7d1c08777325da4dd93bd25891e0a + version: 2.1.0 + resolution: "detect-node@npm:2.1.0" + checksum: 10c0/f039f601790f2e9d4654e499913259a798b1f5246ae24f86ab5e8bd4aaf3bce50484234c494f11fb00aecb0c6e2733aa7b1cf3f530865640b65fbbd65b2c4e09 languageName: node linkType: hard @@ -9031,19 +7551,6 @@ __metadata: languageName: node linkType: hard -"detective@npm:^5.2.0": - version: 5.2.0 - resolution: "detective@npm:5.2.0" - dependencies: - acorn-node: "npm:^1.6.1" - defined: "npm:^1.0.0" - minimist: "npm:^1.1.1" - bin: - detective: bin/detective.js - checksum: 10c0/2070576d500d269bb41cded1e9dbd8ac0deca746b56e00c86a9dd2db4dc81cdedf3daa98b2c370d32705f7ded4aac48c96985a498ca541b7840f47898016d984 - languageName: node - linkType: hard - "devlop@npm:^1.0.0, devlop@npm:^1.1.0": version: 1.1.0 resolution: "devlop@npm:1.1.0" @@ -9060,13 +7567,6 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^27.4.0": - version: 27.4.0 - resolution: "diff-sequences@npm:27.4.0" - checksum: 10c0/f3fe6112f329f38220cf279ae956ef7b835b49fb34f49b53eae97f4f311b1f539b5d4b1082fdaa2fae79cf604f3a131da1dc93543129996229bcc1d9183cd74f - languageName: node - linkType: hard - "diff-sequences@npm:^27.5.1": version: 27.5.1 resolution: "diff-sequences@npm:27.5.1" @@ -9074,10 +7574,10 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^29.0.0": - version: 29.0.0 - resolution: "diff-sequences@npm:29.0.0" - checksum: 10c0/345f899af91ef981c4b02adb1d41ed001eb74743120ffdb751c942b39e8cbf37ece60d7c120977ef7ce48538d60f5a63b17e7d13e6797e4c5dcd91d2fe5cd215 +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 languageName: node linkType: hard @@ -9115,29 +7615,12 @@ __metadata: languageName: node linkType: hard -"dns-equal@npm:^1.0.0": - version: 1.0.0 - resolution: "dns-equal@npm:1.0.0" - checksum: 10c0/da966e5275ac50546e108af6bc29aaae2164d2ae96d60601b333c4a3aff91f50b6ca14929cf91f20a9cad1587b356323e300cea3ff6588a6a816988485f445f1 - languageName: node - linkType: hard - -"dns-packet@npm:^1.3.1": - version: 1.3.4 - resolution: "dns-packet@npm:1.3.4" - dependencies: - ip: "npm:^1.1.0" - safe-buffer: "npm:^5.0.1" - checksum: 10c0/ee06478da192f9014ab43c7e9118c77b9e353a8d5c06b0d2cba367b3501dd7453bcfed89354a8890cf740491379dcf4b28153d064d051e55c30cfbdf92b88608 - languageName: node - linkType: hard - -"dns-txt@npm:^2.0.2": - version: 2.0.2 - resolution: "dns-txt@npm:2.0.2" +"dns-packet@npm:^5.2.2": + version: 5.6.1 + resolution: "dns-packet@npm:5.6.1" dependencies: - buffer-indexof: "npm:^1.0.0" - checksum: 10c0/71703e65156a2d626216157e6c4fddd844e7e790b6cd3cec830ef8eed80e7ea2697e5f4f2f3eb3aae809be3c91e370cad7a5d91b05ce6b6fcd5e191e7e3d31ca + "@leichtgewicht/ip-codec": "npm:^2.0.1" + checksum: 10c0/8948d3d03063fb68e04a1e386875f8c3bcc398fc375f535f2b438fad8f41bf1afa6f5e70893ba44f4ae884c089247e0a31045722fa6ff0f01d228da103f1811d languageName: node linkType: hard @@ -9203,13 +7686,13 @@ __metadata: linkType: hard "dom-serializer@npm:^1.0.1": - version: 1.3.2 - resolution: "dom-serializer@npm:1.3.2" + version: 1.4.1 + resolution: "dom-serializer@npm:1.4.1" dependencies: domelementtype: "npm:^2.0.1" domhandler: "npm:^4.2.0" entities: "npm:^2.0.0" - checksum: 10c0/0a39ff0634da807b0e7b4e28d20305658e366d920050296ea6a306c29eb4094a1bf942a72ec2e51145f01efcff93e98eaa1eef4c299ca398e326a2e1c4641220 + checksum: 10c0/67d775fa1ea3de52035c98168ddcd59418356943b5eccb80e3c8b3da53adb8e37edb2cc2f885802b7b1765bf5022aec21dfc32910d7f9e6de4c3148f095ab5e0 languageName: node linkType: hard @@ -9220,17 +7703,10 @@ __metadata: languageName: node linkType: hard -"domelementtype@npm:^2.0.1": - version: 2.1.0 - resolution: "domelementtype@npm:2.1.0" - checksum: 10c0/3d558e6bb66f0ca0cb08befb9ae3ee2844c88547e1ae56aa8e8b7fc16086b17073e81707a527e8555ebb06eaab354f73d28b6f0296bfca1a7b38e8ae75236561 - languageName: node - linkType: hard - -"domelementtype@npm:^2.2.0": - version: 2.2.0 - resolution: "domelementtype@npm:2.2.0" - checksum: 10c0/0e3824e21fb9ff2cda9579ad04ef0068c58cc1746cf723560e1b4cb73ccae324062d468b25a576948459df7dd99e42d8a100b7fcfc6e05c8eefa2e6fed3f8f7d +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": + version: 2.3.0 + resolution: "domelementtype@npm:2.3.0" + checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 languageName: node linkType: hard @@ -9243,12 +7719,12 @@ __metadata: languageName: node linkType: hard -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.0": - version: 4.3.0 - resolution: "domhandler@npm:4.3.0" +"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1": + version: 4.3.1 + resolution: "domhandler@npm:4.3.1" dependencies: domelementtype: "npm:^2.2.0" - checksum: 10c0/c3de81c50d8e017dcfc404914ca29d30b4c646536ab52f133134ddc64b9e9987d9f11602c5beb08b435ec95cf5543f2d300daa56e9841e4c73c3f4f69f269c19 + checksum: 10c0/5c199c7468cb052a8b5ab80b13528f0db3d794c64fc050ba793b574e158e67c93f8336e87fd81e9d5ee43b0e04aea4d8b93ed7be4899cb726a1601b3ba18538b languageName: node linkType: hard @@ -9364,37 +7840,16 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.3.649": - version: 1.3.652 - resolution: "electron-to-chromium@npm:1.3.652" - checksum: 10c0/97a934e5278aa19519ee852d553557a8f1bd047232d48e2ff8b9bb18438a21eedd875581346c54f7a4ce5c19115b660ade5ae2d4cad7aeff95e8f6cf98c0d0dd - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.17": - version: 1.4.25 - resolution: "electron-to-chromium@npm:1.4.25" - checksum: 10c0/2a4a2fb456894e571b144cdab919c3bc3702e1bf57b03d25764f27bfa2966fa87b325d967743ddfabf27a93a321ce65be89e97f86e3e3a9e08608834c24bd97f - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.251": - version: 1.4.258 - resolution: "electron-to-chromium@npm:1.4.258" - checksum: 10c0/5329e7925fcf65ec205fee45ecce4627e9dcc30ea77c2baaae113e4de9fa9dc29cd16cdd0a86a1cec71d188ed43e783738b7ded232fd6691c9b00faa6846e253 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.5.4": - version: 1.5.20 - resolution: "electron-to-chromium@npm:1.5.20" - checksum: 10c0/d119ccebcb415dc6341072b4a2bd0c9052d94eccf93776d47f5781b9c28393407f9e30718380ee59cb2a280db6b2e36943ffe4a7cdac9e432246380a24f48fa1 +"electron-to-chromium@npm:^1.5.41": + version: 1.5.51 + resolution: "electron-to-chromium@npm:1.5.51" + checksum: 10c0/1903552a918bfc0568a3af568b14c9ac35bcf1ec8cba33a1c50304d93195c825aaa9b82ae463fcb19805600add4c302e7d2db4d762c36e5ae6547f72ad21afdd languageName: node linkType: hard "elliptic@npm:^6.5.3, elliptic@npm:^6.5.5": - version: 6.5.7 - resolution: "elliptic@npm:6.5.7" + version: 6.6.0 + resolution: "elliptic@npm:6.6.0" dependencies: bn.js: "npm:^4.11.9" brorand: "npm:^1.1.0" @@ -9403,7 +7858,14 @@ __metadata: inherits: "npm:^2.0.4" minimalistic-assert: "npm:^1.0.1" minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 10c0/799959b6c54ea3564e8961f35abdf8c77e37617f3051614b05ab1fb6a04ddb65bd1caa75ed1bae375b15dda312a0f79fed26ebe76ecf05c5a7af244152a601b8 + checksum: 10c0/42eb3492e218017bf8923a5d14a86f414952f2f771361805b3ae9f380923b5da53e203d0d92be95cb0a248858a78db7db5934a346e268abb757e6fe561d401c9 + languageName: node + linkType: hard + +"emittery@npm:^0.10.2": + version: 0.10.2 + resolution: "emittery@npm:0.10.2" + checksum: 10c0/2caeea7501a0cca9b0e9d8d0a84d7d059cd2319ab02016bb6f81ae8bc2f3353c6734ed50a5fe0e4e2b96ebcc1623c1344b6beec51a4feda34b121942dd50ba55 languageName: node linkType: hard @@ -9415,9 +7877,9 @@ __metadata: linkType: hard "emoji-regex@npm:^10.3.0": - version: 10.3.0 - resolution: "emoji-regex@npm:10.3.0" - checksum: 10c0/b4838e8dcdceb44cf47f59abe352c25ff4fe7857acaf5fb51097c427f6f75b44d052eb907a7a3b86f86bc4eae3a93f5c2b7460abe79c407307e6212d65c91163 + version: 10.4.0 + resolution: "emoji-regex@npm:10.4.0" + checksum: 10c0/a3fcedfc58bfcce21a05a5f36a529d81e88d602100145fcca3dc6f795e3c8acc4fc18fe773fbf9b6d6e9371205edb3afa2668ec3473fa2aa7fd47d2a9d46482d languageName: node linkType: hard @@ -9466,13 +7928,13 @@ __metadata: linkType: hard "endent@npm:^2.0.1": - version: 2.0.1 - resolution: "endent@npm:2.0.1" + version: 2.1.0 + resolution: "endent@npm:2.1.0" dependencies: dedent: "npm:^0.7.0" fast-json-parse: "npm:^1.0.3" - objectorarray: "npm:^1.0.4" - checksum: 10c0/23038c650207ebae3833bd27f44653129f6ece199d6e16fc7893a4a3ae9de0f56b3de798644d48fe66c21a0ba0901f944b78c73e6f5bf50b2123e28869f7e464 + objectorarray: "npm:^1.0.5" + checksum: 10c0/8cd6dae45e693ae2b2cbff2384348d3a5e2a06cc0396dddca8165e46bd2fd8d5394d44d338ba653bbfce4aead90eca1ec1abe7203843c84155c645d283b6b884 languageName: node linkType: hard @@ -9486,15 +7948,6 @@ __metadata: languageName: node linkType: hard -"enquirer@npm:^2.3.5": - version: 2.3.6 - resolution: "enquirer@npm:2.3.6" - dependencies: - ansi-colors: "npm:^4.1.1" - checksum: 10c0/8e070e052c2c64326a2803db9084d21c8aaa8c688327f133bf65c4a712586beb126fd98c8a01cfb0433e82a4bd3b6262705c55a63e0f7fb91d06b9cedbde9a11 - languageName: node - linkType: hard - "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" @@ -9533,80 +7986,72 @@ __metadata: linkType: hard "error-stack-parser@npm:^2.0.6": - version: 2.0.6 - resolution: "error-stack-parser@npm:2.0.6" - dependencies: - stackframe: "npm:^1.1.1" - checksum: 10c0/4a09ea8d6309f2ad492d8e5e417ddf3aeed17440e6747ea128f8423de1e6b9f24db9220845426ab43224481ebe6ec52e92aaff8211e7d28b79f462a220745352 - languageName: node - linkType: hard - -"es-abstract@npm:^1.17.2": - version: 1.17.7 - resolution: "es-abstract@npm:1.17.7" - dependencies: - es-to-primitive: "npm:^1.2.1" - function-bind: "npm:^1.1.1" - has: "npm:^1.0.3" - has-symbols: "npm:^1.0.1" - is-callable: "npm:^1.2.2" - is-regex: "npm:^1.1.1" - object-inspect: "npm:^1.8.0" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.1" - string.prototype.trimend: "npm:^1.0.1" - string.prototype.trimstart: "npm:^1.0.1" - checksum: 10c0/bb81c026ae150d438ffa7c364b18edd9550ee080a028da0a7e0f161192ae5b65922a9f588539d6075c503dfae066dc60603d1f67d5ac92a92c073edf9648afbc - languageName: node - linkType: hard - -"es-abstract@npm:^1.18.0-next.1": - version: 1.18.0-next.2 - resolution: "es-abstract@npm:1.18.0-next.2" + version: 2.1.4 + resolution: "error-stack-parser@npm:2.1.4" dependencies: - call-bind: "npm:^1.0.2" - es-to-primitive: "npm:^1.2.1" - function-bind: "npm:^1.1.1" - get-intrinsic: "npm:^1.0.2" - has: "npm:^1.0.3" - has-symbols: "npm:^1.0.1" - is-callable: "npm:^1.2.2" - is-negative-zero: "npm:^2.0.1" - is-regex: "npm:^1.1.1" - object-inspect: "npm:^1.9.0" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.2" - string.prototype.trimend: "npm:^1.0.3" - string.prototype.trimstart: "npm:^1.0.3" - checksum: 10c0/124678dd0a4aa173716f1714d13464f4e9f8923c16d145f8c2bf39eab7a11c3ac0280ee1f833448ae76936f88b378ae1a5a504190e412bebfa8070bc4ceaf165 + stackframe: "npm:^1.3.4" + checksum: 10c0/7679b780043c98b01fc546725484e0cfd3071bf5c906bbe358722972f04abf4fc3f0a77988017665bab367f6ef3fc2d0185f7528f45966b83e7c99c02d5509b9 languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1": - version: 1.19.1 - resolution: "es-abstract@npm:1.19.1" +"es-abstract@npm:^1.17.2, es-abstract@npm:^1.17.5, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": + version: 1.23.3 + resolution: "es-abstract@npm:1.23.3" dependencies: - call-bind: "npm:^1.0.2" + array-buffer-byte-length: "npm:^1.0.1" + arraybuffer.prototype.slice: "npm:^1.0.3" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + data-view-buffer: "npm:^1.0.1" + data-view-byte-length: "npm:^1.0.1" + data-view-byte-offset: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-set-tostringtag: "npm:^2.0.3" es-to-primitive: "npm:^1.2.1" - function-bind: "npm:^1.1.1" - get-intrinsic: "npm:^1.1.1" - get-symbol-description: "npm:^1.0.0" - has: "npm:^1.0.3" - has-symbols: "npm:^1.0.2" - internal-slot: "npm:^1.0.3" - is-callable: "npm:^1.2.4" - is-negative-zero: "npm:^2.0.1" + function.prototype.name: "npm:^1.1.6" + get-intrinsic: "npm:^1.2.4" + get-symbol-description: "npm:^1.0.2" + globalthis: "npm:^1.0.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.0.7" + is-array-buffer: "npm:^3.0.4" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.1" + is-negative-zero: "npm:^2.0.3" is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.1" + is-shared-array-buffer: "npm:^1.0.3" is-string: "npm:^1.0.7" - is-weakref: "npm:^1.0.1" - object-inspect: "npm:^1.11.0" + is-typed-array: "npm:^1.1.13" + is-weakref: "npm:^1.0.2" + object-inspect: "npm:^1.13.1" object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.2" - string.prototype.trimend: "npm:^1.0.4" - string.prototype.trimstart: "npm:^1.0.4" - unbox-primitive: "npm:^1.0.1" - checksum: 10c0/24ed66dfa682f1bbcfa70cd95581c29a6ba88baf579619bff5690ac383b8612f3f5fcebf30dec8df634d507b633ef1ed9f09b010b07e17e3975d4ce674e3059c + object.assign: "npm:^4.1.5" + regexp.prototype.flags: "npm:^1.5.2" + safe-array-concat: "npm:^1.1.2" + safe-regex-test: "npm:^1.0.3" + string.prototype.trim: "npm:^1.2.9" + string.prototype.trimend: "npm:^1.0.8" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.2" + typed-array-byte-length: "npm:^1.0.1" + typed-array-byte-offset: "npm:^1.0.2" + typed-array-length: "npm:^1.0.6" + unbox-primitive: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 10c0/d27e9afafb225c6924bee9971a7f25f20c314f2d6cb93a63cada4ac11dcf42040896a6c22e5fb8f2a10767055ed4ddf400be3b1eb12297d281726de470b75666 + languageName: node + linkType: hard + +"es-array-method-boxes-properly@npm:^1.0.0": + version: 1.0.0 + resolution: "es-array-method-boxes-properly@npm:1.0.0" + checksum: 10c0/4b7617d3fbd460d6f051f684ceca6cf7e88e6724671d9480388d3ecdd72119ddaa46ca31f2c69c5426a82e4b3091c1e81867c71dcdc453565cd90005ff2c382d languageName: node linkType: hard @@ -9619,13 +8064,36 @@ __metadata: languageName: node linkType: hard -"es-errors@npm:^1.3.0": +"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 languageName: node linkType: hard +"es-iterator-helpers@npm:^1.1.0": + version: 1.2.0 + resolution: "es-iterator-helpers@npm:1.2.0" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.3" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.7" + iterator.prototype: "npm:^1.1.3" + safe-array-concat: "npm:^1.1.2" + checksum: 10c0/2bd60580dfeae353f5b80445d2808da745e97eeacdb663a8c4d99a12046873830a06d377e9d5e88fe54eece7c94319a5ce5a01220e24d71394ceca8d3ef621d7 + languageName: node + linkType: hard + "es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.0": version: 1.5.4 resolution: "es-module-lexer@npm:1.5.4" @@ -9633,6 +8101,35 @@ __metadata: languageName: node linkType: hard +"es-object-atoms@npm:^1.0.0": + version: 1.0.0 + resolution: "es-object-atoms@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/1fed3d102eb27ab8d983337bb7c8b159dd2a1e63ff833ec54eea1311c96d5b08223b433060ba240541ca8adba9eee6b0a60cdbf2f80634b784febc9cc8b687b4 + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.3": + version: 2.0.3 + resolution: "es-set-tostringtag@npm:2.0.3" + dependencies: + get-intrinsic: "npm:^1.2.4" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.1" + checksum: 10c0/f22aff1585eb33569c326323f0b0d175844a1f11618b86e193b386f8be0ea9474cfbe46df39c45d959f7aa8f6c06985dc51dd6bce5401645ec5a74c4ceaa836a + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783 + languageName: node + linkType: hard + "es-to-primitive@npm:^1.2.1": version: 1.2.1 resolution: "es-to-primitive@npm:1.2.1" @@ -9738,14 +8235,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: 10c0/afd02e6ca91ffa813e1108b5e7756566173d6bc0d1eb951cb44d6b21702ec17c1cf116cfe75d4a2b02e05acb0b808a7a9387d0d1ca5cf9c04ad03a8445c3e46d - languageName: node - linkType: hard - -"escalade@npm:^3.1.2": +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 @@ -9787,6 +8277,25 @@ __metadata: languageName: node linkType: hard +"escodegen@npm:^1.8.1": + version: 1.14.3 + resolution: "escodegen@npm:1.14.3" + dependencies: + esprima: "npm:^4.0.1" + estraverse: "npm:^4.2.0" + esutils: "npm:^2.0.2" + optionator: "npm:^0.8.1" + source-map: "npm:~0.6.1" + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 10c0/30d337803e8f44308c90267bf6192399e4b44792497c77a7506b68ab802ba6a48ebbe1ce77b219aba13dfd2de5f5e1c267e35be1ed87b2a9c3315e8b283e302a + languageName: node + linkType: hard + "escodegen@npm:^2.0.0, escodegen@npm:^2.1.0": version: 2.1.0 resolution: "escodegen@npm:2.1.0" @@ -9829,24 +8338,26 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.6": - version: 0.3.6 - resolution: "eslint-import-resolver-node@npm:0.3.6" +"eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" dependencies: debug: "npm:^3.2.7" - resolve: "npm:^1.20.0" - checksum: 10c0/20e06f3fa27b49de7159c8db54b4d7f82c156498e0050c491fcf7395922f927765b8296bf857c3b487da361bd65c1dcc68203832ef8e9179b461aa4192406535 + is-core-module: "npm:^2.13.0" + resolve: "npm:^1.22.4" + checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 languageName: node linkType: hard -"eslint-module-utils@npm:^2.7.1": - version: 2.7.1 - resolution: "eslint-module-utils@npm:2.7.1" +"eslint-module-utils@npm:^2.12.0": + version: 2.12.0 + resolution: "eslint-module-utils@npm:2.12.0" dependencies: debug: "npm:^3.2.7" - find-up: "npm:^2.1.0" - pkg-dir: "npm:^2.0.0" - checksum: 10c0/0832b779e8471056992be90a09e4ebd7d21868198264c76de2d2ef9ee09abe158c837f74c845401491fe6fdf31e101818e2489838f4d6b8b8fc2d57f4ea24d20 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/4d8b46dcd525d71276f9be9ffac1d2be61c9d54cc53c992e6333cf957840dee09381842b1acbbb15fc6b255ebab99cd481c5007ab438e5455a14abe1a0468558 languageName: node linkType: hard @@ -9865,31 +8376,37 @@ __metadata: linkType: hard "eslint-plugin-import@npm:^2.25.3": - version: 2.25.3 - resolution: "eslint-plugin-import@npm:2.25.3" - dependencies: - array-includes: "npm:^3.1.4" - array.prototype.flat: "npm:^1.2.5" - debug: "npm:^2.6.9" + version: 2.31.0 + resolution: "eslint-plugin-import@npm:2.31.0" + dependencies: + "@rtsao/scc": "npm:^1.1.0" + array-includes: "npm:^3.1.8" + array.prototype.findlastindex: "npm:^1.2.5" + array.prototype.flat: "npm:^1.3.2" + array.prototype.flatmap: "npm:^1.3.2" + debug: "npm:^3.2.7" doctrine: "npm:^2.1.0" - eslint-import-resolver-node: "npm:^0.3.6" - eslint-module-utils: "npm:^2.7.1" - has: "npm:^1.0.3" - is-core-module: "npm:^2.8.0" + eslint-import-resolver-node: "npm:^0.3.9" + eslint-module-utils: "npm:^2.12.0" + hasown: "npm:^2.0.2" + is-core-module: "npm:^2.15.1" is-glob: "npm:^4.0.3" - minimatch: "npm:^3.0.4" - object.values: "npm:^1.1.5" - resolve: "npm:^1.20.0" - tsconfig-paths: "npm:^3.11.0" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.8" + object.groupby: "npm:^1.0.3" + object.values: "npm:^1.2.0" + semver: "npm:^6.3.1" + string.prototype.trimend: "npm:^1.0.8" + tsconfig-paths: "npm:^3.15.0" peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 10c0/cf163c289238032975a0d17c3382a7e7b96b1be13730f0f55a983d4c26891e17c6cebc917e0fcfec2e5b7fa0dcf5b0693aa36f65305e3f975803017f54071474 + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + checksum: 10c0/e21d116ddd1900e091ad120b3eb68c5dd5437fe2c930f1211781cd38b246f090a6b74d5f3800b8255a0ed29782591521ad44eb21c5534960a8f1fb4040fd913a languageName: node linkType: hard "eslint-plugin-jest@npm:^25.3.0": - version: 25.3.0 - resolution: "eslint-plugin-jest@npm:25.3.0" + version: 25.7.0 + resolution: "eslint-plugin-jest@npm:25.7.0" dependencies: "@typescript-eslint/experimental-utils": "npm:^5.0.0" peerDependencies: @@ -9900,73 +8417,80 @@ __metadata: optional: true jest: optional: true - checksum: 10c0/1655f4356cdc0a47408e513c470867063ca41f61e8f8cdc348369b12e581ee2ac0a6489c9dc5f283c002fa62861ffb6cb850a06a560a277066d46a8fbf933497 + checksum: 10c0/72dad05323d54e815c2bb10235bd5b77423796ef2e2940f7dba28bdb6cfac5a578793d3f0c7ac74618c41f9d8d6f345097a2a1f89f41aeec27bb873cb66ab270 languageName: node linkType: hard "eslint-plugin-jsx-a11y@npm:^6.5.1": - version: 6.5.1 - resolution: "eslint-plugin-jsx-a11y@npm:6.5.1" - dependencies: - "@babel/runtime": "npm:^7.16.3" - aria-query: "npm:^4.2.2" - array-includes: "npm:^3.1.4" - ast-types-flow: "npm:^0.0.7" - axe-core: "npm:^4.3.5" - axobject-query: "npm:^2.2.0" - damerau-levenshtein: "npm:^1.0.7" + version: 6.10.2 + resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" + dependencies: + aria-query: "npm:^5.3.2" + array-includes: "npm:^3.1.8" + array.prototype.flatmap: "npm:^1.3.2" + ast-types-flow: "npm:^0.0.8" + axe-core: "npm:^4.10.0" + axobject-query: "npm:^4.1.0" + damerau-levenshtein: "npm:^1.0.8" emoji-regex: "npm:^9.2.2" - has: "npm:^1.0.3" - jsx-ast-utils: "npm:^3.2.1" - language-tags: "npm:^1.0.5" - minimatch: "npm:^3.0.4" + hasown: "npm:^2.0.2" + jsx-ast-utils: "npm:^3.3.5" + language-tags: "npm:^1.0.9" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.8" + safe-regex-test: "npm:^1.0.3" + string.prototype.includes: "npm:^2.0.1" peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 10c0/320bafc9d27279b72b8c25db4d188690d9b334f69cfa3bd33ff17f7c7dfe89dc31b463c57e79a932a218dba771137c541f88af93cdb36ae7552bc051cef8a591 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + checksum: 10c0/d93354e03b0cf66f018d5c50964e074dffe4ddf1f9b535fa020d19c4ae45f89c1a16e9391ca61ac3b19f7042c751ac0d361a056a65cbd1de24718a53ff8daa6e languageName: node linkType: hard "eslint-plugin-react-hooks@npm:^4.3.0": - version: 4.3.0 - resolution: "eslint-plugin-react-hooks@npm:4.3.0" + version: 4.6.2 + resolution: "eslint-plugin-react-hooks@npm:4.6.2" peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 10c0/fdf491b182fd0815c95af6b5a9ef9de0640cbf0e446b2886899769470276c9a69be35a2aac42b2ada3e26b73cefee23b1eb4a93f27ee984b5763ee4718509629 + checksum: 10c0/4844e58c929bc05157fb70ba1e462e34f1f4abcbc8dd5bbe5b04513d33e2699effb8bca668297976ceea8e7ebee4e8fc29b9af9d131bcef52886feaa2308b2cc languageName: node linkType: hard "eslint-plugin-react@npm:^7.27.1": - version: 7.27.1 - resolution: "eslint-plugin-react@npm:7.27.1" + version: 7.37.2 + resolution: "eslint-plugin-react@npm:7.37.2" dependencies: - array-includes: "npm:^3.1.4" - array.prototype.flatmap: "npm:^1.2.5" + array-includes: "npm:^3.1.8" + array.prototype.findlast: "npm:^1.2.5" + array.prototype.flatmap: "npm:^1.3.2" + array.prototype.tosorted: "npm:^1.1.4" doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.1.0" estraverse: "npm:^5.3.0" + hasown: "npm:^2.0.2" jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" - minimatch: "npm:^3.0.4" - object.entries: "npm:^1.1.5" - object.fromentries: "npm:^2.0.5" - object.hasown: "npm:^1.1.0" - object.values: "npm:^1.1.5" - prop-types: "npm:^15.7.2" - resolve: "npm:^2.0.0-next.3" - semver: "npm:^6.3.0" - string.prototype.matchall: "npm:^4.0.6" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.8" + object.fromentries: "npm:^2.0.8" + object.values: "npm:^1.2.0" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.5" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.11" + string.prototype.repeat: "npm:^1.0.0" peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 10c0/7ee0cf33034fb5927f169ec45057dbc8b2c528682fe6c33716bf4b790e10fe2a0cc50bb91c4b78e7abf6e04536e44ff2e67c70b3bacc936defdbb05fb74e3a06 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 10c0/01c498f263c201698bf653973760f86a07fa0cdec56c044f3eaa5ddaae71c64326015dfa5fde76ca8c5386ffe789fc79932624b614e13b6a1ad789fee3f7c491 languageName: node linkType: hard "eslint-plugin-testing-library@npm:^5.0.1": - version: 5.0.1 - resolution: "eslint-plugin-testing-library@npm:5.0.1" + version: 5.11.1 + resolution: "eslint-plugin-testing-library@npm:5.11.1" dependencies: - "@typescript-eslint/experimental-utils": "npm:^5.5.0" + "@typescript-eslint/utils": "npm:^5.58.0" peerDependencies: eslint: ^7.5.0 || ^8.0.0 - checksum: 10c0/39e0315e40929e603ffa4fe39b9d2b5a10a4814279a5e376d8cfca1768dbd49b2bfebc30a9948b270a3496fc74a685377d17be49ba8f4cb0ca3c1298ea84639b + checksum: 10c0/55c7792345710a2b951acb0552ebe4e491d988f7d37fd308749e75fdbc36142b9a151ecec03b39992f672afea1a99dd3c3d2fb9f737ef18f56d7168e294fd9eb languageName: node linkType: hard @@ -9980,31 +8504,13 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.1.0": - version: 7.1.0 - resolution: "eslint-scope@npm:7.1.0" +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10c0/8dae17d7cba9a878716a7bbdc0d06474a329b9ff5bbec7c3801b64248e1ad53ea9941ac01db8c349c638ae966867c0f362d1aed533d1938d9c5a78c5d1135e87 - languageName: node - linkType: hard - -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" - dependencies: - eslint-visitor-keys: "npm:^2.0.0" - peerDependencies: - eslint: ">=5" - checksum: 10c0/45aa2b63667a8d9b474c98c28af908d0a592bed1a4568f3145cd49fb5d9510f545327ec95561625290313fe126e6d7bdfe3fdbdb6f432689fab6b9497d3bfb52 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "eslint-visitor-keys@npm:2.0.0" - checksum: 10c0/40d7b2ee3a34e926877ca7132e789d96e0d20a2fe9b2fff566d43713f86ad4bd8cc212b9818a6de0f475db0786747c25f82c9f8a66f2ba8ec7bd64721419cdd1 + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 languageName: node linkType: hard @@ -10015,85 +8521,95 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.1.0": - version: 3.1.0 - resolution: "eslint-visitor-keys@npm:3.1.0" - checksum: 10c0/ba23efd2a273cb5a0794ea76669cbe95892bed5d2e165e7744db6a81ede74f4239cf73d142016421d8297b72000486e4b41bba3078eccb9ef82ae0b7e06e9282 +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 languageName: node linkType: hard "eslint-webpack-plugin@npm:^3.1.1": - version: 3.1.1 - resolution: "eslint-webpack-plugin@npm:3.1.1" + version: 3.2.0 + resolution: "eslint-webpack-plugin@npm:3.2.0" dependencies: - "@types/eslint": "npm:^7.28.2" - jest-worker: "npm:^27.3.1" - micromatch: "npm:^4.0.4" + "@types/eslint": "npm:^7.29.0 || ^8.4.1" + jest-worker: "npm:^28.0.2" + micromatch: "npm:^4.0.5" normalize-path: "npm:^3.0.0" - schema-utils: "npm:^3.1.1" + schema-utils: "npm:^4.0.0" peerDependencies: eslint: ^7.0.0 || ^8.0.0 webpack: ^5.0.0 - checksum: 10c0/03c87290fd49cac4cd6dff330786b9215b8b75eb3b9de8ea03df66e2468636f53f956c1aefc1fbfcfe2d969d9a06a066fcfd85afa2bdd7330d76c9f7ff36d6b8 + checksum: 10c0/e2e11e6743df9e65e73f4d0b6de832a47a17568b2a4b03b86acfa3458bb2db50a7809c835b64613320f5fd5e1b1395dd2abe08d7f5c466c77234c500a087cad2 languageName: node linkType: hard "eslint@npm:^8.3.0": - version: 8.5.0 - resolution: "eslint@npm:8.5.0" - dependencies: - "@eslint/eslintrc": "npm:^1.0.5" - "@humanwhocodes/config-array": "npm:^0.9.2" - ajv: "npm:^6.10.0" + version: 8.57.1 + resolution: "eslint@npm:8.57.1" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.57.1" + "@humanwhocodes/config-array": "npm:^0.13.0" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" cross-spawn: "npm:^7.0.2" debug: "npm:^4.3.2" doctrine: "npm:^3.0.0" - enquirer: "npm:^2.3.5" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.1.0" - eslint-utils: "npm:^3.0.0" - eslint-visitor-keys: "npm:^3.1.0" - espree: "npm:^9.2.0" - esquery: "npm:^1.4.0" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + esquery: "npm:^1.4.2" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" file-entry-cache: "npm:^6.0.1" - functional-red-black-tree: "npm:^1.0.1" - glob-parent: "npm:^6.0.1" - globals: "npm:^13.6.0" - ignore: "npm:^4.0.6" - import-fresh: "npm:^3.0.0" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.19.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" js-yaml: "npm:^4.1.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" levn: "npm:^0.4.1" lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.0.4" + minimatch: "npm:^3.1.2" natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.1" - progress: "npm:^2.0.0" - regexpp: "npm:^3.2.0" - semver: "npm:^7.2.1" + optionator: "npm:^0.9.3" strip-ansi: "npm:^6.0.1" - strip-json-comments: "npm:^3.1.0" text-table: "npm:^0.2.0" - v8-compile-cache: "npm:^2.0.3" bin: eslint: bin/eslint.js - checksum: 10c0/7aa9ba4681b355d0bac813ae0492beddad6f2f223815778318b5264200ad0f8c06aa753a366bc21d741b7b713ec823b836ac15f444a2297fa18d6745a88a27d6 + checksum: 10c0/1fd31533086c1b72f86770a4d9d7058ee8b4643fd1cfd10c7aac1ecb8725698e88352a87805cf4b2ce890aa35947df4b4da9655fb7fdfa60dbb448a43f6ebcf1 languageName: node linkType: hard -"espree@npm:^9.2.0": - version: 9.2.0 - resolution: "espree@npm:9.2.0" +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" dependencies: - acorn: "npm:^8.6.0" - acorn-jsx: "npm:^5.3.1" - eslint-visitor-keys: "npm:^3.1.0" - checksum: 10c0/fa0acceb6bf151193b873379ba8ee3771c93ce3b656aeb9fe4a36adcf170e315925096e8addddd2d347ae6026ab18febc5892e314e6b109b61a9c3be75f88dc0 + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + +"esprima@npm:1.2.2": + version: 1.2.2 + resolution: "esprima@npm:1.2.2" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/a5a8fd359651dd8228736d7352eb7636c7765e1ec6ff8fff3f6641622039a9f51fa501969a1a4777ba4187cf9942a8d7e0367dccaff768b782bdb1a71d046abf languageName: node linkType: hard @@ -10107,12 +8623,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.0": - version: 1.4.0 - resolution: "esquery@npm:1.4.0" +"esquery@npm:^1.4.2": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c0/b9b18178d33c4335210c76e062de979dc38ee6b49deea12bff1b2315e6cfcca1fd7f8bc49f899720ad8ff25967ac95b5b182e81a8b7b59ff09dbd0d978c32f64 + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 languageName: node linkType: hard @@ -10125,27 +8641,27 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.1.1": +"estraverse@npm:^4.1.1, estraverse@npm:^4.2.0": version: 4.3.0 resolution: "estraverse@npm:4.3.0" checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d languageName: node linkType: hard -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": - version: 5.2.0 - resolution: "estraverse@npm:5.2.0" - checksum: 10c0/76a07411841ddf30a6a75afc93e8c00bbfe255a62dee7e1dc90b06ce0d7b939a00cf816ae94566ab5bc1cfde773a49387a35650287840b842143fff46f8f9ae3 - languageName: node - linkType: hard - -"estraverse@npm:^5.3.0": +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 languageName: node linkType: hard +"estree-util-is-identifier-name@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-is-identifier-name@npm:3.0.0" + checksum: 10c0/d1881c6ed14bd588ebd508fc90bf2a541811dbb9ca04dec2f39d27dcaa635f85b5ed9bbbe7fc6fb1ddfca68744a5f7c70456b4b7108b6c4c52780631cc787c5b + languageName: node + linkType: hard + "estree-walker@npm:^1.0.1": version: 1.0.1 resolution: "estree-walker@npm:1.0.1" @@ -10240,30 +8756,28 @@ __metadata: languageName: node linkType: hard -"expect@npm:^27.4.2": - version: 27.4.2 - resolution: "expect@npm:27.4.2" +"expect@npm:^27.5.1": + version: 27.5.1 + resolution: "expect@npm:27.5.1" dependencies: - "@jest/types": "npm:^27.4.2" - ansi-styles: "npm:^5.0.0" - jest-get-type: "npm:^27.4.0" - jest-matcher-utils: "npm:^27.4.2" - jest-message-util: "npm:^27.4.2" - jest-regex-util: "npm:^27.4.0" - checksum: 10c0/c8d1c7d6f1db104045acad9cb088126f91309c5c95fa42a06fd37c950c3a77fb38eb65c1f108f58d0d84420bedadbc8904ffaa5fa95fae849030f41480e16d30 + "@jest/types": "npm:^27.5.1" + jest-get-type: "npm:^27.5.1" + jest-matcher-utils: "npm:^27.5.1" + jest-message-util: "npm:^27.5.1" + checksum: 10c0/020e237c7191a584bc25a98181c3969cdd62fa1c044e4d81d5968e24075f39bc2349fcee48de82431033823b525e7cf5ac410b253b3115392f1026cb27258811 languageName: node linkType: hard "expect@npm:^29.0.0": - version: 29.0.2 - resolution: "expect@npm:29.0.2" + version: 29.7.0 + resolution: "expect@npm:29.7.0" dependencies: - "@jest/expect-utils": "npm:^29.0.2" - jest-get-type: "npm:^29.0.0" - jest-matcher-utils: "npm:^29.0.2" - jest-message-util: "npm:^29.0.2" - jest-util: "npm:^29.0.2" - checksum: 10c0/3147ea90c9e26517b1d111a3426f9447c262eb00a37b2cd55d1190e4a285742fc51cbbdbaa882c5fb0b877802a28812bd2f990fee4ec763631eb93eac887214c + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 languageName: node linkType: hard @@ -10274,16 +8788,16 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.17.1, express@npm:^4.19.2": - version: 4.21.0 - resolution: "express@npm:4.21.0" +"express@npm:^4.17.3, express@npm:^4.19.2": + version: 4.21.1 + resolution: "express@npm:4.21.1" dependencies: accepts: "npm:~1.3.8" array-flatten: "npm:1.1.1" body-parser: "npm:1.20.3" content-disposition: "npm:0.5.4" content-type: "npm:~1.0.4" - cookie: "npm:0.6.0" + cookie: "npm:0.7.1" cookie-signature: "npm:1.0.6" debug: "npm:2.6.9" depd: "npm:2.0.0" @@ -10309,7 +8823,7 @@ __metadata: type-is: "npm:~1.6.18" utils-merge: "npm:1.0.1" vary: "npm:~1.1.2" - checksum: 10c0/4cf7ca328f3fdeb720f30ccb2ea7708bfa7d345f9cc460b64a82bf1b2c91e5b5852ba15a9a11b2a165d6089acf83457fc477dc904d59cd71ed34c7a91762c6cc + checksum: 10c0/0c287867e5f6129d3def1edd9b63103a53c40d4dc8628839d4b6827e35eb8f0de5a4656f9d85f4457eba584f9871ebb2ad26c750b36bd75d9bbb8bcebdc4892c languageName: node linkType: hard @@ -10327,34 +8841,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.1.1": - version: 3.2.5 - resolution: "fast-glob@npm:3.2.5" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.0" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.2" - picomatch: "npm:^2.2.1" - checksum: 10c0/d3b90c1debb01a3f359491fd04ad474f2e5030a37245971b32d5c967a920c4efca74ebba786f1ebcb602442af1f88815af792b8a662125f74be24b98f2235bb4 - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.7": - version: 3.2.7 - resolution: "fast-glob@npm:3.2.7" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 10c0/cc820a9acbd99c51267d525ed3c0c368b57d273f8d34e2401eef824390ff38ff419af3c0308d4ec1aef3dae0e24d1ac1dfe3156e5c702d63416a4c877ab7e0c4 - languageName: node - linkType: hard - -"fast-glob@npm:^3.3.0": +"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -10381,19 +8868,26 @@ __metadata: languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6": +"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 languageName: node linkType: hard +"fast-uri@npm:^3.0.1": + version: 3.0.3 + resolution: "fast-uri@npm:3.0.3" + checksum: 10c0/4b2c5ce681a062425eae4f15cdc8fc151fd310b2f69b1f96680677820a8b49c3cd6e80661a406e19d50f0c40a3f8bffdd458791baf66f4a879d80be28e10a320 + languageName: node + linkType: hard + "fastq@npm:^1.6.0": - version: 1.10.1 - resolution: "fastq@npm:1.10.1" + version: 1.17.1 + resolution: "fastq@npm:1.17.1" dependencies: reusify: "npm:^1.0.4" - checksum: 10c0/b01bf79cd3ddfda5d3fcba91af5e9ffd729fb5df7addd24ee9beabfd75c609aad05541a41f430bc1b160e9887ca4fcc2936c39a5f14f6739e505ba7bd1b6e48f + checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 languageName: node linkType: hard @@ -10407,20 +8901,20 @@ __metadata: linkType: hard "faye-websocket@npm:^0.11.3": - version: 0.11.3 - resolution: "faye-websocket@npm:0.11.3" + version: 0.11.4 + resolution: "faye-websocket@npm:0.11.4" dependencies: websocket-driver: "npm:>=0.5.1" - checksum: 10c0/ef4b6d45f33f83e02eb2bd1c406258f179c07e39ef9863a637b89781ee621708b71980e4252d0e176395919fc65fcb71f9f2ebe3b22d2cdde60738e91846365b + checksum: 10c0/c6052a0bb322778ce9f89af92890f6f4ce00d5ec92418a35e5f4c6864a4fe736fec0bcebd47eac7c0f0e979b01530746b1c85c83cb04bae789271abf19737420 languageName: node linkType: hard "fb-watchman@npm:^2.0.0": - version: 2.0.1 - resolution: "fb-watchman@npm:2.0.1" + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" dependencies: bser: "npm:2.1.1" - checksum: 10c0/796ce6de1f915d4230771a6ad2219e0555275f2936d66022321845f7e69c65b10baa74959322b1ab94ac65b91307f1f09a6b8e2097a337ff113101ebbc4c6958 + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 languageName: node linkType: hard @@ -10452,12 +8946,12 @@ __metadata: languageName: node linkType: hard -"filelist@npm:^1.0.1": - version: 1.0.2 - resolution: "filelist@npm:1.0.2" +"filelist@npm:^1.0.4": + version: 1.0.4 + resolution: "filelist@npm:1.0.4" dependencies: - minimatch: "npm:^3.0.4" - checksum: 10c0/313cef552b9914d25b8e4cda2bad192cdcddf2f81d0e7f27f9fc02b5a13b2c19971f886c263e3ca2283d7d82a8f8272d1690cc9ff8bdcc40a565aa16f90c378e + minimatch: "npm:^5.0.1" + checksum: 10c0/426b1de3944a3d153b053f1c0ebfd02dccd0308a4f9e832ad220707a6d1f1b3c9784d6cadf6b2f68f09a57565f63ebc7bcdc913ccf8012d834f472c46e596f41 languageName: node linkType: hard @@ -10469,9 +8963,9 @@ __metadata: linkType: hard "filesize@npm:^8.0.6": - version: 8.0.6 - resolution: "filesize@npm:8.0.6" - checksum: 10c0/b7c358d6945eb59726575f5a66e9cc02efffb38bdb1c61eac6d50612d3271e896eb8ddb771d10d91f1603525f345144e9de6c0ce44a8e10baeaf8261690695b7 + version: 8.0.7 + resolution: "filesize@npm:8.0.7" + checksum: 10c0/82072d94816484df5365d4d5acbb2327a65dc49704c64e403e8c40d8acb7364de1cf1e65cb512c77a15d353870f73e4fed46dad5c6153d0618d9ce7a64d09cfc languageName: node linkType: hard @@ -10500,13 +8994,13 @@ __metadata: linkType: hard "find-cache-dir@npm:^3.3.1": - version: 3.3.1 - resolution: "find-cache-dir@npm:3.3.1" + version: 3.3.2 + resolution: "find-cache-dir@npm:3.3.2" dependencies: commondir: "npm:^1.0.1" make-dir: "npm:^3.0.2" pkg-dir: "npm:^4.1.0" - checksum: 10c0/589ece7a2721885c354f1f8c5c6d02c3acdfc9d62ae9fad2967e3a613fbfbc7a5ebdb727af3c77864f656224046fbc07e41733f9d9d3eb3896d149e9083ebbb4 + checksum: 10c0/92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587 languageName: node linkType: hard @@ -10517,15 +9011,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^2.1.0": - version: 2.1.0 - resolution: "find-up@npm:2.1.0" - dependencies: - locate-path: "npm:^2.0.0" - checksum: 10c0/c080875c9fe28eb1962f35cbe83c683796a0321899f1eed31a37577800055539815de13d53495049697d3ba313013344f843bb9401dd337a1b832be5edfc6840 - languageName: node - linkType: hard - "find-up@npm:^3.0.0": version: 3.0.0 resolution: "find-up@npm:3.0.0" @@ -10556,29 +9041,39 @@ __metadata: linkType: hard "flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" dependencies: - flatted: "npm:^3.1.0" + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" rimraf: "npm:^3.0.2" - checksum: 10c0/f274dcbadb09ad8d7b6edf2ee9b034bc40bf0c12638f6c4084e9f1d39208cb104a5ebbb24b398880ef048200eaa116852f73d2d8b72e8c9627aba8c3e27ca057 + checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 languageName: node linkType: hard -"flatted@npm:^3.1.0": - version: 3.1.1 - resolution: "flatted@npm:3.1.1" - checksum: 10c0/179b26156c37e529addfb530dd1ea3b9e49888fa7e2ec34bc644e603965db6889d70e1bbc14e2ccae680a0f71bbf7446c396660905a92b436a78f14d011fb349 +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" + bin: + flat: cli.js + checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf languageName: node linkType: hard "follow-redirects@npm:^1.0.0": - version: 1.15.6 - resolution: "follow-redirects@npm:1.15.6" + version: 1.15.9 + resolution: "follow-redirects@npm:1.15.9" peerDependenciesMeta: debug: optional: true - checksum: 10c0/9ff767f0d7be6aa6870c82ac79cf0368cd73e01bbc00e9eb1c2a16fbb198ec105e3c9b6628bb98e9f3ac66fe29a957b9645bcb9a490bb7aa0d35f908b6b85071 + checksum: 10c0/5829165bd112c3c0e82be6c15b1a58fa9dcfaede3b3c54697a82fe4a62dd5ae5e8222956b448d2f98e331525f05d00404aba7d696de9e761ef6e42fdc780244f languageName: node linkType: hard @@ -10602,8 +9097,8 @@ __metadata: linkType: hard "fork-ts-checker-webpack-plugin@npm:^6.5.0": - version: 6.5.0 - resolution: "fork-ts-checker-webpack-plugin@npm:6.5.0" + version: 6.5.3 + resolution: "fork-ts-checker-webpack-plugin@npm:6.5.3" dependencies: "@babel/code-frame": "npm:^7.8.3" "@types/json-schema": "npm:^7.0.5" @@ -10628,7 +9123,7 @@ __metadata: optional: true vue-template-compiler: optional: true - checksum: 10c0/875e9f09ef519ffcd15905c2b8d1f0f42b0012e87692417e60f4acd840f1f1c9dac6e663ca7bc9b12563d14f5b81ec86470d69a4212403cfad2949d22c2a53e1 + checksum: 10c0/0885ea75474de011d4068ca3e2d3ca6e4cd318f5cfa018e28ff8fef23ef3a1f1c130160ef192d3e5d31ef7b6fe9f8fb1d920eab5e9e449fb30ce5cc96647245c languageName: node linkType: hard @@ -10656,13 +9151,13 @@ __metadata: linkType: hard "form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" + version: 3.0.2 + resolution: "form-data@npm:3.0.2" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" mime-types: "npm:^2.1.12" - checksum: 10c0/1ccc3ae064a080a799923f754d49fcebdd90515a8924f0f54de557540b50e7f1fe48ba5f2bd0435a5664aa2d49729107e6aaf2155a9abf52339474c5638b4485 + checksum: 10c0/1157ba53ce3a381ea3321b5506ae843ead4027e1b4567b74afa7d84df7043b33c5e518bb267dac56036c3dd8f4d8268be3e7181691488fff766bfccdc98d3bf7 languageName: node linkType: hard @@ -10680,20 +9175,6 @@ __metadata: languageName: node linkType: hard -"fraction.js@npm:^4.1.1": - version: 4.1.2 - resolution: "fraction.js@npm:4.1.2" - checksum: 10c0/d8675a25555531d3c1dcdb2f74f165e84eeb7cdf409f31034d6e7812827197f656975ee313dc2f6e18ad55a1c7a476dbee04c86063fb37721a07698f37622cc0 - languageName: node - linkType: hard - -"fraction.js@npm:^4.2.0": - version: 4.2.0 - resolution: "fraction.js@npm:4.2.0" - checksum: 10c0/b16c0a6a7f045b3416c1afbb174b7afca73bd7eb0c62598a0c734a8b1f888cb375684174daf170abfba314da9f366b7d6445e396359d5fae640883bdb2ed18cb - languageName: node - linkType: hard - "fraction.js@npm:^4.3.7": version: 4.3.7 resolution: "fraction.js@npm:4.3.7" @@ -10740,13 +9221,13 @@ __metadata: linkType: hard "fs-extra@npm:^10.0.0": - version: 10.0.0 - resolution: "fs-extra@npm:10.0.0" + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" dependencies: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 10c0/85802f3d9e49d197744a8372f0d78d5a1faa3df73f4c5375d6366a4b9f745197d3da1f095841443d50f29a9f81cdc01363eb6d17bef2ba70c268559368211040 + checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e languageName: node linkType: hard @@ -10780,13 +9261,6 @@ __metadata: languageName: node linkType: hard -"fs-monkey@npm:1.0.1": - version: 1.0.1 - resolution: "fs-monkey@npm:1.0.1" - checksum: 10c0/2fab7af2a3946cef8f45441b763c644b50d4137a50ead736a93bd433cd84238c627b0a53098f50341266e130e2c509d61d9ed13ec0a27328dd0d4f1a8bda2048 - languageName: node - linkType: hard - "fs-monkey@npm:^1.0.4": version: 1.0.6 resolution: "fs-monkey@npm:1.0.6" @@ -10802,50 +9276,24 @@ __metadata: linkType: hard "fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/be78a3efa3e181cda3cf7a4637cb527bcebb0bd0ea0440105a3bb45b86f9245b307dc10a2507e8f4498a7d4ec349d1910f4d73e4d4495b16103106e07eee735b - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@npm:~2.3.1": - version: 2.3.1 - resolution: "fsevents@npm:2.3.1" + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" dependencies: node-gyp: "npm:latest" - checksum: 10c0/fc3dfda1ece574b0334f3b966e09ff6e5e98bd268bee92d63fef534a2774532ba11857ff822e88af987f644868a8d2249b5483150a9762dd2dc865436fc298c5 + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 conditions: os=darwin languageName: node linkType: hard "fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" - dependencies: - node-gyp: "npm:latest" - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A~2.3.1#optional!builtin": - version: 2.3.1 - resolution: "fsevents@patch:fsevents@npm%3A2.3.1#optional!builtin::version=2.3.1&hash=df0bf1" + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: node-gyp: "npm:latest" conditions: os=darwin languageName: node linkType: hard -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: 10c0/60b74b2407e1942e1ed7f8c284f8ef714d0689dcfce5319985a5b7da3fc727f40b4a59ec72dc55aa83365ad7b8fa4fac3a30d93c850a2b452f29ae03dbc10a1e - languageName: node - linkType: hard - "function-bind@npm:^1.1.2": version: 1.1.2 resolution: "function-bind@npm:1.1.2" @@ -10853,14 +9301,26 @@ __metadata: languageName: node linkType: hard -"functional-red-black-tree@npm:^1.0.1": - version: 1.0.1 - resolution: "functional-red-black-tree@npm:1.0.1" - checksum: 10c0/5959eed0375803d9924f47688479bb017e0c6816a0e5ac151e22ba6bfe1d12c41de2f339188885e0aa8eeea2072dad509d8e4448467e816bde0a2ca86a0670d3 +"function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + functions-have-names: "npm:^1.2.3" + checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca languageName: node linkType: hard -"gensync@npm:^1.0.0-beta.1, gensync@npm:^1.0.0-beta.2": +"gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 @@ -10875,24 +9335,13 @@ __metadata: linkType: hard "get-east-asian-width@npm:^1.0.0": - version: 1.2.0 - resolution: "get-east-asian-width@npm:1.2.0" - checksum: 10c0/914b1e217cf38436c24b4c60b4c45289e39a45bf9e65ef9fd343c2815a1a02b8a0215aeec8bf9c07c516089004b6e3826332481f40a09529fcadbf6e579f286b - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.0.1, get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1": - version: 1.1.1 - resolution: "get-intrinsic@npm:1.1.1" - dependencies: - function-bind: "npm:^1.1.1" - has: "npm:^1.0.3" - has-symbols: "npm:^1.0.1" - checksum: 10c0/c01055578e9b8da37a7779b18b732436c55d93e5ffa56b0fc4d3da8468ad89a25ce2343ba1945f20c0e78119bc7bb296fb59a0da521b6e43fd632de73376e040 + version: 1.3.0 + resolution: "get-east-asian-width@npm:1.3.0" + checksum: 10c0/1a049ba697e0f9a4d5514c4623781c5246982bdb61082da6b5ae6c33d838e52ce6726407df285cdbb27ec1908b333cf2820989bd3e986e37bb20979437fdf34b languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.4": +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" dependencies: @@ -10933,13 +9382,23 @@ __metadata: languageName: node linkType: hard -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.1" - checksum: 10c0/23bc3b44c221cdf7669a88230c62f4b9e30393b61eb21ba4400cb3e346801bd8f95fe4330ee78dbae37aecd874646d53e3e76a17a654d0c84c77f6690526d6bb + call-bind: "npm:^1.0.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc + languageName: node + linkType: hard + +"get-user-locale@npm:^2.2.1": + version: 2.3.2 + resolution: "get-user-locale@npm:2.3.2" + dependencies: + mem: "npm:^8.0.0" + checksum: 10c0/2796b3fc3782b1f4826f31e899642cf72eeb23e296e1cf55280aab5caf7a25f4b906491ee1508a001519d6a410902ccf8fa8edaa895b7aee5dfd422ffe5523b9 languageName: node linkType: hard @@ -10950,7 +9409,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.0, glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.0, glob-parent@npm:~5.1.2": +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -10959,7 +9418,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^6.0.1, glob-parent@npm:^6.0.2": +"glob-parent@npm:^6.0.2": version: 6.0.2 resolution: "glob-parent@npm:6.0.2" dependencies: @@ -10975,20 +9434,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:7.1.6, glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": - version: 7.1.6 - resolution: "glob@npm:7.1.6" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.0.4" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10c0/2575cce9306ac534388db751f0aa3e78afedb6af8f3b529ac6b2354f66765545145dba8530abf7bff49fb399a047d3f9b6901c38ee4c9503f592960d9af67763 - languageName: node - linkType: hard - "glob@npm:^10.2.2, glob@npm:^10.3.10": version: 10.4.5 resolution: "glob@npm:10.4.5" @@ -11005,6 +9450,20 @@ __metadata: languageName: node linkType: hard +"glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + "global-modules@npm:^2.0.0": version: 2.0.0 resolution: "global-modules@npm:2.0.0" @@ -11032,40 +9491,36 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.6.0, globals@npm:^13.9.0": - version: 13.12.0 - resolution: "globals@npm:13.12.0" +"globals@npm:^13.19.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" dependencies: type-fest: "npm:^0.20.2" - checksum: 10c0/e9daf6459d4f1056e64434d7fbd8dadba1036ec85b33ef4649bfa2000b816234ec02c37debf9e93fa3d50eb5f6e828a1c12279983636f58f864c7afda1c32546 + checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd languageName: node linkType: hard -"globby@npm:^11.0.1": - version: 11.0.2 - resolution: "globby@npm:11.0.2" +"globalthis@npm:^1.0.3, globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.1.1" - ignore: "npm:^5.1.4" - merge2: "npm:^1.3.0" - slash: "npm:^3.0.0" - checksum: 10c0/261c796bc25d9c43ecdf8aab0864facb9af1bc8cf2ae1cc6403a78dd6226f225f7f8f33f25f773380f55c0c765e125766f94e2e691930d34e1f82e5f9dd45079 + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 languageName: node linkType: hard -"globby@npm:^11.0.4": - version: 11.0.4 - resolution: "globby@npm:11.0.4" +"globby@npm:^11.0.4, globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" dependencies: array-union: "npm:^2.1.0" dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.1.1" - ignore: "npm:^5.1.4" - merge2: "npm:^1.3.0" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" slash: "npm:^3.0.0" - checksum: 10c0/de5f828c834baf75e3bd3c629bb3a64d1dfa9965831d0b105b728f9184284c6ba2b0d42e24862b411abc18e6e0af12e60880b3a62e096752de3426f2839f9ef7 + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 languageName: node linkType: hard @@ -11078,31 +9533,17 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4": - version: 4.2.4 - resolution: "graceful-fs@npm:4.2.4" - checksum: 10c0/6a5e1cb1fa081352555da8be104dc312647060b67e9d9dd15d8a054a0c71ead661535ca6de17eb382d86d647e98fc5c50d4201be75d836c1f6e6d64138ec1423 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.11": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 languageName: node linkType: hard -"graceful-fs@npm:^4.2.6": - version: 4.2.8 - resolution: "graceful-fs@npm:4.2.8" - checksum: 10c0/68365485460f7d2e95c05c1b7aeee935349f3b7776488d5bd95a45d8a45bd4977442e88cbbdb4ea01bc72f49f01f75d83f049069774ac8cc4328af4bcff1c542 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.9": - version: 4.2.9 - resolution: "graceful-fs@npm:4.2.9" - checksum: 10c0/2a66760ce6677ca18a24a1ef15d440cfd970086446af1e78c9e9de083c48122d8bd9c3fdc37f8f80f34aae833fa0d9dd52725e75a1c3f433ddd34eece39e7376 +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 languageName: node linkType: hard @@ -11132,16 +9573,16 @@ __metadata: linkType: hard "harmony-reflect@npm:^1.4.6": - version: 1.6.1 - resolution: "harmony-reflect@npm:1.6.1" - checksum: 10c0/4303396a081480599d500e16ab18fca7cee45866eecec93f838af1bb6bacb0ebba873e397451605cb5333ee24626da61af58686a1587f01f2e2437aa5739ad83 + version: 1.6.2 + resolution: "harmony-reflect@npm:1.6.2" + checksum: 10c0/fa5b251fbeff0e2d925f0bfb5ffe39e0627639e998c453562d6a39e41789c15499649dc022178c807cf99bfb97e7b974bbbc031ba82078a26be7b098b9bc2b1a languageName: node linkType: hard -"has-bigints@npm:^1.0.1": - version: 1.0.1 - resolution: "has-bigints@npm:1.0.1" - checksum: 10c0/59dc0ceb28468fcad0d3fd20a5d679dd577bae177f5caaf0b1f742df42a30267271538ab282c1c7dce14fcb9ba53401055363edab51d28fbae85c17b30f98a31 +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b languageName: node linkType: hard @@ -11159,7 +9600,7 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.2": +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": version: 1.0.2 resolution: "has-property-descriptors@npm:1.0.2" dependencies: @@ -11168,44 +9609,21 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.1": +"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": version: 1.0.3 resolution: "has-proto@npm:1.0.3" checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 languageName: node linkType: hard -"has-symbols@npm:^1.0.1": - version: 1.0.1 - resolution: "has-symbols@npm:1.0.1" - checksum: 10c0/1cc375366c8006d73998de111a03a2b9ce992ae49d96a8def6788cd3288eaf5f2790d7e0b3d92750ba4ce29d9a3e7d62e29a63b0a9bd0475cbc2cc9e8469047c - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2": - version: 1.0.2 - resolution: "has-symbols@npm:1.0.2" - checksum: 10c0/bfac913244c77e6cb4e3cb6d617a70419f5fa4e1959e828a789b958933ceb997706eafb9615f27089e8fa57449094a3c81695ed3ec0c3b2fa8be8d506640b0f7 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: "npm:^1.0.2" - checksum: 10c0/1cdba76b7d13f65198a92b8ca1560ba40edfa09e85d182bf436d928f3588a9ebd260451d569f0ed1b849c4bf54f49c862aa0d0a77f9552b1855bb6deb526c011 - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.2": +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" dependencies: @@ -11214,15 +9632,6 @@ __metadata: languageName: node linkType: hard -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: "npm:^1.1.1" - checksum: 10c0/e1da0d2bd109f116b632f27782cf23182b42f14972ca9540e4c5aa7e52647407a0a4a76937334fddcb56befe94a3494825ec22b19b51f5e5507c3153fd1a5e1b - languageName: node - linkType: hard - "hash-base@npm:^3.0.0": version: 3.1.0 resolution: "hash-base@npm:3.1.0" @@ -11254,7 +9663,7 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0, hasown@npm:^2.0.2": +"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" dependencies: @@ -11289,28 +9698,34 @@ __metadata: linkType: hard "hast-util-to-jsx-runtime@npm:^2.0.0": - version: 2.2.0 - resolution: "hast-util-to-jsx-runtime@npm:2.2.0" + version: 2.3.2 + resolution: "hast-util-to-jsx-runtime@npm:2.3.2" dependencies: + "@types/estree": "npm:^1.0.0" "@types/hast": "npm:^3.0.0" "@types/unist": "npm:^3.0.0" comma-separated-tokens: "npm:^2.0.0" + devlop: "npm:^1.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" hast-util-whitespace: "npm:^3.0.0" + mdast-util-mdx-expression: "npm:^2.0.0" + mdast-util-mdx-jsx: "npm:^3.0.0" + mdast-util-mdxjs-esm: "npm:^2.0.0" property-information: "npm:^6.0.0" space-separated-tokens: "npm:^2.0.0" - style-to-object: "npm:^0.4.0" + style-to-object: "npm:^1.0.0" unist-util-position: "npm:^5.0.0" vfile-message: "npm:^4.0.0" - checksum: 10c0/30c6cf594e83bfef9748d8b15b56bb861281bb2c1e74cb7c30c0c7ca1679e88a2db0accf990a65e5262d4a98cef6f41ea8404042f9a40f97df7b0d915fb4776a + checksum: 10c0/97761b2a48b8bc37da3d66cb4872312ae06c6e8f9be59e33b04b21fa5af371a39cb23b3ca165dd8e898ba1caf9b76399da35c957e68bad02a587a3a324216d56 languageName: node linkType: hard "hast-util-to-string@npm:^3.0.0": - version: 3.0.0 - resolution: "hast-util-to-string@npm:3.0.0" + version: 3.0.1 + resolution: "hast-util-to-string@npm:3.0.1" dependencies: "@types/hast": "npm:^3.0.0" - checksum: 10c0/649edd993cf244563ad86d861aa0863759a4fbec49c43b3d92240e42aa4b69f0c3332ddff9e80954bbd8756c86b0fddc20e97d281c6da59d00427f45da8dab68 + checksum: 10c0/b5fa1912a6ba6131affae52a0f4394406c4c0d23c2b0307f1d69988f1030c7bb830289303e67c5ad8f674f5f23a454c1dcd492c39e45a22c1f46d3c9bce5bd0c languageName: node linkType: hard @@ -11345,20 +9760,13 @@ __metadata: languageName: node linkType: hard -"highlight.js@npm:^10.4.1": +"highlight.js@npm:^10.4.1, highlight.js@npm:~10.7.0": version: 10.7.3 resolution: "highlight.js@npm:10.7.3" checksum: 10c0/073837eaf816922427a9005c56c42ad8786473dc042332dfe7901aa065e92bc3d94ebf704975257526482066abb2c8677cc0326559bb8621e046c21c5991c434 languageName: node linkType: hard -"highlight.js@npm:~10.7.0": - version: 10.7.1 - resolution: "highlight.js@npm:10.7.1" - checksum: 10c0/4b253a79589a2d3cb87baf5c4e7439a72406005ed619a24862c55024b6a288cb710b1cdeb4480c6fdc6c4fe44acd5147e508af435a248f92d17028eaf84be865 - languageName: node - linkType: hard - "hmac-drbg@npm:^1.0.1": version: 1.0.1 resolution: "hmac-drbg@npm:1.0.1" @@ -11387,9 +9795,9 @@ __metadata: linkType: hard "hosted-git-info@npm:^2.1.4": - version: 2.8.8 - resolution: "hosted-git-info@npm:2.8.8" - checksum: 10c0/cbb6123bdef891ea1a1d6239bce1ca35a241becc4363586d54c1da8c2d7cc8387fa21931f5eff2533fb3c15abb5f0967fdc794c8e88992f326ccb339f21dbd74 + version: 2.8.9 + resolution: "hosted-git-info@npm:2.8.9" + checksum: 10c0/317cbc6b1bbbe23c2a40ae23f3dafe9fa349ce42a89a36f930e3f9c0530c179a3882d2ef1e4141a4c3674d6faaea862138ec55b43ad6f75e387fda2483a13c70 languageName: node linkType: hard @@ -11415,9 +9823,9 @@ __metadata: linkType: hard "html-entities@npm:^2.1.0, html-entities@npm:^2.3.2": - version: 2.3.2 - resolution: "html-entities@npm:2.3.2" - checksum: 10c0/69b50d032435e02765175d40ac3d94ceeb19b3ee32b869f79804f24f8efadf7928a1c3c4eddb85273809f95f7cffa416d05ca43e88d219575e8c5f6dd75bfc8d + version: 2.5.2 + resolution: "html-entities@npm:2.5.2" + checksum: 10c0/f20ffb4326606245c439c231de40a7c560607f639bf40ffbfb36b4c70729fd95d7964209045f1a4e62fe17f2364cef3d6e49b02ea09016f207fde51c2211e481 languageName: node linkType: hard @@ -11446,22 +9854,22 @@ __metadata: linkType: hard "html-tags@npm:^3.1.0": - version: 3.1.0 - resolution: "html-tags@npm:3.1.0" - checksum: 10c0/057986ab130901137cf78d8561f47176c6874cc6ceb3bbc301fb5871d65f0efa83b3fb922ce8a90e0999e33ff4ab37006b560e60a1d3efc6a456510454711936 + version: 3.3.1 + resolution: "html-tags@npm:3.3.1" + checksum: 10c0/680165e12baa51bad7397452d247dbcc5a5c29dac0e6754b1187eee3bf26f514bc1907a431dd2f7eb56207611ae595ee76a0acc8eaa0d931e72c791dd6463d79 languageName: node linkType: hard "html-url-attributes@npm:^3.0.0": - version: 3.0.0 - resolution: "html-url-attributes@npm:3.0.0" - checksum: 10c0/af300ae1f3b9cf90aba0d95a165c3f4066ec2b3ee2f36a885a8d842e68675e4133896b00bde42d18ac799d0ce678fa1695baec3f865b01a628922d737c0d035c + version: 3.0.1 + resolution: "html-url-attributes@npm:3.0.1" + checksum: 10c0/496e4908aa8b77665f348b4b03521901794f648b8ac34a581022cd6f2c97934d5c910cd91bc6593bbf2994687549037bc2520fcdc769b31484f29ffdd402acd0 languageName: node linkType: hard "html-webpack-plugin@npm:^5.5.0": - version: 5.5.0 - resolution: "html-webpack-plugin@npm:5.5.0" + version: 5.6.3 + resolution: "html-webpack-plugin@npm:5.6.3" dependencies: "@types/html-minifier-terser": "npm:^6.0.0" html-minifier-terser: "npm:^6.0.2" @@ -11469,8 +9877,14 @@ __metadata: pretty-error: "npm:^4.0.0" tapable: "npm:^2.0.0" peerDependencies: + "@rspack/core": 0.x || 1.x webpack: ^5.20.0 - checksum: 10c0/d10fa5888db9ee2afe1d8544107d3d8eb0f30fd88a3304842725e91f9b86cd70fae9954342e6d513bdf9bb13f345c5f51c09421dbd96285593ea7ee8444b188e + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 10c0/25a21f83a8823d3711396dd8050bc0080c0ae55537352d432903eff58a7d9838fc811e3c26462419036190720357e67c7977efd106fb9a252770632824f0cc25 languageName: node linkType: hard @@ -11526,9 +9940,9 @@ __metadata: linkType: hard "http-parser-js@npm:>=0.5.1": - version: 0.5.3 - resolution: "http-parser-js@npm:0.5.3" - checksum: 10c0/3a591d68384712b4717ab08b74600cd900913cd1807ec4b99e9bfd2ca48ad2a5b294db6063c12fb9baeb1397fae2fd6041b24bc9e3bd54772154f451cf711081 + version: 0.5.8 + resolution: "http-parser-js@npm:0.5.8" + checksum: 10c0/4ed89f812c44f84c4ae5d43dd3a0c47942b875b63be0ed2ccecbe6b0018af867d806495fc6e12474aff868721163699c49246585bddea4f0ecc6d2b02e19faf1 languageName: node linkType: hard @@ -11553,7 +9967,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-middleware@npm:^2.0.0": +"http-proxy-middleware@npm:^2.0.3": version: 2.0.7 resolution: "http-proxy-middleware@npm:2.0.7" dependencies: @@ -11583,12 +9997,12 @@ __metadata: linkType: hard "https-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "https-proxy-agent@npm:5.0.0" + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" dependencies: agent-base: "npm:6" debug: "npm:4" - checksum: 10c0/670c04f7f0effb5a449c094ea037cbcfb28a5ab93ed22e8c343095202cc7288027869a5a21caf4ee3b8ea06f9624ef1e1fc9044669c0fd92617654ff39f30806 + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 languageName: node linkType: hard @@ -11625,7 +10039,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.6.2": +"iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -11643,10 +10057,10 @@ __metadata: languageName: node linkType: hard -"idb@npm:^6.1.4": - version: 6.1.5 - resolution: "idb@npm:6.1.5" - checksum: 10c0/189dfe760ea66780e02c68cb14d2eccdfb18996176c604a85fa987b90fbb613d224cd90fdc0f700378dd4c1abaf1175d22eb149ab7aef5f90e2e1a8787d8f3b9 +"idb@npm:^7.0.1": + version: 7.1.1 + resolution: "idb@npm:7.1.1" + checksum: 10c0/72418e4397638797ee2089f97b45fc29f937b830bc0eb4126f4a9889ecf10320ceacf3a177fe5d7ffaf6b4fe38b20bbd210151549bfdc881db8081eed41c870d languageName: node linkType: hard @@ -11678,44 +10092,21 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^4.0.6": - version: 4.0.6 - resolution: "ignore@npm:4.0.6" - checksum: 10c0/836ee7dc7fd9436096e2dba429359dbb9fa0e33d309e2b2d81692f375f6ca82024fc00567f798613d50c6b989e9cd2ad2b065acf116325cde177f02c86b7d4e0 - languageName: node - linkType: hard - -"ignore@npm:^5.1.4": - version: 5.1.8 - resolution: "ignore@npm:5.1.8" - checksum: 10c0/3d09e733049c7bad1c0982be8fe3e767bd7b756dd0bfeceff11acda0b7b57634b5516acc3554d2d536e64b2701b3d08d0e5fa4dbf46389847dd3f8fa49d437bb - languageName: node - linkType: hard - -"ignore@npm:^5.1.8": - version: 5.2.0 - resolution: "ignore@npm:5.2.0" - checksum: 10c0/7fb7b4c4c52c2555113ff968f8a83b8ac21b076282bfcb3f468c3fb429be69bd56222306c31de95dd452c647fc6ae24339b8047ebe3ef34c02591abfec58da01 +"ignore@npm:^5.2.0": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 languageName: node linkType: hard "immer@npm:^9.0.7": - version: 9.0.7 - resolution: "immer@npm:9.0.7" - checksum: 10c0/80740aede86e89eb3a1de5f97f9045a971fa41a45488a9471c930579ce49a268a001df757be3609af9133157dd6fefb45000f61fbc3ff24e853aaa0163c7a6b0 - languageName: node - linkType: hard - -"import-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "import-cwd@npm:3.0.0" - dependencies: - import-from: "npm:^3.0.0" - checksum: 10c0/398eff50e400b0db4ccabf7626391ac3aa959d9f95e659cd26d217f9d33b41f3aa02b7056ac4c3a2bf1d12b359b4761756d784f470c223297774480f6546857d + version: 9.0.21 + resolution: "immer@npm:9.0.21" + checksum: 10c0/03ea3ed5d4d72e8bd428df4a38ad7e483ea8308e9a113d3b42e0ea2cc0cc38340eb0a6aca69592abbbf047c685dbda04e3d34bf2ff438ab57339ed0a34cc0a05 languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -11725,24 +10116,15 @@ __metadata: languageName: node linkType: hard -"import-from@npm:^3.0.0": - version: 3.0.0 - resolution: "import-from@npm:3.0.0" - dependencies: - resolve-from: "npm:^5.0.0" - checksum: 10c0/83a40470190f2d9c6ca6a0a2d2de40e9d0b38eedeb2409320a44eaeed48751678e206c9ac7fefef18be19c95ad1cc0e98c844fdf631ab3d9a5597c3476e7525f - languageName: node - linkType: hard - "import-local@npm:^3.0.2": - version: 3.0.2 - resolution: "import-local@npm:3.0.2" + version: 3.2.0 + resolution: "import-local@npm:3.2.0" dependencies: pkg-dir: "npm:^4.2.0" resolve-cwd: "npm:^3.0.0" bin: import-local-fixture: fixtures/cli.js - checksum: 10c0/593ec592c5c2c0849f94b81198077b53e342f02bd7a7cc3f8a3dd5b52f40a37003b3b2922a80b4e7b565c0f7c951a41849a03852c4e68144fff84bf892d129cb + checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 languageName: node linkType: hard @@ -11760,13 +10142,6 @@ __metadata: languageName: node linkType: hard -"indexes-of@npm:^1.0.1": - version: 1.0.1 - resolution: "indexes-of@npm:1.0.1" - checksum: 10c0/1ea1d2d00173fa38f728acfa00303657e1115361481e52f6cbae47c5d603219006c9357abf6bc323f1fb0fbe937e363bbb19e5c66c12578eea6ec6b7e892bdba - languageName: node - linkType: hard - "inflight@npm:^1.0.4": version: 1.0.6 resolution: "inflight@npm:1.0.6" @@ -11798,21 +10173,21 @@ __metadata: languageName: node linkType: hard -"inline-style-parser@npm:0.1.1": - version: 0.1.1 - resolution: "inline-style-parser@npm:0.1.1" - checksum: 10c0/08832a533f51a1e17619f2eabf2f5ec5e956d6dcba1896351285c65df022c9420de61d73256e1dca8015a52abf96cc84ddc3b73b898b22de6589d3962b5e501b +"inline-style-parser@npm:0.2.4": + version: 0.2.4 + resolution: "inline-style-parser@npm:0.2.4" + checksum: 10c0/ddc0b210eaa03e0f98d677b9836242c583c7c6051e84ce0e704ae4626e7871c5b78f8e30853480218b446355745775df318d4f82d33087ff7e393245efa9a881 languageName: node linkType: hard -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" +"internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" dependencies: - get-intrinsic: "npm:^1.1.0" - has: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.0" side-channel: "npm:^1.0.4" - checksum: 10c0/bb41342a474c1b607458b0c716c742d779a6ed9dfaf7986e5d20d1e7f55b7f3676e4d9f416bc253af4fd78d367e1f83e586f74840302bcf2e60c424f9284dde5 + checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c languageName: node linkType: hard @@ -11826,13 +10201,6 @@ __metadata: languageName: node linkType: hard -"ip@npm:^1.1.0": - version: 1.1.9 - resolution: "ip@npm:1.1.9" - checksum: 10c0/5af58bfe2110c9978acfd77a2ffcdf9d33a6ce1c72f49edbaf16958f7a8eb979b5163e43bb18938caf3aaa55cdacde4e470874c58ca3b4b112ea7a30461a0c27 - languageName: node - linkType: hard - "ipaddr.js@npm:1.9.1": version: 1.9.1 resolution: "ipaddr.js@npm:1.9.1" @@ -11841,9 +10209,9 @@ __metadata: linkType: hard "ipaddr.js@npm:^2.0.1": - version: 2.0.1 - resolution: "ipaddr.js@npm:2.0.1" - checksum: 10c0/0034dfd7a83e82bec6a569549f42c56eb47d051842e10ff0400d97b18f517131834d7c054893a31900cf9d54cf4d974eed97923e5e5965c298d004849f5f0ac9 + version: 2.2.0 + resolution: "ipaddr.js@npm:2.2.0" + checksum: 10c0/e4ee875dc1bd92ac9d27e06cfd87cdb63ca786ff9fd7718f1d4f7a8ef27db6e5d516128f52d2c560408cbb75796ac2f83ead669e73507c86282d45f84c5abbb6 languageName: node linkType: hard @@ -11861,6 +10229,13 @@ __metadata: languageName: node linkType: hard +"is-alphabetical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphabetical@npm:2.0.1" + checksum: 10c0/932367456f17237533fd1fc9fe179df77957271020b83ea31da50e5cc472d35ef6b5fb8147453274ffd251134472ce24eb6f8d8398d96dee98237cdb81a6c9a7 + languageName: node + linkType: hard + "is-alphanumerical@npm:^1.0.0": version: 1.0.4 resolution: "is-alphanumerical@npm:1.0.4" @@ -11871,12 +10246,33 @@ __metadata: languageName: node linkType: hard +"is-alphanumerical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphanumerical@npm:2.0.1" + dependencies: + is-alphabetical: "npm:^2.0.0" + is-decimal: "npm:^2.0.0" + checksum: 10c0/4b35c42b18e40d41378293f82a3ecd9de77049b476f748db5697c297f686e1e05b072a6aaae2d16f54d2a57f85b00cbbe755c75f6d583d1c77d6657bd0feb5a2 + languageName: node + linkType: hard + "is-arguments@npm:^1.0.4": - version: 1.1.0 - resolution: "is-arguments@npm:1.1.0" + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" dependencies: - call-bind: "npm:^1.0.0" - checksum: 10c0/685ca8dc30ec714947d37a5f41f1421dcfda760d8dfa5ef55bc3ffb0433b578959d01d3276f8ea423e0eed7b3d7d39c64fa83b98b62d388cfb9d190ee104d5d8 + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 languageName: node linkType: hard @@ -11887,10 +10283,21 @@ __metadata: languageName: node linkType: hard +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 + languageName: node + linkType: hard + "is-bigint@npm:^1.0.1": - version: 1.0.1 - resolution: "is-bigint@npm:1.0.1" - checksum: 10c0/0f2e01cb419e26ce6cb30449320f9452b7e40af2bd91f0dffc1183f2190280832169a2c8025b138aac1ad0189f48de2b72c7d978d4878560c1845924ca2cf7fb + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: "npm:^1.0.1" + checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 languageName: node linkType: hard @@ -11904,54 +10311,23 @@ __metadata: linkType: hard "is-boolean-object@npm:^1.1.0": - version: 1.1.0 - resolution: "is-boolean-object@npm:1.1.0" + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" dependencies: - call-bind: "npm:^1.0.0" - checksum: 10c0/e44c6abc42a6dd3c67c8d501f4c01c486bcbabf941a1ccd2e75152fba4d25f9a735b5af0c11af8651303a4b57551b401870a4feaf56af64c00eb213cbe7ed022 + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 languageName: node linkType: hard -"is-callable@npm:^1.1.3": +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f languageName: node linkType: hard -"is-callable@npm:^1.1.4, is-callable@npm:^1.2.2": - version: 1.2.3 - resolution: "is-callable@npm:1.2.3" - checksum: 10c0/359604b60827b38593deabeb78993cc838cfc2b8927760dca91eb31cb481678814fdcbf92ceac12dc2498926b5ffc4d01b3c10a4f21733742880f9b7847ea5f8 - languageName: node - linkType: hard - -"is-callable@npm:^1.2.4": - version: 1.2.4 - resolution: "is-callable@npm:1.2.4" - checksum: 10c0/bda3c67128741129d61e1cb7ca89025ca56b39bf3564657989567c9f6d1e20d6f5579750d3c1fa8887903c6dc669fbc695e33a1363e7c5ec944077e39d24f73d - languageName: node - linkType: hard - -"is-core-module@npm:^2.1.0, is-core-module@npm:^2.2.0": - version: 2.2.0 - resolution: "is-core-module@npm:2.2.0" - dependencies: - has: "npm:^1.0.3" - checksum: 10c0/db56b0a13d5a82e24613e259f00303560cd14b66f1fa142dbd5cc5ad965ad10cf3aac12395b1eda6755eda03aace840e6cabc25ca6ee538d9811feeb8097bd18 - languageName: node - linkType: hard - -"is-core-module@npm:^2.11.0": - version: 2.12.0 - resolution: "is-core-module@npm:2.12.0" - dependencies: - has: "npm:^1.0.3" - checksum: 10c0/21f78f05de2f261339c10da0a68a25f7671a1864bc4e19fbfb7aeb9486a8ced98f5192f3226af8f696c6c1b545029307df850e384799a574953d6676ae20fefc - languageName: node - linkType: hard - -"is-core-module@npm:^2.13.0": +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1": version: 2.15.1 resolution: "is-core-module@npm:2.15.1" dependencies: @@ -11960,28 +10336,21 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.8.0": - version: 2.8.0 - resolution: "is-core-module@npm:2.8.0" +"is-data-view@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-view@npm:1.0.1" dependencies: - has: "npm:^1.0.3" - checksum: 10c0/8069143dcf675f7970f2c502adf45fcd7502f8a3a04e7ca7274c6f26493e7f17b7020b602992cffd20b6accb2660792ae1bcd6b3094837819d0632b1c33bc556 + is-typed-array: "npm:^1.1.13" + checksum: 10c0/a3e6ec84efe303da859107aed9b970e018e2bee7ffcb48e2f8096921a493608134240e672a2072577e5f23a729846241d9634806e8a0e51d9129c56d5f65442d languageName: node linkType: hard -"is-core-module@npm:^2.8.1": - version: 2.8.1 - resolution: "is-core-module@npm:2.8.1" +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" dependencies: - has: "npm:^1.0.3" - checksum: 10c0/f1139970deb2ec159c54be154d35cd17d71b9b56c60221ff7c8c328ca7efe20b6d676cef43d08c21966e162bfd5068dcd0ce23e64c77b76a19824563ecd82e0e - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1": - version: 1.0.2 - resolution: "is-date-object@npm:1.0.2" - checksum: 10c0/76fa1c0110663cf86a80554ed0a387785413de0b545ae084fad8d02b05705e694b503dae3caa676e03e41b5532bd478922c6a46f7762b17835361a5a2b7e189b + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e languageName: node linkType: hard @@ -11992,16 +10361,14 @@ __metadata: languageName: node linkType: hard -"is-docker@npm:^2.0.0": - version: 2.1.1 - resolution: "is-docker@npm:2.1.1" - bin: - is-docker: cli.js - checksum: 10c0/08336a4a5c0ff77de400f3ee1efd31b3afd0c5de48c93d555226bfdf04869814d5e48f0238513a2f80e5d4da67185ca8b7946bda523c8ac4080ade3e1bb3a7df +"is-decimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-decimal@npm:2.0.1" + checksum: 10c0/8085dd66f7d82f9de818fba48b9e9c0429cb4291824e6c5f2622e96b9680b54a07a624cfc663b24148b8e853c62a1c987cfe8b0b5a13f5156991afaf6736e334 languageName: node linkType: hard -"is-docker@npm:^2.1.1": +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" bin: @@ -12017,6 +10384,15 @@ __metadata: languageName: node linkType: hard +"is-finalizationregistry@npm:^1.0.2": + version: 1.0.2 + resolution: "is-finalizationregistry@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/81caecc984d27b1a35c68741156fc651fb1fa5e3e6710d21410abc527eb226d400c0943a167922b2e920f6b3e58b0dede9aa795882b038b85f50b3a4b877db86 + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -12047,7 +10423,7 @@ __metadata: languageName: node linkType: hard -"is-generator-function@npm:^1.0.7": +"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": version: 1.0.10 resolution: "is-generator-function@npm:1.0.10" dependencies: @@ -12056,16 +10432,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": - version: 4.0.1 - resolution: "is-glob@npm:4.0.1" - dependencies: - is-extglob: "npm:^2.1.1" - checksum: 10c0/a8414252499e4381756c36fe52ed778e090dd21d8cb81053384eafd5bc4fc36a6232ef528156ec98dce561f589d1d16659b7f9679b8c86864ac3c6acd5da6f66 - languageName: node - linkType: hard - -"is-glob@npm:^4.0.3": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -12081,6 +10448,13 @@ __metadata: languageName: node linkType: hard +"is-hexadecimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-hexadecimal@npm:2.0.1" + checksum: 10c0/3eb60fe2f1e2bbc760b927dcad4d51eaa0c60138cf7fc671803f66353ad90c301605b502c7ea4c6bb0548e1c7e79dfd37b73b632652e3b76030bba603a7e9626 + languageName: node + linkType: hard + "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" @@ -12088,6 +10462,13 @@ __metadata: languageName: node linkType: hard +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + languageName: node + linkType: hard + "is-module@npm:^1.0.0": version: 1.0.0 resolution: "is-module@npm:1.0.0" @@ -12095,17 +10476,19 @@ __metadata: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.1": - version: 2.0.1 - resolution: "is-negative-zero@npm:2.0.1" - checksum: 10c0/e1ddf48f9e61a4802ccaa2ea9678fa8861dad25d57dcfd03a481320eaac42a3e2e0e8cabc1c8662d05f0188620a92b05c7e4aed8c1ebf48da96ff7a1af8e0f78 +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e languageName: node linkType: hard "is-number-object@npm:^1.0.4": - version: 1.0.4 - resolution: "is-number-object@npm:1.0.4" - checksum: 10c0/ee8a0981518ca035e4f3799200cb66e99234902f940b9a096f9214cbecf437bbb06fac09a9f164ec3c326efb7a1181b866a20314685f26b8d12d2dd27e16918f + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b languageName: node linkType: hard @@ -12123,14 +10506,7 @@ __metadata: languageName: node linkType: hard -"is-path-cwd@npm:^2.2.0": - version: 2.2.0 - resolution: "is-path-cwd@npm:2.2.0" - checksum: 10c0/afce71533a427a759cd0329301c18950333d7589533c2c90205bd3fdcf7b91eb92d1940493190567a433134d2128ec9325de2fd281e05be1920fbee9edd22e0a - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.2": +"is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 @@ -12145,9 +10521,9 @@ __metadata: linkType: hard "is-plain-obj@npm:^4.0.0": - version: 4.0.0 - resolution: "is-plain-obj@npm:4.0.0" - checksum: 10c0/abe3ef27ac592b43d51c5d7a8c565fffaaf48241a40519057a5a58651ea4a8908e816346e43edae2323d303a3642668fca198dd9ef50b578f93fb014fc2f8460 + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e languageName: node linkType: hard @@ -12174,16 +10550,6 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.0.4, is-regex@npm:^1.1.1": - version: 1.1.2 - resolution: "is-regex@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.2" - has-symbols: "npm:^1.0.1" - checksum: 10c0/51bed6de11c869a507576285b20747ca9da4f4e28829b8d8d9c9f0367b5494de56e4d50278dcaf9e6a264b6ebe8c5f81e267726b3911933ddcf5c65a3ca8ca4b - languageName: node - linkType: hard - "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -12208,17 +10574,26 @@ __metadata: languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "is-shared-array-buffer@npm:1.0.1" - checksum: 10c0/d27ff8661f30b6e90258a94c05c739260fb92f6c15d297cbf93e1122c6e7cf26ba65e89a63d427d22712f598905ca9d65840c1335449825aca4828e0bb53aa04 +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "is-shared-array-buffer@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + checksum: 10c0/adc11ab0acbc934a7b9e5e9d6c588d4ec6682f6fea8cda5180721704fa32927582ede5b123349e32517fdadd07958973d24716c80e7ab198970c47acc09e59c7 languageName: node linkType: hard "is-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "is-stream@npm:2.0.0" - checksum: 10c0/687f6bbd2b995573d33e6b40b2cbc8b9186a751aa3151c23e6fd2c4ca352e323a6dc010b09103f89c9ca0bf5c8c38f3fa8b74d5d9acd1c44f1499874d7e844f9 + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 languageName: node linkType: hard @@ -12229,14 +10604,7 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5": - version: 1.0.5 - resolution: "is-string@npm:1.0.5" - checksum: 10c0/f8a124e895892e3058b7152cd805ef684a8c0b45edb51f44387d6f7654a0131d6f298f6033e518b4955dfc3c9e75beff26bbb430b8a2b61e1692188d69f3a276 - languageName: node - linkType: hard - -"is-string@npm:^1.0.7": +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" dependencies: @@ -12246,15 +10614,15 @@ __metadata: linkType: hard "is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.3 - resolution: "is-symbol@npm:1.0.3" + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" dependencies: - has-symbols: "npm:^1.0.1" - checksum: 10c0/9eebf119a46c7f4e787340d5663f99a5b85afb310891b332dc1c4f4f9be9922a0e5b1483664963fb9ed6cd53481fc15452a1339b8183ee2b9e2646696fdf2d52 + has-symbols: "npm:^1.0.2" + checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 languageName: node linkType: hard -"is-typed-array@npm:^1.1.3": +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": version: 1.1.13 resolution: "is-typed-array@npm:1.1.13" dependencies: @@ -12270,7 +10638,14 @@ __metadata: languageName: node linkType: hard -"is-weakref@npm:^1.0.1": +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" dependencies: @@ -12279,6 +10654,16 @@ __metadata: languageName: node linkType: hard +"is-weakset@npm:^2.0.3": + version: 2.0.3 + resolution: "is-weakset@npm:2.0.3" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/8ad6141b6a400e7ce7c7442a13928c676d07b1f315ab77d9912920bf5f4170622f43126f111615788f26c3b1871158a6797c862233124507db0bcc33a9537d1a + languageName: node + linkType: hard + "is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" @@ -12288,6 +10673,13 @@ __metadata: languageName: node linkType: hard +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + "isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" @@ -12316,54 +10708,68 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-coverage@npm:3.0.0" - checksum: 10c0/29ab1980e973f169d0de899256c193caff192f30e5e4f50ec40bddac307d454c7c6493836fffea633469e7d1d1ab7fe04fa64c426f8bf8d14b17679284f5fd07 +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b languageName: node linkType: hard -"istanbul-lib-instrument@npm:^4.0.0, istanbul-lib-instrument@npm:^4.0.3": - version: 4.0.3 - resolution: "istanbul-lib-instrument@npm:4.0.3" +"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" dependencies: - "@babel/core": "npm:^7.7.5" + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-coverage: "npm:^3.2.0" semver: "npm:^6.3.0" - checksum: 10c0/7f1005566a912e33e847576b2c1072d48a7c556810a54d912f3e2f0bd966171e68b30c40b0c1ce6ee9b8864de422d0c10e2d0dfd2d25b48723950cc78cd437c2 + checksum: 10c0/8a1bdf3e377dcc0d33ec32fe2b6ecacdb1e4358fd0eb923d4326bb11c67622c0ceb99600a680f3dad5d29c66fc1991306081e339b4d43d0b8a2ab2e1d910a6ee languageName: node linkType: hard "istanbul-lib-report@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-report@npm:3.0.0" + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" dependencies: istanbul-lib-coverage: "npm:^3.0.0" - make-dir: "npm:^3.0.0" + make-dir: "npm:^4.0.0" supports-color: "npm:^7.1.0" - checksum: 10c0/81b0d5187c7603ed71bdea0b701a7329f8146549ca19aa26d91b4a163aea756f9d55c1a6dc1dcd087e24dfcb99baa69e266a68644fbfd5dc98107d6f6f5948d2 + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 languageName: node linkType: hard "istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.0 - resolution: "istanbul-lib-source-maps@npm:4.0.0" + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" dependencies: debug: "npm:^4.1.1" istanbul-lib-coverage: "npm:^3.0.0" source-map: "npm:^0.6.1" - checksum: 10c0/66a8d44486ec302004df2cd7442cec44301badf680775b787edc8e82a27edafd646b5c724694b22cf95efb39097d2821eaa0851d4aca8897603cb5148db532a0 + checksum: 10c0/19e4cc405016f2c906dff271a76715b3e881fa9faeb3f09a86cb99b8512b3a5ed19cadfe0b54c17ca0e54c1142c9c6de9330d65506e35873994e06634eebeb66 languageName: node linkType: hard -"istanbul-reports@npm:^3.0.2": - version: 3.0.2 - resolution: "istanbul-reports@npm:3.0.2" +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" dependencies: html-escaper: "npm:^2.0.0" istanbul-lib-report: "npm:^3.0.0" - checksum: 10c0/83bd200a0027277c79121a56267ce48e9cd4946d4d3875d14d084828b9b9194846c23ba83e98a8a0d0b6d7e2ac0f79bfca386aef1ea3d912d61b96a9aff22211 + checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + languageName: node + linkType: hard + +"iterator.prototype@npm:^1.1.3": + version: 1.1.3 + resolution: "iterator.prototype@npm:1.1.3" + dependencies: + define-properties: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + reflect.getprototypeof: "npm:^1.0.4" + set-function-name: "npm:^2.0.1" + checksum: 10c0/68b0320c14291fbb3d8ed5a17e255d3127e7971bec19108076667e79c9ff4c7d69f99de4b0b3075c789c3f318366d7a0a35bb086eae0f2cf832dd58465b2f9e6 languageName: node linkType: hard @@ -12381,71 +10787,71 @@ __metadata: linkType: hard "jake@npm:^10.8.5": - version: 10.8.5 - resolution: "jake@npm:10.8.5" + version: 10.9.2 + resolution: "jake@npm:10.9.2" dependencies: async: "npm:^3.2.3" chalk: "npm:^4.0.2" - filelist: "npm:^1.0.1" - minimatch: "npm:^3.0.4" + filelist: "npm:^1.0.4" + minimatch: "npm:^3.1.2" bin: - jake: ./bin/cli.js - checksum: 10c0/fc1f59c291b1c5bafad8ccde0e5d97f5f22ceb857f204f15634011e642b9cdf652dae2943b5ffe5ab037fe2f77b263653911ed2a408b2887a6dee31873e5c3d8 + jake: bin/cli.js + checksum: 10c0/c4597b5ed9b6a908252feab296485a4f87cba9e26d6c20e0ca144fb69e0c40203d34a2efddb33b3d297b8bd59605e6c1f44f6221ca1e10e69175ecbf3ff5fe31 languageName: node linkType: hard -"jest-changed-files@npm:^27.4.2": - version: 27.4.2 - resolution: "jest-changed-files@npm:27.4.2" +"jest-changed-files@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-changed-files@npm:27.5.1" dependencies: - "@jest/types": "npm:^27.4.2" + "@jest/types": "npm:^27.5.1" execa: "npm:^5.0.0" throat: "npm:^6.0.1" - checksum: 10c0/9f4a0b8525228f2fcd81686b7a0dd973676e004ab6e5e05a218b1584a8ceed6dea889e20161459179a06ebaec8971d2ce1357f4a0cf6839c69e92b6fb02cbf56 + checksum: 10c0/ee2e663da669a1f8a1452626c71b9691a34cc6789bbf6cb04ef4430a63301db806039e93dd5c9cc6c0caa3d3f250ff18ed51e058fc3533a71f73e24f41b5d1bd languageName: node linkType: hard -"jest-circus@npm:^27.4.5": - version: 27.4.5 - resolution: "jest-circus@npm:27.4.5" +"jest-circus@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-circus@npm:27.5.1" dependencies: - "@jest/environment": "npm:^27.4.4" - "@jest/test-result": "npm:^27.4.2" - "@jest/types": "npm:^27.4.2" + "@jest/environment": "npm:^27.5.1" + "@jest/test-result": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" "@types/node": "npm:*" chalk: "npm:^4.0.0" co: "npm:^4.6.0" dedent: "npm:^0.7.0" - expect: "npm:^27.4.2" + expect: "npm:^27.5.1" is-generator-fn: "npm:^2.0.0" - jest-each: "npm:^27.4.2" - jest-matcher-utils: "npm:^27.4.2" - jest-message-util: "npm:^27.4.2" - jest-runtime: "npm:^27.4.5" - jest-snapshot: "npm:^27.4.5" - jest-util: "npm:^27.4.2" - pretty-format: "npm:^27.4.2" + jest-each: "npm:^27.5.1" + jest-matcher-utils: "npm:^27.5.1" + jest-message-util: "npm:^27.5.1" + jest-runtime: "npm:^27.5.1" + jest-snapshot: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + pretty-format: "npm:^27.5.1" slash: "npm:^3.0.0" stack-utils: "npm:^2.0.3" throat: "npm:^6.0.1" - checksum: 10c0/3ebf6374c8a162a43e1dd84ee1aaa42b0d206c1d99cd1a067dc0d2c3c23d98d02031d7645128beb5a0592c77f17f1367265c82db86e4bf31f9b4f2febd99305a + checksum: 10c0/195b88ff6c74a1ad0f2386bea25700e884f32e05be9211bc197b960e7553a952ab38aff9aafb057c6a92eaa85bde2804e01244278a477b80a99e11f890ee15d9 languageName: node linkType: hard -"jest-cli@npm:^27.4.5": - version: 27.4.5 - resolution: "jest-cli@npm:27.4.5" +"jest-cli@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-cli@npm:27.5.1" dependencies: - "@jest/core": "npm:^27.4.5" - "@jest/test-result": "npm:^27.4.2" - "@jest/types": "npm:^27.4.2" + "@jest/core": "npm:^27.5.1" + "@jest/test-result": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" chalk: "npm:^4.0.0" exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.4" + graceful-fs: "npm:^4.2.9" import-local: "npm:^3.0.2" - jest-config: "npm:^27.4.5" - jest-util: "npm:^27.4.2" - jest-validate: "npm:^27.4.2" + jest-config: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + jest-validate: "npm:^27.5.1" prompts: "npm:^2.0.1" yargs: "npm:^16.2.0" peerDependencies: @@ -12455,54 +10861,44 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 10c0/1e5ddfe64f629ba492e49f936c54d15d506824ba4e7de91b1395f6707e8cbaedec30f72ba951486c7ca4d22881c027faa40485f575022c4d9818b46149b32b68 + checksum: 10c0/45abaafbe1a01ea4c48953c85d42c961b6e33ef5847e10642713cde97761611b0af56d5a0dcb82abf19c500c6e9b680222a7f953b437e5760ba584521b74f9ea languageName: node linkType: hard -"jest-config@npm:^27.4.5": - version: 27.4.5 - resolution: "jest-config@npm:27.4.5" +"jest-config@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-config@npm:27.5.1" dependencies: - "@babel/core": "npm:^7.1.0" - "@jest/test-sequencer": "npm:^27.4.5" - "@jest/types": "npm:^27.4.2" - babel-jest: "npm:^27.4.5" + "@babel/core": "npm:^7.8.0" + "@jest/test-sequencer": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" + babel-jest: "npm:^27.5.1" chalk: "npm:^4.0.0" ci-info: "npm:^3.2.0" deepmerge: "npm:^4.2.2" glob: "npm:^7.1.1" - graceful-fs: "npm:^4.2.4" - jest-circus: "npm:^27.4.5" - jest-environment-jsdom: "npm:^27.4.4" - jest-environment-node: "npm:^27.4.4" - jest-get-type: "npm:^27.4.0" - jest-jasmine2: "npm:^27.4.5" - jest-regex-util: "npm:^27.4.0" - jest-resolve: "npm:^27.4.5" - jest-runner: "npm:^27.4.5" - jest-util: "npm:^27.4.2" - jest-validate: "npm:^27.4.2" + graceful-fs: "npm:^4.2.9" + jest-circus: "npm:^27.5.1" + jest-environment-jsdom: "npm:^27.5.1" + jest-environment-node: "npm:^27.5.1" + jest-get-type: "npm:^27.5.1" + jest-jasmine2: "npm:^27.5.1" + jest-regex-util: "npm:^27.5.1" + jest-resolve: "npm:^27.5.1" + jest-runner: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + jest-validate: "npm:^27.5.1" micromatch: "npm:^4.0.4" - pretty-format: "npm:^27.4.2" + parse-json: "npm:^5.2.0" + pretty-format: "npm:^27.5.1" slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" peerDependencies: ts-node: ">=9.0.0" peerDependenciesMeta: ts-node: optional: true - checksum: 10c0/d3887c3cd8b7aec0ded588a33a4b6f0eb91060f1f5559116f5c27acbee8925c8e4a2a6e373d345596363f54be694c6f9eb14809f89da8efc75ecded1839c5739 - languageName: node - linkType: hard - -"jest-diff@npm:^27.4.2": - version: 27.4.2 - resolution: "jest-diff@npm:27.4.2" - dependencies: - chalk: "npm:^4.0.0" - diff-sequences: "npm:^27.4.0" - jest-get-type: "npm:^27.4.0" - pretty-format: "npm:^27.4.2" - checksum: 10c0/a6fdd5af6b90d113e895655bcd3469a70990304a8c0f7fe2995a1d9440287b5a47cb69c1c3a6ea011aad2916bdfa9710dbf6e1c9b6bccf37a09f1498691c6d5f + checksum: 10c0/28867b165f0e25b711a2ade5f261a1b1606b476704ff68a50688eaf3b9c853f69542645cc7e0dab38079ed74e3acc99e38628faf736c1739e44fc869c62c6051 languageName: node linkType: hard @@ -12518,73 +10914,66 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.0.2": - version: 29.0.2 - resolution: "jest-diff@npm:29.0.2" +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" dependencies: chalk: "npm:^4.0.0" - diff-sequences: "npm:^29.0.0" - jest-get-type: "npm:^29.0.0" - pretty-format: "npm:^29.0.2" - checksum: 10c0/7c515cb4dbae844f2eef386145cb157ad5cc3128b1f22db2f1857e558c430989ec6ae7422c2456aca79b43288b3b3a703564ca81ab0f8121651cfbf2fff20db5 + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 languageName: node linkType: hard -"jest-docblock@npm:^27.4.0": - version: 27.4.0 - resolution: "jest-docblock@npm:27.4.0" +"jest-docblock@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-docblock@npm:27.5.1" dependencies: detect-newline: "npm:^3.0.0" - checksum: 10c0/a93499231870cd5f568285ff64145ee3653390b09938dec8ec88fcefc8a6bd61cd1e9672b2625761e1e46effff3a6df91ef7ffab259d1cdd5d4e6e508c795682 + checksum: 10c0/0ce3661a9152497b3a766996eda42edeab51f676fa57ec414a0168fef2a9b1784d056879281c22bca2875c9e63d41327cac0749a8c6e205330e13fcfe0e40316 languageName: node linkType: hard -"jest-each@npm:^27.4.2": - version: 27.4.2 - resolution: "jest-each@npm:27.4.2" +"jest-each@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-each@npm:27.5.1" dependencies: - "@jest/types": "npm:^27.4.2" + "@jest/types": "npm:^27.5.1" chalk: "npm:^4.0.0" - jest-get-type: "npm:^27.4.0" - jest-util: "npm:^27.4.2" - pretty-format: "npm:^27.4.2" - checksum: 10c0/e408ff75898f7864ab0c56707343bc51d8bfc49e6f4bab3924e8afbcb4cf939c283afb1afc35a1c8ba04017966cc31353236b540cf762beaf28f5e6d4e47c3d2 + jest-get-type: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + pretty-format: "npm:^27.5.1" + checksum: 10c0/e382f677e69c15aa906ec0ae2d3d944aa948ce338b2bbcb480b76c16eb12cc2141d78edda48c510363e3b2c507cc2140569c3a163c64ffa34e14cc6a8b37fb81 languageName: node linkType: hard -"jest-environment-jsdom@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-environment-jsdom@npm:27.4.4" +"jest-environment-jsdom@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-environment-jsdom@npm:27.5.1" dependencies: - "@jest/environment": "npm:^27.4.4" - "@jest/fake-timers": "npm:^27.4.2" - "@jest/types": "npm:^27.4.2" + "@jest/environment": "npm:^27.5.1" + "@jest/fake-timers": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" "@types/node": "npm:*" - jest-mock: "npm:^27.4.2" - jest-util: "npm:^27.4.2" + jest-mock: "npm:^27.5.1" + jest-util: "npm:^27.5.1" jsdom: "npm:^16.6.0" - checksum: 10c0/01c4752407f45c533e97157f72ed976fd27ece175044ce057aafe843277e65e24956f608b410384ca8005531d24f77ce690ed2a40a4d27ad11ead3d8683d4127 + checksum: 10c0/ea759ffa43e96d773983a4172c32c1a3774907723564a30a001c8a85d22d9ed82f6c45329a514152744e8916379c1c4cf9e527297ecfa1e8a4cc4888141b38fd languageName: node linkType: hard -"jest-environment-node@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-environment-node@npm:27.4.4" +"jest-environment-node@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-environment-node@npm:27.5.1" dependencies: - "@jest/environment": "npm:^27.4.4" - "@jest/fake-timers": "npm:^27.4.2" - "@jest/types": "npm:^27.4.2" + "@jest/environment": "npm:^27.5.1" + "@jest/fake-timers": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" "@types/node": "npm:*" - jest-mock: "npm:^27.4.2" - jest-util: "npm:^27.4.2" - checksum: 10c0/6c2b5ee242777b598570afe5b3bdaee9d67856b687a970416ecedddbb482965308a27db9db918c25540dfa1efee3b76d98333c431dd391d654a14a6ddc068e70 - languageName: node - linkType: hard - -"jest-get-type@npm:^27.4.0": - version: 27.4.0 - resolution: "jest-get-type@npm:27.4.0" - checksum: 10c0/19658e6be009cccaa51be7d4cdc408b1d2de8fb43e1c3abb04dc23ef381c8ea9d745f3c71ae10c2b7b2b33df18d701b1a0acb3b81ed62e55cb1039205fa74b70 + jest-mock: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + checksum: 10c0/3bbc31545436c6bb4a18841241e62036382a7261b9bb8cdc2823ec942a8a3053f98219b3ec2a4a7920bfba347602c16dd16767d9fece915134aee2e30091165c languageName: node linkType: hard @@ -12595,74 +10984,73 @@ __metadata: languageName: node linkType: hard -"jest-get-type@npm:^29.0.0": - version: 29.0.0 - resolution: "jest-get-type@npm:29.0.0" - checksum: 10c0/953a32cef3034764c0e2ac53e8192fe1fa3e5e56465086f0b57cd1a45aebbfceecca1f8cf890004be41b99fa7c4585b3c183a2dee5017c088a8a5b760dca31d0 +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b languageName: node linkType: hard -"jest-haste-map@npm:^27.4.5": - version: 27.4.5 - resolution: "jest-haste-map@npm:27.4.5" +"jest-haste-map@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-haste-map@npm:27.5.1" dependencies: - "@jest/types": "npm:^27.4.2" + "@jest/types": "npm:^27.5.1" "@types/graceful-fs": "npm:^4.1.2" "@types/node": "npm:*" anymatch: "npm:^3.0.3" fb-watchman: "npm:^2.0.0" fsevents: "npm:^2.3.2" - graceful-fs: "npm:^4.2.4" - jest-regex-util: "npm:^27.4.0" - jest-serializer: "npm:^27.4.0" - jest-util: "npm:^27.4.2" - jest-worker: "npm:^27.4.5" + graceful-fs: "npm:^4.2.9" + jest-regex-util: "npm:^27.5.1" + jest-serializer: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + jest-worker: "npm:^27.5.1" micromatch: "npm:^4.0.4" walker: "npm:^1.0.7" dependenciesMeta: fsevents: optional: true - checksum: 10c0/06e55e01b6d982896ea6438b80f6b3c2d4ce23e6eedd7ab9b49b36d478ba4a842248d7a3eac1e0f23dac0c176270616dcff5d024147e05289f901488735ca64c + checksum: 10c0/831ae476fddc6babe64ea3e7f91b4ccee0371c03ec88af5a615023711866abdd496b51344f47c4d02b6b47b433367ca41e9e42d79527b39afec767e8be9e8a63 languageName: node linkType: hard -"jest-jasmine2@npm:^27.4.5": - version: 27.4.5 - resolution: "jest-jasmine2@npm:27.4.5" +"jest-jasmine2@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-jasmine2@npm:27.5.1" dependencies: - "@babel/traverse": "npm:^7.1.0" - "@jest/environment": "npm:^27.4.4" - "@jest/source-map": "npm:^27.4.0" - "@jest/test-result": "npm:^27.4.2" - "@jest/types": "npm:^27.4.2" + "@jest/environment": "npm:^27.5.1" + "@jest/source-map": "npm:^27.5.1" + "@jest/test-result": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" "@types/node": "npm:*" chalk: "npm:^4.0.0" co: "npm:^4.6.0" - expect: "npm:^27.4.2" + expect: "npm:^27.5.1" is-generator-fn: "npm:^2.0.0" - jest-each: "npm:^27.4.2" - jest-matcher-utils: "npm:^27.4.2" - jest-message-util: "npm:^27.4.2" - jest-runtime: "npm:^27.4.5" - jest-snapshot: "npm:^27.4.5" - jest-util: "npm:^27.4.2" - pretty-format: "npm:^27.4.2" + jest-each: "npm:^27.5.1" + jest-matcher-utils: "npm:^27.5.1" + jest-message-util: "npm:^27.5.1" + jest-runtime: "npm:^27.5.1" + jest-snapshot: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + pretty-format: "npm:^27.5.1" throat: "npm:^6.0.1" - checksum: 10c0/f80f8a553c791185d5b819c5a05ad9737e407641222faa9cde620c6eaa55b148e1788dd47985744e7a85f66073002e6b76c3c6ef7224a1d6d66b3debcd471dc0 + checksum: 10c0/028172d5d65abf7e8da89c30894112efdd18007a934f30b89e3f35def3764824a9680917996d5e551caa2087589a372a2539777d5554fa3bae6c7e36afec6d4c languageName: node linkType: hard -"jest-leak-detector@npm:^27.4.2": - version: 27.4.2 - resolution: "jest-leak-detector@npm:27.4.2" +"jest-leak-detector@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-leak-detector@npm:27.5.1" dependencies: - jest-get-type: "npm:^27.4.0" - pretty-format: "npm:^27.4.2" - checksum: 10c0/bf92de1b6aa2e39ddd4994bcc5e25fddda4c4a17a7c84129d381e6b3fe232e88e358d11451ecb0829454e225369b7bcc9ea0ff3b47a80cc897e0417f14d012d2 + jest-get-type: "npm:^27.5.1" + pretty-format: "npm:^27.5.1" + checksum: 10c0/33ec88ab7d76931ae0a03b18186234114e42a4e9fae748f8a197f7f85b884c2e92ea692c06704b8a469ac26b9c6411a7a1bbc8d34580ed56672a7f6be2681aee languageName: node linkType: hard -"jest-matcher-utils@npm:^27.4.2": +"jest-matcher-utils@npm:^27.5.1": version: 27.5.1 resolution: "jest-matcher-utils@npm:27.5.1" dependencies: @@ -12674,287 +11062,334 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:^29.0.2": - version: 29.0.2 - resolution: "jest-matcher-utils@npm:29.0.2" +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" dependencies: chalk: "npm:^4.0.0" - jest-diff: "npm:^29.0.2" - jest-get-type: "npm:^29.0.0" - pretty-format: "npm:^29.0.2" - checksum: 10c0/dbf3f75fff853085c64b923434271d1d4db864dd6a2b0c620b12e0af2293bc21fb5ab645df34b601711b2345ff85554dc5be03db0a1996a1cf372d4938785134 + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e languageName: node linkType: hard -"jest-message-util@npm:^27.4.2": - version: 27.4.2 - resolution: "jest-message-util@npm:27.4.2" +"jest-message-util@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-message-util@npm:27.5.1" dependencies: "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^27.4.2" + "@jest/types": "npm:^27.5.1" "@types/stack-utils": "npm:^2.0.0" chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.4" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^27.5.1" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/447c99061006949bd0c5ac3fcf4dfad11e763712ada1b3df1c1f276d1d4f55b3f7a8bee27591cd1fe23b56220830b2a74f321925d345374d1b7cf9cd536f19b5 + languageName: node + linkType: hard + +"jest-message-util@npm:^28.1.3": + version: 28.1.3 + resolution: "jest-message-util@npm:28.1.3" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^28.1.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" micromatch: "npm:^4.0.4" - pretty-format: "npm:^27.4.2" + pretty-format: "npm:^28.1.3" slash: "npm:^3.0.0" stack-utils: "npm:^2.0.3" - checksum: 10c0/eeca37d5c8cd271bcbbdab99e44d47ea92b5db13b20ed0437d0067603d29178fead6ed49208e01bb2449c558e0d8d34fcce8124e8bf765e171dc7ec06d7c458b + checksum: 10c0/9f56a11b4171e43e2375446e624eec86f82820d9a35de3cd8b065b5ce2d7f65d2bbbdfc0ffe5fa358ff866693a68ec4f6b0cb8ad953fd6f35f9895eb370c6ed7 languageName: node linkType: hard -"jest-message-util@npm:^29.0.2": - version: 29.0.2 - resolution: "jest-message-util@npm:29.0.2" +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" dependencies: "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^29.0.2" + "@jest/types": "npm:^29.6.3" "@types/stack-utils": "npm:^2.0.0" chalk: "npm:^4.0.0" graceful-fs: "npm:^4.2.9" micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.0.2" + pretty-format: "npm:^29.7.0" slash: "npm:^3.0.0" stack-utils: "npm:^2.0.3" - checksum: 10c0/03ac5e1e5c32e2a92d6c671bea0445640ee2485eb6578946219a0deb20cce147700986b432eda17419fe4a890f3ad6ae8f204242cd670fc2b0ea35e47aa6739d + checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 languageName: node linkType: hard -"jest-mock@npm:^27.4.2": - version: 27.4.2 - resolution: "jest-mock@npm:27.4.2" +"jest-mock@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-mock@npm:27.5.1" dependencies: - "@jest/types": "npm:^27.4.2" + "@jest/types": "npm:^27.5.1" "@types/node": "npm:*" - checksum: 10c0/efc8c65471c07923ec564bac9357ccf9809a1283bce71ab041c176303a4804d4c2cffca10ad20edbfcf52912516b937388a9aab3d59f7f0d5f81a981a82d780f + checksum: 10c0/6ad58454b37ee3f726930b07efbf40a7c79d2d2d9c7b226708b4b550bc0904de93bcacf714105d11952a5c0bc855e5d59145c8c9dbbb4e69b46e7367abf53b52 languageName: node linkType: hard "jest-pnp-resolver@npm:^1.2.2": - version: 1.2.2 - resolution: "jest-pnp-resolver@npm:1.2.2" + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" peerDependencies: jest-resolve: "*" peerDependenciesMeta: jest-resolve: optional: true - checksum: 10c0/f6ef6193f7f015830aea3a13a4fd9f53a60746bbaa2d56d18af4afd26ed1b527039c466c8d2447f68b149db8a912b9493a727f29b809ff883b8b5daec16e98ce + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + +"jest-regex-util@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-regex-util@npm:27.5.1" + checksum: 10c0/f9790d417b667b38155c4bbd58f2afc0ad9f774381e5358776df02df3f29564069d4773c7ba050db6826bad8a4cc7ef82c3b4c65bfa508e419fdd063a9682c42 languageName: node linkType: hard -"jest-regex-util@npm:^27.0.0, jest-regex-util@npm:^27.4.0": - version: 27.4.0 - resolution: "jest-regex-util@npm:27.4.0" - checksum: 10c0/4f2148d24b2e5a9eaf81c657adeae402ac48eef629c482c693fa1c2c6a43aa51efcc7a380756687d9ca8cb923a64fa6d90cf7cedbbcf4624afeb0ee849cbb47c +"jest-regex-util@npm:^28.0.0": + version: 28.0.2 + resolution: "jest-regex-util@npm:28.0.2" + checksum: 10c0/d79d255b8a2217bdb0b638cbb5e61a41ab788e62a6217fce5276ab9763c1327b9e0a4f10ebdb230c76848125aa9cc97c8751cfad15db7ec0441d44acfbaf5084 languageName: node linkType: hard -"jest-resolve-dependencies@npm:^27.4.5": - version: 27.4.5 - resolution: "jest-resolve-dependencies@npm:27.4.5" +"jest-resolve-dependencies@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-resolve-dependencies@npm:27.5.1" dependencies: - "@jest/types": "npm:^27.4.2" - jest-regex-util: "npm:^27.4.0" - jest-snapshot: "npm:^27.4.5" - checksum: 10c0/a547cd5dede0c9db58d126fae31c0cc128622d4487fe62b0219e759f160cda0abd1a14604b637308cd269691dbd593b2711848338aea9a4029d673dced14fd63 + "@jest/types": "npm:^27.5.1" + jest-regex-util: "npm:^27.5.1" + jest-snapshot: "npm:^27.5.1" + checksum: 10c0/06ba847f9386b0c198bb033a2041fac141dec443ae3c60acdc3426c1844aa4c942770f8f272a1f54686979894e389bc7774d4123bb3a0fbfabe02b7deef9ef62 languageName: node linkType: hard -"jest-resolve@npm:^27.4.2, jest-resolve@npm:^27.4.5": - version: 27.4.5 - resolution: "jest-resolve@npm:27.4.5" +"jest-resolve@npm:^27.4.2, jest-resolve@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-resolve@npm:27.5.1" dependencies: - "@jest/types": "npm:^27.4.2" + "@jest/types": "npm:^27.5.1" chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.4" - jest-haste-map: "npm:^27.4.5" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^27.5.1" jest-pnp-resolver: "npm:^1.2.2" - jest-util: "npm:^27.4.2" - jest-validate: "npm:^27.4.2" + jest-util: "npm:^27.5.1" + jest-validate: "npm:^27.5.1" resolve: "npm:^1.20.0" resolve.exports: "npm:^1.1.0" slash: "npm:^3.0.0" - checksum: 10c0/dbc10ecd5b527fd4f4438c8522b403995ffde518be85d5988d3cd88bea7303413730ba7bc2064b572d65f834ae471f491e318cb91254078583397c8cd88accd6 + checksum: 10c0/5f9577e424346881964683f22472bd12bd9cfd70e49cb1800ccd31f2e88b0985ed353ca5cc7fb02de9093be2c733ab32de526c99a1192455ddb167afe916efd1 languageName: node linkType: hard -"jest-runner@npm:^27.4.5": - version: 27.4.5 - resolution: "jest-runner@npm:27.4.5" +"jest-runner@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-runner@npm:27.5.1" dependencies: - "@jest/console": "npm:^27.4.2" - "@jest/environment": "npm:^27.4.4" - "@jest/test-result": "npm:^27.4.2" - "@jest/transform": "npm:^27.4.5" - "@jest/types": "npm:^27.4.2" + "@jest/console": "npm:^27.5.1" + "@jest/environment": "npm:^27.5.1" + "@jest/test-result": "npm:^27.5.1" + "@jest/transform": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" "@types/node": "npm:*" chalk: "npm:^4.0.0" emittery: "npm:^0.8.1" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.4" - jest-docblock: "npm:^27.4.0" - jest-environment-jsdom: "npm:^27.4.4" - jest-environment-node: "npm:^27.4.4" - jest-haste-map: "npm:^27.4.5" - jest-leak-detector: "npm:^27.4.2" - jest-message-util: "npm:^27.4.2" - jest-resolve: "npm:^27.4.5" - jest-runtime: "npm:^27.4.5" - jest-util: "npm:^27.4.2" - jest-worker: "npm:^27.4.5" + graceful-fs: "npm:^4.2.9" + jest-docblock: "npm:^27.5.1" + jest-environment-jsdom: "npm:^27.5.1" + jest-environment-node: "npm:^27.5.1" + jest-haste-map: "npm:^27.5.1" + jest-leak-detector: "npm:^27.5.1" + jest-message-util: "npm:^27.5.1" + jest-resolve: "npm:^27.5.1" + jest-runtime: "npm:^27.5.1" + jest-util: "npm:^27.5.1" + jest-worker: "npm:^27.5.1" source-map-support: "npm:^0.5.6" throat: "npm:^6.0.1" - checksum: 10c0/c53d34a2159fd418ad8966b6256ebd2fd7a7e30985f29f70c09bdc896c3566688e7019582d80619a72cd8eac282cb5eb4615997058f440a8caaa037ffb59f793 + checksum: 10c0/b79962003c641eaabe4fa8855ee2127009c48f929dfca67f7fbdbc3fe84ea827964d5cbfcfd791405448011014172ea8c4faffe3669a148824ef4fac37838fe8 languageName: node linkType: hard -"jest-runtime@npm:^27.4.5": - version: 27.4.5 - resolution: "jest-runtime@npm:27.4.5" - dependencies: - "@jest/console": "npm:^27.4.2" - "@jest/environment": "npm:^27.4.4" - "@jest/globals": "npm:^27.4.4" - "@jest/source-map": "npm:^27.4.0" - "@jest/test-result": "npm:^27.4.2" - "@jest/transform": "npm:^27.4.5" - "@jest/types": "npm:^27.4.2" - "@types/yargs": "npm:^16.0.0" +"jest-runtime@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-runtime@npm:27.5.1" + dependencies: + "@jest/environment": "npm:^27.5.1" + "@jest/fake-timers": "npm:^27.5.1" + "@jest/globals": "npm:^27.5.1" + "@jest/source-map": "npm:^27.5.1" + "@jest/test-result": "npm:^27.5.1" + "@jest/transform": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" chalk: "npm:^4.0.0" cjs-module-lexer: "npm:^1.0.0" collect-v8-coverage: "npm:^1.0.0" execa: "npm:^5.0.0" - exit: "npm:^0.1.2" glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.4" - jest-haste-map: "npm:^27.4.5" - jest-message-util: "npm:^27.4.2" - jest-mock: "npm:^27.4.2" - jest-regex-util: "npm:^27.4.0" - jest-resolve: "npm:^27.4.5" - jest-snapshot: "npm:^27.4.5" - jest-util: "npm:^27.4.2" - jest-validate: "npm:^27.4.2" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^27.5.1" + jest-message-util: "npm:^27.5.1" + jest-mock: "npm:^27.5.1" + jest-regex-util: "npm:^27.5.1" + jest-resolve: "npm:^27.5.1" + jest-snapshot: "npm:^27.5.1" + jest-util: "npm:^27.5.1" slash: "npm:^3.0.0" strip-bom: "npm:^4.0.0" - yargs: "npm:^16.2.0" - checksum: 10c0/91bbda9f3e38ce78ce7a86812cea59dc21cffe0cf836897c939e6dcbdd36b2f036e1672497e87509055f66b19e9b188e6f4ddbf852965272f3c5e69fd0bf25d3 + checksum: 10c0/22ec24f4b928bdbdb7415ae7470ef523a6379812b8d0500d4d2f2124107d3af2c8fb99842352e320e79a47508a017dd5ab4b713270ad04ba9144c1961672ce29 languageName: node linkType: hard -"jest-serializer@npm:^27.4.0": - version: 27.4.0 - resolution: "jest-serializer@npm:27.4.0" +"jest-serializer@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-serializer@npm:27.5.1" dependencies: "@types/node": "npm:*" - graceful-fs: "npm:^4.2.4" - checksum: 10c0/cb41514c7ea3b81c058275b917369ea017501666707494862204e2205b9c478132c8dbbd6bfac3b6a76601291e7ef2de45a2042589639e1ff4de8361d6a3e1c2 + graceful-fs: "npm:^4.2.9" + checksum: 10c0/7a2b634a5a044b3ccf912a17032338309c90b50831a2e500f963b25e9a4ce9b550a1af1fb64f7c9a271ed6a1f951fca37bd0d61a0b286aefe197812193b0d825 languageName: node linkType: hard -"jest-snapshot@npm:^27.4.5": - version: 27.4.5 - resolution: "jest-snapshot@npm:27.4.5" +"jest-snapshot@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-snapshot@npm:27.5.1" dependencies: "@babel/core": "npm:^7.7.2" "@babel/generator": "npm:^7.7.2" - "@babel/parser": "npm:^7.7.2" "@babel/plugin-syntax-typescript": "npm:^7.7.2" "@babel/traverse": "npm:^7.7.2" "@babel/types": "npm:^7.0.0" - "@jest/transform": "npm:^27.4.5" - "@jest/types": "npm:^27.4.2" + "@jest/transform": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" "@types/babel__traverse": "npm:^7.0.4" "@types/prettier": "npm:^2.1.5" babel-preset-current-node-syntax: "npm:^1.0.0" chalk: "npm:^4.0.0" - expect: "npm:^27.4.2" - graceful-fs: "npm:^4.2.4" - jest-diff: "npm:^27.4.2" - jest-get-type: "npm:^27.4.0" - jest-haste-map: "npm:^27.4.5" - jest-matcher-utils: "npm:^27.4.2" - jest-message-util: "npm:^27.4.2" - jest-resolve: "npm:^27.4.5" - jest-util: "npm:^27.4.2" + expect: "npm:^27.5.1" + graceful-fs: "npm:^4.2.9" + jest-diff: "npm:^27.5.1" + jest-get-type: "npm:^27.5.1" + jest-haste-map: "npm:^27.5.1" + jest-matcher-utils: "npm:^27.5.1" + jest-message-util: "npm:^27.5.1" + jest-util: "npm:^27.5.1" natural-compare: "npm:^1.4.0" - pretty-format: "npm:^27.4.2" + pretty-format: "npm:^27.5.1" semver: "npm:^7.3.2" - checksum: 10c0/779d0804306ca85119fec7697f98e0fc954bdc23d35a082fbf3dcb02aac6f834a6e06a31aaf1947c78dbcebc655c057652576d90908913900b6214c5b0072b35 + checksum: 10c0/819ed445a749065efdfb7c3a5befb9331e550930acdcb8cbe49d5e64a1f05451a91094550aae6840e17afeeefc3660f205f2a7ba780fa0d0ebfa5dcfb1345f15 languageName: node linkType: hard -"jest-util@npm:^27.4.2": - version: 27.4.2 - resolution: "jest-util@npm:27.4.2" +"jest-util@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-util@npm:27.5.1" dependencies: - "@jest/types": "npm:^27.4.2" + "@jest/types": "npm:^27.5.1" "@types/node": "npm:*" chalk: "npm:^4.0.0" ci-info: "npm:^3.2.0" - graceful-fs: "npm:^4.2.4" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10c0/0f60cd2a2e09a6646ccd4ff489f1970282c0694724104979e897bd5164f91204726f5408572bf5e759d09e59d5c4e4dc65a643d2b630e06a10402bba07bf2a2e + languageName: node + linkType: hard + +"jest-util@npm:^28.1.3": + version: 28.1.3 + resolution: "jest-util@npm:28.1.3" + dependencies: + "@jest/types": "npm:^28.1.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" picomatch: "npm:^2.2.3" - checksum: 10c0/927658642b196298638cff9a5ce37b1780700c8e9b47e377636ef841b4709c20a3bc6a439ef10b715b249ed2d4694cb72f632d0976a415cd8b0bd054bd2b8e39 + checksum: 10c0/7d4946424032a2ccb2ad669905debb44b0bf040dff7a1fe82d283c679ae4638a86ca48d6a276d65a76451252338ad84e76ef2cfde03f577f091fe2b3102aedc9 languageName: node linkType: hard -"jest-util@npm:^29.0.2": - version: 29.0.2 - resolution: "jest-util@npm:29.0.2" +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" dependencies: - "@jest/types": "npm:^29.0.2" + "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" chalk: "npm:^4.0.0" ci-info: "npm:^3.2.0" graceful-fs: "npm:^4.2.9" picomatch: "npm:^2.2.3" - checksum: 10c0/eb76e9e9cb60c2e2d68bc198a83fba8fd366464b35040f71ec4214816a5f83be71bb459f6842152992f8688136a8f4cfb1a9e0ffdc846842106dc0ec54f85d70 + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 languageName: node linkType: hard -"jest-validate@npm:^27.4.2": - version: 27.4.2 - resolution: "jest-validate@npm:27.4.2" +"jest-validate@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-validate@npm:27.5.1" dependencies: - "@jest/types": "npm:^27.4.2" + "@jest/types": "npm:^27.5.1" camelcase: "npm:^6.2.0" chalk: "npm:^4.0.0" - jest-get-type: "npm:^27.4.0" + jest-get-type: "npm:^27.5.1" leven: "npm:^3.1.0" - pretty-format: "npm:^27.4.2" - checksum: 10c0/680647d6aa89f152b4ce2b1910b0d83fc8a3646822355dbabf14fe53a79cf783189765cc74e6c068de3d5c4eab1f9cc3007cc02367c6f99604e9cbe7155fe45c + pretty-format: "npm:^27.5.1" + checksum: 10c0/ac5aa45b3ce798e450eda33764fa6d8c75f8794f92005e596928a78847b6013c5a6198ca2c2b4097a9315befb3868d12a52fbe7e6945cc85f81cb824d87c5c59 languageName: node linkType: hard "jest-watch-typeahead@npm:^1.0.0": - version: 1.0.0 - resolution: "jest-watch-typeahead@npm:1.0.0" + version: 1.1.0 + resolution: "jest-watch-typeahead@npm:1.1.0" dependencies: ansi-escapes: "npm:^4.3.1" chalk: "npm:^4.0.0" - jest-regex-util: "npm:^27.0.0" - jest-watcher: "npm:^27.0.0" + jest-regex-util: "npm:^28.0.0" + jest-watcher: "npm:^28.0.0" slash: "npm:^4.0.0" string-length: "npm:^5.0.1" strip-ansi: "npm:^7.0.1" peerDependencies: - jest: ^27.0.0 - checksum: 10c0/7b3486f180df2e92b63d3d2ede0539eeefb10410bb3caa7c64df6eecfb7e0d03a0018679ada97a9caac6397993b7bf7cb04acfc7b0b44f88b2b6fc37937357c2 + jest: ^27.0.0 || ^28.0.0 + checksum: 10c0/d7929332dc43ab76a84d4f90edc589c108e1357d5570bd095563f02e0ec59ae5a9daf555dda94cde010cff7e1e82bcc37f1d54a3b3df87dafd333a664bbc0cef + languageName: node + linkType: hard + +"jest-watcher@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-watcher@npm:27.5.1" + dependencies: + "@jest/test-result": "npm:^27.5.1" + "@jest/types": "npm:^27.5.1" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + jest-util: "npm:^27.5.1" + string-length: "npm:^4.0.1" + checksum: 10c0/e42f5e38bc4da56bde6ccec4b13b7646460a3d6b567934e0ca96d72c2ce837223ffbb84a2f8428197da4323870c03f00969237f9b40f83a3072111a8cd66cc4b languageName: node linkType: hard -"jest-watcher@npm:^27.0.0, jest-watcher@npm:^27.4.2": - version: 27.4.2 - resolution: "jest-watcher@npm:27.4.2" +"jest-watcher@npm:^28.0.0": + version: 28.1.3 + resolution: "jest-watcher@npm:28.1.3" dependencies: - "@jest/test-result": "npm:^27.4.2" - "@jest/types": "npm:^27.4.2" + "@jest/test-result": "npm:^28.1.3" + "@jest/types": "npm:^28.1.3" "@types/node": "npm:*" ansi-escapes: "npm:^4.2.1" chalk: "npm:^4.0.0" - jest-util: "npm:^27.4.2" + emittery: "npm:^0.10.2" + jest-util: "npm:^28.1.3" string-length: "npm:^4.0.1" - checksum: 10c0/43938319f7e4edbc1ce029d756122c737aa292ed60e4601fca3f66c2e30d07b91c7885a996684b8dd40d4ea591cde998063256f1d0d40c3f0da9ffc6865702ef + checksum: 10c0/c61da8c35f8fc74224335471675649966787b12ae4469b5049cb46facafb30f16b63a52d0d1137701b651cd514abcae005680bfc542d85979ddbae4dbc6c10ad languageName: node linkType: hard @@ -12969,24 +11404,35 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^27.0.2, jest-worker@npm:^27.3.1, jest-worker@npm:^27.4.1, jest-worker@npm:^27.4.5": - version: 27.4.5 - resolution: "jest-worker@npm:27.4.5" +"jest-worker@npm:^27.0.2, jest-worker@npm:^27.4.5, jest-worker@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "npm:*" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b + languageName: node + linkType: hard + +"jest-worker@npm:^28.0.2": + version: 28.1.3 + resolution: "jest-worker@npm:28.1.3" dependencies: "@types/node": "npm:*" merge-stream: "npm:^2.0.0" supports-color: "npm:^8.0.0" - checksum: 10c0/571129d8dae614c2bafb7edd7b959de4a66717b09840dc72e50d031e7232767cbd7b1f08548cef1c1cf9e91a9169749016e556b8f848b797a3dad767a7a545dd + checksum: 10c0/d6715268fd6c9fd8431987d42e4ae0981dc6352fd7a5c90aadb9c67562dc6161486a98960f5d1bd36dbafb202d8d98a6fdb181711acbc5e55ee6ab85fa94c931 languageName: node linkType: hard "jest@npm:^27.4.3": - version: 27.4.5 - resolution: "jest@npm:27.4.5" + version: 27.5.1 + resolution: "jest@npm:27.5.1" dependencies: - "@jest/core": "npm:^27.4.5" + "@jest/core": "npm:^27.5.1" import-local: "npm:^3.0.2" - jest-cli: "npm:^27.4.5" + jest-cli: "npm:^27.5.1" peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -12994,7 +11440,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 10c0/e4f9c7c1e28a6cd1a9dd798489faf6077af324dc23887462380b91e0b5ff13af675ed84b5f8fc7b2c7d929ad5b5796289206531a707301235c42d479c65b0243 + checksum: 10c0/c013d07e911e423612756bc42d376e578b8721d847db38d94344f9cdf8fdaa0241b0a5c2fe1aad7b7758d415e0b9517c1098312f0d03760f123958d5b6cf5597 languageName: node linkType: hard @@ -13091,21 +11537,19 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" +"jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" bin: jsesc: bin/jsesc - checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 languageName: node linkType: hard -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: 10c0/f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 languageName: node linkType: hard @@ -13151,7 +11595,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^1.0.1": +"json5@npm:^1.0.2": version: 1.0.2 resolution: "json5@npm:1.0.2" dependencies: @@ -13184,30 +11628,42 @@ __metadata: languageName: node linkType: hard +"jsonpath@npm:^1.1.1": + version: 1.1.1 + resolution: "jsonpath@npm:1.1.1" + dependencies: + esprima: "npm:1.2.2" + static-eval: "npm:2.0.2" + underscore: "npm:1.12.1" + checksum: 10c0/4fea3f83bcb4df08c32090ba8a0d1a6d26244f6d19c4296f9b58caa01eeb7de0f8347eba40077ceee2f95acc69d032b0b48226d350339063ba580e87983f6dec + languageName: node + linkType: hard + "jsonpointer@npm:^5.0.0": - version: 5.0.0 - resolution: "jsonpointer@npm:5.0.0" - checksum: 10c0/deca8569f9fd3fb501880dd6bcda9ca742e37655f177db8bd594e4ceac373c328b23308b5a47deb46cdfc14b6f27b8ebe9802a52eb796130816996870c5efca4 + version: 5.0.1 + resolution: "jsonpointer@npm:5.0.1" + checksum: 10c0/89929e58b400fcb96928c0504fcf4fc3f919d81e9543ceb055df125538470ee25290bb4984251e172e6ef8fcc55761eb998c118da763a82051ad89d4cb073fe7 languageName: node linkType: hard -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0": - version: 3.2.0 - resolution: "jsx-ast-utils@npm:3.2.0" +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" dependencies: - array-includes: "npm:^3.1.2" - object.assign: "npm:^4.1.2" - checksum: 10c0/46e3f289c90367ef4f5c2fc748db595408446bdec5449dcc3d1b10c07e5cfe598f131f8b8cc77f0c5c7db09d5b011debd8c9e5cf0c59b47613435e87abbe7225 + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 languageName: node linkType: hard -"jsx-ast-utils@npm:^3.2.1": - version: 3.2.1 - resolution: "jsx-ast-utils@npm:3.2.1" +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" dependencies: - array-includes: "npm:^3.1.3" - object.assign: "npm:^4.1.2" - checksum: 10c0/9259c93bf4f80a740efcade8e6087f28c839ebf75799c1a886e13f6b84b3b3360aee0576bccb32ce01cf838409cf7e1a8fa6f7bd4dfb301a006c42208243e5ac + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e languageName: node linkType: hard @@ -13225,33 +11681,36 @@ __metadata: languageName: node linkType: hard -"klona@npm:^2.0.4": - version: 2.0.4 - resolution: "klona@npm:2.0.4" - checksum: 10c0/3292a3393ed47603b67b54b61d29d1e64677c3436d12e8b14cd8762183f409dc3422dde06734cc23731c38bbb9feae03ffc23b38d399eeeebd6dbd467f58a034 +"klona@npm:^2.0.4, klona@npm:^2.0.5": + version: 2.0.6 + resolution: "klona@npm:2.0.6" + checksum: 10c0/94eed2c6c2ce99f409df9186a96340558897b3e62a85afdc1ee39103954d2ebe1c1c4e9fe2b0952771771fa96d70055ede8b27962a7021406374fdb695fd4d01 languageName: node linkType: hard -"klona@npm:^2.0.5": - version: 2.0.5 - resolution: "klona@npm:2.0.5" - checksum: 10c0/5b752c11ca8e2996612386699f52cc5aed802aa4116663d26239ac0b054fae25191dacb95587ecf1a167b039daa9fc3fa2da17dfd5d0821f3037de3821d9a9e5 +"language-subtag-registry@npm:^0.3.20": + version: 0.3.23 + resolution: "language-subtag-registry@npm:0.3.23" + checksum: 10c0/e9b05190421d2cd36dd6c95c28673019c927947cb6d94f40ba7e77a838629ee9675c94accf897fbebb07923187deb843b8fbb8935762df6edafe6c28dcb0b86c languageName: node linkType: hard -"language-subtag-registry@npm:~0.3.2": - version: 0.3.21 - resolution: "language-subtag-registry@npm:0.3.21" - checksum: 10c0/349ff5b6fbba6dcf345e8edcdce3c7a47624fed4b8f72b9215686b8de7c65067a1c44a45bdbc88282bff5396be63333e3ec67a42ffaa22027ffe6b079d3500e4 +"language-tags@npm:^1.0.9": + version: 1.0.9 + resolution: "language-tags@npm:1.0.9" + dependencies: + language-subtag-registry: "npm:^0.3.20" + checksum: 10c0/9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff languageName: node linkType: hard -"language-tags@npm:^1.0.5": - version: 1.0.5 - resolution: "language-tags@npm:1.0.5" +"launch-editor@npm:^2.6.0": + version: 2.9.1 + resolution: "launch-editor@npm:2.9.1" dependencies: - language-subtag-registry: "npm:~0.3.2" - checksum: 10c0/04215e821af9a8f1bc6c99ab5aa0a316c3fe1912ca3337eb28596316064bddd8edd22f2883d866069ebdf01b2002e504a760a336b2c728b6d30514e86744f76c + picocolors: "npm:^1.0.0" + shell-quote: "npm:^1.8.1" + checksum: 10c0/891f1d136ed8e4ea12e16c196a0d2e07f23c7b983e3ab532b2be1775fb244909581507cce97c50f9d5ca92680b53e4a75c72ddcf20184aa6c4da6ebbe87703f5 languageName: node linkType: hard @@ -13272,21 +11731,24 @@ __metadata: languageName: node linkType: hard -"lilconfig@npm:^2.0.3, lilconfig@npm:^2.0.5": - version: 2.0.5 - resolution: "lilconfig@npm:2.0.5" - checksum: 10c0/eed9afcecf1b864405f4b7299abefb87945edba250c70896de54b19b08b87333abc268cc6689539bc33f0e8d098139578704bf51af8077d358f1ac95d58beef0 +"levn@npm:~0.3.0": + version: 0.3.0 + resolution: "levn@npm:0.3.0" + dependencies: + prelude-ls: "npm:~1.1.2" + type-check: "npm:~0.3.2" + checksum: 10c0/e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 languageName: node linkType: hard -"lilconfig@npm:^2.1.0": +"lilconfig@npm:^2.0.3, lilconfig@npm:^2.1.0": version: 2.1.0 resolution: "lilconfig@npm:2.1.0" checksum: 10c0/64645641aa8d274c99338e130554abd6a0190533c0d9eb2ce7ebfaf2e05c7d9961f3ffe2bfa39efd3b60c521ba3dd24fa236fe2775fc38501bf82bf49d4678b8 languageName: node linkType: hard -"lilconfig@npm:~3.1.2": +"lilconfig@npm:^3.0.0, lilconfig@npm:~3.1.2": version: 3.1.2 resolution: "lilconfig@npm:3.1.2" checksum: 10c0/f059630b1a9bddaeba83059db00c672b64dc14074e9f232adce32b38ca1b5686ab737eb665c5ba3c32f147f0002b4bee7311ad0386a9b98547b5623e87071fbe @@ -13294,9 +11756,9 @@ __metadata: linkType: hard "lines-and-columns@npm:^1.1.6": - version: 1.1.6 - resolution: "lines-and-columns@npm:1.1.6" - checksum: 10c0/0dd62f0332c4572f07bf51af5829428989d5f710150ba7ae806524409282f1adbe0c33698137ce1ee3c419779e6ac3aa8974c7a4be7e2d040234e729229cdb21 + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d languageName: node linkType: hard @@ -13321,8 +11783,8 @@ __metadata: linkType: hard "listr2@npm:~8.2.4": - version: 8.2.4 - resolution: "listr2@npm:8.2.4" + version: 8.2.5 + resolution: "listr2@npm:8.2.5" dependencies: cli-truncate: "npm:^4.0.0" colorette: "npm:^2.0.20" @@ -13330,7 +11792,7 @@ __metadata: log-update: "npm:^6.1.0" rfdc: "npm:^1.4.1" wrap-ansi: "npm:^9.0.0" - checksum: 10c0/df5b129e9767de1997973cec6103cd4bd6fc3b3367685b7c23048d12b61d5b7e44fecd8a3d3534c0e1c963bd5ac43ca501d14712f46fa101050037be323a5c16 + checksum: 10c0/f5a9599514b00c27d7eb32d1117c83c61394b2a985ec20e542c798bf91cf42b19340215701522736f5b7b42f557e544afeadec47866e35e5d4f268f552729671 languageName: node linkType: hard @@ -13347,24 +11809,13 @@ __metadata: linkType: hard "loader-runner@npm:^4.2.0": - version: 4.2.0 - resolution: "loader-runner@npm:4.2.0" - checksum: 10c0/907dee8c4d5841962005e22bf2fa10f7ea5849356243b43e443227641fa202f5edf1c996e5b36697e027533013d35554a46e75d3db8183731f11b5f38db565ea - languageName: node - linkType: hard - -"loader-utils@npm:^1.4.0": - version: 1.4.2 - resolution: "loader-utils@npm:1.4.2" - dependencies: - big.js: "npm:^5.2.2" - emojis-list: "npm:^3.0.0" - json5: "npm:^1.0.1" - checksum: 10c0/2b726088b5526f7605615e3e28043ae9bbd2453f4a85898e1151f3c39dbf7a2b65d09f3996bc588d92ac7e717ded529d3e1ea3ea42c433393be84a58234a2f53 + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: 10c0/a44d78aae0907a72f73966fe8b82d1439c8c485238bd5a864b1b9a2a3257832effa858790241e6b37876b5446a78889adf2fcc8dd897ce54c089ecc0a0ce0bf0 languageName: node linkType: hard -"loader-utils@npm:^2.0.0": +"loader-utils@npm:^2.0.0, loader-utils@npm:^2.0.4": version: 2.0.4 resolution: "loader-utils@npm:2.0.4" dependencies: @@ -13376,19 +11827,9 @@ __metadata: linkType: hard "loader-utils@npm:^3.2.0": - version: 3.2.1 - resolution: "loader-utils@npm:3.2.1" - checksum: 10c0/d3e1f217d160e8e894a0385a33500d4ce14065e8ffb250f5a81ae65bc2c3baa50625ec34182ba4417b46b4ac6725aed64429e1104d6401e074af2aa1dd018394 - languageName: node - linkType: hard - -"locate-path@npm:^2.0.0": - version: 2.0.0 - resolution: "locate-path@npm:2.0.0" - dependencies: - p-locate: "npm:^2.0.0" - path-exists: "npm:^3.0.0" - checksum: 10c0/24efa0e589be6aa3c469b502f795126b26ab97afa378846cb508174211515633b770aa0ba610cab113caedab8d2a4902b061a08aaed5297c12ab6f5be4df0133 + version: 3.3.1 + resolution: "loader-utils@npm:3.3.1" + checksum: 10c0/f2af4eb185ac5bf7e56e1337b666f90744e9f443861ac521b48f093fb9e8347f191c8960b4388a3365147d218913bc23421234e7788db69f385bacfefa0b4758 languageName: node linkType: hard @@ -13476,7 +11917,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:4.17.21, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c @@ -13497,9 +11938,9 @@ __metadata: linkType: hard "longest-streak@npm:^3.0.0": - version: 3.0.1 - resolution: "longest-streak@npm:3.0.1" - checksum: 10c0/5645ceb94b0fb0ea7ed42ae3d285465a6495319d6f12a40b334e6d3485c5aae36bca09e6ba1c7fc3792cd0373735bb9e7ea129b3828b3c5642f21030c25b6cda + version: 3.1.0 + resolution: "longest-streak@npm:3.1.0" + checksum: 10c0/7c2f02d0454b52834d1bcedef79c557bd295ee71fdabb02d041ff3aa9da48a90b5df7c0409156dedbc4df9b65da18742652aaea4759d6ece01f08971af6a7eaa languageName: node linkType: hard @@ -13569,24 +12010,24 @@ __metadata: linkType: hard "magic-string@npm:^0.25.0, magic-string@npm:^0.25.7": - version: 0.25.7 - resolution: "magic-string@npm:0.25.7" + version: 0.25.9 + resolution: "magic-string@npm:0.25.9" dependencies: - sourcemap-codec: "npm:^1.4.4" - checksum: 10c0/d5da35f01d5437d7d6c030fe8185285a78b97144d07944d62187bd985ee2f6dcc8c9a538ded6a3afe186f5d6f2e705b45f9f307b19020aff530447bd32f24375 + sourcemap-codec: "npm:^1.4.8" + checksum: 10c0/37f5e01a7e8b19a072091f0b45ff127cda676232d373ce2c551a162dd4053c575ec048b9cbb4587a1f03adb6c5d0fd0dd49e8ab070cd2c83a4992b2182d9cb56 languageName: node linkType: hard "magic-string@npm:^0.30.5": - version: 0.30.11 - resolution: "magic-string@npm:0.30.11" + version: 0.30.12 + resolution: "magic-string@npm:0.30.12" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10c0/b9eb370773d0bd90ca11a848753409d8e5309b1ad56d2a1aa49d6649da710a6d2fe7237ad1a643c5a5d3800de2b9946ed9690acdfc00e6cc1aeafff3ab1752c4 + checksum: 10c0/469f457d18af37dfcca8617086ea8a65bcd8b60ba8a1182cb024ce43e470ace3c9d1cb6bee58d3b311768fb16bc27bd50bdeebcaa63dadd0fd46cac4d2e11d5f languageName: node linkType: hard -"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": +"make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: @@ -13595,6 +12036,15 @@ __metadata: languageName: node linkType: hard +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + languageName: node + linkType: hard + "make-error@npm:^1.1.1": version: 1.3.6 resolution: "make-error@npm:1.3.6" @@ -13602,6 +12052,13 @@ __metadata: languageName: node linkType: hard +"make-event-props@npm:^1.6.0": + version: 1.6.2 + resolution: "make-event-props@npm:1.6.2" + checksum: 10c0/ecf0b742e43a392c07e2267baca2397e750d38cc14ef3cb72ef8bfe4a8c8b0fd99a03a2eeab84a26c2b204f7c231da6af31fa26321fbfd413ded43ba1825e867 + languageName: node + linkType: hard + "make-fetch-happen@npm:^13.0.0": version: 13.0.1 resolution: "make-fetch-happen@npm:13.0.1" @@ -13622,12 +12079,21 @@ __metadata: languageName: node linkType: hard -"makeerror@npm:1.0.x": - version: 1.0.11 - resolution: "makeerror@npm:1.0.11" +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" dependencies: - tmpl: "npm:1.0.x" - checksum: 10c0/b24a6f55ee7e4e3ebd39fcebedadabd02a6ab60a58be87037d02ec8e633cb3a65492b8d107387ec2edbdc2b93aafcad9b4de53657cb70e6716b03f7b0f263dc8 + tmpl: "npm:1.0.5" + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + languageName: node + linkType: hard + +"map-age-cleaner@npm:^0.1.3": + version: 0.1.3 + resolution: "map-age-cleaner@npm:0.1.3" + dependencies: + p-defer: "npm:^1.0.0" + checksum: 10c0/7495236c7b0950956c144fd8b4bc6399d4e78072a8840a4232fe1c4faccbb5eb5d842e5c0a56a60afc36d723f315c1c672325ca03c1b328650f7fcc478f385fd languageName: node linkType: hard @@ -13639,9 +12105,9 @@ __metadata: linkType: hard "markdown-table@npm:^3.0.0": - version: 3.0.2 - resolution: "markdown-table@npm:3.0.2" - checksum: 10c0/52475e5e8522ab2cfcffc88f79c302514dad42791a350ac769abd1101b903c498780aabf259919f566dc382778123b9dde05a5a6fe887ad343a638ae3d173b9f + version: 3.0.4 + resolution: "markdown-table@npm:3.0.4" + checksum: 10c0/1257b31827629a54c24a5030a3dac952256c559174c95ce3ef89bebd6bff0cb1444b1fd667b1a1bb53307f83278111505b3e26f0c4e7b731e0060d435d2d930b languageName: node linkType: hard @@ -13678,8 +12144,8 @@ __metadata: linkType: hard "mdast-util-from-markdown@npm:^2.0.0": - version: 2.0.0 - resolution: "mdast-util-from-markdown@npm:2.0.0" + version: 2.0.2 + resolution: "mdast-util-from-markdown@npm:2.0.2" dependencies: "@types/mdast": "npm:^4.0.0" "@types/unist": "npm:^3.0.0" @@ -13693,20 +12159,20 @@ __metadata: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" unist-util-stringify-position: "npm:^4.0.0" - checksum: 10c0/fb66e917f66e33fc60d6964264c4abd519fd8829a4a58ff9c61b2ba5c337554fb954b9ec31ca1c34e83c1163a73f310c39072d656f9a2d3184fe39c87cbba65a + checksum: 10c0/76eb2bd2c6f7a0318087c73376b8af6d7561c1e16654e7667e640f391341096c56142618fd0ff62f6d39e5ab4895898b9789c84cd7cec2874359a437a0e1ff15 languageName: node linkType: hard "mdast-util-gfm-autolink-literal@npm:^2.0.0": - version: 2.0.0 - resolution: "mdast-util-gfm-autolink-literal@npm:2.0.0" + version: 2.0.1 + resolution: "mdast-util-gfm-autolink-literal@npm:2.0.1" dependencies: "@types/mdast": "npm:^4.0.0" ccount: "npm:^2.0.0" devlop: "npm:^1.0.0" mdast-util-find-and-replace: "npm:^3.0.0" micromark-util-character: "npm:^2.0.0" - checksum: 10c0/821ef91db108f05b321c54fdf4436df9d6badb33e18f714d8d52c0e70f988f5b6b118cdd4d607b4cb3bef1718304ce7e9fb25fa580622c3d20d68c1489c64875 + checksum: 10c0/963cd22bd42aebdec7bdd0a527c9494d024d1ad0739c43dc040fee35bdfb5e29c22564330a7418a72b5eab51d47a6eff32bc0255ef3ccb5cebfe8970e91b81b6 languageName: node linkType: hard @@ -13774,19 +12240,67 @@ __metadata: languageName: node linkType: hard +"mdast-util-mdx-expression@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-mdx-expression@npm:2.0.1" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/9a1e57940f66431f10312fa239096efa7627f375e7933b5d3162c0b5c1712a72ac87447aff2b6838d2bbd5c1311b188718cc90b33b67dc67a88550e0a6ef6183 + languageName: node + linkType: hard + +"mdast-util-mdx-jsx@npm:^3.0.0": + version: 3.1.3 + resolution: "mdast-util-mdx-jsx@npm:3.1.3" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + "@types/unist": "npm:^3.0.0" + ccount: "npm:^2.0.0" + devlop: "npm:^1.1.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + parse-entities: "npm:^4.0.0" + stringify-entities: "npm:^4.0.0" + unist-util-stringify-position: "npm:^4.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/1b0b64215efbbbb1ee9ba2a2b3e5f11859dada7dff162949a0d503aefbd75c0308f17d404df126c54acea06d2224905915b2cac2e6c999514c919bd963b8de24 + languageName: node + linkType: hard + +"mdast-util-mdxjs-esm@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-mdxjs-esm@npm:2.0.1" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/5bda92fc154141705af2b804a534d891f28dac6273186edf1a4c5e3f045d5b01dbcac7400d27aaf91b7e76e8dce007c7b2fdf136c11ea78206ad00bdf9db46bc + languageName: node + linkType: hard + "mdast-util-phrasing@npm:^4.0.0": - version: 4.0.0 - resolution: "mdast-util-phrasing@npm:4.0.0" + version: 4.1.0 + resolution: "mdast-util-phrasing@npm:4.1.0" dependencies: "@types/mdast": "npm:^4.0.0" unist-util-is: "npm:^6.0.0" - checksum: 10c0/bf281d159d1a9a9705ed8fdbadb70c9633d1c25716ff2c282b6c2ecbc1f05cff10f73e5280d754ed833b09d42b00260c4b8d0a5fed4ce3236d4cffb5230b50cf + checksum: 10c0/bf6c31d51349aa3d74603d5e5a312f59f3f65662ed16c58017169a5fb0f84ca98578f626c5ee9e4aa3e0a81c996db8717096705521bddb4a0185f98c12c9b42f languageName: node linkType: hard "mdast-util-to-hast@npm:^13.0.0": - version: 13.0.2 - resolution: "mdast-util-to-hast@npm:13.0.2" + version: 13.2.0 + resolution: "mdast-util-to-hast@npm:13.2.0" dependencies: "@types/hast": "npm:^3.0.0" "@types/mdast": "npm:^4.0.0" @@ -13796,23 +12310,25 @@ __metadata: trim-lines: "npm:^3.0.0" unist-util-position: "npm:^5.0.0" unist-util-visit: "npm:^5.0.0" - checksum: 10c0/f6e9a5b1ab94483ce1cf2ef229578fde4fe7d085f8b9d88a048823da5f93f9469adc98839e8db73f7475e8128a6df30eccad9cd0f9ee0a1d410e74db19b82d8c + vfile: "npm:^6.0.0" + checksum: 10c0/9ee58def9287df8350cbb6f83ced90f9c088d72d4153780ad37854f87144cadc6f27b20347073b285173b1649b0723ddf0b9c78158608a804dcacb6bda6e1816 languageName: node linkType: hard "mdast-util-to-markdown@npm:^2.0.0": - version: 2.1.0 - resolution: "mdast-util-to-markdown@npm:2.1.0" + version: 2.1.2 + resolution: "mdast-util-to-markdown@npm:2.1.2" dependencies: "@types/mdast": "npm:^4.0.0" "@types/unist": "npm:^3.0.0" longest-streak: "npm:^3.0.0" mdast-util-phrasing: "npm:^4.0.0" mdast-util-to-string: "npm:^4.0.0" + micromark-util-classify-character: "npm:^2.0.0" micromark-util-decode-string: "npm:^2.0.0" unist-util-visit: "npm:^5.0.0" zwitch: "npm:^2.0.0" - checksum: 10c0/8bd37a9627a438ef6418d6642661904d0cc03c5c732b8b018a8e238ef5cc82fe8aef1940b19c6f563245e58b9659f35e527209bd3fe145f3c723ba14d18fc3e6 + checksum: 10c0/4649722a6099f12e797bd8d6469b2b43b44e526b5182862d9c7766a3431caad2c0112929c538a972f214e63c015395e5d3f54bd81d9ac1b16e6d8baaf582f749 languageName: node linkType: hard @@ -13846,25 +12362,17 @@ __metadata: languageName: node linkType: hard -"memfs@npm:^3.1.2": - version: 3.2.1 - resolution: "memfs@npm:3.2.1" - dependencies: - fs-monkey: "npm:1.0.1" - checksum: 10c0/cedb425a461f00ca61614050300c54fc84fe6ea6695d006a90c52db9f1d9a1ce4edcfdf2e84a3d561c8372b830a96b5f34bfc3f88f29cbbe7a4be1429a2b28cf - languageName: node - linkType: hard - -"memfs@npm:^3.4.1, memfs@npm:^3.4.12": - version: 3.6.0 - resolution: "memfs@npm:3.6.0" +"mem@npm:^8.0.0": + version: 8.1.1 + resolution: "mem@npm:8.1.1" dependencies: - fs-monkey: "npm:^1.0.4" - checksum: 10c0/af567f9038bbb5bbacf100b35d5839e90a89f882d191d8a1c7002faeb224c6cfcebd0e97c0150e9af8be95ec7b5b75a52af56fcd109d0bc18807c1f4e004f053 + map-age-cleaner: "npm:^0.1.3" + mimic-fn: "npm:^3.1.0" + checksum: 10c0/5829c404d024c1accaf76ebacbc7eae9b59e5ce5722d184aa24e8387a8097a499f6aa7e181021003c51eb87b2dcdc9a2270050c58753cce761de206643cba91c languageName: node linkType: hard -"memfs@npm:^3.4.3": +"memfs@npm:^3.1.2, memfs@npm:^3.4.1, memfs@npm:^3.4.12, memfs@npm:^3.4.3": version: 3.5.3 resolution: "memfs@npm:3.5.3" dependencies: @@ -13910,7 +12418,7 @@ __metadata: languageName: node linkType: hard -"merge2@npm:^1.3.0": +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb @@ -13925,8 +12433,8 @@ __metadata: linkType: hard "micromark-core-commonmark@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-core-commonmark@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-core-commonmark@npm:2.0.1" dependencies: decode-named-character-reference: "npm:^1.0.0" devlop: "npm:^1.0.0" @@ -13944,25 +12452,25 @@ __metadata: micromark-util-subtokenize: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 10c0/e087824b98d1f1d0db34791ac53945b0d68fb5e541c6c9da6700cc3db54d6b697d8110d3120d5d30e2fb39443aabddccd3e2bbf684795359f38b5a696fdc5913 + checksum: 10c0/a0b280b1b6132f600518e72cb29a4dd1b2175b85f5ed5b25d2c5695e42b876b045971370daacbcfc6b4ce8cf7acbf78dd3a0284528fb422b450144f4b3bebe19 languageName: node linkType: hard "micromark-extension-gfm-autolink-literal@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-extension-gfm-autolink-literal@npm:2.0.0" + version: 2.1.0 + resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0" dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-sanitize-uri: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 10c0/9349b8a4c45ad6375d85f196ef6ffc7472311bf0e7493dc387cb6e37498c2fa56f0b670f54ae54f0c6bbbed3b22997643f05057ffcc58457ca56368f7a636319 + checksum: 10c0/84e6fbb84ea7c161dfa179665dc90d51116de4c28f3e958260c0423e5a745372b7dcbc87d3cde98213b532e6812f847eef5ae561c9397d7f7da1e59872ef3efe languageName: node linkType: hard "micromark-extension-gfm-footnote@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-extension-gfm-footnote@npm:2.0.0" + version: 2.1.0 + resolution: "micromark-extension-gfm-footnote@npm:2.1.0" dependencies: devlop: "npm:^1.0.0" micromark-core-commonmark: "npm:^2.0.0" @@ -13972,13 +12480,13 @@ __metadata: micromark-util-sanitize-uri: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 10c0/59958d8a6e28a16470937de69a01476cd9766f310a892655cb6bcd32b0833ffaa8accddb77e031b1c710c856fc943174e1b0f8f2c60dfa542743f4ba7cff6f15 + checksum: 10c0/d172e4218968b7371b9321af5cde8c77423f73b233b2b0fcf3ff6fd6f61d2e0d52c49123a9b7910612478bf1f0d5e88c75a3990dd68f70f3933fe812b9f77edc languageName: node linkType: hard "micromark-extension-gfm-strikethrough@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-extension-gfm-strikethrough@npm:2.0.0" + version: 2.1.0 + resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0" dependencies: devlop: "npm:^1.0.0" micromark-util-chunked: "npm:^2.0.0" @@ -13986,20 +12494,20 @@ __metadata: micromark-util-resolve-all: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 10c0/b1c4f0e12935e1ffa3981a256de38c5c347f91a015cc1002c0bcdbab476fa97a5992f0d5a9788b2437a96bc94fe4c32d5f539d84b2d699a36dafe31b81b41eb1 + checksum: 10c0/ef4f248b865bdda71303b494671b7487808a340b25552b11ca6814dff3fcfaab9be8d294643060bbdb50f79313e4a686ab18b99cbe4d3ee8a4170fcd134234fb languageName: node linkType: hard "micromark-extension-gfm-table@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-extension-gfm-table@npm:2.0.0" + version: 2.1.0 + resolution: "micromark-extension-gfm-table@npm:2.1.0" dependencies: devlop: "npm:^1.0.0" micromark-factory-space: "npm:^2.0.0" micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 10c0/3777b5074054d97888ffdcb8e383399adc9066a755ad7197423fda16e09769a18d7e713d969c204228d9abf1e18fef19c7b04790698afc973418ea5f75015f72 + checksum: 10c0/c1b564ab68576406046d825b9574f5b4dbedbb5c44bede49b5babc4db92f015d9057dd79d8e0530f2fecc8970a695c40ac2e5e1d4435ccf3ef161038d0d1463b languageName: node linkType: hard @@ -14013,15 +12521,15 @@ __metadata: linkType: hard "micromark-extension-gfm-task-list-item@npm:^2.0.0": - version: 2.0.1 - resolution: "micromark-extension-gfm-task-list-item@npm:2.0.1" + version: 2.1.0 + resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0" dependencies: devlop: "npm:^1.0.0" micromark-factory-space: "npm:^2.0.0" micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 10c0/16a55040a1697339eeeeebaabbbe28dc9e8281979cdeec343a58dc97f7b447365d3e37329f394455c5d17902639b786c7669dbbc4ea558cf8680eb7808330598 + checksum: 10c0/78aa537d929e9309f076ba41e5edc99f78d6decd754b6734519ccbbfca8abd52e1c62df68d41a6ae64d2a3fc1646cea955893c79680b0b4385ced4c52296181f languageName: node linkType: hard @@ -14099,12 +12607,12 @@ __metadata: linkType: hard "micromark-util-character@npm:^2.0.0": - version: 2.0.1 - resolution: "micromark-util-character@npm:2.0.1" + version: 2.1.0 + resolution: "micromark-util-character@npm:2.1.0" dependencies: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 10c0/5b91c90f29c8873a9f2f2385bbeb70f481b0e56c26092451d1796cd323257927a69eccca19b079d83d5751ec6fc92964214a3c868114555f87631426631df6b9 + checksum: 10c0/fc37a76aaa5a5138191ba2bef1ac50c36b3bcb476522e98b1a42304ab4ec76f5b036a746ddf795d3de3e7004b2c09f21dd1bad42d161f39b8cfc0acd067e6373 languageName: node linkType: hard @@ -14139,11 +12647,11 @@ __metadata: linkType: hard "micromark-util-decode-numeric-character-reference@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.1" dependencies: micromark-util-symbol: "npm:^2.0.0" - checksum: 10c0/197c12907fa885fa6e903da958dabb5fe27f01e5dd1f879983e221bae3947c33cf27fe6b9f05ce14de456892095e4bb9f95f9614f8ae4128ebb9ade3fdf4b9d6 + checksum: 10c0/3f6d684ee8f317c67806e19b3e761956256cb936a2e0533aad6d49ac5604c6536b2041769c6febdd387ab7175b7b7e551851bf2c1f78da943e7a3671ca7635ac languageName: node linkType: hard @@ -14203,14 +12711,14 @@ __metadata: linkType: hard "micromark-util-subtokenize@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-subtokenize@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-subtokenize@npm:2.0.1" dependencies: devlop: "npm:^1.0.0" micromark-util-chunked: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 10c0/1907c56c4974d430b984c50b3eb0930241112d931e611f178dee17d58f2976614950631b70f4e9c7e49dbccf21f91654ee61f250e028bf2f2b0f3d3aeb168da8 + checksum: 10c0/000cefde827db129f4ed92b8fbdeb4866c5f9c93068c0115485564b0426abcb9058080aa257df9035e12ca7fa92259d66623ea750b9eb3bcdd8325d3fb6fc237 languageName: node linkType: hard @@ -14275,20 +12783,6 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:1.45.0, mime-db@npm:>= 1.43.0 < 2": - version: 1.45.0 - resolution: "mime-db@npm:1.45.0" - checksum: 10c0/09ffd4938f8617e0296ab63a9cdfa190eafd344eefbf82d2141d6b9e3b83e2501a0a0f81c09397e97ec65d60597b7fd56c69a30aae23ba63d90c26630c0f7258 - languageName: node - linkType: hard - -"mime-db@npm:1.51.0": - version: 1.51.0 - resolution: "mime-db@npm:1.51.0" - checksum: 10c0/0019c731d3967b62e4aefa1d416709386649305cc5a94dd13d315960c8111a0a9c4d1dc542545e69a476e316df4fc03de18dbc83a82e97aefdb046267649a548 - languageName: node - linkType: hard - "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -14296,25 +12790,14 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24": - version: 2.1.28 - resolution: "mime-types@npm:2.1.28" - dependencies: - mime-db: "npm:1.45.0" - checksum: 10c0/3c434cb574998ab6a733088540c73d59c85b20ffb1620528cb607afe2c69b118226f17b130e525d276758329b358304d65964f20e3b34c7f33bb463924b70392 - languageName: node - linkType: hard - -"mime-types@npm:^2.1.31": - version: 2.1.34 - resolution: "mime-types@npm:2.1.34" - dependencies: - mime-db: "npm:1.51.0" - checksum: 10c0/7cb55d499f67fbaa9b4e5da552c54ae5c9ac1d57df93f89e2af185d2f3e7a3e6f2030b5b248fec2130f659ebcd9a40e51f63f91006b3ea876b3cadf4755ea410 +"mime-db@npm:>= 1.43.0 < 2": + version: 1.53.0 + resolution: "mime-db@npm:1.53.0" + checksum: 10c0/1dcc37ba8ed5d1c179f5c6f0837e8db19371d5f2ea3690c3c2f3fa8c3858f976851d3460b172b4dee78ebd606762cbb407aa398545fbacd539e519f858cd7bf4 languageName: node linkType: hard -"mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -14339,6 +12822,13 @@ __metadata: languageName: node linkType: hard +"mimic-fn@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-fn@npm:3.1.0" + checksum: 10c0/a07cdd8ed6490c2dff5b11f889b245d9556b80f5a653a552a651d17cff5a2d156e632d235106c2369f00cccef4071704589574cf3601bc1b1400a1f620dff067 + languageName: node + linkType: hard + "mimic-fn@npm:^4.0.0": version: 4.0.0 resolution: "mimic-fn@npm:4.0.0" @@ -14361,20 +12851,23 @@ __metadata: linkType: hard "mini-css-extract-plugin@npm:^2.4.5": - version: 2.4.5 - resolution: "mini-css-extract-plugin@npm:2.4.5" + version: 2.9.2 + resolution: "mini-css-extract-plugin@npm:2.9.2" dependencies: schema-utils: "npm:^4.0.0" + tapable: "npm:^2.2.1" peerDependencies: webpack: ^5.0.0 - checksum: 10c0/00a1c4007b566052b6aa1345d9c468d476b9b6950de1d41d4dd824e83648977e95a4804c7b6cc0d2466c652843713922f7eeca0803cd8cb1a419f6b39d3c9880 + checksum: 10c0/5d3218dbd7db48b572925ddac05162a7415bf81b321f1a0c07016ec643cb5720c8a836ae68d45f5de826097a3013b601706c9c5aacb7f610dc2041b271de2ce0 languageName: node linkType: hard "mini-svg-data-uri@npm:^1.2.3": - version: 1.2.3 - resolution: "mini-svg-data-uri@npm:1.2.3" - checksum: 10c0/c40092187c6d2404bfdbb7b461ee38a58a6cf0382814f26780fffbebdf56dfaa9928fa57f39c31f6136960a91ded5bffd1b3dc927fdf93718140f0e920ea072d + version: 1.4.4 + resolution: "mini-svg-data-uri@npm:1.4.4" + bin: + mini-svg-data-uri: cli.js + checksum: 10c0/24545fa30b5a45449241bf19c25b8bc37594b63ec06401b3d563bd1c2e8a6abb7c18741f8b354e0064baa63c291be214154bf3a66f201ae71dfab3cc1a5e3191 languageName: node linkType: hard @@ -14392,12 +12885,21 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:3.0.4, minimatch@npm:^3.0.4": - version: 3.0.4 - resolution: "minimatch@npm:3.0.4" +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" dependencies: brace-expansion: "npm:^1.1.7" - checksum: 10c0/d0a2bcd93ebec08a9eef3ca83ba33c9fb6feb93932e0b4dc6aa46c5f37a9404bea7ad9ff7cafe23ce6634f1fe3b206f5315ecbb05812da6e692c21d8ecfd3dae + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 languageName: node linkType: hard @@ -14410,14 +12912,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.1.1, minimist@npm:^1.2.0, minimist@npm:^1.2.5": - version: 1.2.6 - resolution: "minimist@npm:1.2.6" - checksum: 10c0/d0b566204044481c4401abbd24cc75814e753b37268e7fe7ccc78612bf3e37bf1e45a6c43fb0b119445ea1c413c000bde013f320b7211974f2f49bcbec1d0dbf - languageName: node - linkType: hard - -"minimist@npm:^1.2.6": +"minimist@npm:^1.2.0, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 @@ -14508,14 +13003,14 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.5, mkdirp@npm:~0.5.1": - version: 0.5.5 - resolution: "mkdirp@npm:0.5.5" +"mkdirp@npm:^0.5.1, mkdirp@npm:~0.5.1": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" dependencies: - minimist: "npm:^1.2.5" + minimist: "npm:^1.2.6" bin: mkdirp: bin/cmd.js - checksum: 10c0/4469faeeba703bc46b7cdbe3097d6373747a581eb8b556ce41c8fd25a826eb3254466c6522ba823c2edb0b6f0da7beb91cf71f040bc4e361534a3e67f0994bd0 + checksum: 10c0/e2e2be789218807b58abced04e7b49851d9e46e88a2f9539242cc8a92c9b5c3a0b9bab360bd3014e02a140fc4fbc58e31176c408b493f8a2a6f4986bd7527b01 languageName: node linkType: hard @@ -14535,13 +13030,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc - languageName: node - linkType: hard - "ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -14549,22 +13037,15 @@ __metadata: languageName: node linkType: hard -"multicast-dns-service-types@npm:^1.1.0": - version: 1.1.0 - resolution: "multicast-dns-service-types@npm:1.1.0" - checksum: 10c0/25abc0e9ee509f38d874e22b03d563b16009d3976760d29bed25bf70ea992cfe30b0403743f49342279c67178a03311d31ecc1ec54bf79af2e6fe55f11af2660 - languageName: node - linkType: hard - -"multicast-dns@npm:^6.0.1": - version: 6.2.3 - resolution: "multicast-dns@npm:6.2.3" +"multicast-dns@npm:^7.2.5": + version: 7.2.5 + resolution: "multicast-dns@npm:7.2.5" dependencies: - dns-packet: "npm:^1.3.1" + dns-packet: "npm:^5.2.2" thunky: "npm:^1.0.2" bin: multicast-dns: cli.js - checksum: 10c0/972fc50869e922d80d66eeb91ad39fd2e107241e0c791fc914e76578e4f7f3dfe3bf007020dd4d7ed4d0ffd69d9aa2238a9f8bbb4d160bd6eb3f35dde0c2c513 + checksum: 10c0/5120171d4bdb1577764c5afa96e413353bff530d1b37081cb29cccc747f989eb1baf40574fe8e27060fc1aef72b59c042f72b9b208413de33bcf411343c69057 languageName: node linkType: hard @@ -14579,7 +13060,7 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.1.30, nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": +"nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" bin: @@ -14588,27 +13069,34 @@ __metadata: languageName: node linkType: hard -"natural-compare@npm:^1.4.0": +"natural-compare-lite@npm:^1.4.0": version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + resolution: "natural-compare-lite@npm:1.4.0" + checksum: 10c0/f6cef26f5044515754802c0fc475d81426f3b90fe88c20fabe08771ce1f736ce46e0397c10acb569a4dd0acb84c7f1ee70676122f95d5bfdd747af3a6c6bbaa8 languageName: node linkType: hard -"negotiator@npm:0.6.2": - version: 0.6.2 - resolution: "negotiator@npm:0.6.2" - checksum: 10c0/cda4955b5a0d6624ff3322c9a9e7bfc039b8f2b0133708208edbb28be6ebb62c45493aee098374d8d0aeda60fc37dd08cf53cd60bd5fad3efb8fc36b52e3cdce +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 languageName: node linkType: hard +"negotiator@npm:^0.6.3, negotiator@npm:~0.6.4": + version: 0.6.4 + resolution: "negotiator@npm:0.6.4" + checksum: 10c0/3e677139c7fb7628a6f36335bf11a885a62c21d5390204590a1a214a5631fcbe5ea74ef6a610b60afe84b4d975cbe0566a23f20ee17c77c73e74b80032108dea + languageName: node + linkType: hard + "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -14640,10 +13128,10 @@ __metadata: languageName: node linkType: hard -"node-forge@npm:^0.10.0": - version: 0.10.0 - resolution: "node-forge@npm:0.10.0" - checksum: 10c0/9cbf9ac8fc3889a5a46b0248f7238ee4014770bf31d22e04c0c7f04ed91c8be4584c5f534cdf6037e99f236c636c925cba960501ed2b850e077512e152760663 +"node-forge@npm:^1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 10c0/e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 languageName: node linkType: hard @@ -14674,38 +13162,10 @@ __metadata: languageName: node linkType: hard -"node-modules-regexp@npm:^1.0.0": - version: 1.0.0 - resolution: "node-modules-regexp@npm:1.0.0" - checksum: 10c0/d4a9b6425a18e9fadd38f21a7f7820b3bfda4663c7d3b9f80043e3f5f7e27a0a1e04f524077b00a15ae77148cd81319da5772900229d89541062f7e876b36763 - languageName: node - linkType: hard - -"node-releases@npm:^1.1.70": - version: 1.1.70 - resolution: "node-releases@npm:1.1.70" - checksum: 10c0/851a8a863af0eead91f47c6ea2da61bdefa55905151389585d45fb98116bff483d4ea7ab9c6893e8550d9509e179af36bb71f1430e6b009fe61e11f79cce350c - languageName: node - linkType: hard - -"node-releases@npm:^2.0.1": - version: 2.0.1 - resolution: "node-releases@npm:2.0.1" - checksum: 10c0/cb6c373458422e584b46ce18d7b5c95590fe1f31a9ec4833d3f557aff8c99a64be331cbb94ddee473f40ff17d52a907939c3f234a537da35967c58585c9ee09e - languageName: node - linkType: hard - "node-releases@npm:^2.0.18": version: 2.0.18 resolution: "node-releases@npm:2.0.18" - checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27 - languageName: node - linkType: hard - -"node-releases@npm:^2.0.6": - version: 2.0.6 - resolution: "node-releases@npm:2.0.6" - checksum: 10c0/25b08960cdf6a85075baf312f7cdcb4f9190c87abf42649ac441448a02486df3798363896bf2f0f9c6a1c7e26b3ca298c8a9295f7dd5e5eff6b6a78574a88350 + checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27 languageName: node linkType: hard @@ -14784,11 +13244,11 @@ __metadata: linkType: hard "npm-run-path@npm:^5.1.0": - version: 5.1.0 - resolution: "npm-run-path@npm:5.1.0" + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" dependencies: path-key: "npm:^4.0.0" - checksum: 10c0/ff6d77514489f47fa1c3b1311d09cd4b6d09a874cc1866260f9dea12cbaabda0436ed7f8c2ee44d147bf99a3af29307c6f63b0f83d242b0b6b0ab25dff2629e3 + checksum: 10c0/124df74820c40c2eb9a8612a254ea1d557ddfab1581c3e751f825e3e366d9f00b0d76a3c94ecd8398e7f3eee193018622677e95816e8491f0797b21e30b2deba languageName: node linkType: hard @@ -14802,18 +13262,18 @@ __metadata: linkType: hard "nth-check@npm:^2.0.1": - version: 2.0.1 - resolution: "nth-check@npm:2.0.1" + version: 2.1.1 + resolution: "nth-check@npm:2.1.1" dependencies: boolbase: "npm:^1.0.0" - checksum: 10c0/ff003b22f1119b2f3a67820b4f11c7e512a612ae4a1cf2591461904e6c443c391477b14910b4778db844ab19b95567b6d01d3337f691156c0f40649c43ca2229 + checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479 languageName: node linkType: hard "nwsapi@npm:^2.2.0": - version: 2.2.0 - resolution: "nwsapi@npm:2.2.0" - checksum: 10c0/1fd5adff9c6ab56b2e668dfb35a3f7517a5bd7a8817cd2af01037797fd1cb2fc6b22c2af1b06c1a66dd0536e36df1202a9fc21d8c37a0f24189b19d00606a091 + version: 2.2.13 + resolution: "nwsapi@npm:2.2.13" + checksum: 10c0/9dbd1071bba3570ef0b046c43c03d0584c461063f27539ba39f4185188e9d5c10cb06fd4426cdb300bb83020c3daa2c8f4fa9e8a070299539ac4007433357ac0 languageName: node linkType: hard @@ -14824,13 +13284,6 @@ __metadata: languageName: node linkType: hard -"object-hash@npm:^2.2.0": - version: 2.2.0 - resolution: "object-hash@npm:2.2.0" - checksum: 10c0/1527de843926c5442ed61f8bdddfc7dc181b6497f725b0e89fcf50a55d9c803088763ed447cac85a5aa65345f1e99c2469ba679a54349ef3c4c0aeaa396a3eb9 - languageName: node - linkType: hard - "object-hash@npm:^3.0.0": version: 3.0.0 resolution: "object-hash@npm:3.0.0" @@ -14838,119 +13291,96 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.11.0, object-inspect@npm:^1.8.0, object-inspect@npm:^1.9.0": - version: 1.12.0 - resolution: "object-inspect@npm:1.12.0" - checksum: 10c0/5ea7837f39f8da87b7cf25e81d14d21c45aae87ecbf0a5997a4d1950eacff363b85d39eab9ef6677ea36e862c708a4fe880ca2ffae1492acacdcbc963f2ee239 - languageName: node - linkType: hard - "object-inspect@npm:^1.13.1": - version: 1.13.1 - resolution: "object-inspect@npm:1.13.1" - checksum: 10c0/fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d - languageName: node - linkType: hard - -"object-is@npm:^1.0.1": - version: 1.1.4 - resolution: "object-is@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - checksum: 10c0/280962418fb154a4c41bfdabf2838308ba2fd84f76f1b296641005005caaa012267d5658d18b2b421b36bfda457679b38feb290f2f8c5d10957a65cd57ce0b17 + version: 1.13.2 + resolution: "object-inspect@npm:1.13.2" + checksum: 10c0/b97835b4c91ec37b5fd71add84f21c3f1047d1d155d00c0fcd6699516c256d4fcc6ff17a1aced873197fe447f91a3964178fd2a67a1ee2120cdaf60e81a050b4 languageName: node linkType: hard -"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": +"object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d languageName: node linkType: hard -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.1, object.assign@npm:^4.1.2": - version: 4.1.2 - resolution: "object.assign@npm:4.1.2" +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - has-symbols: "npm:^1.0.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" object-keys: "npm:^1.1.1" - checksum: 10c0/ee0e796fad8952f05644d11632f046dc4b424f9a41d3816e11a612163b12a873c800456be9acdaec6221b72590ab5267e5fe4bf4cf1c67f88b05f82f133ac829 + checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 languageName: node linkType: hard -"object.entries@npm:^1.1.5": - version: 1.1.5 - resolution: "object.entries@npm:1.1.5" +"object.entries@npm:^1.1.8": + version: 1.1.8 + resolution: "object.entries@npm:1.1.8" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - checksum: 10c0/308c07970818b0fb2b0ed92120b8fad76fb69a63c853592eac48c8437bb2385bc43f00b80d263aa2920b352c66c944018df7221099fc8e2d3bfb778566ca4ebb + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/db9ea979d2956a3bc26c262da4a4d212d36f374652cc4c13efdd069c1a519c16571c137e2893d1c46e1cb0e15c88fd6419eaf410c945f329f09835487d7e65d3 languageName: node linkType: hard -"object.fromentries@npm:^2.0.5": - version: 2.0.5 - resolution: "object.fromentries@npm:2.0.5" +"object.fromentries@npm:^2.0.8": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - checksum: 10c0/a1bedcdec0e1f15fc1f9dccecf7df18ae4678fc95deb42099b649a3660511f2d1dead3b09b8f7dcf15205b0f7ce69d74e3cc3368511abf85b021d86226aa77d4 + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b languageName: node linkType: hard "object.getownpropertydescriptors@npm:^2.1.0": - version: 2.1.1 - resolution: "object.getownpropertydescriptors@npm:2.1.1" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.1" - checksum: 10c0/4742302b6a914b2688df98a0c92dcc81a86ea68bd7e90cafb037cd48a850ee7d3e05d16e37855c39a9768e901851e9e7d971104e69f2b30d15d77688d7a852aa - languageName: node - linkType: hard - -"object.hasown@npm:^1.1.0": - version: 1.1.0 - resolution: "object.hasown@npm:1.1.0" + version: 2.1.8 + resolution: "object.getownpropertydescriptors@npm:2.1.8" dependencies: - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - checksum: 10c0/19ed5cc17695747a7750e0d42f7a3cd9f4b209435debaaad6b0bcbcde9b18207791d61bf3e4384e3c665bb32c7cad8b30d74c039276e31dfbaf0bf4442d1cc37 + array.prototype.reduce: "npm:^1.0.6" + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + gopd: "npm:^1.0.1" + safe-array-concat: "npm:^1.1.2" + checksum: 10c0/553e9562fd86637c9c169df23a56f1d810d8c9b580a6d4be11552c009f32469310c9347f3d10325abf0cd9cfe4afc521a1e903fbd24148ae7ec860e1e7c75cf3 languageName: node linkType: hard -"object.values@npm:^1.1.0": - version: 1.1.2 - resolution: "object.values@npm:1.1.2" +"object.groupby@npm:^1.0.3": + version: 1.0.3 + resolution: "object.groupby@npm:1.0.3" dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.1" - has: "npm:^1.0.3" - checksum: 10c0/5d4ba5574a3101cbe9d760bfad48cff666c344ab1de316e7a3c8719f8f80e2e185227fd28dcefdd3e4f62068acceaf3ae179aa4b4868dc22b1b61cf42cb05130 + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + checksum: 10c0/60d0455c85c736fbfeda0217d1a77525956f76f7b2495edeca9e9bbf8168a45783199e77b894d30638837c654d0cc410e0e02cbfcf445bc8de71c3da1ede6a9c languageName: node linkType: hard -"object.values@npm:^1.1.5": - version: 1.1.5 - resolution: "object.values@npm:1.1.5" +"object.values@npm:^1.1.0, object.values@npm:^1.1.6, object.values@npm:^1.2.0": + version: 1.2.0 + resolution: "object.values@npm:1.2.0" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - checksum: 10c0/9c6afa9a25ce36c27c8baef2321eaa719fc2b042ef17aa462b1fa1502ed7ce7acf18b269be2e7b0d91f228839f10a28fa30ebc8cb7e47dbf6a2e4e67cad466c1 + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/15809dc40fd6c5529501324fec5ff08570b7d70fb5ebbe8e2b3901afec35cf2b3dc484d1210c6c642cd3e7e0a5e18dd1d6850115337fef46bdae14ab0cb18ac3 languageName: node linkType: hard -"objectorarray@npm:^1.0.4": - version: 1.0.4 - resolution: "objectorarray@npm:1.0.4" - checksum: 10c0/fb1a1c9ebadf21c3793a3c390d8675a049819c589585299de12239f9368758fbf08d34f15b2644942a4b3a8d6bb493560bf12faf099a2148a93f76427e200fa4 +"objectorarray@npm:^1.0.5": + version: 1.0.5 + resolution: "objectorarray@npm:1.0.5" + checksum: 10c0/3d3db66e2052df85617ac31b98f8e51a7a883ebce24123018dacf286712aa513a0a84e82b4a6bef68889d5fc39cf08e630ee78df013023fc5161e1fdf3eaaa5a languageName: node linkType: hard @@ -15024,36 +13454,48 @@ __metadata: linkType: hard "open@npm:^8.0.9, open@npm:^8.4.0": - version: 8.4.0 - resolution: "open@npm:8.4.0" + version: 8.4.2 + resolution: "open@npm:8.4.2" dependencies: define-lazy-prop: "npm:^2.0.0" is-docker: "npm:^2.1.1" is-wsl: "npm:^2.2.0" - checksum: 10c0/585596580226cbeb7262f36b5acc7eed05211dc26980020a2527f829336b8b07fd79cdc4240f4d995b5615f635e0a59ebb0261c4419fef91edd5d4604c463f18 + checksum: 10c0/bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 + languageName: node + linkType: hard + +"optionator@npm:^0.8.1": + version: 0.8.3 + resolution: "optionator@npm:0.8.3" + dependencies: + deep-is: "npm:~0.1.3" + fast-levenshtein: "npm:~2.0.6" + levn: "npm:~0.3.0" + prelude-ls: "npm:~1.1.2" + type-check: "npm:~0.3.2" + word-wrap: "npm:~1.2.3" + checksum: 10c0/ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 languageName: node linkType: hard -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" dependencies: deep-is: "npm:^0.1.3" fast-levenshtein: "npm:^2.0.6" levn: "npm:^0.4.1" prelude-ls: "npm:^1.2.1" type-check: "npm:^0.4.0" - word-wrap: "npm:^1.2.3" - checksum: 10c0/8b574d50b032f34713dc09bfacdc351824f713c3c80773ead3a05ab977364de88f2f3962a6f15437747b93a5e0636928253949970daea3aaeeefbd3a525da6a4 + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 languageName: node linkType: hard -"p-limit@npm:^1.1.0": - version: 1.3.0 - resolution: "p-limit@npm:1.3.0" - dependencies: - p-try: "npm:^1.0.0" - checksum: 10c0/5c1b1d53d180b2c7501efb04b7c817448e10efe1ba46f4783f8951994d5027e4cd88f36ad79af50546682594c4ebd11702ac4b9364c47f8074890e2acad0edee +"p-defer@npm:^1.0.0": + version: 1.0.0 + resolution: "p-defer@npm:1.0.0" + checksum: 10c0/ed603c3790e74b061ac2cb07eb6e65802cf58dce0fbee646c113a7b71edb711101329ad38f99e462bd2e343a74f6e9366b496a35f1d766c187084d3109900487 languageName: node linkType: hard @@ -15075,15 +13517,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^2.0.0": - version: 2.0.0 - resolution: "p-locate@npm:2.0.0" - dependencies: - p-limit: "npm:^1.1.0" - checksum: 10c0/82da4be88fb02fd29175e66021610c881938d3cc97c813c71c1a605fac05617d57fd5d3b337494a6106c0edb2a37c860241430851411f1b265108cead34aee67 - languageName: node - linkType: hard - "p-locate@npm:^3.0.0": version: 3.0.0 resolution: "p-locate@npm:3.0.0" @@ -15121,19 +13554,12 @@ __metadata: linkType: hard "p-retry@npm:^4.5.0": - version: 4.6.1 - resolution: "p-retry@npm:4.6.1" + version: 4.6.2 + resolution: "p-retry@npm:4.6.2" dependencies: - "@types/retry": "npm:^0.12.0" + "@types/retry": "npm:0.12.0" retry: "npm:^0.13.1" - checksum: 10c0/0d2d7c29409181001d39a8088070009dc97fbe86d6a2a5d8dcb13be8a20e8f5bb056d06592050d6f45ebd088acb98abf4375b681040de2e11561cb0df886f94f - languageName: node - linkType: hard - -"p-try@npm:^1.0.0": - version: 1.0.0 - resolution: "p-try@npm:1.0.0" - checksum: 10c0/757ba31de5819502b80c447826fac8be5f16d3cb4fbf9bc8bc4971dba0682e84ac33e4b24176ca7058c69e29f64f34d8d9e9b08e873b7b7bb0aa89d620fa224a + checksum: 10c0/d58512f120f1590cfedb4c2e0c42cb3fa66f3cea8a4646632fcb834c56055bb7a6f138aa57b20cc236fb207c9d694e362e0b5c2b14d9b062f67e8925580c73b0 languageName: node linkType: hard @@ -15145,9 +13571,9 @@ __metadata: linkType: hard "package-json-from-dist@npm:^1.0.0": - version: 1.0.0 - resolution: "package-json-from-dist@npm:1.0.0" - checksum: 10c0/e3ffaf6ac1040ab6082a658230c041ad14e72fabe99076a2081bb1d5d41210f11872403fc09082daf4387fc0baa6577f96c9c0e94c90c394fd57794b66aa4033 + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b languageName: node linkType: hard @@ -15205,6 +13631,22 @@ __metadata: languageName: node linkType: hard +"parse-entities@npm:^4.0.0": + version: 4.0.1 + resolution: "parse-entities@npm:4.0.1" + dependencies: + "@types/unist": "npm:^2.0.0" + character-entities: "npm:^2.0.0" + character-entities-legacy: "npm:^3.0.0" + character-reference-invalid: "npm:^2.0.0" + decode-named-character-reference: "npm:^1.0.0" + is-alphanumerical: "npm:^2.0.0" + is-decimal: "npm:^2.0.0" + is-hexadecimal: "npm:^2.0.0" + checksum: 10c0/9dfa3b0dc43a913c2558c4bd625b1abcc2d6c6b38aa5724b141ed988471977248f7ad234eed57e1bc70b694dd15b0d710a04f66c2f7c096e35abd91962b7d926 + languageName: node + linkType: hard + "parse-json@npm:^4.0.0": version: 4.0.0 resolution: "parse-json@npm:4.0.0" @@ -15215,7 +13657,7 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^5.0.0": +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: @@ -15300,13 +13742,6 @@ __metadata: languageName: node linkType: hard -"path-parse@npm:^1.0.6": - version: 1.0.6 - resolution: "path-parse@npm:1.0.6" - checksum: 10c0/07a3f911553aec62bee46f3d205fe15b3736505f65cfef2833dd6921a1e586c1e7f6cc8e3cc61e9b8b1b51360e6b96467da08b29e6aeb82b683878a955c85610 - languageName: node - linkType: hard - "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" @@ -15374,35 +13809,14 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: 10c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.1": - version: 1.1.0 - resolution: "picocolors@npm:1.1.0" - checksum: 10c0/86946f6032148801ef09c051c6fb13b5cf942eaf147e30ea79edb91dd32d700934edebe782a1078ff859fb2b816792e97ef4dab03d7f0b804f6b01a0df35e023 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2": - version: 2.2.2 - resolution: "picomatch@npm:2.2.2" - checksum: 10c0/0fa37cfc2ceaf7cc1021ec1936841351a2fcbcfbb50540994a4531c77ac613dd78ef9d2ee93b1afc18c02642a9a51e5115c728427fc1f1df2b5d231b720569f0 - languageName: node - linkType: hard - -"picomatch@npm:^2.2.3": - version: 2.3.0 - resolution: "picomatch@npm:2.3.0" - checksum: 10c0/a65bde78212368e16afb82429a0ea033d20a836270446acb53ec6e31d939bccf1213f788bc49361f7aff47b67c1fb74d898f99964f67f26ca07a3cd815ddbcbb +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 languageName: node linkType: hard -"picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be @@ -15441,21 +13855,10 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.1": - version: 4.0.1 - resolution: "pirates@npm:4.0.1" - dependencies: - node-modules-regexp: "npm:^1.0.0" - checksum: 10c0/5713323c619b27c7ae895542a5a476cf3cda6d4f1446c3ef4d613050a476463ad73369bbbab75c316a2e8211a5200d427913c14d928e900e18a291de334c1963 - languageName: node - linkType: hard - -"pkg-dir@npm:^2.0.0": - version: 2.0.0 - resolution: "pkg-dir@npm:2.0.0" - dependencies: - find-up: "npm:^2.1.0" - checksum: 10c0/7cdc46c4921bf2c5f9a438851d16243ddde9906928116647ec7784982dd9038ea61c964fbca6f489201845742188180ecd1001b4f69781de1d1dc7d100b14089 +"pirates@npm:^4.0.1, pirates@npm:^4.0.4": + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 languageName: node linkType: hard @@ -15487,22 +13890,11 @@ __metadata: linkType: hard "polished@npm:^4.2.2": - version: 4.2.2 - resolution: "polished@npm:4.2.2" + version: 4.3.1 + resolution: "polished@npm:4.3.1" dependencies: "@babel/runtime": "npm:^7.17.8" - checksum: 10c0/1d054d1fea18ac7d921ca91504ffcf1ef0f505eda6acbfec6e205a98ebfea80b658664995deb35907dabc5f75f287dc2894812503a8aed28285bb91f25cf7400 - languageName: node - linkType: hard - -"portfinder@npm:^1.0.28": - version: 1.0.28 - resolution: "portfinder@npm:1.0.28" - dependencies: - async: "npm:^2.6.2" - debug: "npm:^3.1.1" - mkdirp: "npm:^0.5.5" - checksum: 10c0/fefd3d65a6464b498e0e9b4a4b82f29489441bb1892a3350403cfdf6e591e583d9e75bac1c6ae8ca2cdf1a942ae18890831a0a855bb1bb977678acdf9e5a560f + checksum: 10c0/45480d4c7281a134281cef092f6ecc202a868475ff66a390fee6e9261386e16f3047b4de46a2f2e1cf7fb7aa8f52d30b4ed631a1e3bcd6f303ca31161d4f07fe languageName: node linkType: hard @@ -15513,14 +13905,14 @@ __metadata: languageName: node linkType: hard -"postcss-attribute-case-insensitive@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-attribute-case-insensitive@npm:5.0.0" +"postcss-attribute-case-insensitive@npm:^5.0.2": + version: 5.0.2 + resolution: "postcss-attribute-case-insensitive@npm:5.0.2" dependencies: - postcss-selector-parser: "npm:^6.0.2" + postcss-selector-parser: "npm:^6.0.10" peerDependencies: - postcss: ^8.0.2 - checksum: 10c0/8d311ead5664bc71838e444b06ba7de0a40cf74c11ae23d93c6dccea433bb2af12395e2ed5cd1e5e2245320b18fd0f9a42979e4b57313a028339e54089086e5f + postcss: ^8.2 + checksum: 10c0/4efdca69aae9b0fa44b4960bcb3d49e37e9a79acf56534c83f925375007baad4b3560a7b0c244ee9956415a6997f84e0d4bd838281d085023afa9f8f96eeb4d2 languageName: node linkType: hard @@ -15534,187 +13926,188 @@ __metadata: languageName: node linkType: hard -"postcss-calc@npm:^8.0.0": - version: 8.0.0 - resolution: "postcss-calc@npm:8.0.0" +"postcss-calc@npm:^8.2.3": + version: 8.2.4 + resolution: "postcss-calc@npm:8.2.4" dependencies: - postcss-selector-parser: "npm:^6.0.2" - postcss-value-parser: "npm:^4.0.2" + postcss-selector-parser: "npm:^6.0.9" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.2 - checksum: 10c0/ed2fb58b2f00abf477c2b460522af6835e3af8025be928a709dc97940a87813ce9b51640fbadc1c8c7aab224a78c32947889180d736b9f397d9040219fcf5fbb + checksum: 10c0/8518a429488c3283ff1560c83a511f6f772329bc61d88875eb7c83e13a8683b7ccbdccaa9946024cf1553da3eacd2f40fcbcebf1095f7fdeb432bf86bc6ba6ba languageName: node linkType: hard -"postcss-color-functional-notation@npm:^4.1.0": +"postcss-clamp@npm:^4.1.0": version: 4.1.0 - resolution: "postcss-color-functional-notation@npm:4.1.0" + resolution: "postcss-clamp@npm:4.1.0" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.3 - bin: - postcss-color-functional-notation: dist/cli.mjs - checksum: 10c0/caf5644cf25c398a81433aa28364650ab299ff5ea92f5e6e27acab1ec10098040aba882d929e4739290b31a0e25d8f728e0898d6dd13822f73ca1fb0e5393443 + postcss: ^8.4.6 + checksum: 10c0/701261026b38a4c27b3c3711635fac96005f36d3270adb76dbdb1eebc950fc841db45283ee66068a7121565592e9d7967d5534e15b6e4dd266afcabf9eafa905 languageName: node linkType: hard -"postcss-color-hex-alpha@npm:^8.0.1": - version: 8.0.1 - resolution: "postcss-color-hex-alpha@npm:8.0.1" +"postcss-color-functional-notation@npm:^4.2.4": + version: 4.2.4 + resolution: "postcss-color-functional-notation@npm:4.2.4" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.3 - bin: - postcss-color-hex-alpha: dist/cli.mjs - checksum: 10c0/bcf15f74953dee961daf33d1bb94bc821748e4c66f97d0ccae545d04ab7dbdb90e5b161d530e151cfcb3b8c25345b135610c4eff2aee8bd55bd4f2dd15822fef + postcss: ^8.2 + checksum: 10c0/e80785d10d252512f290c9d5e9436d8ea9e986a4a3f7ccb57ca9a5c2cd7fbff2498287d907c0e887dc6f69de66f6321ba40ebb8dbb7f47dace2050786b04c55e languageName: node linkType: hard -"postcss-color-rebeccapurple@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-color-rebeccapurple@npm:7.0.1" +"postcss-color-hex-alpha@npm:^8.0.4": + version: 8.0.4 + resolution: "postcss-color-hex-alpha@npm:8.0.4" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.3 - bin: - postcss-color-rebeccapurple: dist/cli.mjs - checksum: 10c0/7fdf39c3f57b91990b151013dcc8b482dd42fe0f2c6a820a67f59d25de24bbb63ea91ab301095c79ceb69ee319ce47896685f17e61e6f6055d7b82282c20a0e6 + postcss: ^8.4 + checksum: 10c0/c18e1363e36f29b90e1d62d7da0f7adfd20948de3da46ddc468ddad142db3a782c4e153ada8d283cf011d090498976b1f2072973842dae0c3084eda33c0d1add languageName: node linkType: hard -"postcss-colormin@npm:^5.2.2": - version: 5.2.2 - resolution: "postcss-colormin@npm:5.2.2" +"postcss-color-rebeccapurple@npm:^7.1.1": + version: 7.1.1 + resolution: "postcss-color-rebeccapurple@npm:7.1.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/2164b2dc8f91788a60180fbf80368851699a78664115fc9905fe8592da9a600930e7d381656e43c45ee2c8fcd9b5d146cd90f640cea75a534e3bc4d6e8b939dd + languageName: node + linkType: hard + +"postcss-colormin@npm:^5.3.1": + version: 5.3.1 + resolution: "postcss-colormin@npm:5.3.1" dependencies: - browserslist: "npm:^4.16.6" + browserslist: "npm:^4.21.4" caniuse-api: "npm:^3.0.0" colord: "npm:^2.9.1" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/83da007fe0656e11629c4b6f5429a03e7b327edb110e8ad79f2bf73c7795a5ffae3038c885bc6593c8cc6471e85b4fe7e5e9913972c4792a3a40021e019a81b4 + checksum: 10c0/c4ca6f335dd992dc8e3df24bffc3495c4e504eba8489c81cb6836fdce3203f423cf4c0b640c4b63c586f588c59d82adb5313c3c5d1a68113896d18ed71caa462 languageName: node linkType: hard -"postcss-convert-values@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-convert-values@npm:5.0.2" +"postcss-convert-values@npm:^5.1.3": + version: 5.1.3 + resolution: "postcss-convert-values@npm:5.1.3" dependencies: - postcss-value-parser: "npm:^4.1.0" + browserslist: "npm:^4.21.4" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/0d63b4778ae9ffd0a619b54e83aa378298fad7bf814a9647e566728c3554a94cdc24c24c91a4e7be1ea96802a025bae77e99320dd906dcf953af822c54b3a5a1 + checksum: 10c0/cd10a81781a12487b2921ff84a1a068e948a1956b9539a284c202abecf4cacdd3e106eb026026b22dbf70933f4315c824c111f6b71f56c355e47b842ca9b1dec languageName: node linkType: hard -"postcss-custom-media@npm:^8.0.0": - version: 8.0.0 - resolution: "postcss-custom-media@npm:8.0.0" +"postcss-custom-media@npm:^8.0.2": + version: 8.0.2 + resolution: "postcss-custom-media@npm:8.0.2" + dependencies: + postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.1.0 - checksum: 10c0/f5bb83cc7f36206a4c87ffdeb1f43a1c0f525b342fd80dc453b45dc2e7e114aa08405591285ddad1b6345445512e351279bee859597ef06f694e358cbd0f1d09 + postcss: ^8.3 + checksum: 10c0/e60a01983499c85e614cf58ddae92d340f8421d53eea080dadfd822d8299469c34114c511498c8158c7b04eae7f1853ede936c17a22582b5434432efb7878aac languageName: node linkType: hard -"postcss-custom-properties@npm:^12.0.1": - version: 12.0.1 - resolution: "postcss-custom-properties@npm:12.0.1" +"postcss-custom-properties@npm:^12.1.10": + version: 12.1.11 + resolution: "postcss-custom-properties@npm:12.1.11" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.3 - bin: - postcss-custom-properties: dist/cli.mjs - checksum: 10c0/f19126212ee5ed8ab1a3d111fc34c2c665e34eca0ac3a2d235421038d104baa2adbbbb63987769dc58db931fa634555cc70fd2c7ad47fbb66ecc023f97e1e360 + postcss: ^8.2 + checksum: 10c0/99ad5a9f9a69590141157e447f48d9d6da74f0e83bf552cd5a4e74db7a03222f1e9e37df7ee442a7b97f5c6c824c1018667ee27ac64e0bc6ee7e67e89bc552c5 languageName: node linkType: hard -"postcss-custom-selectors@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-custom-selectors@npm:6.0.0" +"postcss-custom-selectors@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-custom-selectors@npm:6.0.3" dependencies: postcss-selector-parser: "npm:^6.0.4" peerDependencies: - postcss: ^8.1.2 - checksum: 10c0/e04319c1163012af195d3d2317c6c573cb1ef7b0163ca82ddc0f6a3bf33cdd0a99748e12545c616f7f607a762eeeb175455dd1722c2711855b3c27d1a29146ba + postcss: ^8.3 + checksum: 10c0/f1dd42b269e57382f48c2e71daf233badafd3e161b70b36140e934c87f9c035cec585ae5b124447d8673644f94adeb9348dfbb8ef5225e085d52ee179090fdbd languageName: node linkType: hard -"postcss-dir-pseudo-class@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-dir-pseudo-class@npm:6.0.1" +"postcss-dir-pseudo-class@npm:^6.0.5": + version: 6.0.5 + resolution: "postcss-dir-pseudo-class@npm:6.0.5" dependencies: - postcss-selector-parser: "npm:^6.0.7" + postcss-selector-parser: "npm:^6.0.10" peerDependencies: - postcss: ^8.3 - bin: - postcss-dir-pseudo-class: dist/cli.mjs - checksum: 10c0/cbef1df421b671190b70777104fe7d604fda8fb018eb5ef06dbaffe6b1e720efc30a6cd709e99b30cdabb5f728af837fefe5f6a1cfd25c4785431c0faa8ce1c4 + postcss: ^8.2 + checksum: 10c0/5b389c3a1e8387a7fb212fb652eb2bc6c2e10a9ebf5bc5917f5bf889779b3dadb64735566a75d16cca3791303e16fb09276b0aebd95c11ef1788120d714c2f95 languageName: node linkType: hard -"postcss-discard-comments@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-discard-comments@npm:5.0.1" +"postcss-discard-comments@npm:^5.1.2": + version: 5.1.2 + resolution: "postcss-discard-comments@npm:5.1.2" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/fe071f61e08c625e297f1ead096cea288a46d34f3533957fbbab14b6b51bebe468e588e8f508cc5c8e84c9e56a4362090311773b9ed354ff3da94349240243fa + checksum: 10c0/cb5ba81623c498e18d406138e7d27d69fc668802a1139a8de69d28e80b3fe222cda7b634940512cae78d04f0c78afcd15d92bcf80e537c6c85fa8ff9cd61d00f languageName: node linkType: hard -"postcss-discard-duplicates@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-discard-duplicates@npm:5.0.1" +"postcss-discard-duplicates@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-discard-duplicates@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/8db870a1d7b217900e15a0ea656026593da53b70ba75efcc489710fe4ad6a14773429a7ac679524e4680befbe4565b65fbb785689ec3973aed46a4bf6f31cf66 + checksum: 10c0/3d3a49536c56097c06b4f085412e0cda0854fac1c559563ccb922d9fab6305ff13058cd6fee422aa66c1d7e466add4e7672d7ae2ff551a4af6f1a8d2142d471f languageName: node linkType: hard -"postcss-discard-empty@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-discard-empty@npm:5.0.1" +"postcss-discard-empty@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-discard-empty@npm:5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/3135da9217cd20f96d49e21da49a9985e69231d8a4db61fb7971b82b6a00ce073c70979fa730a277d25eeb907c8ac567b3897a1382a0c27523904977d7734da7 + checksum: 10c0/36c8b2197af836dbd93168c72cde4edc1f10fe00e564824119da076d3764909745bb60e4ada04052322e26872d1bce6a37c56815f1c48c813a21adca1a41fbdc languageName: node linkType: hard -"postcss-discard-overridden@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-discard-overridden@npm:5.0.1" +"postcss-discard-overridden@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-discard-overridden@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/83a2f2da900cc73c6f1a8b6fe1ab73859d2707a73c3212000ce015e20b720a74f6dbc4feef000a26d8ea6d3a5930f9085d59b55746235ac40438385289421990 + checksum: 10c0/7d3fc0b0d90599606fc083327a7c24390f90270a94a0119af4b74815d518948581579281f63b9bfa62e2644edf59bc9e725dc04ea5ba213f697804f3fb4dd8dc languageName: node linkType: hard -"postcss-double-position-gradients@npm:^3.0.3": - version: 3.0.3 - resolution: "postcss-double-position-gradients@npm:3.0.3" +"postcss-double-position-gradients@npm:^3.1.2": + version: 3.1.2 + resolution: "postcss-double-position-gradients@npm:3.1.2" dependencies: + "@csstools/postcss-progressive-custom-properties": "npm:^1.1.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.3 - bin: - postcss-double-position-gradients: dist/cli.mjs - checksum: 10c0/576541aeb3045773bc0e0bb4ebe6bf05125d9b959a1dcfb28301152b0518962c04c7efed91876fa54b7705f62560eb389d6980ddbdd9376b0a42f50759240255 + postcss: ^8.2 + checksum: 10c0/4a2c93c1158773d10a7300e036a323f406e64c082a243ef20bb52d7062c675d754436e5a8b014302a387fc2c2acbee673916f09e4e82287164d13bc032130bf7 languageName: node linkType: hard -"postcss-env-function@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-env-function@npm:4.0.3" +"postcss-env-function@npm:^4.0.6": + version: 4.0.6 + resolution: "postcss-env-function@npm:4.0.6" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.3 - bin: - postcss-env-function: dist/cli.mjs - checksum: 10c0/e2279b919ad78eb4637629724d3deeb879af5c18eac846d67d8e9c4230d977c37748f26413bb1ad7349236f50b8662a279dbad86f4ea8b9dfeb9843e4b16af58 + postcss: ^8.4 + checksum: 10c0/e2dfbfd2c6731a1b482658f6410465f6fa623fc92099c825079c0322d9d68f526cf9c718fe9ac89d166936fb0ed6e14e78028b187f77a27519ac17ed75123f27 languageName: node linkType: hard @@ -15727,29 +14120,25 @@ __metadata: languageName: node linkType: hard -"postcss-focus-visible@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-focus-visible@npm:6.0.2" +"postcss-focus-visible@npm:^6.0.4": + version: 6.0.4 + resolution: "postcss-focus-visible@npm:6.0.4" dependencies: - postcss-selector-parser: "npm:^6.0.7" + postcss-selector-parser: "npm:^6.0.9" peerDependencies: - postcss: ^8.3 - bin: - postcss-focus-visible: dist/cli.mjs - checksum: 10c0/76461b6a8adff39f0e3ed1020d51f0e8295a1ac973db22ba21c502bd191f7bac6f99239950754b836dfa9dfaf8253cb55914e2c203b4f4738377af7330bee12a + postcss: ^8.4 + checksum: 10c0/acc3a2780908d2f4941b1e34ed349a55e965f6dfad066cecad8ad58b6a6ad3576bacb08c0cfa828cea00c2695c8a7b756ec97d40db9104bd9f13b8d172b72698 languageName: node linkType: hard -"postcss-focus-within@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-focus-within@npm:5.0.2" +"postcss-focus-within@npm:^5.0.4": + version: 5.0.4 + resolution: "postcss-focus-within@npm:5.0.4" dependencies: - postcss-selector-parser: "npm:^6.0.7" + postcss-selector-parser: "npm:^6.0.9" peerDependencies: - postcss: ^8.3 - bin: - postcss-focus-within: dist/cli.mjs - checksum: 10c0/15c885bf7764f641cacc1e2f1235082d685d9c41eb8d8c87b1cad711d0ae126cad04b92887803bcf59ee46bcd4a25d9a998a856909795168fe63b8d8a8a7b01c + postcss: ^8.4 + checksum: 10c0/e8dacdfcad2a24d1c26693156660f96749178564a9b6b27fba6380418a2253c72c66898cdcea15c5f627527148a30e9000edb25a07245b5b032fc61acd6174fd languageName: node linkType: hard @@ -15762,27 +14151,23 @@ __metadata: languageName: node linkType: hard -"postcss-gap-properties@npm:^3.0.1": - version: 3.0.1 - resolution: "postcss-gap-properties@npm:3.0.1" +"postcss-gap-properties@npm:^3.0.5": + version: 3.0.5 + resolution: "postcss-gap-properties@npm:3.0.5" peerDependencies: - postcss: ^8.3 - bin: - postcss-gap-properties: dist/cli.mjs - checksum: 10c0/d62a8a4fa90cb48602f3e585d5de4b6654e5304e6f14ae5661630092529799a01c1b51d84260ae953668e6143da36b22a88e8e841004dc47125273586400dc13 + postcss: ^8.2 + checksum: 10c0/402f830aa6661aa5bd01ae227c189124a5c22ba8e6a95ea0c205148a85732b147c6f5f60c2b67d8a971d0223f5579e891fa9543ea7611470d6fd84729ea0f3bb languageName: node linkType: hard -"postcss-image-set-function@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-image-set-function@npm:4.0.3" +"postcss-image-set-function@npm:^4.0.7": + version: 4.0.7 + resolution: "postcss-image-set-function@npm:4.0.7" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.3 - bin: - postcss-image-set-function: dist/cli.mjs - checksum: 10c0/20cff2658be0d4877a7d8e3c78ec538a793bc47c7eb27aa754849dcdbe2224cceda29cf4f9ad374258b48d55a1eb84d5860cff5e00a0908419afb34a7e6fd845 + postcss: ^8.2 + checksum: 10c0/ed79dcf62f295c300fce12f09eb498d7016a4ef5739474e6654e454a8627147a4908be56e5316afc2733bf118b95e59bdfedb03c67d0d43c364f76be62806598 languageName: node linkType: hard @@ -15808,16 +14193,6 @@ __metadata: languageName: node linkType: hard -"postcss-js@npm:^3.0.3": - version: 3.0.3 - resolution: "postcss-js@npm:3.0.3" - dependencies: - camelcase-css: "npm:^2.0.1" - postcss: "npm:^8.1.6" - checksum: 10c0/bb569feb35bc4029072c259f52af4bf7b79e5dc2c680e3d6c7cedbb2b8d05114186832bef169abb76d601b75f83952fe0bb8c56b7c071d8f34c6ad8a0aead614 - languageName: node - linkType: hard - "postcss-js@npm:^4.0.1": version: 4.0.1 resolution: "postcss-js@npm:4.0.1" @@ -15829,41 +14204,24 @@ __metadata: languageName: node linkType: hard -"postcss-lab-function@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-lab-function@npm:4.0.2" +"postcss-lab-function@npm:^4.2.1": + version: 4.2.1 + resolution: "postcss-lab-function@npm:4.2.1" dependencies: + "@csstools/postcss-progressive-custom-properties": "npm:^1.1.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.3 - bin: - postcss-lab-function: dist/cli.mjs - checksum: 10c0/d66923ae0604bd8356131d6ac0f8572465f883a62a0c095bcb4fd60f613c494dfe9b7218b70c2972209314b2b8487bc5280ced6dc6c1996540aedcb1c8b205af - languageName: node - linkType: hard - -"postcss-load-config@npm:^3.1.0": - version: 3.1.0 - resolution: "postcss-load-config@npm:3.1.0" - dependencies: - import-cwd: "npm:^3.0.0" - lilconfig: "npm:^2.0.3" - yaml: "npm:^1.10.2" - peerDependencies: - ts-node: ">=9.0.0" - peerDependenciesMeta: - ts-node: - optional: true - checksum: 10c0/455c2ea3697d3a05c8c69d99fa206d7430669135e1fe4f9ed25dbeda6a37e382e32a466e116039bf923d1504b5d01a7d75fc5a06404011e824f1341aa227b96c + postcss: ^8.2 + checksum: 10c0/70744444951d95a06a586634e7fa7c77fe4a42c7d15e556a6e7b9a5a60e03a067d371f6d16e8f58274a5e4ebbd2bd505a4bee0b03974d5571459d72ab9fb157c languageName: node linkType: hard "postcss-load-config@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-load-config@npm:4.0.1" + version: 4.0.2 + resolution: "postcss-load-config@npm:4.0.2" dependencies: - lilconfig: "npm:^2.0.5" - yaml: "npm:^2.1.1" + lilconfig: "npm:^3.0.0" + yaml: "npm:^2.3.4" peerDependencies: postcss: ">=8.0.9" ts-node: ">=9.0.0" @@ -15872,7 +14230,7 @@ __metadata: optional: true ts-node: optional: true - checksum: 10c0/5f568420c4d758d77d661f26914c08fe8dfb0666c7b779dc4f48d7fd880d131e8aa232a45cc1a8ba3f47f9c5fca572b661ca0103c2212979e9dc00918cff3d5f + checksum: 10c0/3d7939acb3570b0e4b4740e483d6e555a3e2de815219cb8a3c8fc03f575a6bde667443aa93369c0be390af845cb84471bf623e24af833260de3a105b78d42519 languageName: node linkType: hard @@ -15890,14 +14248,12 @@ __metadata: languageName: node linkType: hard -"postcss-logical@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-logical@npm:5.0.1" +"postcss-logical@npm:^5.0.4": + version: 5.0.4 + resolution: "postcss-logical@npm:5.0.4" peerDependencies: - postcss: ^8.3 - bin: - postcss-logical: dist/cli.mjs - checksum: 10c0/8733f7a7c3ea264b5720a403e76a9f951c585dea60c5a6c105d6386f4de4353568ddcbb8d3edfc96383fe2a2786ebc74c387fe75b5c8991781deb5e21a0b2ad5 + postcss: ^8.4 + checksum: 10c0/1a49e2123357b85d41e679a30b7450165295e945342ddbb88dbcc48ebe7b69afbe34ff69ebdd6d8adaf1293a7bcecae51152d7f44514194bde9b98221780e494 languageName: node linkType: hard @@ -15910,88 +14266,77 @@ __metadata: languageName: node linkType: hard -"postcss-merge-longhand@npm:^5.0.4": - version: 5.0.4 - resolution: "postcss-merge-longhand@npm:5.0.4" +"postcss-merge-longhand@npm:^5.1.7": + version: 5.1.7 + resolution: "postcss-merge-longhand@npm:5.1.7" dependencies: - postcss-value-parser: "npm:^4.1.0" - stylehacks: "npm:^5.0.1" + postcss-value-parser: "npm:^4.2.0" + stylehacks: "npm:^5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/12c8c521d4971e111f2b7c4ef72d1ba038bf0e9921ca5b6f4fce8aa1e7e838259b4870cc200dc8708d75551f590844ebc4c808f2d7f71e2eaba4a093d089127c + checksum: 10c0/4d9f44b03f19522cc81ae4f5b1f2a9ef2db918dbd8b3042d4f1b2461b2230b8ec1269334db6a67a863ba68f64cabd712e6e45340ddb22a3fc03cd34df69d2bf0 languageName: node linkType: hard -"postcss-merge-rules@npm:^5.0.3": - version: 5.0.3 - resolution: "postcss-merge-rules@npm:5.0.3" +"postcss-merge-rules@npm:^5.1.4": + version: 5.1.4 + resolution: "postcss-merge-rules@npm:5.1.4" dependencies: - browserslist: "npm:^4.16.6" + browserslist: "npm:^4.21.4" caniuse-api: "npm:^3.0.0" - cssnano-utils: "npm:^2.0.1" + cssnano-utils: "npm:^3.1.0" postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/c15b908f26ae9ee25ff6e486415608a65bee1602e8f42f6f7ec6589431fe427b312cf71ab1d7bdcb7647a4ac7d83a4e22d6246d842a742d7b8c3ea7c0c7919e2 + checksum: 10c0/e7686cdda052071bf98810ad381e26145c43a2286f9540f04f97ef93101604b78d478dd555db91e5f73751bb353c283ba75c2fcb16a3751ac7d93dc6a0130c41 languageName: node linkType: hard -"postcss-minify-font-values@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-minify-font-values@npm:5.0.1" +"postcss-minify-font-values@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-minify-font-values@npm:5.1.0" dependencies: - postcss-value-parser: "npm:^4.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/9fa8d8e02a162ad8bab7334900b5c8c5d48570256924490e7afbe8bb1dda5df3f1f192963022b839e2daf3ada3f475a5b9cae3675b0ac00d702edda3e079e206 + checksum: 10c0/7aa4f93a853b657f79a8b28d0e924cafce3720086d9da02ce04b8b2f8de42e18ce32c8f7f1078390fb5ec82468e2d8e771614387cea3563f05fd9fa1798e1c59 languageName: node linkType: hard -"postcss-minify-gradients@npm:^5.0.3": - version: 5.0.3 - resolution: "postcss-minify-gradients@npm:5.0.3" +"postcss-minify-gradients@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-minify-gradients@npm:5.1.1" dependencies: colord: "npm:^2.9.1" - cssnano-utils: "npm:^2.0.1" - postcss-value-parser: "npm:^4.1.0" + cssnano-utils: "npm:^3.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/66b45a4a77f23a2810f5faabbfcb13b4f4eb0029110feb0f56e64901fa2802e1f1a7d0c947935bf7db22909457cfa37a18893e817e2dfcb943e9ae2560ca4abc + checksum: 10c0/bcb2802d7c8f0f76c7cff089884844f26c24b95f35c3ec951d7dec8c212495d1873d6ba62d6225ce264570e8e0668e271f9bc79bb6f5d2429c1f8933f4e3021d languageName: node linkType: hard -"postcss-minify-params@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-minify-params@npm:5.0.2" +"postcss-minify-params@npm:^5.1.4": + version: 5.1.4 + resolution: "postcss-minify-params@npm:5.1.4" dependencies: - alphanum-sort: "npm:^1.0.2" - browserslist: "npm:^4.16.6" - cssnano-utils: "npm:^2.0.1" - postcss-value-parser: "npm:^4.1.0" + browserslist: "npm:^4.21.4" + cssnano-utils: "npm:^3.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/8ede817d780e6376b39277858fec4ef0ad0aab30394f07263ccb4452c602c6568f38c6c982ff472b6b278d1a1b7c64253785dcad1a544e3d4b7f89e843ea557f + checksum: 10c0/debce6f0f7dd9af69b4bb9e467ea1ccccff2d849b6020461a2b9741c0c137340e6076c245dc2e83880180eb2e82936280fa31dfe8608e5a2e3618f3d864314c5 languageName: node linkType: hard -"postcss-minify-selectors@npm:^5.1.0": - version: 5.1.0 - resolution: "postcss-minify-selectors@npm:5.1.0" +"postcss-minify-selectors@npm:^5.2.1": + version: 5.2.1 + resolution: "postcss-minify-selectors@npm:5.2.1" dependencies: - alphanum-sort: "npm:^1.0.2" postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/d603919100d72672bb31fcc420e5b11d39ae14a38ba6debc90daf1eeea128f2cf095e095df67eb304e341cb247b063d7fbd58bb8760919e08ab72e0bade882ec - languageName: node - linkType: hard - -"postcss-modules-extract-imports@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-extract-imports@npm:3.0.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 10c0/f8879d66d8162fb7a3fcd916d37574006c584ea509107b1cfb798a5e090175ef9470f601e46f0a305070d8ff2500e07489a5c1ac381c29a1dc1120e827ca7943 + checksum: 10c0/f3f4ec110f5f697cfc9dde3e491ff10aa07509bf33cc940aa539e4b5b643d1b9f8bb97f8bb83d05fc96f5eeb220500ebdeffbde513bd176c0671e21c2c96fab9 languageName: node linkType: hard @@ -16000,20 +14345,7 @@ __metadata: resolution: "postcss-modules-extract-imports@npm:3.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 10c0/402084bcab376083c4b1b5111b48ec92974ef86066f366f0b2d5b2ac2b647d561066705ade4db89875a13cb175b33dd6af40d16d32b2ea5eaf8bac63bd2bf219 - languageName: node - linkType: hard - -"postcss-modules-local-by-default@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-local-by-default@npm:4.0.0" - dependencies: - icss-utils: "npm:^5.0.0" - postcss-selector-parser: "npm:^6.0.2" - postcss-value-parser: "npm:^4.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 10c0/8ee9c0d9918fd838854d434731371874b25c412dde135df981cc28d37d0660496389b0f8653dbcdbb6ee81f2bec90cb5b14668f6208f6f517400ac064e234c5a + checksum: 10c0/402084bcab376083c4b1b5111b48ec92974ef86066f366f0b2d5b2ac2b647d561066705ade4db89875a13cb175b33dd6af40d16d32b2ea5eaf8bac63bd2bf219 languageName: node linkType: hard @@ -16030,17 +14362,6 @@ __metadata: languageName: node linkType: hard -"postcss-modules-scope@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-scope@npm:3.0.0" - dependencies: - postcss-selector-parser: "npm:^6.0.4" - peerDependencies: - postcss: ^8.1.0 - checksum: 10c0/60af503910363689568c2c3701cb019a61b58b3d739391145185eec211bea5d50ccb6ecbe6955b39d856088072fd50ea002e40a52b50e33b181ff5c41da0308a - languageName: node - linkType: hard - "postcss-modules-scope@npm:^3.2.0": version: 3.2.0 resolution: "postcss-modules-scope@npm:3.2.0" @@ -16063,140 +14384,125 @@ __metadata: languageName: node linkType: hard -"postcss-nested@npm:5.0.6": - version: 5.0.6 - resolution: "postcss-nested@npm:5.0.6" - dependencies: - postcss-selector-parser: "npm:^6.0.6" - peerDependencies: - postcss: ^8.2.14 - checksum: 10c0/cff4f05b06ec752a90a36b329b4c1b620352458b3d8e02e2fc7efdfb5073945242573ec42c0dd2b7c4beccba21233e5f089903c3e5e8aea2bbceca09c406fb8f - languageName: node - linkType: hard - "postcss-nested@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-nested@npm:6.0.1" + version: 6.2.0 + resolution: "postcss-nested@npm:6.2.0" dependencies: - postcss-selector-parser: "npm:^6.0.11" + postcss-selector-parser: "npm:^6.1.1" peerDependencies: postcss: ^8.2.14 - checksum: 10c0/2a50aa36d5d103c2e471954830489f4c024deed94fa066169101db55171368d5f80b32446b584029e0471feee409293d0b6b1d8ede361f6675ba097e477b3cbd + checksum: 10c0/7f9c3f2d764191a39364cbdcec350f26a312431a569c9ef17408021424726b0d67995ff5288405e3724bb7152a4c92f73c027e580ec91e798800ed3c52e2bc6e languageName: node linkType: hard -"postcss-nesting@npm:^10.0.3": - version: 10.0.3 - resolution: "postcss-nesting@npm:10.0.3" +"postcss-nesting@npm:^10.2.0": + version: 10.2.0 + resolution: "postcss-nesting@npm:10.2.0" dependencies: - postcss-selector-parser: "npm:^6.0.7" + "@csstools/selector-specificity": "npm:^2.0.0" + postcss-selector-parser: "npm:^6.0.10" peerDependencies: - postcss: ^8.3 - bin: - postcss-nesting: dist/cli.mjs - checksum: 10c0/80b501b8e22c145aeadaabcfa0dde6dfade182255e8c1a6cc7f106b517d125823281a1ed0ba581960ea8b0fee613ea33b28e22b55264d4b7ab0d0d75570db0d8 + postcss: ^8.2 + checksum: 10c0/1f44201edeedaab3af8552a7e231cf8530785245ec56e30a7f756076ffa58ec97c12b75a8761327bf278b26aa9903351b2f3324d11784f239b07dc79295e0a77 languageName: node linkType: hard -"postcss-normalize-charset@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-normalize-charset@npm:5.0.1" +"postcss-normalize-charset@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-charset@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/7ad110fd08965de4224275d819076bb076839b52a78bb3c3007b95c58b14b87988739071c3d8e590d5271833605944d36bc59482f481697d52a4f15d640a8617 + checksum: 10c0/aa481584d4db48e0dbf820f992fa235e6c41ff3d4701a62d349f33c1ad4c5c7dcdea3096db9ff2a5c9497e9bed2186d594ccdb1b42d57b30f58affba5829ad9c languageName: node linkType: hard -"postcss-normalize-display-values@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-normalize-display-values@npm:5.0.1" +"postcss-normalize-display-values@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-display-values@npm:5.1.0" dependencies: - cssnano-utils: "npm:^2.0.1" - postcss-value-parser: "npm:^4.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/1a71a55e3ef882318c00f249e75ae27c89af5602806b0bd57cb3f1271818fea16b15a7d7db2a983dfcf1e122c0fdf69253a8bdfb73863d91fd1e01c5d3052461 + checksum: 10c0/70b164fda885c097c02c98914fba4cd19b2382ff5f85f77e5315d88a1d477b4803f0f271d95a38e044e2a6c3b781c5c9bfb83222fc577199f2aeb0b8f4254e2f languageName: node linkType: hard -"postcss-normalize-positions@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-normalize-positions@npm:5.0.1" +"postcss-normalize-positions@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-positions@npm:5.1.1" dependencies: - postcss-value-parser: "npm:^4.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/2850e6287a3742e415a0a9e6abc77d26e05952efc59ab4488a52a6f61e846e2660642dcaa8b2cecf1cf93c08c4d27f8fbd5bc355de856d2d33b3176d4901257f + checksum: 10c0/910d58991fd38a7cf6ed6471e6fa4a96349690ad1a99a02e8cac46d76ba5045f2fca453088b68b05ff665afd96dc617c4674c68acaeabbe83f502e4963fb78b1 languageName: node linkType: hard -"postcss-normalize-repeat-style@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-normalize-repeat-style@npm:5.0.1" +"postcss-normalize-repeat-style@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-repeat-style@npm:5.1.1" dependencies: - cssnano-utils: "npm:^2.0.1" - postcss-value-parser: "npm:^4.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/2c08c616c7a26ef3186e0db2429dc08029869833b1bbf31931a05f4e5be0e5b066cc042fc88d4122b21c005398d86aa72aa6001952d1c673fada173ee3911a19 + checksum: 10c0/57c3817a2107ebb17e4ceee3831d230c72a3ccc7650f4d5f12aa54f6ea766777401f4f63b2615b721350b2e8c7ae0b0bbc3f1c5ad4e7fa737c9efb92cfa0cbb0 languageName: node linkType: hard -"postcss-normalize-string@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-normalize-string@npm:5.0.1" +"postcss-normalize-string@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-string@npm:5.1.0" dependencies: - postcss-value-parser: "npm:^4.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/dd94914ed80000a9b851f34ec774cc876659e8212146b46bd5b04bf3d415db098031c481e5a049de85b16dd7829727b2e05864ba548607bdb30259d15209fe07 + checksum: 10c0/a5e9979998f478d385ddff865bdd8a4870af69fa8c91c9398572a299ff39b39a6bda922a48fab0d2cddc639f30159c39baaed880ed7d13cd27cc64eaa9400b3b languageName: node linkType: hard -"postcss-normalize-timing-functions@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-normalize-timing-functions@npm:5.0.1" +"postcss-normalize-timing-functions@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-timing-functions@npm:5.1.0" dependencies: - cssnano-utils: "npm:^2.0.1" - postcss-value-parser: "npm:^4.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/5003846b364be04305a717ffb02445034364498779bd6cafb5f702921a3d376b9d6754595d3fcb7bea33349a0cf8045ebecf619a65818c1601bffcfcea313126 + checksum: 10c0/afb34d8e313004ae8cd92910bf1a6eb9885f29ae803cd9032b6dfe7b67a9ad93f800976f10e55170b2b08fe9484825e9272629971186812c2764c73843268237 languageName: node linkType: hard -"postcss-normalize-unicode@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-normalize-unicode@npm:5.0.1" +"postcss-normalize-unicode@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-unicode@npm:5.1.1" dependencies: - browserslist: "npm:^4.16.0" - postcss-value-parser: "npm:^4.1.0" + browserslist: "npm:^4.21.4" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/ca8c3fd9d4741b13634965837354f5c1470bc5ce48d1b14a7773b46f8427af2f66ce3a098b05bd70bfb4c66ee4e53bb1b0b8245726b43014a67c34416c57cc33 + checksum: 10c0/c102888d488d05c53ab10ffcd4e0efb892ef0cc2f9b0abe9c9b175a2d7a9c226981ca6806ed9e5c1b82a8190f2b3a8342a6de800f019b417130661b0787ff6d7 languageName: node linkType: hard -"postcss-normalize-url@npm:^5.0.4": - version: 5.0.4 - resolution: "postcss-normalize-url@npm:5.0.4" +"postcss-normalize-url@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-url@npm:5.1.0" dependencies: normalize-url: "npm:^6.0.1" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/59b1bdd61a660f330cfd263f9302436a421f425f332dcc93dd17743fafebbb9704e4a707665df0acfe88210241ca2d477327566e31f701ad8dd14e1478452392 + checksum: 10c0/a016cefd1ef80f74ef9dbed50593d3b533101e93aaadfc292896fddd8d6c3eb732a9fc5cb2e0d27f79c1f60f0fdfc40b045a494b514451e9610c6acf9392eb98 languageName: node linkType: hard -"postcss-normalize-whitespace@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-normalize-whitespace@npm:5.0.1" +"postcss-normalize-whitespace@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-whitespace@npm:5.1.1" dependencies: - postcss-value-parser: "npm:^4.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/faf3c458ce4279990d73f5fccc8c0eb70c4b4485c1045d1de4fe205e7f947538e4cb4d7e873862977e6a4fafbee0299fbb9cbd3bde4b9bf3df8536b73df1b19d + checksum: 10c0/d7b53dd90fe369bfb9838a40096db904a41f50dadfd04247ec07d7ab5588c3d4e70d1c7f930523bd061cb74e6683cef45c6e6c4eb57ea174ee3fc99f3de222d1 languageName: node linkType: hard @@ -16214,26 +14520,35 @@ __metadata: languageName: node linkType: hard -"postcss-ordered-values@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-ordered-values@npm:5.0.2" +"postcss-opacity-percentage@npm:^1.1.2": + version: 1.1.3 + resolution: "postcss-opacity-percentage@npm:1.1.3" + peerDependencies: + postcss: ^8.2 + checksum: 10c0/9cd9076561beeadb5c658a17e6fc657396a9497c9e0b0b6267931c6bb729052a150eccbeae33d27db533f5ac3cf806eb068eccb110b65d14a5dfea2e35d0877f + languageName: node + linkType: hard + +"postcss-ordered-values@npm:^5.1.3": + version: 5.1.3 + resolution: "postcss-ordered-values@npm:5.1.3" dependencies: - cssnano-utils: "npm:^2.0.1" - postcss-value-parser: "npm:^4.1.0" + cssnano-utils: "npm:^3.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/fa084e6003b1f2369c90e6467ca71a75eb8c1b470b6fb93a53c6d3d447553dcf87b5f10ce2898cc26cbf7a334dbb1c95566bf17f56dea5dd4471613c61140489 + checksum: 10c0/55abfbd2c7267eefed62a881ed0b5c0c98409c50a589526a3ebb9f8d879979203e523b8888fa84732bdd1ac887f721287a037002fa70c27c8d33f1bcbae9d9c6 languageName: node linkType: hard -"postcss-overflow-shorthand@npm:^3.0.1": - version: 3.0.1 - resolution: "postcss-overflow-shorthand@npm:3.0.1" +"postcss-overflow-shorthand@npm:^3.0.4": + version: 3.0.4 + resolution: "postcss-overflow-shorthand@npm:3.0.4" + dependencies: + postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.3 - bin: - postcss-overflow-shorthand: dist/cli.mjs - checksum: 10c0/8252e78257cb398bf21269d13c29e4908175414e245cd35576bac25dd28faa9edecf53a4242ff03f1250c17787e8a48d760f27a048818cb79277b6aa79f39f9f + postcss: ^8.2 + checksum: 10c0/d95d114fecceb83a2a2385bb073a16824efaa9b2c685d900af22f764c2a8c1de6c267230df870e4d7f98310e92618b86ba6344b76877d6f4d2158c019181f476 languageName: node linkType: hard @@ -16246,98 +14561,107 @@ __metadata: languageName: node linkType: hard -"postcss-place@npm:^7.0.2": - version: 7.0.2 - resolution: "postcss-place@npm:7.0.2" +"postcss-place@npm:^7.0.5": + version: 7.0.5 + resolution: "postcss-place@npm:7.0.5" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.3 - bin: - postcss-place: dist/cli.mjs - checksum: 10c0/500985874d3006c36763cdd0bebe6df40861bccbd4e82c5bed20c00309c2fe307d921f20ecc716b3ad65c90b642585dff2f386d53e99b0abbeabb0b9e0fc067c + postcss: ^8.2 + checksum: 10c0/149941027e6194f166ab5e7bbddc722c0d18e1f5e8117fe0af3689b216c70df9762052484965ab71271ae1d3a0ec0a7f361ce3b3dfd1f28e0bbfd0d554dd1a11 languageName: node linkType: hard "postcss-preset-env@npm:^7.0.1": - version: 7.0.2 - resolution: "postcss-preset-env@npm:7.0.2" - dependencies: - autoprefixer: "npm:^10.4.0" - browserslist: "npm:^4.19.1" - caniuse-lite: "npm:^1.0.30001287" - css-blank-pseudo: "npm:^3.0.0" - css-has-pseudo: "npm:^3.0.0" - css-prefers-color-scheme: "npm:^6.0.0" - cssdb: "npm:^5.0.0" - postcss-attribute-case-insensitive: "npm:^5.0.0" - postcss-color-functional-notation: "npm:^4.1.0" - postcss-color-hex-alpha: "npm:^8.0.1" - postcss-color-rebeccapurple: "npm:^7.0.1" - postcss-custom-media: "npm:^8.0.0" - postcss-custom-properties: "npm:^12.0.1" - postcss-custom-selectors: "npm:^6.0.0" - postcss-dir-pseudo-class: "npm:^6.0.1" - postcss-double-position-gradients: "npm:^3.0.3" - postcss-env-function: "npm:^4.0.3" - postcss-focus-visible: "npm:^6.0.2" - postcss-focus-within: "npm:^5.0.2" + version: 7.8.3 + resolution: "postcss-preset-env@npm:7.8.3" + dependencies: + "@csstools/postcss-cascade-layers": "npm:^1.1.1" + "@csstools/postcss-color-function": "npm:^1.1.1" + "@csstools/postcss-font-format-keywords": "npm:^1.0.1" + "@csstools/postcss-hwb-function": "npm:^1.0.2" + "@csstools/postcss-ic-unit": "npm:^1.0.1" + "@csstools/postcss-is-pseudo-class": "npm:^2.0.7" + "@csstools/postcss-nested-calc": "npm:^1.0.0" + "@csstools/postcss-normalize-display-values": "npm:^1.0.1" + "@csstools/postcss-oklab-function": "npm:^1.1.1" + "@csstools/postcss-progressive-custom-properties": "npm:^1.3.0" + "@csstools/postcss-stepped-value-functions": "npm:^1.0.1" + "@csstools/postcss-text-decoration-shorthand": "npm:^1.0.0" + "@csstools/postcss-trigonometric-functions": "npm:^1.0.2" + "@csstools/postcss-unset-value": "npm:^1.0.2" + autoprefixer: "npm:^10.4.13" + browserslist: "npm:^4.21.4" + css-blank-pseudo: "npm:^3.0.3" + css-has-pseudo: "npm:^3.0.4" + css-prefers-color-scheme: "npm:^6.0.3" + cssdb: "npm:^7.1.0" + postcss-attribute-case-insensitive: "npm:^5.0.2" + postcss-clamp: "npm:^4.1.0" + postcss-color-functional-notation: "npm:^4.2.4" + postcss-color-hex-alpha: "npm:^8.0.4" + postcss-color-rebeccapurple: "npm:^7.1.1" + postcss-custom-media: "npm:^8.0.2" + postcss-custom-properties: "npm:^12.1.10" + postcss-custom-selectors: "npm:^6.0.3" + postcss-dir-pseudo-class: "npm:^6.0.5" + postcss-double-position-gradients: "npm:^3.1.2" + postcss-env-function: "npm:^4.0.6" + postcss-focus-visible: "npm:^6.0.4" + postcss-focus-within: "npm:^5.0.4" postcss-font-variant: "npm:^5.0.0" - postcss-gap-properties: "npm:^3.0.1" - postcss-image-set-function: "npm:^4.0.3" + postcss-gap-properties: "npm:^3.0.5" + postcss-image-set-function: "npm:^4.0.7" postcss-initial: "npm:^4.0.1" - postcss-lab-function: "npm:^4.0.2" - postcss-logical: "npm:^5.0.1" + postcss-lab-function: "npm:^4.2.1" + postcss-logical: "npm:^5.0.4" postcss-media-minmax: "npm:^5.0.0" - postcss-nesting: "npm:^10.0.3" - postcss-overflow-shorthand: "npm:^3.0.1" + postcss-nesting: "npm:^10.2.0" + postcss-opacity-percentage: "npm:^1.1.2" + postcss-overflow-shorthand: "npm:^3.0.4" postcss-page-break: "npm:^3.0.4" - postcss-place: "npm:^7.0.2" - postcss-pseudo-class-any-link: "npm:^7.0.1" + postcss-place: "npm:^7.0.5" + postcss-pseudo-class-any-link: "npm:^7.1.6" postcss-replace-overflow-wrap: "npm:^4.0.0" - postcss-selector-not: "npm:^5.0.0" + postcss-selector-not: "npm:^6.0.1" + postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.3 - bin: - postcss-preset-env: dist/cli.mjs - checksum: 10c0/9fd732071afc0c0edcaa65406c3c90de5e0f2d1c96bc218a5be110702a9627b5fef5fec34235d01988ee529a8ac4c3f036c6d63e49e1b663613403bc092008cb + postcss: ^8.2 + checksum: 10c0/cb3a12b4d2dadbf4f6850eda19d975cf09d45223c4c33768cc8c1a0f8b27cd44c7bb29376d6995edeea55924481fa317d841b0d59b00beea35b06d4da6fdd802 languageName: node linkType: hard -"postcss-pseudo-class-any-link@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-pseudo-class-any-link@npm:7.0.1" +"postcss-pseudo-class-any-link@npm:^7.1.6": + version: 7.1.6 + resolution: "postcss-pseudo-class-any-link@npm:7.1.6" dependencies: - postcss-selector-parser: "npm:^6.0.7" + postcss-selector-parser: "npm:^6.0.10" peerDependencies: - postcss: ^8.3 - bin: - postcss-pseudo-class-any-link: dist/cli.mjs - checksum: 10c0/3e305962c17d73c939bc77ff01f984e9f9839e5ae84bec30b09df5ac0c81ba2f16ce567e4047432f6808d6c6e08e69d50d172cd3c26617f2b2a3afe348fcff45 + postcss: ^8.2 + checksum: 10c0/3f5cffbe4d5de7958ce220dc361ca1fb3c0985d0c44d007b2bdc7a780c412e57800a366fe9390218948cc0157697ba363ce9542e36a831c537b05b18a44dcecd languageName: node linkType: hard -"postcss-reduce-initial@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-reduce-initial@npm:5.0.2" +"postcss-reduce-initial@npm:^5.1.2": + version: 5.1.2 + resolution: "postcss-reduce-initial@npm:5.1.2" dependencies: - browserslist: "npm:^4.16.6" + browserslist: "npm:^4.21.4" caniuse-api: "npm:^3.0.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/b88babc21f69d7c04a58b2c8083be9f739f26c90dbe98faa753f3146e8129d2f42596afd71dedc03ce2ef8b74d8aa8e955045ef55b23b39939512355ff7656b8 + checksum: 10c0/ddb2ce61c8d0997184f08200eafdf32b3c67e88228fee960f5e2010c32da0c1d8ea07712585bf2b3aaa15f583066401d45db2c1131527c5116ca6794ebebd865 languageName: node linkType: hard -"postcss-reduce-transforms@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-reduce-transforms@npm:5.0.1" +"postcss-reduce-transforms@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-reduce-transforms@npm:5.1.0" dependencies: - cssnano-utils: "npm:^2.0.1" - postcss-value-parser: "npm:^4.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/b1dd11e91783f2a2f78ef844a251c00fb9c7988100d9a0963a71672552d87c3a9becf56237b5cd5f20ae51f6139f3c779c388155603a69eb270368ffd021c867 + checksum: 10c0/caefaeb78652ad8701b94e91500e38551255e4899fa298a7357519a36cbeebae088eab4535e00f17675a1230f448c4a7077045639d496da4614a46bc41df4add languageName: node linkType: hard @@ -16350,14 +14674,14 @@ __metadata: languageName: node linkType: hard -"postcss-selector-not@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-selector-not@npm:5.0.0" +"postcss-selector-not@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-selector-not@npm:6.0.1" dependencies: - balanced-match: "npm:^1.0.0" + postcss-selector-parser: "npm:^6.0.10" peerDependencies: - postcss: ^8.1.0 - checksum: 10c0/ee70e92d21f522d39082a640656b7233bd4917f21bcca0ce7e84e26ddf25ea40139c7475b663c7de19781c3a34498ab166d4968a86b2607a23c4310ad5d02acf + postcss: ^8.2 + checksum: 10c0/1984db777cf842655303f83935a4354b638093f7454964fa1146515424c3309934fdc160135b9113b69bc2361017fb3bfc9ba11efc5bfa1235f9f35ddb544f82 languageName: node linkType: hard @@ -16371,87 +14695,47 @@ __metadata: languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.11": - version: 6.0.11 - resolution: "postcss-selector-parser@npm:6.0.11" - dependencies: - cssesc: "npm:^3.0.0" - util-deprecate: "npm:^1.0.2" - checksum: 10c0/70be26abb75dec3c51be312a086e640aee4a32f18114cfbdf8feac0b6373a5494b5571370ab158174e1d692afc50c198d799ae9759afe5da1da1e629e465112c - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": - version: 6.0.4 - resolution: "postcss-selector-parser@npm:6.0.4" - dependencies: - cssesc: "npm:^3.0.0" - indexes-of: "npm:^1.0.1" - uniq: "npm:^1.0.1" - util-deprecate: "npm:^1.0.2" - checksum: 10c0/c5a4accdd8fd31b3b13cfac6ff7fbba249843d94c677f5f7619dd05a020627330b2c116950894d24137a4b8906279df608e6b0eca0c300015a9c552971533f45 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.7": - version: 6.0.7 - resolution: "postcss-selector-parser@npm:6.0.7" - dependencies: - cssesc: "npm:^3.0.0" - util-deprecate: "npm:^1.0.2" - checksum: 10c0/6a604b49cbfd20af933faa4199de9d2bd89bfd0c5a6873410ad43b3530ac431acb352d7c7f8fb257a77cc327d33b24b8bf9bef5bd314939a4ae83a5c9db274c9 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.6": - version: 6.0.6 - resolution: "postcss-selector-parser@npm:6.0.6" +"postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9, postcss-selector-parser@npm:^6.1.1": + version: 6.1.2 + resolution: "postcss-selector-parser@npm:6.1.2" dependencies: cssesc: "npm:^3.0.0" util-deprecate: "npm:^1.0.2" - checksum: 10c0/57b8cee8f9130fb6b3783251e59e1ea782098367d7ea748b69d75fa9be0f0934134c2e426808ec11e3d3489819a407ef0e0036097f255ada41dc1cebd90ec8b0 + checksum: 10c0/523196a6bd8cf660bdf537ad95abd79e546d54180f9afb165a4ab3e651ac705d0f8b8ce6b3164fb9e3279ce482c5f751a69eb2d3a1e8eb0fd5e82294fb3ef13e languageName: node linkType: hard -"postcss-svgo@npm:^5.0.3": - version: 5.0.3 - resolution: "postcss-svgo@npm:5.0.3" +"postcss-svgo@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-svgo@npm:5.1.0" dependencies: - postcss-value-parser: "npm:^4.1.0" + postcss-value-parser: "npm:^4.2.0" svgo: "npm:^2.7.0" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/8f9fe0fe5480d7a88e2bb2a0c1891e7fc51f6e3ac7d930f0b5272af214483edd3f058ad70c1dc94cfad19a132feb614d5444e70fed3e73cc781717574310869d + checksum: 10c0/309634a587e38fef244648bc9cd1817e12144868d24f1173d87b1edc14a4a7fca614962b2cb9d93f4801e11bd8d676083986ad40ebab4438cb84731ce1571994 languageName: node linkType: hard -"postcss-unique-selectors@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-unique-selectors@npm:5.0.2" +"postcss-unique-selectors@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-unique-selectors@npm:5.1.1" dependencies: - alphanum-sort: "npm:^1.0.2" postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/e955fae38233219893b48e0d4e1f4e5cef6166620a7a843c086e34b90569f14e354098cba92e4c6ddd924c61474343ee29073e6c4887783d55d83ba3f389f3e8 + checksum: 10c0/484f6409346d6244c134c5cdcd62f4f2751b269742f95222f13d8bac5fb224471ffe04e28a354670cbe0bdc2707778ead034fc1b801b473ffcbea5436807de30 languageName: node linkType: hard -"postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.2.0": +"postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 languageName: node linkType: hard -"postcss-value-parser@npm:^4.0.2, postcss-value-parser@npm:^4.1.0": - version: 4.1.0 - resolution: "postcss-value-parser@npm:4.1.0" - checksum: 10c0/55b30eaa103765a7cc0468d2a41da6e200f992f2634c63eb89a97dd9b722732365e30dba007c2c040a8cb0c94ba8b70b0c97bcd1de62318ebae72bb5de9537e0 - languageName: node - linkType: hard - -"postcss@npm:5 - 7": +"postcss@npm:^7.0.35": version: 7.0.39 resolution: "postcss@npm:7.0.39" dependencies: @@ -16461,47 +14745,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^7.0.35": - version: 7.0.35 - resolution: "postcss@npm:7.0.35" - dependencies: - chalk: "npm:^2.4.2" - source-map: "npm:^0.6.1" - supports-color: "npm:^6.1.0" - checksum: 10c0/cc989bc097942ca1e914dc6b02e1cf9b5bed445f5fedb8f8e2313fcd73ef612db617c973ef6e90417816b43ee1324bf17345d4d5a7a55f9b9984cba5184fe23b - languageName: node - linkType: hard - -"postcss@npm:^8.1.6, postcss@npm:^8.2.15, postcss@npm:^8.3.5, postcss@npm:^8.4.4": - version: 8.4.5 - resolution: "postcss@npm:8.4.5" - dependencies: - nanoid: "npm:^3.1.30" - picocolors: "npm:^1.0.0" - source-map-js: "npm:^1.0.1" - checksum: 10c0/e019240473575fc39d6ec38bfa748250c302dacdf3b1660df5f736c6d0279d067e0a4dd6aae2bf0999a0a687fe77ef7a887d550fdf91eeccf9e67dda969ea716 - languageName: node - linkType: hard - -"postcss@npm:^8.4.23": - version: 8.4.23 - resolution: "postcss@npm:8.4.23" - dependencies: - nanoid: "npm:^3.3.6" - picocolors: "npm:^1.0.0" - source-map-js: "npm:^1.0.2" - checksum: 10c0/35c2e26496be286a63706a0b8240fc4d2075a746466df530989208f60ea33cbc80c89420221cffb7d4fdd605afc385993f5f60302447e3047a7c0a8756b6471d - languageName: node - linkType: hard - -"postcss@npm:^8.4.33": - version: 8.4.45 - resolution: "postcss@npm:8.4.45" +"postcss@npm:^8.3.5, postcss@npm:^8.4.23, postcss@npm:^8.4.33, postcss@npm:^8.4.4": + version: 8.4.47 + resolution: "postcss@npm:8.4.47" dependencies: nanoid: "npm:^3.3.7" - picocolors: "npm:^1.0.1" - source-map-js: "npm:^1.2.0" - checksum: 10c0/ad6f8b9b1157d678560373696109745ab97a947d449f8a997acac41c7f1e4c0f3ca4b092d6df1387f430f2c9a319987b1780dbdc27e35800a88cde9b606c1e8f + picocolors: "npm:^1.1.0" + source-map-js: "npm:^1.2.1" + checksum: 10c0/929f68b5081b7202709456532cee2a145c1843d391508c5a09de2517e8c4791638f71dd63b1898dba6712f8839d7a6da046c72a5e44c162e908f5911f57b5f44 languageName: node linkType: hard @@ -16511,7 +14762,7 @@ __metadata: dependencies: "@chromatic-com/storybook": "npm:2.0.1" "@craco/craco": "npm:7.1.0" - "@headlessui/react": "npm:1.7.19" + "@headlessui/react": "npm:2.1.7" "@heroicons/react": "npm:2.1.5" "@material-symbols/svg-300": "npm:0.23.0" "@popperjs/core": "npm:2.11.8" @@ -16545,6 +14796,7 @@ __metadata: copy-to-clipboard: "npm:3.3.3" crypto-browserify: "npm:3.12.0" dagre: "npm:0.8.5" + date-fns: "npm:^4.1.0" dayjs: "npm:1.11.13" deepdash: "npm:5.3.9" echarts: "npm:5.5.1" @@ -16563,6 +14815,7 @@ __metadata: prop-types: "npm:15.8.1" react: "npm:18.3.1" react-cool-img: "npm:1.2.12" + react-day-picker: "npm:^9.3.0" react-dom: "npm:18.3.1" react-hotkeys: "npm:2.0.0" react-markdown: "npm:9.0.1" @@ -16575,6 +14828,7 @@ __metadata: react-select: "npm:5.8.0" react-syntax-highlighter: "npm:15.5.0" react-table: "npm:7.8.0" + react-time-picker: "npm:^7.0.0" react-use-websocket: "npm:4.8.1" reactflow: "npm:11.11.4" remark-gfm: "npm:4.0.0" @@ -16600,6 +14854,13 @@ __metadata: languageName: node linkType: hard +"prelude-ls@npm:~1.1.2": + version: 1.1.2 + resolution: "prelude-ls@npm:1.1.2" + checksum: 10c0/7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 + languageName: node + linkType: hard + "prettier@npm:3.3.3": version: 3.3.3 resolution: "prettier@npm:3.3.3" @@ -16609,14 +14870,7 @@ __metadata: languageName: node linkType: hard -"pretty-bytes@npm:^5.3.0": - version: 5.5.0 - resolution: "pretty-bytes@npm:5.5.0" - checksum: 10c0/f9307125cfc9ab5383221761a3298a86defed5315e7b157c9540a6e4acc3595245a96a3ab337d47162d7bc902e66ea9da3edf5aed4b0431d5bd6873422963f84 - languageName: node - linkType: hard - -"pretty-bytes@npm:^5.4.1": +"pretty-bytes@npm:^5.3.0, pretty-bytes@npm:^5.4.1": version: 5.6.0 resolution: "pretty-bytes@npm:5.6.0" checksum: 10c0/f69f494dcc1adda98dbe0e4a36d301e8be8ff99bfde7a637b2ee2820e7cb583b0fc0f3a63b0e3752c01501185a5cf38602c7be60da41bdf84ef5b70e89c370f3 @@ -16633,7 +14887,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^27.0.2, pretty-format@npm:^27.4.2, pretty-format@npm:^27.5.1": +"pretty-format@npm:^27.0.2, pretty-format@npm:^27.5.1": version: 27.5.1 resolution: "pretty-format@npm:27.5.1" dependencies: @@ -16644,18 +14898,37 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.0.2": - version: 29.0.2 - resolution: "pretty-format@npm:29.0.2" +"pretty-format@npm:^28.1.3": + version: 28.1.3 + resolution: "pretty-format@npm:28.1.3" + dependencies: + "@jest/schemas": "npm:^28.1.3" + ansi-regex: "npm:^5.0.1" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/596d8b459b6fdac7dcbd70d40169191e889939c17ffbcc73eebe2a9a6f82cdbb57faffe190274e0a507d9ecdf3affadf8a9b43442a625eecfbd2813b9319660f + languageName: node + linkType: hard + +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" dependencies: - "@jest/schemas": "npm:^29.0.0" + "@jest/schemas": "npm:^29.6.3" ansi-styles: "npm:^5.0.0" react-is: "npm:^18.0.0" - checksum: 10c0/35e942285ab11cc873256817d7a542e0776d05c8eea869a6ed40c94d36dd0e28cbbc269788dc19d8e6eb12d717d74f7b423b57be86306385839786780f2e0a51 + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + languageName: node + linkType: hard + +"prismjs@npm:^1.27.0": + version: 1.29.0 + resolution: "prismjs@npm:1.29.0" + checksum: 10c0/d906c4c4d01b446db549b4f57f72d5d7e6ccaca04ecc670fb85cea4d4b1acc1283e945a9cbc3d81819084a699b382f970e02f9d1378e14af9808d366d9ed7ec6 languageName: node linkType: hard -"prismjs@npm:^1.27.0, prismjs@npm:~1.27.0": +"prismjs@npm:~1.27.0": version: 1.27.0 resolution: "prismjs@npm:1.27.0" checksum: 10c0/841cbf53e837a42df9155c5ce1be52c4a0a8967ac916b52a27d066181a3578186c634e52d06d0547fb62b65c486b99b95f826dd54966619f9721b884f486b498 @@ -16683,13 +14956,6 @@ __metadata: languageName: node linkType: hard -"progress@npm:^2.0.0": - version: 2.0.3 - resolution: "progress@npm:2.0.3" - checksum: 10c0/1697e07cb1068055dbe9fe858d242368ff5d2073639e652b75a7eb1f2a1a8d4afd404d719de23c7b48481a6aa0040686310e2dac2f53d776daa2176d3f96369c - languageName: node - linkType: hard - "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -16701,25 +14967,15 @@ __metadata: linkType: hard "promise@npm:^8.1.0": - version: 8.1.0 - resolution: "promise@npm:8.1.0" + version: 8.3.0 + resolution: "promise@npm:8.3.0" dependencies: asap: "npm:~2.0.6" - checksum: 10c0/bd6594e66b200a0c5aa18b46502e859d5abe7daeae2f9edaaf4e440628e6f960158ca0b9a12763d845ea7532e832566eee6fcceaa52b6862cc90908a51c4eca8 - languageName: node - linkType: hard - -"prompts@npm:^2.0.1": - version: 2.4.0 - resolution: "prompts@npm:2.4.0" - dependencies: - kleur: "npm:^3.0.3" - sisteransi: "npm:^1.0.5" - checksum: 10c0/9e64082a08c32bbb91e9507874034e8c21c924aabee9468699252cf16d8f6147d053494a3d67976bc59455bdf997ce82be0a7857f2a014ec3deb72dc956e1303 + checksum: 10c0/6fccae27a10bcce7442daf090279968086edd2e3f6cebe054b71816403e2526553edf510d13088a4d0f14d7dfa9b9dfb188cab72d6f942e186a4353b6a29c8bf languageName: node linkType: hard -"prompts@npm:^2.4.2": +"prompts@npm:^2.0.1, prompts@npm:^2.4.2": version: 2.4.2 resolution: "prompts@npm:2.4.2" dependencies: @@ -16729,7 +14985,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:15.8.1, prop-types@npm:^15.6.0, prop-types@npm:^15.6.1, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2": +"prop-types@npm:15.8.1, prop-types@npm:^15.6.0, prop-types@npm:^15.6.1, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -16750,9 +15006,9 @@ __metadata: linkType: hard "property-information@npm:^6.0.0": - version: 6.1.1 - resolution: "property-information@npm:6.1.1" - checksum: 10c0/5f0a9c4b1dcdcbe9c5858d3fa3c3760a43616dc2929f3e213b9c40d94bdd01581d12458f6a1acc0fbd22233fbb311c833397df8050ac8e353007e2138c66478e + version: 6.5.0 + resolution: "property-information@npm:6.5.0" + checksum: 10c0/981e0f9cc2e5acdb414a6fd48a99dd0fd3a4079e7a91ab41cf97a8534cf43e0e0bc1ffada6602a1b3d047a33db8b5fc2ef46d863507eda712d5ceedac443f0ef languageName: node linkType: hard @@ -16774,9 +15030,9 @@ __metadata: linkType: hard "psl@npm:^1.1.33": - version: 1.8.0 - resolution: "psl@npm:1.8.0" - checksum: 10c0/b5f1956f7530860e1918e7238291689fdc3cab9c2c0cdbc47cde21addcc7f62495d794692cc1e43e54728d273f78037e8e73ac43009509a1a7f823341f4039c8 + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 10c0/6a3f805fdab9442f44de4ba23880c4eba26b20c8e8e0830eff1cb31007f6825dace61d17203c58bfe36946842140c97a1ba7f67bc63ca2d88a7ee052b65d97ab languageName: node linkType: hard @@ -16794,17 +15050,17 @@ __metadata: languageName: node linkType: hard -"punycode@npm:1.3.2": - version: 1.3.2 - resolution: "punycode@npm:1.3.2" - checksum: 10c0/281fd20eaf4704f79d80cb0dc65065bf6452ee67989b3e8941aed6360a5a9a8a01d3e2ed71d0bde3cd74fb5a5dd9db4160bed5a8c20bed4b6764c24ce4c7d2d2 +"punycode@npm:^1.4.1": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: 10c0/354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 languageName: node linkType: hard "punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 10c0/83815ca9b9177f055771f31980cbec7ffaef10257d50a95ab99b4a30f0404846e85fa6887ee1bbc0aaddb7bad6d96e2fa150a016051ff0f6b92be4ad613ddca8 + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 languageName: node linkType: hard @@ -16815,7 +15071,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.13.0": +"qs@npm:6.13.0, qs@npm:^6.12.3": version: 6.13.0 resolution: "qs@npm:6.13.0" dependencies: @@ -16824,13 +15080,6 @@ __metadata: languageName: node linkType: hard -"querystring@npm:0.2.0, querystring@npm:^0.2.0": - version: 0.2.0 - resolution: "querystring@npm:0.2.0" - checksum: 10c0/2036c9424beaacd3978bac9e4ba514331cc73163bea7bf3ad7e2c7355e55501938ec195312c607753f9c6e70b1bf9dfcda38db6241bd299c034e27ac639d64ed - languageName: node - linkType: hard - "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" @@ -16838,10 +15087,10 @@ __metadata: languageName: node linkType: hard -"quick-lru@npm:^5.1.1": - version: 5.1.1 - resolution: "quick-lru@npm:5.1.1" - checksum: 10c0/a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 languageName: node linkType: hard @@ -16906,6 +15155,24 @@ __metadata: languageName: node linkType: hard +"react-clock@npm:^5.0.0": + version: 5.1.0 + resolution: "react-clock@npm:5.1.0" + dependencies: + "@wojtekmaj/date-utils": "npm:^1.5.0" + clsx: "npm:^2.0.0" + get-user-locale: "npm:^2.2.1" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/98a9e29b7e36f56cb49c6fc9f7212b5b54fe06bb5b1a1b25bc31265ed8beaa71b7e74f566cf61290cb1c503b238342d77a86684ebabe37314b12a12e0e630a10 + languageName: node + linkType: hard + "react-colorful@npm:^5.1.2": version: 5.6.1 resolution: "react-colorful@npm:5.6.1" @@ -16937,6 +15204,18 @@ __metadata: languageName: node linkType: hard +"react-day-picker@npm:^9.3.0": + version: 9.3.0 + resolution: "react-day-picker@npm:9.3.0" + dependencies: + "@date-fns/tz": "npm:^1.1.2" + date-fns: "npm:^4.1.0" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/ece3fa89f389dd653b88a7484a51dcbfe0bf73cfa86f76f1c41592d8c11c44803353d13a4dc777c7ffe3de21fc551e0373b41c7194599658032b1ac6e4725ba7 + languageName: node + linkType: hard + "react-dev-utils@npm:^12.0.1": version: 12.0.1 resolution: "react-dev-utils@npm:12.0.1" @@ -16979,8 +15258,8 @@ __metadata: linkType: hard "react-docgen@npm:^7.0.0": - version: 7.0.3 - resolution: "react-docgen@npm:7.0.3" + version: 7.1.0 + resolution: "react-docgen@npm:7.1.0" dependencies: "@babel/core": "npm:^7.18.9" "@babel/traverse": "npm:^7.18.9" @@ -16992,7 +15271,7 @@ __metadata: doctrine: "npm:^3.0.0" resolve: "npm:^1.22.1" strip-indent: "npm:^4.0.0" - checksum: 10c0/74622750e60b287d2897a6887a2bd88303fadd84540247e162e9e970430864ae7b49152de043233d873a0aa7cffa406e5cd8fc1e8e2c277b8da73198b570f16b + checksum: 10c0/59f8b26b292df0d54cf5b1fff33d9a46bf318caadb97b2dde55cbc8fb6210e03ab5b295bd97a54a6b5afa1c0fca814c9a852cca673f8f260740103c708c683da languageName: node linkType: hard @@ -17030,9 +15309,28 @@ __metadata: linkType: hard "react-fast-compare@npm:^3.0.1": - version: 3.2.0 - resolution: "react-fast-compare@npm:3.2.0" - checksum: 10c0/2a7d75ce9fb5da1e3c01f74a5cd592f3369a8cc8d44e93654bf147ab221f430238e8be70677e896f2bfcb96a1cb7a47a8d05d84633de764a9d57d27005a4bb9e + version: 3.2.2 + resolution: "react-fast-compare@npm:3.2.2" + checksum: 10c0/0bbd2f3eb41ab2ff7380daaa55105db698d965c396df73e6874831dbafec8c4b5b08ba36ff09df01526caa3c61595247e3269558c284e37646241cba2b90a367 + languageName: node + linkType: hard + +"react-fit@npm:^2.0.0": + version: 2.0.1 + resolution: "react-fit@npm:2.0.1" + dependencies: + detect-element-overflow: "npm:^1.4.0" + warning: "npm:^4.0.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/0202f4e3241bd2e967ec3728c97ab57842353ae48f218ca56d28be14737a7a759e40c3cd05700d9e328ab88e377eccb296f1e33530e6775d3acc05df97084018 languageName: node linkType: hard @@ -17078,9 +15376,9 @@ __metadata: linkType: hard "react-is@npm:^18.0.0": - version: 18.0.0 - resolution: "react-is@npm:18.0.0" - checksum: 10c0/1cffa48e45768fc49c6cfa67fdb6ccd2432bb1a5074575c1c48b425104e5ba03538a2d4496dfc6c844f34d1ab2b9304c97aab6c8a3b060d4f5587b2f128db8d4 + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 languageName: node linkType: hard @@ -17292,9 +15590,31 @@ __metadata: languageName: node linkType: hard +"react-time-picker@npm:^7.0.0": + version: 7.0.0 + resolution: "react-time-picker@npm:7.0.0" + dependencies: + "@wojtekmaj/date-utils": "npm:^1.1.3" + clsx: "npm:^2.0.0" + get-user-locale: "npm:^2.2.1" + make-event-props: "npm:^1.6.0" + react-clock: "npm:^5.0.0" + react-fit: "npm:^2.0.0" + update-input-width: "npm:^1.4.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/538a1964de1ef9021b195f856efedc207019b6da1b9bbdcb6899c876ec6b4eeb02f4f16b77677dc0edb704099ed7f204dde0821573b7a1f1f24909e02ea2aee6 + languageName: node + linkType: hard + "react-transition-group@npm:^4.3.0": - version: 4.4.2 - resolution: "react-transition-group@npm:4.4.2" + version: 4.4.5 + resolution: "react-transition-group@npm:4.4.5" dependencies: "@babel/runtime": "npm:^7.5.5" dom-helpers: "npm:^5.0.1" @@ -17303,7 +15623,7 @@ __metadata: peerDependencies: react: ">=16.6.0" react-dom: ">=16.6.0" - checksum: 10c0/afaf835854526065d246532714a3833a7c5fbcf21303e1479008ff6f1ec1ae44ecd151f74f357c60511a1e49de65cb9b81bf4d7858b9ee19e636b9a62a6daaa4 + checksum: 10c0/2ba754ba748faefa15f87c96dfa700d5525054a0141de8c75763aae6734af0740e77e11261a1e8f4ffc08fd9ab78510122e05c21c2d79066c38bb6861a886c82 languageName: node linkType: hard @@ -17363,22 +15683,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.1": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" - dependencies: - core-util-is: "npm:~1.0.0" - inherits: "npm:~2.0.3" - isarray: "npm:~1.0.0" - process-nextick-args: "npm:~2.0.0" - safe-buffer: "npm:~5.1.1" - string_decoder: "npm:~1.1.1" - util-deprecate: "npm:~1.0.1" - checksum: 10c0/1708755e6cf9daff6ff60fa5b4575636472289c5b95d38058a91f94732b8d024a940a0d4d955639195ce42c22cab16973ee8fea8deedd24b5fec3dd596465f86 - languageName: node - linkType: hard - -"readable-stream@npm:^2.3.8": +"readable-stream@npm:^2.0.1, readable-stream@npm:^2.3.8": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: @@ -17393,18 +15698,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.0.6": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: "npm:^2.0.3" - string_decoder: "npm:^1.1.1" - util-deprecate: "npm:^1.0.1" - checksum: 10c0/937bedd29ac8a68331666291922bea892fa2be1a33269e582de9f844a2002f146cf831e39cd49fe6a378d3f0c27358f259ed0e20d20f0bdc6a3f8fc21fce42dc - languageName: node - linkType: hard - -"readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": +"readable-stream@npm:^3.0.6, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -17415,15 +15709,6 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:~3.5.0": - version: 3.5.0 - resolution: "readdirp@npm:3.5.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 10c0/293de2ed981884a09e76fbf90bddc7e1a87667e57e0284ddc8c177e3151b0d179a9a56441d9f2f3654423924ec100af57ba9e507086527f98fd1d21bdd041c3e - languageName: node - linkType: hard - "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" @@ -17447,11 +15732,11 @@ __metadata: linkType: hard "recursive-readdir@npm:^2.2.2": - version: 2.2.2 - resolution: "recursive-readdir@npm:2.2.2" + version: 2.2.3 + resolution: "recursive-readdir@npm:2.2.3" dependencies: - minimatch: "npm:3.0.4" - checksum: 10c0/0137fab9e9f2a2784465a613a214f60cf76d62ce22c4237ac818c4e6d6ebb4c890d12b4547619dab843673dfa12ca4096baa32d64fdaed84793a544a02c2e1e1 + minimatch: "npm:^3.0.5" + checksum: 10c0/d0238f137b03af9cd645e1e0b40ae78b6cda13846e3ca57f626fcb58a66c79ae018a10e926b13b3a460f1285acc946a4e512ea8daa2e35df4b76a105709930d1 languageName: node linkType: hard @@ -17459,9 +15744,24 @@ __metadata: version: 3.0.0 resolution: "redent@npm:3.0.0" dependencies: - indent-string: "npm:^4.0.0" - strip-indent: "npm:^3.0.0" - checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae + indent-string: "npm:^4.0.0" + strip-indent: "npm:^3.0.0" + checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.4": + version: 1.0.6 + resolution: "reflect.getprototypeof@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.1" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.3" + which-builtin-type: "npm:^1.1.3" + checksum: 10c0/baf4ef8ee6ff341600f4720b251cf5a6cb552d6a6ab0fdc036988c451bf16f920e5feb0d46bd4f530a5cce568f1f7aca2d77447ca798920749cfc52783c39b55 languageName: node linkType: hard @@ -17476,98 +15776,93 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^8.2.0": - version: 8.2.0 - resolution: "regenerate-unicode-properties@npm:8.2.0" +"regenerate-unicode-properties@npm:^10.2.0": + version: 10.2.0 + resolution: "regenerate-unicode-properties@npm:10.2.0" dependencies: - regenerate: "npm:^1.4.0" - checksum: 10c0/c55226ab8927045794c4bf6838374cb9b02846ba4d918a13fd5d7cbff9d63e9df61e9a3f0e44cc7af3bb1298e75da3af985a9787c7264849c88cb4f6b2a70b06 + regenerate: "npm:^1.4.2" + checksum: 10c0/5510785eeaf56bbfdf4e663d6753f125c08d2a372d4107bc1b756b7bf142e2ed80c2733a8b54e68fb309ba37690e66a0362699b0e21d5c1f0255dea1b00e6460 languageName: node linkType: hard -"regenerate@npm:^1.4.0": +"regenerate@npm:^1.4.2": version: 1.4.2 resolution: "regenerate@npm:1.4.2" checksum: 10c0/f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.4": - version: 0.13.7 - resolution: "regenerator-runtime@npm:0.13.7" - checksum: 10c0/4731a13643ced51020fcb20eaf77ff7b50aa11e5e53d8bf0affccb8c2beb9ce7f881059b961be4e1df959eb396e8c2daed2ecf6e8409b235fbc234e6c63784d0 +"regenerator-runtime@npm:^0.13.9": + version: 0.13.11 + resolution: "regenerator-runtime@npm:0.13.11" + checksum: 10c0/12b069dc774001fbb0014f6a28f11c09ebfe3c0d984d88c9bced77fdb6fedbacbca434d24da9ae9371bfbf23f754869307fb51a4c98a8b8b18e5ef748677ca24 languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.9": - version: 0.13.9 - resolution: "regenerator-runtime@npm:0.13.9" - checksum: 10c0/b0f26612204f061a84064d2f3361629eae09993939112b9ffc3680bb369ecd125764d6654eace9ef11b36b44282ee52b988dda946ea52d372e7599a30eea73ee +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 languageName: node linkType: hard -"regenerator-transform@npm:^0.14.2": - version: 0.14.5 - resolution: "regenerator-transform@npm:0.14.5" +"regenerator-transform@npm:^0.15.2": + version: 0.15.2 + resolution: "regenerator-transform@npm:0.15.2" dependencies: "@babel/runtime": "npm:^7.8.4" - checksum: 10c0/d3005b61a4fca820cd5091af689e94e57d5d5d7581368bad9c1881edf6987a2a5a7f0a9e177cd23f1d8ab7eda00c749a1eb5d4c73cabb27d8711c0e83c6c29d9 + checksum: 10c0/7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 languageName: node linkType: hard "regex-parser@npm:^2.2.11": - version: 2.2.11 - resolution: "regex-parser@npm:2.2.11" - checksum: 10c0/6572acbd46b5444215a73cf164f3c6fdbd73b8a2cde6a31a97307e514d20f5cbb8609f9e4994a7744207f2d1bf9e6fca4bbc0c9854f2b3da77ae0063efdc3f98 + version: 2.3.0 + resolution: "regex-parser@npm:2.3.0" + checksum: 10c0/de31c40e9d982735fdf5934c822cc5cafbe6a0f0909d9fef52e2bd4cc2198933c89fd5e7a17697f25591fdb5df386a088296612b45f0f8e194222070fc5b5cc7 languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.2.0, regexp.prototype.flags@npm:^1.3.1": - version: 1.3.1 - resolution: "regexp.prototype.flags@npm:1.3.1" +"regexp.prototype.flags@npm:^1.5.2": + version: 1.5.3 + resolution: "regexp.prototype.flags@npm:1.5.3" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - checksum: 10c0/499745fc4634e1619c050b09afe81aa1b88e0eac589543c8c78baa2e7090df313e1e8e6033bd7206ee498c2640b05593b3dfa3c603beb6ab9773277a8b7e5206 - languageName: node - linkType: hard - -"regexpp@npm:^3.2.0": - version: 3.2.0 - resolution: "regexpp@npm:3.2.0" - checksum: 10c0/d1da82385c8754a1681416b90b9cca0e21b4a2babef159099b88f640637d789c69011d0bc94705dacab85b81133e929d027d85210e8b8b03f8035164dbc14710 + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/e1a7c7dc42cc91abf73e47a269c4b3a8f225321b7f617baa25821f6a123a91d23a73b5152f21872c566e699207e1135d075d2251cd3e84cc96d82a910adf6020 languageName: node linkType: hard -"regexpu-core@npm:^4.7.1": - version: 4.7.1 - resolution: "regexpu-core@npm:4.7.1" +"regexpu-core@npm:^6.1.1": + version: 6.1.1 + resolution: "regexpu-core@npm:6.1.1" dependencies: - regenerate: "npm:^1.4.0" - regenerate-unicode-properties: "npm:^8.2.0" - regjsgen: "npm:^0.5.1" - regjsparser: "npm:^0.6.4" - unicode-match-property-ecmascript: "npm:^1.0.4" - unicode-match-property-value-ecmascript: "npm:^1.2.0" - checksum: 10c0/0b10019aa980c0defa5b4a234e8edc86fd2b138a6d50d65cc6a537d67e033a2778b7323c3b0c5850733a9c4847d5e3869dbe8810ca81fef1644a391de295b278 + regenerate: "npm:^1.4.2" + regenerate-unicode-properties: "npm:^10.2.0" + regjsgen: "npm:^0.8.0" + regjsparser: "npm:^0.11.0" + unicode-match-property-ecmascript: "npm:^2.0.0" + unicode-match-property-value-ecmascript: "npm:^2.1.0" + checksum: 10c0/07d49697e20f9b65977535abba4858b7f5171c13f7c366be53ec1886d3d5f69f1b98cc6a6e63cf271adda077c3366a4c851c7473c28bbd69cf5a6b6b008efc3e languageName: node linkType: hard -"regjsgen@npm:^0.5.1": - version: 0.5.2 - resolution: "regjsgen@npm:0.5.2" - checksum: 10c0/66cd5a9427a6db11a18eb544ecadf6866c8eeb3bf66d57185a9788929263b42641068df014d7e4d32a5cfbf114676f9bdd3013629203f03b1538416a1f4050e3 +"regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "regjsgen@npm:0.8.0" + checksum: 10c0/44f526c4fdbf0b29286101a282189e4dbb303f4013cf3fea058668d96d113b9180d3d03d1e13f6d4cbde38b7728bf951aecd9dc199938c080093a9a6f0d7a6bd languageName: node linkType: hard -"regjsparser@npm:^0.6.4": - version: 0.6.7 - resolution: "regjsparser@npm:0.6.7" +"regjsparser@npm:^0.11.0": + version: 0.11.2 + resolution: "regjsparser@npm:0.11.2" dependencies: - jsesc: "npm:~0.5.0" + jsesc: "npm:~3.0.2" bin: regjsparser: bin/parser - checksum: 10c0/51edf9e9dd6cc0fa2996144517eb1dea976ae4184028747ce8d663140a7458488e566c80b432fdadbca57577809b7f719101f000d6329df2efeb91db10618580 + checksum: 10c0/764e762de1b26a0cf48b45728fc1b2087f9c55bd4cea858cce28e4d5544c237f3f2dd6d40e2c41b80068e9cb92cc7d731a4285bc1f27d6ebc227792c70e4af1b languageName: node linkType: hard @@ -17632,15 +15927,15 @@ __metadata: linkType: hard "remark-rehype@npm:^11.0.0": - version: 11.0.0 - resolution: "remark-rehype@npm:11.0.0" + version: 11.1.1 + resolution: "remark-rehype@npm:11.1.1" dependencies: "@types/hast": "npm:^3.0.0" "@types/mdast": "npm:^4.0.0" mdast-util-to-hast: "npm:^13.0.0" unified: "npm:^11.0.0" vfile: "npm:^6.0.0" - checksum: 10c0/d88180819f6695bc4f257cffcbe201973fc946144cc0101da589f25f3238932e384e98a8897b6060948ad2b5679eb2de5a720866b8b6f36b74e9f20e3e0b1d5d + checksum: 10c0/68f986e8ee758d415e93babda2a0d89477c15b7c200edc23b8b1d914dd6e963c5fc151a11cbbbcfa7dd237367ff3ef86e302be90f31f37a17b0748668bd8c65b languageName: node linkType: hard @@ -17734,46 +16029,13 @@ __metadata: linkType: hard "resolve.exports@npm:^1.1.0": - version: 1.1.0 - resolution: "resolve.exports@npm:1.1.0" - checksum: 10c0/7e21c22ad129b934d5cc0b6aefd07f377a92e0b9699f49ac33eac1736a85e3aeb9270c85aac47f7070b5975739623ed007aac318d6bc5f036504b2b7a407fd31 - languageName: node - linkType: hard - -"resolve@npm:^1.1.7, resolve@npm:^1.12.0": - version: 1.22.0 - resolution: "resolve@npm:1.22.0" - dependencies: - is-core-module: "npm:^2.8.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/efe07a7cd69015a95a5f4e6cc3d372354b93d67a70410ec686413b2054dfa0d5ef16ff52c057a83634debb17f278b99db6dbc60367a4475ae01dda29c6eaa6e4 - languageName: node - linkType: hard - -"resolve@npm:^1.10.0, resolve@npm:^1.14.2": - version: 1.19.0 - resolution: "resolve@npm:1.19.0" - dependencies: - is-core-module: "npm:^2.1.0" - path-parse: "npm:^1.0.6" - checksum: 10c0/1c8afdfb88c9adab0a19b6f16756d47f5917f64047bf5a38c17aa543aae5ccca2a0631671b19ce8460a7a3e65ead98ee70e046d3056ec173d3377a27487848a8 - languageName: node - linkType: hard - -"resolve@npm:^1.19.0, resolve@npm:^1.20.0": - version: 1.20.0 - resolution: "resolve@npm:1.20.0" - dependencies: - is-core-module: "npm:^2.2.0" - path-parse: "npm:^1.0.6" - checksum: 10c0/d2c99e3bfbfd1f5aa4d134fa893b0157b923d6bfdc36563cb126995982ebfd0d93d901f851e4577897580f7c87d9a62d307b811422009fd3d2a8ed0571c2eabb + version: 1.1.1 + resolution: "resolve.exports@npm:1.1.1" + checksum: 10c0/902ac0c643d03385b2719f3aed8c289e9d4b2dd42c993de946de5b882bc18b74fad07d672d29f71a63c251be107f6d0d343e2390ca224c04ba9a8b8e35d1653a languageName: node linkType: hard -"resolve@npm:^1.22.1, resolve@npm:^1.22.8": +"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.4, resolve@npm:^1.22.8": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -17786,63 +16048,20 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.22.2": - version: 1.22.2 - resolution: "resolve@npm:1.22.2" - dependencies: - is-core-module: "npm:^2.11.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/f9f424a8117d1c68371b4fbc64e6ac045115a3beacc4bd3617b751f7624b69ad40c47dc995585c7f13d4a09723a8f167847defb7d39fad70b0d43bbba05ff851 - languageName: node - linkType: hard - -"resolve@npm:^2.0.0-next.3": - version: 2.0.0-next.3 - resolution: "resolve@npm:2.0.0-next.3" - dependencies: - is-core-module: "npm:^2.2.0" - path-parse: "npm:^1.0.6" - checksum: 10c0/669f6ad21d914df8c8d414092e263c7276598ad674c32edc2763b621bf03d0481816a5173ec552b0e97dd826c522b3109e5903db0c8eff085c1e1975a1ace8d2 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.12.0#optional!builtin": - version: 1.22.0 - resolution: "resolve@patch:resolve@npm%3A1.22.0#optional!builtin::version=1.22.0&hash=c3c19d" +"resolve@npm:^2.0.0-next.5": + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" dependencies: - is-core-module: "npm:^2.8.1" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/ef8061e81f40c39070748e8e263c8767d8fcc7c34e9ee85211b29fbc2aedb1ae7cda7d735c2cdbe9367060e9f85ec11c2694e370c121c6bcbb472a7bd0b19555 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin": - version: 1.19.0 - resolution: "resolve@patch:resolve@npm%3A1.19.0#optional!builtin::version=1.19.0&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.1.0" - path-parse: "npm:^1.0.6" - checksum: 10c0/254980f60dd9fdb28b34a511e70df6e3027d9627efce86a40757eea9b87252d172829c84517554560c4541ebfe207868270c19a0f086997b41209367aa8ef74f - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin": - version: 1.20.0 - resolution: "resolve@patch:resolve@npm%3A1.20.0#optional!builtin::version=1.20.0&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.2.0" - path-parse: "npm:^1.0.6" - checksum: 10c0/b6a5345d1f015cebba11dffa6a1982b39fe9ef42ed86ed832e51bd01c10817666df6d7b11579bc88664f5d57f2a5fe073a7f46b4e72a3efe7ed0cb450ee786da + checksum: 10c0/a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": +"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -17855,26 +16074,16 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.22.2#optional!builtin": - version: 1.22.2 - resolution: "resolve@patch:resolve@npm%3A1.22.2#optional!builtin::version=1.22.2&hash=c3c19d" +"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" dependencies: - is-core-module: "npm:^2.11.0" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/dcf068c4391941734efda06b6f778c013fd349cd4340f126de17c265a7b006c67de7e80e7aa06ecd29f3922e49f5561622b9faf98531f16aa9a896d22148c661 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^2.0.0-next.3#optional!builtin": - version: 2.0.0-next.3 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.3#optional!builtin::version=2.0.0-next.3&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.2.0" - path-parse: "npm:^1.0.6" - checksum: 10c0/ecd5da8e5f3042952bd9fd46725ef850144e7c3d707d963039df677809716660ccf5efa66742fbc6796d280c23d18915384fada76869a9c554e15cf1e6df9278 + checksum: 10c0/78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 languageName: node linkType: hard @@ -17977,16 +16186,23 @@ __metadata: linkType: hard "run-parallel@npm:^1.1.9": - version: 1.1.10 - resolution: "run-parallel@npm:1.1.10" - checksum: 10c0/c42590acdcba1a6a42082c8072db354764748e852e655de220605459330ce8130386c3e943420311927c84da0c67f5d5b3c26fd280fb865c7634ae30b730a5c4 + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 languageName: node linkType: hard -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 +"safe-array-concat@npm:^1.1.2": + version: 1.1.2 + resolution: "safe-array-concat@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + has-symbols: "npm:^1.0.3" + isarray: "npm:^2.0.5" + checksum: 10c0/12f9fdb01c8585e199a347eacc3bae7b5164ae805cdc8c6707199dbad5b9e30001a50a43c4ee24dc9ea32dbb7279397850e9208a7e217f4d8b1cf5d90129dec9 languageName: node linkType: hard @@ -17997,6 +16213,24 @@ __metadata: languageName: node linkType: hard +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.1.4" + checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 + languageName: node + linkType: hard + "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -18012,8 +16246,8 @@ __metadata: linkType: hard "sass-loader@npm:^12.3.0": - version: 12.4.0 - resolution: "sass-loader@npm:12.4.0" + version: 12.6.0 + resolution: "sass-loader@npm:12.6.0" dependencies: klona: "npm:^2.0.4" neo-async: "npm:^2.6.2" @@ -18021,6 +16255,7 @@ __metadata: fibers: ">= 3.1.0" node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 sass: ^1.3.0 + sass-embedded: "*" webpack: ^5.0.0 peerDependenciesMeta: fibers: @@ -18029,7 +16264,9 @@ __metadata: optional: true sass: optional: true - checksum: 10c0/179dba7bce7f7b4e38ce6fb1a21ce50879db0951d1611ffd3c9ade45f5ec41a2ae89cb207de4a921fe6f1465d432350b81497f8f8fbe0148ef97167c8622aa0b + sass-embedded: + optional: true + checksum: 10c0/e1ef655f3898cc4c45f02b3c627f8baf998139993a9a79c524153a80814282bfe20d8d8d703b8cf1d05457c1930940b65e2156d11285ed0861f9a1016f993e53 languageName: node linkType: hard @@ -18080,29 +16317,7 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "schema-utils@npm:3.0.0" - dependencies: - "@types/json-schema": "npm:^7.0.6" - ajv: "npm:^6.12.5" - ajv-keywords: "npm:^3.5.2" - checksum: 10c0/6590ce7cf328c5313866f9f4757e4a9aeaf5b1277b66467ae92a2538ef9268cfe79dfbfcf0be0eef3ccffa0a221c91224b687eab0a40352286f70f55bde10c82 - languageName: node - linkType: hard - -"schema-utils@npm:^3.1.1": - version: 3.1.1 - resolution: "schema-utils@npm:3.1.1" - dependencies: - "@types/json-schema": "npm:^7.0.8" - ajv: "npm:^6.12.5" - ajv-keywords: "npm:^3.5.2" - checksum: 10c0/55a8da802a5f8f0ce6f68b6a139f3261cb423bd23795766da866a0f5738fc40303370fbe0c3eeba60b2a91c569ad7ce5318fea455f8fe866098c5a3a6b9050b0 - languageName: node - linkType: hard - -"schema-utils@npm:^3.2.0": +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": version: 3.3.0 resolution: "schema-utils@npm:3.3.0" dependencies: @@ -18113,15 +16328,15 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "schema-utils@npm:4.0.0" +"schema-utils@npm:^4.0.0, schema-utils@npm:^4.2.0": + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" dependencies: "@types/json-schema": "npm:^7.0.9" - ajv: "npm:^8.8.0" + ajv: "npm:^8.9.0" ajv-formats: "npm:^2.1.1" - ajv-keywords: "npm:^5.0.0" - checksum: 10c0/d76f1b0724fb74fa9da19d4f98ebe89c2703d8d28df9dc44d66ab9a9cbca869b434181a36a2bc00ec53980f27e8fabe143759bdc8754692bbf7ef614fc6e9da4 + ajv-keywords: "npm:^5.1.0" + checksum: 10c0/8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 languageName: node linkType: hard @@ -18132,16 +16347,17 @@ __metadata: languageName: node linkType: hard -"selfsigned@npm:^1.10.11": - version: 1.10.11 - resolution: "selfsigned@npm:1.10.11" +"selfsigned@npm:^2.1.1": + version: 2.4.1 + resolution: "selfsigned@npm:2.4.1" dependencies: - node-forge: "npm:^0.10.0" - checksum: 10c0/4054e22f9398efe2bde89302bbd668218d87af1042619528eb370072d6496dfa5389e6a2a2266f8b2e302effd397973432290db4cc9e9c18d44a35379d2c1538 + "@types/node-forge": "npm:^1.3.0" + node-forge: "npm:^1" + checksum: 10c0/521829ec36ea042f7e9963bf1da2ed040a815cf774422544b112ec53b7edc0bc50a0f8cc2ae7aa6cc19afa967c641fd96a15de0fc650c68651e41277d2e1df09 languageName: node linkType: hard -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.2.0, semver@npm:^5.4.1, semver@npm:^5.5.0": +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.2.0, semver@npm:^5.5.0": version: 5.7.2 resolution: "semver@npm:5.7.2" bin: @@ -18150,16 +16366,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.0.0": - version: 7.0.0 - resolution: "semver@npm:7.0.0" - bin: - semver: bin/semver.js - checksum: 10c0/7fd341680a967a0abfd66f3a7d36ba44e52ff5d3e799e9a6cdb01a68160b64ef09be82b4af05459effeecdd836f002c2462555d2821cd890dfdfe36a0d9f56a5 - languageName: node - linkType: hard - -"semver@npm:7.6.3, semver@npm:^7.6.2": +"semver@npm:7.6.3, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.2": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -18168,7 +16375,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -18177,15 +16384,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.4": - version: 7.6.2 - resolution: "semver@npm:7.6.2" - bin: - semver: bin/semver.js - checksum: 10c0/97d3441e97ace8be4b1976433d1c32658f6afaff09f143e52c593bae7eef33de19e3e369c88bd985ce1042c6f441c80c6803078d1de2a9988080b66684cbb30c - languageName: node - linkType: hard - "send@npm:0.19.0": version: 0.19.0 resolution: "send@npm:0.19.0" @@ -18216,16 +16414,7 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.0": - version: 6.0.0 - resolution: "serialize-javascript@npm:6.0.0" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 10c0/73104922ef0a919064346eea21caab99de1a019a1f5fb54a7daa7fcabc39e83b387a2a363e52a889598c3b1bcf507c4b2a7b26df76e991a310657af20eea2e7c - languageName: node - linkType: hard - -"serialize-javascript@npm:^6.0.1": +"serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": version: 6.0.2 resolution: "serialize-javascript@npm:6.0.2" dependencies: @@ -18275,6 +16464,18 @@ __metadata: languageName: node linkType: hard +"set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 + languageName: node + linkType: hard + "setprototypeof@npm:1.1.0": version: 1.1.0 resolution: "setprototypeof@npm:1.1.0" @@ -18342,25 +16543,14 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.6.1, shell-quote@npm:^1.7.3": - version: 1.8.0 - resolution: "shell-quote@npm:1.8.0" - checksum: 10c0/651a201a1af981d49326fac8c005bbe2af97bc56fcabded0b22944c08eea0ba3bccfa497168d4bcb70508ca5802fe1cb83ca89a7e121eb0701d4c8b1d6c71a5d - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: "npm:^1.0.0" - get-intrinsic: "npm:^1.0.2" - object-inspect: "npm:^1.9.0" - checksum: 10c0/054a5d23ee35054b2c4609b9fd2a0587760737782b5d765a9c7852264710cc39c6dcb56a9bbd6c12cd84071648aea3edb2359d2f6e560677eedadce511ac1da5 +"shell-quote@npm:^1.6.1, shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": + version: 1.8.1 + resolution: "shell-quote@npm:1.8.1" + checksum: 10c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a languageName: node linkType: hard -"side-channel@npm:^1.0.6": +"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": version: 1.0.6 resolution: "side-channel@npm:1.0.6" dependencies: @@ -18372,17 +16562,10 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.2": - version: 3.0.3 - resolution: "signal-exit@npm:3.0.3" - checksum: 10c0/645cf460a417158e7d7fd03fb276aa12aecc49ab61a2ea36dac1987870a454e8af476ed926c8a8713a1adfde69c5964a4ca322c87fcca2367b36e1681207cf5f - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.3": - version: 3.0.6 - resolution: "signal-exit@npm:3.0.6" - checksum: 10c0/46c4e620f57373f51707927e38b9b7408c4be2802eb213e3e7b578508548c0bc72e37c995f60c526086537f87125e90ed02d0eedcd08d6726c983fb7f2add262 +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 languageName: node linkType: hard @@ -18401,9 +16584,9 @@ __metadata: linkType: hard "size-sensor@npm:^1.0.1": - version: 1.0.1 - resolution: "size-sensor@npm:1.0.1" - checksum: 10c0/fdc80334d570ff5fee27b8415a23b4d4402aba41fd81a9f4bf6e9f932f6a68f618d7acc3ebf4a2549a09a1f1026d26cc9568c6b1f0b35d27f8e997b3866f3d8f + version: 1.0.2 + resolution: "size-sensor@npm:1.0.2" + checksum: 10c0/2cb020cd54ae7bea76a0600ba82c1a09daf51e8bec6f96355e17b4806eb24003626e3349d6cb091f821ed5fbba193f59ca59f0ea7f6dd8b75d7c20b96c465c26 languageName: node linkType: hard @@ -18448,14 +16631,14 @@ __metadata: languageName: node linkType: hard -"sockjs@npm:^0.3.21": - version: 0.3.21 - resolution: "sockjs@npm:0.3.21" +"sockjs@npm:^0.3.24": + version: 0.3.24 + resolution: "sockjs@npm:0.3.24" dependencies: faye-websocket: "npm:^0.11.3" - uuid: "npm:^3.4.0" + uuid: "npm:^8.3.2" websocket-driver: "npm:^0.7.4" - checksum: 10c0/a0ea76a465bd9544c12874c044dd4229caaff9a37cf549d547dc3594f083887961d3a2bb476ce6e2eba847aceffb1edddb703c29072ac63eae2a80bb4a4bfeaf + checksum: 10c0/aa102c7d921bf430215754511c81ea7248f2dcdf268fbdb18e4d8183493a86b8793b164c636c52f474a886f747447c962741df2373888823271efdb9d2594f33 languageName: node linkType: hard @@ -18510,28 +16693,7 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^0.6.2": - version: 0.6.2 - resolution: "source-map-js@npm:0.6.2" - checksum: 10c0/75c147e3db6fe45d0ade3e04e837aec07c4d17165e7069fa5dcc9c5c47c66c53556783d631829ef78541a00ba59e6048683e770af9cc1dcb5dabdeb32f85eaf1 - languageName: node - linkType: hard - -"source-map-js@npm:^1.0.1": - version: 1.0.1 - resolution: "source-map-js@npm:1.0.1" - checksum: 10c0/b52af61d77cf55df93d8d822c5c2c1ea7e4c56ec9141a2ccb2826908903aa002594fe11f35b3b8339aad54e199b46948bd5512fdccfa7675455d2b285f73d87c - languageName: node - linkType: hard - -"source-map-js@npm:^1.0.2": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: 10c0/32f2dfd1e9b7168f9a9715eb1b4e21905850f3b50cf02cf476e47e4eebe8e6b762b63a64357896aa29b37e24922b4282df0f492e0d2ace572b43d15525976ff8 - languageName: node - linkType: hard - -"source-map-js@npm:^1.2.0": +"source-map-js@npm:^1.0.1, source-map-js@npm:^1.2.1": version: 1.2.1 resolution: "source-map-js@npm:1.2.1" checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf @@ -18539,29 +16701,19 @@ __metadata: linkType: hard "source-map-loader@npm:^3.0.0": - version: 3.0.0 - resolution: "source-map-loader@npm:3.0.0" + version: 3.0.2 + resolution: "source-map-loader@npm:3.0.2" dependencies: abab: "npm:^2.0.5" - iconv-lite: "npm:^0.6.2" - source-map-js: "npm:^0.6.2" + iconv-lite: "npm:^0.6.3" + source-map-js: "npm:^1.0.1" peerDependencies: webpack: ^5.0.0 - checksum: 10c0/73e510dae8a323901ac8bd92fef6c111be3331cfa9f83347245c4d915ec25380e19efe37dfc7a56ad1c9803f2d71def1df9649212442ef88ba25dcaf51af0aab - languageName: node - linkType: hard - -"source-map-support@npm:^0.5.6": - version: 0.5.19 - resolution: "source-map-support@npm:0.5.19" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 10c0/a232cb02dc5c2c048460dff3ca1a4c2aa44488822028932daff99b8707c8e4f87d2535dae319d65691c905096f2c06a2517793472634efb01f8a095661b9aa93 + checksum: 10c0/ce38822d10ac0fc09f3a3f320f184d5a5c7e66a6c447e5f2c36476d901e3224a00cc7843be615212a50b8607beee565f08b526fbb0621357a1a6247f48fd09bc languageName: node linkType: hard -"source-map-support@npm:~0.5.20": +"source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -18571,13 +16723,6 @@ __metadata: languageName: node linkType: hard -"source-map-url@npm:^0.4.0": - version: 0.4.1 - resolution: "source-map-url@npm:0.4.1" - checksum: 10c0/f8af0678500d536c7f643e32094d6718a4070ab4ca2d2326532512cfbe2d5d25a45849b4b385879326f2d7523bb3b686d0360dd347a3cda09fd89a5c28d4bc58 - languageName: node - linkType: hard - "source-map@npm:0.6.1, source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" @@ -18585,21 +16730,14 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.5.0, source-map@npm:^0.5.7": +"source-map@npm:^0.5.7": version: 0.5.7 resolution: "source-map@npm:0.5.7" checksum: 10c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 languageName: node linkType: hard -"source-map@npm:^0.7.3": - version: 0.7.3 - resolution: "source-map@npm:0.7.3" - checksum: 10c0/7d2ddb51f3d2451847692a9ac7808da2b2b3bf7aef92ece33128919040a7e74d9a5edfde7a781f035c974deff876afaf83f2e30484faffffb86484e7408f5d7c - languageName: node - linkType: hard - -"source-map@npm:^0.7.4": +"source-map@npm:^0.7.3, source-map@npm:^0.7.4": version: 0.7.4 resolution: "source-map@npm:0.7.4" checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc @@ -18615,7 +16753,7 @@ __metadata: languageName: node linkType: hard -"sourcemap-codec@npm:^1.4.4": +"sourcemap-codec@npm:^1.4.8": version: 1.4.8 resolution: "sourcemap-codec@npm:1.4.8" checksum: 10c0/f099279fdaae070ff156df7414bbe39aad69cdd615454947ed3e19136bfdfcb4544952685ee73f56e17038f4578091e12b17b283ed8ac013882916594d95b9e6 @@ -18630,26 +16768,26 @@ __metadata: linkType: hard "space-separated-tokens@npm:^2.0.0": - version: 2.0.1 - resolution: "space-separated-tokens@npm:2.0.1" - checksum: 10c0/7a3c91fc643586792effda74a40eec795fb68ff82e7d83c6936668693b0caa3ad29756b1d1e5af6c87e305b5c80f00f97b98f14f40b76da5a3e12b47efdf9cee + version: 2.0.2 + resolution: "space-separated-tokens@npm:2.0.2" + checksum: 10c0/6173e1d903dca41dcab6a2deed8b4caf61bd13b6d7af8374713500570aa929ff9414ae09a0519f4f8772df993300305a395d4871f35bc4ca72b6db57e1f30af8 languageName: node linkType: hard "spdx-correct@npm:^3.0.0": - version: 3.1.1 - resolution: "spdx-correct@npm:3.1.1" + version: 3.2.0 + resolution: "spdx-correct@npm:3.2.0" dependencies: spdx-expression-parse: "npm:^3.0.0" spdx-license-ids: "npm:^3.0.0" - checksum: 10c0/25909eecc4024963a8e398399dbdd59ddb925bd7dbecd9c9cf6df0d75c29b68cd30b82123564acc51810eb02cfc4b634a2e16e88aa982433306012e318849249 + checksum: 10c0/49208f008618b9119208b0dadc9208a3a55053f4fd6a0ae8116861bd22696fc50f4142a35ebfdb389e05ccf2de8ad142573fefc9e26f670522d899f7b2fe7386 languageName: node linkType: hard "spdx-exceptions@npm:^2.1.0": - version: 2.3.0 - resolution: "spdx-exceptions@npm:2.3.0" - checksum: 10c0/83089e77d2a91cb6805a5c910a2bedb9e50799da091f532c2ba4150efdef6e53f121523d3e2dc2573a340dc0189e648b03157097f65465b3a0c06da1f18d7e8a + version: 2.5.0 + resolution: "spdx-exceptions@npm:2.5.0" + checksum: 10c0/37217b7762ee0ea0d8b7d0c29fd48b7e4dfb94096b109d6255b589c561f57da93bf4e328c0290046115961b9209a8051ad9f525e48d433082fc79f496a4ea940 languageName: node linkType: hard @@ -18664,9 +16802,9 @@ __metadata: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.7 - resolution: "spdx-license-ids@npm:3.0.7" - checksum: 10c0/b024e1aa286bf9c0097e69b6996e95e75cb1944af656666406932ad6c54baa5b8666eaf6409476d760e8e391aa43091c792a57d63213fbc5f37a63f8f4b8d811 + version: 3.0.20 + resolution: "spdx-license-ids@npm:3.0.20" + checksum: 10c0/bdff7534fad6ef59be49becda1edc3fb7f5b3d6f296a715516ab9d972b8ad59af2c34b2003e01db8970d4c673d185ff696ba74c6b61d3bf327e2b3eac22c297c languageName: node linkType: hard @@ -18728,18 +16866,27 @@ __metadata: linkType: hard "stack-utils@npm:^2.0.3": - version: 2.0.5 - resolution: "stack-utils@npm:2.0.5" + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" dependencies: escape-string-regexp: "npm:^2.0.0" - checksum: 10c0/059f828eed5b03b963e8200529c27bd92b105f2cac9dffc9edcbc739ea8fa108e4ec45d0da257d8e0f7b5ac98db5643a0787e5c25ceab1396f7123e1ee15a086 + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a languageName: node linkType: hard -"stackframe@npm:^1.1.1": - version: 1.2.0 - resolution: "stackframe@npm:1.2.0" - checksum: 10c0/b3ad9e9884eb4555e4be0c1359d700c10f2c9d01cddcd67f574bb2f99cec57b0d1b8e18ebbf68d633e904ba29830cae9b601545fb8b97724779a784f79a2586c +"stackframe@npm:^1.3.4": + version: 1.3.4 + resolution: "stackframe@npm:1.3.4" + checksum: 10c0/18410f7a1e0c5d211a4effa83bdbf24adbe8faa8c34db52e1cd3e89837518c592be60b60d8b7270ac53eeeb8b807cd11b399a41667f6c9abb41059c3ccc8a989 + languageName: node + linkType: hard + +"static-eval@npm:2.0.2": + version: 2.0.2 + resolution: "static-eval@npm:2.0.2" + dependencies: + escodegen: "npm:^1.8.1" + checksum: 10c0/9bc1114ea5ba2a6978664907c4dd3fde6f58767274f6cb4fbfb11ba3a73cb6e74dc11e89ec4a7bf1472a587c1f976fcd4ab8fe9aae1651f5e576f097745d48ff languageName: node linkType: hard @@ -18830,12 +16977,12 @@ __metadata: linkType: hard "string-length@npm:^4.0.1": - version: 4.0.1 - resolution: "string-length@npm:4.0.1" + version: 4.0.2 + resolution: "string-length@npm:4.0.2" dependencies: char-regex: "npm:^1.0.2" strip-ansi: "npm:^6.0.0" - checksum: 10c0/160c226cc2c7621f4c1d857390bb9d2d4cd46cfa6c89142248feb0aa6dd06e1877d94759a6dc00b0d3962173086c408a4f5a3ed2be9b353f58abb403290d7f6c + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c languageName: node linkType: hard @@ -18857,13 +17004,13 @@ __metadata: linkType: hard "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0": - version: 4.2.0 - resolution: "string-width@npm:4.2.0" + version: 4.2.3 + resolution: "string-width@npm:4.2.3" dependencies: emoji-regex: "npm:^8.0.0" is-fullwidth-code-point: "npm:^3.0.0" - strip-ansi: "npm:^6.0.0" - checksum: 10c0/54d6451abfdca5f147f930fe4eb1bbdf409ba115042146bb93dae309342124afcfeb776149075f60a6f8d6b2d3b68f48702fc96144b37789dd7a4752284b9648 + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b languageName: node linkType: hard @@ -18879,80 +17026,100 @@ __metadata: linkType: hard "string-width@npm:^7.0.0": - version: 7.1.0 - resolution: "string-width@npm:7.1.0" + version: 7.2.0 + resolution: "string-width@npm:7.2.0" dependencies: emoji-regex: "npm:^10.3.0" get-east-asian-width: "npm:^1.0.0" strip-ansi: "npm:^7.1.0" - checksum: 10c0/68a99fbc3bd3d8eb42886ff38dce819767dee55f606f74dfa4687a07dfd21262745d9683df0aa53bf81a5dd47c13da921a501925b974bec66a7ddd634fef0634 + checksum: 10c0/eb0430dd43f3199c7a46dcbf7a0b34539c76fe3aa62763d0b0655acdcbdf360b3f66f3d58ca25ba0205f42ea3491fa00f09426d3b7d3040e506878fc7664c9b9 languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.6": - version: 4.0.6 - resolution: "string.prototype.matchall@npm:4.0.6" +"string.prototype.includes@npm:^2.0.1": + version: 2.0.1 + resolution: "string.prototype.includes@npm:2.0.1" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - get-intrinsic: "npm:^1.1.1" - has-symbols: "npm:^1.0.2" - internal-slot: "npm:^1.0.3" - regexp.prototype.flags: "npm:^1.3.1" - side-channel: "npm:^1.0.4" - checksum: 10c0/967bf965b7f2aa565abe05773d066ae1d17e631e1e64576036c0543bd257f0f166f71ad252500061a6c3783bc047963ab3cce23c9000941f42e230c59db2c6cc + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + checksum: 10c0/25ce9c9b49128352a2618fbe8758b46f945817a58a4420f4799419e40a8d28f116e176c7590d767d5327a61e75c8f32c86171063f48e389b9fdd325f1bd04ee5 + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.11, string.prototype.matchall@npm:^4.0.6": + version: 4.0.11 + resolution: "string.prototype.matchall@npm:4.0.11" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.7" + regexp.prototype.flags: "npm:^1.5.2" + set-function-name: "npm:^2.0.2" + side-channel: "npm:^1.0.6" + checksum: 10c0/915a2562ac9ab5e01b7be6fd8baa0b2b233a0a9aa975fcb2ec13cc26f08fb9a3e85d5abdaa533c99c6fc4c5b65b914eba3d80c4aff9792a4c9fed403f28f7d9d languageName: node linkType: hard "string.prototype.padend@npm:^3.0.0": - version: 3.1.1 - resolution: "string.prototype.padend@npm:3.1.1" + version: 3.1.6 + resolution: "string.prototype.padend@npm:3.1.6" dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.1" - checksum: 10c0/d53ad756eed7ca40527ae4d92b984fd884878982a62badaee9815ad1f114732c1e49b88f324af849f005f4efc74ac8d726f295150c0ce69d6e0bb94ca8a3c446 + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/8f2c8c1f3db1efcdc210668c80c87f2cea1253d6029ff296a172b5e13edc9adebeed4942d023de8d31f9b13b69f3f5d73de7141959b1f09817fba5f527e83be1 languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.1, string.prototype.trimend@npm:^1.0.3": - version: 1.0.3 - resolution: "string.prototype.trimend@npm:1.0.3" +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" dependencies: - call-bind: "npm:^1.0.0" define-properties: "npm:^1.1.3" - checksum: 10c0/0b00ad2f3d09743957a5a12379bd76cd72a7dbae781742b08189cf1fb41669b970b8a9fe4b9727e436b5ccd0a198af9c5e95dce502ef21655d5066ac3730cfa8 + es-abstract: "npm:^1.17.5" + checksum: 10c0/94c7978566cffa1327d470fd924366438af9b04b497c43a9805e476e2e908aa37a1fd34cc0911156c17556dab62159d12c7b92b3cc304c3e1281fe4c8e668f40 languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimend@npm:1.0.4" +"string.prototype.trim@npm:^1.2.9": + version: 1.2.9 + resolution: "string.prototype.trim@npm:1.2.9" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - checksum: 10c0/9fca11ab237f31cf55736e3e987deb312dd8e1bea7515e0f62949f1494f714083089a432ad5d99ea83f690a9290f58d0ce3d3f3356f5717e4c349d7d1b642af7 + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/dcef1a0fb61d255778155006b372dff8cc6c4394bc39869117e4241f41a2c52899c0d263ffc7738a1f9e61488c490b05c0427faa15151efad721e1a9fb2663c2 languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.1, string.prototype.trimstart@npm:^1.0.3": - version: 1.0.3 - resolution: "string.prototype.trimstart@npm:1.0.3" +"string.prototype.trimend@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimend@npm:1.0.8" dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - checksum: 10c0/988773a4296a86e15dd21419778eb667c220b760767801886a79464fd200cb669e2338d5766fe16b0022828de333ecfe0e83bc68e0b84ef2b5d076672e068108 + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/0a0b54c17c070551b38e756ae271865ac6cc5f60dabf2e7e343cceae7d9b02e1a1120a824e090e79da1b041a74464e8477e2da43e2775c85392be30a6f60963c languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimstart@npm:1.0.4" +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - checksum: 10c0/4e4f836f9416c3db176587ab4e9b62f45b11489ab93c2b14e796c82a4f1c912278f31a4793cc00c2bee11002e56c964e9f131b8f78d96ffbd89822a11bd786fe + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 languageName: node linkType: hard @@ -18974,6 +17141,16 @@ __metadata: languageName: node linkType: hard +"stringify-entities@npm:^4.0.0": + version: 4.0.4 + resolution: "stringify-entities@npm:4.0.4" + dependencies: + character-entities-html4: "npm:^2.0.0" + character-entities-legacy: "npm:^3.0.0" + checksum: 10c0/537c7e656354192406bdd08157d759cd615724e9d0873602d2c9b2f6a5c0a8d0b1d73a0a08677848105c5eebac6db037b57c0b3a4ec86331117fa7319ed50448 + languageName: node + linkType: hard + "stringify-object@npm:^3.3.0": version: 3.3.0 resolution: "stringify-object@npm:3.3.0" @@ -18985,34 +17162,16 @@ __metadata: languageName: node linkType: hard -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: "npm:^5.0.1" - checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 - languageName: node - linkType: hard - -"strip-ansi@npm:^6.0.0": - version: 6.0.0 - resolution: "strip-ansi@npm:6.0.0" - dependencies: - ansi-regex: "npm:^5.0.0" - checksum: 10c0/85257c80250541cc0e65088c7dc768563bdbd1bf7120471d6d3a73cdc60e8149a50038c12a6fd4a30b674587f306ae42e2cc73ac3095daf193633daa0bd8f928 - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.0, strip-ansi@npm:^7.0.1": - version: 7.0.1 - resolution: "strip-ansi@npm:7.0.1" + resolution: "strip-ansi@npm:6.0.1" dependencies: - ansi-regex: "npm:^6.0.1" - checksum: 10c0/a94805f54caefae6cf4870ee6acfe50cff69d90a37994bf02c096042d9939ee211e1568f34b9fa5efa03c7d7fea79cb3ac8a4e517ceb848284ae300da06ca7e9 + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 languageName: node linkType: hard -"strip-ansi@npm:^7.1.0": +"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": version: 7.1.0 resolution: "strip-ansi@npm:7.1.0" dependencies: @@ -19074,7 +17233,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd @@ -19082,49 +17241,49 @@ __metadata: linkType: hard "style-loader@npm:^3.3.1": - version: 3.3.1 - resolution: "style-loader@npm:3.3.1" + version: 3.3.4 + resolution: "style-loader@npm:3.3.4" peerDependencies: webpack: ^5.0.0 - checksum: 10c0/b325f4ce5d0ee9797878d9db42a5c45ef6d757ad42de85bc550ef90c2fb78b762bbdff3214ddf1f4c8e1307fe1879fc47ea34ee48f8f56191309f8fc28f4d2b6 + checksum: 10c0/8f8027fc5c6e91400cbb60066e7db3315810f8eaa0d19b2a254936eb0bec399ba8a7043b1789da9d05ab7c3ba50faf9267765ae0bf3571e48aa34ecdc774be37 languageName: node linkType: hard -"style-to-object@npm:^0.4.0": - version: 0.4.1 - resolution: "style-to-object@npm:0.4.1" +"style-to-object@npm:^1.0.0": + version: 1.0.8 + resolution: "style-to-object@npm:1.0.8" dependencies: - inline-style-parser: "npm:0.1.1" - checksum: 10c0/bde789dab148ec01032d75ea3a7d9294aa8dac369e9ef44f9a8f504df565f806b5a2c7226e3355f09a7e5d127684c65a0b7a7ade08780e0f893299e945d1464e + inline-style-parser: "npm:0.2.4" + checksum: 10c0/daa6646b1ff18258c0ca33ed281fbe73485c8391192db1b56ce89d40c93ea64507a41e8701d0dadfe771bc2f540c46c9b295135f71584c8e5cb23d6a19be9430 languageName: node linkType: hard -"stylehacks@npm:^5.0.1": - version: 5.0.1 - resolution: "stylehacks@npm:5.0.1" +"stylehacks@npm:^5.1.1": + version: 5.1.1 + resolution: "stylehacks@npm:5.1.1" dependencies: - browserslist: "npm:^4.16.0" + browserslist: "npm:^4.21.4" postcss-selector-parser: "npm:^6.0.4" peerDependencies: postcss: ^8.2.15 - checksum: 10c0/72802bccc28334ad45375457a4c8871e6a7a706ec2ef7fb70e98fc50d0af7f46adcfa6d90cf6ccac04a89fef89b60669e69025b32434183d1b4620dd78d4f7c0 + checksum: 10c0/402c2b545eeda0e972f125779adddc88df11bcf3a89de60c92026bd98cd49c1abffcd5bfe41766398835e0a1c7e5e72bdb6905809ecbb60716cd8d3a32ea7cd3 languageName: node linkType: hard -"stylis@npm:4.0.13": - version: 4.0.13 - resolution: "stylis@npm:4.0.13" - checksum: 10c0/bd567c440b4f1acf8962b1b3aa7985c4e04d7badfe1e0f1c7ee2a60912de2718973850c524001a3d52f5fc9a0e3dcd204b8bd7e2d47d4934462e9f749fd9c7bc +"stylis@npm:4.2.0": + version: 4.2.0 + resolution: "stylis@npm:4.2.0" + checksum: 10c0/a7128ad5a8ed72652c6eba46bed4f416521bc9745a460ef5741edc725252cebf36ee45e33a8615a7057403c93df0866ab9ee955960792db210bb80abd5ac6543 languageName: node linkType: hard "sucrase@npm:^3.32.0": - version: 3.32.0 - resolution: "sucrase@npm:3.32.0" + version: 3.35.0 + resolution: "sucrase@npm:3.35.0" dependencies: "@jridgewell/gen-mapping": "npm:^0.3.2" commander: "npm:^4.0.0" - glob: "npm:7.1.6" + glob: "npm:^10.3.10" lines-and-columns: "npm:^1.1.6" mz: "npm:^2.7.0" pirates: "npm:^4.0.1" @@ -19132,7 +17291,7 @@ __metadata: bin: sucrase: bin/sucrase sucrase-node: bin/sucrase-node - checksum: 10c0/c5f2d0c49a2462da3440a14ed62caad655c27919408471141b6866b18be9b29635e8b5e9246cc476a2c3df84e94a8d5498903f0f4e765c50d95d9ff360b95f79 + checksum: 10c0/ac85f3359d2c2ecbf5febca6a24ae9bf96c931f05fde533c22a94f59c6a74895e5d5f0e871878dfd59c2697a75ebb04e4b2224ef0bfc24ca1210735c2ec191ef languageName: node linkType: hard @@ -19145,15 +17304,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^6.1.0": - version: 6.1.0 - resolution: "supports-color@npm:6.1.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 10c0/ebf2befe41b55932c6d77192b91775f1403c389440ce2dab6f72663cf32ee87a1d9dea3512131a18e45ccac91424a8873b266142828489d0206d65ee93d224b6 - languageName: node - linkType: hard - "supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -19173,12 +17323,12 @@ __metadata: linkType: hard "supports-hyperlinks@npm:^2.0.0": - version: 2.1.0 - resolution: "supports-hyperlinks@npm:2.1.0" + version: 2.3.0 + resolution: "supports-hyperlinks@npm:2.3.0" dependencies: has-flag: "npm:^4.0.0" supports-color: "npm:^7.0.0" - checksum: 10c0/1b66cc8b1111bd9f9677db47b45ea341c6f97cd785e1f7f8294e85db2dab9c5ea7fd8189acbfad132df239f2ffa7ea9390e9c5825529a334b4acb11e26078eea + checksum: 10c0/4057f0d86afb056cd799602f72d575b8fdd79001c5894bcb691176f14e870a687e7981e50bc1484980e8b688c6d5bcd4931e1609816abb5a7dc1486b7babf6a1 languageName: node linkType: hard @@ -19243,6 +17393,13 @@ __metadata: languageName: node linkType: hard +"tabbable@npm:^6.0.0": + version: 6.2.0 + resolution: "tabbable@npm:6.2.0" + checksum: 10c0/ced8b38f05f2de62cd46836d77c2646c42b8c9713f5bd265daf0e78ff5ac73d3ba48a7ca45f348bafeef29b23da7187c72250742d37627883ef89cbd7fa76898 + languageName: node + linkType: hard + "tailwindcss@npm:3.4.11": version: 3.4.11 resolution: "tailwindcss@npm:3.4.11" @@ -19277,37 +17434,35 @@ __metadata: linkType: hard "tailwindcss@npm:^3.0.2": - version: 3.0.7 - resolution: "tailwindcss@npm:3.0.7" + version: 3.4.14 + resolution: "tailwindcss@npm:3.4.14" dependencies: - arg: "npm:^5.0.1" - chalk: "npm:^4.1.2" - chokidar: "npm:^3.5.2" - color-name: "npm:^1.1.4" - cosmiconfig: "npm:^7.0.1" - detective: "npm:^5.2.0" + "@alloc/quick-lru": "npm:^5.2.0" + arg: "npm:^5.0.2" + chokidar: "npm:^3.5.3" didyoumean: "npm:^1.2.2" dlv: "npm:^1.1.3" - fast-glob: "npm:^3.2.7" + fast-glob: "npm:^3.3.0" glob-parent: "npm:^6.0.2" is-glob: "npm:^4.0.3" + jiti: "npm:^1.21.0" + lilconfig: "npm:^2.1.0" + micromatch: "npm:^4.0.5" normalize-path: "npm:^3.0.0" - object-hash: "npm:^2.2.0" - postcss-js: "npm:^3.0.3" - postcss-load-config: "npm:^3.1.0" - postcss-nested: "npm:5.0.6" - postcss-selector-parser: "npm:^6.0.7" - postcss-value-parser: "npm:^4.2.0" - quick-lru: "npm:^5.1.1" - resolve: "npm:^1.20.0" - tmp: "npm:^0.2.1" - peerDependencies: - autoprefixer: ^10.0.2 - postcss: ^8.0.9 + object-hash: "npm:^3.0.0" + picocolors: "npm:^1.0.0" + postcss: "npm:^8.4.23" + postcss-import: "npm:^15.1.0" + postcss-js: "npm:^4.0.1" + postcss-load-config: "npm:^4.0.1" + postcss-nested: "npm:^6.0.1" + postcss-selector-parser: "npm:^6.0.11" + resolve: "npm:^1.22.2" + sucrase: "npm:^3.32.0" bin: tailwind: lib/cli.js tailwindcss: lib/cli.js - checksum: 10c0/e5d0f9fa9637a01cf8e652a609c5e715cb87a8c83cc43b4f9bbbd020b993af5f4c90321202b5e1d80a34e25b5a897db6715b247b75748bb690bd56ff9598b16c + checksum: 10c0/f6c23f8a3293ce3b2511bca1e50008ac94bd8562cb09fec32fe4f8e8a4f54d9e9fc10e567b7f974abdd4b33e550564a2616d4e793c736955432f28448141ce45 languageName: node linkType: hard @@ -19387,29 +17542,7 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.2.5": - version: 5.3.0 - resolution: "terser-webpack-plugin@npm:5.3.0" - dependencies: - jest-worker: "npm:^27.4.1" - schema-utils: "npm:^3.1.1" - serialize-javascript: "npm:^6.0.0" - source-map: "npm:^0.6.1" - terser: "npm:^5.7.2" - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 10c0/22d36bae8049779a493aaad68ade02c38f18462436ce33cfe736bf58b0e662f536e53f71d33d20f8fafd32d8597d7ce2bf0322ca284fefb1f99f5076e1ab01df - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.10": +"terser-webpack-plugin@npm:^5.2.5, terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.10": version: 5.3.10 resolution: "terser-webpack-plugin@npm:5.3.10" dependencies: @@ -19431,23 +17564,9 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.0.0, terser@npm:^5.10.0, terser@npm:^5.7.2": - version: 5.26.0 - resolution: "terser@npm:5.26.0" - dependencies: - "@jridgewell/source-map": "npm:^0.3.3" - acorn: "npm:^8.8.2" - commander: "npm:^2.20.0" - source-map-support: "npm:~0.5.20" - bin: - terser: bin/terser - checksum: 10c0/3906289c6bacd75804a47a583cdafefbd76c5edb39435369755c7b1592e57586fb2f4bddf6eb37a807d6e782171dbf0aa7bbdc80fd5b77b2f2b62196cac49b62 - languageName: node - linkType: hard - -"terser@npm:^5.26.0": - version: 5.32.0 - resolution: "terser@npm:5.32.0" +"terser@npm:^5.0.0, terser@npm:^5.10.0, terser@npm:^5.26.0": + version: 5.36.0 + resolution: "terser@npm:5.36.0" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.8.2" @@ -19455,7 +17574,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10c0/94daae4881258eb7d09abd46378e23d11ee46caa507b2fb26c5595c7e490914be734e0de38c50041dc38fae5fca24de11badf042dfbbfc1d336ed117335c420a + checksum: 10c0/f4ed2bead19f64789ddcfb85b7cef78f3942f967b8890c54f57d1e35bc7d547d551c6a4c32210bce6ba45b1c738314bbfac6acbc6c762a45cd171777d0c120d9 languageName: node linkType: hard @@ -19496,9 +17615,9 @@ __metadata: linkType: hard "throat@npm:^6.0.1": - version: 6.0.1 - resolution: "throat@npm:6.0.1" - checksum: 10c0/60a42d762a35d21ac71abd9eb4026b665fbbbf6ddd7bcbdcacc3c3b20f7b99f41939afedf9fe3273611f1b7c003ee98ac4dc94aa5edd1a6dc2a49985ad2545e1 + version: 6.0.2 + resolution: "throat@npm:6.0.2" + checksum: 10c0/45caf1ce86a895f71fcb9bd3de67e1df6f73a519e780765dd0cf63ca8363de08ad207cfb714bc650ee9ddeef89971517b5f3a64087fcffce2bda034697af7c18 languageName: node linkType: hard @@ -19509,13 +17628,6 @@ __metadata: languageName: node linkType: hard -"timsort@npm:^0.3.0": - version: 0.3.0 - resolution: "timsort@npm:0.3.0" - checksum: 10c0/571b2054a0db3cf80eb255f8609a1f798cae9176f9ec6e3fbd03d64186c015cc9e1e75b88ba38e1d71aebcc03a931352522c7387dcb90caeb148375c7bc106f4 - languageName: node - linkType: hard - "tiny-invariant@npm:^1.3.1, tiny-invariant@npm:^1.3.3": version: 1.3.3 resolution: "tiny-invariant@npm:1.3.3" @@ -19523,29 +17635,13 @@ __metadata: languageName: node linkType: hard -"tmp@npm:^0.2.1": - version: 0.2.1 - resolution: "tmp@npm:0.2.1" - dependencies: - rimraf: "npm:^3.0.0" - checksum: 10c0/67607aa012059c9ce697bee820ee51bc0f39b29a8766def4f92d3f764d67c7cf9205d537d24e0cb1ce9685c40d4c628ead010910118ea18348666b5c46ed9123 - languageName: node - linkType: hard - -"tmpl@npm:1.0.x": +"tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 languageName: node linkType: hard -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 - languageName: node - linkType: hard - "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -19570,14 +17666,14 @@ __metadata: linkType: hard "tough-cookie@npm:^4.0.0": - version: 4.1.3 - resolution: "tough-cookie@npm:4.1.3" + version: 4.1.4 + resolution: "tough-cookie@npm:4.1.4" dependencies: psl: "npm:^1.1.33" punycode: "npm:^2.1.1" universalify: "npm:^0.2.0" url-parse: "npm:^1.5.3" - checksum: 10c0/4fc0433a0cba370d57c4b240f30440c848906dee3180bb6e85033143c2726d322e7e4614abb51d42d111ebec119c4876ed8d7247d4113563033eebbc1739c831 + checksum: 10c0/aca7ff96054f367d53d1e813e62ceb7dd2eda25d7752058a74d64b7266fd07be75908f3753a32ccf866a2f997604b414cfb1916d6e7f69bc64d9d9939b0d6c45 languageName: node linkType: hard @@ -19590,15 +17686,6 @@ __metadata: languageName: node linkType: hard -"tr46@npm:^2.0.2": - version: 2.0.2 - resolution: "tr46@npm:2.0.2" - dependencies: - punycode: "npm:^2.1.1" - checksum: 10c0/f88878b620a88c77bcdc5d74015a4a5b7a651ea9a8680abf46e4c7cd3840edaf4f914b1a367046a008d7edf2a148cd2d317995fade2191f671162698bf87b0f5 - languageName: node - linkType: hard - "tr46@npm:^2.1.0": version: 2.1.0 resolution: "tr46@npm:2.1.0" @@ -19616,9 +17703,9 @@ __metadata: linkType: hard "trough@npm:^2.0.0": - version: 2.0.2 - resolution: "trough@npm:2.0.2" - checksum: 10c0/e8d9495d6cb9e1231e4952ba11acc844ce71884eefc2b2a517a311b97d9e5cd9b7902891b374edad10f876b68b4cc507b5ab491c01c614d0c4739d3ab117627f + version: 2.2.0 + resolution: "trough@npm:2.2.0" + checksum: 10c0/58b671fc970e7867a48514168894396dd94e6d9d6456aca427cc299c004fe67f35ed7172a36449086b2edde10e78a71a284ec0076809add6834fb8f857ccb9b0 languageName: node linkType: hard @@ -19630,9 +17717,9 @@ __metadata: linkType: hard "ts-dedent@npm:^2.0.0": - version: 2.0.0 - resolution: "ts-dedent@npm:2.0.0" - checksum: 10c0/dc22c2a7184ce80cb19b5619199dc33128750c7ffe366eecdb50fcc39a19347921d950c90af8418ef4d15271528bc75340efa23acce271aeb618c9a54fd0383c + version: 2.2.0 + resolution: "ts-dedent@npm:2.2.0" + checksum: 10c0/175adea838468cc2ff7d5e97f970dcb798bbcb623f29c6088cb21aa2880d207c5784be81ab1741f56b9ac37840cbaba0c0d79f7f8b67ffe61c02634cafa5c303 languageName: node linkType: hard @@ -19643,11 +17730,11 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:^10.4.0": - version: 10.4.0 - resolution: "ts-node@npm:10.4.0" +"ts-node@npm:^10.7.0": + version: 10.9.2 + resolution: "ts-node@npm:10.9.2" dependencies: - "@cspotcode/source-map-support": "npm:0.7.0" + "@cspotcode/source-map-support": "npm:^0.8.0" "@tsconfig/node10": "npm:^1.0.7" "@tsconfig/node12": "npm:^1.0.7" "@tsconfig/node14": "npm:^1.0.0" @@ -19658,6 +17745,7 @@ __metadata: create-require: "npm:^1.1.0" diff: "npm:^4.0.1" make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" yn: "npm:3.1.1" peerDependencies: "@swc/core": ">=1.2.50" @@ -19672,10 +17760,11 @@ __metadata: bin: ts-node: dist/bin.js ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js ts-node-script: dist/bin-script.js ts-node-transpile-only: dist/bin-transpile.js ts-script: dist/bin-script-deprecated.js - checksum: 10c0/380f84e561f379545a6648c7da0c8510a53e78a554b437e40bd180d5d1f305f32d8b9b327e9eb1177f60d61893940430bb3fa74d62e0a6f6e1a839366e2cda5c + checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 languageName: node linkType: hard @@ -19689,15 +17778,15 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.11.0": - version: 3.12.0 - resolution: "tsconfig-paths@npm:3.12.0" +"tsconfig-paths@npm:^3.15.0": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" dependencies: "@types/json5": "npm:^0.0.29" - json5: "npm:^1.0.1" - minimist: "npm:^1.2.0" + json5: "npm:^1.0.2" + minimist: "npm:^1.2.6" strip-bom: "npm:^3.0.0" - checksum: 10c0/3e3ccdd48868cd6e9ba2ebbd0ca9bc316cc50953490f23a0469c04fac22d9a33c0812e5102c9fdb22aab1fbca809bd1a34fe65b2c41f68e2688bc487f7928518 + checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 languageName: node linkType: hard @@ -19719,31 +17808,17 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1, tslib@npm:^1.9.0": +"tslib@npm:^1.8.1": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.3": - version: 2.1.0 - resolution: "tslib@npm:2.1.0" - checksum: 10c0/e95c8fb198d0209bba917db7b0f399d1aed3c4d6408bf1e4c30deebfeffb4076dc3786500100a3b5c55a535abaaeb5e6bd1da04d0cb49d4228e5a62362cee0b2 - languageName: node - linkType: hard - -"tslib@npm:^2.0.1": - version: 2.7.0 - resolution: "tslib@npm:2.7.0" - checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6 - languageName: node - linkType: hard - -"tslib@npm:^2.4.0": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.4.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 languageName: node linkType: hard @@ -19774,6 +17849,15 @@ __metadata: languageName: node linkType: hard +"type-check@npm:~0.3.2": + version: 0.3.2 + resolution: "type-check@npm:0.3.2" + dependencies: + prelude-ls: "npm:~1.1.2" + checksum: 10c0/776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 + languageName: node + linkType: hard + "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -19781,13 +17865,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.11.0": - version: 0.11.0 - resolution: "type-fest@npm:0.11.0" - checksum: 10c0/d548325b34e6110ce28acb6404f797758404354b7edc7b767203741781d92739ee9f6188ca0ebc9d988a5d3f51d47c5295b0d777939913b74bb0eda8e62893f9 - languageName: node - linkType: hard - "type-fest@npm:^0.16.0": version: 0.16.0 resolution: "type-fest@npm:0.16.0" @@ -19802,6 +17879,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + "type-fest@npm:^2.19.0, type-fest@npm:~2.19": version: 2.19.0 resolution: "type-fest@npm:2.19.0" @@ -19819,6 +17903,58 @@ __metadata: languageName: node linkType: hard +"typed-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "typed-array-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-byte-offset@npm:1.0.2" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.6": + version: 1.0.6 + resolution: "typed-array-length@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/74253d7dc488eb28b6b2711cf31f5a9dcefc9c41b0681fd1c178ed0a1681b4468581a3626d39cd4df7aee3d3927ab62be06aa9ca74e5baf81827f61641445b77 + languageName: node + linkType: hard + "typedarray-to-buffer@npm:^3.1.5": version: 3.1.5 resolution: "typedarray-to-buffer@npm:3.1.5" @@ -19848,66 +17984,66 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.0.1": - version: 1.0.1 - resolution: "unbox-primitive@npm:1.0.1" +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" dependencies: - function-bind: "npm:^1.1.1" - has-bigints: "npm:^1.0.1" - has-symbols: "npm:^1.0.2" + call-bind: "npm:^1.0.2" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.0.3" which-boxed-primitive: "npm:^1.0.2" - checksum: 10c0/6f0b91b0744c6f9fd05afa70484914b70686596be628543a143fab018733f902ff39fad2c3cf8f00fd5d32ba8bce8edf9cf61cee940c1af892316e112b25812b + checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 languageName: node linkType: hard -"undici-types@npm:~5.26.4": - version: 5.26.5 - resolution: "undici-types@npm:5.26.5" - checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 +"underscore@npm:1.12.1": + version: 1.12.1 + resolution: "underscore@npm:1.12.1" + checksum: 10c0/00f392357e363353ac485e7c156b749505087e31ff4fdad22e04ebd2f94a56fbc554cd41a6722e3895a818466cf298b1cae93ff6211d102d373a9b50db63bfd0 languageName: node linkType: hard -"undici-types@npm:~6.19.2": +"undici-types@npm:~6.19.2, undici-types@npm:~6.19.8": version: 6.19.8 resolution: "undici-types@npm:6.19.8" checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 languageName: node linkType: hard -"unicode-canonical-property-names-ecmascript@npm:^1.0.4": - version: 1.0.4 - resolution: "unicode-canonical-property-names-ecmascript@npm:1.0.4" - checksum: 10c0/68707d399303178b060953d38cca4c3502fadf7fd5e74b5bf2c2bec41a6a1db336228cc8ec53e2bca8badc17f4212d677c71934d9cd4ab6f5ec2e9a9ce0ae235 +"unicode-canonical-property-names-ecmascript@npm:^2.0.0": + version: 2.0.1 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.1" + checksum: 10c0/f83bc492fdbe662860795ef37a85910944df7310cac91bd778f1c19ebc911e8b9cde84e703de631e5a2fcca3905e39896f8fc5fc6a44ddaf7f4aff1cda24f381 languageName: node linkType: hard -"unicode-match-property-ecmascript@npm:^1.0.4": - version: 1.0.4 - resolution: "unicode-match-property-ecmascript@npm:1.0.4" +"unicode-match-property-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-ecmascript@npm:2.0.0" dependencies: - unicode-canonical-property-names-ecmascript: "npm:^1.0.4" - unicode-property-aliases-ecmascript: "npm:^1.0.4" - checksum: 10c0/957103d97a501520dbe4f89ce8a1d8d5c1495bdfe72b706828e5c62643fcb9ccb4b4b85931d65d2f899aea5f04696e1dddaaa0114b866583d3966855272d1452 + unicode-canonical-property-names-ecmascript: "npm:^2.0.0" + unicode-property-aliases-ecmascript: "npm:^2.0.0" + checksum: 10c0/4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec languageName: node linkType: hard -"unicode-match-property-value-ecmascript@npm:^1.2.0": - version: 1.2.0 - resolution: "unicode-match-property-value-ecmascript@npm:1.2.0" - checksum: 10c0/9a8758e1d96ba653309569eaf06673b2fdb77d8cb496eebc2008f392682d99d8e5f431373224cb48ce310f2fe8f1a817f52a748c571db98ffda80f734a99d61d +"unicode-match-property-value-ecmascript@npm:^2.1.0": + version: 2.2.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.2.0" + checksum: 10c0/1d0a2deefd97974ddff5b7cb84f9884177f4489928dfcebb4b2b091d6124f2739df51fc6ea15958e1b5637ac2a24cff9bf21ea81e45335086ac52c0b4c717d6d languageName: node linkType: hard -"unicode-property-aliases-ecmascript@npm:^1.0.4": - version: 1.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:1.1.0" - checksum: 10c0/a7b39fbd20d71efef87b742836ede19b16330a30ff5314a2371de6734b959546ce352eb5022eda79cc7a2213f46e218f94bd61be9506549f1f97f03f6372cf31 +"unicode-property-aliases-ecmascript@npm:^2.0.0": + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 10c0/50ded3f8c963c7785e48c510a3b7c6bc4e08a579551489aa0349680a35b1ceceec122e33b2b6c1b579d0be2250f34bb163ac35f5f8695fe10bbc67fb757f0af8 languageName: node linkType: hard "unified@npm:^11.0.0": - version: 11.0.3 - resolution: "unified@npm:11.0.3" + version: 11.0.5 + resolution: "unified@npm:11.0.5" dependencies: "@types/unist": "npm:^3.0.0" bail: "npm:^2.0.0" @@ -19916,14 +18052,7 @@ __metadata: is-plain-obj: "npm:^4.0.0" trough: "npm:^2.0.0" vfile: "npm:^6.0.0" - checksum: 10c0/4c498e577293ace1eaf673391cea8c381fcbbece980a76d336eba815adca63d600bd727faf2b5b53b96911034d9c0de52be37d81e7c6aaf78553debc2352d87e - languageName: node - linkType: hard - -"uniq@npm:^1.0.1": - version: 1.0.1 - resolution: "uniq@npm:1.0.1" - checksum: 10c0/369dca4a07fdd8de9e48378b9d4b6861722ca71d5f496e91687916bd4b48b8cf3d6db1677be1b40eea63bc6d4728efb4b4e0bd7a89c5fd2d23e7a2cff8009c7a + checksum: 10c0/53c8e685f56d11d9d458a43e0e74328a4d6386af51c8ac37a3dcabec74ce5026da21250590d4aff6733ccd7dc203116aae2b0769abc18cdf9639a54ae528dfc9 languageName: node linkType: hard @@ -20010,9 +18139,9 @@ __metadata: linkType: hard "universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 10c0/07092b9f46df61b823d8ab5e57f0ee5120c178b39609a95e4a15a98c42f6b0b8e834e66fbb47ff92831786193be42f1fd36347169b88ce8639d0f9670af24a71 + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a languageName: node linkType: hard @@ -20024,14 +18153,17 @@ __metadata: linkType: hard "unplugin@npm:^1.3.1": - version: 1.10.1 - resolution: "unplugin@npm:1.10.1" + version: 1.15.0 + resolution: "unplugin@npm:1.15.0" dependencies: - acorn: "npm:^8.11.3" - chokidar: "npm:^3.6.0" - webpack-sources: "npm:^3.2.3" - webpack-virtual-modules: "npm:^0.6.1" - checksum: 10c0/6fe469785a46ff2a2d5c077db8b8b8d2c5429016f2561cffed4eb0068ea085c50b8c503891a4ea028f8226da0b9a8b878118a0b9eeded511b53adec4edbb38d3 + acorn: "npm:^8.14.0" + webpack-virtual-modules: "npm:^0.6.2" + peerDependencies: + webpack-sources: ^3 + peerDependenciesMeta: + webpack-sources: + optional: true + checksum: 10c0/2b0a6326a34555893b85185f3e2777d94c76fe2920d1311f90b7c48ed8c27b596c7a16f3f8f741724ccecebd7fb614748ecfc77e18aed1a0d0d90518f2e958d7 languageName: node linkType: hard @@ -20049,31 +18181,24 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.9": - version: 1.0.9 - resolution: "update-browserslist-db@npm:1.0.9" +"update-browserslist-db@npm:^1.1.1": + version: 1.1.1 + resolution: "update-browserslist-db@npm:1.1.1" dependencies: - escalade: "npm:^3.1.1" - picocolors: "npm:^1.0.0" + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.0" peerDependencies: browserslist: ">= 4.21.0" bin: - browserslist-lint: cli.js - checksum: 10c0/9bcac61043c3a94beebae2321b85de7faa77612062bb2e23308eb2cdf25c5e234657b955561d510f6abef73a7b5dc9f2da56fa2e3e04555177ce40ec4338b0aa + update-browserslist-db: cli.js + checksum: 10c0/536a2979adda2b4be81b07e311bd2f3ad5e978690987956bc5f514130ad50cac87cd22c710b686d79731e00fbee8ef43efe5fcd72baa241045209195d43dcc80 languageName: node linkType: hard -"update-browserslist-db@npm:^1.1.0": - version: 1.1.0 - resolution: "update-browserslist-db@npm:1.1.0" - dependencies: - escalade: "npm:^3.1.2" - picocolors: "npm:^1.0.1" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 10c0/a7452de47785842736fb71547651c5bbe5b4dc1e3722ccf48a704b7b34e4dcf633991eaa8e4a6a517ffb738b3252eede3773bef673ef9021baa26b056d63a5b9 +"update-input-width@npm:^1.4.0": + version: 1.4.2 + resolution: "update-input-width@npm:1.4.2" + checksum: 10c0/d3344f91c1c08a26f81d172dd774ca8834ddfaec1eb78e05280d303800a3236c4e122df14ea34fe7f0e1bdada733dec5d3676d38ce0777bafe603de0a6199473 languageName: node linkType: hard @@ -20097,12 +18222,12 @@ __metadata: linkType: hard "url@npm:^0.11.0": - version: 0.11.0 - resolution: "url@npm:0.11.0" + version: 0.11.4 + resolution: "url@npm:0.11.4" dependencies: - punycode: "npm:1.3.2" - querystring: "npm:0.2.0" - checksum: 10c0/bbe05f9f570ec5c06421c50ca63f287e61279092eed0891db69a9619323703ccd3987e6eed234c468794cf25680c599680d5c1f58d26090f1956c8e9ed8346a2 + punycode: "npm:^1.4.1" + qs: "npm:^6.12.3" + checksum: 10c0/cc93405ae4a9b97a2aa60ca67f1cb1481c0221cb4725a7341d149be5e2f9cfda26fd432d64dbbec693d16593b68b8a46aad8e5eab21f814932134c9d8620c662 languageName: node linkType: hard @@ -20130,12 +18255,12 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:1.2.0": - version: 1.2.0 - resolution: "use-sync-external-store@npm:1.2.0" +"use-sync-external-store@npm:1.2.2": + version: 1.2.2 + resolution: "use-sync-external-store@npm:1.2.2" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/ac4814e5592524f242921157e791b022efe36e451fe0d4fd4d204322d5433a4fc300d63b0ade5185f8e0735ded044c70bcf6d2352db0f74d097a238cebd2da02 + checksum: 10c0/23b1597c10adf15b26ade9e8c318d8cc0abc9ec0ab5fc7ca7338da92e89c2536abd150a5891bf076836c352fdfa104fc7231fb48f806fd9960e0cbe03601abaf languageName: node linkType: hard @@ -20194,12 +18319,12 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^3.4.0": - version: 3.4.0 - resolution: "uuid@npm:3.4.0" +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" bin: - uuid: ./bin/uuid - checksum: 10c0/1c13950df865c4f506ebfe0a24023571fa80edf2e62364297a537c80af09c618299797bbf2dbac6b1f8ae5ad182ba474b89db61e0e85839683991f7e08795347 + uuid: dist/bin/uuid + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 languageName: node linkType: hard @@ -20212,21 +18337,21 @@ __metadata: languageName: node linkType: hard -"v8-compile-cache@npm:^2.0.3": - version: 2.2.0 - resolution: "v8-compile-cache@npm:2.2.0" - checksum: 10c0/57fe90c80adfd68c3e60b60055b3893bbdce9cf112a462cdbe001504a9259aba704be9e8d79ca7d16304a2d7ce9874efc4b4db0155c31937569b24a88bd31c5f +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 languageName: node linkType: hard "v8-to-istanbul@npm:^8.1.0": - version: 8.1.0 - resolution: "v8-to-istanbul@npm:8.1.0" + version: 8.1.1 + resolution: "v8-to-istanbul@npm:8.1.1" dependencies: "@types/istanbul-lib-coverage": "npm:^2.0.1" convert-source-map: "npm:^1.6.0" source-map: "npm:^0.7.3" - checksum: 10c0/4db98cc1ab0634e183353fb404e2dd9dec2dd3075372d4423c0acebff78d927b59dbb58ab729ab36c7d5168610b2aa5b3c885be8221b44ab937be1dbf2078c4b + checksum: 10c0/c3c99c4aa1ffffb098cc85c0c13c21871e6cbb9a83537d4e0650aa61589c347b2add787ceac68b8ea7fa1b7f446e9059d8e374cd7e7ab13b170a6caf8ad29c30 languageName: node linkType: hard @@ -20258,13 +18383,12 @@ __metadata: linkType: hard "vfile@npm:^6.0.0": - version: 6.0.1 - resolution: "vfile@npm:6.0.1" + version: 6.0.3 + resolution: "vfile@npm:6.0.3" dependencies: "@types/unist": "npm:^3.0.0" - unist-util-stringify-position: "npm:^4.0.0" vfile-message: "npm:^4.0.0" - checksum: 10c0/443bda43e5ad3b73c5976e987dba2b2d761439867ba7d5d7c5f4b01d3c1cb1b976f5f0e6b2399a00dc9b4eaec611bd9984ce9ce8a75a72e60aed518b10a902d2 + checksum: 10c0/e5d9eb4810623f23758cfc2205323e33552fb5972e5c2e6587babe08fe4d24859866277404fb9e2a20afb71013860d96ec806cb257536ae463c87d70022ab9ef languageName: node linkType: hard @@ -20294,15 +18418,15 @@ __metadata: linkType: hard "walker@npm:^1.0.7": - version: 1.0.7 - resolution: "walker@npm:1.0.7" + version: 1.0.8 + resolution: "walker@npm:1.0.8" dependencies: - makeerror: "npm:1.0.x" - checksum: 10c0/c726d584482985fc5bd96a87fec0c5b804c4badf5e7cafdeb736204390a7ed222bb5cdce9e2dace7655ea23f9c8efa96fdd3217d8f64f86c5d509d5fed865ab4 + makeerror: "npm:1.0.12" + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e languageName: node linkType: hard -"warning@npm:^4.0.2": +"warning@npm:^4.0.0, warning@npm:^4.0.2": version: 4.0.3 resolution: "warning@npm:4.0.3" dependencies: @@ -20358,7 +18482,7 @@ __metadata: languageName: node linkType: hard -"webpack-dev-middleware@npm:^5.2.1": +"webpack-dev-middleware@npm:^5.3.4": version: 5.3.4 resolution: "webpack-dev-middleware@npm:5.3.4" dependencies: @@ -20392,76 +18516,83 @@ __metadata: linkType: hard "webpack-dev-server@npm:^4.6.0": - version: 4.6.0 - resolution: "webpack-dev-server@npm:4.6.0" - dependencies: + version: 4.15.2 + resolution: "webpack-dev-server@npm:4.15.2" + dependencies: + "@types/bonjour": "npm:^3.5.9" + "@types/connect-history-api-fallback": "npm:^1.3.5" + "@types/express": "npm:^4.17.13" + "@types/serve-index": "npm:^1.9.1" + "@types/serve-static": "npm:^1.13.10" + "@types/sockjs": "npm:^0.3.33" + "@types/ws": "npm:^8.5.5" ansi-html-community: "npm:^0.0.8" - bonjour: "npm:^3.5.0" - chokidar: "npm:^3.5.2" + bonjour-service: "npm:^1.0.11" + chokidar: "npm:^3.5.3" colorette: "npm:^2.0.10" compression: "npm:^1.7.4" - connect-history-api-fallback: "npm:^1.6.0" + connect-history-api-fallback: "npm:^2.0.0" default-gateway: "npm:^6.0.3" - del: "npm:^6.0.0" - express: "npm:^4.17.1" + express: "npm:^4.17.3" graceful-fs: "npm:^4.2.6" html-entities: "npm:^2.3.2" - http-proxy-middleware: "npm:^2.0.0" + http-proxy-middleware: "npm:^2.0.3" ipaddr.js: "npm:^2.0.1" + launch-editor: "npm:^2.6.0" open: "npm:^8.0.9" p-retry: "npm:^4.5.0" - portfinder: "npm:^1.0.28" + rimraf: "npm:^3.0.2" schema-utils: "npm:^4.0.0" - selfsigned: "npm:^1.10.11" + selfsigned: "npm:^2.1.1" serve-index: "npm:^1.9.1" - sockjs: "npm:^0.3.21" + sockjs: "npm:^0.3.24" spdy: "npm:^4.0.2" - strip-ansi: "npm:^7.0.0" - url: "npm:^0.11.0" - webpack-dev-middleware: "npm:^5.2.1" - ws: "npm:^8.1.0" + webpack-dev-middleware: "npm:^5.3.4" + ws: "npm:^8.13.0" peerDependencies: webpack: ^4.37.0 || ^5.0.0 peerDependenciesMeta: + webpack: + optional: true webpack-cli: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: 10c0/2ec3654bd1ff27bcbdc624925f91473c7d6cff32549f46d3d26ff88739ec6da889fa844e592e8b29a86bd5e68740459d5fa850926283ddd514f20b2d18bad492 + checksum: 10c0/625bd5b79360afcf98782c8b1fd710b180bb0e96d96b989defff550c546890010ceea82ffbecb2a0a23f7f018bc72f2dee7b3070f7b448fb0110df6657fb2904 languageName: node linkType: hard "webpack-hot-middleware@npm:^2.25.1": - version: 2.25.1 - resolution: "webpack-hot-middleware@npm:2.25.1" + version: 2.26.1 + resolution: "webpack-hot-middleware@npm:2.26.1" dependencies: ansi-html-community: "npm:0.0.8" html-entities: "npm:^2.1.0" - querystring: "npm:^0.2.0" strip-ansi: "npm:^6.0.0" - checksum: 10c0/2b8cc2841d6168c5e9f0edd116289fb441039e8de784baf375b1156883a860ee0917a3498b8198f47ad056dd90cdd8eb053253127a0f923c76b18fa7987d0c05 + checksum: 10c0/13a3e78009e373b4ee990ffe1d4d49046e9893148a7106f063e11f962d02b744ea58b1dec25f5e76723c9dce678b9e68c883e7f2af2940aaf4de7aab31264c83 languageName: node linkType: hard "webpack-manifest-plugin@npm:^4.0.2": - version: 4.0.2 - resolution: "webpack-manifest-plugin@npm:4.0.2" + version: 4.1.1 + resolution: "webpack-manifest-plugin@npm:4.1.1" dependencies: tapable: "npm:^2.0.0" webpack-sources: "npm:^2.2.0" peerDependencies: webpack: ^4.44.2 || ^5.47.0 - checksum: 10c0/d260fcc1d4c05543bcc511ba585f233f405299f62259b4b590843d2a58bc94fb253492db4e49950d74000bdcd444f022ed5c7048bfce6c6c528ee96fdcd94eb7 + checksum: 10c0/9486f399c86358e5811f314c71ba0ef2915c2db885ae01fd14002f2fb3d791bc9cf7b0fbe92e9f012c85c06f2efd94ecfc50f85d3fbce6359757f327039a7839 languageName: node linkType: hard "webpack-merge@npm:^5.8.0": - version: 5.8.0 - resolution: "webpack-merge@npm:5.8.0" + version: 5.10.0 + resolution: "webpack-merge@npm:5.10.0" dependencies: clone-deep: "npm:^4.0.1" + flat: "npm:^5.0.2" wildcard: "npm:^2.0.0" - checksum: 10c0/400eaaba69d2240d51dc7a4427dde37849a8f2fdf93731be6a8aad34d70d55bb38cb10c5001c7b339fc91f8c8547e782ecbd79eff24ad861e21e6a4c5dc959fb + checksum: 10c0/b607c84cabaf74689f965420051a55a08722d897bdd6c29cb0b2263b451c090f962d41ecf8c9bf56b0ab3de56e65476ace0a8ecda4f4a4663684243d90e0512b languageName: node linkType: hard @@ -20492,7 +18623,7 @@ __metadata: languageName: node linkType: hard -"webpack-virtual-modules@npm:^0.6.0, webpack-virtual-modules@npm:^0.6.1": +"webpack-virtual-modules@npm:^0.6.0, webpack-virtual-modules@npm:^0.6.2": version: 0.6.2 resolution: "webpack-virtual-modules@npm:0.6.2" checksum: 10c0/5ffbddf0e84bf1562ff86cf6fcf039c74edf09d78358a6904a09bbd4484e8bb6812dc385fe14330b715031892dcd8423f7a88278b57c9f5002c84c2860179add @@ -20500,16 +18631,16 @@ __metadata: linkType: hard "webpack@npm:5, webpack@npm:^5.64.4": - version: 5.94.0 - resolution: "webpack@npm:5.94.0" + version: 5.96.1 + resolution: "webpack@npm:5.96.1" dependencies: - "@types/estree": "npm:^1.0.5" + "@types/eslint-scope": "npm:^3.7.7" + "@types/estree": "npm:^1.0.6" "@webassemblyjs/ast": "npm:^1.12.1" "@webassemblyjs/wasm-edit": "npm:^1.12.1" "@webassemblyjs/wasm-parser": "npm:^1.12.1" - acorn: "npm:^8.7.1" - acorn-import-attributes: "npm:^1.9.5" - browserslist: "npm:^4.21.10" + acorn: "npm:^8.14.0" + browserslist: "npm:^4.24.0" chrome-trace-event: "npm:^1.0.2" enhanced-resolve: "npm:^5.17.1" es-module-lexer: "npm:^1.2.1" @@ -20531,7 +18662,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10c0/b4d1b751f634079bd177a89eef84d80fa5bb8d6fc15d72ab40fc2b9ca5167a79b56585e1a849e9e27e259803ee5c4365cb719e54af70a43c06358ec268ff4ebf + checksum: 10c0/ae6052fde9a546f79f14987b65823ba4024c6642a8489339ecfee7a351dff93325842aad453295bbdc6b65fb1690e4ef07529db63aa84ece55c7869e991a0039 languageName: node linkType: hard @@ -20563,9 +18694,9 @@ __metadata: linkType: hard "whatwg-fetch@npm:^3.6.2": - version: 3.6.2 - resolution: "whatwg-fetch@npm:3.6.2" - checksum: 10c0/cc10f6893fe71839250b6e2fa9bc293bcf0ca5b93129712a7d1097fb7528b3ff617eb065098dc972e74d1455378e514aa34c0901ded41584be16508db63477c8 + version: 3.6.20 + resolution: "whatwg-fetch@npm:3.6.20" + checksum: 10c0/fa972dd14091321d38f36a4d062298df58c2248393ef9e8b154493c347c62e2756e25be29c16277396046d6eaa4b11bd174f34e6403fff6aaca9fb30fa1ff46d languageName: node linkType: hard @@ -20587,18 +18718,7 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^8.0.0": - version: 8.4.0 - resolution: "whatwg-url@npm:8.4.0" - dependencies: - lodash.sortby: "npm:^4.7.0" - tr46: "npm:^2.0.2" - webidl-conversions: "npm:^6.1.0" - checksum: 10c0/64f44285a91d294c2e22711fbebd6d7c4bdbfeb0de90cd4693c53af743b31ea88334293b04b0d2bfa03f7c10fd1b28bc5670723087ab9190241a29f3fa3a4e98 - languageName: node - linkType: hard - -"whatwg-url@npm:^8.5.0": +"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": version: 8.7.0 resolution: "whatwg-url@npm:8.7.0" dependencies: @@ -20622,7 +18742,39 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.2": +"which-builtin-type@npm:^1.1.3": + version: 1.1.4 + resolution: "which-builtin-type@npm:1.1.4" + dependencies: + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.0.5" + is-finalizationregistry: "npm:^1.0.2" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.1.4" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 10c0/a4a76d20d869a81b1dbb4adea31edc7e6c1a4466d3ab7c2cd757c9219d48d3723b04076c85583257b0f0f8e3ebe5af337248b8ceed57b9051cb97bce5bd881d1 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" dependencies: @@ -20669,41 +18821,41 @@ __metadata: linkType: hard "wildcard@npm:^2.0.0": - version: 2.0.0 - resolution: "wildcard@npm:2.0.0" - checksum: 10c0/4e22a45f4fa7f0f0d3e11860ee9ce9225246d41af6ec507e6a7d64c2692afb40d695b92c8f801deda8d3536007c2ec07981079fd0c8bb38b8521de072b33ab7a + version: 2.0.1 + resolution: "wildcard@npm:2.0.1" + checksum: 10c0/08f70cd97dd9a20aea280847a1fe8148e17cae7d231640e41eb26d2388697cbe65b67fd9e68715251c39b080c5ae4f76d71a9a69fa101d897273efdfb1b58bf7 languageName: node linkType: hard -"word-wrap@npm:^1.2.3": +"word-wrap@npm:^1.2.5, word-wrap@npm:~1.2.3": version: 1.2.5 resolution: "word-wrap@npm:1.2.5" checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 languageName: node linkType: hard -"workbox-background-sync@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-background-sync@npm:6.4.2" +"workbox-background-sync@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-background-sync@npm:6.6.0" dependencies: - idb: "npm:^6.1.4" - workbox-core: "npm:6.4.2" - checksum: 10c0/35c0e81cff00978daaa7c185a965e9d8ef6bcc4b244ac97a96580fd3ec2679822e1522283091ab6b619b661b31c3b0861a86443b9b5b41e34ed072b44efb752f + idb: "npm:^7.0.1" + workbox-core: "npm:6.6.0" + checksum: 10c0/204410fc33d46b55a0969b959c3d37aee5b87e8c64a4b820db86c7312285cef65d53bbe9b1da7433c38d3e8064fddd0f0cbff297b040febce0cb238b65876033 languageName: node linkType: hard -"workbox-broadcast-update@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-broadcast-update@npm:6.4.2" +"workbox-broadcast-update@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-broadcast-update@npm:6.6.0" dependencies: - workbox-core: "npm:6.4.2" - checksum: 10c0/f11afff92d2cbab077e9e0a72c2ad1b37c025b950f6bc357f0d203c3a4af858e772761f920ed9a342ddf534801e98e48a7398bc7df85dd532aaa2c1524085d94 + workbox-core: "npm:6.6.0" + checksum: 10c0/a10bdaae57a68e940ffcb619a98c52ad4d33203b77b5c2e890c21c4a4594037b9d9c8cf018036c1b5640a36c27af4fdecc7b3a8b20448baff95fd90e830a76cd languageName: node linkType: hard -"workbox-build@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-build@npm:6.4.2" +"workbox-build@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-build@npm:6.6.0" dependencies: "@apideck/better-ajv-errors": "npm:^0.3.1" "@babel/core": "npm:^7.11.1" @@ -20723,169 +18875,167 @@ __metadata: rollup: "npm:^2.43.1" rollup-plugin-terser: "npm:^7.0.0" source-map: "npm:^0.8.0-beta.0" - source-map-url: "npm:^0.4.0" stringify-object: "npm:^3.3.0" strip-comments: "npm:^2.0.1" tempy: "npm:^0.6.0" upath: "npm:^1.2.0" - workbox-background-sync: "npm:6.4.2" - workbox-broadcast-update: "npm:6.4.2" - workbox-cacheable-response: "npm:6.4.2" - workbox-core: "npm:6.4.2" - workbox-expiration: "npm:6.4.2" - workbox-google-analytics: "npm:6.4.2" - workbox-navigation-preload: "npm:6.4.2" - workbox-precaching: "npm:6.4.2" - workbox-range-requests: "npm:6.4.2" - workbox-recipes: "npm:6.4.2" - workbox-routing: "npm:6.4.2" - workbox-strategies: "npm:6.4.2" - workbox-streams: "npm:6.4.2" - workbox-sw: "npm:6.4.2" - workbox-window: "npm:6.4.2" - checksum: 10c0/61299e1e021929aa8c62169d31ca84291252ad4e4c18199e1a9272a6d792f9680087ba2221707c3ba2a77e96604ed65d20952b889f4c1a1c944ec48ad950c7a7 + workbox-background-sync: "npm:6.6.0" + workbox-broadcast-update: "npm:6.6.0" + workbox-cacheable-response: "npm:6.6.0" + workbox-core: "npm:6.6.0" + workbox-expiration: "npm:6.6.0" + workbox-google-analytics: "npm:6.6.0" + workbox-navigation-preload: "npm:6.6.0" + workbox-precaching: "npm:6.6.0" + workbox-range-requests: "npm:6.6.0" + workbox-recipes: "npm:6.6.0" + workbox-routing: "npm:6.6.0" + workbox-strategies: "npm:6.6.0" + workbox-streams: "npm:6.6.0" + workbox-sw: "npm:6.6.0" + workbox-window: "npm:6.6.0" + checksum: 10c0/d13d9757d558015a44041bb1c95a2abdda9c54d3b96d16ea220421397bfd294672cfa5b71d4e4309db7565427286cdf40ab087e427dba2c9f9be6339d9bbc299 languageName: node linkType: hard -"workbox-cacheable-response@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-cacheable-response@npm:6.4.2" +"workbox-cacheable-response@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-cacheable-response@npm:6.6.0" dependencies: - workbox-core: "npm:6.4.2" - checksum: 10c0/8688f56f5560c10e526b2ab023ea96c132e81f6f232fdb5bd6b3d16c82497956cd0e2d6b2f82087aef1c80448746e7f505776892800bc458c0d2598f6ed2189d + workbox-core: "npm:6.6.0" + checksum: 10c0/90d6fa76e56411014d9971ca17d4a8f6954b5c370e6d58500f1d3fdbff3ee7231f0e76f3e2b44dfe7a3dff304b926f841db61d27254ba97e660629724e2c55f6 languageName: node linkType: hard -"workbox-core@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-core@npm:6.4.2" - checksum: 10c0/cc2ca568a3d9eff1b2dc5e18969d73e30e0af58b8c5cffc836b900fc8dc2e594901140e39a528a9640156edc74590aa77ca2eb9c13b4c73c1c1ed034e3cb9854 +"workbox-core@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-core@npm:6.6.0" + checksum: 10c0/c8fc7b1bc2cac7fac424fc34d986c557e547c5721587328bd8ee0423fb345416b309f7088bd61549b07443a75489328a4f711f72eabb198502fd91d9ee3643eb languageName: node linkType: hard -"workbox-expiration@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-expiration@npm:6.4.2" +"workbox-expiration@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-expiration@npm:6.6.0" dependencies: - idb: "npm:^6.1.4" - workbox-core: "npm:6.4.2" - checksum: 10c0/452e6e3db5ba01257b6daac328810269c4d2241e6c69c412383b30d0350a09af22305c9348ba00f4ef100731573368abaec735483095a44be74d04fbf6a42b1b + idb: "npm:^7.0.1" + workbox-core: "npm:6.6.0" + checksum: 10c0/29c7b11fabbcd441073b8c926608ec4e487fc3ce56558e391840d2b63275c8724ed572ba5d87d26ec69ba1a23413669ab229acc10d3d70766147c86cc8174b0e languageName: node linkType: hard -"workbox-google-analytics@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-google-analytics@npm:6.4.2" +"workbox-google-analytics@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-google-analytics@npm:6.6.0" dependencies: - workbox-background-sync: "npm:6.4.2" - workbox-core: "npm:6.4.2" - workbox-routing: "npm:6.4.2" - workbox-strategies: "npm:6.4.2" - checksum: 10c0/0f05aacb3f118c610ea9f2e37a16ff827b6b35d6f86e633fbf7c0e7b2fd79333e9ad9c6d0144034b02ba0856f55223449d24c32a732faa62a28c85896b5199d9 + workbox-background-sync: "npm:6.6.0" + workbox-core: "npm:6.6.0" + workbox-routing: "npm:6.6.0" + workbox-strategies: "npm:6.6.0" + checksum: 10c0/e1e45eab37bf4d00cff9a0e063b3c3f52a138742fdfcc864a8ba84738b543ee53a66b3466e07ee2206f5dfe56726ecd13403f90a646ebcdaa62b53e79523da0e languageName: node linkType: hard -"workbox-navigation-preload@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-navigation-preload@npm:6.4.2" +"workbox-navigation-preload@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-navigation-preload@npm:6.6.0" dependencies: - workbox-core: "npm:6.4.2" - checksum: 10c0/001b4b4c53ab56666f57d22b05b873db83ed46c28d02e533226291c200d3b7db3eaab547964c2d4d3163affa81600cd5267534c552754c696eba14be13eb6c1f + workbox-core: "npm:6.6.0" + checksum: 10c0/1bf6be2c765a90854cd4bfece16adb0ed325ad33b8caeb4d5f237c43677225894054bae8c05f59fc0cb3ffe0d42389d771cef546528516a381c2f053f5e6d278 languageName: node linkType: hard -"workbox-precaching@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-precaching@npm:6.4.2" +"workbox-precaching@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-precaching@npm:6.6.0" dependencies: - workbox-core: "npm:6.4.2" - workbox-routing: "npm:6.4.2" - workbox-strategies: "npm:6.4.2" - checksum: 10c0/4e969a887c9c0330ab98d5179f89b8f972dab023f30aabff9c608a2784cbd311e9e758ee0dd849f8bfa47041786f6784b45584f2e8fb02dbd73f4935cb4f7870 + workbox-core: "npm:6.6.0" + workbox-routing: "npm:6.6.0" + workbox-strategies: "npm:6.6.0" + checksum: 10c0/73773def12c3bf894024941686372cb585dddb4dca568335755eaf2e6549c74fde662d9f9745b8aa406f19b0b862ee2ab092b00a9e60879c7e528e28cdb5908c languageName: node linkType: hard -"workbox-range-requests@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-range-requests@npm:6.4.2" +"workbox-range-requests@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-range-requests@npm:6.6.0" dependencies: - workbox-core: "npm:6.4.2" - checksum: 10c0/6a85b4482ee912e7b939a22463732c6d018609753f9cd47a3f754aeeb46f7c55ca1b56085c50287d661d0c5113fe6714b34511aeb50db2c6c3722c812fe71073 + workbox-core: "npm:6.6.0" + checksum: 10c0/3a25bc879aa1a3387d0333c54f36d760e2eceacddaecb9d77e9fe9df64038769209c69d2e572e347d6c05f132e26e6b3974dabb816739d72c116c6e524078864 languageName: node linkType: hard -"workbox-recipes@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-recipes@npm:6.4.2" +"workbox-recipes@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-recipes@npm:6.6.0" dependencies: - workbox-cacheable-response: "npm:6.4.2" - workbox-core: "npm:6.4.2" - workbox-expiration: "npm:6.4.2" - workbox-precaching: "npm:6.4.2" - workbox-routing: "npm:6.4.2" - workbox-strategies: "npm:6.4.2" - checksum: 10c0/8a11573d052022afac46efa9542fbe7f515292315e4d0deb31e58237ba9bbe658adf98edca3a9ff2203f4c3244277efbb8a39f9d9e6e79e77fc58841dc430c5a + workbox-cacheable-response: "npm:6.6.0" + workbox-core: "npm:6.6.0" + workbox-expiration: "npm:6.6.0" + workbox-precaching: "npm:6.6.0" + workbox-routing: "npm:6.6.0" + workbox-strategies: "npm:6.6.0" + checksum: 10c0/e0f92d2abacf5a10433bed4f931d8b7b377b5a11e02bdc7ab85b1d21e5d00010ad9dcb20d4aa306137661d296786fd279b21fd545bd526227b30c73c1f5a976f languageName: node linkType: hard -"workbox-routing@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-routing@npm:6.4.2" +"workbox-routing@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-routing@npm:6.6.0" dependencies: - workbox-core: "npm:6.4.2" - checksum: 10c0/2f60eca0925bc9ec6a7699357ac4c64009d81db12944fc391b990809c7c1ba059fef4fbb90f12877c07e74e6a2f37d50646c1444fb864b093d3d2a3f1566c421 + workbox-core: "npm:6.6.0" + checksum: 10c0/28a204a86aecf7af8bffd2eee2eb53f094e5d1fa0f510887a5749653a92fa414da2fc1fe8adb6382d74400bb8c75f152bb728df9d032f34af4c9b5f17b7b1daa languageName: node linkType: hard -"workbox-strategies@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-strategies@npm:6.4.2" +"workbox-strategies@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-strategies@npm:6.6.0" dependencies: - workbox-core: "npm:6.4.2" - checksum: 10c0/84253cc0c4682a94512a35d8b3f2f5e701213097f553dbe9f1a0c5eb4b8794f4078ea1e2f1b5e6dda68533c55b0d7b9e1f4586c5e2b7eeeec0673d38db50c048 + workbox-core: "npm:6.6.0" + checksum: 10c0/ba61b00d36afd27a9f52068b91bc8dbe14530f9816a81b6be31242ba3003e3ce77ae6e350f9dc8b97badb67083ce330f86a2d7e3cb7f929a1b012eb44081ca94 languageName: node linkType: hard -"workbox-streams@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-streams@npm:6.4.2" +"workbox-streams@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-streams@npm:6.6.0" dependencies: - workbox-core: "npm:6.4.2" - workbox-routing: "npm:6.4.2" - checksum: 10c0/a4f3260ef2127d0c911cabfafa9a5f6644d8422d09c2cba60d50780b001047399206b288e412c036c1941e240114a820f35f6ca0725ed5886f91cf488c5b79d9 + workbox-core: "npm:6.6.0" + workbox-routing: "npm:6.6.0" + checksum: 10c0/67b7c8a69c9551ca6411bc616f8838007017adf8ab530470b4350a4e20e57f4600276b214f73c8b8df69adf12e48920113f034802e8f2fc68f6bacb605974af6 languageName: node linkType: hard -"workbox-sw@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-sw@npm:6.4.2" - checksum: 10c0/350d5953e53c3e361f5c6f8f276e62f5d4c2c4dbb181ab234ebe3a39dc80d6f3d19eee50b592c25f6e051cf9fdf0b9a3e82d86897d8348ab5f829d0c077779d6 +"workbox-sw@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-sw@npm:6.6.0" + checksum: 10c0/e2388125ae46004a557dc66dba2bd43173e70f85e82a5279982ccfd3670a68ebb29d95d7e0ee106a54328a98d26fa2277f77984c8caebef9c9e93cdd75b70b95 languageName: node linkType: hard "workbox-webpack-plugin@npm:^6.4.1": - version: 6.4.2 - resolution: "workbox-webpack-plugin@npm:6.4.2" + version: 6.6.0 + resolution: "workbox-webpack-plugin@npm:6.6.0" dependencies: fast-json-stable-stringify: "npm:^2.1.0" pretty-bytes: "npm:^5.4.1" - source-map-url: "npm:^0.4.0" upath: "npm:^1.2.0" webpack-sources: "npm:^1.4.3" - workbox-build: "npm:6.4.2" + workbox-build: "npm:6.6.0" peerDependencies: webpack: ^4.4.0 || ^5.9.0 - checksum: 10c0/755f617b98efe03af12873c9a18aac568a286414255810b361d24ca50d2208abfcf2f5b2038571dc1331443559b7c8fbd58f056099a30e9c63fec6ff95590608 + checksum: 10c0/ade1388545d8f5c34b3ea73c6db80d03b19986a23d505a08601b685c0991652e7e3646c344f6ca2022d5a608fb66375efb8ad825d5e2cc6325e3a6c46a953b2e languageName: node linkType: hard -"workbox-window@npm:6.4.2": - version: 6.4.2 - resolution: "workbox-window@npm:6.4.2" +"workbox-window@npm:6.6.0": + version: 6.6.0 + resolution: "workbox-window@npm:6.6.0" dependencies: "@types/trusted-types": "npm:^2.0.2" - workbox-core: "npm:6.4.2" - checksum: 10c0/a5c8b35d338f8ffcc4df67c0e12be724e143af7cd7ae30f5a206faa8437d98002497942c8e321000d6a3f9656adf769f321626367eb8d8b3a6d9d5a3568cfdd4 + workbox-core: "npm:6.6.0" + checksum: 10c0/7e3fdfaa9d018644bf67ad51820838a18227ba612f8dbe13711e2ebdfd5e112ad5b165b50358eff3d0e7ced4bade49b456d4702254fcf57a3cfe193bd011e86b languageName: node linkType: hard @@ -20956,7 +19106,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.1.0, ws@npm:^8.2.3": +"ws@npm:^8.13.0, ws@npm:^8.2.3": version: 8.18.0 resolution: "ws@npm:8.18.0" peerDependencies: @@ -20985,7 +19135,7 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.0, xtend@npm:^4.0.2": +"xtend@npm:^4.0.0": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e @@ -21027,10 +19177,12 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.1.1": - version: 2.2.2 - resolution: "yaml@npm:2.2.2" - checksum: 10c0/a95bed9205a1f1cac11b315cb3f7ddf6b9979b85a478a18c86abf3066fd8d32c88f8de128c1ea97c2ac5f05de3268ff64e8286c241fd956851f1308044a50a9d +"yaml@npm:^2.3.4": + version: 2.6.0 + resolution: "yaml@npm:2.6.0" + bin: + yaml: bin.mjs + checksum: 10c0/9e74cdb91cc35512a1c41f5ce509b0e93cc1d00eff0901e4ba831ee75a71ddf0845702adcd6f4ee6c811319eb9b59653248462ab94fa021ab855543a75396ceb languageName: node linkType: hard @@ -21079,7 +19231,7 @@ __metadata: languageName: node linkType: hard -"zrender@npm:5.6.0": +"zrender@npm:5.6.0, zrender@npm:^5.1.1": version: 5.6.0 resolution: "zrender@npm:5.6.0" dependencies: @@ -21088,20 +19240,11 @@ __metadata: languageName: node linkType: hard -"zrender@npm:^5.1.1": - version: 5.4.3 - resolution: "zrender@npm:5.4.3" - dependencies: - tslib: "npm:2.3.0" - checksum: 10c0/6808e18cc87396828be07b7fcef9693e1a9bb22d77e580dbdbf9f352a573754f2ae02061b78f083f8bde0150503845807ab7e88092e7a3795dc5fc8360301c79 - languageName: node - linkType: hard - "zustand@npm:^4.4.1": - version: 4.5.2 - resolution: "zustand@npm:4.5.2" + version: 4.5.5 + resolution: "zustand@npm:4.5.5" dependencies: - use-sync-external-store: "npm:1.2.0" + use-sync-external-store: "npm:1.2.2" peerDependencies: "@types/react": ">=16.8" immer: ">=9.0.6" @@ -21113,13 +19256,13 @@ __metadata: optional: true react: optional: true - checksum: 10c0/aee26f11facebb39b016e89539f72a72c2c00151208907fc909c3cedd455728240e09e01d98ebd3b63a2a3518a5917eac5de6c853743ca55a1655296d750bb48 + checksum: 10c0/d04469d76b29c7e4070da269886de4efdadedd3d3824dc2a06ac4ff62e3b5877f925e927afe7382de651829872b99adec48082f1bd69fe486149be666345e626 languageName: node linkType: hard "zwitch@npm:^2.0.0": - version: 2.0.2 - resolution: "zwitch@npm:2.0.2" - checksum: 10c0/9424cade91458ceb4288cc9cbc76d9d055686de3cd5aa13bf447aed2d1ebd98ebb517c9d871e9f9bd92a44e0d63a0491d560adb0bd7e4d0de42c99320d9e04a4 + version: 2.0.4 + resolution: "zwitch@npm:2.0.4" + checksum: 10c0/3c7830cdd3378667e058ffdb4cf2bb78ac5711214e2725900873accb23f3dfe5f9e7e5a06dcdc5f29605da976fc45c26d9a13ca334d6eea2245a15e77b8fc06e languageName: node linkType: hard From b6f788f159e69ad7b8bebdd2adf4f812c645e36f Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Wed, 6 Nov 2024 20:26:17 +0700 Subject: [PATCH 07/85] WIP for showing detections benchmarks as a supported resource --- .../grouping/DetectionBenchmark/index.tsx | 240 ++--------- .../grouping/DetectionGrouping/index.tsx | 8 +- .../dashboards/grouping/common/Benchmark.ts | 4 +- .../dashboards/grouping/common/Control.ts | 4 +- .../dashboards/grouping/common/Detection.ts | 283 +++++++++++++ .../grouping/common/DetectionBenchmark.ts | 237 +++++++++++ .../dashboards/grouping/common/index.ts | 104 ++++- .../common/node/ControlEmptyResultNode.ts | 4 +- .../grouping/common/node/ControlErrorNode.ts | 4 +- .../grouping/common/node/ControlResultNode.ts | 6 +- .../common/node/ControlRunningNode.ts | 4 +- .../common/node/DetectionBenchmarkNode.ts | 15 + .../common/node/DetectionEmptyResultNode.ts | 48 +++ .../common/node/DetectionErrorNode.ts | 48 +++ .../common/node/DetectionHierarchyNode.ts | 91 +++++ .../common/node/DetectionKeyValuePairNode.ts | 29 ++ .../grouping/common/node/DetectionNode.ts | 15 + .../common/node/DetectionResultNode.ts | 63 +++ .../grouping/common/node/DetectionRootNode.ts | 10 + .../common/node/DetectionRunningNode.ts | 44 +++ .../grouping/common/node/HierarchyNode.ts | 8 +- .../grouping/common/node/KeyValuePairNode.ts | 4 +- .../src/hooks/useDetectionGrouping.tsx | 371 +++++------------- 23 files changed, 1159 insertions(+), 485 deletions(-) create mode 100644 ui/dashboard/src/components/dashboards/grouping/common/Detection.ts create mode 100644 ui/dashboard/src/components/dashboards/grouping/common/DetectionBenchmark.ts create mode 100644 ui/dashboard/src/components/dashboards/grouping/common/node/DetectionBenchmarkNode.ts create mode 100644 ui/dashboard/src/components/dashboards/grouping/common/node/DetectionEmptyResultNode.ts create mode 100644 ui/dashboard/src/components/dashboards/grouping/common/node/DetectionErrorNode.ts create mode 100644 ui/dashboard/src/components/dashboards/grouping/common/node/DetectionHierarchyNode.ts create mode 100644 ui/dashboard/src/components/dashboards/grouping/common/node/DetectionKeyValuePairNode.ts create mode 100644 ui/dashboard/src/components/dashboards/grouping/common/node/DetectionNode.ts create mode 100644 ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts create mode 100644 ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRootNode.ts create mode 100644 ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRunningNode.ts diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx index c3badfaa..8776cb11 100644 --- a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx @@ -11,14 +11,14 @@ import PanelControls from "@powerpipe/components/dashboards/layout/Panel/PanelCo import useGroupingFilterConfig from "@powerpipe/hooks/useGroupingFilterConfig"; import usePanelControls from "@powerpipe/hooks/usePanelControls"; import { - BenchmarkTreeProps, - CheckDisplayGroup, - CheckFilter, - CheckNode, - CheckSummary, -} from "../common"; + DetectionBenchmarkTreeProps, + DetectionDisplayGroup, + DetectionFilter, + DetectionNode, + DetectionSummary, +} from "@powerpipe/components/dashboards/grouping/common"; import { CardType } from "@powerpipe/components/dashboards/data/CardDataProcessor"; -import { default as BenchmarkType } from "../common/Benchmark"; +import { default as DetectionBenchmarkType } from "../common/DetectionBenchmark"; import { getComponent, registerComponent, @@ -39,19 +39,19 @@ import DateRangePicker from "./DateRangePicker/DateRangePicker"; const Table = getComponent("table"); type BenchmarkTableViewProps = { - benchmark: BenchmarkType; + benchmark: DetectionBenchmarkType; definition: PanelDefinition; }; type InnerCheckProps = { - benchmark: BenchmarkType; + benchmark: DetectionBenchmarkType; definition: PanelDefinition; diff_panels?: PanelsMap; - grouping: CheckNode; - groupingConfig: CheckDisplayGroup[]; - firstChildSummaries: CheckSummary[]; - diffFirstChildSummaries: CheckSummary[] | undefined; - diffGrouping: CheckNode | null; + grouping: DetectionNode; + groupingConfig: DetectionDisplayGroup[]; + firstChildSummaries: DetectionSummary[]; + diffFirstChildSummaries: DetectionSummary[] | undefined; + diffGrouping: DetectionNode | null; showControls: boolean; withTitle: boolean; }; @@ -98,212 +98,56 @@ const DetectionBenchmark = (props: InnerCheckProps) => { const totalSummary = props.firstChildSummaries.reduce( (cumulative, current) => { - cumulative.error += current.error; - cumulative.alarm += current.alarm; - cumulative.ok += current.ok; - cumulative.info += current.info; - cumulative.skip += current.skip; + cumulative.total += current.total; return cumulative; }, - { error: 0, alarm: 0, ok: 0, info: 0, skip: 0 }, + { total: 0 }, ); - let diffTotalSummary: CheckSummary | null = null; + let diffTotalSummary: DetectionSummary | null = null; if ( props.diffFirstChildSummaries && props.diffFirstChildSummaries?.length > 0 ) { diffTotalSummary = props.diffFirstChildSummaries.reduce( (cumulative, current) => { - cumulative.error += current.error; - cumulative.alarm += current.alarm; - cumulative.ok += current.ok; - cumulative.info += current.info; - cumulative.skip += current.skip; + cumulative.total += current.total; return cumulative; }, - { error: 0, alarm: 0, ok: 0, info: 0, skip: 0 }, + { total: 0 }, ); } - const summary_cards = [ + return [ { - name: `${props.definition.name}.container.summary.ok`, + name: `${props.definition.name}.container.summary.total`, width: 2, - display_type: totalSummary.ok > 0 ? "ok" : "skip", + display_type: totalSummary.total > 0 ? "alert" : "ok", properties: { - label: "OK", - value: totalSummary.ok, - // icon: "materialsymbols-solid:check", - icon: "materialsymbols-solid:check_circle", - // icon: "materialsymbols-outline:check_circle", + label: "Total Detections", + value: totalSummary.total, + icon: + totalSummary.total > 0 + ? "materialsymbols-solid:circle_notifications" + : "materialsymbols-solid:check_circle", }, diff_panel: !!diffTotalSummary ? { - name: `${props.definition.name}.container.summary.ok.diff`, + name: `${props.definition.name}.container.summary.total.diff`, width: 2, - display_type: diffTotalSummary.ok > 0 ? "ok" : "skip", + display_type: diffTotalSummary.total > 0 ? "ok" : "skip", properties: { - label: "OK", - value: diffTotalSummary.ok, - // icon: "materialsymbols-solid:check", - icon: "materialsymbols-solid:check_circle", - // icon: "materialsymbols-outline:check_circle", - }, - } - : null, - }, - { - name: `${props.definition.name}.container.summary.alarm`, - width: 2, - display_type: totalSummary.alarm > 0 ? "alert" : "skip", - properties: { - label: "Alarm", - value: totalSummary.alarm, - icon: "materialsymbols-solid:circle_notifications", - // icon: "materialsymbols-solid:circle_notifications", - // icon: "materialsymbols-outline:circle_notifications", - }, - diff_panel: !!diffTotalSummary - ? { - name: `${props.definition.name}.container.summary.alarm.diff`, - width: 2, - display_type: diffTotalSummary.alarm > 0 ? "alert" : "skip", - properties: { - label: "Alarm", - value: diffTotalSummary.alarm, - icon: "materialsymbols-solid:circle_notifications", - // icon: "materialsymbols-solid:circle_notifications", - // icon: "materialsymbols-outline:circle_notifications", - }, - } - : null, - }, - { - name: `${props.definition.name}.container.summary.error`, - width: 2, - display_type: totalSummary.error > 0 ? "alert" : "skip", - properties: { - label: "Error", - value: totalSummary.error, - // icon: "materialsymbols-solid:priority_high", - icon: "materialsymbols-solid:error", - // icon: "materialsymbols-outline:error", - }, - diff_panel: !!diffTotalSummary - ? { - name: `${props.definition.name}.container.summary.error.diff`, - width: 2, - display_type: diffTotalSummary.error > 0 ? "alert" : "skip", - properties: { - label: "Error", - value: diffTotalSummary.error, - // icon: "materialsymbols-solid:priority_high", - icon: "materialsymbols-solid:error", - // icon: "materialsymbols-outline:error", - }, - } - : null, - }, - { - name: `${props.definition.name}.container.summary.info`, - width: 2, - display_type: totalSummary.info > 0 ? "info" : "skip", - properties: { - label: "Info", - value: totalSummary.info, - // icon: "materialsymbols-solid:info_i", - icon: "materialsymbols-solid:info", - // icon: "materialsymbols-outline:info", - }, - diff_panel: !!diffTotalSummary - ? { - name: `${props.definition.name}.container.summary.info.diff`, - width: 2, - display_type: diffTotalSummary.info > 0 ? "info" : "skip", - properties: { - label: "Info", - value: diffTotalSummary.info, - // icon: "materialsymbols-solid:info_i", - icon: "materialsymbols-solid:info", - // icon: "materialsymbols-outline:info", - }, - } - : null, - }, - { - name: `${props.definition.name}.container.summary.skip`, - width: 2, - display_type: "skip", - properties: { - label: "Skipped", - value: totalSummary.skip, - // icon: "materialsymbols-solid:arrow_right_alt", - icon: "materialsymbols-solid:arrow_circle_right", - // icon: "materialsymbols-outline:arrow_circle_right", - }, - diff_panel: !!diffTotalSummary - ? { - name: `${props.definition.name}.container.summary.skip.diff`, - width: 2, - display_type: "skip", - properties: { - label: "Skipped", - value: diffTotalSummary.skip, - // icon: "materialsymbols-solid:arrow_right_alt", - icon: "materialsymbols-solid:arrow_circle_right", - // icon: "materialsymbols-solid:arrow_circle_right", - // icon: "materialsymbols-outline:arrow_circle_right", + label: "Total Detections", + value: totalSummary.total, + icon: + totalSummary.total > 0 + ? "materialsymbols-solid:circle_notifications" + : "materialsymbols-solid:check_circle", }, } : null, }, ]; - - const severity_summary = props.grouping.severity_summary; - const criticalRaw = severity_summary["critical"]; - const highRaw = severity_summary["high"]; - const critical = criticalRaw || 0; - const high = highRaw || 0; - - // Calc diff vs previous - const diff_severity_summary = props.diffGrouping?.severity_summary; - let diffCriticalRaw, diffHighRaw, diffCritical, diffHigh; - if (diff_severity_summary) { - diffCriticalRaw = diff_severity_summary["critical"]; - diffHighRaw = diff_severity_summary["high"]; - diffCritical = diffCriticalRaw || 0; - diffHigh = diffHighRaw || 0; - } - - // If we have at least 1 critical or undefined control defined in this run - if (criticalRaw !== undefined || highRaw !== undefined) { - const total = critical + high; - const diffTotal = diffCritical + diffHigh; - summary_cards.push({ - name: `${props.definition.name}.container.summary.severity`, - width: 2, - display_type: total > 0 ? "severity" : "", - properties: { - label: "Critical / High", - value: total, - icon: "materialsymbols-solid:warning", - }, - diff_panel: diff_severity_summary - ? { - name: `${props.definition.name}.container.summary.severity.diff`, - width: 2, - display_type: diffTotal > 0 ? "severity" : "", - properties: { - label: "Critical / High", - value: diffTotal, - icon: "materialsymbols-solid:warning", - }, - } - : null, - }); - } - return summary_cards; }, [ props.firstChildSummaries, props.diffFirstChildSummaries, @@ -324,12 +168,12 @@ const DetectionBenchmark = (props: InnerCheckProps) => { const expressionHasFilter = !!expressions?.find( (expr) => expr.type === "status", ); - let newFilter: CheckFilter; + let newFilter: DetectionFilter; if (expressionHasFilter) { newFilter = { operator: "and", expressions: expressions?.filter((expr) => expr.type !== "status"), - } as CheckFilter; + } as DetectionFilter; if (validateFilter(newFilter)) { setSearchParams((prev) => { const newParams = new URLSearchParams(prev); @@ -355,7 +199,7 @@ const DetectionBenchmark = (props: InnerCheckProps) => { operator: "equal", title: filterName, }), - } as CheckFilter; + } as DetectionFilter; if (validateFilter(newFilter)) { setSearchParams((prev) => { const newParams = new URLSearchParams(prev); @@ -436,7 +280,7 @@ const DetectionBenchmark = (props: InnerCheckProps) => { })} - { ); }; -const BenchmarkTree = (props: BenchmarkTreeProps) => { +const DetectionTree = (props: DetectionBenchmarkTreeProps) => { + console.log(props); + if (!props.properties || !props.properties.first_child_summaries) { return null; } diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx index 80a645a4..4eb92774 100644 --- a/ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx @@ -5,14 +5,14 @@ import { GroupingActions, useDetectionGrouping, } from "@powerpipe/hooks/useDetectionGrouping"; -import { CheckNode } from "../common"; +import { DetectionNode } from "../common"; import { useCallback, useEffect, useState } from "react"; -type CheckGroupingProps = { - node: CheckNode; +type DetectionGroupingProps = { + node: DetectionNode; }; -const DetectionGrouping = ({ node }: CheckGroupingProps) => { +const DetectionGrouping = ({ node }: DetectionGroupingProps) => { const { dispatch, nodeStates } = useDetectionGrouping(); const [restoreNodeStates, setRestoreNodeStates] = useState(null); diff --git a/ui/dashboard/src/components/dashboards/grouping/common/Benchmark.ts b/ui/dashboard/src/components/dashboards/grouping/common/Benchmark.ts index 22bc0325..08aea28b 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/Benchmark.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/Benchmark.ts @@ -7,7 +7,7 @@ import { CheckDynamicColsMap, CheckNode, CheckNodeStatus, - CheckNodeType, + GroupingNodeType, CheckResult, CheckSeveritySummary, CheckSummary, @@ -134,7 +134,7 @@ class Benchmark implements CheckNode { return this._title || this._name; } - get type(): CheckNodeType { + get type(): GroupingNodeType { return "benchmark"; } diff --git a/ui/dashboard/src/components/dashboards/grouping/common/Control.ts b/ui/dashboard/src/components/dashboards/grouping/common/Control.ts index 60098018..d1141280 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/Control.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/Control.ts @@ -4,7 +4,7 @@ import { CheckDynamicColsMap, CheckNode, CheckNodeStatus, - CheckNodeType, + GroupingNodeType, CheckResult, CheckResultStatus, CheckSeverity, @@ -111,7 +111,7 @@ class Control implements CheckNode { return {}; } - get type(): CheckNodeType { + get type(): GroupingNodeType { return "control"; } diff --git a/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts b/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts new file mode 100644 index 00000000..e5ca21a8 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts @@ -0,0 +1,283 @@ +import { + AddDetectionResultsAction, + DetectionDynamicColsMap, + CheckNodeStatus, + GroupingNodeType, + DetectionResult, + CheckResultStatus, + CheckSeveritySummary, + DetectionSummary, + CheckTags, + DetectionNode, + findDimension, +} from "@powerpipe/components/dashboards/grouping/common"; +import { DashboardRunState } from "@powerpipe/types"; +import { + LeafNodeData, + LeafNodeDataColumn, + LeafNodeDataRow, +} from "@powerpipe/components/dashboards/common"; +import DetectionBenchmark from "@powerpipe/components/dashboards/grouping/common/DetectionBenchmark"; + +class Detection implements DetectionNode { + private readonly _sortIndex: string; + private readonly _group_id: string; + private readonly _group_title: string | undefined; + private readonly _group_description: string | undefined; + private readonly _name: string; + private readonly _title: string | undefined; + private readonly _description: string | undefined; + private readonly _results: DetectionResult[]; + private readonly _summary: DetectionSummary; + private readonly _tags: CheckTags; + private readonly _status: DashboardRunState; + private readonly _error: string | undefined; + + constructor( + sortIndex: string, + group_id: string, + group_title: string | undefined, + group_description: string | undefined, + name: string, + title: string | undefined, + description: string | undefined, + data: LeafNodeData | undefined, + summary: DetectionSummary | undefined, + tags: CheckTags | undefined, + status: DashboardRunState, + error: string | undefined, + detection_benchmark_trunk: DetectionBenchmark[], + add_detection_results: AddDetectionResultsAction, + ) { + this._sortIndex = sortIndex; + this._group_id = group_id; + this._group_title = group_title; + this._group_description = group_description; + this._name = name; + this._title = title; + this._description = description; + this._results = this._build_check_results(data); + this._summary = summary || { + total: 0, + }; + this._tags = tags || {}; + this._status = status; + this._error = error; + + if ( + this._status === "initialized" || + this._status === "blocked" || + this._status === "running" + ) { + add_detection_results([ + this._build_detection_loading_node(detection_benchmark_trunk), + ]); + } else if (this._error) { + add_detection_results([ + this._build_detection_error_node( + detection_benchmark_trunk, + this._error, + ), + ]); + } else if (!this._results || this._results.length === 0) { + add_detection_results([ + this._build_detection_empty_result(detection_benchmark_trunk), + ]); + } else { + add_detection_results( + this._build_detection_results(detection_benchmark_trunk, this._results), + ); + } + } + + get sort(): string { + return `${this._sortIndex}-${this.title}`; + } + + get name(): string { + return this._name; + } + + get title(): string { + return this._title || this._name; + } + + get severity_summary(): CheckSeveritySummary { + return {}; + } + + get type(): GroupingNodeType { + return "detection"; + } + + get summary(): DetectionSummary { + return this._summary; + } + + get error(): string | undefined { + return this._error; + } + + get status(): CheckNodeStatus { + switch (this._status) { + case "initialized": + case "blocked": + case "running": + return "running"; + default: + return "complete"; + } + } + + get results(): DetectionResult[] { + return this._results; + } + + get tags(): CheckTags { + return this._tags; + } + + get_dynamic_cols(): DetectionDynamicColsMap { + const dimensionKeysMap = { + dimensions: {}, + tags: {}, + }; + + Object.keys(this._tags).forEach((t) => (dimensionKeysMap.tags[t] = true)); + + if (this._results.length === 0) { + return dimensionKeysMap; + } + for (const result of this._results) { + for (const dimension of result.dimensions || []) { + dimensionKeysMap.dimensions[dimension.key] = true; + } + } + return dimensionKeysMap; + } + + get_data_rows(tags: string[], dimensions: string[]): LeafNodeDataRow[] { + let rows: LeafNodeDataRow[] = []; + this._results.forEach((result) => { + const row: LeafNodeDataRow = { + group_id: this._group_id, + title: this._group_title ? this._group_title : null, + description: this._group_description ? this._group_description : null, + detection_id: this._name, + detection_title: this._title ? this._title : null, + detection_description: this._description ? this._description : null, + reason: result.reason, + resource: result.resource, + status: result.status, + }; + + tags.forEach((tag) => { + const val = this._tags[tag]; + row[tag] = val === undefined ? null : val; + }); + + dimensions.forEach((dimension) => { + const val = findDimension(result.dimensions, dimension); + row[dimension] = val === undefined ? null : val.value; + }); + + rows.push(row); + }); + return rows; + } + + private _build_detection_loading_node = ( + detection_benchmark_trunk: DetectionBenchmark[], + ): DetectionResult => { + return { + type: "loading", + dimensions: [], + tags: this.tags, + detection: this, + reason: "", + resource: "", + status: CheckResultStatus.ok, + detection_benchmark_trunk, + }; + }; + + private _build_detection_error_node = ( + detection_benchmark_trunk: DetectionBenchmark[], + error: string, + ): DetectionResult => { + return { + type: "error", + error, + dimensions: [], + tags: this.tags, + detection: this, + reason: "", + resource: "", + status: CheckResultStatus.error, + detection_benchmark_trunk, + }; + }; + + private _build_detection_empty_result = ( + detection_benchmark_trunk: DetectionBenchmark[], + ): DetectionResult => { + return { + type: "empty", + error: undefined, + dimensions: [], + tags: this.tags, + detection: this, + reason: "", + resource: "", + status: CheckResultStatus.empty, + detection_benchmark_trunk, + }; + }; + + private _build_detection_results = ( + detection_benchmark_trunk: DetectionBenchmark[], + results: DetectionResult[], + ): DetectionResult[] => { + return results.map((r) => ({ + ...r, + type: "result", + tags: this.tags, + detection_benchmark_trunk, + detection: this, + })); + }; + + private _build_check_results = (data?: LeafNodeData): DetectionResult[] => { + if (!data || !data.columns || !data.rows) { + return []; + } + const results: DetectionResult[] = []; + const dimensionColumns: LeafNodeDataColumn[] = []; + for (const col of data.columns) { + if ( + col.name === "reason" || + col.name === "resource" || + col.name === "status" + ) { + continue; + } + dimensionColumns.push(col); + } + for (const row of data.rows) { + const result = { + reason: row.reason, + resource: row.resource, + status: row.status, + dimensions: dimensionColumns.map((col) => ({ + key: col.name, + value: row[col.name], + })), + }; + // @ts-ignore + results.push(result); + } + return results; + }; +} + +export default Detection; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/DetectionBenchmark.ts b/ui/dashboard/src/components/dashboards/grouping/common/DetectionBenchmark.ts new file mode 100644 index 00000000..96a123fe --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/common/DetectionBenchmark.ts @@ -0,0 +1,237 @@ +import Detection from "@powerpipe/components/dashboards/grouping/common/Detection"; +import merge from "lodash/merge"; +import padStart from "lodash/padStart"; +import { + AddDetectionResultsAction, + DetectionDynamicColsMap, + DetectionNode, + DetectionNodeStatus, + GroupingNodeType, + DetectionResult, + DetectionRun, + DetectionSummary, +} from "@powerpipe/components/dashboards/grouping/common"; +import { DashboardLayoutNode, PanelsMap } from "@powerpipe/types"; +import { + LeafNodeData, + LeafNodeDataColumn, + LeafNodeDataRow, +} from "@powerpipe/components/dashboards/common"; + +class DetectionBenchmark implements DetectionNode { + private readonly _sortIndex: string; + private readonly _name: string; + private readonly _title: string; + private readonly _description?: string; + private readonly _benchmarks: DetectionBenchmark[]; + private readonly _detections: Detection[]; + private readonly _add_detection_results: AddDetectionResultsAction; + private readonly _all_detection_results: DetectionResult[]; + + constructor( + sortIndex: string, + name: string, + title: string | undefined, + description: string | undefined, + benchmarks: DashboardLayoutNode[] | undefined, + detections: DashboardLayoutNode[] | undefined, + panelsMap: PanelsMap, + trunk: DetectionBenchmark[], + add_detection_results?: AddDetectionResultsAction, + ) { + this._sortIndex = sortIndex; + this._all_detection_results = []; + this._name = name; + this._title = title || name; + this._description = description; + + if (!add_detection_results) { + this._add_detection_results = this.add_detection_results; + } else { + this._add_detection_results = add_detection_results; + } + + const thisTrunk = [...trunk, this]; + const nestedBenchmarks: DetectionBenchmark[] = []; + const benchmarksToAdd = benchmarks || []; + const lengthMaxBenchmarkIndex = (benchmarksToAdd.length - 1).toString() + .length; + benchmarksToAdd.forEach((nestedBenchmark, benchmarkIndex) => { + const nestedDefinition = panelsMap[nestedBenchmark.name]; + // @ts-ignore + const benchmarks = nestedBenchmark.children?.filter( + (child) => child.panel_type === "benchmark", + ); + // @ts-ignore + const detections = nestedBenchmark.children?.filter( + (child) => child.panel_type === "detection", + ); + nestedBenchmarks.push( + new DetectionBenchmark( + `benchmark-${padStart( + benchmarkIndex.toString(), + lengthMaxBenchmarkIndex, + )}`, + nestedDefinition.name, + nestedDefinition.title, + nestedDefinition.description, + benchmarks, + detections, + panelsMap, + thisTrunk, + this._add_detection_results, + ), + ); + }); + const nestedDetections: Detection[] = []; + const detectionsToAdd = detections || []; + const lengthMaxDetectionIndex = (detectionsToAdd.length - 1).toString() + .length; + detectionsToAdd.forEach((nestedDetection, detectionIndex) => { + // @ts-ignore + const detection = panelsMap[nestedDetection.name] as DetectionRun; + nestedDetections.push( + new Detection( + `detection-${padStart(detectionIndex.toString(), lengthMaxDetectionIndex)}`, + this._name, + this._title, + this._description, + detection.name, + detection.title, + detection.description, + detection.data, + detection.summary, + detection.tags, + detection.status, + detection.error, + thisTrunk, + this._add_detection_results, + ), + ); + }); + this._benchmarks = nestedBenchmarks; + this._detections = nestedDetections; + } + + private add_detection_results = (results: DetectionResult[]) => { + this._all_detection_results.push(...results); + }; + + get all_detection_results(): DetectionResult[] { + return this._all_detection_results; + } + + get sort(): string { + return `${this._sortIndex}-${this.title}`; + } + + get name(): string { + return this._name; + } + + get title(): string { + return this._title || this._name; + } + + get type(): GroupingNodeType { + return "benchmark"; + } + + get children(): DetectionNode[] { + return [...this._benchmarks, ...this._detections]; + } + + get detectionBenchmarks(): DetectionBenchmark[] { + return this._benchmarks; + } + + get detections(): Detection[] { + return this._detections; + } + + get summary(): DetectionSummary { + const summary = { + total: 0, + }; + for (const benchmark of this._benchmarks) { + const nestedSummary = benchmark.summary; + summary.total += nestedSummary.total; + } + for (const detection of this._detections) { + const nestedSummary = detection.summary; + summary.total += nestedSummary.total; + } + return summary; + } + + get status(): DetectionNodeStatus { + for (const benchmark of this._benchmarks) { + if (benchmark.status === "running") { + return "running"; + } + } + for (const detection of this._detections) { + if (detection.status === "running") { + return "running"; + } + } + return "complete"; + } + + get_data_table(): LeafNodeData { + const columns: LeafNodeDataColumn[] = [ + { + name: "timestamp", + data_type: "TIMESTAMP", + }, + ]; + const { dimensions, tags } = this.get_dynamic_cols(); + Object.keys(tags).forEach((tag) => + columns.push({ + name: tag, + data_type: "TEXT", + }), + ); + Object.keys(dimensions).forEach((dimension) => + columns.push({ + name: dimension, + data_type: "TEXT", + }), + ); + const rows = this.get_data_rows(Object.keys(tags), Object.keys(dimensions)); + + return { + columns, + rows, + }; + } + + get_dynamic_cols(): DetectionDynamicColsMap { + let keys = { + dimensions: {}, + tags: {}, + }; + this._benchmarks.forEach((benchmark) => { + const subBenchmarkKeys = benchmark.get_dynamic_cols(); + keys = merge(keys, subBenchmarkKeys); + }); + this._detections.forEach((detection) => { + const controlKeys = detection.get_dynamic_cols(); + keys = merge(keys, controlKeys); + }); + return keys; + } + + get_data_rows(tags: string[], dimensions: string[]): LeafNodeDataRow[] { + let rows: LeafNodeDataRow[] = []; + this._benchmarks.forEach((benchmark) => { + rows = [...rows, ...benchmark.get_data_rows(tags, dimensions)]; + }); + this._detections.forEach((detection) => { + rows = [...rows, ...detection.get_data_rows(tags, dimensions)]; + }); + return rows; + } +} + +export default DetectionBenchmark; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/index.ts b/ui/dashboard/src/components/dashboards/grouping/common/index.ts index 0ec93512..f79b0a7f 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/index.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/index.ts @@ -1,4 +1,5 @@ import Benchmark from "./Benchmark"; +import DetectionBenchmark from "@powerpipe/components/dashboards/grouping/common/DetectionBenchmark"; import { BasePrimitiveProps, ExecutablePrimitiveProps, @@ -6,10 +7,13 @@ import { } from "../../common"; import { DashboardRunState } from "@powerpipe/types"; -export type CheckNodeType = +export type GroupingNodeType = | "benchmark" | "control" | "control_tag" + | "detection_benchmark" + | "detection" + | "detection_tag" | "dimension" | "empty_result" | "error" @@ -25,7 +29,7 @@ export type CheckNode = { sort: string; name: string; title: string; - type: CheckNodeType; + type: GroupingNodeType; status: CheckNodeStatus; severity?: CheckSeverity; severity_summary: CheckSeveritySummary; @@ -36,8 +40,23 @@ export type CheckNode = { merge?: (other: CheckNode) => void; }; +export type DetectionNode = { + sort: string; + name: string; + title: string; + type: GroupingNodeType; + status: CheckNodeStatus; + summary: DetectionSummary; + children?: DetectionNode[]; + data?: LeafNodeData; + error?: string; + merge?: (other: DetectionNode) => void; +}; + export type CheckNodeStatus = "running" | "complete"; +export type DetectionNodeStatus = "running" | "complete"; + export type CheckSeverity = "none" | "low" | "medium" | "high" | "critical"; export type CheckSeveritySummary = @@ -54,6 +73,10 @@ export type CheckSummary = { error: number; }; +export type DetectionSummary = { + total: number; +}; + export type CheckDynamicValueMap = { [dimension: string]: boolean; }; @@ -63,15 +86,29 @@ export type CheckDynamicColsMap = { tags: CheckDynamicValueMap; }; +export type DetectionDynamicColsMap = { + dimensions: CheckDynamicValueMap; + tags: CheckDynamicValueMap; +}; + export type CheckTags = { [key: string]: string; }; +export type DetectionTags = { + [key: string]: string; +}; + export type CheckResultDimension = { key: string; value: string; }; +export type DetectionResultDimension = { + key: string; + value: string; +}; + export enum CheckResultStatus { alarm = "alarm", ok = "ok", @@ -96,6 +133,18 @@ export type CheckResult = { type: CheckResultType; }; +export type DetectionResult = { + dimensions: CheckResultDimension[]; + tags: CheckTags; + detection: DetectionNode; + detection_benchmark_trunk: DetectionBenchmark[]; + status: CheckResultStatus; + reason: string; + resource: string; + error?: string; + type: CheckResultType; +}; + type CheckControlRunProperties = { severity?: CheckSeverity | undefined; }; @@ -114,6 +163,18 @@ export type CheckControlRun = { error?: string; }; +export type DetectionRun = { + name: string; + title?: string; + description?: string; + panel_type: "detection"; + tags?: CheckTags; + data: LeafNodeData; + summary: DetectionSummary; + status: DashboardRunState; + error?: string; +}; + export type CheckDisplayGroupType = | "benchmark" | "control" @@ -126,12 +187,28 @@ export type CheckDisplayGroupType = | "status" | string; +export type DetectionDisplayGroupType = + | "benchmark" + | "detection" + | "detection_tag" + | "result" + | "dimension" + | "status" + | string; + export type CheckDisplayGroup = { type: CheckDisplayGroupType; value?: string | undefined; }; -export type CheckFilterOperator = "and" | "equal"; +export type DetectionDisplayGroup = { + type: DetectionDisplayGroupType; + value?: string | undefined; +}; + +type BaseOperator = "and" | "equal"; +export type CheckFilterOperator = BaseOperator; +export type DetectionFilterOperator = BaseOperator; export type CheckFilter = { operator: CheckFilterOperator; @@ -142,8 +219,19 @@ export type CheckFilter = { expressions?: CheckFilter[]; }; +export type DetectionFilter = { + operator: DetectionFilterOperator; + type?: DetectionFilterType; + key?: string; + value?: string; + title?: string; + expressions?: DetectionFilter[]; +}; + export type CheckFilterType = CheckDisplayGroupType; +export type DetectionFilterType = DetectionDisplayGroupType; + export type BenchmarkTreeProps = BasePrimitiveProps & ExecutablePrimitiveProps & { properties: { @@ -152,8 +240,18 @@ export type BenchmarkTreeProps = BasePrimitiveProps & }; }; +export type DetectionBenchmarkTreeProps = BasePrimitiveProps & + ExecutablePrimitiveProps & { + properties: { + grouping: DetectionNode; + first_child_summaries: DetectionSummary[]; + }; + }; + export type AddControlResultsAction = (results: CheckResult[]) => void; +export type AddDetectionResultsAction = (results: DetectionResult[]) => void; + export const findDimension = ( dimensions?: CheckResultDimension[], key?: string, diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/ControlEmptyResultNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlEmptyResultNode.ts index fcf4e898..32e8dca1 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/ControlEmptyResultNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlEmptyResultNode.ts @@ -1,6 +1,6 @@ import { CheckNodeStatus, - CheckNodeType, + GroupingNodeType, CheckSummary, CheckNode, CheckResult, @@ -30,7 +30,7 @@ class ControlEmptyResultNode implements CheckNode { return this._result; } - get type(): CheckNodeType { + get type(): GroupingNodeType { return "empty_result"; } diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/ControlErrorNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlErrorNode.ts index 037fdfd7..3974dda4 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/ControlErrorNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlErrorNode.ts @@ -1,6 +1,6 @@ import { CheckNodeStatus, - CheckNodeType, + GroupingNodeType, CheckSummary, CheckNode, CheckResult, @@ -30,7 +30,7 @@ class ControlErrorNode implements CheckNode { return this._result.control.error || "Unknown error"; } - get type(): CheckNodeType { + get type(): GroupingNodeType { return "error"; } diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/ControlResultNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlResultNode.ts index dbd49d9f..a0627154 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/ControlResultNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlResultNode.ts @@ -1,6 +1,6 @@ import { CheckNodeStatus, - CheckNodeType, + GroupingNodeType, CheckSummary, CheckNode, CheckResult, @@ -13,7 +13,7 @@ import { // constructor( // result: CheckResult, // sort: string, -// type: CheckNodeType, +// type: GroupingNodeType, // key: string, // value: string, // children?: CheckNode[], @@ -45,7 +45,7 @@ class ControlResultNode implements CheckNode { return this._result; } - get type(): CheckNodeType { + get type(): GroupingNodeType { return "result"; } diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/ControlRunningNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlRunningNode.ts index 21d99885..580c63fc 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/ControlRunningNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/ControlRunningNode.ts @@ -1,6 +1,6 @@ import { CheckNodeStatus, - CheckNodeType, + GroupingNodeType, CheckSummary, CheckNode, CheckResult, @@ -26,7 +26,7 @@ class ControlRunningNode implements CheckNode { return this._result.control.title || this.name; } - get type(): CheckNodeType { + get type(): GroupingNodeType { return "running"; } diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionBenchmarkNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionBenchmarkNode.ts new file mode 100644 index 00000000..383a4850 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionBenchmarkNode.ts @@ -0,0 +1,15 @@ +import DetectionHierarchyNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionHierarchyNode"; +import { DetectionNode } from "../index"; + +class DetectionBenchmarkNode extends DetectionHierarchyNode { + constructor( + sort: string, + name: string, + title: string | undefined, + children?: DetectionNode[], + ) { + super("detection_benchmark", name, title || name, sort, children || []); + } +} + +export default DetectionBenchmarkNode; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionEmptyResultNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionEmptyResultNode.ts new file mode 100644 index 00000000..bf862413 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionEmptyResultNode.ts @@ -0,0 +1,48 @@ +import { + CheckNodeStatus, + GroupingNodeType, + DetectionSummary, + DetectionResult, + DetectionNode, +} from "@powerpipe/components/dashboards/grouping/common"; + +class DetectionEmptyResultNode implements DetectionNode { + private readonly _result: DetectionResult; + + constructor(result: DetectionResult) { + this._result = result; + } + + get sort(): string { + return this.title; + } + + get name(): string { + return this._result.detection.name; + } + + get title(): string { + return "No results"; + } + + get result(): DetectionResult { + return this._result; + } + + get type(): GroupingNodeType { + return "empty_result"; + } + + get summary(): DetectionSummary { + return { + total: 0, + }; + } + + get status(): CheckNodeStatus { + // If a control has no results, this node is complete + return "complete"; + } +} + +export default DetectionEmptyResultNode; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionErrorNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionErrorNode.ts new file mode 100644 index 00000000..b33baac9 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionErrorNode.ts @@ -0,0 +1,48 @@ +import { + DetectionNodeStatus, + GroupingNodeType, + DetectionSummary, + DetectionNode, + DetectionResult, +} from "../index"; + +class DetectionErrorNode implements DetectionNode { + private readonly _result: DetectionResult; + + constructor(result: DetectionResult) { + this._result = result; + } + + get sort(): string { + return this.title; + } + + get name(): string { + return this._result.detection.name; + } + + get title(): string { + return this._result.detection.title || this.name; + } + + get error(): string { + return this._result.detection.error || "Unknown error"; + } + + get type(): GroupingNodeType { + return "error"; + } + + get summary(): DetectionSummary { + return { + total: 1, + }; + } + + get status(): DetectionNodeStatus { + // If a control has gone to error, this node is complete + return "complete"; + } +} + +export default DetectionErrorNode; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionHierarchyNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionHierarchyNode.ts new file mode 100644 index 00000000..946e7b46 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionHierarchyNode.ts @@ -0,0 +1,91 @@ +import { + DetectionNode, + DetectionSummary, + DetectionNodeStatus, + GroupingNodeType, +} from "../index"; + +class DetectionHierarchyNode implements DetectionNode { + private readonly _type: GroupingNodeType; + private readonly _name: string; + private readonly _title: string; + private readonly _sort: string; + private readonly _children: DetectionNode[]; + + constructor( + type: GroupingNodeType, + name: string, + title: string, + sort: string, + children: DetectionNode[], + ) { + this._type = type; + this._name = name; + this._title = title; + this._sort = sort; + this._children = children; + } + + get type(): GroupingNodeType { + return this._type; + } + + get name(): string { + return this._name; + } + + get title(): string { + return this._title; + } + + get sort(): string { + return this._sort; + } + + get children(): DetectionNode[] { + return this._children; + } + + get summary(): DetectionSummary { + const summary = { + total: 0, + }; + for (const child of this._children) { + const nestedSummary = child.summary; + summary.total += nestedSummary.total; + } + return summary; + } + + get status(): DetectionNodeStatus { + for (const child of this._children) { + if (child.status === "running") { + return "running"; + } + } + return "complete"; + } + + merge(other: DetectionNode) { + // merge(other) -> iterate children of other -> if child exists on me, call me_child.merge(other_child), else add to end of children + for (const otherChild of other.children || []) { + // Check for existing child with this name + const matchingSelfChild = this.children.find( + (selfChild) => selfChild.name === otherChild.name, + ); + + if (matchingSelfChild) { + if (!matchingSelfChild.merge) { + continue; + } + // If there's a matching child, merge that child in + matchingSelfChild.merge(otherChild); + } else { + // Else append to my children + this.children.push(otherChild); + } + } + } +} + +export default DetectionHierarchyNode; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionKeyValuePairNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionKeyValuePairNode.ts new file mode 100644 index 00000000..c508369a --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionKeyValuePairNode.ts @@ -0,0 +1,29 @@ +import DetectionHierarchyNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionHierarchyNode"; +import { GroupingNodeType, DetectionNode } from "../index"; + +class DetectionKeyValuePairNode extends DetectionHierarchyNode { + private readonly _key: string; + private readonly _value: string; + + constructor( + sort: string, + type: GroupingNodeType, + key: string, + value: string, + children?: DetectionNode[], + ) { + super(type, `${key}=${value}`, value, sort, children || []); + this._key = key; + this._value = value; + } + + get key(): string { + return this._key; + } + + get value(): string { + return this._value; + } +} + +export default DetectionKeyValuePairNode; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionNode.ts new file mode 100644 index 00000000..cc2df448 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionNode.ts @@ -0,0 +1,15 @@ +import DetectionHierarchyNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionHierarchyNode"; +import { DetectionNode } from "../index"; + +class ControlNode extends DetectionHierarchyNode { + constructor( + sort: string, + name: string, + title: string | undefined, + children?: DetectionNode[], + ) { + super("detection", name, title || name, sort, children || []); + } +} + +export default ControlNode; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts new file mode 100644 index 00000000..204577b6 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts @@ -0,0 +1,63 @@ +import { + CheckNodeStatus, + GroupingNodeType, + DetectionSummary, + DetectionResult, + DetectionNode, +} from "../index"; + +// class ControlResultNode extends HierarchyNode { +// private readonly _result: CheckResult; +// +// constructor( +// result: CheckResult, +// sort: string, +// type: GroupingNodeType, +// key: string, +// value: string, +// children?: CheckNode[], +// ) { +// super(type, `${key}=${value}`, value, sort, children || []); +// this._result = result; +// } + +class DetectionResultNode implements DetectionNode { + private readonly _result: DetectionResult; + + constructor(result: DetectionResult) { + this._result = result; + } + + get sort(): string { + return "0"; + } + + get name(): string { + return `${this._result.detection.name}-${this._result.resource}`; + } + + get title(): string { + return this._result.reason; + } + + get result(): DetectionResult { + return this._result; + } + + get type(): GroupingNodeType { + return "result"; + } + + get summary(): DetectionSummary { + return { + total: 1, + }; + } + + get status(): CheckNodeStatus { + // If we have results, this node is complete + return "complete"; + } +} + +export default DetectionResultNode; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRootNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRootNode.ts new file mode 100644 index 00000000..e7d88446 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRootNode.ts @@ -0,0 +1,10 @@ +import DetectionHierarchyNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionHierarchyNode"; +import { DetectionNode } from "../index"; + +class RootNode extends DetectionHierarchyNode { + constructor(children?: DetectionNode[]) { + super("root", "root", "Root", "root", children || []); + } +} + +export default RootNode; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRunningNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRunningNode.ts new file mode 100644 index 00000000..74f32b39 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRunningNode.ts @@ -0,0 +1,44 @@ +import { + GroupingNodeType, + DetectionNode, + DetectionNodeStatus, + DetectionSummary, + DetectionResult, +} from "../index"; + +class DetectionRunningNode implements DetectionNode { + private readonly _result: DetectionResult; + + constructor(result: DetectionResult) { + this._result = result; + } + + get sort(): string { + return this.title; + } + + get name(): string { + return this._result.detection.name; + } + + get title(): string { + return this._result.detection.title || this.name; + } + + get type(): GroupingNodeType { + return "running"; + } + + get summary(): DetectionSummary { + return { + total: 0, + }; + } + + get status(): DetectionNodeStatus { + // This will bubble up through the hierarchy and put all ancestral nodes in a running state + return "running"; + } +} + +export default DetectionRunningNode; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/HierarchyNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/HierarchyNode.ts index 331727c0..624dc88d 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/HierarchyNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/HierarchyNode.ts @@ -1,20 +1,20 @@ import { CheckNode, CheckNodeStatus, - CheckNodeType, + GroupingNodeType, CheckSeveritySummary, CheckSummary, } from "../index"; class HierarchyNode implements CheckNode { - private readonly _type: CheckNodeType; + private readonly _type: GroupingNodeType; private readonly _name: string; private readonly _title: string; private readonly _sort: string; private readonly _children: CheckNode[]; constructor( - type: CheckNodeType, + type: GroupingNodeType, name: string, title: string, sort: string, @@ -27,7 +27,7 @@ class HierarchyNode implements CheckNode { this._children = children; } - get type(): CheckNodeType { + get type(): GroupingNodeType { return this._type; } diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/KeyValuePairNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/KeyValuePairNode.ts index e1f750a1..7f914985 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/KeyValuePairNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/KeyValuePairNode.ts @@ -1,5 +1,5 @@ import HierarchyNode from "./HierarchyNode"; -import { CheckNodeType, CheckNode } from "../index"; +import { GroupingNodeType, CheckNode } from "../index"; class KeyValuePairNode extends HierarchyNode { private readonly _key: string; @@ -7,7 +7,7 @@ class KeyValuePairNode extends HierarchyNode { constructor( sort: string, - type: CheckNodeType, + type: GroupingNodeType, key: string, value: string, children?: CheckNode[], diff --git a/ui/dashboard/src/hooks/useDetectionGrouping.tsx b/ui/dashboard/src/hooks/useDetectionGrouping.tsx index 1199b60f..499ed0fd 100644 --- a/ui/dashboard/src/hooks/useDetectionGrouping.tsx +++ b/ui/dashboard/src/hooks/useDetectionGrouping.tsx @@ -1,24 +1,22 @@ -import BenchmarkNode from "@powerpipe/components/dashboards/grouping/common/node/BenchmarkNode"; -import ControlEmptyResultNode from "@powerpipe/components/dashboards/grouping/common/node/ControlEmptyResultNode"; -import ControlErrorNode from "@powerpipe/components/dashboards/grouping/common/node/ControlErrorNode"; -import ControlNode from "@powerpipe/components/dashboards/grouping/common/node/ControlNode"; -import ControlResultNode from "@powerpipe/components/dashboards/grouping/common/node/ControlResultNode"; -import ControlRunningNode from "@powerpipe/components/dashboards/grouping/common/node/ControlRunningNode"; -import KeyValuePairNode from "@powerpipe/components/dashboards/grouping/common/node/KeyValuePairNode"; -import RootNode from "@powerpipe/components/dashboards/grouping/common/node/RootNode"; +import DetectionResultNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionResultNode"; +import DetectionNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionNode"; +import DetectionBenchmarkNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionBenchmarkNode"; +import DetectionEmptyResultNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionEmptyResultNode"; +import DetectionErrorNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionErrorNode"; +import DetectionKeyValuePairNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionKeyValuePairNode"; +import DetectionRootNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionRootNode"; +import DetectionRunningNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionRunningNode"; import useGroupingFilterConfig from "./useGroupingFilterConfig"; import useDetectionGroupingConfig from "./useDetectionGroupingConfig"; import usePrevious from "./usePrevious"; import { - CheckDisplayGroup, - CheckFilter, - CheckNode, - CheckResult, - CheckResultDimension, - CheckResultStatus, - CheckSeverity, - CheckSummary, - CheckTags, + DetectionDisplayGroup, + DetectionFilter, + DetectionNode as DetectionNodeType, + DetectionResult, + DetectionResultDimension, + DetectionSummary, + DetectionTags, findDimension, } from "@powerpipe/components/dashboards/grouping/common"; import { @@ -28,7 +26,7 @@ import { useMemo, useReducer, } from "react"; -import { default as BenchmarkType } from "@powerpipe/components/dashboards/grouping/common/Benchmark"; +import { default as DetectionBenchmarkType } from "@powerpipe/components/dashboards/grouping/common/DetectionBenchmark"; import { ElementType, IActions, @@ -54,7 +52,7 @@ export type CheckGroupingAction = { }; type CheckGroupFilterStatusValuesMap = { - [key in keyof typeof CheckResultStatus]: number; + [key in keyof typeof DetectionResultStatus]: number; }; export type CheckGroupFilterValues = { @@ -64,13 +62,13 @@ export type CheckGroupFilterValues = { }; type ICheckGroupingContext = { - benchmark: BenchmarkType | null; + benchmark: DetectionBenchmarkType | null; definition: PanelDefinition; - grouping: CheckNode | null; - groupingsConfig: CheckDisplayGroup[]; - firstChildSummaries: CheckSummary[]; - diffFirstChildSummaries?: CheckSummary[]; - diffGrouping: CheckNode | null; + grouping: DetectionNodeType | null; + groupingsConfig: DetectionDisplayGroup[]; + firstChildSummaries: DetectionSummary[]; + diffFirstChildSummaries?: DetectionSummary[]; + diffGrouping: DetectionNodeType | null; nodeStates: CheckGroupNodeStates; filterValues: CheckGroupFilterValues; dispatch(action: CheckGroupingAction): void; @@ -89,13 +87,13 @@ const checkGroupingActions = Object.values(GroupingActions); const GroupingContext = createContext(null); const addBenchmarkTrunkNode = ( - benchmark_trunk: BenchmarkType[], - children: CheckNode[], - benchmarkChildrenLookup: { [name: string]: CheckNode[] }, + benchmark_trunk: DetectionBenchmarkType[], + children: DetectionNodeType[], + benchmarkChildrenLookup: { [name: string]: DetectionNodeType[] }, groupingKeysBeforeBenchmark: string[], parentGroupType: string | null, -): CheckNode => { - let newChildren: CheckNode[]; +): DetectionNodeType => { + let newChildren: DetectionNodeType[]; if (benchmark_trunk.length > 1) { newChildren = [ addBenchmarkTrunkNode( @@ -134,7 +132,7 @@ const addBenchmarkTrunkNode = ( benchmarkChildrenLookup[lookupKey] = newChildren; } } - return new BenchmarkNode( + return new DetectionBenchmarkNode( !!parentGroupType ? currentNode?.title || "Other" : currentNode?.sort || "Other", @@ -144,77 +142,9 @@ const addBenchmarkTrunkNode = ( ); }; -const getCheckStatusGroupingKey = (status: CheckResultStatus): string => { - switch (status) { - case CheckResultStatus.alarm: - return "Alarm"; - case CheckResultStatus.error: - return "Error"; - case CheckResultStatus.info: - return "Info"; - case CheckResultStatus.ok: - return "OK"; - case CheckResultStatus.skip: - return "Skipped"; - case CheckResultStatus.empty: - return "Empty"; - } -}; - -const getCheckStatusSortKey = (status: CheckResultStatus): string => { - switch (status) { - case CheckResultStatus.ok: - return "0"; - case CheckResultStatus.alarm: - return "1"; - case CheckResultStatus.error: - return "2"; - case CheckResultStatus.info: - return "3"; - case CheckResultStatus.skip: - return "4"; - case CheckResultStatus.empty: - return "5"; - } -}; - -const getCheckSeverityGroupingKey = ( - severity: CheckSeverity | undefined, -): string => { - switch (severity) { - case "critical": - return "Critical"; - case "high": - return "High"; - case "low": - return "Low"; - case "medium": - return "Medium"; - default: - return "Unspecified"; - } -}; - -const getCheckSeveritySortKey = ( - severity: CheckSeverity | undefined, -): string => { - switch (severity) { - case "critical": - return "0"; - case "high": - return "1"; - case "medium": - return "2"; - case "low": - return "3"; - default: - return "4"; - } -}; - const getCheckDimensionGroupingKey = ( dimensionKey: string | undefined, - dimensions: CheckResultDimension[], + dimensions: DetectionResultDimension[], ): string => { if (!dimensionKey) { return ""; @@ -223,145 +153,86 @@ const getCheckDimensionGroupingKey = ( return foundDimension ? foundDimension.value : ``; }; -function getCheckTagGroupingKey(tagKey: string | undefined, tags: CheckTags) { +function getCheckTagGroupingKey( + tagKey: string | undefined, + tags: DetectionTags, +) { if (!tagKey) { return "Tag key not set"; } return tags[tagKey] || ``; } -const getCheckReasonGroupingKey = (reason: string | undefined): string => { - return reason || ""; -}; - -const getCheckResourceGroupingKey = (resource: string | undefined): string => { - return resource || ""; -}; - -// const getCheckResultGroupingKey = (checkResult: CheckResult): string => { -// return `${checkResult.control.name}-${checkResult.resource}`; -// }; - const getCheckGroupingKey = ( - checkResult: CheckResult, - group: CheckDisplayGroup, + checkResult: DetectionResult, + group: DetectionDisplayGroup, ) => { switch (group.type) { - case "dimension": - return getCheckDimensionGroupingKey(group.value, checkResult.dimensions); - case "control_tag": - return getCheckTagGroupingKey(group.value, checkResult.tags); - case "reason": - return getCheckReasonGroupingKey(checkResult.reason); - case "resource": - return getCheckResourceGroupingKey(checkResult.resource); - // case "result": - // return getCheckResultGroupingKey(checkResult); - case "severity": - return getCheckSeverityGroupingKey(checkResult.control.severity); - case "status": - return getCheckStatusGroupingKey(checkResult.status); case "benchmark": - if (checkResult.benchmark_trunk.length <= 1) { + if (checkResult.detection_benchmark_trunk.length <= 1) { return null; } - return checkResult.benchmark_trunk[checkResult.benchmark_trunk.length - 1] - .name; - case "control": - return checkResult.control.name; + return checkResult.detection_benchmark_trunk[ + checkResult.detection_benchmark_trunk.length - 1 + ].name; + case "detection": + return checkResult.detection.name; + case "detection_tag": + return getCheckTagGroupingKey(group.value, checkResult.tags); + case "dimension": + return getCheckDimensionGroupingKey(group.value, checkResult.dimensions); default: return "Other"; } }; const getCheckGroupingNode = ( - checkResult: CheckResult, - group: CheckDisplayGroup, - children: CheckNode[], - benchmarkChildrenLookup: { [name: string]: CheckNode[] }, + detectionResult: DetectionResult, + group: DetectionDisplayGroup, + children: DetectionNodeType[], + benchmarkChildrenLookup: { [name: string]: DetectionNodeType[] }, groupingKeysBeforeBenchmark: string[] = [], parentGroupType: string | null, -): CheckNode => { +): DetectionNodeType => { switch (group.type) { case "dimension": const dimensionValue = getCheckDimensionGroupingKey( group.value, - checkResult.dimensions, + detectionResult.dimensions, ); - return new KeyValuePairNode( + return new DetectionKeyValuePairNode( dimensionValue, "dimension", group.value || "Dimension key not set", dimensionValue, children, ); - case "control_tag": - const value = getCheckTagGroupingKey(group.value, checkResult.tags); - return new KeyValuePairNode( + case "detection_tag": + const value = getCheckTagGroupingKey(group.value, detectionResult.tags); + return new DetectionKeyValuePairNode( value, "control_tag", group.value || "Tag key not set", value, children, ); - case "reason": - return new KeyValuePairNode( - checkResult.reason || "𤭢", // U+24B62 - very high in sort order - will almost guarantee to put this to the end, - "reason", - "reason", - getCheckReasonGroupingKey(checkResult.reason), - children, - ); - case "resource": - return new KeyValuePairNode( - checkResult.resource || "𤭢", // U+24B62 - very high in sort order - will almost guarantee to put this to the end - "resource", - "resource", - getCheckResourceGroupingKey(checkResult.resource), - children, - ); - // case "result": - // return new ControlResultNode( - // checkResult, - // `${checkResult.control.name}-${checkResult.resource}`, - // "result", - // "result", - // getCheckResultGroupingKey(checkResult), - // children, - // ); - case "severity": - return new KeyValuePairNode( - getCheckSeveritySortKey(checkResult.control.severity), - "severity", - "severity", - getCheckSeverityGroupingKey(checkResult.control.severity), - children, - ); - case "status": - return new KeyValuePairNode( - getCheckStatusSortKey(checkResult.status), - "status", - "status", - getCheckStatusGroupingKey(checkResult.status), - children, - ); case "benchmark": - return checkResult.benchmark_trunk.length > 1 + return detectionResult.detection_benchmark_trunk.length > 1 ? addBenchmarkTrunkNode( - checkResult.benchmark_trunk.slice(1), + detectionResult.detection_benchmark_trunk.slice(1), children, benchmarkChildrenLookup, groupingKeysBeforeBenchmark, parentGroupType, ) : children[0]; - case "control": - return new ControlNode( + case "detection": + return new DetectionNode( parentGroupType === "benchmark" - ? checkResult.control.sort - : checkResult.control.title || checkResult.control.name, - checkResult.control.name, - checkResult.control.title, + ? detectionResult.detection.sort + : detectionResult.detection.title || detectionResult.detection.name, + detectionResult.detection.name, + detectionResult.detection.title, children, ); default: @@ -370,14 +241,14 @@ const getCheckGroupingNode = ( }; const addBenchmarkGroupingNode = ( - existingGroups: CheckNode[], - groupingNode: CheckNode, + existingGroups: DetectionNodeType[], + groupingNode: DetectionNodeType, ) => { const existingGroup = existingGroups.find( (existingGroup) => existingGroup.name === groupingNode.name, ); if (existingGroup) { - (existingGroup as BenchmarkNode).merge(groupingNode); + (existingGroup as DetectionBenchmarkNode).merge(groupingNode); } else { existingGroups.push(groupingNode); } @@ -399,11 +270,11 @@ function getBenchmarkChildrenLookupKey( } const groupCheckItems = ( - temp: { _: CheckNode[] }, - checkResult: CheckResult, - groupingsConfig: CheckDisplayGroup[], - checkNodeStates: CheckGroupNodeStates, - benchmarkChildrenLookup: { [name: string]: CheckNode[] }, + temp: { _: DetectionNodeType[] }, + checkResult: DetectionResult, + groupingsConfig: DetectionDisplayGroup[], + DetectionNodeStates: CheckGroupNodeStates, + benchmarkChildrenLookup: { [name: string]: DetectionNodeType[] }, groupingHierarchyKeys: string[], ) => { return groupingsConfig @@ -435,14 +306,14 @@ const groupCheckItems = ( // Collapse all benchmark trunk nodes if (currentGroupingConfig.type === "benchmark") { - checkResult.benchmark_trunk.forEach( + checkResult.detection_benchmark_trunk.forEach( (benchmark) => - (checkNodeStates[benchmark.name] = { + (DetectionNodeStates[benchmark.name] = { expanded: false, }), ); } else { - checkNodeStates[groupKey] = { + DetectionNodeStates[groupKey] = { expanded: false, }; } @@ -498,23 +369,15 @@ const groupCheckItems = ( ); }; -const getCheckResultNode = (checkResult: CheckResult) => { - if (checkResult.type === "loading") { - return new ControlRunningNode(checkResult); - } else if (checkResult.type === "error") { - return new ControlErrorNode(checkResult); - } else if (checkResult.type === "empty") { - return new ControlEmptyResultNode(checkResult); +const getDetectionResultNode = (detectionResult: DetectionResult) => { + if (detectionResult.type === "loading") { + return new DetectionRunningNode(detectionResult); + } else if (detectionResult.type === "error") { + return new DetectionErrorNode(detectionResult); + } else if (detectionResult.type === "empty") { + return new DetectionEmptyResultNode(detectionResult); } - return new ControlResultNode(checkResult); - // return new ControlResultNode( - // checkResult, - // `${checkResult.control.name}-${checkResult.resource}`, - // "result", - // "result", - // getCheckResultGroupingKey(checkResult), - // undefined, - // ); + return new DetectionResultNode(detectionResult); }; const reducer = (state: CheckGroupNodeStates, action) => { @@ -566,7 +429,7 @@ const reducer = (state: CheckGroupNodeStates, action) => { } }; -type CheckGroupingProviderProps = { +type DetectionGroupingProviderProps = { children: null | JSX.Element | JSX.Element[]; definition: PanelDefinition; diff_panels: PanelsMap | undefined; @@ -590,11 +453,14 @@ function recordFilterValues( info: number; }; }, - checkResult: CheckResult, + checkResult: DetectionResult, ) { // Record the benchmark of this check result to allow assisted filtering later - if (!!checkResult.benchmark_trunk && checkResult.benchmark_trunk.length > 0) { - for (const benchmark of checkResult.benchmark_trunk) { + if ( + !!checkResult.detection_benchmark_trunk && + checkResult.detection_benchmark_trunk.length > 0 + ) { + for (const benchmark of checkResult.detection_benchmark_trunk) { filterValues.benchmark.value[benchmark.name] = filterValues.benchmark .value[benchmark.name] || { title: benchmark.title, count: 0 }; filterValues.benchmark.value[benchmark.name].count += 1; @@ -602,12 +468,12 @@ function recordFilterValues( } // Record the control of this check result to allow assisted filtering later - filterValues.control.value[checkResult.control.name] = filterValues.control - .value[checkResult.control.name] || { - title: checkResult.control.title, + filterValues.control.value[checkResult.detection.name] = filterValues.control + .value[checkResult.detection.name] || { + title: checkResult.detection.title, count: 0, }; - filterValues.control.value[checkResult.control.name].count += 1; + filterValues.control.value[checkResult.detection.name].count += 1; // Record the status of this check result to allow assisted filtering later filterValues.status[checkResult.status] = @@ -628,13 +494,6 @@ function recordFilterValues( filterValues.resource.value[checkResult.resource] += 1; } - // Record the severity of this check result to allow assisted filtering later - if (checkResult.severity) { - filterValues.severity.value[checkResult.severity.toString()] = - filterValues.severity.value[checkResult.severity.toString()] || 0; - filterValues.severity.value[checkResult.severity.toString()] += 1; - } - // Record the dimension keys/values + value/key counts of this check result to allow assisted filtering later for (const dimension of checkResult.dimensions) { if (!(dimension.key in filterValues.dimension.key)) { @@ -695,8 +554,8 @@ const wildcardToRegex = (wildcard: string) => { }; const includeResult = ( - checkResult: CheckResult, - checkFilterConfig: CheckFilter, + checkResult: DetectionResult, + checkFilterConfig: DetectionFilter, ): boolean => { if ( !checkFilterConfig || @@ -717,7 +576,7 @@ const includeResult = ( switch (filter.type) { case "benchmark": { let matchesTrunk = false; - for (const benchmark of checkResult.benchmark_trunk || []) { + for (const benchmark of checkResult.detection_benchmark_trunk || []) { const match = valueRegex.test(benchmark.name); if (match) { matchesTrunk = true; @@ -728,19 +587,7 @@ const includeResult = ( break; } case "control": { - matches.push(valueRegex.test(checkResult.control.name)); - break; - } - case "reason": { - matches.push(valueRegex.test(checkResult.reason)); - break; - } - case "resource": { - matches.push(valueRegex.test(checkResult.resource)); - break; - } - case "severity": { - matches.push(valueRegex.test(checkResult.severity || "")); + matches.push(valueRegex.test(checkResult.detection.name)); break; } case "status": { @@ -788,7 +635,7 @@ const includeResult = ( const useGroupingInternal = ( definition: PanelDefinition | null, panelsMap: PanelsMap | undefined, - groupingsConfig: CheckDisplayGroup[], + groupingsConfig: DetectionDisplayGroup[], skip = false, ) => { const checkFilterConfig = useGroupingFilterConfig(); @@ -822,7 +669,7 @@ const useGroupingInternal = ( ); const rootBenchmarkPanel = panelsMap[definition.name]; - const b = new BenchmarkType( + const b = new DetectionBenchmarkType( "0", rootBenchmarkPanel.name, rootBenchmarkPanel.title, @@ -833,13 +680,13 @@ const useGroupingInternal = ( [], ); - const checkNodeStates: CheckGroupNodeStates = {}; - const result: CheckNode[] = []; + const DetectionNodeStates: CheckGroupNodeStates = {}; + const result: DetectionNodeType[] = []; const temp = { _: result }; const benchmarkChildrenLookup = {}; // We'll loop over each control result and build up the grouped nodes from there - b.all_control_results.forEach((checkResult) => { + b.all_detection_results.forEach((checkResult) => { // Record values pre-filter so we can expand out from filtered states with all values later on recordFilterValues(filterValues, checkResult); @@ -854,19 +701,19 @@ const useGroupingInternal = ( temp, checkResult, groupingsConfig, - checkNodeStates, + DetectionNodeStates, benchmarkChildrenLookup, [], ); // Build and add a check result node to the children of the trailing group. // This will be used to calculate totals and severity, amongst other things. - const node = getCheckResultNode(checkResult); + const node = getDetectionResultNode(checkResult); grouping._.push(node); }); - const results = new RootNode(result); + const results = new DetectionRootNode(result); - const firstChildSummaries: CheckSummary[] = []; + const firstChildSummaries: DetectionSummary[] = []; for (const child of results.children) { firstChildSummaries.push(child.summary); } @@ -876,7 +723,7 @@ const useGroupingInternal = ( { ...rootBenchmarkPanel, children: definition.children }, results, firstChildSummaries, - checkNodeStates, + DetectionNodeStates, filterValues, ] as const; }, [checkFilterConfig, definition, groupingsConfig, panelsMap, skip]); @@ -886,7 +733,7 @@ const GroupingProvider = ({ children, definition, diff_panels, -}: CheckGroupingProviderProps) => { +}: DetectionGroupingProviderProps) => { const { panelsMap } = useDashboard(); const { setContext: setDashboardControlsContext } = useDashboardControls(); const [nodeStates, dispatch] = useReducer(reducer, { nodes: {} }); From 32c9144186a245b9fe5f110884ec0c2c1c6b286f Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Wed, 6 Nov 2024 21:53:54 +0700 Subject: [PATCH 08/85] WIP for showing detections benchmarks as a supported resource --- .../dashboards/grouping/common/index.ts | 2 +- .../src/hooks/useDetectionGrouping.tsx | 94 +++++++------------ .../src/hooks/useDetectionGroupingConfig.ts | 25 ++--- 3 files changed, 41 insertions(+), 80 deletions(-) diff --git a/ui/dashboard/src/components/dashboards/grouping/common/index.ts b/ui/dashboard/src/components/dashboards/grouping/common/index.ts index f79b0a7f..e960a734 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/index.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/index.ts @@ -188,7 +188,7 @@ export type CheckDisplayGroupType = | string; export type DetectionDisplayGroupType = - | "benchmark" + | "detection_benchmark" | "detection" | "detection_tag" | "result" diff --git a/ui/dashboard/src/hooks/useDetectionGrouping.tsx b/ui/dashboard/src/hooks/useDetectionGrouping.tsx index 499ed0fd..27397168 100644 --- a/ui/dashboard/src/hooks/useDetectionGrouping.tsx +++ b/ui/dashboard/src/hooks/useDetectionGrouping.tsx @@ -51,12 +51,7 @@ export type CheckGroupingAction = { [key: string]: any; }; -type CheckGroupFilterStatusValuesMap = { - [key in keyof typeof DetectionResultStatus]: number; -}; - export type CheckGroupFilterValues = { - status: CheckGroupFilterStatusValuesMap; control_tag: { key: {}; value: {} }; dimension: { key: {}; value: {} }; }; @@ -216,7 +211,7 @@ const getCheckGroupingNode = ( value, children, ); - case "benchmark": + case "detection_benchmark": return detectionResult.detection_benchmark_trunk.length > 1 ? addBenchmarkTrunkNode( detectionResult.detection_benchmark_trunk.slice(1), @@ -260,7 +255,7 @@ function getBenchmarkChildrenLookupKey( ) { const groupingKeysBeforeBenchmark = groupingHierarchyKeys.slice( 0, - groupingHierarchyKeys.indexOf("benchmark"), + groupingHierarchyKeys.indexOf("detection_benchmark"), ); const benchmarkChildrenLookupKey = groupingKeysBeforeBenchmark.length > 0 @@ -305,7 +300,7 @@ const groupCheckItems = ( groupingHierarchyKeys.push(groupKey); // Collapse all benchmark trunk nodes - if (currentGroupingConfig.type === "benchmark") { + if (currentGroupingConfig.type === "detection_benchmark") { checkResult.detection_benchmark_trunk.forEach( (benchmark) => (DetectionNodeStates[benchmark.name] = { @@ -334,7 +329,7 @@ const groupCheckItems = ( ); if (groupingNode) { - if (currentGroupingConfig.type === "benchmark") { + if (currentGroupingConfig.type === "detection_benchmark") { // For benchmarks, we need to get the benchmark nodes including the trunk addBenchmarkGroupingNode(cumulativeGrouping._, groupingNode); } else { @@ -352,7 +347,7 @@ const groupCheckItems = ( // When we come to get the benchmark grouping node for control 2, we'll need to add // the control to the existing children of benchmark 1 if ( - currentGroupingConfig.type === "benchmark" && + currentGroupingConfig.type === "detection_benchmark" && benchmarkChildrenLookup[benchmarkChildrenLookupKey] ) { const groupingEntry = cumulativeGrouping[groupKey]; @@ -437,20 +432,12 @@ type DetectionGroupingProviderProps = { function recordFilterValues( filterValues: { - severity: { value: {} }; - reason: { value: {} }; - resource: { value: {} }; - control: { value: {} }; - control_tag: { key: {}; value: {} }; + detection: { value: {} }; + detection_tag: { key: {}; value: {} }; dimension: { key: {}; value: {} }; benchmark: { value: {} }; status: { - alarm: number; - skip: number; - error: number; - ok: number; - empty: number; - info: number; + total: number; }; }, checkResult: DetectionResult, @@ -468,32 +455,18 @@ function recordFilterValues( } // Record the control of this check result to allow assisted filtering later - filterValues.control.value[checkResult.detection.name] = filterValues.control - .value[checkResult.detection.name] || { + filterValues.detection.value[checkResult.detection.name] = filterValues + .detection.value[checkResult.detection.name] || { title: checkResult.detection.title, count: 0, }; - filterValues.control.value[checkResult.detection.name].count += 1; + filterValues.detection.value[checkResult.detection.name].count += 1; // Record the status of this check result to allow assisted filtering later filterValues.status[checkResult.status] = filterValues.status[checkResult.status] || 0; filterValues.status[checkResult.status] += 1; - // Record the reason of this check result to allow assisted filtering later - if (checkResult.reason) { - filterValues.reason.value[checkResult.reason] = - filterValues.reason.value[checkResult.reason] || 0; - filterValues.reason.value[checkResult.reason] += 1; - } - - // Record the resource of this check result to allow assisted filtering later - if (checkResult.resource) { - filterValues.resource.value[checkResult.resource] = - filterValues.resource.value[checkResult.resource] || 0; - filterValues.resource.value[checkResult.resource] += 1; - } - // Record the dimension keys/values + value/key counts of this check result to allow assisted filtering later for (const dimension of checkResult.dimensions) { if (!(dimension.key in filterValues.dimension.key)) { @@ -519,25 +492,25 @@ function recordFilterValues( // Record the dimension keys/values + value/key counts of this check result to allow assisted filtering later for (const [tagKey, tagValue] of Object.entries(checkResult.tags || {})) { - if (!(tagKey in filterValues.control_tag.key)) { - filterValues.control_tag.key[tagKey] = { + if (!(tagKey in filterValues.detection_tag.key)) { + filterValues.detection_tag.key[tagKey] = { [tagValue]: 0, }; } - if (!(tagValue in filterValues.control_tag.key[tagKey])) { - filterValues.control_tag.key[tagKey][tagValue] = 0; + if (!(tagValue in filterValues.detection_tag.key[tagKey])) { + filterValues.detection_tag.key[tagKey][tagValue] = 0; } - filterValues.control_tag.key[tagKey][tagValue] += 1; + filterValues.detection_tag.key[tagKey][tagValue] += 1; - if (!(tagValue in filterValues.control_tag.value)) { - filterValues.control_tag.value[tagValue] = { + if (!(tagValue in filterValues.detection_tag.value)) { + filterValues.detection_tag.value[tagValue] = { [tagKey]: 0, }; } - if (!(tagKey in filterValues.control_tag.value[tagValue])) { - filterValues.control_tag.value[tagValue][tagKey] = 0; + if (!(tagKey in filterValues.detection_tag.value[tagValue])) { + filterValues.detection_tag.value[tagValue][tagKey] = 0; } - filterValues.control_tag.value[tagValue][tagKey] += 1; + filterValues.detection_tag.value[tagValue][tagKey] += 1; } } @@ -574,7 +547,7 @@ const includeResult = ( const valueRegex = new RegExp(`^${wildcardToRegex(filter.value)}$`); switch (filter.type) { - case "benchmark": { + case "detection_benchmark": { let matchesTrunk = false; for (const benchmark of checkResult.detection_benchmark_trunk || []) { const match = valueRegex.test(benchmark.name); @@ -586,7 +559,7 @@ const includeResult = ( matches.push(matchesTrunk); break; } - case "control": { + case "detection": { matches.push(valueRegex.test(checkResult.detection.name)); break; } @@ -643,13 +616,10 @@ const useGroupingInternal = ( return useMemo(() => { const filterValues = { benchmark: { value: {} }, - control: { value: {} }, - control_tag: { key: {}, value: {} }, + detection: { value: {} }, + detection_tag: { key: {}, value: {} }, dimension: { key: {}, value: {} }, - reason: { value: {} }, - resource: { value: {} }, - severity: { value: {} }, - status: { alarm: 0, empty: 0, error: 0, info: 0, ok: 0, skip: 0 }, + status: { total: 0 }, }; if (!definition || skip || !panelsMap) { @@ -657,15 +627,15 @@ const useGroupingInternal = ( } // @ts-ignore - const nestedBenchmarks = definition.children?.filter( - (child) => child.panel_type === "benchmark", + const nestedDetectionBenchmarks = definition.children?.filter( + (child) => child.panel_type === "detection_benchmark", ); - const nestedControls = + const nestedDetections = definition.panel_type === "control" ? [definition] : // @ts-ignore definition.children?.filter( - (child) => child.panel_type === "control", + (child) => child.panel_type === "detection", ); const rootBenchmarkPanel = panelsMap[definition.name]; @@ -674,8 +644,8 @@ const useGroupingInternal = ( rootBenchmarkPanel.name, rootBenchmarkPanel.title, rootBenchmarkPanel.description, - nestedBenchmarks, - nestedControls, + nestedDetectionBenchmarks, + nestedDetections, panelsMap, [], ); diff --git a/ui/dashboard/src/hooks/useDetectionGroupingConfig.ts b/ui/dashboard/src/hooks/useDetectionGroupingConfig.ts index 04882be8..1282b917 100644 --- a/ui/dashboard/src/hooks/useDetectionGroupingConfig.ts +++ b/ui/dashboard/src/hooks/useDetectionGroupingConfig.ts @@ -1,6 +1,6 @@ import { - CheckDisplayGroup, - CheckDisplayGroupType, + DetectionDisplayGroupType, + DetectionDisplayGroup, } from "@powerpipe/components/dashboards/grouping/common"; import { useMemo } from "react"; import { useSearchParams } from "react-router-dom"; @@ -22,7 +22,7 @@ const useCheckGroupingConfig = () => { return useMemo(() => { const rawGrouping = searchParams.get("grouping"); if (rawGrouping) { - const groupings: CheckDisplayGroup[] = []; + const groupings: DetectionDisplayGroup[] = []; const groupingParts = rawGrouping.split(",").filter((g) => !!g); for (const groupingPart of groupingParts) { const typeValueParts = groupingPart.split("|"); @@ -36,31 +36,22 @@ const useCheckGroupingConfig = () => { if (typeValueParts.length > 1) { groupings.push({ - type: typeValueParts[0] as CheckDisplayGroupType, + type: typeValueParts[0] as DetectionDisplayGroupType, value: typeValueParts[1], }); } else { groupings.push({ - type: typeValueParts[0] as CheckDisplayGroupType, + type: typeValueParts[0] as DetectionDisplayGroupType, }); } } return groupings; } else { return [ - // { type: "status" }, - // { type: "reason" }, - // { type: "resource" }, - // { type: "severity" }, - // { type: "dimension", value: "account_id" }, - // { type: "dimension", value: "region" }, - // { type: "control_tag", value: "service" }, - // { type: "control_tag", value: "cis_type" }, - // { type: "control_tag", value: "cis_level" }, - { type: "benchmark" }, - { type: "control" }, + { type: "detection_benchmark" }, + { type: "detection" }, { type: "result" }, - ] as CheckDisplayGroup[]; + ] as DetectionDisplayGroup[]; } }, [searchParams]); }; From b64325deb36d28059a12b99f46464d111a26d8f1 Mon Sep 17 00:00:00 2001 From: kai Date: Wed, 6 Nov 2024 21:56:25 +0700 Subject: [PATCH 09/85] add detectionBenchmarks to availabledashboards payload --- internal/dashboardserver/payload.go | 74 +++++++++++++++++++++++++++-- internal/dashboardserver/types.go | 9 ++-- 2 files changed, 75 insertions(+), 8 deletions(-) diff --git a/internal/dashboardserver/payload.go b/internal/dashboardserver/payload.go index 060b2a31..fb3f398f 100644 --- a/internal/dashboardserver/payload.go +++ b/internal/dashboardserver/payload.go @@ -159,12 +159,37 @@ func addBenchmarkChildren(benchmark *resources.Benchmark, recordTrunk bool, trun return children } +func addDetectionBenchmarkChildren(benchmark *resources.DetectionBenchmark, recordTrunk bool, trunk []string, trunks map[string][][]string) []ModAvailableBenchmark { + var children []ModAvailableBenchmark + for _, child := range benchmark.GetChildren() { + switch t := child.(type) { + case *resources.Benchmark: + childTrunk := make([]string, len(trunk)+1) + copy(childTrunk, trunk) + childTrunk[len(childTrunk)-1] = t.FullName + if recordTrunk { + trunks[t.FullName] = append(trunks[t.FullName], childTrunk) + } + availableBenchmark := ModAvailableBenchmark{ + Title: t.GetTitle(), + FullName: t.FullName, + ShortName: t.ShortName, + Tags: t.Tags, + Children: addBenchmarkChildren(t, recordTrunk, childTrunk, trunks), + } + children = append(children, availableBenchmark) + } + } + return children +} + func buildAvailableDashboardsPayload(workspaceResources *resources.PowerpipeModResources) ([]byte, error) { payload := AvailableDashboardsPayload{ - Action: "available_dashboards", - Dashboards: make(map[string]ModAvailableDashboard), - Benchmarks: make(map[string]ModAvailableBenchmark), - Snapshots: workspaceResources.Snapshots, + Action: "available_dashboards", + Dashboards: make(map[string]ModAvailableDashboard), + Benchmarks: make(map[string]ModAvailableBenchmark), + DetectionBenchmarks: make(map[string]ModAvailableBenchmark), + Snapshots: workspaceResources.Snapshots, } // if workspace resources has a mod, populate dashboards and benchmarks @@ -226,6 +251,47 @@ func buildAvailableDashboardsPayload(workspaceResources *resources.PowerpipeModR payload.Benchmarks[benchmarkName] = foundBenchmark } } + + detectionBenchmarkTrunks := make(map[string][][]string) + for _, detectionBenchmark := range topLevelResources.DetectionBenchmarks { + if detectionBenchmark.IsAnonymous() { + continue + } + + // Find any detectionBenchmarks who have a parent that is a mod - we consider these top-level + isTopLevel := false + for _, parent := range detectionBenchmark.GetParents() { + switch parent.(type) { + case *modconfig.Mod: + isTopLevel = true + } + } + + mod := detectionBenchmark.Mod + trunk := []string{detectionBenchmark.FullName} + + if isTopLevel { + detectionBenchmarkTrunks[detectionBenchmark.FullName] = [][]string{trunk} + } + + availableDetectionBenchmark := ModAvailableBenchmark{ + Title: detectionBenchmark.GetTitle(), + FullName: detectionBenchmark.FullName, + ShortName: detectionBenchmark.ShortName, + Tags: detectionBenchmark.Tags, + IsTopLevel: isTopLevel, + Children: addDetectionBenchmarkChildren(detectionBenchmark, isTopLevel, trunk, detectionBenchmarkTrunks), + ModFullName: mod.GetFullName(), + } + + payload.DetectionBenchmarks[detectionBenchmark.FullName] = availableDetectionBenchmark + } + for detectionBenchmarkName, trunks := range detectionBenchmarkTrunks { + if foundDetectionBenchmark, ok := payload.DetectionBenchmarks[detectionBenchmarkName]; ok { + foundDetectionBenchmark.Trunks = trunks + payload.DetectionBenchmarks[detectionBenchmarkName] = foundDetectionBenchmark + } + } } return json.Marshal(payload) diff --git a/internal/dashboardserver/types.go b/internal/dashboardserver/types.go index 32ee53ea..df397591 100644 --- a/internal/dashboardserver/types.go +++ b/internal/dashboardserver/types.go @@ -147,10 +147,11 @@ type ModAvailableBenchmark struct { } type AvailableDashboardsPayload struct { - Action string `json:"action"` - Dashboards map[string]ModAvailableDashboard `json:"dashboards"` - Benchmarks map[string]ModAvailableBenchmark `json:"benchmarks"` - Snapshots map[string]string `json:"snapshots"` + Action string `json:"action"` + Dashboards map[string]ModAvailableDashboard `json:"dashboards"` + Benchmarks map[string]ModAvailableBenchmark `json:"benchmarks"` + DetectionBenchmarks map[string]ModAvailableBenchmark `json:"detection_benchmarks"` + Snapshots map[string]string `json:"snapshots"` } type ModMetadata struct { From a0c81e3cecef7c6909019ce57954d4bf8ef7eb23 Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Wed, 6 Nov 2024 22:35:24 +0700 Subject: [PATCH 10/85] Show root detection dashboards in dashboard list --- ui/dashboard/src/components/DashboardList/index.tsx | 3 ++- ui/dashboard/src/hooks/useDashboardState.tsx | 1 + ui/dashboard/src/types/index.ts | 7 ++++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ui/dashboard/src/components/DashboardList/index.tsx b/ui/dashboard/src/components/DashboardList/index.tsx index de0af789..2b7348c5 100644 --- a/ui/dashboard/src/components/DashboardList/index.tsx +++ b/ui/dashboard/src/components/DashboardList/index.tsx @@ -145,7 +145,8 @@ const Section = ({ dashboard.type === "snapshot") && ( )} - {dashboard.type === "benchmark" && ( + {(dashboard.type === "benchmark" || + dashboard.type === "detection_benchmark") && ( { const { dashboards, dashboardsMap } = buildDashboards( action.dashboards, action.benchmarks, + action.detection_benchmarks, action.snapshots, ); const selectedDashboard = updateSelectedDashboard( diff --git a/ui/dashboard/src/types/index.ts b/ui/dashboard/src/types/index.ts index 66086729..aecac1e8 100644 --- a/ui/dashboard/src/types/index.ts +++ b/ui/dashboard/src/types/index.ts @@ -367,7 +367,12 @@ type AvailableDashboardTags = { [key: string]: string; }; -type AvailableDashboardType = "benchmark" | "dashboard" | "snapshot"; +type AvailableDashboardType = + | "available_dashboard" + | "benchmark" + | "detection_benchmark" + | "dashboard" + | "snapshot"; export type AvailableDashboard = { full_name: string; From 363516bc9a7a13f931df57f2e2259f9533739cc6 Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Wed, 6 Nov 2024 22:35:36 +0700 Subject: [PATCH 11/85] Show root detection dashboards in dashboard list --- ui/dashboard/src/utils/state.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ui/dashboard/src/utils/state.ts b/ui/dashboard/src/utils/state.ts index 28114456..4138d457 100644 --- a/ui/dashboard/src/utils/state.ts +++ b/ui/dashboard/src/utils/state.ts @@ -21,6 +21,7 @@ import { const buildDashboards = ( dashboards: AvailableDashboardsDictionary, benchmarks: AvailableDashboardsDictionary, + detection_benchmarks: AvailableDashboardsDictionary, snapshots: KeyValueStringPairs, ): DashboardsCollection => { const dashboardsMap = {}; @@ -56,6 +57,22 @@ const buildDashboards = ( builtDashboards.push(builtBenchmark); } + for (const [, detection_benchmark] of Object.entries(detection_benchmarks)) { + const builtBenchmark: AvailableDashboard = { + title: detection_benchmark.title, + full_name: detection_benchmark.full_name, + short_name: detection_benchmark.short_name, + type: "detection_benchmark", + tags: detection_benchmark.tags, + mod_full_name: detection_benchmark.mod_full_name, + is_top_level: detection_benchmark.is_top_level, + trunks: detection_benchmark.trunks, + children: detection_benchmark.children, + }; + dashboardsMap[builtBenchmark.full_name] = builtBenchmark; + builtDashboards.push(builtBenchmark); + } + for (const snapshot of Object.keys(snapshots || {})) { const builtSnapshot: AvailableDashboard = { title: snapshot, From 674cb6904dff374e5d8aa614c5e29c576911ccfe Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Wed, 6 Nov 2024 23:49:01 +0700 Subject: [PATCH 12/85] Working detection benchmark with table results --- ...DateRangePicker.js => DateRangePicker.tsx} | 201 ++++++------ .../grouping/DetectionBenchmark/index.tsx | 6 +- .../grouping/DetectionGrouping/index.tsx | 4 +- .../grouping/DetectionPanel/index.tsx | 300 ++++++++++++++++++ .../dashboards/grouping/common/Detection.ts | 37 +-- .../dashboards/grouping/common/index.ts | 5 + .../src/hooks/useDetectionGrouping.tsx | 59 ++-- 7 files changed, 465 insertions(+), 147 deletions(-) rename ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/{DateRangePicker.js => DateRangePicker.tsx} (58%) create mode 100644 ui/dashboard/src/components/dashboards/grouping/DetectionPanel/index.tsx diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.js b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.tsx similarity index 58% rename from ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.js rename to ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.tsx index a0d57fe5..720f97d6 100644 --- a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.js +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.tsx @@ -1,19 +1,18 @@ -import React, { useState, useRef } from 'react'; -import { DayPicker } from 'react-day-picker'; -import 'react-day-picker/dist/style.css'; -import './DateRangePicker.css'; -import 'react-time-picker/dist/TimePicker.css'; -import { format } from 'date-fns'; -import TimePicker from 'react-time-picker'; +import React, { useState, useRef } from "react"; +import { DayPicker } from "react-day-picker"; +import { format } from "date-fns"; +import "react-day-picker/dist/style.css"; +import "react-time-picker/dist/TimePicker.css"; +import "./DateRangePicker.css"; const presets = [ - { label: '1h', value: '1h' }, - { label: '3h', value: '3h' }, - { label: '6h', value: '6h' }, - { label: '12h', value: '12h' }, - { label: '1d', value: '1d' }, - { label: '7d', value: '7d' }, - { label: 'Custom', value: 'custom' }, + { label: "1h", value: "1h" }, + { label: "3h", value: "3h" }, + { label: "6h", value: "6h" }, + { label: "12h", value: "12h" }, + { label: "1d", value: "1d" }, + { label: "7d", value: "7d" }, + { label: "Custom", value: "custom" }, ]; const timeOptions = { @@ -24,89 +23,90 @@ const timeOptions = { }; const DateRangePicker = () => { - const [selectedPreset, setSelectedPreset] = useState('1h'); + const [selectedPreset, setSelectedPreset] = useState("1h"); const [startDate, setStartDate] = useState(null); const [endDate, setEndDate] = useState(null); - const [startTime, setStartTime] = useState('00:00:00'); - const [endTime, setEndTime] = useState('23:59:59'); - const [tab, setTab] = useState('absolute'); + const [startTime, setStartTime] = useState("00:00:00"); + const [endTime, setEndTime] = useState("23:59:59"); + const [tab, setTab] = useState("absolute"); const [duration, setDuration] = useState(1); - const [unitOfTime, setUnitOfTime] = useState('hours'); + const [unitOfTime, setUnitOfTime] = useState("hours"); const [showCustomPanel, setShowCustomPanel] = useState(false); const [savedDateTime, setSavedDateTime] = useState({}); const customButtonRef = useRef(null); const handlePresetChange = (preset) => { setSelectedPreset(preset); - if (preset === 'custom') { + if (preset === "custom") { setShowCustomPanel(!showCustomPanel); // Toggle visibility } else { setShowCustomPanel(false); } }; -const handleApply = () => { - const urlParams = new URLSearchParams(window.location.search); + const handleApply = () => { + const urlParams = new URLSearchParams(window.location.search); - if (tab === 'absolute') { - // Handle absolute case - const formattedStartDate = startDate ? format(startDate, 'yyyy-MM-dd') : ''; - const formattedEndDate = endDate ? format(endDate, 'yyyy-MM-dd') : ''; - const detectionFromValue = `${formattedStartDate} ${startTime}`; - const detectionToValue = `${formattedEndDate} ${endTime}`; + if (tab === "absolute") { + // Handle absolute case + const formattedStartDate = startDate + ? format(startDate, "yyyy-MM-dd") + : ""; + const formattedEndDate = endDate ? format(endDate, "yyyy-MM-dd") : ""; + const detectionFromValue = `${formattedStartDate} ${startTime}`; + const detectionToValue = `${formattedEndDate} ${endTime}`; - // Add/Update URL parameters for absolute values - urlParams.set('detection_from', detectionFromValue); - urlParams.set('detection_to', detectionToValue); + // Add/Update URL parameters for absolute values + urlParams.set("detection_from", detectionFromValue); + urlParams.set("detection_to", detectionToValue); - // Clear relative parameter if it was previously set - urlParams.delete('detection_to_relative'); + // Clear relative parameter if it was previously set + urlParams.delete("detection_to_relative"); - // Save the selected date/time - setSavedDateTime({ - type: 'absolute', - detection_from: detectionFromValue, - detection_to: detectionToValue, - }); + // Save the selected date/time + setSavedDateTime({ + type: "absolute", + detection_from: detectionFromValue, + detection_to: detectionToValue, + }); - alert(`Saved Absolute Date/Time:\nDetection From: ${detectionFromValue}\nDetection To: ${detectionToValue}`); - } else if (tab === 'relative') { - // Handle relative case - const relativeValue = `T-${duration}${unitOfTime[0].toUpperCase()}`; // E.g., "T-5M" for 5 minutes + alert( + `Saved Absolute Date/Time:\nDetection From: ${detectionFromValue}\nDetection To: ${detectionToValue}`, + ); + } else if (tab === "relative") { + // Handle relative case + const relativeValue = `T-${duration}${unitOfTime[0].toUpperCase()}`; // E.g., "T-5M" for 5 minutes - // Add/Update URL parameter for relative value - urlParams.set('detection_to', relativeValue); + // Add/Update URL parameter for relative value + urlParams.set("detection_to", relativeValue); - // Clear absolute parameters if they were previously set - urlParams.delete('detection_from'); + // Clear absolute parameters if they were previously set + urlParams.delete("detection_from"); - // Save the selected relative time - setSavedDateTime({ - type: 'relative', - detection_to: relativeValue, - }); - - alert(`Saved Relative Date/Time:\nDetection To: ${relativeValue}`); - } - - // Update the URL without refreshing the page - window.history.replaceState(null, '', '?' + urlParams.toString()); - - // Hide the custom panel - setShowCustomPanel(false); -}; + // Save the selected relative time + setSavedDateTime({ + type: "relative", + detection_to: relativeValue, + }); + alert(`Saved Relative Date/Time:\nDetection To: ${relativeValue}`); + } + // Update the URL without refreshing the page + window.history.replaceState(null, "", "?" + urlParams.toString()); + // Hide the custom panel + setShowCustomPanel(false); + }; const handleCancel = () => { - setSelectedPreset('1h'); + setSelectedPreset("1h"); setStartDate(null); setEndDate(null); - setStartTime('00:00:00'); - setEndTime('23:59:59'); + setStartTime("00:00:00"); + setEndTime("23:59:59"); setDuration(1); - setUnitOfTime('hours'); + setUnitOfTime("hours"); setShowCustomPanel(false); }; @@ -122,45 +122,49 @@ const handleApply = () => { ))} - {showCustomPanel && selectedPreset === 'custom' && ( + {showCustomPanel && selectedPreset === "custom" && (
- {tab === 'absolute' ? ( + {tab === "absolute" ? (
{ setStartDate(new Date(e.target.value))} /> @@ -195,7 +199,7 @@ const handleApply = () => { setEndDate(new Date(e.target.value))} /> @@ -216,8 +220,8 @@ const handleApply = () => { {timeOptions.minutes.map((min) => ( @@ -229,8 +233,8 @@ const handleApply = () => { {timeOptions.hours.map((hour) => ( @@ -242,8 +246,8 @@ const handleApply = () => { {timeOptions.days.map((day) => ( @@ -255,8 +259,8 @@ const handleApply = () => { {timeOptions.weeks.map((week) => ( @@ -273,7 +277,10 @@ const handleApply = () => { value={duration} onChange={(e) => setDuration(Number(e.target.value))} /> - setUnitOfTime(e.target.value)} + > @@ -284,8 +291,12 @@ const handleApply = () => { )}
- - + +
)} diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx index 8776cb11..6dccdb74 100644 --- a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx @@ -238,7 +238,7 @@ const DetectionBenchmark = (props: InnerCheckProps) => { /> )} - + {summaryCards @@ -265,7 +265,7 @@ const DetectionBenchmark = (props: InnerCheckProps) => { { }; const DetectionTree = (props: DetectionBenchmarkTreeProps) => { - console.log(props); - if (!props.properties || !props.properties.first_child_summaries) { return null; } diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx index 4eb92774..cc226131 100644 --- a/ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionGrouping/index.tsx @@ -1,4 +1,4 @@ -import CheckPanel from "../CheckPanel"; +import DetectionPanel from "@powerpipe/components/dashboards/grouping/DetectionPanel"; import sortBy from "lodash/sortBy"; import { CheckGroupNodeStates, @@ -39,7 +39,7 @@ const DetectionGrouping = ({ node }: DetectionGroupingProps) => { return (
{sortBy(node.children, "sort")?.map((child) => ( - + ))}
); diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionPanel/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionPanel/index.tsx new file mode 100644 index 00000000..35de8d12 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionPanel/index.tsx @@ -0,0 +1,300 @@ +import DetectionEmptyResultNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionEmptyResultNode"; +import DetectionErrorNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionErrorNode"; +import DetectionKeyValuePairNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionKeyValuePairNode"; +import DetectionNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionNode"; +import DetectionResultNode from "../common/node/DetectionResultNode"; +import sortBy from "lodash/sortBy"; +import { + AlarmIcon, + CollapseBenchmarkIcon, + EmptyIcon, + ErrorIcon, + ExpandCheckNodeIcon, +} from "@powerpipe/constants/icons"; +import { classNames } from "@powerpipe/utils/styles"; +import { DetectionResult } from "@powerpipe/components/dashboards/grouping/common"; +import { getComponent } from "@powerpipe/components/dashboards"; +import { + GroupingActions, + useDetectionGrouping, +} from "@powerpipe/hooks/useDetectionGrouping"; +import { useMemo } from "react"; + +const Table = getComponent("table"); + +type DetectionChildrenProps = { + depth: number; + children: DetectionNode[]; +}; + +type DetectionResultsProps = { + empties: DetectionEmptyResultNode[]; + errors: DetectionErrorNode[]; + results: DetectionResultNode[]; +}; + +type DetectionPanelProps = { + depth: number; + node: DetectionNode; +}; + +type DetectionEmptyResultRowProps = { + node: DetectionEmptyResultNode; +}; + +type DetectionResultRowProps = { + result: DetectionResult; +}; + +type DetectionErrorRowProps = { + error: string; +}; + +type DetectionResultRowStatusIconProps = { + total: number; +}; + +const getMargin = (depth) => { + switch (depth) { + case 1: + return "ml-[6px] md:ml-[24px]"; + case 2: + return "ml-[12px] md:ml-[48px]"; + case 3: + return "ml-[18px] md:ml-[72px]"; + case 4: + return "ml-[24px] md:ml-[96px]"; + case 5: + return "ml-[30px] md:ml-[120px]"; + case 6: + return "ml-[36px] md:ml-[144px]"; + default: + return "ml-0"; + } +}; + +const DetectionChildren = ({ children, depth }: DetectionChildrenProps) => { + if (!children) { + return null; + } + + return ( + <> + {children.map((child) => ( + + ))} + + ); +}; + +const DetectionResultRowStatusIcon = ({ + total, +}: DetectionResultRowStatusIconProps) => { + if (total > 0) { + return ; + } + return ; +}; + +const getDetectionResultRowIconTitle = (total: number) => { + if (total > 1) { + return `${total} results.`; + } else if (total === 1) { + return "1 result."; + } + return "No results."; +}; + +const DetectionResultRow = ({ result }: DetectionResultRowProps) => { + return ( +
+
+
+ + + ); +}; + +const DetectionEmptyResultRow = ({ node }: DetectionEmptyResultRowProps) => { + return ( +
+
+ +
+
{node.title}
+
+ ); +}; + +const DetectionErrorRow = ({ error }: DetectionErrorRowProps) => { + return ( +
+
+ +
+
{error}
+
+ ); +}; + +const DetectionResults = ({ + empties, + errors, + results, +}: DetectionResultsProps) => { + if (empties.length === 0 && errors.length === 0 && results.length === 0) { + return null; + } + + return ( +
+ {empties.map((emptyNode) => ( + + ))} + {errors.map((errorNode) => ( + + ))} + {results.map((resultNode) => ( + `${d.key}=${d.value}`) + .join("-")}` + : "" + }`} + result={resultNode.result} + /> + ))} +
+ ); +}; + +const DetectionPanel = ({ depth, node }: DetectionPanelProps) => { + const { dispatch, groupingsConfig, nodeStates } = useDetectionGrouping(); + const expanded = nodeStates[node.name] + ? nodeStates[node.name].expanded + : false; + + const [child_nodes, error_nodes, empty_nodes, result_nodes, can_be_expanded] = + useMemo(() => { + const children: DetectionNode[] = []; + const errors: DetectionErrorNode[] = []; + const empty: DetectionEmptyResultNode[] = []; + const results: DetectionResultNode[] = []; + for (const child of node.children || []) { + if (child.type === "error") { + errors.push(child as DetectionErrorNode); + } else if (child.type === "result") { + results.push(child as DetectionResultNode); + } else if (child.type === "empty_result") { + empty.push(child as DetectionEmptyResultNode); + } else if (child.type !== "running") { + children.push(child); + } + } + return [ + sortBy(children, "sort"), + sortBy(errors, "sort"), + sortBy(empty, "sort"), + results, + children.length > 0 || + (groupingsConfig && + groupingsConfig.length > 0 && + groupingsConfig[groupingsConfig.length - 1].type === "result" && + (errors.length > 0 || empty.length > 0 || results.length > 0)), + ]; + }, [groupingsConfig, node]); + + return ( + <> +
+
0 || + error_nodes.length > 0 || + result_nodes.length > 0) + ? "rounded-b-none border-b-0" + : null, + )} + onClick={() => + can_be_expanded + ? dispatch({ + type: expanded + ? GroupingActions.COLLAPSE_NODE + : GroupingActions.EXPAND_NODE, + name: node.name, + }) + : null + } + > +
+
+
+

+ {(node as DetectionKeyValuePairNode).type === + "detection_tag" && + !!(node as DetectionKeyValuePairNode).key ? ( + {(node as DetectionKeyValuePairNode).key}: + ) : null} + {node.title} +

+
+
{node.summary.total}
+
+ {can_be_expanded && !expanded && ( + + )} + {expanded && ( + + )} + {!can_be_expanded &&
} +
+
+ {can_be_expanded && + expanded && + groupingsConfig && + groupingsConfig[groupingsConfig.length - 1].type === "result" && ( + + )} +
+ {can_be_expanded && expanded && ( + + )} + + ); +}; + +export default DetectionPanel; diff --git a/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts b/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts index e5ca21a8..a36da54b 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts @@ -254,28 +254,29 @@ class Detection implements DetectionNode { const results: DetectionResult[] = []; const dimensionColumns: LeafNodeDataColumn[] = []; for (const col of data.columns) { - if ( - col.name === "reason" || - col.name === "resource" || - col.name === "status" - ) { + if (col.name === "timestamp") { continue; } dimensionColumns.push(col); } - for (const row of data.rows) { - const result = { - reason: row.reason, - resource: row.resource, - status: row.status, - dimensions: dimensionColumns.map((col) => ({ - key: col.name, - value: row[col.name], - })), - }; - // @ts-ignore - results.push(result); - } + const result = { + rows: data.rows, + columns: data.columns, + detection: this, + dimensionColumns, + }; + // for (const row of data.rows) { + // const result = { + // reason: row.reason, + // resource: row.resource, + // status: row.status, + // dimensions: dimensionColumns.map((col) => ({ + // key: col.name, + // value: row[col.name], + // })), + // }; + // @ts-ignore + results.push(result); return results; }; } diff --git a/ui/dashboard/src/components/dashboards/grouping/common/index.ts b/ui/dashboard/src/components/dashboards/grouping/common/index.ts index e960a734..41a43a08 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/index.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/index.ts @@ -4,6 +4,8 @@ import { BasePrimitiveProps, ExecutablePrimitiveProps, LeafNodeData, + LeafNodeDataColumn, + LeafNodeDataRow, } from "../../common"; import { DashboardRunState } from "@powerpipe/types"; @@ -134,6 +136,9 @@ export type CheckResult = { }; export type DetectionResult = { + rows?: LeafNodeDataRow[]; + columns?: LeafNodeDataColumn[]; + dimensionColumns?: LeafNodeDataColumn[]; dimensions: CheckResultDimension[]; tags: CheckTags; detection: DetectionNode; diff --git a/ui/dashboard/src/hooks/useDetectionGrouping.tsx b/ui/dashboard/src/hooks/useDetectionGrouping.tsx index 27397168..1e16acb5 100644 --- a/ui/dashboard/src/hooks/useDetectionGrouping.tsx +++ b/ui/dashboard/src/hooks/useDetectionGrouping.tsx @@ -163,7 +163,7 @@ const getCheckGroupingKey = ( group: DetectionDisplayGroup, ) => { switch (group.type) { - case "benchmark": + case "detection_benchmark": if (checkResult.detection_benchmark_trunk.length <= 1) { return null; } @@ -223,7 +223,7 @@ const getCheckGroupingNode = ( : children[0]; case "detection": return new DetectionNode( - parentGroupType === "benchmark" + parentGroupType === "detection_benchmark" ? detectionResult.detection.sort : detectionResult.detection.title || detectionResult.detection.name, detectionResult.detection.name, @@ -432,10 +432,10 @@ type DetectionGroupingProviderProps = { function recordFilterValues( filterValues: { + detection_benchmark: { value: {} }; detection: { value: {} }; detection_tag: { key: {}; value: {} }; dimension: { key: {}; value: {} }; - benchmark: { value: {} }; status: { total: number; }; @@ -448,9 +448,12 @@ function recordFilterValues( checkResult.detection_benchmark_trunk.length > 0 ) { for (const benchmark of checkResult.detection_benchmark_trunk) { - filterValues.benchmark.value[benchmark.name] = filterValues.benchmark - .value[benchmark.name] || { title: benchmark.title, count: 0 }; - filterValues.benchmark.value[benchmark.name].count += 1; + filterValues.detection_benchmark.value[benchmark.name] = filterValues + .detection_benchmark.value[benchmark.name] || { + title: benchmark.title, + count: 0, + }; + filterValues.detection_benchmark.value[benchmark.name].count += 1; } } @@ -468,27 +471,27 @@ function recordFilterValues( filterValues.status[checkResult.status] += 1; // Record the dimension keys/values + value/key counts of this check result to allow assisted filtering later - for (const dimension of checkResult.dimensions) { - if (!(dimension.key in filterValues.dimension.key)) { - filterValues.dimension.key[dimension.key] = { - [dimension.value]: 0, - }; - } - if (!(dimension.value in filterValues.dimension.key[dimension.key])) { - filterValues.dimension.key[dimension.key][dimension.value] = 0; - } - filterValues.dimension.key[dimension.key][dimension.value] += 1; - - if (!(dimension.value in filterValues.dimension.value)) { - filterValues.dimension.value[dimension.value] = { - [dimension.key]: 0, - }; - } - if (!(dimension.key in filterValues.dimension.value[dimension.value])) { - filterValues.dimension.value[dimension.value][dimension.key] = 0; - } - filterValues.dimension.value[dimension.value][dimension.key] += 1; - } + // for (const dimension of checkResult.dimensions) { + // if (!(dimension.key in filterValues.dimension.key)) { + // filterValues.dimension.key[dimension.key] = { + // [dimension.value]: 0, + // }; + // } + // if (!(dimension.value in filterValues.dimension.key[dimension.key])) { + // filterValues.dimension.key[dimension.key][dimension.value] = 0; + // } + // filterValues.dimension.key[dimension.key][dimension.value] += 1; + // + // if (!(dimension.value in filterValues.dimension.value)) { + // filterValues.dimension.value[dimension.value] = { + // [dimension.key]: 0, + // }; + // } + // if (!(dimension.key in filterValues.dimension.value[dimension.value])) { + // filterValues.dimension.value[dimension.value][dimension.key] = 0; + // } + // filterValues.dimension.value[dimension.value][dimension.key] += 1; + // } // Record the dimension keys/values + value/key counts of this check result to allow assisted filtering later for (const [tagKey, tagValue] of Object.entries(checkResult.tags || {})) { @@ -615,7 +618,7 @@ const useGroupingInternal = ( return useMemo(() => { const filterValues = { - benchmark: { value: {} }, + detection_benchmark: { value: {} }, detection: { value: {} }, detection_tag: { key: {}, value: {} }, dimension: { key: {}, value: {} }, From 5dc8d8f95a8c7b325ec2d02cd51a0c009fe74992 Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Thu, 7 Nov 2024 11:52:17 +0700 Subject: [PATCH 13/85] Tactical fix for detection config URL parsing --- ui/dashboard/src/hooks/useCheckGroupingConfig.ts | 3 +++ ui/dashboard/src/hooks/useDetectionGroupingConfig.ts | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ui/dashboard/src/hooks/useCheckGroupingConfig.ts b/ui/dashboard/src/hooks/useCheckGroupingConfig.ts index 04882be8..f9c16169 100644 --- a/ui/dashboard/src/hooks/useCheckGroupingConfig.ts +++ b/ui/dashboard/src/hooks/useCheckGroupingConfig.ts @@ -9,6 +9,9 @@ const groupingKeys = [ "benchmark", "control", "control_tag", + "detection", + "detection_benchmark", + "detection_tag", "dimension", "reason", "resource", diff --git a/ui/dashboard/src/hooks/useDetectionGroupingConfig.ts b/ui/dashboard/src/hooks/useDetectionGroupingConfig.ts index 1282b917..046ba655 100644 --- a/ui/dashboard/src/hooks/useDetectionGroupingConfig.ts +++ b/ui/dashboard/src/hooks/useDetectionGroupingConfig.ts @@ -6,9 +6,9 @@ import { useMemo } from "react"; import { useSearchParams } from "react-router-dom"; const groupingKeys = [ - "benchmark", - "control", - "control_tag", + "detection_benchmark", + "detection", + "detection_tag", "dimension", "reason", "resource", @@ -17,7 +17,7 @@ const groupingKeys = [ "status", ]; -const useCheckGroupingConfig = () => { +const useDetectionGroupingConfig = () => { const [searchParams] = useSearchParams(); return useMemo(() => { const rawGrouping = searchParams.get("grouping"); @@ -56,4 +56,4 @@ const useCheckGroupingConfig = () => { }, [searchParams]); }; -export default useCheckGroupingConfig; +export default useDetectionGroupingConfig; From dee1c1564789756594a8b9e124dcd907a619d34e Mon Sep 17 00:00:00 2001 From: Darkness4ever Date: Thu, 7 Nov 2024 18:46:25 +0700 Subject: [PATCH 14/85] Add fiters to detection benchmark table --- .../src/components/dashboards/Table/index.tsx | 126 +++++++++++++++--- 1 file changed, 106 insertions(+), 20 deletions(-) diff --git a/ui/dashboard/src/components/dashboards/Table/index.tsx b/ui/dashboard/src/components/dashboards/Table/index.tsx index 8c5277f1..ac81fe94 100644 --- a/ui/dashboard/src/components/dashboards/Table/index.tsx +++ b/ui/dashboard/src/components/dashboards/Table/index.tsx @@ -9,6 +9,9 @@ import { OKIcon, SkipIcon, UnknownIcon, + ErrorIcon, + SortAscendingIcon, + SortDescendingIcon, } from "@powerpipe/constants/icons"; import { BasePrimitiveProps, @@ -18,11 +21,6 @@ import { LeafNodeDataRow, } from "../common"; import { classNames } from "@powerpipe/utils/styles"; -import { - ErrorIcon, - SortAscendingIcon, - SortDescendingIcon, -} from "@powerpipe/constants/icons"; import { injectSearchPathPrefix } from "@powerpipe/utils/url"; import { memo, useEffect, useMemo, useState } from "react"; import { getComponent, registerComponent } from "../index"; @@ -30,6 +28,7 @@ import { PanelDefinition } from "@powerpipe/types"; import { RowRenderResult } from "../common/types"; import { useDashboard } from "@powerpipe/hooks/useDashboard"; import { useSortBy, useTable } from "react-table"; +import Icon from "@powerpipe/components/Icon"; export type TableColumnDisplay = "all" | "none"; export type TableColumnWrap = "all" | "none"; @@ -82,8 +81,6 @@ const getColumns = ( name: col.name, data_type: col.data_type, wrap: colWrap, - // Boolean data types do not sort under the default alphanumeric sorting logic of react-table - // On the next column type that needs specialising we'll move this out into a function / hook sortType: col.data_type === "BOOL" ? "basic" : "alphanumeric", }; if (colHref) { @@ -111,6 +108,8 @@ type CellValueProps = { rowTemplateData: RowRenderResult[]; value: any; showTitle?: boolean; + handleAddFilter: (column: string, value: any) => void; + handleRemoveFilter: (filter: { column: string; value: any }) => void; }; const CellValue = ({ @@ -119,13 +118,14 @@ const CellValue = ({ rowTemplateData, value, showTitle = false, + handleAddFilter, + handleRemoveFilter, }: CellValueProps) => { const ExternalLink = getComponent("external_link"); const { searchPathPrefix } = useDashboard(); const [href, setHref] = useState(null); const [error, setError] = useState(null); - // Calculate a link for this cell useEffect(() => { const renderedTemplateObj = rowTemplateData[rowIndex]; @@ -230,7 +230,6 @@ const CellValue = ({ ); } else if (dataType === "bool") { - // True should be cellContent = href ? ( ); } - // Fallback is just show it as a string if (!cellContent) { cellContent = href ? ( ); } + return error ? ( {cellContent} ) : ( - cellContent +
+ {cellContent} +
+ + +
+
); }; @@ -381,12 +398,47 @@ const TableView = ({ hiddenColumns, hasTopBorder = false, }) => { + const [activeFilters, setActiveFilters] = useState([]); + const [excludedFilters, setExcludedFilters] = useState([]); const { ready: templateRenderReady, renderTemplates } = useTemplateRender(); const [rowTemplateData, setRowTemplateData] = useState([]); + const handleAddFilter = (column, value) => { + const newFilter = { column, value }; + if (!activeFilters.some(f => f.column === column && f.value === value)) { + setActiveFilters([...activeFilters, newFilter]); + setExcludedFilters(excludedFilters.filter(f => f.column !== column || f.value !== value)); + } + }; + + const handleRemoveFilter = (filter) => { + if (!excludedFilters.some(f => f.column === filter.column && f.value === filter.value)) { + setExcludedFilters([...excludedFilters, filter]); + setActiveFilters(activeFilters.filter(f => f.column !== filter.column || f.value !== filter.value)); + } + }; + + const filteredData = useMemo(() => { + let filtered = rowData; + + if (activeFilters.length > 0) { + filtered = filtered.filter(row => { + return activeFilters.every(filter => row[filter.column] === filter.value); + }); + } + + if (excludedFilters.length > 0) { + filtered = filtered.filter(row => { + return excludedFilters.every(filter => row[filter.column] !== filter.value); + }); + } + + return filtered; + }, [rowData, activeFilters, excludedFilters]); + const { getTableProps, getTableBodyProps, headerGroups, prepareRow, rows } = useTable( - { columns, data: rowData, initialState: { hiddenColumns } }, + { columns, data: filteredData, initialState: { hiddenColumns } }, useSortBy, ); @@ -414,8 +466,41 @@ const TableView = ({ doRender(); }, [columns, renderTemplates, rows, templateRenderReady]); + const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1); + return ( - <> +
+ {(activeFilters.length > 0 || excludedFilters.length > 0) && ( +
+ {[...activeFilters, ...excludedFilters].map((filter, index) => { + const isActive = activeFilters.some(f => f.column === filter.column && f.value === filter.value); + return ( +
+ + {`${isActive ? '+ | ' : '- | '}${capitalize(filter.column)}: ${filter.value}`} + + +
+ ); + })} +
+ )} +
- {column.render("Header")} + {capitalize(column.render("Header"))} {column.isSortedDesc ? ( ) : ( @@ -468,7 +553,7 @@ const TableView = ({ {rows.length === 0 && ( ); @@ -508,11 +595,10 @@ const TableView = ({ })}
No results @@ -491,7 +576,7 @@ const TableView = ({ isNumericCol(cell.column.data_type) ? "text-right" : "", cell.column.wrap === "all" ? "break-keep" - : "whitespace-nowrap", + : "whitespace-normal", )} >
- + ); }; -// TODO retain full width on mobile, no padding const TableViewWrapper = (props: TableProps) => { const { columns, hiddenColumns } = useMemo( () => getColumns(props.data ? props.data.columns : [], props.properties), From 1c1d8aab8ef30d47932ff614cf1a1d97dfe89c66 Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Thu, 7 Nov 2024 18:54:50 +0700 Subject: [PATCH 15/85] Add correct totals --- .../src/components/dashboards/grouping/common/Detection.ts | 4 ++-- .../dashboards/grouping/common/node/DetectionResultNode.ts | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts b/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts index a36da54b..e0bf2401 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts @@ -58,7 +58,7 @@ class Detection implements DetectionNode { this._description = description; this._results = this._build_check_results(data); this._summary = summary || { - total: 0, + total: this.results?.length || 0, }; this._tags = tags || {}; this._status = status; @@ -111,7 +111,7 @@ class Detection implements DetectionNode { } get summary(): DetectionSummary { - return this._summary; + return { total: this._results?.length || 0 }; // this._summary; } get error(): string | undefined { diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts index 204577b6..5788935a 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts @@ -49,9 +49,7 @@ class DetectionResultNode implements DetectionNode { } get summary(): DetectionSummary { - return { - total: 1, - }; + return { total: this._result?.rows?.length || 0 }; } get status(): CheckNodeStatus { From 65ceb71e63da2bd977db525c09f9c65fc489922f Mon Sep 17 00:00:00 2001 From: Darkness4ever Date: Thu, 7 Nov 2024 19:38:17 +0700 Subject: [PATCH 16/85] Add icons to filter bubbles instead of | --- .../src/components/dashboards/Table/index.tsx | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/ui/dashboard/src/components/dashboards/Table/index.tsx b/ui/dashboard/src/components/dashboards/Table/index.tsx index ac81fe94..cc2ed129 100644 --- a/ui/dashboard/src/components/dashboards/Table/index.tsx +++ b/ui/dashboard/src/components/dashboards/Table/index.tsx @@ -350,15 +350,15 @@ const CellValue = ({
@@ -477,11 +477,16 @@ const TableView = ({ return (
- - {`${isActive ? '+ | ' : '- | '}${capitalize(filter.column)}: ${filter.value}`} - + + {isActive ? ( + + ) : ( + + )} + {` ${capitalize(filter.column)}: ${filter.value}`} +
{node.summary.total}
diff --git a/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts b/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts index e0bf2401..1bb7cb6d 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/Detection.ts @@ -1,15 +1,16 @@ import { AddDetectionResultsAction, - DetectionDynamicColsMap, CheckNodeStatus, - GroupingNodeType, - DetectionResult, CheckResultStatus, - CheckSeveritySummary, - DetectionSummary, - CheckTags, + DetectionDynamicColsMap, DetectionNode, + DetectionResult, + DetectionSeverity, + DetectionSeveritySummary, + DetectionTags, + DetectionSummary, findDimension, + GroupingNodeType, } from "@powerpipe/components/dashboards/grouping/common"; import { DashboardRunState } from "@powerpipe/types"; import { @@ -27,9 +28,10 @@ class Detection implements DetectionNode { private readonly _name: string; private readonly _title: string | undefined; private readonly _description: string | undefined; + private readonly _severity: DetectionSeverity | undefined; private readonly _results: DetectionResult[]; private readonly _summary: DetectionSummary; - private readonly _tags: CheckTags; + private readonly _tags: DetectionTags; private readonly _status: DashboardRunState; private readonly _error: string | undefined; @@ -41,9 +43,10 @@ class Detection implements DetectionNode { name: string, title: string | undefined, description: string | undefined, + severity: DetectionSeverity | undefined, data: LeafNodeData | undefined, summary: DetectionSummary | undefined, - tags: CheckTags | undefined, + tags: DetectionTags | undefined, status: DashboardRunState, error: string | undefined, detection_benchmark_trunk: DetectionBenchmark[], @@ -56,6 +59,7 @@ class Detection implements DetectionNode { this._name = name; this._title = title; this._description = description; + this._severity = severity; this._results = this._build_check_results(data); this._summary = summary || { total: this.results?.length || 0, @@ -102,7 +106,11 @@ class Detection implements DetectionNode { return this._title || this._name; } - get severity_summary(): CheckSeveritySummary { + get severity(): DetectionSeverity | undefined { + return this._severity; + } + + get severity_summary(): DetectionSeveritySummary { return {}; } @@ -133,7 +141,7 @@ class Detection implements DetectionNode { return this._results; } - get tags(): CheckTags { + get tags(): DetectionTags { return this._tags; } @@ -166,6 +174,7 @@ class Detection implements DetectionNode { detection_id: this._name, detection_title: this._title ? this._title : null, detection_description: this._description ? this._description : null, + severity: this._severity ? this._severity : null, reason: result.reason, resource: result.resource, status: result.status, @@ -241,6 +250,7 @@ class Detection implements DetectionNode { return results.map((r) => ({ ...r, type: "result", + severity: this.severity, tags: this.tags, detection_benchmark_trunk, detection: this, diff --git a/ui/dashboard/src/components/dashboards/grouping/common/DetectionBenchmark.ts b/ui/dashboard/src/components/dashboards/grouping/common/DetectionBenchmark.ts index 724eb4a9..c9b98466 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/DetectionBenchmark.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/DetectionBenchmark.ts @@ -9,6 +9,7 @@ import { GroupingNodeType, DetectionResult, DetectionRun, + DetectionSeveritySummary, DetectionSummary, } from "@powerpipe/components/dashboards/grouping/common"; import { DashboardLayoutNode, PanelsMap } from "@powerpipe/types"; @@ -99,6 +100,7 @@ class DetectionBenchmark implements DetectionNode { detection.name, detection.title, detection.description, + detection.severity, detection.data, detection.summary, detection.tags, @@ -134,7 +136,7 @@ class DetectionBenchmark implements DetectionNode { } get type(): GroupingNodeType { - return "benchmark"; + return "detection_benchmark"; } get children(): DetectionNode[] { @@ -164,6 +166,10 @@ class DetectionBenchmark implements DetectionNode { return summary; } + get severity_summary(): DetectionSeveritySummary { + return {}; + } + get status(): DetectionNodeStatus { for (const benchmark of this._benchmarks) { if (benchmark.status === "running") { diff --git a/ui/dashboard/src/components/dashboards/grouping/common/index.ts b/ui/dashboard/src/components/dashboards/grouping/common/index.ts index 41a43a08..84c37591 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/index.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/index.ts @@ -32,9 +32,9 @@ export type CheckNode = { name: string; title: string; type: GroupingNodeType; - status: CheckNodeStatus; severity?: CheckSeverity; severity_summary: CheckSeveritySummary; + status: CheckNodeStatus; summary: CheckSummary; children?: CheckNode[]; data?: LeafNodeData; @@ -47,6 +47,8 @@ export type DetectionNode = { name: string; title: string; type: GroupingNodeType; + severity?: DetectionSeverity; + severity_summary: DetectionSeveritySummary; status: CheckNodeStatus; summary: DetectionSummary; children?: DetectionNode[]; @@ -67,6 +69,14 @@ export type CheckSeveritySummary = [key in CheckSeverity]: number; }; +export type DetectionSeverity = "none" | "low" | "medium" | "high" | "critical"; + +export type DetectionSeveritySummary = + | {} + | { + [key in DetectionSeverity]: number; + }; + export type CheckSummary = { alarm: number; ok: number; @@ -143,6 +153,7 @@ export type DetectionResult = { tags: CheckTags; detection: DetectionNode; detection_benchmark_trunk: DetectionBenchmark[]; + severity?: DetectionSeverity; status: CheckResultStatus; reason: string; resource: string; @@ -155,29 +166,30 @@ type CheckControlRunProperties = { }; export type CheckControlRun = { - name: string; - title?: string; + data: LeafNodeData; description?: string; + error?: string; + name: string; panel_type: "control"; properties?: CheckControlRunProperties; severity?: CheckSeverity | undefined; - tags?: CheckTags; - data: LeafNodeData; - summary: CheckSummary; status: DashboardRunState; - error?: string; + summary: CheckSummary; + tags?: CheckTags; + title?: string; }; export type DetectionRun = { - name: string; - title?: string; + data: LeafNodeData; description?: string; + error?: string; + name: string; panel_type: "detection"; - tags?: CheckTags; - data: LeafNodeData; - summary: DetectionSummary; + severity?: DetectionSeverity | undefined; status: DashboardRunState; - error?: string; + summary: DetectionSummary; + tags?: CheckTags; + title?: string; }; export type CheckDisplayGroupType = diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionEmptyResultNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionEmptyResultNode.ts index bf862413..18105d91 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionEmptyResultNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionEmptyResultNode.ts @@ -1,9 +1,10 @@ import { CheckNodeStatus, - GroupingNodeType, - DetectionSummary, - DetectionResult, DetectionNode, + DetectionResult, + DetectionSeveritySummary, + DetectionSummary, + GroupingNodeType, } from "@powerpipe/components/dashboards/grouping/common"; class DetectionEmptyResultNode implements DetectionNode { @@ -33,6 +34,15 @@ class DetectionEmptyResultNode implements DetectionNode { return "empty_result"; } + get severity_summary(): DetectionSeveritySummary { + // Bubble up the node's severity - always zero though as we have no results + const summary = {}; + if (this._result.detection.severity) { + summary[this._result.detection.severity] = 0; + } + return summary; + } + get summary(): DetectionSummary { return { total: 0, diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionErrorNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionErrorNode.ts index b33baac9..894bec39 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionErrorNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionErrorNode.ts @@ -1,9 +1,10 @@ import { - DetectionNodeStatus, - GroupingNodeType, - DetectionSummary, DetectionNode, + DetectionNodeStatus, DetectionResult, + DetectionSeveritySummary, + DetectionSummary, + GroupingNodeType, } from "../index"; class DetectionErrorNode implements DetectionNode { @@ -33,6 +34,15 @@ class DetectionErrorNode implements DetectionNode { return "error"; } + get severity_summary(): DetectionSeveritySummary { + // Bubble up the node's severity - always zero though as we have no results + const summary = {}; + if (this._result.detection.severity) { + summary[this._result.detection.severity] = 0; + } + return summary; + } + get summary(): DetectionSummary { return { total: 1, diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionHierarchyNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionHierarchyNode.ts index 946e7b46..53a5ad69 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionHierarchyNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionHierarchyNode.ts @@ -1,7 +1,8 @@ import { DetectionNode, - DetectionSummary, DetectionNodeStatus, + DetectionSeveritySummary, + DetectionSummary, GroupingNodeType, } from "../index"; @@ -57,6 +58,20 @@ class DetectionHierarchyNode implements DetectionNode { return summary; } + get severity_summary(): DetectionSeveritySummary { + const summary = {}; + for (const child of this._children) { + for (const [severity, count] of Object.entries(child.severity_summary)) { + if (!summary[severity]) { + summary[severity] = count; + } else { + summary[severity] += count; + } + } + } + return summary; + } + get status(): DetectionNodeStatus { for (const child of this._children) { if (child.status === "running") { diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts index 5788935a..ff74635b 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionResultNode.ts @@ -1,9 +1,10 @@ import { CheckNodeStatus, - GroupingNodeType, - DetectionSummary, - DetectionResult, DetectionNode, + DetectionResult, + DetectionSeveritySummary, + DetectionSummary, + GroupingNodeType, } from "../index"; // class ControlResultNode extends HierarchyNode { @@ -48,6 +49,15 @@ class DetectionResultNode implements DetectionNode { return "result"; } + get severity_summary(): DetectionSeveritySummary { + const summary = {}; + if (this._result.detection.severity) { + summary[this._result.detection.severity] = + this._result?.rows?.length || 0; + } + return summary; + } + get summary(): DetectionSummary { return { total: this._result?.rows?.length || 0 }; } diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRunningNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRunningNode.ts index 74f32b39..35d7e961 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRunningNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionRunningNode.ts @@ -2,8 +2,9 @@ import { GroupingNodeType, DetectionNode, DetectionNodeStatus, - DetectionSummary, DetectionResult, + DetectionSeveritySummary, + DetectionSummary, } from "../index"; class DetectionRunningNode implements DetectionNode { @@ -29,6 +30,15 @@ class DetectionRunningNode implements DetectionNode { return "running"; } + get severity_summary(): DetectionSeveritySummary { + // Bubble up the node's severity - always zero though as we have no results + const summary = {}; + if (this._result.detection.severity) { + summary[this._result.detection.severity] = 0; + } + return summary; + } + get summary(): DetectionSummary { return { total: 0, diff --git a/ui/dashboard/src/hooks/useDetectionGrouping.tsx b/ui/dashboard/src/hooks/useDetectionGrouping.tsx index da2c95cc..67b0622f 100644 --- a/ui/dashboard/src/hooks/useDetectionGrouping.tsx +++ b/ui/dashboard/src/hooks/useDetectionGrouping.tsx @@ -15,6 +15,7 @@ import { DetectionNode as DetectionNodeType, DetectionResult, DetectionResultDimension, + DetectionSeverity, DetectionSummary, DetectionTags, findDimension, @@ -137,6 +138,40 @@ const addBenchmarkTrunkNode = ( ); }; +const getDetectionSeverityGroupingKey = ( + severity: DetectionSeverity | undefined, +): string => { + switch (severity) { + case "low": + return "Low"; + case "medium": + return "Medium"; + case "high": + return "High"; + case "critical": + return "Critical"; + default: + return "Unspecified"; + } +}; + +const getDetectionSeveritySortKey = ( + severity: DetectionSeverity | undefined, +): string => { + switch (severity) { + case "critical": + return "0"; + case "high": + return "1"; + case "medium": + return "2"; + case "low": + return "3"; + default: + return "4"; + } +}; + const getCheckDimensionGroupingKey = ( dimensionKey: string | undefined, dimensions: DetectionResultDimension[], @@ -176,6 +211,8 @@ const getCheckGroupingKey = ( return getCheckTagGroupingKey(group.value, checkResult.tags); case "dimension": return getCheckDimensionGroupingKey(group.value, checkResult.dimensions); + case "severity": + return getDetectionSeverityGroupingKey(checkResult.detection.severity); default: return "Other"; } @@ -190,6 +227,34 @@ const getCheckGroupingNode = ( parentGroupType: string | null, ): DetectionNodeType => { switch (group.type) { + case "detection": + return new DetectionNode( + parentGroupType === "detection_benchmark" + ? detectionResult.detection.sort + : detectionResult.detection.title || detectionResult.detection.name, + detectionResult.detection.name, + detectionResult.detection.title, + children, + ); + case "detection_benchmark": + return detectionResult.detection_benchmark_trunk.length > 1 + ? addBenchmarkTrunkNode( + detectionResult.detection_benchmark_trunk.slice(1), + children, + benchmarkChildrenLookup, + groupingKeysBeforeBenchmark, + parentGroupType, + ) + : children[0]; + case "detection_tag": + const value = getCheckTagGroupingKey(group.value, detectionResult.tags); + return new DetectionKeyValuePairNode( + value, + "control_tag", + group.value || "Tag key not set", + value, + children, + ); case "dimension": const dimensionValue = getCheckDimensionGroupingKey( group.value, @@ -202,32 +267,12 @@ const getCheckGroupingNode = ( dimensionValue, children, ); - case "detection_tag": - const value = getCheckTagGroupingKey(group.value, detectionResult.tags); + case "severity": return new DetectionKeyValuePairNode( - value, - "control_tag", - group.value || "Tag key not set", - value, - children, - ); - case "detection_benchmark": - return detectionResult.detection_benchmark_trunk.length > 1 - ? addBenchmarkTrunkNode( - detectionResult.detection_benchmark_trunk.slice(1), - children, - benchmarkChildrenLookup, - groupingKeysBeforeBenchmark, - parentGroupType, - ) - : children[0]; - case "detection": - return new DetectionNode( - parentGroupType === "detection_benchmark" - ? detectionResult.detection.sort - : detectionResult.detection.title || detectionResult.detection.name, - detectionResult.detection.name, - detectionResult.detection.title, + getDetectionSeveritySortKey(detectionResult.detection.severity), + "severity", + "severity", + getDetectionSeverityGroupingKey(detectionResult.detection.severity), children, ); default: @@ -436,18 +481,19 @@ function recordFilterValues( detection: { value: {} }; detection_tag: { key: {}; value: {} }; dimension: { key: {}; value: {} }; + severity: { value: {} }; status: { total: number; }; }, - checkResult: DetectionResult, + detectionResult: DetectionResult, ) { // Record the benchmark of this check result to allow assisted filtering later if ( - !!checkResult.detection_benchmark_trunk && - checkResult.detection_benchmark_trunk.length > 0 + !!detectionResult.detection_benchmark_trunk && + detectionResult.detection_benchmark_trunk.length > 0 ) { - for (const benchmark of checkResult.detection_benchmark_trunk) { + for (const benchmark of detectionResult.detection_benchmark_trunk) { filterValues.detection_benchmark.value[benchmark.name] = filterValues .detection_benchmark.value[benchmark.name] || { title: benchmark.title, @@ -458,17 +504,24 @@ function recordFilterValues( } // Record the control of this check result to allow assisted filtering later - filterValues.detection.value[checkResult.detection.name] = filterValues - .detection.value[checkResult.detection.name] || { - title: checkResult.detection.title, + filterValues.detection.value[detectionResult.detection.name] = filterValues + .detection.value[detectionResult.detection.name] || { + title: detectionResult.detection.title, count: 0, }; - filterValues.detection.value[checkResult.detection.name].count += 1; + filterValues.detection.value[detectionResult.detection.name].count += 1; + + // Record the severity of this check result to allow assisted filtering later + if (detectionResult.severity) { + filterValues.severity.value[detectionResult.severity.toString()] = + filterValues.severity.value[detectionResult.severity.toString()] || 0; + filterValues.severity.value[detectionResult.severity.toString()] += 1; + } // Record the status of this check result to allow assisted filtering later - filterValues.status[checkResult.status] = - filterValues.status[checkResult.status] || 0; - filterValues.status[checkResult.status] += 1; + filterValues.status[detectionResult.status] = + filterValues.status[detectionResult.status] || 0; + filterValues.status[detectionResult.status] += 1; // Record the dimension keys/values + value/key counts of this check result to allow assisted filtering later // for (const dimension of checkResult.dimensions) { @@ -494,7 +547,7 @@ function recordFilterValues( // } // Record the dimension keys/values + value/key counts of this check result to allow assisted filtering later - for (const [tagKey, tagValue] of Object.entries(checkResult.tags || {})) { + for (const [tagKey, tagValue] of Object.entries(detectionResult.tags || {})) { if (!(tagKey in filterValues.detection_tag.key)) { filterValues.detection_tag.key[tagKey] = { [tagValue]: 0, @@ -566,6 +619,10 @@ const includeResult = ( matches.push(valueRegex.test(checkResult.detection.name)); break; } + case "severity": { + matches.push(valueRegex.test(checkResult.severity || "")); + break; + } case "status": { matches.push(valueRegex.test(checkResult.status.toString())); break; @@ -622,6 +679,7 @@ const useGroupingInternal = ( detection: { value: {} }, detection_tag: { key: {}, value: {} }, dimension: { key: {}, value: {} }, + severity: { value: {} }, status: { total: 0 }, }; From d16e72c0989357e3b628d2dda05816dfb28210e3 Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Thu, 7 Nov 2024 23:42:29 +0700 Subject: [PATCH 19/85] Stop crash on search --- ui/dashboard/src/components/DashboardList/index.tsx | 7 ++++++- ui/dashboard/src/types/index.ts | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ui/dashboard/src/components/DashboardList/index.tsx b/ui/dashboard/src/components/DashboardList/index.tsx index 2b7348c5..e6244452 100644 --- a/ui/dashboard/src/components/DashboardList/index.tsx +++ b/ui/dashboard/src/components/DashboardList/index.tsx @@ -107,6 +107,10 @@ const BenchmarkTitle = ({ benchmark, searchValue, searchPathPrefix }) => { const parts: AvailableDashboard[] = []; + if (!benchmark.trunks || benchmark.trunks.length === 0) { + return null; + } + for (const trunk of benchmark.trunks[0]) { const part = dashboardsMap[trunk]; if (part) { @@ -142,7 +146,8 @@ const Section = ({
{(dashboard.type === "dashboard" || - dashboard.type === "snapshot") && ( + dashboard.type === "snapshot" || + dashboard.type === "detection") && ( )} {(dashboard.type === "benchmark" || diff --git a/ui/dashboard/src/types/index.ts b/ui/dashboard/src/types/index.ts index aecac1e8..deaec530 100644 --- a/ui/dashboard/src/types/index.ts +++ b/ui/dashboard/src/types/index.ts @@ -370,8 +370,9 @@ type AvailableDashboardTags = { type AvailableDashboardType = | "available_dashboard" | "benchmark" - | "detection_benchmark" | "dashboard" + | "detection_benchmark" + | "detection" | "snapshot"; export type AvailableDashboard = { From dad4c869386fd3936e8746f7e0e7ec32488121e3 Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Thu, 7 Nov 2024 23:45:46 +0700 Subject: [PATCH 20/85] Fix crash when clicking summary card --- .../src/hooks/useDetectionGrouping.tsx | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/ui/dashboard/src/hooks/useDetectionGrouping.tsx b/ui/dashboard/src/hooks/useDetectionGrouping.tsx index 67b0622f..f5a03309 100644 --- a/ui/dashboard/src/hooks/useDetectionGrouping.tsx +++ b/ui/dashboard/src/hooks/useDetectionGrouping.tsx @@ -603,6 +603,10 @@ const includeResult = ( const valueRegex = new RegExp(`^${wildcardToRegex(filter.value)}$`); switch (filter.type) { + case "detection": { + matches.push(valueRegex.test(checkResult.detection.name)); + break; + } case "detection_benchmark": { let matchesTrunk = false; for (const benchmark of checkResult.detection_benchmark_trunk || []) { @@ -615,18 +619,6 @@ const includeResult = ( matches.push(matchesTrunk); break; } - case "detection": { - matches.push(valueRegex.test(checkResult.detection.name)); - break; - } - case "severity": { - matches.push(valueRegex.test(checkResult.severity || "")); - break; - } - case "status": { - matches.push(valueRegex.test(checkResult.status.toString())); - break; - } case "dimension": { // @ts-ignore const keyRegex = new RegExp(`^${wildcardToRegex(filter.key)}$`); @@ -643,7 +635,7 @@ const includeResult = ( matches.push(matchesDimensions); break; } - case "control_tag": { + case "detection_tag": { // @ts-ignore const keyRegex = new RegExp(`^${wildcardToRegex(filter.key)}$`); let matchesTags = false; @@ -658,6 +650,10 @@ const includeResult = ( matches.push(matchesTags); break; } + case "severity": { + matches.push(valueRegex.test(checkResult.severity || "")); + break; + } default: matches.push(true); } From 5dd35f1e90654e3db7762f0fba593a4c24e400fd Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Fri, 8 Nov 2024 00:15:06 +0700 Subject: [PATCH 21/85] Add loading state to total card --- .../src/components/dashboards/Card/index.tsx | 1 + .../components/dashboards/data/CardDataProcessor.ts | 2 +- .../grouping/DetectionBenchmark/index.tsx | 13 +++++++++++-- .../grouping/common/node/DetectionNode.ts | 8 ++++---- ui/dashboard/src/hooks/useDetectionGrouping.tsx | 2 +- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/ui/dashboard/src/components/dashboards/Card/index.tsx b/ui/dashboard/src/components/dashboards/Card/index.tsx index f7dd4c5b..a25c896c 100644 --- a/ui/dashboard/src/components/dashboards/Card/index.tsx +++ b/ui/dashboard/src/components/dashboards/Card/index.tsx @@ -34,6 +34,7 @@ export interface CardProperties extends IDiffProperties { value?: any; icon?: string; href?: string; + loading?: boolean; } export type CardProps = PanelProperties & diff --git a/ui/dashboard/src/components/dashboards/data/CardDataProcessor.ts b/ui/dashboard/src/components/dashboards/data/CardDataProcessor.ts index d9cf9804..154de2dd 100644 --- a/ui/dashboard/src/components/dashboards/data/CardDataProcessor.ts +++ b/ui/dashboard/src/components/dashboards/data/CardDataProcessor.ts @@ -48,7 +48,7 @@ export class CardDataProcessor { display_type: CardType | undefined, ): CardState => { return { - loading: status === "running", + loading: status === "running" || !!properties.loading, label: properties.label || null, value: isNumber(properties.value) ? properties.value.toLocaleString() diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx index 6dcff54f..33d3dc99 100644 --- a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx @@ -122,14 +122,23 @@ const DetectionBenchmark = (props: InnerCheckProps) => { { name: `${props.definition.name}.container.summary.total`, width: 2, - display_type: totalSummary.total > 0 ? "alert" : "ok", + display_type: + totalSummary.total > 0 + ? "alert" + : props.grouping.status === "complete" + ? "ok" + : null, properties: { + loading: + totalSummary.total === 0 && props.grouping.status === "running", label: "Total Detections", value: totalSummary.total, icon: totalSummary.total > 0 ? "materialsymbols-solid:circle_notifications" - : "materialsymbols-solid:check_circle", + : props.grouping.status === "complete" + ? "materialsymbols-solid:check_circle" + : null, }, diff_panel: !!diffTotalSummary ? { diff --git a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionNode.ts b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionNode.ts index cc2df448..9e48c950 100644 --- a/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionNode.ts +++ b/ui/dashboard/src/components/dashboards/grouping/common/node/DetectionNode.ts @@ -1,15 +1,15 @@ import DetectionHierarchyNode from "@powerpipe/components/dashboards/grouping/common/node/DetectionHierarchyNode"; -import { DetectionNode } from "../index"; +import { DetectionNode as DetectionNodeType } from "../index"; -class ControlNode extends DetectionHierarchyNode { +class DetectionNode extends DetectionHierarchyNode { constructor( sort: string, name: string, title: string | undefined, - children?: DetectionNode[], + children?: DetectionNodeType[], ) { super("detection", name, title || name, sort, children || []); } } -export default ControlNode; +export default DetectionNode; diff --git a/ui/dashboard/src/hooks/useDetectionGrouping.tsx b/ui/dashboard/src/hooks/useDetectionGrouping.tsx index f5a03309..2e7b1ab6 100644 --- a/ui/dashboard/src/hooks/useDetectionGrouping.tsx +++ b/ui/dashboard/src/hooks/useDetectionGrouping.tsx @@ -524,7 +524,7 @@ function recordFilterValues( filterValues.status[detectionResult.status] += 1; // Record the dimension keys/values + value/key counts of this check result to allow assisted filtering later - // for (const dimension of checkResult.dimensions) { + // for (const dimension of detectionResult.dimensions) { // if (!(dimension.key in filterValues.dimension.key)) { // filterValues.dimension.key[dimension.key] = { // [dimension.value]: 0, From a8076c273b0cc284d9e15c940bf97b6d84c36840 Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Fri, 8 Nov 2024 11:13:15 +0700 Subject: [PATCH 22/85] Remove group by for now --- ui/dashboard/src/components/SaveSnapshotButton/index.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ui/dashboard/src/components/SaveSnapshotButton/index.tsx b/ui/dashboard/src/components/SaveSnapshotButton/index.tsx index ee29f32e..e488893c 100644 --- a/ui/dashboard/src/components/SaveSnapshotButton/index.tsx +++ b/ui/dashboard/src/components/SaveSnapshotButton/index.tsx @@ -46,7 +46,8 @@ const SaveSnapshotButton = () => { } if (!!groupingConfig) { // @ts-ignore - metadata.view.group_by = groupingToSnapshotMetadata(groupingConfig); + // TODO @mike re-include this + // metadata.view.group_by = groupingToSnapshotMetadata(groupingConfig); } withMetadata.metadata = metadata; withMetadata.schema_version = EXECUTION_SCHEMA_VERSION_20240607; From ebd487ccd99e072b360b45007125fe1153c93bed Mon Sep 17 00:00:00 2001 From: kai Date: Fri, 8 Nov 2024 11:13:49 +0700 Subject: [PATCH 23/85] dashboard input values now passed using InputValues struct --- internal/cmd/dashboard.go | 4 +-- internal/cmd/detection.go | 4 ++- .../dashboard_execution_tree.go | 4 +-- internal/dashboardexecute/executor.go | 12 ++++---- internal/dashboardexecute/snapshot.go | 2 +- internal/dashboardexecute/t.go | 28 +++++++++++++++++++ internal/dashboardserver/server.go | 6 ++-- internal/dashboardserver/types.go | 5 ++-- test/mod.pp | 8 ++++++ 9 files changed, 56 insertions(+), 17 deletions(-) create mode 100644 internal/dashboardexecute/t.go create mode 100644 test/mod.pp diff --git a/internal/cmd/dashboard.go b/internal/cmd/dashboard.go index 204dcdd6..b3b7f240 100644 --- a/internal/cmd/dashboard.go +++ b/internal/cmd/dashboard.go @@ -244,7 +244,7 @@ func setExitCodeForDashboardError(err error) { } // gather the arg values provided with the --args flag -func collectInputs() (map[string]interface{}, error) { +func collectInputs() (*dashboardexecute.InputValues, error) { res := make(map[string]interface{}) inputArgs := viper.GetStringSlice(constants.ArgArg) for _, variableArg := range inputArgs { @@ -267,7 +267,7 @@ func collectInputs() (map[string]interface{}, error) { res[key] = rawVal } - return res, nil + return &dashboardexecute.InputValues{Inputs: res}, nil } diff --git a/internal/cmd/detection.go b/internal/cmd/detection.go index 3e928c6d..7793bdf1 100644 --- a/internal/cmd/detection.go +++ b/internal/cmd/detection.go @@ -137,7 +137,9 @@ func detectionRun[T DetectionTarget](cmd *cobra.Command, args []string) { target, err := initData.GetSingleTarget() error_helpers.FailOnError(err) - snap, err := dashboardexecute.GenerateSnapshot(ctx, initData.Workspace, target, map[string]any{}) + inputs := dashboardexecute.NewInputValues() + + snap, err := dashboardexecute.GenerateSnapshot(ctx, initData.Workspace, target, inputs) error_helpers.FailOnError(err) // display the snapshot result (if needed) displaySnapshot(snap) diff --git a/internal/dashboardexecute/dashboard_execution_tree.go b/internal/dashboardexecute/dashboard_execution_tree.go index da6d7d03..f1451c68 100644 --- a/internal/dashboardexecute/dashboard_execution_tree.go +++ b/internal/dashboardexecute/dashboard_execution_tree.go @@ -228,7 +228,7 @@ func (*DashboardExecutionTree) GetNodeType() string { panic("should never call for DashboardExecutionTree") } -func (e *DashboardExecutionTree) SetInputValues(inputValues map[string]any) { +func (e *DashboardExecutionTree) SetInputValues(inputValues *InputValues) { slog.Debug("SetInputValues") e.inputLock.Lock() defer e.inputLock.Unlock() @@ -241,7 +241,7 @@ func (e *DashboardExecutionTree) SetInputValues(inputValues map[string]any) { return } - for name, value := range inputValues { + for name, value := range inputValues.Inputs { slog.Debug("DashboardExecutionTree SetInput", "name", name, "value", value) e.inputValues[name] = value // publish runtime dependency diff --git a/internal/dashboardexecute/executor.go b/internal/dashboardexecute/executor.go index 9e706d3b..06b263c8 100644 --- a/internal/dashboardexecute/executor.go +++ b/internal/dashboardexecute/executor.go @@ -43,7 +43,7 @@ func NewDashboardExecutor(defaultClient *db_client.ClientMap) *DashboardExecutor var Executor *DashboardExecutor -func (e *DashboardExecutor) ExecuteDashboard(ctx context.Context, sessionId string, rootResource modconfig.ModTreeItem, inputs map[string]any, workspace *workspace.PowerpipeWorkspace, opts ...backend.ConnectOption) (err error) { +func (e *DashboardExecutor) ExecuteDashboard(ctx context.Context, sessionId string, rootResource modconfig.ModTreeItem, inputs *InputValues, workspace *workspace.PowerpipeWorkspace, opts ...backend.ConnectOption) (err error) { var executionTree *DashboardExecutionTree defer func() { if err == nil && ctx.Err() != nil { @@ -75,7 +75,7 @@ func (e *DashboardExecutor) ExecuteDashboard(ctx context.Context, sessionId stri // if inputs must be provided before execution (i.e. this is a batch dashboard execution), // verify all required inputs are provided - if err = e.validateInputs(executionTree, inputs); err != nil { + if err = e.validateInputs(executionTree, inputs.Inputs); err != nil { return err } @@ -83,7 +83,7 @@ func (e *DashboardExecutor) ExecuteDashboard(ctx context.Context, sessionId stri e.setExecution(sessionId, executionTree) // if inputs have been passed, set them first - if len(inputs) > 0 { + if !inputs.Empty() { executionTree.SetInputValues(inputs) } @@ -94,7 +94,7 @@ func (e *DashboardExecutor) ExecuteDashboard(ctx context.Context, sessionId stri // if inputs must be provided before execution (i.e. this is a batch dashboard execution), // verify all required inputs are provided -func (e *DashboardExecutor) validateInputs(executionTree *DashboardExecutionTree, inputs map[string]any) error { +func (e *DashboardExecutor) validateInputs(executionTree *DashboardExecutionTree, inputs map[string]interface{}) error { if e.interactive { // interactive dashboard execution - no need to validate return nil @@ -141,7 +141,7 @@ func (e *DashboardExecutor) LoadSnapshot(ctx context.Context, sessionId, snapsho return snap, nil } -func (e *DashboardExecutor) OnInputChanged(ctx context.Context, sessionId string, inputs map[string]any, changedInput string) error { +func (e *DashboardExecutor) OnInputChanged(ctx context.Context, sessionId string, inputs *InputValues, changedInput string) error { // find the execution executionTree, found := e.executions[sessionId] if !found { @@ -151,7 +151,7 @@ func (e *DashboardExecutor) OnInputChanged(ctx context.Context, sessionId string // get the previous value of this input inputPrevValue := executionTree.inputValues[changedInput] // first see if any other inputs rely on the one which was just changed - clearedInputs := e.clearDependentInputs(executionTree.Root, changedInput, inputs) + clearedInputs := e.clearDependentInputs(executionTree.Root, changedInput, inputs.Inputs) if len(clearedInputs) > 0 { event := &dashboardevents.InputValuesCleared{ ClearedInputs: clearedInputs, diff --git a/internal/dashboardexecute/snapshot.go b/internal/dashboardexecute/snapshot.go index 00d7d9ab..cd1f80ee 100644 --- a/internal/dashboardexecute/snapshot.go +++ b/internal/dashboardexecute/snapshot.go @@ -9,7 +9,7 @@ import ( "github.com/turbot/powerpipe/internal/workspace" ) -func GenerateSnapshot(ctx context.Context, w *workspace.PowerpipeWorkspace, rootResource modconfig.ModTreeItem, inputs map[string]any) (snapshot *steampipeconfig.SteampipeSnapshot, err error) { +func GenerateSnapshot(ctx context.Context, w *workspace.PowerpipeWorkspace, rootResource modconfig.ModTreeItem, inputs *InputValues) (snapshot *steampipeconfig.SteampipeSnapshot, err error) { // no session for manual execution sessionId := "" errorChannel := make(chan error) diff --git a/internal/dashboardexecute/t.go b/internal/dashboardexecute/t.go new file mode 100644 index 00000000..9ac00746 --- /dev/null +++ b/internal/dashboardexecute/t.go @@ -0,0 +1,28 @@ +package dashboardexecute + +import "time" + +type TimeRange struct { + From *time.Time `json:"from"` + To *time.Time `json:"to"` +} + +type InputValues struct { + Inputs map[string]interface{} `json:"inputs"` + // map of time ranges, keyed by target benchmark/detection + DetectionTimeRange TimeRange `json:"detection_time_ranges"` +} + +// ctor +func NewInputValues() *InputValues { + return &InputValues{ + Inputs: make(map[string]interface{}), + } +} + +func (v *InputValues) Empty() bool { + if v == nil { + return true + } + return len(v.Inputs) > 0 +} diff --git a/internal/dashboardserver/server.go b/internal/dashboardserver/server.go index 0028e27c..9efd4ae6 100644 --- a/internal/dashboardserver/server.go +++ b/internal/dashboardserver/server.go @@ -301,7 +301,7 @@ func (s *Server) HandleDashboardEvent(ctx context.Context, event dashboardevents dashboardClients := s.getDashboardClients() if sessionInfo, ok := dashboardClients[e.Session]; ok { for _, clearedInput := range e.ClearedInputs { - delete(sessionInfo.DashboardInputs, clearedInput) + delete(sessionInfo.DashboardInputs.Inputs, clearedInput) } } s.writePayloadToSession(e.Session, payload) @@ -429,7 +429,7 @@ func (s *Server) addSession(session *melody.Session) { s.addDashboardClient(sessionId, clientSession) } -func (s *Server) setDashboardInputsForSession(sessionId string, inputs map[string]interface{}) { +func (s *Server) setDashboardInputsForSession(sessionId string, inputs *dashboardexecute.InputValues) { dashboardClients := s.getDashboardClients() if sessionInfo, ok := dashboardClients[sessionId]; ok { sessionInfo.DashboardInputs = inputs @@ -442,7 +442,7 @@ func (s *Server) getSessionId(session *melody.Session) string { // functions providing locked access to member properties -func (s *Server) setDashboardForSession(sessionId string, dashboardName string, inputs map[string]interface{}) *DashboardClientInfo { +func (s *Server) setDashboardForSession(sessionId string, dashboardName string, inputs *dashboardexecute.InputValues) *DashboardClientInfo { s.mutex.Lock() defer s.mutex.Unlock() diff --git a/internal/dashboardserver/types.go b/internal/dashboardserver/types.go index df397591..4fd1bf28 100644 --- a/internal/dashboardserver/types.go +++ b/internal/dashboardserver/types.go @@ -6,6 +6,7 @@ import ( "github.com/turbot/pipe-fittings/steampipeconfig" "github.com/turbot/powerpipe/internal/controlstatus" + "github.com/turbot/powerpipe/internal/dashboardexecute" "gopkg.in/olahol/melody.v1" ) @@ -106,7 +107,7 @@ type InputValuesClearedPayload struct { type DashboardClientInfo struct { Session *melody.Session Dashboard *string - DashboardInputs map[string]interface{} + DashboardInputs *dashboardexecute.InputValues } type ClientRequestDashboardPayload struct { @@ -115,7 +116,7 @@ type ClientRequestDashboardPayload struct { type ClientRequestPayload struct { Dashboard ClientRequestDashboardPayload `json:"dashboard"` - InputValues map[string]interface{} `json:"input_values"` + InputValues *dashboardexecute.InputValues `json:"input_values"` ChangedInput string `json:"changed_input"` SearchPath []string `json:"search_path"` SearchPathPrefix []string `json:"search_path_prefix"` diff --git a/test/mod.pp b/test/mod.pp new file mode 100644 index 00000000..2458fa8b --- /dev/null +++ b/test/mod.pp @@ -0,0 +1,8 @@ +mod "local" { + title = "New mod" + description = "This is a simple mod used for testing different steampipe features and funtionalities." +} + +query "query1" { + sql = "select 1" +} \ No newline at end of file From da5550cd4cade271cff81c1c2827fbdd266a371c Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Fri, 8 Nov 2024 11:43:37 +0700 Subject: [PATCH 24/85] Support new input values format --- ui/dashboard/src/hooks/useDashboard.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/dashboard/src/hooks/useDashboard.tsx b/ui/dashboard/src/hooks/useDashboard.tsx index 6a7ceeb3..ac0cd0f8 100644 --- a/ui/dashboard/src/hooks/useDashboard.tsx +++ b/ui/dashboard/src/hooks/useDashboard.tsx @@ -449,7 +449,7 @@ const DashboardProvider = ({ dashboard: { full_name: state.selectedDashboard.full_name, }, - input_values: state.selectedDashboardInputs, + input_values: { inputs: state.selectedDashboardInputs }, }, }; if (!!state.searchPathPrefix.length) { @@ -487,7 +487,7 @@ const DashboardProvider = ({ full_name: state.selectedDashboard.full_name, }, changed_input: state.lastChangedInput, - input_values: state.selectedDashboardInputs, + input_values: { inputs: state.selectedDashboardInputs }, }, }); } From d671e885ace0f3872f41a22feb28fc7ff3c3e0d0 Mon Sep 17 00:00:00 2001 From: Darkness4ever Date: Fri, 8 Nov 2024 16:31:51 +0700 Subject: [PATCH 25/85] Add DetectionChart to panel --- .../DetetctionSummaryChart/index.tsx | 131 ++++++++++++++++++ .../grouping/DetectionPanel/index.tsx | 14 +- 2 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DetetctionSummaryChart/index.tsx diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DetetctionSummaryChart/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DetetctionSummaryChart/index.tsx new file mode 100644 index 00000000..e790ee79 --- /dev/null +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DetetctionSummaryChart/index.tsx @@ -0,0 +1,131 @@ +import IntegerDisplay from "../../../../IntegerDisplay"; +import { CheckNodeStatus, DetectionSummary } from "../../common"; +import { classNames } from "@powerpipe/utils/styles"; +import Icon from "@powerpipe/components/Icon"; + +type ProgressBarGroupProps = { + children: JSX.Element | JSX.Element[]; + className?: string; +}; + +type ProgressBarProps = { + className?: string; + percent: number; +}; + +type DetectionSummaryChartProps = { + status: CheckNodeStatus; + summary: DetectionSummary; + firstChildSummaries: DetectionSummary[]; +}; + +type AlertProgressBarGroupTotalProps = { + className?: string; + summary: DetectionSummary; +}; + +type ProgressBarGroupTotalProps = { + className?: string; + total: number; +}; + +const getWidth = (x, y) => { + const percent = (x / (x + y)) * 100; + return percent >= 0.5 ? Math.round(percent) : 1; +}; + +const ProgressBarGroupTotal = ({ + className, + total, +}: ProgressBarGroupTotalProps) => ( + + {total > 0 ? : "0"} + +); +const AlertProgressBarGroupTotal = ({ + className, + summary, +}: AlertProgressBarGroupTotalProps) => { + const alertTotal = summary.total; + const newClassName = classNames( + className, + "text-foreground-lightest", + ); + return ; +}; + +const ProgressBarGroup = ({ children, className }: ProgressBarGroupProps) => ( +
+ {children} +
+); + +const ProgressBar = ({ className, percent }: ProgressBarProps) => { + if (!percent) { + return null; + } + + return ( +
+ ); +}; + +export const getDetectionSummaryChartPercent = (value, total) => { + if (!value) { + return 0; + } + const percentOfTotal = value / total; + const rounded = Math.floor(percentOfTotal * 100); + return Math.max(rounded, 3); +}; + +const DetectionSummaryChart = ({ + status, + summary, + firstChildSummaries, +}: DetectionSummaryChartProps) => { + let maxAlerts = 0; + let maxNonAlerts = 0; + for (const firstChildSummary of firstChildSummaries) { + const currentMaxAlerts = firstChildSummary.total + if (currentMaxAlerts > maxAlerts) { + maxAlerts = currentMaxAlerts; + } + } + + let alertsWidth = getWidth(maxAlerts, maxNonAlerts); + + return ( +
+
+ + + + +
+ {summary.total === 0 && ( +
+ +
+ )} + +
+ ); +}; + +export default DetectionSummaryChart; diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionPanel/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionPanel/index.tsx index c8fe1e8a..5e46aa96 100644 --- a/ui/dashboard/src/components/dashboards/grouping/DetectionPanel/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionPanel/index.tsx @@ -22,6 +22,7 @@ import { useDetectionGrouping, } from "@powerpipe/hooks/useDetectionGrouping"; import { useMemo } from "react"; +import DetectionSummaryChart from "../DetectionBenchmark/DetetctionSummaryChart"; const Table = getComponent("table"); @@ -275,7 +276,7 @@ const DetectionPanelSeverity = ({ }; const DetectionPanel = ({ depth, node }: DetectionPanelProps) => { - const { dispatch, groupingsConfig, nodeStates } = useDetectionGrouping(); + const {firstChildSummaries, dispatch, groupingsConfig, nodeStates } = useDetectionGrouping(); const expanded = nodeStates[node.name] ? nodeStates[node.name].expanded : false; @@ -365,7 +366,16 @@ const DetectionPanel = ({ depth, node }: DetectionPanelProps) => { severity_summary={node.severity_summary} />
-
{node.summary.total}
+ {/*
*/} +
+ +
+ {/*
{node.summary.total}
*/} + {/*
*/}
{can_be_expanded && !expanded && ( From 85fac1eb97ea5352309f37df1e92d4f9f989f728 Mon Sep 17 00:00:00 2001 From: kai Date: Fri, 8 Nov 2024 15:35:45 +0700 Subject: [PATCH 26/85] dashboard inputs are now passed using InputValues struct, which also contains TimeRange Add TailpipeConnection Add DetectionTimeRange to DashboardExecutionTree - if provided, set BackendOpts Everything which was a connection string as a string now uses ConnectionStringProvider --- internal/cmd/mod.go | 2 +- internal/cmd/query.go | 4 +- internal/cmdconfig/app_specific.go | 1 + internal/cmdconfig/validate.go | 1 + internal/dashboardexecute/check_run.go | 7 ++-- .../dashboard_execution_tree.go | 31 ++++++++++---- internal/dashboardexecute/executor.go | 15 +++---- .../{t.go => input_values.go} | 14 +++---- internal/dashboardexecute/leaf_run.go | 3 +- internal/dashboardserver/payload.go | 6 +-- internal/dashboardserver/server.go | 2 +- internal/db_client/client_map.go | 2 +- internal/db_client/cloud.go | 11 ++--- internal/db_client/database_config.go | 41 ++++++++++--------- internal/db_client/db_client.go | 4 +- internal/db_client/db_client_connect.go | 2 +- internal/db_client/default_database.go | 6 +++ internal/initialisation/init_data.go | 16 +++++--- internal/resources/detection.go | 6 ++- .../mods/dashboard_inputs/dashboard.pp | 14 ++++++- .../test_data/mods/dashboard_inputs/mod.pp | 1 + 21 files changed, 113 insertions(+), 76 deletions(-) rename internal/dashboardexecute/{t.go => input_values.go} (63%) create mode 100644 internal/db_client/default_database.go diff --git a/internal/cmd/mod.go b/internal/cmd/mod.go index cd7141be..beeee402 100644 --- a/internal/cmd/mod.go +++ b/internal/cmd/mod.go @@ -171,7 +171,7 @@ func getPluginVersions(ctx context.Context) *plugin.PluginVersionMap { return nil } - client, err := db_client.NewDbClient(ctx, defaultDatabase) + client, err := db_client.NewDbClient(ctx, defaultDatabase.GetConnectionString()) if err != nil { // do not show warning if --force is set if !viper.GetBool(constants.ArgForce) { diff --git a/internal/cmd/query.go b/internal/cmd/query.go index 5f94f972..9ecc18b4 100644 --- a/internal/cmd/query.go +++ b/internal/cmd/query.go @@ -134,7 +134,9 @@ func queryRun(cmd *cobra.Command, args []string) { exitCode = constants.ExitCodeInitializationFailed error_helpers.FailOnError(err) } - snap, err := dashboardexecute.GenerateSnapshot(ctx, initData.Workspace, target, nil) + + inputs := dashboardexecute.NewInputValues() + snap, err := dashboardexecute.GenerateSnapshot(ctx, initData.Workspace, target, inputs) if err != nil { exitCode = constants.ExitCodeSnapshotCreationFailed error_helpers.FailOnError(err) diff --git a/internal/cmdconfig/app_specific.go b/internal/cmdconfig/app_specific.go index 2327e871..37a2cd38 100644 --- a/internal/cmdconfig/app_specific.go +++ b/internal/cmdconfig/app_specific.go @@ -91,5 +91,6 @@ func registerConnections() { connection.NewPostgresConnection, connection.NewSqliteConnection, connection.NewDuckDbConnection, + connection.NewTailpipeConnection, ) } diff --git a/internal/cmdconfig/validate.go b/internal/cmdconfig/validate.go index bd79236e..e43e145d 100644 --- a/internal/cmdconfig/validate.go +++ b/internal/cmdconfig/validate.go @@ -71,6 +71,7 @@ func ValidateSnapshotArgs(ctx context.Context) error { return err } + // TODO K this is probably broken as we do not really use database arg // if workspace-database or snapshot-location are a cloud workspace handle, cloud token must be set requireCloudToken := steampipeconfig.IsPipesWorkspaceIdentifier(viper.GetString(constants.ArgDatabase)) || steampipeconfig.IsPipesWorkspaceIdentifier(viper.GetString(constants.ArgSnapshotLocation)) diff --git a/internal/dashboardexecute/check_run.go b/internal/dashboardexecute/check_run.go index bbe3bccc..314a9802 100644 --- a/internal/dashboardexecute/check_run.go +++ b/internal/dashboardexecute/check_run.go @@ -2,9 +2,9 @@ package dashboardexecute import ( "context" - "github.com/turbot/powerpipe/internal/resources" "github.com/turbot/pipe-fittings/backend" + "github.com/turbot/pipe-fittings/connection" "github.com/turbot/pipe-fittings/modconfig" "github.com/turbot/pipe-fittings/statushooks" "github.com/turbot/pipe-fittings/steampipeconfig" @@ -14,6 +14,7 @@ import ( "github.com/turbot/powerpipe/internal/controlstatus" "github.com/turbot/powerpipe/internal/dashboardtypes" "github.com/turbot/powerpipe/internal/db_client" + "github.com/turbot/powerpipe/internal/resources" ) // CheckRun is a struct representing the execution of a control or benchmark @@ -25,7 +26,7 @@ type CheckRun struct { Root controlexecute.ExecutionTreeNode `json:"-"` controlExecutionTree *controlexecute.ExecutionTree - database string + database connection.ConnectionStringProvider searchPathConfig backend.SearchPathConfig } @@ -61,7 +62,7 @@ func (r *CheckRun) resolveDatabaseConfig() error { // if the resource specifies a database, use that if c, ok := r.resource.(modconfig.DatabaseItem); ok { if resourceDatabase := c.GetDatabase(); resourceDatabase != nil { - database = *resourceDatabase + database = resourceDatabase } if resourceSearchPath := c.GetSearchPath(); len(resourceSearchPath) > 0 { searchPathConfig.SearchPath = resourceSearchPath diff --git a/internal/dashboardexecute/dashboard_execution_tree.go b/internal/dashboardexecute/dashboard_execution_tree.go index f1451c68..280cf372 100644 --- a/internal/dashboardexecute/dashboard_execution_tree.go +++ b/internal/dashboardexecute/dashboard_execution_tree.go @@ -3,14 +3,14 @@ package dashboardexecute import ( "context" "fmt" - "github.com/spf13/viper" - "github.com/turbot/powerpipe/internal/resources" "golang.org/x/exp/maps" "log/slog" "sync" "time" + "github.com/spf13/viper" "github.com/turbot/pipe-fittings/backend" + "github.com/turbot/pipe-fittings/connection" "github.com/turbot/pipe-fittings/constants" "github.com/turbot/pipe-fittings/modconfig" "github.com/turbot/pipe-fittings/schema" @@ -19,6 +19,7 @@ import ( "github.com/turbot/powerpipe/internal/dashboardevents" "github.com/turbot/powerpipe/internal/dashboardtypes" "github.com/turbot/powerpipe/internal/db_client" + "github.com/turbot/powerpipe/internal/resources" "github.com/turbot/powerpipe/internal/workspace" ) @@ -43,11 +44,12 @@ type DashboardExecutionTree struct { inputValues map[string]any id string // active database and search path config (unless overridden at the resource level) - database string - searchPathConfig backend.SearchPathConfig + database connection.ConnectionStringProvider + searchPathConfig backend.SearchPathConfig + DetectionTimeRange utils.TimeRange } -func newDashboardExecutionTree(rootResource modconfig.ModTreeItem, sessionId string, workspace *workspace.PowerpipeWorkspace, defaultClientMap *db_client.ClientMap, opts ...backend.ConnectOption) (*DashboardExecutionTree, error) { +func newDashboardExecutionTree(rootResource modconfig.ModTreeItem, sessionId string, workspace *workspace.PowerpipeWorkspace, inputs *InputValues, defaultClientMap *db_client.ClientMap, opts ...backend.BackendOption) (*DashboardExecutionTree, error) { // now populate the DashboardExecutionTree executionTree := &DashboardExecutionTree{ dashboardName: rootResource.Name(), @@ -61,6 +63,16 @@ func newDashboardExecutionTree(rootResource modconfig.ModTreeItem, sessionId str } executionTree.id = fmt.Sprintf("%p", executionTree) + // if inputs have been passed, set them first + if !inputs.Empty() { + executionTree.SetInputValues(inputs) + } + // TACTICAL + // if a time range has been passed, set the detection time range and add a backend option + // (if time range is not set, From and To will be nil - this is expected and handled) + executionTree.DetectionTimeRange = inputs.DetectionTimeRange + opts = append(opts, backend.WithTimeRange(inputs.DetectionTimeRange)) + // set the dashboard database and search patch config defaultDatabase, defaultSearchPathConfig, err := db_client.GetDefaultDatabaseConfig(opts...) if err != nil { @@ -353,14 +365,17 @@ func (*DashboardExecutionTree) GetResource() resources.DashboardLeafNode { } // function to get a client from one of the client maps -func (e *DashboardExecutionTree) getClient(ctx context.Context, connectionString string, searchPathConfig backend.SearchPathConfig) (*db_client.DbClient, error) { +func (e *DashboardExecutionTree) getClient(ctx context.Context, csp connection.ConnectionStringProvider, searchPathConfig backend.SearchPathConfig) (*db_client.DbClient, error) { + // TODO K nee to accept opts???? or already in the connection??? + // ask the provider for the connection string + cs := csp.GetConnectionString() // if the default map already contains a client for this connection string, use that - if client := e.defaultClientMap.Get(connectionString, searchPathConfig); client != nil { + if client := e.defaultClientMap.Get(cs, searchPathConfig); client != nil { return client, nil } // otherwise get or create one - client, err := e.clientMap.GetOrCreate(ctx, connectionString, searchPathConfig) + client, err := e.clientMap.GetOrCreate(ctx, cs, searchPathConfig) if err != nil { return nil, err } diff --git a/internal/dashboardexecute/executor.go b/internal/dashboardexecute/executor.go index 06b263c8..64ab27aa 100644 --- a/internal/dashboardexecute/executor.go +++ b/internal/dashboardexecute/executor.go @@ -43,7 +43,7 @@ func NewDashboardExecutor(defaultClient *db_client.ClientMap) *DashboardExecutor var Executor *DashboardExecutor -func (e *DashboardExecutor) ExecuteDashboard(ctx context.Context, sessionId string, rootResource modconfig.ModTreeItem, inputs *InputValues, workspace *workspace.PowerpipeWorkspace, opts ...backend.ConnectOption) (err error) { +func (e *DashboardExecutor) ExecuteDashboard(ctx context.Context, sessionId string, rootResource modconfig.ModTreeItem, inputs *InputValues, workspace *workspace.PowerpipeWorkspace, opts ...backend.BackendOption) (err error) { var executionTree *DashboardExecutionTree defer func() { if err == nil && ctx.Err() != nil { @@ -68,25 +68,20 @@ func (e *DashboardExecutor) ExecuteDashboard(ctx context.Context, sessionId stri e.CancelExecutionForSession(ctx, sessionId) // now create a new execution - executionTree, err = newDashboardExecutionTree(rootResource, sessionId, workspace, e.defaultClient, opts...) + executionTree, err = newDashboardExecutionTree(rootResource, sessionId, workspace, inputs, e.defaultClient, opts...) if err != nil { return err } + // add to execution map + e.setExecution(sessionId, executionTree) + // if inputs must be provided before execution (i.e. this is a batch dashboard execution), // verify all required inputs are provided if err = e.validateInputs(executionTree, inputs.Inputs); err != nil { return err } - // add to execution map - e.setExecution(sessionId, executionTree) - - // if inputs have been passed, set them first - if !inputs.Empty() { - executionTree.SetInputValues(inputs) - } - go executionTree.Execute(ctx) return nil diff --git a/internal/dashboardexecute/t.go b/internal/dashboardexecute/input_values.go similarity index 63% rename from internal/dashboardexecute/t.go rename to internal/dashboardexecute/input_values.go index 9ac00746..50ece6dd 100644 --- a/internal/dashboardexecute/t.go +++ b/internal/dashboardexecute/input_values.go @@ -1,19 +1,15 @@ package dashboardexecute -import "time" - -type TimeRange struct { - From *time.Time `json:"from"` - To *time.Time `json:"to"` -} +import ( + "github.com/turbot/pipe-fittings/utils" +) type InputValues struct { Inputs map[string]interface{} `json:"inputs"` // map of time ranges, keyed by target benchmark/detection - DetectionTimeRange TimeRange `json:"detection_time_ranges"` + DetectionTimeRange utils.TimeRange `json:"detection_time_ranges"` } -// ctor func NewInputValues() *InputValues { return &InputValues{ Inputs: make(map[string]interface{}), @@ -24,5 +20,5 @@ func (v *InputValues) Empty() bool { if v == nil { return true } - return len(v.Inputs) > 0 + return len(v.Inputs) == 0 } diff --git a/internal/dashboardexecute/leaf_run.go b/internal/dashboardexecute/leaf_run.go index 194aee91..1ee447ea 100644 --- a/internal/dashboardexecute/leaf_run.go +++ b/internal/dashboardexecute/leaf_run.go @@ -9,6 +9,7 @@ import ( "time" "github.com/turbot/pipe-fittings/backend" + "github.com/turbot/pipe-fittings/connection" "github.com/turbot/pipe-fittings/error_helpers" "github.com/turbot/pipe-fittings/queryresult" "github.com/turbot/pipe-fittings/schema" @@ -31,7 +32,7 @@ type LeafRun struct { // function called when the run is complete // this property populated for 'with' runs onComplete func() - database string + database connection.ConnectionStringProvider searchPathConfig backend.SearchPathConfig } diff --git a/internal/dashboardserver/payload.go b/internal/dashboardserver/payload.go index fb3f398f..4ac231eb 100644 --- a/internal/dashboardserver/payload.go +++ b/internal/dashboardserver/payload.go @@ -66,7 +66,7 @@ func buildServerMetadataPayload(rm modconfig.ModResources, pipesMetadata *steamp if err != nil { return nil, err } - searchPath, err := getSearchPathMetadata(context.Background(), defaultDatabase, defaultSearchPathConfig) + searchPath, err := getSearchPathMetadata(context.Background(), defaultDatabase.GetConnectionString(), defaultSearchPathConfig) if err != nil { return nil, err } @@ -100,11 +100,11 @@ func buildDashboardMetadataPayload(ctx context.Context, dashboard modconfig.ModT payload := DashboardMetadataPayload{ Action: "dashboard_metadata", Metadata: DashboardMetadata{ - Database: database, + Database: database.GetConnectionString(), }, } - searchPath, err := getSearchPathMetadata(ctx, database, searchPathConfig) + searchPath, err := getSearchPathMetadata(ctx, database.GetConnectionString(), searchPathConfig) if err != nil { return nil, err } diff --git a/internal/dashboardserver/server.go b/internal/dashboardserver/server.go index 9efd4ae6..c1aaa725 100644 --- a/internal/dashboardserver/server.go +++ b/internal/dashboardserver/server.go @@ -375,7 +375,7 @@ func (s *Server) handleMessageFunc(ctx context.Context) func(session *melody.Ses s.setDashboardForSession(sessionId, request.Payload.Dashboard.FullName, request.Payload.InputValues) // was a search path passed into the execute command? - var opts []backend.ConnectOption + var opts []backend.BackendOption if request.Payload.SearchPath != nil || request.Payload.SearchPathPrefix != nil { opts = append(opts, backend.WithSearchPathConfig(backend.SearchPathConfig{ SearchPath: request.Payload.SearchPath, diff --git a/internal/db_client/client_map.go b/internal/db_client/client_map.go index 69cbe24d..caf64781 100644 --- a/internal/db_client/client_map.go +++ b/internal/db_client/client_map.go @@ -84,7 +84,7 @@ func (e *ClientMap) GetOrCreate(ctx context.Context, connectionString string, se } // if a search path override was passed in, set the opt - var opts []backend.ConnectOption + var opts []backend.BackendOption if !searchPathConfig.Empty() { opts = append(opts, backend.WithSearchPathConfig(searchPathConfig)) } diff --git a/internal/db_client/cloud.go b/internal/db_client/cloud.go index ad13de40..01bbaf0e 100644 --- a/internal/db_client/cloud.go +++ b/internal/db_client/cloud.go @@ -2,6 +2,7 @@ package db_client import ( "context" + "github.com/turbot/pipe-fittings/connection" "github.com/spf13/viper" "github.com/turbot/pipe-fittings/constants" @@ -10,22 +11,22 @@ import ( "github.com/turbot/powerpipe/internal/powerpipeconfig" ) -func GetCloudWorkspaceConnectionString(workspace string) (string, error) { +func GetPipesWorkspaceConnectionString(workspace string) (connection.ConnectionStringProvider, error) { // have we already retrieved this if connectionString, ok := powerpipeconfig.GlobalConfig.GetCloudConnectionString(workspace); ok { - return connectionString, nil + return connection.NewConnectionString(connectionString), nil } token := viper.GetString(constants.ArgPipesToken) if token == "" { - return "", error_helpers.MissingCloudTokenError() + return nil, error_helpers.MissingCloudTokenError() } pipesMetadata, err := pipes.GetPipesMetadata(context.Background(), workspace, token) if err != nil { - return "", err + return nil, err } // cache powerpipeconfig.GlobalConfig.SetCloudConnectionString(workspace, pipesMetadata.ConnectionString) - return pipesMetadata.ConnectionString, nil + return connection.NewConnectionString(pipesMetadata.ConnectionString), nil } diff --git a/internal/db_client/database_config.go b/internal/db_client/database_config.go index 9dcbb7fa..9454a426 100644 --- a/internal/db_client/database_config.go +++ b/internal/db_client/database_config.go @@ -11,8 +11,8 @@ import ( "github.com/turbot/steampipe-plugin-sdk/v5/sperr" ) -func GetDatabaseConfigForResource(resource modconfig.ModTreeItem, workspaceMod *modconfig.Mod, defaultDatabase string, defaultSearchPathConfig backend.SearchPathConfig) (string, backend.SearchPathConfig, error) { - database := defaultDatabase +func GetDatabaseConfigForResource(resource modconfig.ModTreeItem, workspaceMod *modconfig.Mod, defaultDatabase connection.ConnectionStringProvider, defaultSearchPathConfig backend.SearchPathConfig) (connection.ConnectionStringProvider, backend.SearchPathConfig, error) { + csp := defaultDatabase searchPathConfig := defaultSearchPathConfig // if there is no default search path, check if the mod has a search path @@ -30,19 +30,20 @@ func GetDatabaseConfigForResource(resource modconfig.ModTreeItem, workspaceMod * modRequirement := workspaceMod.Require.GetModDependency(depName) if modRequirement == nil { // not expected - return database, searchPathConfig, sperr.New("could not find mod requirement for '%s' in workspace mod %s", depName, workspaceMod.ShortName) + return csp, searchPathConfig, sperr.New("could not find mod requirement for '%s' in workspace mod %s", depName, workspaceMod.ShortName) } // if the mod requirement has a search path, prefix or database, set it in viper, if modRequirement.Database != nil { + // TODO K test/fix setting database in mod require // if database is overriden, also use overriden search path and search path prefix (even if empty) - database = *modRequirement.Database + csp = connection.NewConnectionString(*modRequirement.Database) searchPathConfig.SearchPath = modRequirement.SearchPath searchPathConfig.SearchPathPrefix = modRequirement.SearchPathPrefix } // if the parent mod has a database set, use it if modDb := resource.(modconfig.ModItem).GetMod().GetDatabase(); modDb != nil { - database = *modDb + csp = modDb } if modSearchPath := resource.(modconfig.ModItem).GetMod().GetSearchPath(); len(modSearchPath) > 0 { searchPathConfig.SearchPath = modSearchPath @@ -55,7 +56,7 @@ func GetDatabaseConfigForResource(resource modconfig.ModTreeItem, workspaceMod * // if the resource has a database set, use it if resource.GetDatabase() != nil { - database = *resource.GetDatabase() + csp = resource.GetDatabase() } // if the resource has a search path set, use it if resourceSearchPath := resource.GetSearchPath(); len(resourceSearchPath) > 0 { @@ -66,21 +67,21 @@ func GetDatabaseConfigForResource(resource modconfig.ModTreeItem, workspaceMod * } // if the database is a cloud workspace, resolve the connection string - if steampipeconfig.IsPipesWorkspaceIdentifier(database) { + if steampipeconfig.IsPipesWorkspaceConnectionString(csp) { var err error - database, err = GetCloudWorkspaceConnectionString(database) + csp, err = GetPipesWorkspaceConnectionString(csp.GetConnectionString()) if err != nil { - return "", backend.SearchPathConfig{}, err + return nil, backend.SearchPathConfig{}, err } } - return database, searchPathConfig, nil + return csp, searchPathConfig, nil } // GetDefaultDatabaseConfig builds the default database and searchPathConfig // NOTE: if the dashboardUI has overridden the search path, opts wil be passed in to set the overridden value -func GetDefaultDatabaseConfig(opts ...backend.ConnectOption) (string, backend.SearchPathConfig, error) { - var cfg backend.ConnectConfig +func GetDefaultDatabaseConfig(opts ...backend.BackendOption) (connection.ConnectionStringProvider, backend.SearchPathConfig, error) { + var cfg backend.BackendConfig for _, opt := range opts { opt(&cfg) } @@ -96,12 +97,13 @@ func GetDefaultDatabaseConfig(opts ...backend.ConnectOption) (string, backend.Se defaultSearchPathConfig = cfg.SearchPathConfig } - defaultDatabase := viper.GetString(constants.ArgDatabase) + // TODO K hack + csp := DefaultDatabase //viper.GetString(constants.ArgDatabase) // if no database is set, use the default connection - if defaultDatabase == "" { + if csp == nil { defaultConnection := powerpipeconfig.GlobalConfig.GetDefaultConnection() - defaultDatabase = defaultConnection.GetConnectionString() + csp = defaultConnection // if no search path has been set, use the default connection if defaultSearchPathConfig.Empty() { if spp, ok := defaultConnection.(connection.SearchPathProvider); ok { @@ -114,13 +116,12 @@ func GetDefaultDatabaseConfig(opts ...backend.ConnectOption) (string, backend.Se } // if the database is a cloud workspace, resolve the connection string - if steampipeconfig.IsPipesWorkspaceIdentifier(defaultDatabase) { + if steampipeconfig.IsPipesWorkspaceConnectionString(csp) { var err error - defaultDatabase, err = GetCloudWorkspaceConnectionString(defaultDatabase) + csp, err = GetPipesWorkspaceConnectionString(csp.GetConnectionString()) if err != nil { - return "", backend.SearchPathConfig{}, err + return nil, backend.SearchPathConfig{}, err } } - - return defaultDatabase, defaultSearchPathConfig, nil + return csp, defaultSearchPathConfig, nil } diff --git a/internal/db_client/db_client.go b/internal/db_client/db_client.go index 3b898efa..4d443ce4 100644 --- a/internal/db_client/db_client.go +++ b/internal/db_client/db_client.go @@ -21,7 +21,7 @@ type DbClient struct { Backend backend.Backend } -func NewDbClient(ctx context.Context, connectionString string, opts ...backend.ConnectOption) (_ *DbClient, err error) { +func NewDbClient(ctx context.Context, connectionString string, opts ...backend.BackendOption) (_ *DbClient, err error) { utils.LogTime("db_client.NewDbClient start") defer utils.LogTime("db_client.NewDbClient end") @@ -43,7 +43,7 @@ func NewDbClient(ctx context.Context, connectionString string, opts ...backend.C }() // process options - searhc path may have been passed in - config := backend.NewConnectConfig(opts) + config := backend.NewBackendConfig(opts) config.MaxOpenConns = MaxDbConnections() // if no search path override passed in as an option, use the viper config if config.SearchPathConfig.Empty() { diff --git a/internal/db_client/db_client_connect.go b/internal/db_client/db_client_connect.go index 90bdc886..a1b5d5a2 100644 --- a/internal/db_client/db_client_connect.go +++ b/internal/db_client/db_client_connect.go @@ -7,7 +7,7 @@ import ( "github.com/turbot/steampipe-plugin-sdk/v5/sperr" ) -func (c *DbClient) connect(ctx context.Context, opts ...backend.ConnectOption) error { +func (c *DbClient) connect(ctx context.Context, opts ...backend.BackendOption) error { utils.LogTime("db_client.establishConnectionPool start") defer utils.LogTime("db_client.establishConnectionPool end") diff --git a/internal/db_client/default_database.go b/internal/db_client/default_database.go new file mode 100644 index 00000000..7fc80c1c --- /dev/null +++ b/internal/db_client/default_database.go @@ -0,0 +1,6 @@ +package db_client + +import "github.com/turbot/pipe-fittings/connection" + +// TODO K HACK +var DefaultDatabase connection.ConnectionStringProvider diff --git a/internal/initialisation/init_data.go b/internal/initialisation/init_data.go index 346a8b44..fdfaba59 100644 --- a/internal/initialisation/init_data.go +++ b/internal/initialisation/init_data.go @@ -79,10 +79,14 @@ func NewInitData[T modconfig.ModTreeItem](ctx context.Context, cmd *cobra.Comman } i.Targets = targets - // if the database is NOT set in viper, and the mod has a connection string, set it - if !viper.IsSet(constants.ArgDatabase) && w.Mod.GetDatabase() != nil { - viper.Set(constants.ArgDatabase, *w.Mod.GetDatabase()) + // TODO K breaking hack do not use viper for database + if db_client.DefaultDatabase == nil { + db_client.DefaultDatabase = w.Mod.GetDatabase() } + // if the database is NOT set in viper, and the mod has a connection string, set it + //if !viper.IsSet(constants.ArgDatabase) && w.Mod.GetDatabase() != nil { + // viper.Set(constants.ArgDatabase, *w.Mod.GetDatabase().) + //} // now do the actual initialisation i.Init(ctx, cmdArgs...) @@ -162,18 +166,18 @@ func (i *InitData[T]) Init(ctx context.Context, args ...string) { // create default client // set the database and search patch config - database, searchPathConfig, err := db_client.GetDefaultDatabaseConfig() + csp, searchPathConfig, err := db_client.GetDefaultDatabaseConfig() if err != nil { i.Result.Error = err return } // create client - var opts []backend.ConnectOption + var opts []backend.BackendOption if !searchPathConfig.Empty() { opts = append(opts, backend.WithSearchPathConfig(searchPathConfig)) } - client, err := db_client.NewDbClient(ctx, database, opts...) + client, err := db_client.NewDbClient(ctx, csp.GetConnectionString(), opts...) if err != nil { i.Result.Error = err return diff --git a/internal/resources/detection.go b/internal/resources/detection.go index 16b4cec6..d081dc96 100644 --- a/internal/resources/detection.go +++ b/internal/resources/detection.go @@ -22,8 +22,10 @@ type Detection struct { Columns map[string]*DashboardTableColumn `cty:"columns" snapshot:"columns"` - Type *string `cty:"type" hcl:"type" json:"type,omitempty"` - Display *string `cty:"display" hcl:"display" json:"display,omitempty" snapshot:"display"` + Type *string `cty:"type" hcl:"type" json:"type,omitempty"` + Display *string `cty:"display" hcl:"display" json:"display,omitempty" snapshot:"display"` + Author *string `cty:"author" hcl:"author" json:"author,omitempty"` + references []string `cty:"references" hcl:"references,optional" json:"references,omitempty"` Base *Detection `hcl:"base" json:"-"` } diff --git a/tests/acceptance/test_data/mods/dashboard_inputs/dashboard.pp b/tests/acceptance/test_data/mods/dashboard_inputs/dashboard.pp index 9e1238dd..0255f78b 100644 --- a/tests/acceptance/test_data/mods/dashboard_inputs/dashboard.pp +++ b/tests/acceptance/test_data/mods/dashboard_inputs/dashboard.pp @@ -21,12 +21,22 @@ wrap = "all" } } -} + detection "d1"{ + title = "top level detection" + sql = "select 'r' as reason, 'foo' as resource, 'alarm' as status" + } + + } + + query "query_input" { + param "new_input" { + + } sql = <<-EOQ select - 'value1' as "column 1", + $1 as "column 1", 'value1' as "column 2" EOQ } \ No newline at end of file diff --git a/tests/acceptance/test_data/mods/dashboard_inputs/mod.pp b/tests/acceptance/test_data/mods/dashboard_inputs/mod.pp index 56339077..fcbd3b15 100644 --- a/tests/acceptance/test_data/mods/dashboard_inputs/mod.pp +++ b/tests/acceptance/test_data/mods/dashboard_inputs/mod.pp @@ -1,4 +1,5 @@ mod "dashboard_inputs"{ title = "Dashboard using inputs" description = "Dashboard for testing inputs - running dashboard with --arg flag" + database = connection.tailpipe.tp } \ No newline at end of file From 0def10a71587f13c0a7db10b904f71ffaa3d8114 Mon Sep 17 00:00:00 2001 From: kai Date: Fri, 8 Nov 2024 16:49:07 +0700 Subject: [PATCH 27/85] Add `'tables' to Detection --- internal/resources/detection.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/resources/detection.go b/internal/resources/detection.go index d081dc96..4e09b10c 100644 --- a/internal/resources/detection.go +++ b/internal/resources/detection.go @@ -25,7 +25,8 @@ type Detection struct { Type *string `cty:"type" hcl:"type" json:"type,omitempty"` Display *string `cty:"display" hcl:"display" json:"display,omitempty" snapshot:"display"` Author *string `cty:"author" hcl:"author" json:"author,omitempty"` - references []string `cty:"references" hcl:"references,optional" json:"references,omitempty"` + References []string `cty:"references" hcl:"references,optional" json:"references,omitempty"` + Tables []string `cty:"tables" hcl:"tables,optional" json:"tables,omitempty"` Base *Detection `hcl:"base" json:"-"` } From e4e2f64ff2a17c02030dcbe3428050ffa1376b33 Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Fri, 8 Nov 2024 17:15:42 +0700 Subject: [PATCH 28/85] Add execution flow --- .../DateRangePicker/DateRangePicker.tsx | 307 ----------- .../grouping/DetectionBenchmark/index.tsx | 20 +- .../DateRangePicker/DateRangePicker.css | 0 .../inputs/DateRangePicker/index.tsx | 482 ++++++++++++++++++ .../src/components/dashboards/inputs/types.ts | 1 + ui/dashboard/src/hooks/useDashboard.tsx | 61 ++- ui/dashboard/src/utils/registerComponents.ts | 1 + 7 files changed, 555 insertions(+), 317 deletions(-) delete mode 100644 ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.tsx rename ui/dashboard/src/components/dashboards/{grouping/DetectionBenchmark => inputs}/DateRangePicker/DateRangePicker.css (100%) create mode 100644 ui/dashboard/src/components/dashboards/inputs/DateRangePicker/index.tsx diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.tsx deleted file mode 100644 index 720f97d6..00000000 --- a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.tsx +++ /dev/null @@ -1,307 +0,0 @@ -import React, { useState, useRef } from "react"; -import { DayPicker } from "react-day-picker"; -import { format } from "date-fns"; -import "react-day-picker/dist/style.css"; -import "react-time-picker/dist/TimePicker.css"; -import "./DateRangePicker.css"; - -const presets = [ - { label: "1h", value: "1h" }, - { label: "3h", value: "3h" }, - { label: "6h", value: "6h" }, - { label: "12h", value: "12h" }, - { label: "1d", value: "1d" }, - { label: "7d", value: "7d" }, - { label: "Custom", value: "custom" }, -]; - -const timeOptions = { - minutes: [5, 10, 15, 30, 45], - hours: [1, 2, 3, 6, 8, 12], - days: [1, 2, 3, 4, 5, 6], - weeks: [1, 2, 3, 4], -}; - -const DateRangePicker = () => { - const [selectedPreset, setSelectedPreset] = useState("1h"); - const [startDate, setStartDate] = useState(null); - const [endDate, setEndDate] = useState(null); - const [startTime, setStartTime] = useState("00:00:00"); - const [endTime, setEndTime] = useState("23:59:59"); - const [tab, setTab] = useState("absolute"); - const [duration, setDuration] = useState(1); - const [unitOfTime, setUnitOfTime] = useState("hours"); - const [showCustomPanel, setShowCustomPanel] = useState(false); - const [savedDateTime, setSavedDateTime] = useState({}); - const customButtonRef = useRef(null); - - const handlePresetChange = (preset) => { - setSelectedPreset(preset); - if (preset === "custom") { - setShowCustomPanel(!showCustomPanel); // Toggle visibility - } else { - setShowCustomPanel(false); - } - }; - - const handleApply = () => { - const urlParams = new URLSearchParams(window.location.search); - - if (tab === "absolute") { - // Handle absolute case - const formattedStartDate = startDate - ? format(startDate, "yyyy-MM-dd") - : ""; - const formattedEndDate = endDate ? format(endDate, "yyyy-MM-dd") : ""; - const detectionFromValue = `${formattedStartDate} ${startTime}`; - const detectionToValue = `${formattedEndDate} ${endTime}`; - - // Add/Update URL parameters for absolute values - urlParams.set("detection_from", detectionFromValue); - urlParams.set("detection_to", detectionToValue); - - // Clear relative parameter if it was previously set - urlParams.delete("detection_to_relative"); - - // Save the selected date/time - setSavedDateTime({ - type: "absolute", - detection_from: detectionFromValue, - detection_to: detectionToValue, - }); - - alert( - `Saved Absolute Date/Time:\nDetection From: ${detectionFromValue}\nDetection To: ${detectionToValue}`, - ); - } else if (tab === "relative") { - // Handle relative case - const relativeValue = `T-${duration}${unitOfTime[0].toUpperCase()}`; // E.g., "T-5M" for 5 minutes - - // Add/Update URL parameter for relative value - urlParams.set("detection_to", relativeValue); - - // Clear absolute parameters if they were previously set - urlParams.delete("detection_from"); - - // Save the selected relative time - setSavedDateTime({ - type: "relative", - detection_to: relativeValue, - }); - - alert(`Saved Relative Date/Time:\nDetection To: ${relativeValue}`); - } - - // Update the URL without refreshing the page - window.history.replaceState(null, "", "?" + urlParams.toString()); - - // Hide the custom panel - setShowCustomPanel(false); - }; - - const handleCancel = () => { - setSelectedPreset("1h"); - setStartDate(null); - setEndDate(null); - setStartTime("00:00:00"); - setEndTime("23:59:59"); - setDuration(1); - setUnitOfTime("hours"); - setShowCustomPanel(false); - }; - - const handleTimeOptionClick = (value, unit) => { - setDuration(value); - setUnitOfTime(unit); - }; - - return ( -
-
- {presets.map((preset) => ( - - ))} -
- - {showCustomPanel && selectedPreset === "custom" && ( -
-
- - -
- - {tab === "absolute" ? ( -
-
- { - setStartDate(from); - setEndDate(to); - }} - className="single-day-picker" - captionLayout="dropdown" - pagedNavigation - /> -
-
-
- - setStartDate(new Date(e.target.value))} - /> - - setStartTime(e.target.value)} - /> -
-
- - setEndDate(new Date(e.target.value))} - /> - - setEndTime(e.target.value)} - /> -
-
-
- ) : ( -
-
- -
- {timeOptions.minutes.map((min) => ( - - ))} -
- - -
- {timeOptions.hours.map((hour) => ( - - ))} -
- - -
- {timeOptions.days.map((day) => ( - - ))} -
- - -
- {timeOptions.weeks.map((week) => ( - - ))} -
-
- -
- - setDuration(Number(e.target.value))} - /> - -
-
- )} - -
- - -
-
- )} -
- ); -}; - -export default DateRangePicker; diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx index 33d3dc99..16e4f689 100644 --- a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx +++ b/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/index.tsx @@ -10,6 +10,10 @@ import Panel from "@powerpipe/components/dashboards/layout/Panel"; import PanelControls from "@powerpipe/components/dashboards/layout/Panel/PanelControls"; import useGroupingFilterConfig from "@powerpipe/hooks/useGroupingFilterConfig"; import usePanelControls from "@powerpipe/hooks/usePanelControls"; +import { CardType } from "@powerpipe/components/dashboards/data/CardDataProcessor"; +import { DashboardActions, PanelDefinition, PanelsMap } from "@powerpipe/types"; +import { DateRangePicker } from "@powerpipe/components/dashboards/inputs/DateRangePicker"; +import { default as DetectionBenchmarkType } from "../common/DetectionBenchmark"; import { DetectionBenchmarkTreeProps, DetectionDisplayGroup, @@ -17,8 +21,6 @@ import { DetectionNode, DetectionSummary, } from "@powerpipe/components/dashboards/grouping/common"; -import { CardType } from "@powerpipe/components/dashboards/data/CardDataProcessor"; -import { default as DetectionBenchmarkType } from "../common/DetectionBenchmark"; import { getComponent, registerComponent, @@ -28,14 +30,11 @@ import { useDetectionGrouping, } from "@powerpipe/hooks/useDetectionGrouping"; import { noop } from "@powerpipe/utils/func"; -import { DashboardActions, PanelDefinition, PanelsMap } from "@powerpipe/types"; import { useDashboard } from "@powerpipe/hooks/useDashboard"; import { useEffect, useMemo, useState } from "react"; import { useSearchParams } from "react-router-dom"; import { validateFilter } from "../CheckFilterEditor"; import { Width } from "@powerpipe/components/dashboards/common"; -import DateRangePicker from "./DateRangePicker/DateRangePicker"; - const Table = getComponent("table"); type BenchmarkTableViewProps = { @@ -392,7 +391,16 @@ const DetectionBenchmark = (props: InnerCheckProps) => { /> )} - + {summaryCards diff --git a/ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.css b/ui/dashboard/src/components/dashboards/inputs/DateRangePicker/DateRangePicker.css similarity index 100% rename from ui/dashboard/src/components/dashboards/grouping/DetectionBenchmark/DateRangePicker/DateRangePicker.css rename to ui/dashboard/src/components/dashboards/inputs/DateRangePicker/DateRangePicker.css diff --git a/ui/dashboard/src/components/dashboards/inputs/DateRangePicker/index.tsx b/ui/dashboard/src/components/dashboards/inputs/DateRangePicker/index.tsx new file mode 100644 index 00000000..b772ab9c --- /dev/null +++ b/ui/dashboard/src/components/dashboards/inputs/DateRangePicker/index.tsx @@ -0,0 +1,482 @@ +import dayjs from "dayjs"; +import utc from "dayjs/plugin/utc"; +import { DashboardActions } from "@powerpipe/types"; +import { DayPicker } from "react-day-picker"; +import { + IInput, + InputProps, +} from "@powerpipe/components/dashboards/inputs/types"; +import { registerInputComponent } from "@powerpipe/components/dashboards/inputs"; +import { useDashboard } from "@powerpipe/hooks/useDashboard"; +import { useState, useRef, useEffect } from "react"; +import "react-day-picker/dist/style.css"; +import "react-time-picker/dist/TimePicker.css"; +import "./DateRangePicker.css"; +dayjs.extend(utc); + +const presets = [ + { label: "1h", value: "1h" }, + { label: "3h", value: "3h" }, + { label: "6h", value: "6h" }, + { label: "12h", value: "12h" }, + { label: "1d", value: "1d" }, + { label: "7d", value: "7d" }, + { label: "Custom", value: "custom" }, +]; + +const timeOptions = { + minutes: [5, 10, 15, 30, 45], + hours: [1, 2, 3, 6, 8, 12], + days: [1, 2, 3, 4, 5, 6], + weeks: [1, 2, 3, 4], +}; + +const DateRangePicker = (props: InputProps) => { + const { dispatch, selectedDashboardInputs } = useDashboard(); + const stateValue = selectedDashboardInputs[props.name]; + + useEffect(() => { + if (!stateValue) { + return ""; + } + try { + const parsed = JSON.parse(stateValue); + setState((previous) => ({ ...previous, ...parsed })); + } catch (err) { + console.log("Parse error", err); + } + }, [stateValue]); + + const [state, setState] = useState<{ + from: dayjs.Dayjs; + to?: dayjs.Dayjs | null; + relative?: string | null; + showCustom?: boolean; + }>(() => { + const stateValue = selectedDashboardInputs[props.name]; + if (stateValue) { + try { + const parsed = JSON.parse(stateValue); + const fallback = dayjs(); + return { + from: parsed.from + ? dayjs(parsed.from) + : fallback.subtract(1, "day").utc(), + to: parsed.to ? dayjs(parsed.to) : null, + relative: parsed.relative || "1d", + }; + } catch (err) { + console.log("Parse error", err); + const now = dayjs(); + return { + from: now.subtract(1, "day").utc(), + to: null, + relative: "1d", + }; + } + } else { + const now = dayjs(); + return { + from: now.subtract(1, "day").utc(), + to: null, + relative: "1d", + }; + } + }); + + const [tempState, setTempState] = useState<{ + from: dayjs.Dayjs; + to?: dayjs.Dayjs | null; + relative?: string | null; + showCustom?: boolean; + }>(state); + + useEffect(() => { + setTempState(() => state); + }, [state]); + + // const [selectedPreset, setSelectedPreset] = useState("1h"); + // const [from, setFrom] = useState(null); + // const [to, setTo] = useState(null); + // const [relative, setRelative] = useState(); + // const [startDate, setStartDate] = useState(null); + // const [endDate, setEndDate] = useState(null); + // const [startTime, setStartTime] = useState("00:00:00"); + // const [endTime, setEndTime] = useState("23:59:59"); + const [tab, setTab] = useState("relative"); + const [duration, setDuration] = useState(1); + const [unitOfTime, setUnitOfTime] = useState("hours"); + // const [showCustomPanel, setShowCustomPanel] = useState(false); + const customButtonRef = useRef(null); + + // console.log({ state, startDate, startTime, endDate, endTime }); + + const handlePresetChange = (preset) => { + console.log(preset); + switch (preset) { + case "1h": + setDuration(1); + setUnitOfTime("hour"); + setState((previous) => ({ + ...previous, + from: dayjs().subtract(1, "hour").utc(), + to: null, + relative: "1h", + showCustom: false, + })); + break; + case "3h": + setDuration(3); + setUnitOfTime("hour"); + setState((previous) => ({ + ...previous, + from: dayjs().subtract(3, "hour").utc(), + to: null, + relative: "3h", + showCustom: false, + })); + break; + case "6h": + setDuration(6); + setUnitOfTime("hour"); + setState((previous) => ({ + ...previous, + from: dayjs().subtract(6, "hour").utc(), + to: null, + relative: "6h", + showCustom: false, + })); + break; + case "12h": + setDuration(12); + setUnitOfTime("hour"); + setState((previous) => ({ + ...previous, + from: dayjs().subtract(12, "hour").utc(), + to: null, + relative: "12h", + showCustom: false, + })); + break; + case "1d": + setDuration(1); + setUnitOfTime("day"); + setState((previous) => ({ + ...previous, + from: dayjs().subtract(1, "day").utc(), + to: null, + relative: "1d", + showCustom: false, + })); + break; + case "7d": + setDuration(7); + setUnitOfTime("day"); + setState((previous) => ({ + ...previous, + from: dayjs().subtract(7, "day").utc(), + to: null, + relative: "7d", + showCustom: false, + })); + break; + case "custom": + setState((previous) => ({ + ...previous, + showCustom: true, + })); + } + }; + + useEffect(() => { + if (state.showCustom) { + return; + } + dispatch({ + type: DashboardActions.SET_DASHBOARD_INPUT, + name: props.name, + value: JSON.stringify({ + from: state.from, + to: state.to, + relative: state.relative, + }), + recordInputsHistory: !!stateValue, + }); + }, [state]); + + const handleApply = () => { + setState({ ...tempState, showCustom: false }); + }; + + const handleCancel = () => { + setState({ ...state, showCustom: false }); + }; + + const handleTimeOptionClick = (value, unit) => { + setDuration(value); + setUnitOfTime(unit); + setTempState((previous) => ({ + ...previous, + from: dayjs().subtract(1, "hour").utc(), + to: null, + relative: `${value}${unit === "minute" ? "m" : unit === "hour" ? "h" : unit === "day" ? "d" : unit === "week" ? "w" : ""}`, + showCustom: false, + })); + }; + + return ( +
+
+ {presets.map((preset) => ( + + ))} +
+ + {state.showCustom && ( +
+
+ + +
+ + {tab === "absolute" ? ( +
+
+ { + // console.log({ from, to }); + const newFrom = new Date( + from.getFullYear(), + from.getMonth(), + from.getDate(), + tempState.from.hour(), + tempState.from.minute(), + tempState.from.second(), + ); + const newTo = new Date( + to.getFullYear(), + to.getMonth(), + to.getDate(), + tempState.to?.hour() || 0, + tempState.to?.minute() || 0, + tempState.to?.second() || 0, + ); + const parsedFrom = dayjs(newFrom).utc(); + const parsedTo = dayjs(newTo).utc(); + setTempState((previous) => ({ + ...previous, + from: parsedFrom, + to: parsedTo, + })); + // console.log({ from, to }); + // setStartDate(from); + // setEndDate(to); + }} + className="single-day-picker" + captionLayout="dropdown" + pagedNavigation + /> +
+
+
+ + + setTempState((previous) => ({ + ...previous, + from: dayjs(e.target.value).utc(), + })) + } + /> + + { + setTempState((previous) => ({ + ...previous, + from: dayjs( + `${tempState.from.format("YYYY")}-${tempState.from.format("MM")}-${tempState.from.format("DD")} ${e.target.value}`, + ), + })); + }} + /> +
+
+ + + setTempState((previous) => ({ + ...previous, + to: dayjs(e.target.value).utc(), + })) + } + /> + + { + const toTime = tempState.to || dayjs(); + setTempState((previous) => ({ + ...previous, + from: dayjs( + `${toTime.format("YYYY")}-${toTime.format("MM")}-${toTime.format("DD")} ${e.target.value}`, + ), + })); + }} + /> +
+
+
+ ) : ( +
+
+ +
+ {timeOptions.minutes.map((min) => ( + + ))} +
+ + +
+ {timeOptions.hours.map((hour) => ( + + ))} +
+ + +
+ {timeOptions.days.map((day) => ( + + ))} +
+ + +
+ {timeOptions.weeks.map((week) => ( + + ))} +
+
+ +
+ + setDuration(Number(e.target.value))} + /> + +
+
+ )} + +
+ + +
+
+ )} +
+ ); +}; + +const definition: IInput = { + type: "date_range", + component: DateRangePicker, +}; + +registerInputComponent(definition.type, definition); + +export default definition; + +export { DateRangePicker }; diff --git a/ui/dashboard/src/components/dashboards/inputs/types.ts b/ui/dashboard/src/components/dashboards/inputs/types.ts index 6008cdd6..10f13446 100644 --- a/ui/dashboard/src/components/dashboards/inputs/types.ts +++ b/ui/dashboard/src/components/dashboards/inputs/types.ts @@ -34,6 +34,7 @@ export type InputProps = BaseInputProps & { export type InputType = | "combo" + | "date_range" | "hidden" | "multicombo" | "multiselect" diff --git a/ui/dashboard/src/hooks/useDashboard.tsx b/ui/dashboard/src/hooks/useDashboard.tsx index ac0cd0f8..555f3ff0 100644 --- a/ui/dashboard/src/hooks/useDashboard.tsx +++ b/ui/dashboard/src/hooks/useDashboard.tsx @@ -440,6 +440,20 @@ const DashboardProvider = ({ sendSocketMessage({ action: SocketActions.CLEAR_DASHBOARD, }); + + const { "input.detection_range": detectionRange, ...rest } = + state.selectedDashboardInputs || {}; + let detectionFrom, detectionTo; + if (detectionRange) { + try { + const parsed = JSON.parse(detectionRange); + detectionFrom = parsed.from; + detectionTo = parsed.to; + } catch (err) { + console.log("Parse error", err); + } + } + const selectDashboardMessage: any = { action: state.selectedDashboard.type === "snapshot" @@ -449,9 +463,25 @@ const DashboardProvider = ({ dashboard: { full_name: state.selectedDashboard.full_name, }, - input_values: { inputs: state.selectedDashboardInputs }, + input_values: { inputs: rest }, }, }; + + if (detectionFrom) { + selectDashboardMessage.payload.input_values.detection_time_ranges = + selectDashboardMessage.payload.input_values.detection_time_ranges || + {}; + selectDashboardMessage.payload.input_values.detection_time_ranges.from = + detectionFrom; + } + if (detectionTo) { + selectDashboardMessage.payload.input_values.detection_time_ranges = + selectDashboardMessage.payload.input_values.detection_time_ranges || + {}; + selectDashboardMessage.payload.input_values.detection_time_ranges.to = + detectionTo; + } + if (!!state.searchPathPrefix.length) { selectDashboardMessage.payload.search_path_prefix = state.searchPathPrefix; @@ -480,16 +510,39 @@ const DashboardProvider = ({ state.selectedDashboardInputs, ) ) { - sendSocketMessage({ + const { "input.detection_range": detectionRange, ...rest } = + state.selectedDashboardInputs || {}; + let detectionFrom, detectionTo; + if (detectionRange) { + try { + const parsed = JSON.parse(detectionRange); + detectionFrom = parsed.from; + detectionTo = parsed.to; + } catch (err) { + console.log("Parse error", err); + } + } + const message = { action: SocketActions.INPUT_CHANGED, payload: { dashboard: { full_name: state.selectedDashboard.full_name, }, changed_input: state.lastChangedInput, - input_values: { inputs: state.selectedDashboardInputs }, + input_values: { inputs: rest }, }, - }); + }; + if (detectionFrom) { + message.payload.input_values.detection_time_ranges = + message.payload.input_values.detection_time_ranges || {}; + message.payload.input_values.detection_time_ranges.from = detectionFrom; + } + if (detectionTo) { + message.payload.input_values.detection_time_ranges = + message.payload.input_values.detection_time_ranges || {}; + message.payload.input_values.detection_time_ranges.to = detectionTo; + } + sendSocketMessage(message); } }, [ previousSelectedDashboardStates, diff --git a/ui/dashboard/src/utils/registerComponents.ts b/ui/dashboard/src/utils/registerComponents.ts index ed5ad478..d4346682 100644 --- a/ui/dashboard/src/utils/registerComponents.ts +++ b/ui/dashboard/src/utils/registerComponents.ts @@ -31,6 +31,7 @@ import "@powerpipe/components/dashboards/hierarchies/Tree"; import "@powerpipe/components/dashboards/hierarchies/Hierarchy"; // Inputs +import "@powerpipe/components/dashboards/inputs/DateRangePicker"; import "@powerpipe/components/dashboards/inputs/MultiComboInput"; import "@powerpipe/components/dashboards/inputs/MultiSelectInput"; import "@powerpipe/components/dashboards/inputs/SingleComboInput"; From f2f7bc4847772933eecce3972280398e2df8672a Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Fri, 8 Nov 2024 17:24:23 +0700 Subject: [PATCH 29/85] Fix UI crash --- .../src/components/dashboards/inputs/DateRangePicker/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/dashboard/src/components/dashboards/inputs/DateRangePicker/index.tsx b/ui/dashboard/src/components/dashboards/inputs/DateRangePicker/index.tsx index b772ab9c..ce48f8f5 100644 --- a/ui/dashboard/src/components/dashboards/inputs/DateRangePicker/index.tsx +++ b/ui/dashboard/src/components/dashboards/inputs/DateRangePicker/index.tsx @@ -37,7 +37,7 @@ const DateRangePicker = (props: InputProps) => { useEffect(() => { if (!stateValue) { - return ""; + return; } try { const parsed = JSON.parse(stateValue); From d3c6182ea893beec0f4d942d366323ee79a47419 Mon Sep 17 00:00:00 2001 From: kai Date: Fri, 8 Nov 2024 17:26:29 +0700 Subject: [PATCH 30/85] tailpipe connection invokes tailpipe connect, passing time range --- internal/dashboardexecute/dashboard_execution_tree.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/dashboardexecute/dashboard_execution_tree.go b/internal/dashboardexecute/dashboard_execution_tree.go index 280cf372..1ec931ef 100644 --- a/internal/dashboardexecute/dashboard_execution_tree.go +++ b/internal/dashboardexecute/dashboard_execution_tree.go @@ -68,10 +68,9 @@ func newDashboardExecutionTree(rootResource modconfig.ModTreeItem, sessionId str executionTree.SetInputValues(inputs) } // TACTICAL - // if a time range has been passed, set the detection time range and add a backend option + // if a time range has been passed, set the detection time range // (if time range is not set, From and To will be nil - this is expected and handled) executionTree.DetectionTimeRange = inputs.DetectionTimeRange - opts = append(opts, backend.WithTimeRange(inputs.DetectionTimeRange)) // set the dashboard database and search patch config defaultDatabase, defaultSearchPathConfig, err := db_client.GetDefaultDatabaseConfig(opts...) @@ -366,9 +365,10 @@ func (*DashboardExecutionTree) GetResource() resources.DashboardLeafNode { // function to get a client from one of the client maps func (e *DashboardExecutionTree) getClient(ctx context.Context, csp connection.ConnectionStringProvider, searchPathConfig backend.SearchPathConfig) (*db_client.DbClient, error) { - // TODO K nee to accept opts???? or already in the connection??? - // ask the provider for the connection string - cs := csp.GetConnectionString() + // ask the provider for the connection string, passing the filter + // TODO check connection type is tailpipe??? + filter := connection.TailpipeDatabaseFilters{From: e.DetectionTimeRange.From, To: e.DetectionTimeRange.To} + cs := csp.GetConnectionString(connection.WithFilter(filter)) // if the default map already contains a client for this connection string, use that if client := e.defaultClientMap.Get(cs, searchPathConfig); client != nil { return client, nil From 03b58ed5a17d83d5c6c1f29cc37e76d2b5aba149 Mon Sep 17 00:00:00 2001 From: kai Date: Fri, 8 Nov 2024 19:08:25 +0700 Subject: [PATCH 31/85] GetConnectionString returns error reorder newDashboardExecutionTree to fix nre always re-execute if inputs are changed (even for benchmark) TimeRange successfully passed to tailpipe TailpipeConnection caches connectionString --- b/dashboard.pp | 24 +++++++++ b/mod.pp | 5 ++ internal/cmd/mod.go | 11 +++- internal/cmdconfig/validate.go | 5 +- .../dashboard_execution_tree.go | 50 +++++++++---------- internal/dashboardserver/payload.go | 14 ++++-- internal/db_client/database_config.go | 14 ++++-- internal/initialisation/init_data.go | 7 ++- 8 files changed, 95 insertions(+), 35 deletions(-) create mode 100644 b/dashboard.pp create mode 100644 b/mod.pp diff --git a/b/dashboard.pp b/b/dashboard.pp new file mode 100644 index 00000000..7fcbcf7c --- /dev/null +++ b/b/dashboard.pp @@ -0,0 +1,24 @@ + + +detection_benchmark "db1" { + + title = "Detection testing" + children = [detection.d1] + + } + + +detection "d1"{ + title = "top level detection" + sql = "select 'r' as reason, 'foo' as resource, 'alarm' as status" + } +query "query_input" { + param "new_input" { + + } + sql = <<-EOQ + select + $1 as "column 1", + 'value1' as "column 2" + EOQ +} \ No newline at end of file diff --git a/b/mod.pp b/b/mod.pp new file mode 100644 index 00000000..fcbd3b15 --- /dev/null +++ b/b/mod.pp @@ -0,0 +1,5 @@ +mod "dashboard_inputs"{ + title = "Dashboard using inputs" + description = "Dashboard for testing inputs - running dashboard with --arg flag" + database = connection.tailpipe.tp +} \ No newline at end of file diff --git a/internal/cmd/mod.go b/internal/cmd/mod.go index beeee402..64b2ddcd 100644 --- a/internal/cmd/mod.go +++ b/internal/cmd/mod.go @@ -171,7 +171,16 @@ func getPluginVersions(ctx context.Context) *plugin.PluginVersionMap { return nil } - client, err := db_client.NewDbClient(ctx, defaultDatabase.GetConnectionString()) + connectionString, err := defaultDatabase.GetConnectionString() + if err != nil { + // do not show warning if --force is set + if !viper.GetBool(constants.ArgForce) { + error_helpers.ShowWarning("Could not connect to database - plugin validation will not be performed") + } + return nil + } + + client, err := db_client.NewDbClient(ctx, connectionString) if err != nil { // do not show warning if --force is set if !viper.GetBool(constants.ArgForce) { diff --git a/internal/cmdconfig/validate.go b/internal/cmdconfig/validate.go index e43e145d..57a7e7b3 100644 --- a/internal/cmdconfig/validate.go +++ b/internal/cmdconfig/validate.go @@ -32,7 +32,10 @@ func ValidateDatabaseArg() error { // unexpected - all registered connections should implement this interface return fmt.Errorf("connection '%s' does not implement connection.ConnectionStringProvider", databaseArg) } - connectionString := csp.GetConnectionString() + connectionString, err := csp.GetConnectionString() + if err != nil { + return err + } // update viper Database arg with the connection string viper.Set(constants.ArgDatabase, connectionString) // if no search path is set, set it to the connection's default search path diff --git a/internal/dashboardexecute/dashboard_execution_tree.go b/internal/dashboardexecute/dashboard_execution_tree.go index 1ec931ef..6e597b5a 100644 --- a/internal/dashboardexecute/dashboard_execution_tree.go +++ b/internal/dashboardexecute/dashboard_execution_tree.go @@ -63,15 +63,6 @@ func newDashboardExecutionTree(rootResource modconfig.ModTreeItem, sessionId str } executionTree.id = fmt.Sprintf("%p", executionTree) - // if inputs have been passed, set them first - if !inputs.Empty() { - executionTree.SetInputValues(inputs) - } - // TACTICAL - // if a time range has been passed, set the detection time range - // (if time range is not set, From and To will be nil - this is expected and handled) - executionTree.DetectionTimeRange = inputs.DetectionTimeRange - // set the dashboard database and search patch config defaultDatabase, defaultSearchPathConfig, err := db_client.GetDefaultDatabaseConfig(opts...) if err != nil { @@ -83,11 +74,6 @@ func newDashboardExecutionTree(rootResource modconfig.ModTreeItem, sessionId str } executionTree.database = database executionTree.searchPathConfig = searchPathConfig - // add a client for the active database and search path - _, err = executionTree.getClient(context.Background(), database, searchPathConfig) - if err != nil { - return nil, err - } // create the root run node (either a report run or a counter run) root, err := executionTree.createRootItem(rootResource) @@ -96,6 +82,16 @@ func newDashboardExecutionTree(rootResource modconfig.ModTreeItem, sessionId str } executionTree.Root = root + + // if inputs have been passed, set them first + executionTree.SetInputValues(inputs) + + // add a client for the active database and search path + _, err = executionTree.getClient(context.Background(), database, searchPathConfig) + if err != nil { + return nil, err + } + return executionTree, nil } @@ -244,20 +240,21 @@ func (e *DashboardExecutionTree) SetInputValues(inputValues *InputValues) { e.inputLock.Lock() defer e.inputLock.Unlock() - // we only support inputs if root is a dashboard (NOT a benchmark) - runtimeDependencyPublisher, ok := e.Root.(RuntimeDependencyPublisher) - if !ok { - // should never happen - slog.Warn("SetInputValues called but root WorkspaceEvents run is not a RuntimeDependencyPublisher", "root", e.Root.GetName()) - return - } - + // set the input values and publish the runtime dependencies (if root implements RuntimeDependencyPublisher) + runtimeDependencyPublisher, _ := e.Root.(RuntimeDependencyPublisher) for name, value := range inputValues.Inputs { slog.Debug("DashboardExecutionTree SetInput", "name", name, "value", value) e.inputValues[name] = value // publish runtime dependency - runtimeDependencyPublisher.PublishRuntimeDependencyValue(name, &dashboardtypes.ResolvedRuntimeDependencyValue{Value: value}) + if runtimeDependencyPublisher != nil { + runtimeDependencyPublisher.PublishRuntimeDependencyValue(name, &dashboardtypes.ResolvedRuntimeDependencyValue{Value: value}) + } } + + // TACTICAL + // if a time range has been passed, set the detection time range + // (if time range is not set, From and To will be nil - this is expected and handled) + e.DetectionTimeRange = inputValues.DetectionTimeRange } // ChildCompleteChan implements DashboardParent @@ -367,8 +364,11 @@ func (*DashboardExecutionTree) GetResource() resources.DashboardLeafNode { func (e *DashboardExecutionTree) getClient(ctx context.Context, csp connection.ConnectionStringProvider, searchPathConfig backend.SearchPathConfig) (*db_client.DbClient, error) { // ask the provider for the connection string, passing the filter // TODO check connection type is tailpipe??? - filter := connection.TailpipeDatabaseFilters{From: e.DetectionTimeRange.From, To: e.DetectionTimeRange.To} - cs := csp.GetConnectionString(connection.WithFilter(filter)) + filter := &connection.TailpipeDatabaseFilters{From: e.DetectionTimeRange.From, To: e.DetectionTimeRange.To} + cs, err := csp.GetConnectionString(connection.WithFilter(filter)) + if err != nil { + return nil, err + } // if the default map already contains a client for this connection string, use that if client := e.defaultClientMap.Get(cs, searchPathConfig); client != nil { return client, nil diff --git a/internal/dashboardserver/payload.go b/internal/dashboardserver/payload.go index 4ac231eb..fc3e89cf 100644 --- a/internal/dashboardserver/payload.go +++ b/internal/dashboardserver/payload.go @@ -66,7 +66,11 @@ func buildServerMetadataPayload(rm modconfig.ModResources, pipesMetadata *steamp if err != nil { return nil, err } - searchPath, err := getSearchPathMetadata(context.Background(), defaultDatabase.GetConnectionString(), defaultSearchPathConfig) + connectionString, err := defaultDatabase.GetConnectionString() + if err != nil { + return nil, err + } + searchPath, err := getSearchPathMetadata(context.Background(), connectionString, defaultSearchPathConfig) if err != nil { return nil, err } @@ -97,14 +101,18 @@ func buildDashboardMetadataPayload(ctx context.Context, dashboard modconfig.ModT return nil, err } + connectionString, err := database.GetConnectionString() + if err != nil { + return nil, err + } payload := DashboardMetadataPayload{ Action: "dashboard_metadata", Metadata: DashboardMetadata{ - Database: database.GetConnectionString(), + Database: connectionString, }, } - searchPath, err := getSearchPathMetadata(ctx, database.GetConnectionString(), searchPathConfig) + searchPath, err := getSearchPathMetadata(ctx, connectionString, searchPathConfig) if err != nil { return nil, err } diff --git a/internal/db_client/database_config.go b/internal/db_client/database_config.go index 9454a426..3f2cbe08 100644 --- a/internal/db_client/database_config.go +++ b/internal/db_client/database_config.go @@ -68,8 +68,11 @@ func GetDatabaseConfigForResource(resource modconfig.ModTreeItem, workspaceMod * // if the database is a cloud workspace, resolve the connection string if steampipeconfig.IsPipesWorkspaceConnectionString(csp) { - var err error - csp, err = GetPipesWorkspaceConnectionString(csp.GetConnectionString()) + cs, err := csp.GetConnectionString() + if err != nil { + return nil, backend.SearchPathConfig{}, err + } + csp, err = GetPipesWorkspaceConnectionString(cs) if err != nil { return nil, backend.SearchPathConfig{}, err } @@ -117,8 +120,11 @@ func GetDefaultDatabaseConfig(opts ...backend.BackendOption) (connection.Connect // if the database is a cloud workspace, resolve the connection string if steampipeconfig.IsPipesWorkspaceConnectionString(csp) { - var err error - csp, err = GetPipesWorkspaceConnectionString(csp.GetConnectionString()) + cs, err := csp.GetConnectionString() + if err != nil { + return nil, backend.SearchPathConfig{}, err + } + csp, err = GetPipesWorkspaceConnectionString(cs) if err != nil { return nil, backend.SearchPathConfig{}, err } diff --git a/internal/initialisation/init_data.go b/internal/initialisation/init_data.go index fdfaba59..a6fed55a 100644 --- a/internal/initialisation/init_data.go +++ b/internal/initialisation/init_data.go @@ -177,7 +177,12 @@ func (i *InitData[T]) Init(ctx context.Context, args ...string) { if !searchPathConfig.Empty() { opts = append(opts, backend.WithSearchPathConfig(searchPathConfig)) } - client, err := db_client.NewDbClient(ctx, csp.GetConnectionString(), opts...) + connectionString, err := csp.GetConnectionString() + if err != nil { + i.Result.Error = err + return + } + client, err := db_client.NewDbClient(ctx, connectionString, opts...) if err != nil { i.Result.Error = err return From 9b198649544678d2dec2dee77be0d3ac2b0fa953 Mon Sep 17 00:00:00 2001 From: Mike Burgess Date: Fri, 8 Nov 2024 19:14:28 +0700 Subject: [PATCH 32/85] Small UI fixes --- .../src/components/dashboards/Table/index.tsx | 100 +++++++++++------- .../grouping/CheckFilterEditor/index.tsx | 1 - .../grouping/DetectionPanel/index.tsx | 9 +- 3 files changed, 69 insertions(+), 41 deletions(-) diff --git a/ui/dashboard/src/components/dashboards/Table/index.tsx b/ui/dashboard/src/components/dashboards/Table/index.tsx index cc2ed129..96726232 100644 --- a/ui/dashboard/src/components/dashboards/Table/index.tsx +++ b/ui/dashboard/src/components/dashboards/Table/index.tsx @@ -353,14 +353,14 @@ const CellValue = ({ className="text-black-scale-7 hover:text-black-scale-8 focus:outline-none" title="Add value to include filter" > - +
@@ -405,31 +405,40 @@ const TableView = ({ const handleAddFilter = (column, value) => { const newFilter = { column, value }; - if (!activeFilters.some(f => f.column === column && f.value === value)) { + if (!activeFilters.some((f) => f.column === column && f.value === value)) { setActiveFilters([...activeFilters, newFilter]); - setExcludedFilters(excludedFilters.filter(f => f.column !== column || f.value !== value)); + setExcludedFilters( + excludedFilters.filter((f) => f.column !== column || f.value !== value), + ); } }; const handleRemoveFilter = (filter) => { - if (!excludedFilters.some(f => f.column === filter.column && f.value === filter.value)) { + if ( + !excludedFilters.some( + (f) => f.column === filter.column && f.value === filter.value, + ) + ) { setExcludedFilters([...excludedFilters, filter]); - setActiveFilters(activeFilters.filter(f => f.column !== filter.column || f.value !== filter.value)); + setActiveFilters( + activeFilters.filter( + (f) => f.column !== filter.column || f.value !== filter.value, + ), + ); } }; const filteredData = useMemo(() => { let filtered = rowData; - if (activeFilters.length > 0) { - filtered = filtered.filter(row => { - return activeFilters.every(filter => row[filter.column] === filter.value); - }); - } - - if (excludedFilters.length > 0) { - filtered = filtered.filter(row => { - return excludedFilters.every(filter => row[filter.column] !== filter.value); + if (activeFilters.length > 0 || excludedFilters.length > 0) { + filtered = filtered.filter((row) => { + return ( + activeFilters.every( + (filter) => row[filter.column] === filter.value, + ) && + excludedFilters.every((filter) => row[filter.column] !== filter.value) + ); }); } @@ -466,33 +475,51 @@ const TableView = ({ doRender(); }, [columns, renderTemplates, rows, templateRenderReady]); - const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1); - return (
- {(activeFilters.length > 0 || excludedFilters.length > 0) && ( -
+ {(activeFilters.length > 0 || excludedFilters.length > 0) && ( +
{[...activeFilters, ...excludedFilters].map((filter, index) => { - const isActive = activeFilters.some(f => f.column === filter.column && f.value === filter.value); + const isActive = activeFilters.some( + (f) => f.column === filter.column && f.value === filter.value, + ); return (
- - {isActive ? ( - - ) : ( - - )} - {` ${capitalize(filter.column)}: ${filter.value}`} - + + {isActive ? ( + + ) : ( + + )} + {` ${filter.column}: ${filter.value}`} +