diff --git a/debezium-platform-stage/src/apis/useDeleteData.tsx b/debezium-platform-stage/src/apis/useDeleteData.tsx index 06ba51fb..e1a30d3a 100644 --- a/debezium-platform-stage/src/apis/useDeleteData.tsx +++ b/debezium-platform-stage/src/apis/useDeleteData.tsx @@ -34,3 +34,5 @@ export const useDeleteData = ({ }, }); }; + + diff --git a/debezium-platform-stage/src/components/AdditionalProperties.test.tsx b/debezium-platform-stage/src/components/AdditionalProperties.test.tsx index 2132adeb..fce40221 100644 --- a/debezium-platform-stage/src/components/AdditionalProperties.test.tsx +++ b/debezium-platform-stage/src/components/AdditionalProperties.test.tsx @@ -3,31 +3,44 @@ import userEvent from "@testing-library/user-event"; import { describe, it, expect, vi } from "vitest"; import AdditionalProperties from "./AdditionalProperties"; import { render } from "../__test__/unit/test-utils"; +import type { AdditionalPropertyRow, AdditionalPropertyRowErrorCode } from "@utils/additionalConfigProperties"; describe("AdditionalProperties", () => { + const defaultRow: AdditionalPropertyRow = { + key: "k1", + valueKind: "string", + stringValue: "v1", + booleanValue: false, + integerInput: "", + }; + it("renders rows, value input, remove, and add property", async () => { const user = userEvent.setup(); const onAdd = vi.fn(); const onDelete = vi.fn(); - const onChange = vi.fn(); + const onPatch = vi.fn(); + const onValueKindChange = vi.fn(); - const properties = new Map([ - ["row-1", { key: "k1", value: "v1" }], + const properties = new Map([ + ["row-1", defaultRow], ]); render( , ); expect(screen.getByDisplayValue("v1")).toBeInTheDocument(); - await user.click(screen.getByRole("button", { name: "Remove" })); + + // PatternFly and i18next might render 'Remove row' or similar based on translations. + await user.click(screen.getByRole("button", { name: /remove/i })); expect(onDelete).toHaveBeenCalledWith("row-1"); await user.click(screen.getByRole("button", { name: /add property/i })); @@ -37,33 +50,39 @@ describe("AdditionalProperties", () => { it("hides remove and add when readOnly", () => { render( , ); - expect(screen.queryByRole("button", { name: "Remove" })).not.toBeInTheDocument(); + expect(screen.queryByRole("button", { name: /remove/i })).not.toBeInTheDocument(); expect(screen.queryByRole("button", { name: /add property/i })).not.toBeInTheDocument(); }); it("marks value input error when id is in errorKeys", () => { + const rowErrorCodes = new Map([ + ["row-e", ["empty_value"]], + ]); render( , ); - const valueInput = screen.getByPlaceholderText("Value"); + // The value input has an aria-invalid attribute when marked with an error + const valueInput = screen.getByRole("textbox", { name: /value/i }); expect(valueInput).toHaveAttribute("aria-invalid", "true"); }); }); diff --git a/debezium-platform-stage/src/components/AdditionalProperties.tsx b/debezium-platform-stage/src/components/AdditionalProperties.tsx index 6ca79ca0..c987cae3 100644 --- a/debezium-platform-stage/src/components/AdditionalProperties.tsx +++ b/debezium-platform-stage/src/components/AdditionalProperties.tsx @@ -1,218 +1,59 @@ -import React, { useState, useRef } from "react"; +import React from "react"; import { Button, FormGroup, - Grid, - Split, - SplitItem, - TextInput, - Select, - SelectOption, - SelectList, - MenuToggle, - MenuToggleElement, - TextInputGroup, - TextInputGroupMain, - TextInputGroupUtilities, Form, } from "@patternfly/react-core"; -import { PlusIcon, TimesIcon, TrashIcon } from "@patternfly/react-icons"; +import { PlusIcon } from "@patternfly/react-icons"; import { useTranslation } from "react-i18next"; +import { AdditionalPropertiesRows } from "./AdditionalPropertiesRows"; +import type { + AdditionalPropertyRow, + AdditionalPropertyRowErrorCode, + AdditionalPropertyValueKind, +} from "@utils/additionalConfigProperties"; import "./AdditionalProperties.css"; interface AdditionalPropertiesProps { - properties: Map; - schemaPropertyNames: string[]; + fieldIdPrefix?: string; + properties: Map; onAdd: () => void; onDelete: (id: string) => void; - onChange: (id: string, type: "key" | "value", value: string) => void; - errorKeys: string[]; + onPatch: (id: string, patch: Partial) => void; + onValueKindChange: (id: string, kind: AdditionalPropertyValueKind) => void; + rowIdsWithErrors: Set; + rowErrorCodes: Map; readOnly?: boolean; } -interface TypeaheadKeyInputProps { - value: string; - suggestions: string[]; - onChange: (value: string) => void; - fieldId: string; - readOnly?: boolean; -} - -const TypeaheadKeyInput: React.FC = ({ - value, - suggestions, - onChange, - fieldId, - readOnly, -}) => { - const [isOpen, setIsOpen] = useState(false); - const [filterValue, setFilterValue] = useState(""); - const textInputRef = useRef(null); - - const filteredOptions = React.useMemo(() => { - if (!filterValue) return suggestions; - return suggestions.filter((s) => - s.toLowerCase().includes(filterValue.toLowerCase()) - ); - }, [suggestions, filterValue]); - - const onSelect = ( - _e: React.MouseEvent | undefined, - val: string | number | undefined - ) => { - if (val) { - onChange(String(val)); - setFilterValue(""); - setIsOpen(false); - } - }; - - const onTextInputChange = ( - _e: React.FormEvent, - val: string - ) => { - setFilterValue(val); - onChange(val); - if (!isOpen) setIsOpen(true); - }; - - const toggle = (toggleRef: React.Ref) => ( - { - setIsOpen(!isOpen); - textInputRef.current?.focus(); - }} - isExpanded={isOpen} - isFullWidth - > - - !isOpen && setIsOpen(true)} - onChange={onTextInputChange} - id={fieldId} - autoComplete="off" - innerRef={textInputRef} - placeholder="Property key" - role="combobox" - isExpanded={isOpen} - /> - - - - )} - - ))} + + {!readOnly && ( + )} + ); + const renderSignalCollections = () => { const isConnectionSelected = !!selectedConnection; const disabledTooltip = t("source:signal.connectionRequiredTooltip", { diff --git a/debezium-platform-stage/src/components/SourceSchemaReviewView.tsx b/debezium-platform-stage/src/components/SourceSchemaReviewView.tsx index 8f11375f..2475254a 100644 --- a/debezium-platform-stage/src/components/SourceSchemaReviewView.tsx +++ b/debezium-platform-stage/src/components/SourceSchemaReviewView.tsx @@ -456,7 +456,15 @@ const SourceSchemaReviewView: React.FC = ({ {row.key} - + ))} diff --git a/debezium-platform-stage/src/components/SourceSinkForm.tsx b/debezium-platform-stage/src/components/SourceSinkForm.tsx index 93e3c499..5dfe7495 100644 --- a/debezium-platform-stage/src/components/SourceSinkForm.tsx +++ b/debezium-platform-stage/src/components/SourceSinkForm.tsx @@ -10,9 +10,6 @@ import { FormFieldGroup, FormFieldGroupHeader, Button, - Split, - SplitItem, - Grid, Form, InputGroup, InputGroupItem, @@ -27,7 +24,7 @@ import { TextInputGroupUtilities, Skeleton, } from "@patternfly/react-core"; -import { ExclamationCircleIcon, PlusIcon, TimesIcon, TrashIcon } from "@patternfly/react-icons"; +import { ExclamationCircleIcon, PlusIcon, TimesIcon } from "@patternfly/react-icons"; import { getConnectionRole, getConnectorTypeName } from "@utils/helpers"; import { Catalog } from "../apis/types"; import destinationCatalog from "../__mocks__/data/DestinationCatalog.json"; @@ -39,6 +36,12 @@ import { Connection, ConnectionConfig, fetchData } from "src/apis"; import { API_URL } from "@utils/constants"; import { useQuery } from "react-query"; import "./SourceSinkForm.css"; +import { + AdditionalPropertyRow, + AdditionalPropertyRowErrorCode, + AdditionalPropertyValueKind, +} from "@utils/additionalConfigProperties"; +import { AdditionalPropertiesRows } from "./AdditionalPropertiesRows"; const getInitialSelectOptions = (connections: connectionsList[], connectorId: string): SelectOptionProps[] => { @@ -60,24 +63,23 @@ export interface connectionsList extends Connection { interface SourceSinkFormProps { ConnectorId: string; dataType?: string; - errorWarning: string[]; - properties: Map; + properties: Map; setValue: (key: string, value: string) => void; getValue: (key: string) => string; setError: (key: string, error: string | undefined) => void; errors: Record; handleAddProperty: () => void; handleDeleteProperty: (key: string) => void; - handlePropertyChange: ( - key: string, - type: "key" | "value", - value: string - ) => void; + handlePropertyPatch: (id: string, patch: Partial) => void; + handleValueKindChange: (id: string, kind: AdditionalPropertyValueKind) => void; + additionalErrorRowIds: Set; + additionalRowErrorCodes: Map; viewMode?: boolean; setSelectedConnection: (connection: ConnectionConfig | undefined) => void; selectedConnection: ConnectionConfig | undefined; handleConnectionModalToggle: () => void; } + const SourceSinkForm = ({ ConnectorId, dataType, @@ -85,15 +87,18 @@ const SourceSinkForm = ({ setValue, getValue, setError, - errorWarning, errors, handleAddProperty, handleDeleteProperty, - handlePropertyChange, + handlePropertyPatch, + handleValueKindChange, + additionalErrorRowIds, + additionalRowErrorCodes, viewMode, setSelectedConnection, selectedConnection, handleConnectionModalToggle, + }: SourceSinkFormProps) => { const { t } = useTranslation(); @@ -136,6 +141,8 @@ const SourceSinkForm = ({ } ); + + const baseSelectOptions = React.useMemo(() => { return getInitialSelectOptions(connections, dataType || ConnectorId); }, [connections, dataType, ConnectorId]); @@ -469,64 +476,19 @@ const SourceSinkForm = ({ /> } > - {Array.from(properties.keys()).map((key) => ( - - - - - - handlePropertyChange(key, "key", value) - } - /> - - - - handlePropertyChange(key, "value", value) - } - /> - - - - - - - - ))} + + diff --git a/debezium-platform-stage/src/components/SourceSinkTable.tsx b/debezium-platform-stage/src/components/SourceSinkTable.tsx index 30038d8d..5f451373 100644 --- a/debezium-platform-stage/src/components/SourceSinkTable.tsx +++ b/debezium-platform-stage/src/components/SourceSinkTable.tsx @@ -93,6 +93,8 @@ const SourceSinkTable: React.FunctionComponent = ({ } ); + + const { mutate: deleteData } = useDeleteData({ onSuccess: () => { modalToggle(false); diff --git a/debezium-platform-stage/src/config.ts b/debezium-platform-stage/src/config.ts index 97302c5a..be469e07 100644 --- a/debezium-platform-stage/src/config.ts +++ b/debezium-platform-stage/src/config.ts @@ -5,5 +5,5 @@ export const getBackendUrl = () => { } // Fallback to build-time env variable (VITE_ prefix required for Vite) - return import.meta.env.CONDUCTOR_URL || 'http://localhost:8080'; + return import.meta.env.CONDUCTOR_URL || ''; }; \ No newline at end of file diff --git a/debezium-platform-stage/src/pages/Connection/Connections.tsx b/debezium-platform-stage/src/pages/Connection/Connections.tsx index 560387ce..14ff9fc3 100644 --- a/debezium-platform-stage/src/pages/Connection/Connections.tsx +++ b/debezium-platform-stage/src/pages/Connection/Connections.tsx @@ -61,6 +61,8 @@ const Connections: React.FunctionComponent = () => { } ); + + const { data: destinationList = [], } = useQuery( @@ -71,6 +73,8 @@ const Connections: React.FunctionComponent = () => { } ); + + const { data: connectionsList = [], error, @@ -83,6 +87,8 @@ const Connections: React.FunctionComponent = () => { } ); + + const { data: sourceCatalog = [] } = useQuery( "sourceConnectorCatalog", async () => { @@ -96,6 +102,8 @@ const Connections: React.FunctionComponent = () => { } ); + + const catalog: Catalog[] = React.useMemo( () => [...sourceCatalog, ...destinationCatalog], [sourceCatalog] diff --git a/debezium-platform-stage/src/pages/Destination/CreateDestination.tsx b/debezium-platform-stage/src/pages/Destination/CreateDestination.tsx index acd0862e..90dadc61 100644 --- a/debezium-platform-stage/src/pages/Destination/CreateDestination.tsx +++ b/debezium-platform-stage/src/pages/Destination/CreateDestination.tsx @@ -22,7 +22,6 @@ import { CodeEditor, CodeEditorControl, Language } from "@patternfly/react-code- import { ConnectionConfig, createPost, Destination, Payload } from "../../apis/apis"; import { API_URL } from "../../utils/constants"; -import { convertMapToObject } from "../../utils/helpers"; import { useNotification } from "../../appLayout/AppNotificationContext"; import PageHeader from "@components/PageHeader"; import SourceSinkForm from "@components/SourceSinkForm"; @@ -37,7 +36,15 @@ import { formatCode } from "@utils/formatCodeUtils"; import style from "../../styles/createConnector.module.css" import CreateConnectionModal from "../components/CreateConnectionModal"; import { useData } from "@appContext/AppContext"; -import { Properties } from "src/apis/types"; +import { + AdditionalPropertyRow, + additionalPropertyRowFromApiValue, + additionalRowWithNewValueKind, + createEmptyAdditionalPropertyRow, + validateAdditionalPropertyRows, + AdditionalPropertyValueKind, + AdditionalPropertyRowErrorCode, +} from "@utils/additionalConfigProperties"; const ajv = new Ajv(); @@ -84,9 +91,10 @@ const FormSyncManager: React.FC<{ code: any; setCode: (code: any) => void; destinationId: string | undefined; - properties: Map; - setProperties: (properties: Map) => void; + properties: Map; + setProperties: (properties: Map) => void; setCodeAlert: (alert: string | React.ReactElement) => void; + setFormatType: (type: string) => void; }> = ({ getFormValue, @@ -112,7 +120,8 @@ const FormSyncManager: React.FC<{ updateSource.current = "form"; const type = destinationId || ""; - const configuration = convertMapToObject(properties); + const validation = validateAdditionalPropertyRows(properties, {}); + const configuration = validation.additionalFlat; setCode((prevCode: any) => { if ( @@ -169,14 +178,15 @@ const FormSyncManager: React.FC<{ typeof code.description === "string" ? code.description : "" ); } - const currentConfig = convertMapToObject(properties); + const currentConfig = validateAdditionalPropertyRows(properties, {}).additionalFlat; if (JSON.stringify(currentConfig) !== JSON.stringify(code.config)) { const configMap = new Map(); Object.entries(code.config || {}).forEach(([key, value], index) => { - configMap.set(`key${index}`, { key, value: value as string }); + configMap.set(`key${index}`, additionalPropertyRowFromApiValue(key, value)); }); setProperties(configMap); } + if (updateSource.current === "code") { if (!code.name || code.name.trim() === "") { setCodeAlert(t('statusMessage:smartEditor.connectorNameRequired')); @@ -223,14 +233,16 @@ const CreateDestination: React.FunctionComponent = ({ const [codeAlert, setCodeAlert] = useState(""); const [formatType, setFormatType] = useState("dbz-platform"); - const [errorWarning, setErrorWarning] = useState([]); const [editorSelected, setEditorSelected] = React.useState("form-editor"); const [isLoading, setIsLoading] = React.useState(false); const [selectedConnection, setSelectedConnection] = useState(); - const [properties, setProperties] = useState>( - new Map([["key0", { key: "", value: "" }]]) + const [properties, setProperties] = useState>( + new Map([["key0", createEmptyAdditionalPropertyRow()]]) ); + const [additionalErrorRowIds, setAdditionalErrorRowIds] = useState>(new Set()); + const [additionalRowErrorCodes, setAdditionalRowErrorCodes] = useState>(new Map()); + const [keyCount, setKeyCount] = React.useState(1); const [isConnectionModalOpen, setIsConnectionModalOpen] = useState(false); @@ -246,11 +258,12 @@ const CreateDestination: React.FunctionComponent = ({ const newKey = `key${keyCount}`; setProperties( (prevProperties) => - new Map(prevProperties.set(newKey, { key: "", value: "" })) + new Map(prevProperties.set(newKey, createEmptyAdditionalPropertyRow())) ); setKeyCount((prevCount) => prevCount + 1); }; + const handleDeleteProperty = (key: string) => { setProperties((prevProperties) => { const newProperties = new Map(prevProperties); @@ -259,23 +272,32 @@ const CreateDestination: React.FunctionComponent = ({ }); }; - const handlePropertyChange = ( - key: string, - type: "key" | "value", - newValue: string + const handlePropertyPatch = ( + id: string, + patch: Partial ) => { setProperties((prevProperties) => { const newProperties = new Map(prevProperties); - const property = newProperties.get(key); + const property = newProperties.get(id); if (property) { - if (type === "key") property.key = newValue; - else if (type === "value") property.value = newValue; - newProperties.set(key, property); + newProperties.set(id, { ...property, ...patch }); } return newProperties; }); }; + const handleValueKindChange = (id: string, kind: AdditionalPropertyValueKind) => { + setProperties((prevProperties) => { + const next = new Map(prevProperties); + const entry = next.get(id); + if (entry) { + next.set(id, additionalRowWithNewValueKind(entry, kind)); + } + return next; + }); + }; + + const createNewDestination = async (payload: Payload) => { const response = await createPost(`${API_URL}/api/destinations`, payload); @@ -310,18 +332,15 @@ const CreateDestination: React.FunctionComponent = ({ } else { setIsLoading(true); - const errorWarning = [] as string[]; - properties.forEach((value: Properties, key: string) => { - if (value.key === "" || value.value === "") { - errorWarning.push(key); - } - }); - setErrorWarning(errorWarning); - if (errorWarning.length > 0) { + const validation = validateAdditionalPropertyRows(properties, {}); + setAdditionalErrorRowIds(validation.rowIdsWithErrors); + setAdditionalRowErrorCodes(validation.rowErrorCodes); + + if (validation.hasErrors) { addNotification( "danger", `Destination creation failed`, - `Please fill both Key and Value fields for all the properties.` + `Please fix the errors in the additional properties.` ); setIsLoading(false); return; @@ -332,12 +351,13 @@ const CreateDestination: React.FunctionComponent = ({ schema: "schema321", vaults: [], ...(selectedConnection ? { connection: selectedConnection } : {}), - config: convertMapToObject(properties), + config: validation.additionalFlat, name: values["destination-name"], } as unknown as Payload; await createNewDestination(payload); setIsLoading(false); } + } else { const payload = code; const isValid = validate(payload); @@ -484,14 +504,17 @@ const CreateDestination: React.FunctionComponent = ({ getValue={getValue} setError={setError} errors={errors} - errorWarning={errorWarning} handleAddProperty={handleAddProperty} handleDeleteProperty={handleDeleteProperty} - handlePropertyChange={handlePropertyChange} + handlePropertyPatch={handlePropertyPatch} + handleValueKindChange={handleValueKindChange} + additionalErrorRowIds={additionalErrorRowIds} + additionalRowErrorCodes={additionalRowErrorCodes} setSelectedConnection={setSelectedConnection} selectedConnection={selectedConnection} handleConnectionModalToggle={handleConnectionModalToggle} /> + ) : ( <> diff --git a/debezium-platform-stage/src/pages/Destination/Destinations.tsx b/debezium-platform-stage/src/pages/Destination/Destinations.tsx index e9bf509c..081d38a0 100644 --- a/debezium-platform-stage/src/pages/Destination/Destinations.tsx +++ b/debezium-platform-stage/src/pages/Destination/Destinations.tsx @@ -71,6 +71,8 @@ const Destinations: React.FunctionComponent = () => { } ); + + // Compute filtered results based on search query const searchResult = React.useMemo(() => { if (searchQuery.length === 0) { diff --git a/debezium-platform-stage/src/pages/Destination/EditDestination.tsx b/debezium-platform-stage/src/pages/Destination/EditDestination.tsx index d0ed9988..ab77ef1d 100644 --- a/debezium-platform-stage/src/pages/Destination/EditDestination.tsx +++ b/debezium-platform-stage/src/pages/Destination/EditDestination.tsx @@ -28,7 +28,7 @@ import { Payload, } from "../../apis/apis"; import { API_URL } from "../../utils/constants"; -import { convertMapToObject, getConnectorTypeName } from "../../utils/helpers"; +import { getConnectorTypeName } from "../../utils/helpers"; import { useNotification } from "../../appLayout/AppNotificationContext"; import SourceSinkForm from "@components/SourceSinkForm"; import Ajv from "ajv"; @@ -40,10 +40,18 @@ import EditConfirmationModel from "../components/EditConfirmationModel"; import CreateConnectionModal from "../components/CreateConnectionModal"; import { useData } from "@appContext/AppContext"; import { isValidJson } from "src/hooks/useFormatDetector"; +import { + AdditionalPropertyRow, + AdditionalPropertyRowErrorCode, + additionalPropertyRowFromApiValue, + additionalRowWithNewValueKind, + createEmptyAdditionalPropertyRow, + validateAdditionalPropertyRows, + AdditionalPropertyValueKind, +} from "@utils/additionalConfigProperties"; const ajv = new Ajv(); -type Properties = { key: string; value: string }; const FormSyncManager: React.FC<{ getFormValue: (key: string) => string; @@ -51,9 +59,10 @@ const FormSyncManager: React.FC<{ code: any; setCode: (code: any) => void; destinationId: string | undefined; - properties: Map; - setProperties: (properties: Map) => void; + properties: Map; + setProperties: (properties: Map) => void; setCodeAlert: (alert: string) => void; + }> = ({ getFormValue, setFormValue, @@ -76,7 +85,8 @@ const FormSyncManager: React.FC<{ } updateSource.current = "form"; - const configuration = convertMapToObject(properties); + const validation = validateAdditionalPropertyRows(properties, {}); + const configuration = validation.additionalFlat; setCode((prevCode: any) => { if ( @@ -122,14 +132,15 @@ const FormSyncManager: React.FC<{ typeof code.description === "string" ? code.description : "" ); } - const currentConfig = convertMapToObject(properties); + const currentConfig = validateAdditionalPropertyRows(properties, {}).additionalFlat; if (JSON.stringify(currentConfig) !== JSON.stringify(code.config)) { const configMap = new Map(); Object.entries(code.config || {}).forEach(([key, value], index) => { - configMap.set(`key${index}`, { key, value: value as string }); + configMap.set(`key${index}`, additionalPropertyRowFromApiValue(key, value)); }); setProperties(configMap); } + setCodeAlert(""); } else { setCodeAlert(ajv.errorsText(validate.errors)); @@ -151,16 +162,18 @@ const EditDestination: React.FunctionComponent = () => { const { addNotification } = useNotification(); const { darkMode } = useData(); const [editorSelected, setEditorSelected] = React.useState("form-editor"); - const [errorWarning, setErrorWarning] = useState([]); const [destination, setDestination] = useState(); const [isFetchLoading, setIsFetchLoading] = useState(true); const [error, setError] = useState(null); const [isLoading, setIsLoading] = useState(false); - const [properties, setProperties] = useState>( - new Map([["key0", { key: "", value: "" }]]) + const [properties, setProperties] = useState>( + new Map([["key0", createEmptyAdditionalPropertyRow()]]) ); + const [additionalErrorRowIds, setAdditionalErrorRowIds] = useState>(new Set()); + const [additionalRowErrorCodes, setAdditionalRowErrorCodes] = useState>(new Map()); const [keyCount, setKeyCount] = useState(1); + const [selectedConnection, setSelectedConnection] = useState(); const [searchParams] = useSearchParams(); const initialState = searchParams.get("state") as "view" | "edit" | null; @@ -192,13 +205,14 @@ const EditDestination: React.FunctionComponent = () => { let i = 0; const configMap = new Map(); for (const config in configProp) { - configMap.set(`key${i}`, { key: config, value: configProp[config] }); + configMap.set(`key${i}`, additionalPropertyRowFromApiValue(config, configProp[config])); i++; } setProperties(configMap); setKeyCount(configMap.size); }; + React.useEffect(() => { const fetchDestinations = async () => { setIsFetchLoading(true); @@ -229,11 +243,12 @@ const EditDestination: React.FunctionComponent = () => { const newKey = `key${keyCount}`; setProperties( (prevProperties) => - new Map(prevProperties.set(newKey, { key: "", value: "" })) + new Map(prevProperties.set(newKey, createEmptyAdditionalPropertyRow())) ); setKeyCount((prevCount) => prevCount + 1); }; + const handleDeleteProperty = (key: string) => { setProperties((prevProperties) => { const newProperties = new Map(prevProperties); @@ -242,23 +257,32 @@ const EditDestination: React.FunctionComponent = () => { }); }; - const handlePropertyChange = ( - key: string, - type: "key" | "value", - newValue: string + const handlePropertyPatch = ( + id: string, + patch: Partial ) => { setProperties((prevProperties) => { const newProperties = new Map(prevProperties); - const property = newProperties.get(key); + const property = newProperties.get(id); if (property) { - if (type === "key") property.key = newValue; - else if (type === "value") property.value = newValue; - newProperties.set(key, property); + newProperties.set(id, { ...property, ...patch }); } return newProperties; }); }; + const handleValueKindChange = (id: string, kind: AdditionalPropertyValueKind) => { + setProperties((prevProperties) => { + const next = new Map(prevProperties); + const entry = next.get(id); + if (entry) { + next.set(id, additionalRowWithNewValueKind(entry, kind)); + } + return next; + }); + }; + + const editDestination = async (payload: Payload) => { const response = await editPut( `${API_URL}/api/destinations/${destinationId}`, @@ -292,20 +316,17 @@ const EditDestination: React.FunctionComponent = () => { setError("destination-name", "Destination name is required."); } else if(selectedConnection === undefined){ setError("connection", t("statusMessage:smartEditor.connectionRequired")); - }else { + } else { setIsLoading(true); - const errorWarning = [] as string[]; - properties.forEach((value: Properties, key: string) => { - if (value.key === "" || value.value === "") { - errorWarning.push(key); - } - }); - setErrorWarning(errorWarning); - if (errorWarning.length > 0) { + const validation = validateAdditionalPropertyRows(properties, {}); + setAdditionalErrorRowIds(validation.rowIdsWithErrors); + setAdditionalRowErrorCodes(validation.rowErrorCodes); + + if (validation.hasErrors) { addNotification( "danger", `Destination edit failed`, - `Please fill both Key and Value fields for all the properties.` + `Please fix the errors in the additional properties.` ); setIsLoading(false); return; @@ -316,12 +337,13 @@ const EditDestination: React.FunctionComponent = () => { type: destination?.type ?? "", schema: destination?.schema ?? "", vaults: destination?.vaults ?? [], - config: convertMapToObject(properties) as DestinationConfig, + config: validation.additionalFlat as DestinationConfig, ...(selectedConnection ? { connection: selectedConnection } : {}), }; await editDestination(payload); setIsLoading(false); } + } else { if (codeAlert) return; const payload = code; @@ -474,15 +496,18 @@ const EditDestination: React.FunctionComponent = () => { getValue={getValue} setError={setError} errors={errors} - errorWarning={errorWarning} handleAddProperty={handleAddProperty} handleDeleteProperty={handleDeleteProperty} - handlePropertyChange={handlePropertyChange} + handlePropertyPatch={handlePropertyPatch} + handleValueKindChange={handleValueKindChange} + additionalErrorRowIds={additionalErrorRowIds} + additionalRowErrorCodes={additionalRowErrorCodes} viewMode={viewMode} setSelectedConnection={setSelectedConnection} selectedConnection={selectedConnection} handleConnectionModalToggle={handleConnectionModalToggle} /> + ) : ( <> {codeAlert && ( diff --git a/debezium-platform-stage/src/pages/Pipeline/Pipelines.tsx b/debezium-platform-stage/src/pages/Pipeline/Pipelines.tsx index 30f97cd8..9d751a60 100644 --- a/debezium-platform-stage/src/pages/Pipeline/Pipelines.tsx +++ b/debezium-platform-stage/src/pages/Pipeline/Pipelines.tsx @@ -99,6 +99,8 @@ const Pipelines: React.FunctionComponent = () => { } ); + + // Compute filtered results based on search query const searchResult = React.useMemo(() => { if (searchQuery.length === 0) { diff --git a/debezium-platform-stage/src/pages/Source/EditSource.tsx b/debezium-platform-stage/src/pages/Source/EditSource.tsx index 0a8501fd..3aa3248b 100644 --- a/debezium-platform-stage/src/pages/Source/EditSource.tsx +++ b/debezium-platform-stage/src/pages/Source/EditSource.tsx @@ -79,6 +79,8 @@ const EditSource: React.FunctionComponent = () => { { enabled: !!routeSourceId } ); + + const connectorType = source?.type; const descriptorPath = connectorType ? `source-connector/${connectorType}` @@ -94,6 +96,8 @@ const EditSource: React.FunctionComponent = () => { { enabled: !!descriptorPath } ); + + const sourceErrorMessage = sourceQueryError instanceof Error ? sourceQueryError.message : sourceQueryError ? String(sourceQueryError) diff --git a/debezium-platform-stage/src/pages/Source/Sources.test.tsx b/debezium-platform-stage/src/pages/Source/Sources.test.tsx index b8b2a44f..64e1d6f0 100644 --- a/debezium-platform-stage/src/pages/Source/Sources.test.tsx +++ b/debezium-platform-stage/src/pages/Source/Sources.test.tsx @@ -125,7 +125,7 @@ describe("Sources", () => { fireEvent.change(searchInput, { target: { value: "source" } }); await waitFor(() => { expect(screen.getByText("test-source-mongo")).toBeInTheDocument(); - }); + }, { timeout: 3000 }); }); it("filters sources for unknown search input and clears search", async () => { @@ -138,12 +138,14 @@ describe("Sources", () => { screen.getByText("No matching source is present.") ).toBeInTheDocument(); expect(screen.getByText("Clear search")).toBeInTheDocument(); - }); + }, { timeout: 3000 }); + const clearButton = screen.getByText("Clear search"); fireEvent.click(clearButton); await waitFor(() => { expect(searchInput).toHaveValue(""); expect(screen.getByText("2 Items")).toBeInTheDocument(); - }); + }, { timeout: 3000 }); }); + }); diff --git a/debezium-platform-stage/src/pages/Source/Sources.tsx b/debezium-platform-stage/src/pages/Source/Sources.tsx index c48b3e36..e20a1cec 100644 --- a/debezium-platform-stage/src/pages/Source/Sources.tsx +++ b/debezium-platform-stage/src/pages/Source/Sources.tsx @@ -76,6 +76,8 @@ const Sources: React.FunctionComponent = () => { } ); + + // Compute filtered results based on search query const searchResult = React.useMemo(() => { if (searchQuery.length === 0) { diff --git a/debezium-platform-stage/src/utils/sourceConfigSplit.test.ts b/debezium-platform-stage/src/utils/sourceConfigSplit.test.ts index 589a65a3..0b5807b5 100644 --- a/debezium-platform-stage/src/utils/sourceConfigSplit.test.ts +++ b/debezium-platform-stage/src/utils/sourceConfigSplit.test.ts @@ -93,8 +93,39 @@ describe("splitSourceConfigForHydration", () => { ); expect(out.additionalProps.get("addprop-0")).toEqual({ key: "custom.key", - value: "v", + valueKind: "string", + stringValue: "v", + booleanValue: false, + integerInput: "", }); expect(out.additionalKeyCount).toBe(1); }); + + it("routes boolean and integer keys into additionalProps with correct types", () => { + const out = splitSourceConfigForHydration( + { + "boolean.key": true, + "integer.key": 123 + }, + [], + ); + + expect(out.additionalProps.get("addprop-0")).toEqual({ + key: "boolean.key", + valueKind: "boolean", + stringValue: "", + booleanValue: true, + integerInput: "", + }); + + expect(out.additionalProps.get("addprop-1")).toEqual({ + key: "integer.key", + valueKind: "integer", + stringValue: "", + booleanValue: false, + integerInput: "123", + }); + + expect(out.additionalKeyCount).toBe(2); + }); }); diff --git a/debezium-platform-stage/src/utils/sourceConfigSplit.ts b/debezium-platform-stage/src/utils/sourceConfigSplit.ts index 9ac6e028..b674dbf4 100644 --- a/debezium-platform-stage/src/utils/sourceConfigSplit.ts +++ b/debezium-platform-stage/src/utils/sourceConfigSplit.ts @@ -1,4 +1,7 @@ -export type SourceConfigAdditionalRow = { key: string; value: string }; +import { + AdditionalPropertyRow, + additionalPropertyRowFromApiValue, +} from "./additionalConfigProperties"; export type SourceIncludeSelection = { schemas: string[]; @@ -7,7 +10,7 @@ export type SourceIncludeSelection = { export type SourceConfigHydrationSplit = { schemaValues: Record; - additionalProps: Map; + additionalProps: Map; signalCollectionName: string; selectedDataListItems: SourceIncludeSelection | undefined; additionalKeyCount: number; @@ -57,15 +60,14 @@ export function splitSourceConfigForHydration( const schemaNameSet = new Set(schemaPropertyNames); const schemaValues: Record = {}; - const additionalProps = new Map(); + const additionalProps = new Map(); let additionalIndex = 0; for (const [key, value] of Object.entries(cfg)) { - const str = stringifyConfigValue(value); if (schemaNameSet.has(key)) { - schemaValues[key] = str; + schemaValues[key] = stringifyConfigValue(value); } else { - additionalProps.set(`addprop-${additionalIndex}`, { key, value: str }); + additionalProps.set(`addprop-${additionalIndex}`, additionalPropertyRowFromApiValue(key, value)); additionalIndex += 1; } } @@ -83,3 +85,4 @@ export function splitSourceConfigForHydration( additionalKeyCount: additionalIndex, }; } + diff --git a/debezium-platform-stage/vite.config.ts b/debezium-platform-stage/vite.config.ts index 8a592254..63200d0c 100644 --- a/debezium-platform-stage/vite.config.ts +++ b/debezium-platform-stage/vite.config.ts @@ -5,7 +5,9 @@ import tsconfigPaths from 'vite-tsconfig-paths'; // https://vitejs.dev/config/ export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), ''); - const API_URL = env.CONDUCTOR_URL || 'http://localhost:8080'; + // const API_URL = env.CONDUCTOR_URL || 'http://localhost:8080'; +const API_URL = env.CONDUCTOR_URL || 'http://127.0.0.1:8080'; + const PORT = parseInt(env.VITE_PORT || '3000'); if (mode === 'development') { @@ -19,7 +21,7 @@ export default defineConfig(({ mode }) => { return { plugins: [react(), tsconfigPaths()], define: { - 'import.meta.env.CONDUCTOR_URL': JSON.stringify(API_URL), + 'import.meta.env.CONDUCTOR_URL': JSON.stringify(env.CONDUCTOR_URL || ''), }, server: { proxy: { @@ -36,6 +38,7 @@ export default defineConfig(({ mode }) => { }, test: { // 👋 add the line below to add jsdom to vite + testTimeout: 10000, include: ['src/**/*.test.{js,jsx,ts,tsx}'], exclude: ['node_modules', 'dist', 'build', 'src/stories/**'], environment: "jsdom", diff --git a/debezium-platform-stage/yarn.lock b/debezium-platform-stage/yarn.lock index 407d60a3..189dfb0d 100644 --- a/debezium-platform-stage/yarn.lock +++ b/debezium-platform-stage/yarn.lock @@ -9,7 +9,7 @@ "@asamuzakjp/css-color@^5.1.5": version "5.1.10" - resolved "https://registry.yarnpkg.com/@asamuzakjp/css-color/-/css-color-5.1.10.tgz#adbe1ce7fd785f2c6c2fc3af2fbc54342cf07154" + resolved "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-5.1.10.tgz" integrity sha512-02OhhkKtgNRuicQ/nF3TRnGsxL9wp0r3Y7VlKWyOHHGmGyvXv03y+PnymU8FKFJMTjIr1Bk8U2g1HWSLrpAHww== dependencies: "@csstools/css-calc" "^3.1.1" @@ -19,7 +19,7 @@ "@asamuzakjp/dom-selector@^7.0.6": version "7.0.9" - resolved "https://registry.yarnpkg.com/@asamuzakjp/dom-selector/-/dom-selector-7.0.9.tgz#6d672a18a4572a4f02de49b20793b3c99958e68f" + resolved "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-7.0.9.tgz" integrity sha512-r3ElRr7y8ucyN2KdICwGsmj19RoN13CLCa/pvGydghWK6ZzeKQ+TcDjVdtEZz2ElpndM5jXw//B9CEee0mWnVg== dependencies: "@asamuzakjp/nwsapi" "^2.3.9" @@ -32,25 +32,7 @@ resolved "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz" integrity sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q== -"@babel/code-frame@^7.10.4": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== - dependencies: - "@babel/helper-validator-identifier" "^7.27.1" - js-tokens "^4.0.0" - picocolors "^1.1.1" - -"@babel/code-frame@^7.28.6": - version "7.28.6" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz" - integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q== - dependencies: - "@babel/helper-validator-identifier" "^7.28.5" - js-tokens "^4.0.0" - picocolors "^1.1.1" - -"@babel/code-frame@^7.29.0": +"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": version "7.29.0" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz" integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== @@ -85,7 +67,7 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.28.6", "@babel/generator@^7.29.0": +"@babel/generator@^7.29.0": version "7.29.1" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz" integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== @@ -139,7 +121,7 @@ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": +"@babel/helper-validator-identifier@^7.28.5": version "7.28.5" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz" integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== @@ -157,21 +139,7 @@ "@babel/template" "^7.28.6" "@babel/types" "^7.28.6" -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz" - integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== - dependencies: - "@babel/types" "^7.28.5" - -"@babel/parser@^7.24.4", "@babel/parser@^7.28.6": - version "7.28.6" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz" - integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== - dependencies: - "@babel/types" "^7.28.6" - -"@babel/parser@^7.29.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.4", "@babel/parser@^7.28.5", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": version "7.29.0" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz" integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== @@ -194,7 +162,7 @@ "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.28.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3": version "7.29.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz" integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== "@babel/template@^7.28.6": @@ -206,20 +174,7 @@ "@babel/parser" "^7.28.6" "@babel/types" "^7.28.6" -"@babel/traverse@^7.18.9", "@babel/traverse@^7.28.6": - version "7.28.6" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz" - integrity sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg== - dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/generator" "^7.28.6" - "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.6" - "@babel/template" "^7.28.6" - "@babel/types" "^7.28.6" - debug "^4.3.1" - -"@babel/traverse@^7.29.0": +"@babel/traverse@^7.18.9", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": version "7.29.0" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz" integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== @@ -232,23 +187,7 @@ "@babel/types" "^7.29.0" debug "^4.3.1" -"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.28.2", "@babel/types@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz" - integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" - -"@babel/types@^7.28.6": - version "7.28.6" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz" - integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" - -"@babel/types@^7.29.0": +"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.28.2", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0": version "7.29.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz" integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== @@ -304,7 +243,7 @@ "@csstools/css-syntax-patches-for-csstree@^1.1.1": version "1.1.3" - resolved "https://registry.yarnpkg.com/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.3.tgz#3204cf40deb97db83e225b0baa9e37d9c3bd344d" + resolved "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.3.tgz" integrity sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg== "@csstools/css-tokenizer@^4.0.0": @@ -429,7 +368,7 @@ "@esbuild/darwin-arm64@0.25.12": version "0.25.12" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz#79197898ec1ff745d21c071e1c7cc3c802f0c1fd" integrity sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg== "@esbuild/darwin-x64@0.25.12": @@ -489,7 +428,7 @@ "@esbuild/linux-x64@0.25.12": version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz#0583775685ca82066d04c3507f09524d3cd7a306" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz" integrity sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw== "@esbuild/netbsd-arm64@0.25.12": @@ -537,16 +476,9 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz#9bdad8176be7811ad148d1f8772359041f46c6c5" integrity sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA== -"@eslint-community/eslint-utils@^4.8.0": - version "4.9.0" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz" - integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/eslint-utils@^4.9.1": +"@eslint-community/eslint-utils@^4.8.0", "@eslint-community/eslint-utils@^4.9.1": version "4.9.1" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz" integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== dependencies: eslint-visitor-keys "^3.4.3" @@ -614,12 +546,12 @@ "@exodus/bytes@^1.11.0", "@exodus/bytes@^1.15.0", "@exodus/bytes@^1.6.0": version "1.15.0" - resolved "https://registry.yarnpkg.com/@exodus/bytes/-/bytes-1.15.0.tgz#54479e0f406cbad024d6fe1c3190ecca4468df3b" + resolved "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.0.tgz" integrity sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ== "@faker-js/faker@^10.4.0": version "10.4.0" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-10.4.0.tgz#2dc84d1bc32a2eef3c4658985ca7692a0c5c51b3" + resolved "https://registry.npmjs.org/@faker-js/faker/-/faker-10.4.0.tgz" integrity sha512-sDBWI3yLy8EcDzgobvJTWq1MJYzAkQdpjXuPukga9wXonhpMRvd1Izuo2Qgwey2OiEoRIBr35RMU9HJRoOHzpw== "@gilbarbara/deep-equal@^0.3.1": @@ -877,7 +809,7 @@ "@patternfly/react-core@^6.0.0", "@patternfly/react-core@^6.4.1", "@patternfly/react-core@^6.4.3": version "6.4.3" - resolved "https://registry.yarnpkg.com/@patternfly/react-core/-/react-core-6.4.3.tgz#ce08ce1685a646eead45678b1728458f31578d08" + resolved "https://registry.npmjs.org/@patternfly/react-core/-/react-core-6.4.3.tgz" integrity sha512-CYf+DFmcV5LCTQh7ZNBhHgqaEbDKwKOxBB/3Si6xFn8fIH8h/Wj3ZHSm6rYslQS7dJUusqyv5gJ2dR9LixT3TA== dependencies: "@patternfly/react-icons" "^6.4.0" @@ -922,7 +854,7 @@ "@patternfly/react-table@^6.0.0", "@patternfly/react-table@^6.4.3": version "6.4.3" - resolved "https://registry.yarnpkg.com/@patternfly/react-table/-/react-table-6.4.3.tgz#1b99673c3f1c2cf92262f8b2d59e1ae80e95ccfc" + resolved "https://registry.npmjs.org/@patternfly/react-table/-/react-table-6.4.3.tgz" integrity sha512-lPHjVOEkJpCtXMtE48pLGwMmLsCgYJvoiZpuW2/Vlg0y0pmg0nfYUVDBBTXfQ3dgskn/zb5SAgZr158VQQoBtw== dependencies: "@patternfly/react-core" "^6.4.3" @@ -1039,7 +971,7 @@ "@rolldown/pluginutils@1.0.0-rc.7": version "1.0.0-rc.7" - resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.7.tgz#0414869467f0e471a6515d4f506c85fde867e022" + resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.7.tgz" integrity sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA== "@rollup/pluginutils@^5.0.2": @@ -1138,7 +1070,7 @@ "@rollup/rollup-linux-x64-gnu@4.60.1": version "4.60.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz#56a6a0d9076f2a05a976031493b24a20ddcc0e77" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz" integrity sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg== "@rollup/rollup-linux-x64-musl@4.60.1": @@ -1176,14 +1108,9 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz#23b860113e9f87eea015d1fa3a4240a52b42fcd4" integrity sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ== -"@standard-schema/spec@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz" - integrity sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA== - -"@standard-schema/spec@^1.1.0": +"@standard-schema/spec@^1.0.0", "@standard-schema/spec@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" + resolved "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz" integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== "@standard-schema/utils@^0.3.0": @@ -1269,7 +1196,7 @@ "@storybook/addon-links@^8.6.17": version "8.6.17" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-8.6.17.tgz#4e65bb09ebd2afa263a1318d84b300388740e837" + resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.6.17.tgz" integrity sha512-ch1GgXILEmekf81nUvmre3xyhlg5zDibRxm8+psPqj7GqzWBI5l4kAiha0XOBWGz6vQEL5xCvN/rr8rfA9kWdQ== dependencies: "@storybook/global" "^5.0.0" @@ -1285,7 +1212,7 @@ "@storybook/addon-onboarding@^8.6.17": version "8.6.17" - resolved "https://registry.yarnpkg.com/@storybook/addon-onboarding/-/addon-onboarding-8.6.17.tgz#a475d2c23e6778ce3025547137e692ce1101acb1" + resolved "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.6.17.tgz" integrity sha512-RNNWDxy9IjWMjlnKnOigOBOjNE3w8yfeZuTOVrpueKB+qNSc3zxM0uS569/+M0zgx1WYAApV69jD2MWnqWstDg== "@storybook/addon-outline@8.6.14": @@ -1332,7 +1259,7 @@ "@storybook/core@8.6.17": version "8.6.17" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-8.6.17.tgz#73af480521333e421413ffdda7a992b3c96b1afb" + resolved "https://registry.npmjs.org/@storybook/core/-/core-8.6.17.tgz" integrity sha512-lndZDYIvUddWk54HmgYwE4h2B0JtWt8ztIRAzHRt6ReZZ9QQbmM5b85Qpa+ng4dyQEKc2JAtYD3Du7RRFcpHlw== dependencies: "@storybook/theming" "8.6.17" @@ -1474,12 +1401,12 @@ "@storybook/theming@8.6.17": version "8.6.17" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.6.17.tgz#0175bbc22cdc262d171168af67fce6a5e3d76a7f" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.17.tgz" integrity sha512-IttFvRqozpuzN5MlQEWGOzUA2rZg86688Dyv1d+bjpYcFHtY1X4XyTCGwv1BPTaTsB959oM8R2yoNYWQkABbBA== "@swc/core-darwin-arm64@1.15.11": version "1.15.11" - resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.11.tgz" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.11.tgz#6f177125831b765e5dacdd1d8c07de576962ad16" integrity sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg== "@swc/core-darwin-x64@1.15.11": @@ -1504,7 +1431,7 @@ "@swc/core-linux-x64-gnu@1.15.11": version "1.15.11" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.11.tgz#4a1fce9b9abedde04459fefe5da9dd9e405a2ae8" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.11.tgz" integrity sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ== "@swc/core-linux-x64-musl@1.15.11": @@ -1625,7 +1552,7 @@ "@testing-library/react@^16.3.2": version "16.3.2" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.3.2.tgz#672883b7acb8e775fc0492d9e9d25e06e89786d0" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz" integrity sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g== dependencies: "@babel/runtime" "^7.12.5" @@ -1757,12 +1684,7 @@ dependencies: "@types/d3-dsv" "*" -"@types/d3-force@*": - version "3.0.10" - resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz" - integrity sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw== - -"@types/d3-force@^1.2.1": +"@types/d3-force@*", "@types/d3-force@^1.2.1": version "1.2.7" resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-1.2.7.tgz" integrity sha512-zySqZfnxn67RVEGWzpD9dQA0AbNIp4Rj0qGvAuUdUNfGLrwuGCbEGAGze5hEdNaHJKQT2gTqr6j+qAzncm11ew== @@ -1994,7 +1916,7 @@ "@typescript-eslint/eslint-plugin@^8.58.0": version "8.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz#ad40e492f1931f46da1bd888e52b9e56df9063aa" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz" integrity sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg== dependencies: "@eslint-community/regexpp" "^4.12.2" @@ -2008,7 +1930,7 @@ "@typescript-eslint/parser@^8.59.2": version "8.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.59.2.tgz#e2fd0084baa5dd0c24cd789af1c72cbc3a7a1c62" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.2.tgz" integrity sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ== dependencies: "@typescript-eslint/scope-manager" "8.59.2" @@ -2019,7 +1941,7 @@ "@typescript-eslint/project-service@8.58.0": version "8.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.58.0.tgz#66ceda0aabf7427aec3e2713fa43eb278dead2aa" + resolved "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz" integrity sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg== dependencies: "@typescript-eslint/tsconfig-utils" "^8.58.0" @@ -2028,7 +1950,7 @@ "@typescript-eslint/project-service@8.59.2": version "8.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.59.2.tgz#f8b8cbf8692e3a51c2c394acf8cf6900f7e755af" + resolved "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.2.tgz" integrity sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw== dependencies: "@typescript-eslint/tsconfig-utils" "^8.59.2" @@ -2037,7 +1959,7 @@ "@typescript-eslint/scope-manager@8.58.0": version "8.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz#e304142775e49a1b7ac3c8bf2536714447c72cab" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz" integrity sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ== dependencies: "@typescript-eslint/types" "8.58.0" @@ -2045,7 +1967,7 @@ "@typescript-eslint/scope-manager@8.59.2": version "8.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.59.2.tgz#63cbd0af2e3180949d6be81122cc555bc71e736d" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.2.tgz" integrity sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg== dependencies: "@typescript-eslint/types" "8.59.2" @@ -2053,17 +1975,17 @@ "@typescript-eslint/tsconfig-utils@8.58.0", "@typescript-eslint/tsconfig-utils@^8.58.0": version "8.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz#c5a8edb21f31e0fdee565724e1b984171c559482" + resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz" integrity sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A== "@typescript-eslint/tsconfig-utils@8.59.2", "@typescript-eslint/tsconfig-utils@^8.59.2": version "8.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.2.tgz#6e92bc412083753185a79c9f1431e78169d9232f" + resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.2.tgz" integrity sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw== "@typescript-eslint/type-utils@8.58.0": version "8.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz#ce0e72cd967ffbbe8de322db6089bd4374be352f" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz" integrity sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg== dependencies: "@typescript-eslint/types" "8.58.0" @@ -2072,19 +1994,19 @@ debug "^4.4.3" ts-api-utils "^2.5.0" -"@typescript-eslint/types@8.58.0": +"@typescript-eslint/types@8.58.0", "@typescript-eslint/types@^8.58.0": version "8.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.58.0.tgz#e94ae7abdc1c6530e71183c1007b61fa93112a5a" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz" integrity sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww== -"@typescript-eslint/types@8.59.2", "@typescript-eslint/types@^8.58.0", "@typescript-eslint/types@^8.59.2": +"@typescript-eslint/types@8.59.2", "@typescript-eslint/types@^8.59.2": version "8.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.59.2.tgz#01caabcd7e4715c33ad5e11cab260829714d6b9c" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.2.tgz" integrity sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q== "@typescript-eslint/typescript-estree@8.58.0": version "8.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz#ed233faa8e2f2a2e1357c3e7d553d6465a0ee59a" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz" integrity sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA== dependencies: "@typescript-eslint/project-service" "8.58.0" @@ -2099,7 +2021,7 @@ "@typescript-eslint/typescript-estree@8.59.2": version "8.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.2.tgz#6a217ef65b18dbd12c718fc86a675d1d7a1414cc" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.2.tgz" integrity sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg== dependencies: "@typescript-eslint/project-service" "8.59.2" @@ -2114,7 +2036,7 @@ "@typescript-eslint/utils@8.58.0", "@typescript-eslint/utils@^8.8.1": version "8.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.58.0.tgz#21a74a7963b0d288b719a4121c7dd555adaab3c3" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz" integrity sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA== dependencies: "@eslint-community/eslint-utils" "^4.9.1" @@ -2124,7 +2046,7 @@ "@typescript-eslint/visitor-keys@8.58.0": version "8.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz#2abd55a4be70fd55967aceaba4330b9ba9f45189" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz" integrity sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ== dependencies: "@typescript-eslint/types" "8.58.0" @@ -2132,7 +2054,7 @@ "@typescript-eslint/visitor-keys@8.59.2": version "8.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.2.tgz#5ccc486913cd347883d69158836b1189a660bfe6" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.2.tgz" integrity sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA== dependencies: "@typescript-eslint/types" "8.59.2" @@ -2140,7 +2062,7 @@ "@vitejs/plugin-react-swc@^4.3.0": version "4.3.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react-swc/-/plugin-react-swc-4.3.0.tgz#663db7650b1cb8b45e1e38b3c7d0f00b2d2d5d4c" + resolved "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-4.3.0.tgz" integrity sha512-mOkXCII839dHyAt/gpoSlm28JIVDwhZ6tnG6wJxUy2bmOx7UaPjvOyIDf3SFv5s7Eo7HVaq6kRcu6YMEzt5Z7w== dependencies: "@rolldown/pluginutils" "1.0.0-rc.7" @@ -2293,6 +2215,13 @@ acorn@^8.14.0, acorn@^8.15.0: resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + ajv@^6.14.0: version "6.14.0" resolved "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz" @@ -2315,7 +2244,7 @@ ajv@^8.18.0: ansi-escapes@^7.0.0: version "7.3.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-7.3.0.tgz#5395bb74b2150a4a1d6e3c2565f4aeca78d28627" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz" integrity sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg== dependencies: environment "^1.0.0" @@ -2325,7 +2254,7 @@ ansi-regex@^5.0.1: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-regex@^6.0.1, ansi-regex@^6.2.2: +ansi-regex@^6.0.1: version "6.2.2" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz" integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== @@ -2344,7 +2273,7 @@ ansi-styles@^5.0.0: ansi-styles@^6.2.1, ansi-styles@^6.2.3: version "6.2.3" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz" integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== arch@^2.2.0: @@ -2354,7 +2283,7 @@ arch@^2.2.0: arg@5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== argparse@^2.0.1: @@ -2362,18 +2291,13 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@5.3.0: +aria-query@5.3.0, aria-query@^5.0.0: version "5.3.0" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== dependencies: dequal "^2.0.3" -aria-query@^5.0.0: - version "5.3.2" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz" - integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== - array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz" @@ -2524,7 +2448,7 @@ aws4@^1.8.0: axios@^1.15.2: version "1.15.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.15.2.tgz#eb8fb6d30349abace6ade5b4cb4d9e8a0dc23e5b" + resolved "https://registry.npmjs.org/axios/-/axios-1.15.2.tgz" integrity sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A== dependencies: follow-redirects "^1.15.11" @@ -2532,12 +2456,13 @@ axios@^1.15.2: proxy-from-env "^2.1.0" axios@^1.16.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.16.0.tgz#f8e5dd931cef2a5f8c32216d5784eda2f8750eb7" - integrity sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w== + version "1.16.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.16.1.tgz#517e29291d19d6e8cf919ff264f4fe157261ba12" + integrity sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A== dependencies: follow-redirects "^1.16.0" form-data "^4.0.5" + https-proxy-agent "^5.0.1" proxy-from-env "^2.1.0" balanced-match@^1.0.0: @@ -2656,7 +2581,7 @@ buffer@^5.7.1: cachedir@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d" + resolved "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz" integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ== call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: @@ -2749,7 +2674,7 @@ chromatic@^11.15.0: chromatic@^16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-16.2.0.tgz#cf7a94648d6acc7552272517119c89477ab9725f" + resolved "https://registry.npmjs.org/chromatic/-/chromatic-16.2.0.tgz" integrity sha512-yFUC0iCumsw5JDQPmrNAgYuln25HRh79iGdJgm+dj87lv7kFatlRBgRcw8Kmzdw1si3qzGlzu36aCABS7Wg5aQ== ci-info@^4.1.0: @@ -2764,7 +2689,7 @@ classcat@^5.0.3, classcat@^5.0.4: cli-cursor@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz" integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw== dependencies: restore-cursor "^5.0.0" @@ -2780,7 +2705,7 @@ cli-table3@0.6.1: cli-truncate@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-5.2.0.tgz#c8e72aaca8339c773d128c36e0a17c6315b694eb" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz" integrity sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw== dependencies: slice-ansi "^8.0.0" @@ -2814,7 +2739,7 @@ color-name@~1.1.4: colorette@^2.0.20: version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== colors@1.4.0: @@ -2866,7 +2791,7 @@ core-util-is@1.0.2: cross-fetch@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.1.0.tgz#8f69355007ee182e47fa692ecbaa37a52e43c3d2" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz" integrity sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw== dependencies: node-fetch "^2.7.0" @@ -2891,7 +2816,7 @@ css-jss@10.10.0: css-tree@^3.0.0, css-tree@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-3.2.1.tgz#86cac7011561272b30e6b1e042ba6ce047aa7518" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz" integrity sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA== dependencies: mdn-data "2.27.1" @@ -2917,7 +2842,7 @@ csstype@^3.0.2, csstype@^3.2.2: cypress@^15.14.2: version "15.14.2" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-15.14.2.tgz#3890ec5a2340480ec055732cd28cf9983ea846e9" + resolved "https://registry.npmjs.org/cypress/-/cypress-15.14.2.tgz" integrity sha512-xMWg/iEImeIThRQZdnf3BFJT1a84apM/R91Feoa4vVWGuYWDphMT5jLhRVTBVlCgi+6axegF1zqhNyjhug2SsQ== dependencies: "@cypress/request" "^3.0.10" @@ -3292,7 +3217,7 @@ dayjs@^1.10.4: resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz" integrity sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw== -debug@4.4.3, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.3: +debug@4, debug@4.4.3, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.3: version "4.4.3" resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -3436,7 +3361,7 @@ electron-to-chromium@^1.5.263: emoji-regex@^10.3.0: version "10.6.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.6.0.tgz#bf3d6e8f7f8fd22a65d9703475bc0147357a6b0d" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz" integrity sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A== emoji-regex@^8.0.0: @@ -3458,7 +3383,7 @@ entities@^6.0.0: environment@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" + resolved "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz" integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0: @@ -3709,7 +3634,7 @@ eslint-visitor-keys@^4.2.1: eslint-visitor-keys@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz#9e3c9489697824d2d4ce3a8ad12628f91e9f59be" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz" integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== eslint@^9.8.0: @@ -3809,7 +3734,7 @@ eventemitter2@6.4.7: eventemitter3@^5.0.1: version "5.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz" integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw== execa@4.1.0: @@ -3892,7 +3817,7 @@ fast-levenshtein@^2.0.6: fast-uri@^3.0.1: version "3.1.2" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.2.tgz#8af3d4fc9d3e71b11572cc2673b514a7d1a8c8ec" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz" integrity sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ== fd-slicer@~1.1.0: @@ -3944,7 +3869,7 @@ flat-cache@^4.0.0: flatted@^3.2.9: version "3.4.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.4.2.tgz#f5c23c107f0f37de8dbdf24f13722b3b98d52726" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz" integrity sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA== focus-trap@7.6.4: @@ -3956,7 +3881,7 @@ focus-trap@7.6.4: follow-redirects@^1.15.11, follow-redirects@^1.16.0: version "1.16.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.16.0.tgz#28474a159d3b9d11ef62050a14ed60e4df6d61bc" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz" integrity sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw== for-each@^0.3.3, for-each@^0.3.5: @@ -4007,7 +3932,7 @@ fs.realpath@^1.0.0: fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.2: @@ -4049,7 +3974,7 @@ get-caller-file@^2.0.5: get-east-asian-width@^1.0.0, get-east-asian-width@^1.3.1, get-east-asian-width@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz#ce7008fe345edcf5497a6f557cfa54bc318a9ce7" + resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz" integrity sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA== get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: @@ -4278,6 +4203,14 @@ http-signature@~1.4.0: jsprim "^2.0.2" sshpk "^1.18.0" +https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" @@ -4295,22 +4228,22 @@ hyphenate-style-name@^1.0.3: i18next-browser-languagedetector@^8.2.1: version "8.2.1" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.2.1.tgz#f17a918d376a97aa12a5b63fd8ea559a6231935b" + resolved "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.2.1.tgz" integrity sha512-bZg8+4bdmaOiApD7N7BPT9W8MLZG+nPTOFlLiJiT8uzKXFjhxw4v2ierCXOwB5sFDMtuA5G4kgYZ0AznZxQ/cw== dependencies: "@babel/runtime" "^7.23.2" i18next-http-backend@^3.0.6: version "3.0.6" - resolved "https://registry.yarnpkg.com/i18next-http-backend/-/i18next-http-backend-3.0.6.tgz#653f298ebdea94bb70d30f46cf03dd2ec71167e4" + resolved "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-3.0.6.tgz" integrity sha512-mBOqy8993jtqAoj6XaI1XeC/8/9v6EPS+681ziegrPvTB0DoaCY7PpTS0SpY56qLMoS4OI1TZEM2Zf59zNh05w== dependencies: cross-fetch "4.1.0" i18next@^26.1.0: - version "26.1.0" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-26.1.0.tgz#b0e7e2a3a87554781038899299658b1b5d678cb6" - integrity sha512-dIU6td04DvQuIqVst5S9g0GviTmhZ0DYD4b9ociVGJmuCa5vZ2de/t+Enf4olvj87mF8Y2lwjNQBwC9QZsvzKQ== + version "26.2.0" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-26.2.0.tgz#4dc31d5ada1495f6884851f7c7a3fb6a36f23794" + integrity sha512-zwBHldHdTmwN7r6UNc7lC6GWNN+YYg3DrRSeHR5PRRBf5QnJZcYHrQc0uaU26qZeYxR7iFZD+Y315dPnKP47wA== iconv-lite@0.6: version "0.6.3" @@ -4331,7 +4264,7 @@ ignore@^5.2.0: ignore@^7.0.5: version "7.0.5" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz" integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== import-fresh@^3.2.1: @@ -4480,7 +4413,7 @@ is-fullwidth-code-point@^3.0.0: is-fullwidth-code-point@^5.0.0, is-fullwidth-code-point@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz#046b2a6d4f6b156b2233d3207d4b5a9783999b98" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz" integrity sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ== dependencies: get-east-asian-width "^1.3.1" @@ -4724,7 +4657,7 @@ joi@^18.2.1: jotai@^2.19.1: version "2.19.1" - resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.19.1.tgz#55eee3e6e04ce6ad34a9006b1df603215d8e9919" + resolved "https://registry.npmjs.org/jotai/-/jotai-2.19.1.tgz" integrity sha512-sqm9lVZiqBHZH8aSRk32DSiZDHY3yUIlulXYn9GQj7/LvoUdYXSMti7ZPJGo+6zjzKFt5a25k/I6iBCi43PJcw== js-sha3@0.8.0: @@ -4761,7 +4694,7 @@ jsdoc-type-pratt-parser@^4.0.0: jsdom@^29.0.2: version "29.0.2" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-29.0.2.tgz#1fc2cf4175da8de29fa94bea7ca931a194729fc3" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-29.0.2.tgz" integrity sha512-9VnGEBosc/ZpwyOsJBCQ/3I5p7Q5ngOY14a9bf5btenAORmZfDse1ZEheMiWcJ3h81+Fv7HmJFdS0szo/waF2w== dependencies: "@asamuzakjp/css-color" "^5.1.5" @@ -5011,7 +4944,7 @@ levn@^0.4.1: listr2@^9.0.5: version "9.0.5" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-9.0.5.tgz#92df7c4416a6da630eb9ef46da469b70de97b316" + resolved "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz" integrity sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g== dependencies: cli-truncate "^5.0.0" @@ -5040,7 +4973,7 @@ lodash.once@^4.1.1: lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.23, lodash@^4.18.1: version "4.18.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz" integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q== log-symbols@^4.0.0: @@ -5053,7 +4986,7 @@ log-symbols@^4.0.0: log-update@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.1.0.tgz#1a04ff38166f94647ae1af562f4bd6a15b1b7cd4" + resolved "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz" integrity sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w== dependencies: ansi-escapes "^7.0.0" @@ -5081,7 +5014,7 @@ lru-cache@^10.2.0: lru-cache@^11.2.7: version "11.3.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.3.5.tgz#29047d348c0b2793e3112a01c739bb7c6d855637" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz" integrity sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw== lru-cache@^5.1.1: @@ -5132,9 +5065,9 @@ map-or-similar@^1.5.0: integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== match-sorter@^6.0.2: - version "6.4.0" - resolved "https://registry.npmjs.org/match-sorter/-/match-sorter-6.4.0.tgz" - integrity sha512-d4664ahzdL1QTTvmK1iI0JsrxWeJ6gn33qkYtnPg3mcn+naBLtXSgSPOe+X2vUgtgGwaAk3eiaj7gwKjjMAq+Q== + version "6.3.4" + resolved "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.4.tgz" + integrity sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg== dependencies: "@babel/runtime" "^7.23.8" remove-accents "0.5.0" @@ -5146,7 +5079,7 @@ math-intrinsics@^1.1.0: mdn-data@2.27.1: version "2.27.1" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.27.1.tgz#e37b9c50880b75366c4d40ac63d9bbcacdb61f0e" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz" integrity sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ== memoize-one@^5.1.0: @@ -5190,7 +5123,7 @@ mimic-fn@^2.1.0: mimic-function@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" + resolved "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz" integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== min-indent@^1.0.0: @@ -5200,7 +5133,7 @@ min-indent@^1.0.0: minimatch@^10.2.2: version "10.2.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz" integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg== dependencies: brace-expansion "^5.0.2" @@ -5253,7 +5186,7 @@ ms@^2.1.1, ms@^2.1.3: msw@^2.13.1: version "2.13.1" - resolved "https://registry.yarnpkg.com/msw/-/msw-2.13.1.tgz#f9b7f32a7d6e082d172e459205808f17b2da5020" + resolved "https://registry.npmjs.org/msw/-/msw-2.13.1.tgz" integrity sha512-4wjFzJ+osaUDS2OakrXSl5tCFBUbzsaHbi5QRycRtVciOuYmnWn16CpNxcqh3UyslFkHbzKaj/GfYr7Hn67QPQ== dependencies: "@inquirer/confirm" "^5.0.0" @@ -5299,7 +5232,7 @@ natural-compare@^1.4.0: node-fetch@^2.7.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" @@ -5399,7 +5332,7 @@ onetime@^5.1.0, onetime@^5.1.2: onetime@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60" + resolved "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz" integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== dependencies: mimic-function "^5.0.0" @@ -5537,7 +5470,7 @@ picocolors@1.1.1, picocolors@^1.1.1: picomatch@^4.0.2, picomatch@^4.0.3, picomatch@^4.0.4: version "4.0.4" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz" integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== pify@^2.2.0: @@ -5567,9 +5500,9 @@ possible-typed-array-names@^1.0.0: resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz" integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== -postcss@^8.5.3, postcss@^8.5.6: +postcss@^8.5.3: version "8.5.12" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.12.tgz#cd0c0f667f7cb0521e2313234ea6e707a9ec1ddb" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz" integrity sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA== dependencies: nanoid "^3.3.11" @@ -5621,7 +5554,7 @@ proxy-from-env@1.0.0: proxy-from-env@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-2.1.0.tgz#a7487568adad577cfaaa7e88c49cab3ab3081aba" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz" integrity sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA== pump@^3.0.0: @@ -5728,12 +5661,12 @@ react-floater@^0.9.5-4: react-hook-form@^7.73.1: version "7.73.1" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.73.1.tgz#ddd1a27cae48f6095529f6e2e0c581daaca5462a" + resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.73.1.tgz" integrity sha512-VAfVYOPcx3piiEVQy95vyFmBwbVUsP/AUIN+mpFG8h11yshDd444nn0VyfaGWSRnhOLVgiDu7HIuBtAIzxn9dA== react-i18next@^16.5.8: version "16.5.8" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-16.5.8.tgz#fa598be2670f842749d4db9929b939b3a9526e21" + resolved "https://registry.npmjs.org/react-i18next/-/react-i18next-16.5.8.tgz" integrity sha512-2ABeHHlakxVY+LSirD+OiERxFL6+zip0PaHo979bgwzeHg27Sqc82xxXWIrSFmfWX0ZkrvXMHwhsi/NGUf5VQg== dependencies: "@babel/runtime" "^7.28.4" @@ -5809,14 +5742,14 @@ react-refresh@^0.18.0: react-router-dom@^7.14.2: version "7.14.2" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-7.14.2.tgz#0b043c1534fe58596771b82a318a7e4c2e5f1279" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.14.2.tgz" integrity sha512-YZcM5ES8jJSM+KrJ9BdvHHqlnGTg5tH3sC5ChFRj4inosKctdyzBDhOyyHdGk597q2OT6NTrCA1OvB/YDwfekQ== dependencies: react-router "7.14.2" react-router@7.14.2: version "7.14.2" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.14.2.tgz#d86e5b01049365b2c982363ebd2baa4928824603" + resolved "https://registry.npmjs.org/react-router/-/react-router-7.14.2.tgz" integrity sha512-yCqNne6I8IB6rVCH7XUvlBK7/QKyqypBFGv+8dj4QBFJiiRX+FG7/nkdAvGElyvVZ/HQP5N19wzteuTARXi5Gw== dependencies: cookie "^1.0.1" @@ -5936,7 +5869,7 @@ resolve@^2.0.0-next.5: restore-cursor@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-5.1.0.tgz#0766d95699efacb14150993f55baf0953ea1ebe7" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz" integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA== dependencies: onetime "^7.0.0" @@ -5949,7 +5882,7 @@ rettime@^0.10.1: rfdc@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz" integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== rimraf@3.0.2: @@ -5964,9 +5897,9 @@ robust-predicates@^3.0.2: resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz" integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== -rollup@^4.34.9, rollup@^4.43.0: +rollup@^4.34.9: version "4.60.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.60.1.tgz#b4aa2bcb3a5e1437b5fad40d43fe42d4bde7a42d" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz" integrity sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w== dependencies: "@types/estree" "1.0.8" @@ -6190,7 +6123,7 @@ signal-exit@^4.0.1, signal-exit@^4.1.0: slice-ansi@^7.1.0: version "7.1.2" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.2.tgz#adf7be70aa6d72162d907cd0e6d5c11f507b5403" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz" integrity sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w== dependencies: ansi-styles "^6.2.1" @@ -6198,7 +6131,7 @@ slice-ansi@^7.1.0: slice-ansi@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-8.0.0.tgz#22d0b66d18bc5c57f488bfcf36cbde3bef731537" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz" integrity sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg== dependencies: ansi-styles "^6.2.3" @@ -6235,9 +6168,9 @@ stackback@0.0.2: integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== start-server-and-test@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-3.0.4.tgz#621530bd38aa5fd403ff20cb8606aa8fc79ee7fe" - integrity sha512-y9j+VvFW5SH8deed5GvyNQs8gk8t8TJRDZYBvEPhCwdr/VhISvVvyamMNcNV4h9PxOptPGgPigb6yz4C67O1Qw== + version "3.0.5" + resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-3.0.5.tgz#b8b7a132ff192934975df90a87549cb40209fbba" + integrity sha512-2SvI2UR+rVM4FQ3GqEnjjfVATln6JgJGsZjRRyAqgl1EI6fJFH5zVCawqJLcmU9vBxwI0ZX9i3M+GFpY+sxWcw== dependencies: arg "5.0.2" bluebird "3.7.2" @@ -6246,7 +6179,7 @@ start-server-and-test@^3.0.4: execa "5.1.1" lazy-ass "1.6.0" tree-kill "1.2.2" - wait-on "9.0.6" + wait-on "9.0.10" state-local@^1.0.6: version "1.0.7" @@ -6273,7 +6206,7 @@ stop-iteration-iterator@^1.1.0: storybook@^8.6.17: version "8.6.17" - resolved "https://registry.yarnpkg.com/storybook/-/storybook-8.6.17.tgz#56299bf9e58622bb834fb100eac89c15f7d0de98" + resolved "https://registry.npmjs.org/storybook/-/storybook-8.6.17.tgz" integrity sha512-krR/l680A6qVnkGiK9p8jY0ucX3+kFCs2f4zw+S3w2Cdq8EiM/tFebPcX2V4S3z2UsO0v0dwAJOJNpzbFPdmVg== dependencies: "@storybook/core" "8.6.17" @@ -6294,7 +6227,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: string-width@^7.0.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.2.0.tgz#b5bb8e2165ce275d4d43476dd2700ad9091db6dc" + resolved "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz" integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== dependencies: emoji-regex "^10.3.0" @@ -6303,7 +6236,7 @@ string-width@^7.0.0: string-width@^8.2.0: version "8.2.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-8.2.1.tgz#165089cfa527cc88fbc23dd73313f5e334af1ea1" + resolved "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz" integrity sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA== dependencies: get-east-asian-width "^1.5.0" @@ -6375,20 +6308,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.1.0: +strip-ansi@^7.1.0, strip-ansi@^7.1.2: version "7.1.2" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz" integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== dependencies: ansi-regex "^6.0.1" -strip-ansi@^7.1.2: - version "7.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.2.0.tgz#d22a269522836a627af8d04b5c3fd2c7fa3e32e3" - integrity sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w== - dependencies: - ansi-regex "^6.2.2" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" @@ -6502,7 +6428,7 @@ tinyexec@^1.0.2: tinyglobby@^0.2.13, tinyglobby@^0.2.15: version "0.2.16" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.16.tgz#1c3b7eb953fce42b226bc5a1ee06428281aff3d6" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz" integrity sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg== dependencies: fdir "^6.5.0" @@ -6566,7 +6492,7 @@ tough-cookie@^5.0.0: tough-cookie@^6.0.0, tough-cookie@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-6.0.1.tgz#a495f833836609ed983c19bc65639cfbceb54c76" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz" integrity sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw== dependencies: tldts "^7.0.5" @@ -6606,7 +6532,7 @@ tree-kill@1.2.2: ts-api-utils@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.5.0.tgz#4acd4a155e22734990a5ed1fe9e97f113bcb37c1" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz" integrity sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA== ts-dedent@^2.0.0, ts-dedent@^2.2.0: @@ -6751,7 +6677,7 @@ undici-types@~7.16.0: undici@^7.24.5: version "7.25.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-7.25.0.tgz#7d72fc429a0421769ca2966fd07cac875c85b781" + resolved "https://registry.npmjs.org/undici/-/undici-7.25.0.tgz" integrity sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ== universalify@^2.0.0: @@ -6818,7 +6744,7 @@ util@^0.12.5: uuid@^14.0.0: version "14.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-14.0.0.tgz#0af883220163d264ffe0c084f6b8a89b9666966d" + resolved "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz" integrity sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg== uuid@^8.3.2: @@ -7149,23 +7075,9 @@ vite-tsconfig-paths@^6.1.1: globrex "^0.1.2" tsconfck "^3.0.3" -"vite@^6.0.0 || ^7.0.0": - version "7.2.6" - resolved "https://registry.npmjs.org/vite/-/vite-7.2.6.tgz" - integrity sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ== - dependencies: - esbuild "^0.25.0" - fdir "^6.5.0" - picomatch "^4.0.3" - postcss "^8.5.6" - rollup "^4.43.0" - tinyglobby "^0.2.15" - optionalDependencies: - fsevents "~2.3.3" - -vite@^6.4.2: +"vite@^6.0.0 || ^7.0.0", vite@^6.4.2: version "6.4.2" - resolved "https://registry.yarnpkg.com/vite/-/vite-6.4.2.tgz#a4e548ca3a90ca9f3724582cab35e1ba15efc6f2" + resolved "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz" integrity sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ== dependencies: esbuild "^0.25.0" @@ -7215,10 +7127,10 @@ w3c-xmlserializer@^5.0.0: dependencies: xml-name-validator "^5.0.0" -wait-on@9.0.6: - version "9.0.6" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-9.0.6.tgz#21ede653d9cb41a6283c4f0b46de1cbbdb342d5e" - integrity sha512-KR+Te+NBg6DmPVil4anyIO72mpt/QDHjRo3nVFkwRgb26oweUp3DDW2szO3EeUY4cqafWy4rQuOOeEk4n+7Oeg== +wait-on@9.0.10: + version "9.0.10" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-9.0.10.tgz#9c73ad1908b8e46e853e1271b2c9563f2c2d8e02" + integrity sha512-rCoJEhvMr0X6alHmwc9abbrA5ZrLZFKpFQVKPNFwl2h7DapXOGdmimIHDtLOWhT4PjhZhxFEtZoQgEXbkDWdZw== dependencies: axios "^1.16.0" joi "^18.2.1" @@ -7366,7 +7278,7 @@ wrap-ansi@^7.0.0: wrap-ansi@^9.0.0: version "9.0.2" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.2.tgz#956832dea9494306e6d209eb871643bb873d7c98" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz" integrity sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww== dependencies: ansi-styles "^6.2.1"