diff --git a/packages/hfr/_category_.yml b/packages/hfr/_category_.yml new file mode 100644 index 000000000..4e3bd40e5 --- /dev/null +++ b/packages/hfr/_category_.yml @@ -0,0 +1,4 @@ +label: '@hfr/' +link: + type: generated-index + title: '@hfr/ Packages' diff --git a/packages/hfr/circuit/README.mdx b/packages/hfr/circuit/README.mdx new file mode 100644 index 000000000..8a771309a --- /dev/null +++ b/packages/hfr/circuit/README.mdx @@ -0,0 +1,16 @@ +--- +page_id: 980c75ef-0868-422e-9578-5ce228a48a0a +--- + +import DynamicDocumentRoots from '@tdev-components/documents/DynamicDocumentRoots'; +import BrowserWindow from '@tdev-components/BrowserWindow'; + +# Schaltkreise + +```mdx + +``` + + + + \ No newline at end of file diff --git a/packages/hfr/circuit/components/Circuit.tsx b/packages/hfr/circuit/components/Circuit.tsx new file mode 100644 index 000000000..62279dfe5 --- /dev/null +++ b/packages/hfr/circuit/components/Circuit.tsx @@ -0,0 +1,195 @@ +import clsx from 'clsx'; + +import { observer } from 'mobx-react-lite'; +import styles from './styles.module.scss'; +import React from 'react'; +import PermissionsPanel from '@tdev-components/PermissionsPanel'; +import { Background, ReactFlow, MiniMap, Controls, Panel, useReactFlow } from '@xyflow/react'; +import type { + OnConnect, + Edge, + OnEdgesChange, + OnNodesChange, + Node, + OnReconnect, + FinalConnectionState, + HandleType, + OnNodesDelete +} from '@xyflow/react'; + +import '@xyflow/react/dist/style.css'; +import { mdiCarBattery, mdiElectricSwitch, mdiLedOn } from '@mdi/js'; +import Button from '@tdev-components/shared/Button'; +import { useStore } from '@tdev-hooks/useStore'; +import { nodeTypes } from './Nodes'; +import { NodeType } from '@hfr/circuit'; +import { DynamicRoomProps } from '@tdev-stores/ComponentStore'; +import { useCopyPaste } from './hooks/useCopyPaste'; +import CircuitRoom from '../models/CircuitRoom'; + +type OnReconnectEnd = ( + event: MouseEvent | TouchEvent, + edge: Edge, + handleType: HandleType, + connectionState: FinalConnectionState +) => void; + +type OnReconnectStart = (event: React.MouseEvent, edge: Edge, handleType: HandleType) => void; + +const Circuit = observer((props: DynamicRoomProps<'circuit'>): React.ReactNode => { + const { dynamicRoot } = props; + const documentStore = useStore('documentStore'); + useCopyPaste(dynamicRoot.room); + const edgeReconnectSuccessful = React.useRef(true); + const onChange = React.useCallback>( + (change) => { + dynamicRoot.room!.onNodesChange(change); + }, + [dynamicRoot.room] + ); + const onChangeEdge = React.useCallback>( + (change) => { + dynamicRoot.room!.onEdgeChange(change); + }, + [dynamicRoot.room] + ); + const onConnect = React.useCallback( + (connection) => { + dynamicRoot.room!.onConnect(connection); + }, + [dynamicRoot.room] + ); + const onNodesDelete = React.useCallback( + (deleted) => { + edgeReconnectSuccessful.current = true; + dynamicRoot.room!.onDelete(deleted); + }, + [dynamicRoot.room] + ); + const onReconnectStart = React.useCallback(() => { + edgeReconnectSuccessful.current = false; + }, []); + + const onReconnect = React.useCallback( + (oldEdge, newConnection) => { + edgeReconnectSuccessful.current = true; + dynamicRoot.room!.reconnectEdge(oldEdge.id, newConnection); + }, + [dynamicRoot.room] + ); + + const onReconnectEnd = React.useCallback((_, edge) => { + if (!edgeReconnectSuccessful.current) { + const doc = documentStore.find(edge.id); + if (doc) { + documentStore.apiDelete(doc); + } + } + + edgeReconnectSuccessful.current = true; + }, []); + if (!dynamicRoot || !dynamicRoot.room) { + return null; + } + + return ( +
+
+

+ {dynamicRoot.name} +

+
+ + + + +
+
+
+ ); +}); +export default Circuit; diff --git a/packages/hfr/circuit/components/Nodes/And/index.tsx b/packages/hfr/circuit/components/Nodes/And/index.tsx new file mode 100644 index 000000000..a5981d84f --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/And/index.tsx @@ -0,0 +1,51 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import shared from '../styles.module.scss'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '@tdev-hooks/useStore'; +import { Handle, Node, NodeProps, Position } from '@xyflow/react'; +import FlowNode from '@hfr/circuit/models/FlowNode'; +import { NodeType } from '@hfr/circuit'; +import NodeWrapper from '../NodeWrapper'; +import AndGate from '../assets/Gate-AND.svg'; + +export type AndNode = Node<{}, 'AndNode'>; + +const AndNode = observer((props: NodeProps) => { + const documentStore = useStore('documentStore'); + const doc = documentStore.find(props.id) as FlowNode | undefined; + if (!doc) { + return null; + } + return ( + + + AND + + + + + ); +}); + +export default AndNode; diff --git a/packages/hfr/circuit/components/Nodes/And/styles.module.scss b/packages/hfr/circuit/components/Nodes/And/styles.module.scss new file mode 100644 index 000000000..9bf482e87 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/And/styles.module.scss @@ -0,0 +1,4 @@ +.and { + width: 60px; + height: 40px; +} diff --git a/packages/hfr/circuit/components/Nodes/Battery/index.tsx b/packages/hfr/circuit/components/Nodes/Battery/index.tsx new file mode 100644 index 000000000..57f44ada4 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/Battery/index.tsx @@ -0,0 +1,68 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import shared from '../styles.module.scss'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '@tdev-hooks/useStore'; +import { Handle, Node, NodeProps, Position, useUpdateNodeInternals } from '@xyflow/react'; +import { mdiCarBattery, mdiMinusCircle, mdiPlusCircle } from '@mdi/js'; +import FlowNode from '@hfr/circuit/models/FlowNode'; +import { NodeType } from '@hfr/circuit'; +import Icon from '@mdi/react'; +import Button from '@tdev-components/shared/Button'; +import NodeWrapper from '../NodeWrapper'; + +export type BatteryNode = Node<{}, 'BatteryNode'>; + +const BatteryNode = observer((props: NodeProps) => { + const documentStore = useStore('documentStore'); + const updateNodeInternals = useUpdateNodeInternals(); + const doc = documentStore.find(props.id) as FlowNode | undefined; + if (!doc) { + return null; + } + const pins = doc?.deriver.pins ?? 3; + return ( + + + + {Array.from({ length: pins }).map((_, i) => ( + + ))} +
+
+
+ ); +}); + +export default BatteryNode; diff --git a/packages/hfr/circuit/components/Nodes/Battery/styles.module.scss b/packages/hfr/circuit/components/Nodes/Battery/styles.module.scss new file mode 100644 index 000000000..9f3b4ed73 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/Battery/styles.module.scss @@ -0,0 +1,20 @@ +.battery { + .ground { + position: absolute; + border-top: 1px solid var(--ifm-color-danger); + width: var(--data-width); + bottom: 5px; + margin-top: -1px; + margin-left: 6px; + .pin { + position: absolute; + bottom: -22px; + &.pinAdd { + right: -30px; + } + &.pinRemove { + right: 15px; + } + } + } +} diff --git a/packages/hfr/circuit/components/Nodes/DecimalDisplay/index.tsx b/packages/hfr/circuit/components/Nodes/DecimalDisplay/index.tsx new file mode 100644 index 000000000..d3f044495 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/DecimalDisplay/index.tsx @@ -0,0 +1,80 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import shared from '../styles.module.scss'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '@tdev-hooks/useStore'; +import { Handle, Node, NodeProps, Position, useUpdateNodeInternals } from '@xyflow/react'; +import FlowNode from '@hfr/circuit/models/FlowNode'; +import { NodeType } from '@hfr/circuit'; +import Button from '@tdev-components/shared/Button'; +import { mdiMinusCircle, mdiPlusCircle } from '@mdi/js'; +import NodeWrapper from '../NodeWrapper'; + +export type DecimalDisplayNode = Node<{}, 'DecimalDisplayNode'>; + +const PIN_HEIGHT = 20; + +const DecimalDisplayNode = observer((props: NodeProps) => { + const documentStore = useStore('documentStore'); + const updateNodeInternals = useUpdateNodeInternals(); + const doc = documentStore.find(props.id) as FlowNode | undefined; + if (!doc) { + return null; + } + const pins = doc.deriver.pins; + return ( + +
+ {Array.from({ length: pins }).map((_, i) => { + const handle = i === 0 ? 'a' : i === 1 ? 'b' : `p${i}`; + const edge = doc.edgesIn.find((e) => e.flowData.targetHandle === handle); + return ( + 0 && shared.on + )} + style={{ + top: `${pins * PIN_HEIGHT - 9 - i * PIN_HEIGHT}px`, + ['--data-label' as any]: `"${1 << i}"` //`"2^${i}"` + }} + /> + ); + })} +
+
+
+
+ ); +}); + +export default DecimalDisplayNode; diff --git a/packages/hfr/circuit/components/Nodes/DecimalDisplay/styles.module.scss b/packages/hfr/circuit/components/Nodes/DecimalDisplay/styles.module.scss new file mode 100644 index 000000000..14f335724 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/DecimalDisplay/styles.module.scss @@ -0,0 +1,37 @@ +.decimal { + display: flex; + width: 40px; + height: var(--data-size); + align-items: center; + justify-content: space-between; + border: 1px solid var(--ifm-font-color-base); + border-radius: var(--ifm-global-radius); + .pins { + display: flex; + flex-direction: row; + .pin { + &::after { + content: var(--data-label, '2'); + font-size: 20%; + position: absolute; + top: -3px; + left: 8px; + } + } + } + .valueContainer { + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + .pinBtn { + opacity: 0.2; + transition: opacity 0.3s ease; + } + &:hover { + .pinBtn { + opacity: 1; + } + } + } +} diff --git a/packages/hfr/circuit/components/Nodes/Led/index.tsx b/packages/hfr/circuit/components/Nodes/Led/index.tsx new file mode 100644 index 000000000..7b7de77cd --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/Led/index.tsx @@ -0,0 +1,47 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import shared from '../styles.module.scss'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '@tdev-hooks/useStore'; +import { Handle, Node, NodeProps, Position } from '@xyflow/react'; +import { mdiLedOff, mdiLedOn } from '@mdi/js'; +import FlowNode from '@hfr/circuit/models/FlowNode'; +import { NodeType } from '@hfr/circuit'; +import Icon from '@mdi/react'; +import NodeWrapper from '../NodeWrapper'; + +export type LedNode = Node<{}, 'LedNode'>; + +const LedNode = observer((props: NodeProps) => { + const documentStore = useStore('documentStore'); + const doc = documentStore.find(props.id) as FlowNode | undefined; + const isPowered = doc?.inputEdgeA ? doc?.deriver.power : 0; + if (!doc) { + return null; + } + return ( + + + + + + ); +}); + +export default LedNode; diff --git a/packages/hfr/circuit/components/Nodes/Led/styles.module.scss b/packages/hfr/circuit/components/Nodes/Led/styles.module.scss new file mode 100644 index 000000000..e69de29bb diff --git a/packages/hfr/circuit/components/Nodes/NodeWrapper.tsx b/packages/hfr/circuit/components/Nodes/NodeWrapper.tsx new file mode 100644 index 000000000..178da9056 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/NodeWrapper.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import FlowNode from '@hfr/circuit/models/FlowNode'; +import { observer } from 'mobx-react-lite'; + +interface Props { + node: FlowNode; + children: React.ReactNode; + className?: string; + style?: React.CSSProperties; +} + +const NodeWrapper = observer((props: Props) => { + return ( +
+ {props.children} +
+ ); +}); + +export default NodeWrapper; diff --git a/packages/hfr/circuit/components/Nodes/Not/index.tsx b/packages/hfr/circuit/components/Nodes/Not/index.tsx new file mode 100644 index 000000000..c45487f4f --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/Not/index.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import shared from '../styles.module.scss'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '@tdev-hooks/useStore'; +import { Handle, Node, NodeProps, Position } from '@xyflow/react'; +import FlowNode from '@hfr/circuit/models/FlowNode'; +import { NodeType } from '@hfr/circuit'; +import NodeWrapper from '../NodeWrapper'; +import NotGate from '../assets/Gate-NOT.svg'; + +export type NotNode = Node<{}, 'NotNode'>; + +const NotNode = observer((props: NodeProps) => { + const documentStore = useStore('documentStore'); + const doc = documentStore.find(props.id) as FlowNode | undefined; + if (!doc) { + return null; + } + return ( + + + NOT + + 0 && shared.on, shared.handle)} + position={Position.Right} + style={{ right: '0px' }} + /> + + ); +}); + +export default NotNode; diff --git a/packages/hfr/circuit/components/Nodes/Not/styles.module.scss b/packages/hfr/circuit/components/Nodes/Not/styles.module.scss new file mode 100644 index 000000000..5c2c94249 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/Not/styles.module.scss @@ -0,0 +1,6 @@ +.not { + width: 40px; + height: 40px; + font-size: 30%; + padding-right: 8px; +} diff --git a/packages/hfr/circuit/components/Nodes/Or/index.tsx b/packages/hfr/circuit/components/Nodes/Or/index.tsx new file mode 100644 index 000000000..392b4b366 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/Or/index.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import shared from '../styles.module.scss'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '@tdev-hooks/useStore'; +import { Handle, Node, NodeProps, Position } from '@xyflow/react'; +import FlowNode from '@hfr/circuit/models/FlowNode'; +import { NodeType } from '@hfr/circuit'; +import NodeWrapper from '../NodeWrapper'; +import OrGate from '../assets/Gate-OR.svg'; + +export type OrNode = Node<{}, 'OrNode'>; + +const OrNode = observer((props: NodeProps) => { + const documentStore = useStore('documentStore'); + const doc = documentStore.find(props.id) as FlowNode | undefined; + if (!doc) { + return null; + } + return ( + + + OR + + + + + ); +}); + +export default OrNode; diff --git a/packages/hfr/circuit/components/Nodes/Or/styles.module.scss b/packages/hfr/circuit/components/Nodes/Or/styles.module.scss new file mode 100644 index 000000000..d29ab497b --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/Or/styles.module.scss @@ -0,0 +1,4 @@ +.or { + width: 60px; + height: 40px; +} diff --git a/packages/hfr/circuit/components/Nodes/Switch/index.tsx b/packages/hfr/circuit/components/Nodes/Switch/index.tsx new file mode 100644 index 000000000..6c9b58bf4 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/Switch/index.tsx @@ -0,0 +1,54 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import shared from '../styles.module.scss'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '@tdev-hooks/useStore'; +import { Handle, Node, NodeProps, Position } from '@xyflow/react'; +import Button from '@tdev-components/shared/Button'; +import { mdiElectricSwitch, mdiElectricSwitchClosed } from '@mdi/js'; +import FlowNode from '@hfr/circuit/models/FlowNode'; +import NodeWrapper from '../NodeWrapper'; +import { NodeType } from '@hfr/circuit'; +import Icon from '@mdi/react'; +import { IfmColors } from '@tdev-components/shared/Colors'; + +export type SwitchNode = Node<{}, 'SwitchNode'>; + +const SwitchNode = observer((props: NodeProps) => { + const documentStore = useStore('documentStore'); + const doc = documentStore.find(props.id) as FlowNode | undefined; + const onClick = React.useEffectEvent>((e) => { + e.preventDefault(); + e.stopPropagation(); + doc?.deriver.toggle(); + }); + const isPowered = doc?.inputEdgeA ? doc?.deriver.power : 0; + if (!doc) { + return null; + } + return ( + +
+ +
+ + +
+ ); +}); + +export default SwitchNode; diff --git a/packages/hfr/circuit/components/Nodes/Switch/styles.module.scss b/packages/hfr/circuit/components/Nodes/Switch/styles.module.scss new file mode 100644 index 000000000..42a761502 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/Switch/styles.module.scss @@ -0,0 +1,17 @@ +.switch { + width: 20px; + height: 20px; + padding: 2px 0; + .buttonNode { + border-radius: var(--ifm-global-radius); + border: 1px solid var(--ifm-color-secondary-darkest); + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + &:hover { + background-color: var(--ifm-color-secondary-lighter); + } + } +} diff --git a/packages/hfr/circuit/components/Nodes/Xor/index.tsx b/packages/hfr/circuit/components/Nodes/Xor/index.tsx new file mode 100644 index 000000000..0c66501d9 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/Xor/index.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import shared from '../styles.module.scss'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '@tdev-hooks/useStore'; +import { Handle, Node, NodeProps, Position } from '@xyflow/react'; +import FlowNode from '@hfr/circuit/models/FlowNode'; +import NodeWrapper from '../NodeWrapper'; +import { NodeType } from '@hfr/circuit'; +import XorGate from '../assets/Gate-XOR.svg'; + +export type XorNode = Node<{}, 'XXorNode'>; + +const XorNode = observer((props: NodeProps) => { + const documentStore = useStore('documentStore'); + const doc = documentStore.find(props.id) as FlowNode | undefined; + if (!doc) { + return null; + } + return ( + + + XOR + + + + + ); +}); + +export default XorNode; diff --git a/packages/hfr/circuit/components/Nodes/Xor/styles.module.scss b/packages/hfr/circuit/components/Nodes/Xor/styles.module.scss new file mode 100644 index 000000000..2088c08df --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/Xor/styles.module.scss @@ -0,0 +1,6 @@ +.xor { + width: 60px; + height: 40px; + padding-left: 12px; + font-size: 70%; +} diff --git a/packages/hfr/circuit/components/Nodes/assets/Gate-AND.svg b/packages/hfr/circuit/components/Nodes/assets/Gate-AND.svg new file mode 100644 index 000000000..a73fd3e6a --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/assets/Gate-AND.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/hfr/circuit/components/Nodes/assets/Gate-NOT.svg b/packages/hfr/circuit/components/Nodes/assets/Gate-NOT.svg new file mode 100644 index 000000000..656a63249 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/assets/Gate-NOT.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/packages/hfr/circuit/components/Nodes/assets/Gate-OR.svg b/packages/hfr/circuit/components/Nodes/assets/Gate-OR.svg new file mode 100644 index 000000000..b9d2a6ec0 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/assets/Gate-OR.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/packages/hfr/circuit/components/Nodes/assets/Gate-XOR.svg b/packages/hfr/circuit/components/Nodes/assets/Gate-XOR.svg new file mode 100644 index 000000000..ca301e4f6 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/assets/Gate-XOR.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/hfr/circuit/components/Nodes/index.ts b/packages/hfr/circuit/components/Nodes/index.ts new file mode 100644 index 000000000..012c9d711 --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/index.ts @@ -0,0 +1,19 @@ +import AndNode from './And'; +import BatteryNode from './Battery'; +import DecimalDisplayNode from './DecimalDisplay'; +import LedNode from './Led'; +import NotNode from './Not'; +import OrNode from './Or'; +import SwitchNode from './Switch'; +import XorNode from './Xor'; + +export const nodeTypes = { + NotNode, + DecimalDisplayNode, + LedNode, + BatteryNode, + SwitchNode, + AndNode, + XorNode, + OrNode +}; diff --git a/packages/hfr/circuit/components/Nodes/styles.module.scss b/packages/hfr/circuit/components/Nodes/styles.module.scss new file mode 100644 index 000000000..918b81f6d --- /dev/null +++ b/packages/hfr/circuit/components/Nodes/styles.module.scss @@ -0,0 +1,37 @@ +.handle { + border-color: var(--ifm-color-danger); + background: var(--ifm-color-danger); + &.on { + border-color: var(--ifm-color-success); + background: var(--ifm-color-success); + } +} + +.node { + border-radius: var(--ifm-global-radius); + &.cycle { + border: 1px dashed var(--ifm-color-warning); + } + &.gate { + position: relative; + display: flex; + align-items: center; + justify-content: center; + .image { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -1; + } + } + &:hover { + box-shadow: var(--ifm-global-shadow-lw); + } + &.selected { + box-shadow: var(--ifm-global-shadow-tl); + color: var(--ifm-color-blue); + font-weight: 900; + } +} diff --git a/packages/hfr/circuit/components/hooks/useCopyPaste.tsx b/packages/hfr/circuit/components/hooks/useCopyPaste.tsx new file mode 100644 index 000000000..553139af9 --- /dev/null +++ b/packages/hfr/circuit/components/hooks/useCopyPaste.tsx @@ -0,0 +1,88 @@ +import { ReactFlowInstance, Node, Edge } from '@xyflow/react'; +import { useCallback, useEffect } from 'react'; +import { v4 as uuidv4 } from 'uuid'; +import CircuitRoom from '../../models/CircuitRoom'; +import { transaction } from 'mobx'; +import { FlowEdgeData, FlowNodeData, NodeType } from '../..'; +import FlowEdge from '../../models/FlowEdge'; + +export const useCopyPaste = (room: CircuitRoom | null) => { + const onCopyCapture = useCallback( + (event: ClipboardEvent) => { + event.preventDefault(); + const nodes = JSON.stringify({ + nodes: room?.selectedNodes?.map((n) => n.node) || [], + edges: room?.selectedEdges?.map((e) => e.edgeData) || [] + }); + event.clipboardData?.setData('xyflow', nodes); + }, + [room] + ); + + const onPasteCapture = useCallback( + (event: ClipboardEvent) => { + event.preventDefault(); + const data = JSON.parse( + event.clipboardData?.getData('xyflow') || '{"nodes": [], "edges": []}' + ) as { nodes: Node[] | undefined; edges: Edge[] | undefined }; + const { nodes, edges } = data; + if (nodes && nodes.length > 0) { + const currentSelection = room?.selectedNodes || []; + const copies = nodes.map((n) => { + const newNode = { + ...n, + selected: true, + position: { x: n.position.x + 40, y: n.position.y + 40 } + } as Omit, 'id'>; + delete (newNode as any).id; + return newNode; + }); + transaction(() => { + currentSelection.forEach((n) => n.setSelected(false)); + Promise.all(copies.map((n) => room?.createFlowNode(n))).then((created) => { + const idMap = new Map(); + created.forEach((n, i) => { + if (!n) { + return; + } + idMap.set(nodes[i].id, n.id); + return n; + }); + const promises: Promise[] = []; + transaction(() => { + (edges || []).forEach((e) => { + const sourceId = idMap.get(e.source); + const targetId = idMap.get(e.target); + if (sourceId && targetId) { + const res = room?.createFlowEdge({ + ...e, + source: sourceId, + target: targetId + }); + if (res) { + promises.push(res); + } + } + }); + }); + }); + }); + } + }, + [room] + ); + + useEffect(() => { + window.addEventListener('copy', onCopyCapture); + return () => { + window.removeEventListener('copy', onCopyCapture); + }; + }, [onCopyCapture]); + + useEffect(() => { + window.addEventListener('paste', onPasteCapture); + return () => { + window.removeEventListener('paste', onPasteCapture); + }; + }, [onPasteCapture]); +}; diff --git a/packages/hfr/circuit/components/styles.module.scss b/packages/hfr/circuit/components/styles.module.scss new file mode 100644 index 000000000..a3e3695d1 --- /dev/null +++ b/packages/hfr/circuit/components/styles.module.scss @@ -0,0 +1,39 @@ +.wrapper { + display: flex; + flex-direction: row; + justify-content: center; + margin: 0 1em; + --tdev-circuit-power-color: #f8bf03; + + .rooms { + display: flex; + flex-grow: 1; + flex-direction: column; + gap: 1em; + margin: 1em 0; + max-width: 98vw; + + .name { + display: flex; + justify-content: space-between; + align-items: center; + } + .panel { + display: flex; + gap: 0.2em; + } + } +} + +.alert { + display: flex; + justify-content: start; + gap: 1em; + align-items: center; + margin: 1em; +} +[data-theme='dark'] { + .wrapper { + --tdev-circuit-power-color: #ddff00; + } +} diff --git a/packages/hfr/circuit/index.ts b/packages/hfr/circuit/index.ts new file mode 100644 index 000000000..5965a7e22 --- /dev/null +++ b/packages/hfr/circuit/index.ts @@ -0,0 +1,45 @@ +import FlowNode from '@hfr/circuit/models/FlowNode'; +import FlowEdge from '@hfr/circuit/models/FlowEdge'; +import { Edge, Node } from '@xyflow/react'; +import CircuitRoom from './models/CircuitRoom'; + +export enum NodeType { + LedNode = 'LedNode', + NotNode = 'NotNode', + DecimalDisplayNode = 'DecimalDisplayNode', + BatteryNode = 'BatteryNode', + SwitchNode = 'SwitchNode', + OrNode = 'OrNode', + XorNode = 'XorNode', + AndNode = 'AndNode' +} + +export interface NodeDataMapping { + [NodeType.LedNode]: {}; + [NodeType.BatteryNode]: { pins: number }; + [NodeType.DecimalDisplayNode]: { pins: number }; + [NodeType.OrNode]: {}; + [NodeType.NotNode]: {}; + [NodeType.XorNode]: {}; + [NodeType.AndNode]: {}; + [NodeType.SwitchNode]: { + power: 0 | 1; + }; +} + +export type FlowNodeDataFull = Node; +export type FlowNodeData = Omit, 'id'>; +export type FlowEdgeData = Omit; +declare module '@tdev-api/document' { + export interface RoomTypeMapping { + ['circuit']: CircuitRoom; + } + export interface TypeDataMapping { + ['flow_node']: FlowNodeData; + ['flow_edge']: FlowEdgeData; + } + export interface TypeModelMapping { + ['flow_node']: FlowNode; + ['flow_edge']: FlowEdge; + } +} diff --git a/packages/hfr/circuit/models/CircuitRoom.ts b/packages/hfr/circuit/models/CircuitRoom.ts new file mode 100644 index 000000000..66405e060 --- /dev/null +++ b/packages/hfr/circuit/models/CircuitRoom.ts @@ -0,0 +1,181 @@ +import DynamicRoom from '@tdev-models/documents/DynamicRoom'; +import DynamicDocumentRoot from '@tdev-models/documents/DynamicDocumentRoot'; +import { action, computed } from 'mobx'; +import FlowNode from './FlowNode'; +import DocumentStore from '@tdev-stores/DocumentStore'; +import { + applyNodeChanges, + applyEdgeChanges, + OnEdgesChange, + Edge, + OnNodesChange, + OnConnect, + Connection, + reconnectEdge, + OnNodesDelete +} from '@xyflow/react'; +import { Source } from '@tdev-models/iDocument'; +import FlowEdge from './FlowEdge'; +import { FlowEdgeData, FlowNodeData, NodeDataMapping, NodeType } from '..'; +import { RoomFactory } from '@tdev-api/document'; +const MULTI_INPUTS_ALLOWED = new Set([NodeType.BatteryNode]); + +class CircuitRoom extends DynamicRoom<'circuit'> { + constructor(dynamicRoot: DynamicDocumentRoot<'circuit'>, documentStore: DocumentStore) { + super(dynamicRoot, documentStore); + } + + @computed + get flowNodes() { + return this.documents.filter((doc) => doc.type === 'flow_node'); + } + + @computed + get flowEdges() { + return this.documents.filter((doc) => doc.type === 'flow_edge'); + } + + @computed + get nodes() { + return this.flowNodes.map((fn) => fn.node); + } + + @computed + get edges() { + return this.flowEdges.map((fn) => fn.edgeData); + } + + @computed + get selectedNodes() { + return this.flowNodes.filter((n) => n.node.selected); + } + @computed + get selectedEdges() { + return this.flowEdges.filter((n) => n.edgeData.selected); + } + + @action + reconnectEdge(id: string, connection: Connection) { + const edge = this.documentStore.find(id) as FlowEdge; + if (edge) { + const reconnected = reconnectEdge(edge.edgeData, connection, [edge.edgeData])[0]; + edge.setData(reconnected, Source.LOCAL, new Date()); + } + } + + @action + onNodesChange(changes: Parameters[0]) { + changes.forEach((change) => { + if (!('id' in change)) { + return; + } + const node = this.flowNodes.find((doc) => doc.id === change.id); + if (node) { + node.setData( + applyNodeChanges([change], [node.node])[0] as FlowNodeData, + Source.LOCAL, + new Date() + ); + } + }); + } + + @action + onEdgeChange(changes: Parameters>[0]) { + changes.forEach((change) => { + if (!('id' in change)) { + return; + } + const edge = this.flowEdges.find((doc) => doc.id === change.id); + if (edge) { + edge.setData(applyEdgeChanges([change], [edge.edgeData])[0], Source.LOCAL, new Date()); + } + }); + } + + @action + onConnect(connection: Parameters[0]) { + const currentEdge = this.flowEdges.find((e) => { + return e.targetId === connection.target && e.flowData.targetHandle === connection.targetHandle; + }); + this.documentStore + .create({ + documentRootId: this.dynamicRoot.rootDocumentId, + type: 'flow_edge', + data: { + source: connection.source, + target: connection.target, + sourceHandle: connection.sourceHandle, + targetHandle: connection.targetHandle + } + }) + .then((newEdge) => { + const nType = currentEdge?.target?.flowData?.type as NodeType | undefined; + if (newEdge && currentEdge && !MULTI_INPUTS_ALLOWED.has(nType)) { + this.documentStore.apiDelete(currentEdge); + } + }); + } + + @action + onDelete(deleted: Parameters[0]) { + deleted.forEach((node) => { + const doc = this.documentStore.find(node.id) as FlowNode; + if (!doc) { + return; + } + doc.edges.forEach((edge) => { + this.documentStore.apiDelete(edge); + }); + this.documentStore.apiDelete(doc); + }); + } + + /** + * normally used to create a flow node with minimal data + */ + @action + addFlowNode(type: N, data: NodeDataMapping[N], position?: { x: number; y: number }) { + return this.documentStore.create({ + documentRootId: this.dynamicRoot.rootDocumentId, + type: 'flow_node', + data: { + data: data, + type: type, + position: position ?? { + x: 100, + y: 100 + } + } + }); + } + + /** + * Used to create a flow node with full data + */ + @action + createFlowNode(data: Omit, 'id'>) { + return this.documentStore.create({ + documentRootId: this.dynamicRoot.rootDocumentId, + type: 'flow_node', + data: data + }); + } + /** + * Used to create a flow node with full data + */ + @action + createFlowEdge(data: Omit) { + return this.documentStore.create({ + documentRootId: this.dynamicRoot.rootDocumentId, + type: 'flow_edge', + data: data + }); + } +} + +export const createRoom: RoomFactory = (dynamicRoot, documentStore) => { + return new CircuitRoom(dynamicRoot, documentStore); +}; + +export default CircuitRoom; diff --git a/packages/hfr/circuit/models/FlowEdge.ts b/packages/hfr/circuit/models/FlowEdge.ts new file mode 100644 index 000000000..c52efcb45 --- /dev/null +++ b/packages/hfr/circuit/models/FlowEdge.ts @@ -0,0 +1,130 @@ +import { action, computed, observable } from 'mobx'; +import iDocument, { Source } from '@tdev-models/iDocument'; +import { Document as DocumentProps, TypeDataMapping, Access, Factory } from '@tdev-api/document'; +import DocumentStore from '@tdev-stores/DocumentStore'; +import { TypeMeta } from '@tdev-models/DocumentRoot'; +import type FlowNode from './FlowNode'; +import { FlowEdgeData, NodeType } from '@hfr/circuit'; + +export interface MetaInit { + readonly?: boolean; +} + +export class ModelMeta extends TypeMeta<'flow_edge'> { + readonly type = 'flow_edge'; + + constructor(props: Partial) { + super('flow_edge', props.readonly ? Access.RO_User : undefined); + } + + get defaultData(): TypeDataMapping['flow_edge'] { + return { + source: '', + target: '' + }; + } +} + +export const createModel: Factory = (data, store) => { + return new FlowEdge(data as DocumentProps<'flow_edge'>, store); +}; + +class FlowEdge extends iDocument<'flow_edge'> { + @observable.ref accessor flowData: FlowEdgeData; + constructor(props: DocumentProps<'flow_edge'>, store: DocumentStore) { + super(props, store, 15); + this.flowData = props.data; + } + + @action + setData(data: TypeDataMapping['flow_edge'], from: Source, updatedAt?: Date): void { + if (!data) { + this.store.apiDelete(this); + return; + } + delete data.type; + this.flowData = data as any; + if (from === Source.LOCAL) { + /** + * Assumption: + * - local changes are commited only when the scene version is updated! + * - only non-deleted elements are commited + */ + this.save(); + this.store.root.socketStore.streamUpdate(this.documentRootId, { + id: this.id, + data: data, + updatedAt: this.updatedAt.toISOString() + }); + } + if (updatedAt) { + this.updatedAt = new Date(updatedAt); + } + } + + get data(): TypeDataMapping['flow_edge'] { + return { ...this.flowData }; + } + + @computed + get isPowerOn() { + return this.source?.deriver?.power > 0; + } + + @computed + get isGround() { + return this.isPowerOn && this.target?.flowData.type === NodeType.BatteryNode; + } + + @computed + get edgeData() { + return { + ...this.flowData, + animated: this.isPowerOn, + type: 'smoothstep', + style: { + stroke: this.isPowerOn + ? this.isGround + ? 'var(--ifm-color-danger)' + : 'var(--tdev-circuit-power-color)' + : undefined, + strokeWidth: this.isPowerOn ? 2 : undefined + }, + id: this.id + }; + } + + get sourceId() { + return this.flowData.source; + } + + get source(): FlowNode | undefined { + return this.store.find(this.sourceId) as FlowNode; + } + + get targetId() { + return this.flowData.target; + } + + get target(): FlowNode | undefined { + return this.store.find(this.targetId) as FlowNode; + } + + get isSelected() { + return this.flowData.selected; + } + + get isAnimated() { + return this.edgeData.animated; + } + + @computed + get meta(): ModelMeta { + if (this.root?.type === 'flow_edge') { + return this.root.meta as ModelMeta; + } + return new ModelMeta({}); + } +} + +export default FlowEdge; diff --git a/packages/hfr/circuit/models/FlowNode.ts b/packages/hfr/circuit/models/FlowNode.ts new file mode 100644 index 000000000..e71a8d4ff --- /dev/null +++ b/packages/hfr/circuit/models/FlowNode.ts @@ -0,0 +1,197 @@ +import { action, computed, observable } from 'mobx'; +import iDocument, { Source } from '@tdev-models/iDocument'; +import { + Document as DocumentProps, + TypeDataMapping, + Access, + DocumentTypes, + Factory +} from '@tdev-api/document'; +import DocumentStore from '@tdev-stores/DocumentStore'; +import { TypeMeta } from '@tdev-models/DocumentRoot'; +import FlowEdge from './FlowEdge'; +import iDeriver from './derivers/iDeriver'; +import Or from './derivers/Or'; +import And from './derivers/And'; +import Switch from './derivers/Switch'; +import Battery from './derivers/Battery'; +import Led from './derivers/Led'; +import Xor from './derivers/Xor'; +import Not from './derivers/Not'; +import DecimalDisplay from './derivers/DecimalDisplay'; +import { FlowNodeData, FlowNodeDataFull, NodeDataMapping, NodeType } from '@hfr/circuit'; + +export interface MetaInit { + readonly?: boolean; +} + +export class ModelMeta extends TypeMeta<'flow_node'> { + readonly type = 'flow_node'; + + constructor(props: Partial) { + super('flow_node', props.readonly ? Access.RO_User : undefined); + } + + get defaultData(): TypeDataMapping['flow_node'] { + return { + type: NodeType.OrNode, + data: {}, + position: { + x: 0, + y: 0 + } + }; + } +} + +interface DeriverMapping { + [NodeType.LedNode]: Led; + [NodeType.BatteryNode]: Battery; + [NodeType.SwitchNode]: Switch; + [NodeType.OrNode]: Or; + [NodeType.NotNode]: Not; + [NodeType.XorNode]: Xor; + [NodeType.AndNode]: And; + [NodeType.DecimalDisplayNode]: DecimalDisplay; +} + +function createDeriver(node: FlowNode): DeriverMapping[NType] { + switch (node.flowData.type) { + case NodeType.OrNode: + return new Or(node as FlowNode) as DeriverMapping[NType]; + case NodeType.XorNode: + return new Xor(node as FlowNode) as DeriverMapping[NType]; + case NodeType.AndNode: + return new And(node as FlowNode) as DeriverMapping[NType]; + case NodeType.BatteryNode: + return new Battery(node as unknown as FlowNode) as DeriverMapping[NType]; + case NodeType.LedNode: + return new Led(node as FlowNode) as DeriverMapping[NType]; + case NodeType.SwitchNode: + return new Switch(node as unknown as FlowNode) as DeriverMapping[NType]; + case NodeType.NotNode: + return new Not(node as FlowNode) as DeriverMapping[NType]; + case NodeType.DecimalDisplayNode: + return new DecimalDisplay( + node as unknown as FlowNode + ) as DeriverMapping[NType]; + default: + return new iDeriver(node) as unknown as DeriverMapping[NType]; + } +} + +export const createModel: Factory = (data, store) => { + return new FlowNode(data as DocumentProps<'flow_node'>, store); +}; + +class FlowNode extends iDocument<'flow_node'> { + @observable.ref accessor flowData: FlowNodeData; + @observable.ref accessor deriver: DeriverMapping[NType]; + + constructor(props: DocumentProps<'flow_node'>, store: DocumentStore) { + super(props, store); + this.flowData = props.data as FlowNodeData; + this.deriver = createDeriver(this); + } + + @action + setData(data: TypeDataMapping['flow_node'], from: Source, updatedAt?: Date): void { + if (!data) { + this.store.apiDelete(this as DocumentTypes); + return; + } + this.flowData = data as FlowNodeData; + if (updatedAt) { + this.updatedAt = new Date(updatedAt); + } + if (from === Source.LOCAL) { + /** + * Assumption: + * - local changes are commited only when the scene version is updated! + * - only non-deleted elements are commited + */ + this.save(); + this.store.root.socketStore.streamUpdate(this.documentRootId, { + id: this.id, + data: data, + updatedAt: (this.updatedAt || new Date()).toISOString() + }); + } + } + + @action + setSelected(selected: boolean) { + this.setData( + { + ...this.data, + selected: selected + }, + Source.LOCAL + ); + } + + /** + * tdev data + */ + @computed + get data(): TypeDataMapping['flow_node'] { + return { ...this.flowData } as TypeDataMapping['flow_node']; + } + + @computed + get isSelected() { + return this.node.selected; + } + + /** + * react flow's node + */ + @computed + get node(): FlowNodeDataFull { + return { ...this.flowData, id: this.id } as FlowNodeDataFull; + } + + /** + * react flow's node data + */ + get nodeData(): NodeDataMapping[NType] { + return this.flowData.data; + } + + @computed + get meta(): ModelMeta { + if (this.root?.type === 'flow_node') { + return this.root.meta as ModelMeta; + } + return new ModelMeta({}); + } + + @computed + get edges(): FlowEdge[] { + return this.store + .findByDocumentRoot(this.documentRootId) + .filter((doc) => doc.type === 'flow_edge') + .filter((doc) => doc.sourceId === this.id || doc.targetId === this.id); + } + + @computed + get edgesOut(): FlowEdge[] { + return this.edges.filter((edge) => edge.sourceId === this.id); + } + + @computed + get edgesIn(): FlowEdge[] { + return this.edges.filter((edge) => edge.targetId === this.id); + } + + @computed + get inputEdgeA(): FlowEdge | undefined { + return this.edgesIn.find((edge) => edge.flowData.targetHandle === 'a'); + } + @computed + get inputEdgeB(): FlowEdge | undefined { + return this.edgesIn.find((edge) => edge.flowData.targetHandle === 'b'); + } +} + +export default FlowNode; diff --git a/packages/hfr/circuit/models/derivers/And.ts b/packages/hfr/circuit/models/derivers/And.ts new file mode 100644 index 000000000..527bfab4b --- /dev/null +++ b/packages/hfr/circuit/models/derivers/And.ts @@ -0,0 +1,24 @@ +import iDeriver from './iDeriver'; +import type FlowNode from '../FlowNode'; +import { NodeType } from '@hfr/circuit'; +import { computed } from 'mobx'; + +class And extends iDeriver { + constructor(node: FlowNode) { + super(node); + } + + @computed + get output(): boolean { + return ( + this.flowNode.edgesIn.length >= 2 && + this.flowNode.edgesIn.every((e) => e.source?.deriver?.power > 0) + ); + } + + get power(): number { + return this.output ? 1 : 0; + } +} + +export default And; diff --git a/packages/hfr/circuit/models/derivers/Battery.ts b/packages/hfr/circuit/models/derivers/Battery.ts new file mode 100644 index 000000000..299c91a19 --- /dev/null +++ b/packages/hfr/circuit/models/derivers/Battery.ts @@ -0,0 +1,56 @@ +import iDeriver from './iDeriver'; +import type FlowNode from '../FlowNode'; +import { NodeType } from '@hfr/circuit'; +import { Source } from '@tdev-models/iDocument'; +import { action, computed } from 'mobx'; + +class Battery extends iDeriver { + constructor(node: FlowNode) { + super(node); + } + + get power(): number { + return 1; + } + + get pins(): number { + return (this.flowNode.flowData.data as { pins?: number }).pins ?? 3; + } + + @action + addPin() { + this.flowNode.setData( + { ...this.flowNode.flowData, data: { pins: this.pins + 1 } }, + Source.LOCAL, + new Date() + ); + } + + @computed + get pinIds(): string[] { + return Array.from({ length: this.pins }).map((_, i) => (i === 0 ? 'a' : i === 1 ? 'b' : `p${i}`)); + } + + @action + removePin() { + if (this.pins < 2) { + return; + } + const lastPinId = this.pinIds[this.pinIds.length - 1]; + const lastPin = this.flowNode.edgesIn.find((e) => e.flowData.targetHandle === lastPinId); + if (lastPin) { + lastPin.setData( + { ...lastPin.flowData, targetHandle: this.pinIds[this.pinIds.length - 2] }, + Source.LOCAL, + new Date() + ); + } + this.flowNode.setData( + { ...this.flowNode.flowData, data: { pins: this.pins - 1 } }, + Source.LOCAL, + new Date() + ); + } +} + +export default Battery; diff --git a/packages/hfr/circuit/models/derivers/DecimalDisplay.ts b/packages/hfr/circuit/models/derivers/DecimalDisplay.ts new file mode 100644 index 000000000..e34fddf43 --- /dev/null +++ b/packages/hfr/circuit/models/derivers/DecimalDisplay.ts @@ -0,0 +1,66 @@ +import iDeriver from './iDeriver'; +import type FlowNode from '../FlowNode'; +import { NodeType } from '@hfr/circuit'; +import { Source } from '@tdev-models/iDocument'; +import { action, computed } from 'mobx'; +import _ from 'es-toolkit/compat'; + +class DecimalDisplay extends iDeriver { + constructor(node: FlowNode) { + super(node); + } + + get power(): number { + return 1; + } + + get pins(): number { + return (this.flowNode.flowData.data as { pins?: number }).pins ?? 3; + } + + @action + addPin() { + this.flowNode.setData( + { ...this.flowNode.flowData, data: { pins: this.pins + 1 } }, + Source.LOCAL, + new Date() + ); + } + + @computed + get pinIds(): string[] { + return Array.from({ length: this.pins }).map((_, i) => (i === 0 ? 'a' : i === 1 ? 'b' : `p${i}`)); + } + + @computed + get decNumber(): number { + const pins = _.orderBy( + this.flowNode.edgesIn.map((e) => ({ + pin: e.flowData.targetHandle, + value: e.source?.deriver?.power > 0 ? 1 : 0 || 0 + })), + ['pin'], + ['asc'] + ).map((e) => e.value); + return pins.reduce((acc, val, idx) => acc + val * (1 << idx), 0); + } + + @action + removePin() { + if (this.pins < 2) { + return; + } + const lastPinId = this.pinIds[this.pinIds.length - 1]; + const lastPin = this.flowNode.edgesIn.find((e) => e.flowData.targetHandle === lastPinId); + if (lastPin) { + this.flowNode.store.apiDelete(lastPin); + } + this.flowNode.setData( + { ...this.flowNode.flowData, data: { pins: this.pins - 1 } }, + Source.LOCAL, + new Date() + ); + } +} + +export default DecimalDisplay; diff --git a/packages/hfr/circuit/models/derivers/Led.ts b/packages/hfr/circuit/models/derivers/Led.ts new file mode 100644 index 000000000..639e3fa11 --- /dev/null +++ b/packages/hfr/circuit/models/derivers/Led.ts @@ -0,0 +1,17 @@ +import iDeriver from './iDeriver'; +import type FlowNode from '../FlowNode'; +import { NodeType } from '@hfr/circuit'; +import { action, computed } from 'mobx'; + +class Led extends iDeriver { + constructor(node: FlowNode) { + super(node); + } + + @computed + get power() { + return this.flowNode.inputEdgeA?.isPowerOn ? 1 : 0; + } +} + +export default Led; diff --git a/packages/hfr/circuit/models/derivers/Not.ts b/packages/hfr/circuit/models/derivers/Not.ts new file mode 100644 index 000000000..fae88c98f --- /dev/null +++ b/packages/hfr/circuit/models/derivers/Not.ts @@ -0,0 +1,18 @@ +import iDeriver from './iDeriver'; +import type FlowNode from '../FlowNode'; +import { NodeType } from '@hfr/circuit'; +import { action, computed } from 'mobx'; +import { Source } from '@tdev-models/iDocument'; + +class Not extends iDeriver { + constructor(node: FlowNode) { + super(node); + } + + @computed + get power(): number { + return (this.flowNode.inputEdgeA?.source?.deriver?.power ?? 0) > 0 ? 0 : 1; + } +} + +export default Not; diff --git a/packages/hfr/circuit/models/derivers/Or.ts b/packages/hfr/circuit/models/derivers/Or.ts new file mode 100644 index 000000000..ac55fbdef --- /dev/null +++ b/packages/hfr/circuit/models/derivers/Or.ts @@ -0,0 +1,21 @@ +import iDeriver from './iDeriver'; +import type FlowNode from '../FlowNode'; +import { NodeType } from '@hfr/circuit'; +import { computed } from 'mobx'; + +class Or extends iDeriver { + constructor(node: FlowNode) { + super(node); + } + + @computed + get output(): boolean { + return this.flowNode.edgesIn.some((e) => e.source?.deriver?.power > 0); + } + + get power(): number { + return this.output ? 1 : 0; + } +} + +export default Or; diff --git a/packages/hfr/circuit/models/derivers/Switch.ts b/packages/hfr/circuit/models/derivers/Switch.ts new file mode 100644 index 000000000..33463fe14 --- /dev/null +++ b/packages/hfr/circuit/models/derivers/Switch.ts @@ -0,0 +1,27 @@ +import iDeriver from './iDeriver'; +import type FlowNode from '../FlowNode'; +import { NodeType } from '@hfr/circuit'; +import { action, computed } from 'mobx'; +import { Source } from '@tdev-models/iDocument'; + +class Switch extends iDeriver { + constructor(node: FlowNode) { + super(node); + } + + @computed + get power() { + return (this.flowNode.flowData.data as { power?: number }).power ?? 0; + } + + @action + toggle() { + this.flowNode.setData( + { ...this.flowNode.flowData, data: { power: 1 - this.power } }, + Source.LOCAL, + new Date() + ); + } +} + +export default Switch; diff --git a/packages/hfr/circuit/models/derivers/Xor.ts b/packages/hfr/circuit/models/derivers/Xor.ts new file mode 100644 index 000000000..7ba9dca70 --- /dev/null +++ b/packages/hfr/circuit/models/derivers/Xor.ts @@ -0,0 +1,24 @@ +import iDeriver from './iDeriver'; +import type FlowNode from '../FlowNode'; +import { NodeType } from '@hfr/circuit'; +import { computed } from 'mobx'; + +class Xor extends iDeriver { + constructor(node: FlowNode) { + super(node); + } + + @computed + get output(): boolean { + return ( + !this.flowNode.edgesIn.every((e) => e.source?.deriver?.power > 0) && + this.flowNode.edgesIn.some((e) => e.source?.deriver?.power > 0) + ); + } + + get power(): number { + return this.output ? 1 : 0; + } +} + +export default Xor; diff --git a/packages/hfr/circuit/models/derivers/iDeriver.ts b/packages/hfr/circuit/models/derivers/iDeriver.ts new file mode 100644 index 000000000..80bdcd44d --- /dev/null +++ b/packages/hfr/circuit/models/derivers/iDeriver.ts @@ -0,0 +1,15 @@ +import { NodeType } from '@hfr/circuit'; +import type FlowNode from '../FlowNode'; + +class iDeriver { + readonly flowNode: FlowNode; + constructor(node: FlowNode) { + this.flowNode = node; + } + + get power() { + return (this.flowNode.flowData.data as { power?: number }).power ?? 0; + } +} + +export default iDeriver; diff --git a/packages/hfr/circuit/package.json b/packages/hfr/circuit/package.json new file mode 100644 index 000000000..24e9368c4 --- /dev/null +++ b/packages/hfr/circuit/package.json @@ -0,0 +1,20 @@ +{ + "name": "@hfr/circuit", + "version": "1.0.0", + "main": "index.ts", + "types": "index.ts", + "dependencies": { + "@xyflow/react": "^12.10.0" + }, + "devDependencies": { + "@docusaurus/core": "*", + "@docusaurus/module-type-aliases": "*", + "@types/node": "*", + "vitest": "*" + }, + "peerDependencies": { + "@tdev/core": ">=1.0.0", + "es-toolkit": "*", + "uuid": "*" + } +} diff --git a/packages/hfr/circuit/register.ts b/packages/hfr/circuit/register.ts new file mode 100644 index 000000000..ef130e125 --- /dev/null +++ b/packages/hfr/circuit/register.ts @@ -0,0 +1,22 @@ +import { rootStore } from '@tdev-stores/rootStore'; +import { createModel as createFlowNode } from './models/FlowNode'; +import { createModel as createFlowEdge } from './models/FlowEdge'; +import Circuit from './components/Circuit'; +import { createRoom } from './models/CircuitRoom'; +import { RoomComponent } from '@tdev-stores/ComponentStore'; + +const register = () => { + rootStore.documentStore.registerFactory('flow_node', createFlowNode); + rootStore.documentStore.registerFactory('flow_edge', createFlowEdge); + rootStore.documentStore.registerRoomFactory('circuit', createRoom); + rootStore.socketStore.registerRecordToCreate('flow_node'); + rootStore.socketStore.registerRecordToCreate('flow_edge'); + rootStore.componentStore.registerRoomComponent('circuit', { + name: 'Schaltkreis', + description: 'Interaktive Schaltkreise erzeugen.', + component: Circuit, + default: true + } as RoomComponent<'circuit'>); +}; + +register(); diff --git a/packages/hfr/circuit/tsconfig.json b/packages/hfr/circuit/tsconfig.json new file mode 100644 index 000000000..ea56794f8 --- /dev/null +++ b/packages/hfr/circuit/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../../tsconfig.json" +} diff --git a/packages/tdev/text-message/README.mdx b/packages/tdev/text-message/README.mdx index c65350201..d8f2271d0 100644 --- a/packages/tdev/text-message/README.mdx +++ b/packages/tdev/text-message/README.mdx @@ -16,11 +16,11 @@ Textnachrichten ermöglichen einen simplen Chat - dies ist eher ein PoC und die ```mdx import DynamicDocumentRoots from '@tdev-components/documents/DynamicDocumentRoots'; - + ``` - + @@ -58,13 +58,6 @@ Ein mögliches Beispiel für die Struktur der Daten des `DynamicDocumentRoots`: `type` : Der Typ des Raums. Dieser bestimmt, welche Komponenten und welche Logik für den Raum verwendet wird. -:::warning[Aktuelle Einschränkungen] -Bei der Erstellung eines `dynamic_document_roots` werden die Berechtigungen auf `access=RO_DocumentRoot` und `sharedAccess=RW_DocumentRoot` gesetzt - was vernünftige Standards sind. Allerdings kann dadurch nicht direkt ein Dokument erzeugt und hinzugefügt werden, da auch für ADmins die Berechtigungen nur `RO` sind. -### Lösung -Eine Admin-Gruppe muss in der API bspw. als ENV-Variable hinterlegt werden und diese Gruppe wird standardmässig zu jeder `DocumentRoot` mit `RW_GroupPermission` hinzugefügt. -::: - - ## Installation :::info[`siteConfig.ts`] diff --git a/packages/tdev/text-message/TextMessages/index.tsx b/packages/tdev/text-message/TextMessages/index.tsx index b53075288..34b46faad 100644 --- a/packages/tdev/text-message/TextMessages/index.tsx +++ b/packages/tdev/text-message/TextMessages/index.tsx @@ -4,18 +4,12 @@ import { observer } from 'mobx-react-lite'; import styles from './styles.module.scss'; import React from 'react'; import PermissionsPanel from '@tdev-components/PermissionsPanel'; -import { DynamicDocumentRoot } from '@tdev-api/document'; -import DocumentRoot from '@tdev-models/DocumentRoot'; import Conversation from './Text/Conversation'; import NewMessage from './Text/NewMessage'; +import type { ApiRoomProps } from '@tdev-stores/ComponentStore'; -interface Props { - roomProps: DynamicDocumentRoot; - documentRoot: DocumentRoot<'dynamic_document_root'>; -} - -const TextMessages = observer((props: Props): React.ReactNode => { - const { documentRoot, roomProps: dynamicDocumentRoot } = props; +const TextMessages = observer((props: ApiRoomProps): React.ReactNode => { + const { documentRoot, apiRoomProps: dynamicDocumentRoot } = props; if (documentRoot.id !== dynamicDocumentRoot.id) { return <>; } diff --git a/packages/tdev/text-message/index.ts b/packages/tdev/text-message/index.ts index 980b67390..b27381298 100644 --- a/packages/tdev/text-message/index.ts +++ b/packages/tdev/text-message/index.ts @@ -1,12 +1,13 @@ import TextMessage from './model'; +import DynamicRoom from '@tdev-models/documents/DynamicRoom'; export interface TextMessageData { text: string; } declare module '@tdev-api/document' { - export interface RoomTypeNames { - ['text_messages']: 'text_messages'; + export interface RoomTypeMapping { + ['text_messages']: DynamicRoom<'text_messages'>; } export interface TypeDataMapping { ['text_message']: TextMessageData; diff --git a/packages/tdev/text-message/model/index.tsx b/packages/tdev/text-message/model/index.ts similarity index 100% rename from packages/tdev/text-message/model/index.tsx rename to packages/tdev/text-message/model/index.ts diff --git a/packages/tdev/text-message/register.ts b/packages/tdev/text-message/register.ts index ce833aa69..c1bdaff8d 100644 --- a/packages/tdev/text-message/register.ts +++ b/packages/tdev/text-message/register.ts @@ -1,16 +1,24 @@ import { rootStore } from '@tdev-stores/rootStore'; import { createModel } from './model'; import TextMessages from './TextMessages'; +import type { RoomComponent } from '@tdev-stores/ComponentStore'; +import type { RoomFactory } from '@tdev-api/document'; +import DynamicRoom from '@tdev-models/documents/DynamicRoom'; + +const createRoom: RoomFactory<'text_messages'> = (dynamicRoot, documentStore) => { + return new DynamicRoom(dynamicRoot, documentStore); +}; const register = () => { rootStore.documentStore.registerFactory('text_message', createModel); rootStore.socketStore.registerRecordToCreate('text_message'); + rootStore.documentStore.registerRoomFactory('text_messages', createRoom); rootStore.componentStore.registerRoomComponent('text_messages', { name: 'Textnachrichten', description: 'Textnachrichten können in einem Chat versandt- und empfangen werden.', component: TextMessages, default: true - }); + } as RoomComponent); }; register(); diff --git a/src/api/OfflineApi/index.ts b/src/api/OfflineApi/index.ts index 51717c62e..66ca387b9 100644 --- a/src/api/OfflineApi/index.ts +++ b/src/api/OfflineApi/index.ts @@ -13,7 +13,7 @@ import _ from 'es-toolkit/compat'; import { DB_NAME } from '@tdev-api/config'; const TIME_NOW = new Date().toISOString(); -const LOG_REQUESTS = false; +const LOG_REQUESTS = true; let OfflineUser: User = { id: 'c23c0238-4aeb-457f-9a2c-3d2d5d8931c0', @@ -324,7 +324,7 @@ export default class OfflineApi { // Method to handle PUT requests async put(url: string, data: Partial, ...config: any): AxiosPromise { const { model, id, parts } = urlParts(url); - log('put', url, data); + log('put', `${url} -> id: ${id}`, data); switch (model) { case 'documents': diff --git a/src/api/document.ts b/src/api/document.ts index 148b53874..c54bc8f3f 100644 --- a/src/api/document.ts +++ b/src/api/document.ts @@ -14,9 +14,12 @@ import MdxComment from '@tdev-models/documents/MdxComment'; import { Color } from '@tdev-components/shared/Colors'; import CmsText from '@tdev-models/documents/CmsText'; import DynamicDocumentRoots from '@tdev-models/documents/DynamicDocumentRoots'; -import { DynamicDocumentRootModel } from '@tdev-models/documents/DynamicDocumentRoot'; import ProgressState from '@tdev-models/documents/ProgressState'; import type DocumentStore from '@tdev-stores/DocumentStore'; +import type { + default as DynamicDocumentRootDocument, + DynamicDocumentRootModel +} from '@tdev-models/documents/DynamicDocumentRoot'; export enum Access { RO_DocumentRoot = 'RO_DocumentRoot', @@ -99,28 +102,28 @@ export interface DynamicDocumentRootData { } /** - * This is the extendable mapping - only the key matters, - * the value is in principle irrelevant. + * This is the extendable mapping between keys and mapped room types. * @example * ```ts * declare module '@tdev-api/document' { - * export interface RoomTypeNames { - * ['my_room_type']: 'my_room_type'; + * export interface RoomTypeMapping { + * ['my_room_type']: DynamicRoom<'my_room_type'>; * } * } * ``` */ -export interface RoomTypeNames {} +export interface RoomTypeMapping {} -export type RoomType = keyof RoomTypeNames; +export type RoomType = keyof RoomTypeMapping; +export type RoomModels = RoomTypeMapping[RoomType]; export interface DynamicDocumentRoot { id: string; name: string; - type: RoomType; } export interface DynamicDocumentRootsData { + roomType: RoomType; documentRoots: DynamicDocumentRoot[]; } @@ -193,6 +196,11 @@ export type Factory = ( store: DocumentStore ) => TypeModelMapping[Type]; +export type RoomFactory = ( + dynamicRoot: DynamicDocumentRootDocument, + store: DocumentStore +) => RoomTypeMapping[Type]; + export function find( id: string, signal: AbortSignal diff --git a/src/api/documentRoot.ts b/src/api/documentRoot.ts index 89809acb8..64ad09773 100644 --- a/src/api/documentRoot.ts +++ b/src/api/documentRoot.ts @@ -1,6 +1,6 @@ import api from './base'; import { AxiosPromise } from 'axios'; -import { Access, Document, DocumentType } from './document'; +import { Access, Document, DocumentType, RoomType, RoomTypeMapping } from './document'; import { GroupPermissionBase, UserPermissionBase } from './permission'; export interface RootGroupPermission { diff --git a/src/components/PermissionsPanel/index.tsx b/src/components/PermissionsPanel/index.tsx index 6d91fc1f3..7a49437ff 100644 --- a/src/components/PermissionsPanel/index.tsx +++ b/src/components/PermissionsPanel/index.tsx @@ -44,7 +44,9 @@ const MissingPermissionsBadge = ({ available, total }: { available: number; tota const PermissionsPanel = observer((props: Props) => { const { documentRootId, documentRootIds, position } = props; - const docRootIds = documentRootIds || [documentRootId]; + const docRootIds = React.useMemo(() => { + return documentRootIds || [documentRootId]; + }, [documentRootId, documentRootIds]); const [isOpen, setIsOpen] = React.useState(false); const userStore = useStore('userStore'); const documentRootStore = useStore('documentRootStore'); diff --git a/src/components/Rooms/index.tsx b/src/components/Rooms/index.tsx index 58aa7a1a7..64032c1bf 100644 --- a/src/components/Rooms/index.tsx +++ b/src/components/Rooms/index.tsx @@ -10,16 +10,18 @@ import { mdiAccountAlert, mdiEmoticonSad, mdiRoomServiceOutline } from '@mdi/js' import { useStore } from '@tdev-hooks/useStore'; import styles from './styles.module.scss'; import React from 'react'; -import { DocumentType, DynamicDocumentRoot, RoomType } from '@tdev-api/document'; +import { DynamicDocumentRoot as ApiDynamicDocumentRoot, RoomType } from '@tdev-api/document'; import { ModelMeta as RootsMeta } from '@tdev-models/documents/DynamicDocumentRoots'; -import { default as DynamicDocumentRootMeta } from '@tdev-models/documents/DynamicDocumentRoot'; +import DynamicDocumentRoot, { + MetaInit as DynamicDocumentRootMeta +} from '@tdev-models/documents/DynamicDocumentRoot'; import { useDocumentRoot } from '@tdev-hooks/useDocumentRoot'; import DynamicDocumentRoots from '@tdev-components/documents/DynamicDocumentRoots'; import PermissionsPanel from '@tdev-components/PermissionsPanel'; import { NoneAccess } from '@tdev-models/helpers/accessPolicy'; import NoAccess from '@tdev-components/shared/NoAccess'; -import TextMessages from '../../../packages/tdev/text-message/TextMessages'; import RoomTypeSelector from '@tdev-components/documents/DynamicDocumentRoots/RoomTypeSelector'; +import type DocumentRoot from '@tdev-models/DocumentRoot'; const NoRoom = () => { return ( @@ -30,11 +32,11 @@ const NoRoom = () => { ); }; -const NoType = ({ dynamicRoot }: { dynamicRoot: DynamicDocumentRootMeta }) => { +const NoType = ({ dynamicRoot }: { dynamicRoot: DynamicDocumentRoot }) => { return (
- Unbekannter Raum-Typ "{dynamicRoot.props?.type}" + Unbekannter Raum-Typ "{dynamicRoot.roomType}"
@@ -55,23 +57,51 @@ export const NotCreated = () => { type PathParams = { parentRootId: string; documentRootId: string }; const PATHNAME_PATTERN = '/rooms/:parentRootId/:documentRootId?' as const; +interface RoomSwitcherProps { + roomType: RoomType; + dynamicRoot: DynamicDocumentRoot; + documentRoot: DocumentRoot<'dynamic_document_root'>; + apiRoomProps: ApiDynamicDocumentRoot; +} + +const RoomSwitcher = observer((props: RoomSwitcherProps) => { + const { roomType, documentRoot, dynamicRoot, apiRoomProps } = props; + const socketStore = useStore('socketStore'); + const componentStore = useStore('componentStore'); + const RoomComp = React.useMemo(() => componentStore.components.get(roomType)?.component, [roomType]); + console.log('RoomComp', roomType, RoomComp); + React.useEffect(() => { + socketStore.joinRoom(documentRoot.id); + return () => { + socketStore.leaveRoom(documentRoot.id); + }; + }, [documentRoot, socketStore.socket?.id]); + if (!RoomComp) { + return ; + } + return ; +}); + interface Props { - roomProps: DynamicDocumentRoot; + apiRoomProps: ApiDynamicDocumentRoot; parentDocumentId: string; + roomType: RoomType; } + const RoomComponent = observer((props: Props): React.ReactNode => { const documentStore = useStore('documentStore'); - const componentStore = useStore('componentStore'); - const { roomProps } = props; - const [dynamicRoot] = React.useState( - new DynamicDocumentRootMeta({}, roomProps.id, props.parentDocumentId, documentStore) + const { apiRoomProps, roomType } = props; + const dynamicRoot = React.useMemo( + () => + new DynamicDocumentRoot( + { roomType: roomType }, + apiRoomProps.id, + props.parentDocumentId, + documentStore + ), + [apiRoomProps.id, roomType] ); - const RoomComp = React.useMemo( - () => componentStore.components.get(roomProps.type as RoomType)?.component, - [roomProps.type] - ); - const documentRoot = useDocumentRoot(roomProps.id, dynamicRoot, false, {}, true); - + const documentRoot = useDocumentRoot(apiRoomProps.id, dynamicRoot, false, {}, true); if (!documentRoot || documentRoot.type !== 'dynamic_document_root') { return ; } @@ -79,26 +109,30 @@ const RoomComponent = observer((props: Props): React.ReactNode => { return ( <> - + ); } - - if (!RoomComp) { - return ; - } - - return ; + return ( + + ); }); -interface WithParentRootProps { - path: string; +interface WithModelProps { + parentRootId: string; + documentRootId?: string; } -const WithParentRoot = observer((props: WithParentRootProps): React.ReactNode => { - const routeParams = matchPath(props.path, PATHNAME_PATTERN); - const { parentRootId, documentRootId } = routeParams?.params || {}; - const [rootsMeta] = React.useState(new RootsMeta({})); + +const WithParentRoot = observer((props: WithModelProps): React.ReactNode => { + const { parentRootId, documentRootId } = props; + const componentStore = useStore('componentStore'); + const [rootsMeta] = React.useState(new RootsMeta({ roomType: componentStore.defaultRoomType! })); const dynDocRoots = useDocumentRoot(parentRootId, rootsMeta, false, {}, true); if (dynDocRoots.isDummy) { return ; @@ -110,15 +144,33 @@ const WithParentRoot = observer((props: WithParentRootProps): React.ReactNode => return ; } if (!documentRootId || !dynDocRoots.firstMainDocument?.id) { - return ; + return ; } const dynamicRoot = dynDocRoots.firstMainDocument.dynamicDocumentRoots.find( (ddr) => ddr.id === documentRootId ); if (!dynamicRoot) { - return ; + return ; + } + return ( + + ); +}); + +interface WithParentRootProps { + path: string; +} +const WithRouteParams = observer((props: WithParentRootProps) => { + const routeParams = matchPath(props.path, PATHNAME_PATTERN); + const { parentRootId, documentRootId } = routeParams?.params || {}; + if (!parentRootId) { + return ; } - return ; + return ; }); const Rooms = observer(() => { @@ -126,7 +178,7 @@ const Rooms = observer(() => { return ( }> - {() => } + {() => } ); diff --git a/src/components/documents/DynamicDocumentRoots/AddDynamicDocumentRoot/index.tsx b/src/components/documents/DynamicDocumentRoots/AddDynamicDocumentRoot/index.tsx index 524d0f82e..854f721de 100644 --- a/src/components/documents/DynamicDocumentRoots/AddDynamicDocumentRoot/index.tsx +++ b/src/components/documents/DynamicDocumentRoots/AddDynamicDocumentRoot/index.tsx @@ -5,10 +5,9 @@ import { useStore } from '@tdev-hooks/useStore'; import { v4 as uuidv4 } from 'uuid'; import Button from '@tdev-components/shared/Button'; import { mdiPlusCircleOutline } from '@mdi/js'; -import { RoomType } from '@tdev-api/document'; import { RWAccess } from '@tdev-models/helpers/accessPolicy'; -interface Props extends MetaInit { +interface Props extends Partial { dynamicDocumentRoots: DynamicDocumentRoots; } @@ -27,7 +26,6 @@ const AddDynamicDocumentRoot = observer((props: Props) => { if (!user || !user.hasElevatedAccess) { return null; } - return (
diff --git a/src/components/shared/SelectInput/styles.module.scss b/src/components/shared/SelectInput/styles.module.scss index 6748db0e8..1afb11785 100644 --- a/src/components/shared/SelectInput/styles.module.scss +++ b/src/components/shared/SelectInput/styles.module.scss @@ -1,5 +1,4 @@ .dropdown { - appearance: none; border: 1px solid var(--ifm-color-gray-500); border-radius: var(--ifm-button-border-radius); padding: 3.25px; diff --git a/src/models/documents/DynamicDocumentRoot.ts b/src/models/documents/DynamicDocumentRoot.ts index d94eec446..5fb001a9b 100644 --- a/src/models/documents/DynamicDocumentRoot.ts +++ b/src/models/documents/DynamicDocumentRoot.ts @@ -6,32 +6,38 @@ import { DynamicDocumentRoot as DynamicDocumentRootProps, TypeDataMapping, Access, - RoomType + RoomType, + RoomTypeMapping } from '@tdev-api/document'; import DocumentStore from '@tdev-stores/DocumentStore'; import DocumentRoot, { TypeMeta } from '@tdev-models/DocumentRoot'; import DynamicDocumentRoots from './DynamicDocumentRoots'; -export interface MetaInit { +export interface MetaInit { readonly?: boolean; + roomType: T; } -class DynamicDocumentRoot extends TypeMeta<'dynamic_document_root'> { +class DynamicDocumentRoot extends TypeMeta<'dynamic_document_root'> { readonly type = 'dynamic_document_root'; readonly store: DocumentStore; readonly rootDocumentId: string; readonly parentDocumentId: string; + readonly roomType: T; + readonly room: RoomTypeMapping[T] | null; constructor( - props: Partial, + props: MetaInit, rootDocumentId: string, parentDocumentId: string, documentStore: DocumentStore ) { super('dynamic_document_root', props.readonly ? Access.RO_User : undefined); + this.roomType = props.roomType; this.store = documentStore; this.rootDocumentId = rootDocumentId; this.parentDocumentId = parentDocumentId; + this.room = documentStore.createRoom(this); } @computed @@ -58,14 +64,6 @@ class DynamicDocumentRoot extends TypeMeta<'dynamic_document_root'> { return title === undefined ? 'Dynamische Document Root' : title; } - @computed - get roomType(): RoomType | undefined { - if (!this.parentDocument) { - return undefined; - } - return this.props?.type; - } - @action destroy(): void { this.parentDocument?.removeDynamicDocumentRoot(this.rootDocumentId); @@ -85,7 +83,7 @@ class DynamicDocumentRoot extends TypeMeta<'dynamic_document_root'> { if (!this.parentDocument) { return; } - this.parentDocument.setRoomType(this.rootDocumentId, type); + this.parentDocument.setRoomType(type); this.parentDocument.saveNow(); } @@ -110,7 +108,7 @@ export class DynamicDocumentRootModel extends iDocument<'dynamic_document_root'> } @computed - get meta(): DynamicDocumentRoot { + get meta(): DynamicDocumentRoot { throw new Error('Method not implemented.'); } } diff --git a/src/models/documents/DynamicDocumentRoots.ts b/src/models/documents/DynamicDocumentRoots.ts index 059beb90a..7cd68f090 100644 --- a/src/models/documents/DynamicDocumentRoots.ts +++ b/src/models/documents/DynamicDocumentRoots.ts @@ -14,17 +14,21 @@ import { default as DynamicDocRootMeta } from '@tdev-models/documents/DynamicDoc export interface MetaInit { readonly?: boolean; + roomType: RoomType; } export class ModelMeta extends TypeMeta<'dynamic_document_roots'> { readonly type = 'dynamic_document_roots'; + readonly roomType: RoomType; - constructor(props: Partial) { + constructor(props: MetaInit) { super('dynamic_document_roots', props.readonly ? Access.RO_User : undefined); + this.roomType = props.roomType; } get defaultData(): TypeDataMapping['dynamic_document_roots'] { return { + roomType: this.roomType, documentRoots: [] }; } @@ -33,10 +37,12 @@ export class ModelMeta extends TypeMeta<'dynamic_document_roots'> { class DynamicDocumentRoots extends iDocument<'dynamic_document_roots'> { readonly type = 'dynamic_document_roots'; dynamicDocumentRoots = observable.array([]); + @observable accessor roomType: RoomType; constructor(props: DocumentProps<'dynamic_document_roots'>, store: DocumentStore) { super(props, store); this.dynamicDocumentRoots.replace(props.data.documentRoots); + this.roomType = props.data.roomType; } @action @@ -63,20 +69,24 @@ class DynamicDocumentRoots extends iDocument<'dynamic_document_roots'> { { ...current, name: name }, ...this.dynamicDocumentRoots.filter((dr) => dr.id !== id) ]; - this.setData({ documentRoots: renamedRoots }, Source.LOCAL, new Date()); + this.setData({ roomType: this.roomType, documentRoots: renamedRoots }, Source.LOCAL, new Date()); + } + + @computed + get canChangeType() { + return this.linkedDynamicDocumentRoots.every((dr) => dr.allDocuments.length === 0); } @action - setRoomType(id: string, roomType: RoomType) { - const current = this.dynamicDocumentRoots.find((dr) => dr.id === id); - if (!current) { + setRoomType(roomType: RoomType) { + if (!this.canChangeType) { return; } - const renamedRoots: DynamicDocumentRoot[] = [ - { ...current, type: roomType }, - ...this.dynamicDocumentRoots.filter((dr) => dr.id !== id) - ]; - this.setData({ documentRoots: renamedRoots }, Source.LOCAL, new Date()); + this.setData( + { roomType: roomType, documentRoots: this.dynamicDocumentRoots.slice() }, + Source.LOCAL, + new Date() + ); } containsDynamicDocumentRoot(id: string): boolean { @@ -84,20 +94,27 @@ class DynamicDocumentRoots extends iDocument<'dynamic_document_roots'> { } @action - addDynamicDocumentRoot(id: string, name: string, roomType: RoomType) { + addDynamicDocumentRoot(id: string, name: string) { this.store.root.documentRootStore - .create(id, new DynamicDocRootMeta({}, id, this.id, this.store.root.documentStore), { - access: Access.None_DocumentRoot, - sharedAccess: Access.RO_DocumentRoot - }) + .create( + id, + new DynamicDocRootMeta( + { roomType: this.roomType }, + id, + this.id, + this.store.root.documentStore + ), + { + access: Access.None_DocumentRoot, + sharedAccess: Access.RO_DocumentRoot + } + ) .then( action((dynRoot) => { this.setData( { - documentRoots: [ - ...this.dynamicDocumentRoots, - { id: id, name: name, type: roomType } - ] + roomType: this.roomType, + documentRoots: [...this.dynamicDocumentRoots, { id: id, name: name }] }, Source.LOCAL, new Date() @@ -127,17 +144,23 @@ class DynamicDocumentRoots extends iDocument<'dynamic_document_roots'> { const linkedRoot = this.linkedDynamicDocumentRoots.find((dr) => dr.id === id); /** first remove the doc root from the state, otherwise it will be recreated immediately... */ this.setData( - { documentRoots: this.dynamicDocumentRoots.filter((dr) => dr.id !== id) }, + { + roomType: this.roomType, + documentRoots: this.dynamicDocumentRoots.filter((dr) => dr.id !== id) + }, Source.LOCAL, new Date() ); - (this.saveNow() || Promise.resolve()).then(() => { + this.saveNow().then(() => { if (linkedRoot) { this.store.root.documentRootStore.destroy(linkedRoot).then((success) => { if (!success) { /** undo the removal */ this.setData( - { documentRoots: [...this.dynamicDocumentRoots, ddRoot] }, + { + roomType: this.roomType, + documentRoots: [...this.dynamicDocumentRoots, ddRoot] + }, Source.LOCAL, new Date() ); @@ -149,7 +172,8 @@ class DynamicDocumentRoots extends iDocument<'dynamic_document_roots'> { get data(): TypeDataMapping['dynamic_document_roots'] { return { - documentRoots: this.dynamicDocumentRoots.slice() + roomType: this.roomType, + documentRoots: this.dynamicDocumentRoots.map((dr) => ({ ...dr })) }; } @@ -165,7 +189,7 @@ class DynamicDocumentRoots extends iDocument<'dynamic_document_roots'> { if (this.root?.type === 'dynamic_document_roots') { return this.root.meta as ModelMeta; } - return new ModelMeta({}); + return new ModelMeta({ roomType: this.roomType }); } } diff --git a/src/models/documents/DynamicRoom.ts b/src/models/documents/DynamicRoom.ts new file mode 100644 index 000000000..2a4fbadbc --- /dev/null +++ b/src/models/documents/DynamicRoom.ts @@ -0,0 +1,20 @@ +import { DocumentTypes, RoomType } from '@tdev-api/document'; +import type DynamicDocumentRoot from './DynamicDocumentRoot'; +import { computed } from 'mobx'; +import DocumentStore from '@tdev-stores/DocumentStore'; + +class DynamicRoom { + readonly dynamicRoot: DynamicDocumentRoot; + readonly documentStore: DocumentStore; + constructor(dynamicRoot: DynamicDocumentRoot, documentStore: DocumentStore) { + this.dynamicRoot = dynamicRoot; + this.documentStore = documentStore; + } + + @computed + get documents() { + return this.documentStore.findByDocumentRoot(this.dynamicRoot.rootDocumentId); + } +} + +export default DynamicRoom; diff --git a/src/models/iDocument.ts b/src/models/iDocument.ts index 774744a33..086bfae5c 100644 --- a/src/models/iDocument.ts +++ b/src/models/iDocument.ts @@ -6,7 +6,7 @@ import { ApiState } from '@tdev-stores/iStore'; import { NoneAccess, ROAccess, RWAccess } from './helpers/accessPolicy'; import type iSideEffect from './SideEffects/iSideEffect'; import { DUMMY_DOCUMENT_ID } from '@tdev-hooks/useFirstMainDocument'; -import { isDummyId, isTempId } from '@tdev-hooks/useDummyId'; +import { isTempId } from '@tdev-hooks/useDummyId'; /** * normally, save only once all 1000ms diff --git a/src/stores/ComponentStore.ts b/src/stores/ComponentStore.ts index da55805bd..5bd0e5dd1 100644 --- a/src/stores/ComponentStore.ts +++ b/src/stores/ComponentStore.ts @@ -1,15 +1,23 @@ import { RootStore } from './rootStore'; import type DocumentRoot from '@tdev-models/DocumentRoot'; -import { DynamicDocumentRoot } from '@tdev-api/document'; +import { DynamicDocumentRoot as ApiDynamicDocumentRoot } from '@tdev-api/document'; import type { RoomType } from '@tdev-api/document'; +import DynamicDocumentRoot from '@tdev-models/documents/DynamicDocumentRoot'; -interface RoomComponent { +export interface ApiRoomProps { + documentRoot: DocumentRoot<'dynamic_document_root'>; + apiRoomProps: ApiDynamicDocumentRoot; +} + +export interface DynamicRoomProps { + documentRoot: DocumentRoot<'dynamic_document_root'>; + dynamicRoot: DynamicDocumentRoot; +} + +export interface RoomComponent { name: string; description: string; - component: React.ComponentType<{ - documentRoot: DocumentRoot<'dynamic_document_root'>; - roomProps: DynamicDocumentRoot; - }>; + component: React.ComponentType>; default?: boolean; } diff --git a/src/stores/DocumentRootStore.ts b/src/stores/DocumentRootStore.ts index dbae3a2c7..ccb3425bf 100644 --- a/src/stores/DocumentRootStore.ts +++ b/src/stores/DocumentRootStore.ts @@ -14,10 +14,11 @@ import { import iStore from '@tdev-stores/iStore'; import GroupPermission from '@tdev-models/GroupPermission'; import UserPermission from '@tdev-models/UserPermission'; -import { DocumentType } from '@tdev-api/document'; +import { DocumentType, RoomType, RoomTypeMapping } from '@tdev-api/document'; import _ from 'es-toolkit/compat'; import User from '@tdev-models/User'; import { NoneAccess } from '@tdev-models/helpers/accessPolicy'; +import DynamicDocumentRoot from '@tdev-models/documents/DynamicDocumentRoot'; type LoadConfig = { documents?: boolean; diff --git a/src/stores/DocumentStore.ts b/src/stores/DocumentStore.ts index 76d145446..0f6b241d5 100644 --- a/src/stores/DocumentStore.ts +++ b/src/stores/DocumentStore.ts @@ -12,7 +12,10 @@ import { update as apiUpdate, ADMIN_EDITABLE_DOCUMENTS, linkTo as apiLinkTo, - Factory + Factory, + RoomType, + RoomTypeMapping, + RoomFactory } from '@tdev-api/document'; import iStore from '@tdev-stores/iStore'; import axios from 'axios'; @@ -30,7 +33,7 @@ import MdxComment from '@tdev-models/documents/MdxComment'; import Restricted from '@tdev-models/documents/Restricted'; import CmsText from '@tdev-models/documents/CmsText'; import DynamicDocumentRoots from '@tdev-models/documents/DynamicDocumentRoots'; -import { DynamicDocumentRootModel } from '@tdev-models/documents/DynamicDocumentRoot'; +import DynamicDocumentRoot, { DynamicDocumentRootModel } from '@tdev-models/documents/DynamicDocumentRoot'; import ProgressState from '@tdev-models/documents/ProgressState'; import Script from '@tdev-models/documents/Script'; import TaskState from '@tdev-models/documents/TaskState'; @@ -74,7 +77,7 @@ export function CreateDocumentModel(data: DocumentProps, store: Do case 'cms_text': return new CmsText(data as DocumentProps<'cms_text'>, store); case 'dynamic_document_root': - return new DynamicDocumentRootModel(data as DocumentProps<'dynamic_document_root'>, store); + throw new Error(`Dynamic Document Root's can't be instantiated.`); case 'dynamic_document_roots': return new DynamicDocumentRoots(data as DocumentProps<'dynamic_document_roots'>, store); case 'progress_state': @@ -103,6 +106,7 @@ class DocumentStore extends iStore<`delete-${string}`> { readonly root: RootStore; documents = observable.array([]); factories = new Map(FactoryDefault); + roomFactories = new Map(); constructor(root: RootStore) { super(); @@ -137,6 +141,19 @@ class DocumentStore extends iStore<`delete-${string}`> { return factory(data, this) as TypeModelMapping[Type]; } + registerRoomFactory(type: RoomType, factory: RoomFactory) { + this.roomFactories.set(type, factory); + } + + createRoom(docRoot: DynamicDocumentRoot): RoomTypeMapping[Type] | null { + const factory = this.roomFactories.get(docRoot.roomType); + if (!factory) { + console.warn(`No factory registered for document type ${docRoot.roomType}`); + return null; + } + return factory(docRoot, this.root.documentStore) as RoomTypeMapping[Type]; + } + @action addDocument(document: DocumentTypes) { this.documents.push(document); @@ -301,6 +318,7 @@ class DocumentStore extends iStore<`delete-${string}`> { @action handleUpdate(change: ChangedDocument) { + console.log('DocumentStore.handleUpdate', change); const model = this.find(change.id); if (model) { const updatedAt = new Date(change.updatedAt); diff --git a/src/stores/PermissionStore.ts b/src/stores/PermissionStore.ts index 94b398440..1c198c969 100644 --- a/src/stores/PermissionStore.ts +++ b/src/stores/PermissionStore.ts @@ -243,6 +243,7 @@ class PermissionStore extends iStore<`update-${string}`> { return Promise.resolve(); } this.withAbortController(`load-permissions-${documentRoot.id}`, async (signal) => { + console.log('Loading permissions for document root', documentRoot.id); return permissionsFor(documentRoot.id, signal.signal).then( action(({ data }) => { const docRootId = data.id; diff --git a/tdev-website/siteConfig.ts b/tdev-website/siteConfig.ts index 006aca706..dadb25d52 100644 --- a/tdev-website/siteConfig.ts +++ b/tdev-website/siteConfig.ts @@ -73,7 +73,8 @@ const getSiteConfig: SiteConfigProvider = () => { }, apiDocumentProviders: [ require.resolve('@tdev/netpbm-graphic/register'), - require.resolve('@tdev/text-message/register') + require.resolve('@tdev/text-message/register'), + require.resolve('@hfr/circuit/register') ] }; }; diff --git a/yarn.lock b/yarn.lock index b50f58faf..434353e28 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,50 +2,50 @@ # yarn lockfile v1 -"@ai-sdk/gateway@2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@ai-sdk/gateway/-/gateway-2.0.15.tgz#16db3b2fa8305a6b639d056ff4269127949cb9d5" - integrity sha512-i1YVKzC1dg9LGvt+GthhD7NlRhz9J4+ZRj3KELU14IZ/MHPsOBiFeEoCCIDLR+3tqT8/+5nIsK3eZ7DFRfMfdw== +"@ai-sdk/gateway@2.0.24": + version "2.0.24" + resolved "https://registry.yarnpkg.com/@ai-sdk/gateway/-/gateway-2.0.24.tgz#6b02cb1bb4dac96efd5c6b52eb73ea4aec44d379" + integrity sha512-mflk80YF8hj8vrF9e1IHhovGKC1ubX+sY88pesSk3pUiXfH5VPO8dgzNnxjwsqsCZrnkHcztxS5cSl4TzSiEuA== dependencies: - "@ai-sdk/provider" "2.0.0" - "@ai-sdk/provider-utils" "3.0.17" + "@ai-sdk/provider" "2.0.1" + "@ai-sdk/provider-utils" "3.0.20" "@vercel/oidc" "3.0.5" -"@ai-sdk/provider-utils@3.0.17": - version "3.0.17" - resolved "https://registry.yarnpkg.com/@ai-sdk/provider-utils/-/provider-utils-3.0.17.tgz#2f3d0be398d3f165efe8dd252b63aea6ac3896d1" - integrity sha512-TR3Gs4I3Tym4Ll+EPdzRdvo/rc8Js6c4nVhFLuvGLX/Y4V9ZcQMa/HTiYsHEgmYrf1zVi6Q145UEZUfleOwOjw== +"@ai-sdk/provider-utils@3.0.20": + version "3.0.20" + resolved "https://registry.yarnpkg.com/@ai-sdk/provider-utils/-/provider-utils-3.0.20.tgz#61d7741065550833eae3ac6440d943e9d3d25120" + integrity sha512-iXHVe0apM2zUEzauqJwqmpC37A5rihrStAih5Ks+JE32iTe4LZ58y17UGBjpQQTCRw9YxMeo2UFLxLpBluyvLQ== dependencies: - "@ai-sdk/provider" "2.0.0" + "@ai-sdk/provider" "2.0.1" "@standard-schema/spec" "^1.0.0" eventsource-parser "^3.0.6" -"@ai-sdk/provider@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@ai-sdk/provider/-/provider-2.0.0.tgz#b853c739d523b33675bc74b6c506b2c690bc602b" - integrity sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA== +"@ai-sdk/provider@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@ai-sdk/provider/-/provider-2.0.1.tgz#4aba415f1815da33a7a81e5f41a0219af53278c0" + integrity sha512-KCUwswvsC5VsW2PWFqF8eJgSCu5Ysj7m1TxiHTVA6g7k360bk0RNQENT8KTMAYEs+8fWPD3Uu4dEmzGHc+jGng== dependencies: json-schema "^0.4.0" "@ai-sdk/react@^2.0.30": - version "2.0.102" - resolved "https://registry.yarnpkg.com/@ai-sdk/react/-/react-2.0.102.tgz#8c263ae84b2f87e4943baeec2d15e8c475987ccc" - integrity sha512-EQnlat8yvyCRAVG/7ukdFNozuMdTY9DX6pN8KngfnJkBJtH+bpXZXkJlonbmd7RJ8oGMqRUAZhQSaOy0a4E1Yw== + version "2.0.119" + resolved "https://registry.yarnpkg.com/@ai-sdk/react/-/react-2.0.119.tgz#8b1c4d849e59d0462b182f3ca3dc0cd4cda95242" + integrity sha512-kl4CDAnKJ1z+Fc9cjwMQXLRqH5/gHhg8Jn9qW7sZ0LgL8VpiDmW+x+s8e588nE3eC88aL1OxOVyOE6lFYfWprw== dependencies: - "@ai-sdk/provider-utils" "3.0.17" - ai "5.0.102" + "@ai-sdk/provider-utils" "3.0.20" + ai "5.0.117" swr "^2.2.5" throttleit "2.1.0" -"@algolia/abtesting@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.11.0.tgz#e6561f2cb17978445eb8b8aff339ee7a2f985daa" - integrity sha512-a7oQ8dwiyoyVmzLY0FcuBqyqcNSq78qlcOtHmNBumRlHCSnXDcuoYGBGPN1F6n8JoGhviDDsIaF/oQrzTzs6Lg== +"@algolia/abtesting@1.12.2": + version "1.12.2" + resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.12.2.tgz#1cba5e3c654d02c6d435822a0a0070a5c435daa6" + integrity sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ== dependencies: - "@algolia/client-common" "5.45.0" - "@algolia/requester-browser-xhr" "5.45.0" - "@algolia/requester-fetch" "5.45.0" - "@algolia/requester-node-http" "5.45.0" + "@algolia/client-common" "5.46.2" + "@algolia/requester-browser-xhr" "5.46.2" + "@algolia/requester-fetch" "5.46.2" + "@algolia/requester-node-http" "5.46.2" "@algolia/autocomplete-core@1.19.2": version "1.19.2" @@ -67,126 +67,126 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz#c0b7b8dc30a5c65b70501640e62b009535e4578f" integrity sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w== -"@algolia/client-abtesting@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.45.0.tgz#7e1984b02d58ce965bf190080b3ffa10c738ddbd" - integrity sha512-WTW0VZA8xHMbzuQD5b3f41ovKZ0MNTIXkWfm0F2PU+XGcLxmxX15UqODzF2sWab0vSbi3URM1xLhJx+bXbd1eQ== - dependencies: - "@algolia/client-common" "5.45.0" - "@algolia/requester-browser-xhr" "5.45.0" - "@algolia/requester-fetch" "5.45.0" - "@algolia/requester-node-http" "5.45.0" - -"@algolia/client-analytics@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.45.0.tgz#4f58d6c1c8d43afeedfd8ef7b84b49e3e7cdff14" - integrity sha512-I3g7VtvG/QJOH3tQO7E7zWTwBfK/nIQXShFLR8RvPgWburZ626JNj332M3wHCYcaAMivN9WJG66S2JNXhm6+Xg== - dependencies: - "@algolia/client-common" "5.45.0" - "@algolia/requester-browser-xhr" "5.45.0" - "@algolia/requester-fetch" "5.45.0" - "@algolia/requester-node-http" "5.45.0" - -"@algolia/client-common@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.45.0.tgz#c674f7f47a5f0013e3ab717929e51a6109af2dd2" - integrity sha512-/nTqm1tLiPtbUr+8kHKyFiCOfhRfgC+JxLvOCq471gFZZOlsh6VtFRiKI60/zGmHTojFC6B0mD80PB7KeK94og== - -"@algolia/client-insights@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.45.0.tgz#ca7128edec95da8217da76f867b8cd2c2a05f682" - integrity sha512-suQTx/1bRL1g/K2hRtbK3ANmbzaZCi13487sxxmqok+alBDKKw0/TI73ZiHjjFXM2NV52inwwcmW4fUR45206Q== - dependencies: - "@algolia/client-common" "5.45.0" - "@algolia/requester-browser-xhr" "5.45.0" - "@algolia/requester-fetch" "5.45.0" - "@algolia/requester-node-http" "5.45.0" - -"@algolia/client-personalization@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.45.0.tgz#e674b76b4dd5a8e89d9f157cbc958d68fbeb1c60" - integrity sha512-CId/dbjpzI3eoUhPU6rt/z4GrRsDesqFISEMOwrqWNSrf4FJhiUIzN42Ac+Gzg69uC0RnzRYy60K1y4Na5VSMw== - dependencies: - "@algolia/client-common" "5.45.0" - "@algolia/requester-browser-xhr" "5.45.0" - "@algolia/requester-fetch" "5.45.0" - "@algolia/requester-node-http" "5.45.0" - -"@algolia/client-query-suggestions@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.45.0.tgz#6bad2a7eaa7e1a6ecf1a7960c2056e08ee0302b6" - integrity sha512-tjbBKfA8fjAiFtvl9g/MpIPiD6pf3fj7rirVfh1eMIUi8ybHP4ovDzIaE216vHuRXoePQVCkMd2CokKvYq1CLw== - dependencies: - "@algolia/client-common" "5.45.0" - "@algolia/requester-browser-xhr" "5.45.0" - "@algolia/requester-fetch" "5.45.0" - "@algolia/requester-node-http" "5.45.0" - -"@algolia/client-search@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.45.0.tgz#709f5fb2a13487fa6327b31306654a2c694c0fe9" - integrity sha512-nxuCid+Nszs4xqwIMDw11pRJPes2c+Th1yup/+LtpjFH8QWXkr3SirNYSD3OXAeM060HgWWPLA8/Fxk+vwxQOA== - dependencies: - "@algolia/client-common" "5.45.0" - "@algolia/requester-browser-xhr" "5.45.0" - "@algolia/requester-fetch" "5.45.0" - "@algolia/requester-node-http" "5.45.0" +"@algolia/client-abtesting@5.46.2": + version "5.46.2" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.46.2.tgz#264a72f0e9d2fe0d0dc5c3d2d16bbb9cfe2ce9e8" + integrity sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A== + dependencies: + "@algolia/client-common" "5.46.2" + "@algolia/requester-browser-xhr" "5.46.2" + "@algolia/requester-fetch" "5.46.2" + "@algolia/requester-node-http" "5.46.2" + +"@algolia/client-analytics@5.46.2": + version "5.46.2" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.46.2.tgz#3f00a237508aa0c46c9c02dea9c855e0a78e241f" + integrity sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA== + dependencies: + "@algolia/client-common" "5.46.2" + "@algolia/requester-browser-xhr" "5.46.2" + "@algolia/requester-fetch" "5.46.2" + "@algolia/requester-node-http" "5.46.2" + +"@algolia/client-common@5.46.2": + version "5.46.2" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.46.2.tgz#7f282fd8f721b0d96958445df2170f4c7dce6aac" + integrity sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg== + +"@algolia/client-insights@5.46.2": + version "5.46.2" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.46.2.tgz#194b7b529ee8a4ffd5d70037745082996c3b9aa0" + integrity sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA== + dependencies: + "@algolia/client-common" "5.46.2" + "@algolia/requester-browser-xhr" "5.46.2" + "@algolia/requester-fetch" "5.46.2" + "@algolia/requester-node-http" "5.46.2" + +"@algolia/client-personalization@5.46.2": + version "5.46.2" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.46.2.tgz#d604da7f0a3df1b3e2a9fe338d368e48fb781f8e" + integrity sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA== + dependencies: + "@algolia/client-common" "5.46.2" + "@algolia/requester-browser-xhr" "5.46.2" + "@algolia/requester-fetch" "5.46.2" + "@algolia/requester-node-http" "5.46.2" + +"@algolia/client-query-suggestions@5.46.2": + version "5.46.2" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.46.2.tgz#f13bc5897bfbdc19509d430a26e9bbe2402e00c9" + integrity sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w== + dependencies: + "@algolia/client-common" "5.46.2" + "@algolia/requester-browser-xhr" "5.46.2" + "@algolia/requester-fetch" "5.46.2" + "@algolia/requester-node-http" "5.46.2" + +"@algolia/client-search@5.46.2": + version "5.46.2" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.46.2.tgz#771367916aaa3fb7a19d5944f8375504b0568ba6" + integrity sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA== + dependencies: + "@algolia/client-common" "5.46.2" + "@algolia/requester-browser-xhr" "5.46.2" + "@algolia/requester-fetch" "5.46.2" + "@algolia/requester-node-http" "5.46.2" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/ingestion@1.45.0": - version "1.45.0" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.45.0.tgz#f99eb766a0cff112d65834ee1a43e08d18bc5f2a" - integrity sha512-t+1doBzhkQTeOOjLHMlm4slmXBhvgtEGQhOmNpMPTnIgWOyZyESWdm+XD984qM4Ej1i9FRh8VttOGrdGnAjAng== +"@algolia/ingestion@1.46.2": + version "1.46.2" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.46.2.tgz#2a5d8a592d9f864dfb438722506382af56f8554f" + integrity sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ== dependencies: - "@algolia/client-common" "5.45.0" - "@algolia/requester-browser-xhr" "5.45.0" - "@algolia/requester-fetch" "5.45.0" - "@algolia/requester-node-http" "5.45.0" + "@algolia/client-common" "5.46.2" + "@algolia/requester-browser-xhr" "5.46.2" + "@algolia/requester-fetch" "5.46.2" + "@algolia/requester-node-http" "5.46.2" -"@algolia/monitoring@1.45.0": - version "1.45.0" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.45.0.tgz#09e7320973741f829badb5fa47c54cbc512bb0bc" - integrity sha512-IaX3ZX1A/0wlgWZue+1BNWlq5xtJgsRo7uUk/aSiYD7lPbJ7dFuZ+yTLFLKgbl4O0QcyHTj1/mSBj9ryF1Lizg== +"@algolia/monitoring@1.46.2": + version "1.46.2" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.46.2.tgz#bd199368a49cb799cf12cfe76c49de6dd3021148" + integrity sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw== dependencies: - "@algolia/client-common" "5.45.0" - "@algolia/requester-browser-xhr" "5.45.0" - "@algolia/requester-fetch" "5.45.0" - "@algolia/requester-node-http" "5.45.0" + "@algolia/client-common" "5.46.2" + "@algolia/requester-browser-xhr" "5.46.2" + "@algolia/requester-fetch" "5.46.2" + "@algolia/requester-node-http" "5.46.2" -"@algolia/recommend@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.45.0.tgz#06dc022d85f8a0b6a93dd70c690a236d4ee745a3" - integrity sha512-1jeMLoOhkgezCCPsOqkScwYzAAc1Jr5T2hisZl0s32D94ZV7d1OHozBukgOjf8Dw+6Hgi6j52jlAdUWTtkX9Mg== +"@algolia/recommend@5.46.2": + version "5.46.2" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.46.2.tgz#e74bade1254046ed9be8ccd37f2a116ab9799508" + integrity sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q== dependencies: - "@algolia/client-common" "5.45.0" - "@algolia/requester-browser-xhr" "5.45.0" - "@algolia/requester-fetch" "5.45.0" - "@algolia/requester-node-http" "5.45.0" + "@algolia/client-common" "5.46.2" + "@algolia/requester-browser-xhr" "5.46.2" + "@algolia/requester-fetch" "5.46.2" + "@algolia/requester-node-http" "5.46.2" -"@algolia/requester-browser-xhr@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.45.0.tgz#0cb197014e2344a7f58aef245c10831597d23fdd" - integrity sha512-46FIoUkQ9N7wq4/YkHS5/W9Yjm4Ab+q5kfbahdyMpkBPJ7IBlwuNEGnWUZIQ6JfUZuJVojRujPRHMihX4awUMg== +"@algolia/requester-browser-xhr@5.46.2": + version "5.46.2" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.46.2.tgz#7662480143405e815e1eed99136b4b2acd838ee7" + integrity sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg== dependencies: - "@algolia/client-common" "5.45.0" + "@algolia/client-common" "5.46.2" -"@algolia/requester-fetch@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.45.0.tgz#df040b30f67e70b074e7a740874befd191bb6067" - integrity sha512-XFTSAtCwy4HdBhSReN2rhSyH/nZOM3q3qe5ERG2FLbYId62heIlJBGVyAPRbltRwNlotlydbvSJ+SQ0ruWC2cw== +"@algolia/requester-fetch@5.46.2": + version "5.46.2" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.46.2.tgz#dee07f0131b75f30d083bafd6fb878afe7402eb9" + integrity sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw== dependencies: - "@algolia/client-common" "5.45.0" + "@algolia/client-common" "5.46.2" -"@algolia/requester-node-http@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.45.0.tgz#d96196d538d3ad5c25e3e21b469e92b19b442153" - integrity sha512-8mTg6lHx5i44raCU52APsu0EqMsdm4+7Hch/e4ZsYZw0hzwkuaMFh826ngnkYf9XOl58nHoou63aZ874m8AbpQ== +"@algolia/requester-node-http@5.46.2": + version "5.46.2" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.46.2.tgz#7869d67cb2926bbdbfbfed2b4757e547c2e227eb" + integrity sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg== dependencies: - "@algolia/client-common" "5.45.0" + "@algolia/client-common" "5.46.2" "@ampproject/remapping@^2.3.0": version "2.3.0" @@ -204,11 +204,6 @@ package-manager-detector "^1.3.0" tinyexec "^1.0.1" -"@antfu/utils@^9.2.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-9.3.0.tgz#e05e277f788ac3bec771f57a49fb64546bb32374" - integrity sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA== - "@babel/code-frame@7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7" @@ -1154,16 +1149,11 @@ resolved "https://registry.yarnpkg.com/@better-auth/utils/-/utils-0.3.0.tgz#066c5ce82bf393421547dd887b14a6899310003d" integrity sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw== -"@better-fetch/fetch@1.1.21": +"@better-fetch/fetch@1.1.21", "@better-fetch/fetch@^1.1.4": version "1.1.21" resolved "https://registry.yarnpkg.com/@better-fetch/fetch/-/fetch-1.1.21.tgz#2b4990e73c46b0ae5e66b247083610ff8c37bddc" integrity sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A== -"@better-fetch/fetch@^1.1.4": - version "1.1.18" - resolved "https://registry.yarnpkg.com/@better-fetch/fetch/-/fetch-1.1.18.tgz#4ddc65a703c65e6036947ff335e635a5a38e6225" - integrity sha512-rEFOE1MYIsBmoMJtQbl32PGHHXuG2hDxvEd7rUHE0vCBoFQVSDqaVs9hkZEtHCxRoY+CljXKFCOuJ8uxqw1LcA== - "@braintree/sanitize-url@6.0.2": version "6.0.2" resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" @@ -1222,9 +1212,9 @@ "@lezer/common" "^1.0.0" "@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.3", "@codemirror/commands@^6.2.4": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.10.0.tgz#b3206984fec8443c4d910565eb2e9d591c7d80b2" - integrity sha512-2xUIc5mHXQzT16JnyOFkh8PvfeXuIut3pslWGfsGOhxP/lpgRm9HOl/mpzLErgt5mXDovqA0d11P21gofRLb9w== + version "6.10.1" + resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.10.1.tgz#a17a48f846947f48150b9670a3de8c4352b69256" + integrity sha512-uWDWFypNdQmz2y1LaNJzK7fL7TYKLeUAU0npEC685OKTF3KcQ2Vu3klIM78D7I6wGhktme0lh3CuQLv0ZCrD9Q== dependencies: "@codemirror/language" "^6.0.0" "@codemirror/state" "^6.4.0" @@ -1340,9 +1330,9 @@ "@lezer/lr" "^1.0.0" "@codemirror/lang-liquid@^6.0.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@codemirror/lang-liquid/-/lang-liquid-6.3.0.tgz#f77fdc4b6c5062ba7ce5525f9839d1e9d7a0e356" - integrity sha512-fY1YsUExcieXRTsCiwX/bQ9+PbCTA/Fumv7C7mTUZHoFkibfESnaXwpr2aKH6zZVwysEunsHHkaIpM/pl3xETQ== + version "6.3.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-liquid/-/lang-liquid-6.3.1.tgz#3cf26003a1b3f4233eafd2a287cf64eb4a12dbc1" + integrity sha512-S/jE/D7iij2Pu70AC65ME6AYWxOOcX20cSJvaPgY5w7m2sfxsArAcUAuUgm/CZCVmqoi9KiOlS7gj/gyLipABw== dependencies: "@codemirror/autocomplete" "^6.0.0" "@codemirror/lang-html" "^6.0.0" @@ -1496,13 +1486,13 @@ "@codemirror/legacy-modes" "^6.4.0" "@codemirror/language@^6.0.0", "@codemirror/language@^6.3.0", "@codemirror/language@^6.3.2", "@codemirror/language@^6.4.0", "@codemirror/language@^6.6.0", "@codemirror/language@^6.8.0": - version "6.11.3" - resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.11.3.tgz#8e6632df566a7ed13a1bd307f9837765bb1abfdd" - integrity sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA== + version "6.12.1" + resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.12.1.tgz#d615f7b099a39248312feaaf0bfafce4418aac1b" + integrity sha512-Fa6xkSiuGKc8XC8Cn96T+TQHYj4ZZ7RdFmXA3i9xe/3hLHfwPZdM+dqfX0Cp0zQklBKhVD8Yzc8LS45rkqcwpQ== dependencies: "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.23.0" - "@lezer/common" "^1.1.0" + "@lezer/common" "^1.5.0" "@lezer/highlight" "^1.0.0" "@lezer/lr" "^1.0.0" style-mod "^4.0.0" @@ -1544,16 +1534,16 @@ crelt "^1.0.5" "@codemirror/state@^6.0.0", "@codemirror/state@^6.2.0", "@codemirror/state@^6.4.0", "@codemirror/state@^6.5.0": - version "6.5.2" - resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.5.2.tgz#8eca3a64212a83367dc85475b7d78d5c9b7076c6" - integrity sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA== + version "6.5.3" + resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.5.3.tgz#256e256d466f49ed0879d462031de8bd541e1403" + integrity sha512-MerMzJzlXogk2fxWFU1nKp36bY5orBG59HnPiz0G9nLRebWa0zXuv2siH6PLIHBvv5TH8CkQRqjBs0MlxCZu+A== dependencies: "@marijn/find-cluster-break" "^1.0.0" "@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0", "@codemirror/view@^6.7.1": - version "6.38.8" - resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.38.8.tgz#b7a746fc785defc16e96a2560bb073adabe8538a" - integrity sha512-XcE9fcnkHCbWkjeKyi0lllwXmBLtyYb5dt89dJyx23I9+LSh5vZDIuk7OLG4VM1lgrXZQcY6cxyZyk5WVPRv/A== + version "6.39.8" + resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.39.8.tgz#d761e161b2b72ed71b3c97a6ff622db1cc10099c" + integrity sha512-1rASYd9Z/mE3tkbC9wInRlCNyCkSn+nLsiQKZhEDUUJiUfs/5FHDpCUDaQpoTIaNGeDc6/bhaEAyLmeEucEFPw== dependencies: "@codemirror/state" "^6.5.0" crelt "^1.0.6" @@ -1894,6 +1884,11 @@ "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" +"@csstools/postcss-position-area-property@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-position-area-property/-/postcss-position-area-property-1.0.0.tgz#41f0cbc737a81a42890d5ec035fa26a45f4f4ad4" + integrity sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q== + "@csstools/postcss-progressive-custom-properties@^4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz#c39780b9ff0d554efb842b6bd75276aa6f1705db" @@ -1901,6 +1896,14 @@ dependencies: postcss-value-parser "^4.2.0" +"@csstools/postcss-property-rule-prelude-list@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-property-rule-prelude-list/-/postcss-property-rule-prelude-list-1.0.0.tgz#700b7aa41228c02281bda074ae778f36a09da188" + integrity sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-random-function@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz#3191f32fe72936e361dadf7dbfb55a0209e2691e" @@ -1946,6 +1949,21 @@ "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" +"@csstools/postcss-syntax-descriptor-syntax-production@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-syntax-descriptor-syntax-production/-/postcss-syntax-descriptor-syntax-production-1.0.1.tgz#98590e372e547cdae60aef47cfee11f3881307dd" + integrity sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow== + dependencies: + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-system-ui-font-family@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-system-ui-font-family/-/postcss-system-ui-font-family-1.0.0.tgz#bd65b79078debf6f67b318dc9b71a8f9fa16f8c8" + integrity sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-text-decoration-shorthand@^4.0.3": version "4.0.3" resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz#fae1b70f07d1b7beb4c841c86d69e41ecc6f743c" @@ -1988,25 +2006,25 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@docsearch/core@4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@docsearch/core/-/core-4.3.1.tgz#88a97a6fe4d4025269b6dee8b9d070b76758ad82" - integrity sha512-ktVbkePE+2h9RwqCUMbWXOoebFyDOxHqImAqfs+lC8yOU+XwEW4jgvHGJK079deTeHtdhUNj0PXHSnhJINvHzQ== +"@docsearch/core@4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@docsearch/core/-/core-4.4.0.tgz#206c0df38ee08cf0d6e33c4eaee140706931b311" + integrity sha512-kiwNo5KEndOnrf5Kq/e5+D9NBMCFgNsDoRpKQJ9o/xnSlheh6b8AXppMuuUVVdAUIhIfQFk/07VLjjk/fYyKmw== -"@docsearch/css@4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-4.3.2.tgz#d47d25336c9516b419245fa74e8dd5ae84a17492" - integrity sha512-K3Yhay9MgkBjJJ0WEL5MxnACModX9xuNt3UlQQkDEDZJZ0+aeWKtOkxHNndMRkMBnHdYvQjxkm6mdlneOtU1IQ== +"@docsearch/css@4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-4.4.0.tgz#b8eebd21a1f79720bf037fda5242b910367f157e" + integrity sha512-e9vPgtih6fkawakmYo0Y6V4BKBmDV7Ykudn7ADWXUs5b6pmtBRwDbpSG/WiaUG63G28OkJDEnsMvgIAnZgGwYw== "@docsearch/react@^3.9.0 || ^4.1.0": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-4.3.2.tgz#450b8341cb5cca03737a00075d4dfd3a904a3e3e" - integrity sha512-74SFD6WluwvgsOPqifYOviEEVwDxslxfhakTlra+JviaNcs7KK/rjsPj89kVEoQc9FUxRkAofaJnHIR7pb4TSQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-4.4.0.tgz#f69bd533305a07247f4850ee74af11e784b99658" + integrity sha512-z12zeg1mV7WD4Ag4pKSuGukETJLaucVFwszDXL/qLaEgRqxEaVacO9SR1qqnCXvZztlvz2rt7cMqryi/7sKfjA== dependencies: "@ai-sdk/react" "^2.0.30" "@algolia/autocomplete-core" "1.19.2" - "@docsearch/core" "4.3.1" - "@docsearch/css" "4.3.2" + "@docsearch/core" "4.4.0" + "@docsearch/css" "4.4.0" ai "^5.0.30" algoliasearch "^5.28.0" marked "^16.3.0" @@ -2653,245 +2671,245 @@ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== -"@esbuild/aix-ppc64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz#80fcbe36130e58b7670511e888b8e88a259ed76c" - integrity sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA== +"@esbuild/aix-ppc64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz#521cbd968dcf362094034947f76fa1b18d2d403c" + integrity sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw== "@esbuild/android-arm64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== -"@esbuild/android-arm64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz#8aa4965f8d0a7982dc21734bf6601323a66da752" - integrity sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg== +"@esbuild/android-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz#61ea550962d8aa12a9b33194394e007657a6df57" + integrity sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA== "@esbuild/android-arm@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== -"@esbuild/android-arm@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz#300712101f7f50f1d2627a162e6e09b109b6767a" - integrity sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg== +"@esbuild/android-arm@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.2.tgz#554887821e009dd6d853f972fde6c5143f1de142" + integrity sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA== "@esbuild/android-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== -"@esbuild/android-x64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz#87dfb27161202bdc958ef48bb61b09c758faee16" - integrity sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg== +"@esbuild/android-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.2.tgz#a7ce9d0721825fc578f9292a76d9e53334480ba2" + integrity sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A== "@esbuild/darwin-arm64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== -"@esbuild/darwin-arm64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz#79197898ec1ff745d21c071e1c7cc3c802f0c1fd" - integrity sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg== +"@esbuild/darwin-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz#2cb7659bd5d109803c593cfc414450d5430c8256" + integrity sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg== "@esbuild/darwin-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== -"@esbuild/darwin-x64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz#146400a8562133f45c4d2eadcf37ddd09718079e" - integrity sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA== +"@esbuild/darwin-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz#e741fa6b1abb0cd0364126ba34ca17fd5e7bf509" + integrity sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA== "@esbuild/freebsd-arm64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== -"@esbuild/freebsd-arm64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz#1c5f9ba7206e158fd2b24c59fa2d2c8bb47ca0fe" - integrity sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg== +"@esbuild/freebsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz#2b64e7116865ca172d4ce034114c21f3c93e397c" + integrity sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g== "@esbuild/freebsd-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== -"@esbuild/freebsd-x64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz#ea631f4a36beaac4b9279fa0fcc6ca29eaeeb2b3" - integrity sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ== +"@esbuild/freebsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz#e5252551e66f499e4934efb611812f3820e990bb" + integrity sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA== "@esbuild/linux-arm64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== -"@esbuild/linux-arm64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz#e1066bce58394f1b1141deec8557a5f0a22f5977" - integrity sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ== +"@esbuild/linux-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz#dc4acf235531cd6984f5d6c3b13dbfb7ddb303cb" + integrity sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw== "@esbuild/linux-arm@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== -"@esbuild/linux-arm@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz#452cd66b20932d08bdc53a8b61c0e30baf4348b9" - integrity sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw== +"@esbuild/linux-arm@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz#56a900e39240d7d5d1d273bc053daa295c92e322" + integrity sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw== "@esbuild/linux-ia32@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== -"@esbuild/linux-ia32@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz#b24f8acc45bcf54192c7f2f3be1b53e6551eafe0" - integrity sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA== +"@esbuild/linux-ia32@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz#d4a36d473360f6870efcd19d52bbfff59a2ed1cc" + integrity sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w== "@esbuild/linux-loong64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== -"@esbuild/linux-loong64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz#f9cfffa7fc8322571fbc4c8b3268caf15bd81ad0" - integrity sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng== +"@esbuild/linux-loong64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz#fcf0ab8c3eaaf45891d0195d4961cb18b579716a" + integrity sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg== "@esbuild/linux-mips64el@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== -"@esbuild/linux-mips64el@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz#575a14bd74644ffab891adc7d7e60d275296f2cd" - integrity sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw== +"@esbuild/linux-mips64el@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz#598b67d34048bb7ee1901cb12e2a0a434c381c10" + integrity sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw== "@esbuild/linux-ppc64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== -"@esbuild/linux-ppc64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz#75b99c70a95fbd5f7739d7692befe60601591869" - integrity sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA== +"@esbuild/linux-ppc64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz#3846c5df6b2016dab9bc95dde26c40f11e43b4c0" + integrity sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ== "@esbuild/linux-riscv64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== -"@esbuild/linux-riscv64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz#2e3259440321a44e79ddf7535c325057da875cd6" - integrity sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w== +"@esbuild/linux-riscv64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz#173d4475b37c8d2c3e1707e068c174bb3f53d07d" + integrity sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA== "@esbuild/linux-s390x@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== -"@esbuild/linux-s390x@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz#17676cabbfe5928da5b2a0d6df5d58cd08db2663" - integrity sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg== +"@esbuild/linux-s390x@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz#f7a4790105edcab8a5a31df26fbfac1aa3dacfab" + integrity sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w== "@esbuild/linux-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== -"@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" - integrity sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw== +"@esbuild/linux-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz#2ecc1284b1904aeb41e54c9ddc7fcd349b18f650" + integrity sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA== -"@esbuild/netbsd-arm64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz#f04c4049cb2e252fe96b16fed90f70746b13f4a4" - integrity sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg== +"@esbuild/netbsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz#e2863c2cd1501845995cb11adf26f7fe4be527b0" + integrity sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw== "@esbuild/netbsd-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== -"@esbuild/netbsd-x64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz#77da0d0a0d826d7c921eea3d40292548b258a076" - integrity sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ== +"@esbuild/netbsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz#93f7609e2885d1c0b5a1417885fba8d1fcc41272" + integrity sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA== -"@esbuild/openbsd-arm64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz#6296f5867aedef28a81b22ab2009c786a952dccd" - integrity sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A== +"@esbuild/openbsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz#a1985604a203cdc325fd47542e106fafd698f02e" + integrity sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA== "@esbuild/openbsd-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== -"@esbuild/openbsd-x64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz#f8d23303360e27b16cf065b23bbff43c14142679" - integrity sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw== +"@esbuild/openbsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz#8209e46c42f1ffbe6e4ef77a32e1f47d404ad42a" + integrity sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg== -"@esbuild/openharmony-arm64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz#49e0b768744a3924be0d7fd97dd6ce9b2923d88d" - integrity sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg== +"@esbuild/openharmony-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz#8fade4441893d9cc44cbd7dcf3776f508ab6fb2f" + integrity sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag== "@esbuild/sunos-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== -"@esbuild/sunos-x64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz#a6ed7d6778d67e528c81fb165b23f4911b9b13d6" - integrity sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w== +"@esbuild/sunos-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz#980d4b9703a16f0f07016632424fc6d9a789dfc2" + integrity sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg== "@esbuild/win32-arm64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== -"@esbuild/win32-arm64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz#9ac14c378e1b653af17d08e7d3ce34caef587323" - integrity sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg== +"@esbuild/win32-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz#1c09a3633c949ead3d808ba37276883e71f6111a" + integrity sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg== "@esbuild/win32-ia32@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== -"@esbuild/win32-ia32@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz#918942dcbbb35cc14fca39afb91b5e6a3d127267" - integrity sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ== +"@esbuild/win32-ia32@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz#1b1e3a63ad4bef82200fef4e369e0fff7009eee5" + integrity sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ== "@esbuild/win32-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== -"@esbuild/win32-x64@0.25.12": - version "0.25.12" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz#9bdad8176be7811ad148d1f8772359041f46c6c5" - integrity sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA== +"@esbuild/win32-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz#9e585ab6086bef994c6e8a5b3a0481219ada862b" + integrity sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ== "@excalidraw/excalidraw@^0.18.0": version "0.18.0" @@ -3028,9 +3046,9 @@ "@hapi/hoek" "^9.0.0" "@hpcc-js/wasm-graphviz@^1.7.0": - version "1.16.0" - resolved "https://registry.yarnpkg.com/@hpcc-js/wasm-graphviz/-/wasm-graphviz-1.16.0.tgz#34cb68ff674ff2589aea55f042c3226758850ba1" - integrity sha512-N7IcFIF6Va9Ko3DT5+N3crI5AHE71BH/H+frxfqgo7fn2LxzGaWDHPSRUsLfCCt3cpAFqsdkyoIc//FA+HxKzw== + version "1.18.0" + resolved "https://registry.yarnpkg.com/@hpcc-js/wasm-graphviz/-/wasm-graphviz-1.18.0.tgz#c9140b264edc1c388a1595ca4ecd04d8666d7ed2" + integrity sha512-qfd3gTqtVQG+dWrNy6uwRH7czKw/RiJ9EwDB4F+pYTEfFW+E9kIZXQnLYtgxbGt1nNN2bowHBcOJ9F78PJ5IAQ== "@iconify/types@^2.0.0": version "2.0.0" @@ -3038,18 +3056,13 @@ integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== "@iconify/utils@^3.0.1": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-3.0.2.tgz#9599607f20690cd3e7a5d2d459af0eb81a89dc2b" - integrity sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ== + version "3.1.0" + resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-3.1.0.tgz#fb41882915f97fee6f91a2fbb8263e8772ca0438" + integrity sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw== dependencies: "@antfu/install-pkg" "^1.1.0" - "@antfu/utils" "^9.2.0" "@iconify/types" "^2.0.0" - debug "^4.4.1" - globals "^15.15.0" - kolorist "^1.8.0" - local-pkg "^1.1.1" - mlly "^1.7.4" + mlly "^1.8.0" "@isaacs/cliui@^8.0.2": version "8.0.2" @@ -3389,15 +3402,15 @@ "@lexical/selection" "0.35.0" lexical "0.35.0" -"@lezer/common@^1.0.0", "@lezer/common@^1.0.2", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0", "@lezer/common@^1.2.1", "@lezer/common@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.3.0.tgz#123427ec4c53c2c8367415b4441e555b4f85c696" - integrity sha512-L9X8uHCYU310o99L3/MpJKYxPzXPOS7S0NmBaM7UO/x2Kb2WbmMLSkfvdr1KxRIFYOpbY0Jhn7CfLSUDzL8arQ== +"@lezer/common@^1.0.0", "@lezer/common@^1.0.2", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0", "@lezer/common@^1.2.1", "@lezer/common@^1.3.0", "@lezer/common@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.5.0.tgz#db227b596260189b67ba286387d9dc81fb07c70b" + integrity sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA== "@lezer/cpp@^1.0.0": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@lezer/cpp/-/cpp-1.1.3.tgz#3029a542f4624fba0ed28f96511b34b8e7906352" - integrity sha512-ykYvuFQKGsRi6IcE+/hCSGUhb/I4WPjd3ELhEblm2wS2cOznDFzO+ubK2c+ioysOnlZ3EduV+MVQFCPzAIoY3w== + version "1.1.4" + resolved "https://registry.yarnpkg.com/@lezer/cpp/-/cpp-1.1.4.tgz#4c5c60a6f2f5d01314abd1d8a06c48a2cdc11cbc" + integrity sha512-aYSdZyUueeTgnfXQntiGUqKNW5WujlAsIbbHzkfJDneSZoyjPg8ObmWG3bzDPVYMC/Kf4l43WJLCunPnYFfQ0g== dependencies: "@lezer/common" "^1.2.0" "@lezer/highlight" "^1.0.0" @@ -3429,9 +3442,9 @@ "@lezer/common" "^1.3.0" "@lezer/html@^1.3.12": - version "1.3.12" - resolved "https://registry.yarnpkg.com/@lezer/html/-/html-1.3.12.tgz#a438e2d04f4c863d49cad27efe714cde8cf3ff1b" - integrity sha512-RJ7eRWdaJe3bsiiLLHjCFT1JMk8m1YP9kaUbvu2rMLEoOnke9mcTVDyfOslsln0LtujdWespjJ39w6zo+RsQYw== + version "1.3.13" + resolved "https://registry.yarnpkg.com/@lezer/html/-/html-1.3.13.tgz#6a1305ae3bd2c9c01f877f8a8dc1e15ec652d01c" + integrity sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg== dependencies: "@lezer/common" "^1.2.0" "@lezer/highlight" "^1.0.0" @@ -3465,18 +3478,18 @@ "@lezer/lr" "^1.0.0" "@lezer/lr@^1.0.0", "@lezer/lr@^1.1.0", "@lezer/lr@^1.3.0", "@lezer/lr@^1.3.1", "@lezer/lr@^1.3.3", "@lezer/lr@^1.4.0": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.3.tgz#51b252ff8ff9fea863819de7f4b6501ccf69d403" - integrity sha512-yenN5SqAxAPv/qMnpWW0AT7l+SxVrgG+u0tNsRQWqbrz66HIl8DnEbBObvy21J5K7+I1v7gsAnlE2VQ5yYVSeA== + version "1.4.5" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.5.tgz#a0a7f505d96593f0f06708d50fb85962e33686c1" + integrity sha512-/YTRKP5yPPSo1xImYQk7AZZMAgap0kegzqCSYHjAL9x1AZ0ZQW+IpcEzMKagCsbTsLnVeWkxYrCNeXG8xEPrjg== dependencies: "@lezer/common" "^1.0.0" "@lezer/markdown@^1.0.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@lezer/markdown/-/markdown-1.6.0.tgz#9db3356d52955391b021cc3ead9c79f87186840f" - integrity sha512-AXb98u3M6BEzTnreBnGtQaF7xFTiMA92Dsy5tqEjpacbjRxDSFdN4bKJo9uvU4cEEOS7D2B9MT7kvDgOEIzJSw== + version "1.6.2" + resolved "https://registry.yarnpkg.com/@lezer/markdown/-/markdown-1.6.2.tgz#f3448a890b28ef521531ef48519b78cbacb5e225" + integrity sha512-iNSdKrIK0FfOjVPVpV0fu7OykdncYpEzf4vkG9szFf60ql/ObZShoVbM9u1tgkogDOmubms1CyoNS2/unOXWNw== dependencies: - "@lezer/common" "^1.0.0" + "@lezer/common" "^1.5.0" "@lezer/highlight" "^1.0.0" "@lezer/php@^1.0.0": @@ -3589,9 +3602,9 @@ "@types/mdx" "^2.0.0" "@mdxeditor/editor@^3.50.0": - version "3.50.0" - resolved "https://registry.yarnpkg.com/@mdxeditor/editor/-/editor-3.50.0.tgz#4c34aee1f7ff6b98b755b82677fd7e7d5984981d" - integrity sha512-PJPma6JBKAufOf+gKGHlXXl2+ZtLoBbQEQK8txuNjJzncULpxQXB4oG3sUqKaQSDQPiSRtYNWE2e9jg5SteP0Q== + version "3.52.3" + resolved "https://registry.yarnpkg.com/@mdxeditor/editor/-/editor-3.52.3.tgz#4634f4b71c0d6baf5bebdd7cfe1145c7a8ab3947" + integrity sha512-hKPsNPx7cjxXPeiir0LjU2ZN5bWn7dWVxV8CaCddLztGc36e921ETNpu1AXo0+K7pxc7eBt/ExSw0WDOOk2Ibw== dependencies: "@codemirror/commands" "^6.2.4" "@codemirror/lang-markdown" "^6.2.3" @@ -3723,9 +3736,9 @@ "@tybys/wasm-util" "^0.10.1" "@noble/ciphers@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-2.0.1.tgz#fb07d6479d11fd10d7f601b6fb8fb9925b7accf7" - integrity sha512-xHK3XHPUW8DTAobU+G0XT+/w+JLM7/8k1UFdB5xg/zTFPnFCobhftzw8wl4Lw2aq/Rvir5pxfZV5fEazmeCJ2g== + version "2.1.1" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-2.1.1.tgz#c8c74fcda8c3d1f88797d0ecda24f9fc8b92b052" + integrity sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw== "@noble/hashes@^2.0.0": version "2.0.1" @@ -4627,115 +4640,115 @@ resolved "https://registry.yarnpkg.com/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz#c06dac2d011f36d61259aa1c6df4f0d5e28bc55e" integrity sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg== -"@rollup/rollup-android-arm-eabi@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz#7e478b66180c5330429dd161bf84dad66b59c8eb" - integrity sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w== - -"@rollup/rollup-android-arm64@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz#2b025510c53a5e3962d3edade91fba9368c9d71c" - integrity sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w== - -"@rollup/rollup-darwin-arm64@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz#3577c38af68ccf34c03e84f476bfd526abca10a0" - integrity sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA== - -"@rollup/rollup-darwin-x64@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz#2bf5f2520a1f3b551723d274b9669ba5b75ed69c" - integrity sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ== - -"@rollup/rollup-freebsd-arm64@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz#4bb9cc80252564c158efc0710153c71633f1927c" - integrity sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w== - -"@rollup/rollup-freebsd-x64@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz#2301289094d49415a380cf942219ae9d8b127440" - integrity sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q== - -"@rollup/rollup-linux-arm-gnueabihf@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz#1d03d776f2065e09fc141df7d143476e94acca88" - integrity sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw== - -"@rollup/rollup-linux-arm-musleabihf@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz#8623de0e040b2fd52a541c602688228f51f96701" - integrity sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg== - -"@rollup/rollup-linux-arm64-gnu@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz#ce2d1999bc166277935dde0301cde3dd0417fb6e" - integrity sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w== - -"@rollup/rollup-linux-arm64-musl@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz#88c2523778444da952651a2219026416564a4899" - integrity sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A== - -"@rollup/rollup-linux-loong64-gnu@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz#578ca2220a200ac4226c536c10c8cc6e4f276714" - integrity sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g== - -"@rollup/rollup-linux-ppc64-gnu@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz#aa338d3effd4168a20a5023834a74ba2c3081293" - integrity sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw== - -"@rollup/rollup-linux-riscv64-gnu@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz#16ba582f9f6cff58119aa242782209b1557a1508" - integrity sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g== - -"@rollup/rollup-linux-riscv64-musl@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz#e404a77ebd6378483888b8064c703adb011340ab" - integrity sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A== - -"@rollup/rollup-linux-s390x-gnu@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz#92ad52d306227c56bec43d96ad2164495437ffe6" - integrity sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg== - -"@rollup/rollup-linux-x64-gnu@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz#fd0dea3bb9aa07e7083579f25e1c2285a46cb9fa" - integrity sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w== - -"@rollup/rollup-linux-x64-musl@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz#37a3efb09f18d555f8afc490e1f0444885de8951" - integrity sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q== - -"@rollup/rollup-openharmony-arm64@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz#c489bec9f4f8320d42c9b324cca220c90091c1f7" - integrity sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw== - -"@rollup/rollup-win32-arm64-msvc@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz#152832b5f79dc22d1606fac3db946283601b7080" - integrity sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw== - -"@rollup/rollup-win32-ia32-msvc@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz#54d91b2bb3bf3e9f30d32b72065a4e52b3a172a5" - integrity sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA== - -"@rollup/rollup-win32-x64-gnu@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz#df9df03e61a003873efec8decd2034e7f135c71e" - integrity sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg== - -"@rollup/rollup-win32-x64-msvc@4.53.3": - version "4.53.3" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz#38ae84f4c04226c1d56a3b17296ef1e0460ecdfe" - integrity sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ== +"@rollup/rollup-android-arm-eabi@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.54.0.tgz#f3ff5dbde305c4fa994d49aeb0a5db5305eff03b" + integrity sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng== + +"@rollup/rollup-android-arm64@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.54.0.tgz#c97d6ee47846a7ab1cd38e968adce25444a90a19" + integrity sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw== + +"@rollup/rollup-darwin-arm64@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.54.0.tgz#a13fc2d82e01eaf8ac823634a3f5f76fd9d0f938" + integrity sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw== + +"@rollup/rollup-darwin-x64@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.54.0.tgz#db4fa8b2b76d86f7e9b68ce4661fafe9767adf9b" + integrity sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A== + +"@rollup/rollup-freebsd-arm64@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.54.0.tgz#b2c6039de4b75efd3f29417fcb1a795c75a4e3ee" + integrity sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA== + +"@rollup/rollup-freebsd-x64@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.54.0.tgz#9ae2a216c94f87912a596a3b3a2ec5199a689ba5" + integrity sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.54.0.tgz#69d5de7f781132f138514f2b900c523e38e2461f" + integrity sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ== + +"@rollup/rollup-linux-arm-musleabihf@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.54.0.tgz#b6431e5699747f285306ffe8c1194d7af74f801f" + integrity sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA== + +"@rollup/rollup-linux-arm64-gnu@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.54.0.tgz#a32931baec8a0fa7b3288afb72d400ae735112c2" + integrity sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng== + +"@rollup/rollup-linux-arm64-musl@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.54.0.tgz#0ad72572b01eb946c0b1a7a6f17ab3be6689a963" + integrity sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg== + +"@rollup/rollup-linux-loong64-gnu@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.54.0.tgz#05681f000310906512279944b5bef38c0cd4d326" + integrity sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw== + +"@rollup/rollup-linux-ppc64-gnu@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.54.0.tgz#9847a8c9dd76d687c3bdbe38d7f5f32c6b2743c8" + integrity sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA== + +"@rollup/rollup-linux-riscv64-gnu@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.54.0.tgz#173f20c278ac770ae3e969663a27d172a4545e87" + integrity sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ== + +"@rollup/rollup-linux-riscv64-musl@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.54.0.tgz#db70c2377ae1ef61ef8673354d107ecb3fa7ffed" + integrity sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A== + +"@rollup/rollup-linux-s390x-gnu@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.54.0.tgz#b2c461778add1c2ee70ec07d1788611548647962" + integrity sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ== + +"@rollup/rollup-linux-x64-gnu@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz#ab140b356569601f57ab8727bd7306463841894f" + integrity sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ== + +"@rollup/rollup-linux-x64-musl@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.54.0.tgz#810134b4a9d0d88576938f2eed38999a653814a1" + integrity sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw== + +"@rollup/rollup-openharmony-arm64@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.54.0.tgz#0182bae7a54e748be806acef7a7f726f6949213c" + integrity sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg== + +"@rollup/rollup-win32-arm64-msvc@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.54.0.tgz#1f19349bd1c5e454d03e4508a9277b6354985b9d" + integrity sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw== + +"@rollup/rollup-win32-ia32-msvc@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.54.0.tgz#234ff739993539f64efac6c2e59704a691a309c2" + integrity sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ== + +"@rollup/rollup-win32-x64-gnu@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.54.0.tgz#a4df0507c3be09c152a795cfc0c4f0c225765c5c" + integrity sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ== + +"@rollup/rollup-win32-x64-msvc@4.54.0": + version "4.54.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.54.0.tgz#beacb356412eef5dc0164e9edfee51c563732054" + integrity sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg== "@rsdoctor/client@0.4.13": version "0.4.13" @@ -4994,50 +5007,50 @@ magic-string "0.30.8" unplugin "1.0.1" -"@sentry/cli-darwin@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.58.2.tgz#61f6f836de8ac2e1992ccadc0368bc403f23c609" - integrity sha512-MArsb3zLhA2/cbd4rTm09SmTpnEuZCoZOpuZYkrpDw1qzBVJmRFA1W1hGAQ9puzBIk/ubY3EUhhzuU3zN2uD6w== - -"@sentry/cli-linux-arm64@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.2.tgz#3a7a9c83e31b482599ce08d93d5ba6c8a1a44c7f" - integrity sha512-ay3OeObnbbPrt45cjeUyQjsx5ain1laj1tRszWj37NkKu55NZSp4QCg1gGBZ0gBGhckI9nInEsmKtix00alw2g== - -"@sentry/cli-linux-arm@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.2.tgz#f9bef6802cb707d1603a02e0727fed22d834e133" - integrity sha512-HU9lTCzcHqCz/7Mt5n+cv+nFuJdc1hGD2h35Uo92GgxX3/IujNvOUfF+nMX9j6BXH6hUt73R5c0Ycq9+a3Parg== - -"@sentry/cli-linux-i686@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.2.tgz#a3e6cb24d314f2d948b96457731f9345dc8370f9" - integrity sha512-CN9p0nfDFsAT1tTGBbzOUGkIllwS3hygOUyTK7LIm9z+UHw5uNgNVqdM/3Vg+02ymjkjISNB3/+mqEM5osGXdA== - -"@sentry/cli-linux-x64@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.2.tgz#8e071e11b03524b08d369075f3203b05529ca233" - integrity sha512-oX/LLfvWaJO50oBVOn4ZvG2SDWPq0MN8SV9eg5tt2nviq+Ryltfr7Rtoo+HfV+eyOlx1/ZXhq9Wm7OT3cQuz+A== - -"@sentry/cli-win32-arm64@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.2.tgz#af109a165c25245458a6c58b79a91c639b1df1b0" - integrity sha512-+cl3x2HPVMpoSVGVM1IDWlAEREZrrVQj4xBb0TRKII7g3hUxRsAIcsrr7+tSkie++0FuH4go/b5fGAv51OEF3w== - -"@sentry/cli-win32-i686@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.2.tgz#53038b43b2c14c419fb71586f7448e7580ed4e39" - integrity sha512-omFVr0FhzJ8oTJSg1Kf+gjLgzpYklY0XPfLxZ5iiMiYUKwF5uo1RJRdkUOiEAv0IqpUKnmKcmVCLaDxsWclB7Q== - -"@sentry/cli-win32-x64@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.2.tgz#b4c81a3c163344ae8b27523a0391e7f99c533f41" - integrity sha512-2NAFs9UxVbRztQbgJSP5i8TB9eJQ7xraciwj/93djrSMHSEbJ0vC47TME0iifgvhlHMs5vqETOKJtfbbpQAQFA== +"@sentry/cli-darwin@2.58.4": + version "2.58.4" + resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.58.4.tgz#5e3005c1f845acac243e8dcb23bef17337924768" + integrity sha512-kbTD+P4X8O+nsNwPxCywtj3q22ecyRHWff98rdcmtRrvwz8CKi/T4Jxn/fnn2i4VEchy08OWBuZAqaA5Kh2hRQ== + +"@sentry/cli-linux-arm64@2.58.4": + version "2.58.4" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.4.tgz#69da57656fda863f255d92123c3a3437e470408e" + integrity sha512-0g0KwsOozkLtzN8/0+oMZoOuQ0o7W6O+hx+ydVU1bktaMGKEJLMAWxOQNjsh1TcBbNIXVOKM/I8l0ROhaAb8Ig== + +"@sentry/cli-linux-arm@2.58.4": + version "2.58.4" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.4.tgz#869ddab30f0dcebc0e61cff2f3ff47dcd40f8abe" + integrity sha512-rdQ8beTwnN48hv7iV7e7ZKucPec5NJkRdrrycMJMZlzGBPi56LqnclgsHySJ6Kfq506A2MNuQnKGaf/sBC9REA== + +"@sentry/cli-linux-i686@2.58.4": + version "2.58.4" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.4.tgz#e30ca6b897147b3fb7b2e8684b139183d55e21c6" + integrity sha512-NseoIQAFtkziHyjZNPTu1Gm1opeQHt7Wm1LbLrGWVIRvUOzlslO9/8i6wETUZ6TjlQxBVRgd3Q0lRBG2A8rFYA== + +"@sentry/cli-linux-x64@2.58.4": + version "2.58.4" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.4.tgz#f667e1fcaf0860f15401af8e0ee72f5013d84458" + integrity sha512-d3Arz+OO/wJYTqCYlSN3Ktm+W8rynQ/IMtSZLK8nu0ryh5mJOh+9XlXY6oDXw4YlsM8qCRrNquR8iEI1Y/IH+Q== + +"@sentry/cli-win32-arm64@2.58.4": + version "2.58.4" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.4.tgz#f612c5788954e2a97b6626e9e46fa9a41cb049c1" + integrity sha512-bqYrF43+jXdDBh0f8HIJU3tbvlOFtGyRjHB8AoRuMQv9TEDUfENZyCelhdjA+KwDKYl48R1Yasb4EHNzsoO83w== + +"@sentry/cli-win32-i686@2.58.4": + version "2.58.4" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.4.tgz#5611c05499f1b959d23e37650d0621d299c49cfc" + integrity sha512-3triFD6jyvhVcXOmGyttf+deKZcC1tURdhnmDUIBkiDPJKGT/N5xa4qAtHJlAB/h8L9jgYih9bvJnvvFVM7yug== + +"@sentry/cli-win32-x64@2.58.4": + version "2.58.4" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.4.tgz#3290c59399579e8d484c97246cfa720171241061" + integrity sha512-cSzN4PjM1RsCZ4pxMjI0VI7yNCkxiJ5jmWncyiwHXGiXrV1eXYdQ3n1LhUYLZ91CafyprR0OhDcE+RVZ26Qb5w== "@sentry/cli@^2.49.0": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.58.2.tgz#0d6e19a1771d27aae8b2765a6f3e96062e2c7502" - integrity sha512-U4u62V4vaTWF+o40Mih8aOpQKqKUbZQt9A3LorIJwaE3tO3XFLRI70eWtW2se1Qmy0RZ74zB14nYcFNFl2t4Rw== + version "2.58.4" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.58.4.tgz#eb8792600cdf956cc4fe2bf51380ea1682327411" + integrity sha512-ArDrpuS8JtDYEvwGleVE+FgR+qHaOp77IgdGSacz6SZy6Lv90uX0Nu4UrHCQJz8/xwIcNxSqnN22lq0dH4IqTg== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -5045,14 +5058,14 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.58.2" - "@sentry/cli-linux-arm" "2.58.2" - "@sentry/cli-linux-arm64" "2.58.2" - "@sentry/cli-linux-i686" "2.58.2" - "@sentry/cli-linux-x64" "2.58.2" - "@sentry/cli-win32-arm64" "2.58.2" - "@sentry/cli-win32-i686" "2.58.2" - "@sentry/cli-win32-x64" "2.58.2" + "@sentry/cli-darwin" "2.58.4" + "@sentry/cli-linux-arm" "2.58.4" + "@sentry/cli-linux-arm64" "2.58.4" + "@sentry/cli-linux-i686" "2.58.4" + "@sentry/cli-linux-x64" "2.58.4" + "@sentry/cli-win32-arm64" "2.58.4" + "@sentry/cli-win32-i686" "2.58.4" + "@sentry/cli-win32-x64" "2.58.4" "@sentry/core@9.47.1": version "9.47.1" @@ -5124,9 +5137,9 @@ integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== "@standard-schema/spec@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.0.0.tgz#f193b73dc316c4170f2e82a881da0f550d551b9c" - integrity sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" + integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== "@stitches/core@^1.2.6": version "1.2.8" @@ -5239,147 +5252,147 @@ "@svgr/plugin-jsx" "8.1.0" "@svgr/plugin-svgo" "8.1.0" -"@swc/core-darwin-arm64@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.3.tgz#bd0bd3ab7730e3ffa64cf200c0ed7c572cbaba97" - integrity sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ== - -"@swc/core-darwin-x64@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.3.tgz#502b1e1c680df6b962265ca81a0c1a23e6ff070f" - integrity sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A== - -"@swc/core-linux-arm-gnueabihf@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.3.tgz#e32cc6a2e06a75060d6f598ba2ca6f96c5c0cc43" - integrity sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg== - -"@swc/core-linux-arm64-gnu@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.3.tgz#9b9861bc44059e393d4baf98b3cd3d6c4ea6f521" - integrity sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw== - -"@swc/core-linux-arm64-musl@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.3.tgz#f6388743e5a159018bd468e8f710940b2614384b" - integrity sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g== - -"@swc/core-linux-x64-gnu@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.3.tgz#15fea551c7a3aeb1bdc3ad5c652d73c9321ddba8" - integrity sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A== - -"@swc/core-linux-x64-musl@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.3.tgz#d3f17bab4ffcadbb47f135e6a14d6f3e401af289" - integrity sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug== - -"@swc/core-win32-arm64-msvc@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.3.tgz#9da386df7fed00b3473bcf4281ff3fcd14726d2c" - integrity sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA== - -"@swc/core-win32-ia32-msvc@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.3.tgz#c398d4f0f10ffec2151a79733ee1ce86a945a1ea" - integrity sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw== - -"@swc/core-win32-x64-msvc@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.3.tgz#715596b034a654c82b03ef734a9b44c29bcd3a68" - integrity sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog== +"@swc/core-darwin-arm64@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.8.tgz#f565a2744ee840389eba800f1bd454a5ab5c8235" + integrity sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg== + +"@swc/core-darwin-x64@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.8.tgz#52e1bb71fddca37d8c18dcfc33d4117e9de11789" + integrity sha512-j47DasuOvXl80sKJHSi2X25l44CMc3VDhlJwA7oewC1nV1VsSzwX+KOwE5tLnfORvVJJyeiXgJORNYg4jeIjYQ== + +"@swc/core-linux-arm-gnueabihf@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.8.tgz#19586971697767c465bbecaed96940e03a12ac5c" + integrity sha512-siAzDENu2rUbwr9+fayWa26r5A9fol1iORG53HWxQL1J8ym4k7xt9eME0dMPXlYZDytK5r9sW8zEA10F2U3Xwg== + +"@swc/core-linux-arm64-gnu@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.8.tgz#22a55b71cfff34cddd772619aa4ca2bf913032cb" + integrity sha512-o+1y5u6k2FfPYbTRUPvurwzNt5qd0NTumCTFscCNuBksycloXY16J8L+SMW5QRX59n4Hp9EmFa3vpvNHRVv1+Q== + +"@swc/core-linux-arm64-musl@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.8.tgz#ce5a26ff25ab76fb699e7171b90884cfe63c1841" + integrity sha512-koiCqL09EwOP1S2RShCI7NbsQuG6r2brTqUYE7pV7kZm9O17wZ0LSz22m6gVibpwEnw8jI3IE1yYsQTVpluALw== + +"@swc/core-linux-x64-gnu@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.8.tgz#cbacd43d4971fe6e4d41b8d8051ea1a8aabf40e5" + integrity sha512-4p6lOMU3bC+Vd5ARtKJ/FxpIC5G8v3XLoPEZ5s7mLR8h7411HWC/LmTXDHcrSXRC55zvAVia1eldy6zDLz8iFQ== + +"@swc/core-linux-x64-musl@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.8.tgz#6317cf3b75fde62c88faec3750e3aeb9bec83b3d" + integrity sha512-z3XBnbrZAL+6xDGAhJoN4lOueIxC/8rGrJ9tg+fEaeqLEuAtHSW2QHDHxDwkxZMjuF/pZ6MUTjHjbp8wLbuRLA== + +"@swc/core-win32-arm64-msvc@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.8.tgz#3a25a4d530e62be5b6b938b7eca70af117b34832" + integrity sha512-djQPJ9Rh9vP8GTS/Df3hcc6XP6xnG5c8qsngWId/BLA9oX6C7UzCPAn74BG/wGb9a6j4w3RINuoaieJB3t+7iQ== + +"@swc/core-win32-ia32-msvc@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.8.tgz#1c7a3ba04216ce3b0a00b4c742e8e3bff9ff8b14" + integrity sha512-/wfAgxORg2VBaUoFdytcVBVCgf1isWZIEXB9MZEUty4wwK93M/PxAkjifOho9RN3WrM3inPLabICRCEgdHpKKQ== + +"@swc/core-win32-x64-msvc@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.8.tgz#5bdcbe3fc0e0ccbae8abc9285a661a1bc3bdd65a" + integrity sha512-GpMePrh9Sl4d61o4KAHOOv5is5+zt6BEXCOCgs/H0FLGeii7j9bWDE8ExvKFy2GRRZVNR1ugsnzaGWHKM6kuzA== "@swc/core@^1.7.39": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.3.tgz#2d0a5c4ac4c180c3dbf2f6d5d958b9fcbaa9755f" - integrity sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q== + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.8.tgz#818abeab1cc57546a773b11dec4edd8ab26ae687" + integrity sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw== dependencies: "@swc/counter" "^0.1.3" "@swc/types" "^0.1.25" optionalDependencies: - "@swc/core-darwin-arm64" "1.15.3" - "@swc/core-darwin-x64" "1.15.3" - "@swc/core-linux-arm-gnueabihf" "1.15.3" - "@swc/core-linux-arm64-gnu" "1.15.3" - "@swc/core-linux-arm64-musl" "1.15.3" - "@swc/core-linux-x64-gnu" "1.15.3" - "@swc/core-linux-x64-musl" "1.15.3" - "@swc/core-win32-arm64-msvc" "1.15.3" - "@swc/core-win32-ia32-msvc" "1.15.3" - "@swc/core-win32-x64-msvc" "1.15.3" + "@swc/core-darwin-arm64" "1.15.8" + "@swc/core-darwin-x64" "1.15.8" + "@swc/core-linux-arm-gnueabihf" "1.15.8" + "@swc/core-linux-arm64-gnu" "1.15.8" + "@swc/core-linux-arm64-musl" "1.15.8" + "@swc/core-linux-x64-gnu" "1.15.8" + "@swc/core-linux-x64-musl" "1.15.8" + "@swc/core-win32-arm64-msvc" "1.15.8" + "@swc/core-win32-ia32-msvc" "1.15.8" + "@swc/core-win32-x64-msvc" "1.15.8" "@swc/counter@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== -"@swc/html-darwin-arm64@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/html-darwin-arm64/-/html-darwin-arm64-1.15.3.tgz#87811153f2ebcb761d72553e3fe804f0ac0aa825" - integrity sha512-IIVuFRTr1exOX29lZ3RApa+5RYWSJir65eWKOM5OhqpBWlzdYVnbHaObrBCOYrIBL+BXGYySnbp72b79NggXDg== - -"@swc/html-darwin-x64@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/html-darwin-x64/-/html-darwin-x64-1.15.3.tgz#e7dd5bb256c52df999c6f5f309ee935b79f143f7" - integrity sha512-gW1fu0etuFLQ23i5fm2XDc4xjOMXm0wi+EjezFzYooAvSyC5On0KCveTIxeXNnYKk2Q85IOC03PTjmVwkVKqeg== - -"@swc/html-linux-arm-gnueabihf@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.15.3.tgz#2e1c0738dc13ae4d9dd00c1b881427cd7776e9e3" - integrity sha512-JztA9n1zMM3kJKp99U2rRnXUfzTeETEgyeu+VArtaG0KXoP08tUVMC5QYCYOBW4vTBbs5SiLN+FCzB65y7UKLQ== - -"@swc/html-linux-arm64-gnu@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.15.3.tgz#369cb5eb38fa62589d4a16ddc87545d2726dca36" - integrity sha512-9dikO1z0IdfiB+gYXEReeUvurao7pruAVUB+lvn0824IoGFutUinLUnRJPqCDMT4f70J8xBZkHC4QIfO0N1lZQ== - -"@swc/html-linux-arm64-musl@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.15.3.tgz#78308b017b6db32e508dc145fbf0eb2a98e1c17f" - integrity sha512-ZmVYAP2xuzc8RN+jwJR84eMjgoWA0r20YL5Sb+hMo8p4+piOLPif0FjfTbRGy0iwz/lFY7Ml8Fent3I8kXjGig== - -"@swc/html-linux-x64-gnu@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.15.3.tgz#355e829ae20d8862881e667069e8770a48e20603" - integrity sha512-QqHhNedxWps0nzam5aNJ+vHet+EsFYW3FkjdqyUnfpJZdrvVudzfyNd4yxjo/nMeb5RsOb/fZlfp1cx26XB2LQ== - -"@swc/html-linux-x64-musl@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.15.3.tgz#973fcd401cbc1439e1ba1ab3b6b5bfdf0af78417" - integrity sha512-gwowjNEHMflw3Nu1P4MPpUHCeBbEWW8uwDtMsWARPGb9onBCyzMr7Z3m1jvuRVd/kd44o9VwWfh0AB4j26Y12w== - -"@swc/html-win32-arm64-msvc@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.15.3.tgz#578a4fc8c8f9e8411f8ebc270c2a81c0a8d69b9a" - integrity sha512-rxxvpXER5KuKSN6bI5zU3RXMu5jpTIgQdWLzBlMVjuhRWRNk14LMaoxKSRxGJ3k/i0qwQWaMA+8oPpcsTVguKw== - -"@swc/html-win32-ia32-msvc@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.15.3.tgz#0f2284141c7ee16b99d614caeaef34c13360da53" - integrity sha512-eWGVaOwksC9eJ7409DNgCWp0O4YmlO8OgToMWFozTzG3zEDCHpKjVhD/Fi8zUtdFkc/cuXrHmunmTfh62XTvZg== - -"@swc/html-win32-x64-msvc@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.15.3.tgz#7fdda93a64908e20237b8c62f06cac1c79ad1e22" - integrity sha512-PdTREP0388VJjgwoN/LbkZkfGkSFR7k7n4PMqpV7PHy8Gri8kOYewExlyxyLJ+lYi1MXZMkMUI8VJbZZFnaxIw== +"@swc/html-darwin-arm64@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/html-darwin-arm64/-/html-darwin-arm64-1.15.8.tgz#e456d3ed9e9d2740d3dab0b65f4752fa321fcf31" + integrity sha512-N1RTQ8Dba/FiUvgyivMhHdNVl0dGsMJmbYzHdoJRWb60+GeAJue37R++3MANKzzPPmaa9WaMTpE6EZcuDFdEow== + +"@swc/html-darwin-x64@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/html-darwin-x64/-/html-darwin-x64-1.15.8.tgz#b09f19ba9949ed179b70bc292dad02bb12173aec" + integrity sha512-dKAd6tL8nqdedtfNn/PJ/BHY3C1RHCjMPANOR85Pu76X1xIL2L9E5TM+Si+C7Fj/IqISEot2nVpxlZSC3NQGTQ== + +"@swc/html-linux-arm-gnueabihf@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.15.8.tgz#0519b8dc76cd862dd6fa27980b4b805419e0dcd0" + integrity sha512-f5lauBqjslbwgQd3T8pULVPNZ0vUfJ8QCF+xx282NHxC6AUxgx42CxjNZTIK2FYI831kv6b+FPNcnNGWYvV2Yw== + +"@swc/html-linux-arm64-gnu@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.15.8.tgz#1e014c460a8c67b92cbf6eedae2dc9c57d7ba484" + integrity sha512-wRBZ9c/yyhm/zWON64UNQ8RaRbzJLFqwA+MjwMU3C8h/mudr+nrY8jKdlgvbr3XL+1HitiMN9Zz1CoRPM6rimQ== + +"@swc/html-linux-arm64-musl@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.15.8.tgz#9ac901cc1ba7af6e487dbcc5da9916e1f2a55d06" + integrity sha512-q7WOGAZ75x4AsZu7H2Ru1o0aUm5+sUz6SNmg+SdGzcJq33NSRWuDf8p77XW0aDzhFUNHUjWbTqFdkllbmRZhaw== + +"@swc/html-linux-x64-gnu@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.15.8.tgz#023180ac25247357cad3ed01a6a392978f79d916" + integrity sha512-q7I6DxSI86747AE4BO1k7y4vPXertUXtl/mG4iBYvUR9HA0Fq0sElSP0V5fFb8xJ/VL1cFHgKyxGVXpF6sZgkA== + +"@swc/html-linux-x64-musl@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.15.8.tgz#ad19d2703c676b4685edc38c4e3e623b1b77e1b6" + integrity sha512-lGs5S8SadlhMyP0jfo/CuOG6J6yJldmdcW5mQ75/eZv4F/wbDRCkV9tjHlkAb2eO4VI9kKWTvuayHkVlAzQiGg== + +"@swc/html-win32-arm64-msvc@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.15.8.tgz#b3d15effee6f5ee0f9b4289740ffb7feb794d44a" + integrity sha512-GN6nZgEjO9uLNfPAajB/0FH27gtNK5KJa88lZ/EUFr9WCmo4e9b5ik3nFIt74Ae04oZCrNB2Yk9xAeycWpxTtQ== + +"@swc/html-win32-ia32-msvc@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.15.8.tgz#452cf736f164876fc61ac2ee73fd641176221a25" + integrity sha512-KjHHILqe09zRBsmZBUGUNDJ4Qjvi3ZHZiudMBJE2BEiIrKhHVXOikvfvWAShE12FPD0eYHfNxmjWbks2LtJHGA== + +"@swc/html-win32-x64-msvc@1.15.8": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.15.8.tgz#b7c922dfd59144b3c19d6f8c64306035e743c062" + integrity sha512-P2e1K/dED6cqQtL0TiN63s6v6RvZjKxxaKMfWOVMviwRakSNFUJGV4H2W4OX/cbvIn/XpxWIfo1mdXusadAlQQ== "@swc/html@^1.13.5": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@swc/html/-/html-1.15.3.tgz#60c58b38f70b8fdde116e417b95f187f4b91e7c6" - integrity sha512-3LnbQ0UGJPfVunEB4n+0zbmd1+jRa2o4ZVofnyM5SKAB1anP70B04k3lEMs2lFDp1TksJIld2Y8h+RhB1PhKEw== + version "1.15.8" + resolved "https://registry.yarnpkg.com/@swc/html/-/html-1.15.8.tgz#8b12cdb6eb2b9e9735e00e09e4444b62dd59b504" + integrity sha512-DBRO1g9TR7rKfGjsMr4O17zcaXjr5TSNpr9DJhQrAA2JDzHuGr3dyyX3dCoS1td24efTNnysHv1isDjzmXzT7Q== dependencies: "@swc/counter" "^0.1.3" optionalDependencies: - "@swc/html-darwin-arm64" "1.15.3" - "@swc/html-darwin-x64" "1.15.3" - "@swc/html-linux-arm-gnueabihf" "1.15.3" - "@swc/html-linux-arm64-gnu" "1.15.3" - "@swc/html-linux-arm64-musl" "1.15.3" - "@swc/html-linux-x64-gnu" "1.15.3" - "@swc/html-linux-x64-musl" "1.15.3" - "@swc/html-win32-arm64-msvc" "1.15.3" - "@swc/html-win32-ia32-msvc" "1.15.3" - "@swc/html-win32-x64-msvc" "1.15.3" + "@swc/html-darwin-arm64" "1.15.8" + "@swc/html-darwin-x64" "1.15.8" + "@swc/html-linux-arm-gnueabihf" "1.15.8" + "@swc/html-linux-arm64-gnu" "1.15.8" + "@swc/html-linux-arm64-musl" "1.15.8" + "@swc/html-linux-x64-gnu" "1.15.8" + "@swc/html-linux-x64-musl" "1.15.8" + "@swc/html-win32-arm64-msvc" "1.15.8" + "@swc/html-win32-ia32-msvc" "1.15.8" + "@swc/html-win32-x64-msvc" "1.15.8" "@swc/types@^0.1.25": version "0.1.25" @@ -5524,7 +5537,7 @@ resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz#ef004d8a128046cfce434d17182f834e44ef95b2" integrity sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA== -"@types/d3-drag@*": +"@types/d3-drag@*", "@types/d3-drag@^3.0.7": version "3.0.7" resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-3.0.7.tgz#b13aba8b2442b4068c9a9e6d1d82f8bcea77fc02" integrity sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ== @@ -5570,7 +5583,7 @@ resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz#6023fb3b2d463229f2d680f9ac4b47466f71f17b" integrity sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg== -"@types/d3-interpolate@*": +"@types/d3-interpolate@*", "@types/d3-interpolate@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== @@ -5609,7 +5622,7 @@ dependencies: "@types/d3-time" "*" -"@types/d3-selection@*": +"@types/d3-selection@*", "@types/d3-selection@^3.0.10": version "3.0.11" resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-3.0.11.tgz#bd7a45fc0a8c3167a631675e61bc2ca2b058d4a3" integrity sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w== @@ -5636,14 +5649,14 @@ resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== -"@types/d3-transition@*": +"@types/d3-transition@*", "@types/d3-transition@^3.0.8": version "3.0.9" resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-3.0.9.tgz#1136bc57e9ddb3c390dccc9b5ff3b7d2b8d94706" integrity sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg== dependencies: "@types/d3-selection" "*" -"@types/d3-zoom@*": +"@types/d3-zoom@*", "@types/d3-zoom@^3.0.8": version "3.0.8" resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-3.0.8.tgz#dccb32d1c56b1e1c6e0f1180d994896f038bc40b" integrity sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw== @@ -5760,13 +5773,13 @@ "@types/send" "*" "@types/express@*": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.5.tgz#3ba069177caa34ab96585ca23b3984d752300cdc" - integrity sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ== + version "5.0.6" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.6.tgz#2d724b2c990dcb8c8444063f3580a903f6d500cc" + integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^5.0.0" - "@types/serve-static" "^1" + "@types/serve-static" "^2" "@types/express@^4.17.21": version "4.17.25" @@ -5920,9 +5933,9 @@ "@types/node" "*" "@types/node@*", "@types/node@>=10.0.0": - version "24.10.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.1.tgz#91e92182c93db8bd6224fca031e2370cef9a8f01" - integrity sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ== + version "25.0.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.3.tgz#79b9ac8318f373fbfaaf6e2784893efa9701f269" + integrity sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA== dependencies: undici-types "~7.16.0" @@ -6049,6 +6062,14 @@ "@types/node" "*" "@types/send" "<1" +"@types/serve-static@^2": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-2.2.0.tgz#d4a447503ead0d1671132d1ab6bd58b805d8de6a" + integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/sockjs@^0.3.36": version "0.3.36" resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" @@ -6150,15 +6171,15 @@ chai "^5.1.2" tinyrainbow "^1.2.0" -"@vitest/expect@4.0.14": - version "4.0.14" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-4.0.14.tgz#4537af3f55ad78c7f1eba4bd3bdfadb22ae8a592" - integrity sha512-RHk63V3zvRiYOWAV0rGEBRO820ce17hz7cI2kDmEdfQsBjT2luEKB5tCOc91u1oSQoUOZkSv3ZyzkdkSLD7lKw== +"@vitest/expect@4.0.16": + version "4.0.16" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-4.0.16.tgz#3cb324c35f59ae72a9e1fb3b4f7b92e596628151" + integrity sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA== dependencies: "@standard-schema/spec" "^1.0.0" "@types/chai" "^5.2.2" - "@vitest/spy" "4.0.14" - "@vitest/utils" "4.0.14" + "@vitest/spy" "4.0.16" + "@vitest/utils" "4.0.16" chai "^6.2.1" tinyrainbow "^3.0.3" @@ -6171,12 +6192,12 @@ estree-walker "^3.0.3" magic-string "^0.30.12" -"@vitest/mocker@4.0.14": - version "4.0.14" - resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-4.0.14.tgz#e38fa5e78aac8421fd38b1054a3fa3c8c2e35ccd" - integrity sha512-RzS5NujlCzeRPF1MK7MXLiEFpkIXeMdQ+rN3Kk3tDI9j0mtbr7Nmuq67tpkOJQpgyClbOltCXMjLZicJHsH5Cg== +"@vitest/mocker@4.0.16": + version "4.0.16" + resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-4.0.16.tgz#0351f17f5843b226f237f86cad7fc6dd7fd5b36d" + integrity sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg== dependencies: - "@vitest/spy" "4.0.14" + "@vitest/spy" "4.0.16" estree-walker "^3.0.3" magic-string "^0.30.21" @@ -6187,10 +6208,10 @@ dependencies: tinyrainbow "^1.2.0" -"@vitest/pretty-format@4.0.14": - version "4.0.14" - resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-4.0.14.tgz#ea47e561008298f0fa6ab2e56f35f18d9130b1e8" - integrity sha512-SOYPgujB6TITcJxgd3wmsLl+wZv+fy3av2PpiPpsWPZ6J1ySUYfScfpIt2Yv56ShJXR2MOA6q2KjKHN4EpdyRQ== +"@vitest/pretty-format@4.0.16": + version "4.0.16" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-4.0.16.tgz#91893e0337dbdd6f80a89bcc9710c0d03650f090" + integrity sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA== dependencies: tinyrainbow "^3.0.3" @@ -6202,12 +6223,12 @@ "@vitest/utils" "2.1.9" pathe "^1.1.2" -"@vitest/runner@4.0.14": - version "4.0.14" - resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-4.0.14.tgz#fa406dd854d29f41fc97b88a748f61b61b39172a" - integrity sha512-BsAIk3FAqxICqREbX8SetIteT8PiaUL/tgJjmhxJhCsigmzzH8xeadtp7LRnTpCVzvf0ib9BgAfKJHuhNllKLw== +"@vitest/runner@4.0.16": + version "4.0.16" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-4.0.16.tgz#a9eb6786545727436e53eb51308abd6af8154323" + integrity sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q== dependencies: - "@vitest/utils" "4.0.14" + "@vitest/utils" "4.0.16" pathe "^2.0.3" "@vitest/snapshot@2.1.9": @@ -6219,12 +6240,12 @@ magic-string "^0.30.12" pathe "^1.1.2" -"@vitest/snapshot@4.0.14": - version "4.0.14" - resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-4.0.14.tgz#be9a10e71550ec22eabaf2be8f519a524ff2a31b" - integrity sha512-aQVBfT1PMzDSA16Y3Fp45a0q8nKexx6N5Amw3MX55BeTeZpoC08fGqEZqVmPcqN0ueZsuUQ9rriPMhZ3Mu19Ag== +"@vitest/snapshot@4.0.16": + version "4.0.16" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-4.0.16.tgz#6a7e41bdd3a60206c167720042c836c30dc50f3a" + integrity sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA== dependencies: - "@vitest/pretty-format" "4.0.14" + "@vitest/pretty-format" "4.0.16" magic-string "^0.30.21" pathe "^2.0.3" @@ -6235,10 +6256,10 @@ dependencies: tinyspy "^3.0.2" -"@vitest/spy@4.0.14": - version "4.0.14" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-4.0.14.tgz#b13c50b1a34a0bdc63ad4a3162b4e16b61960638" - integrity sha512-JmAZT1UtZooO0tpY3GRyiC/8W7dCs05UOq9rfsUUgEZEdq+DuHLmWhPsrTt0TiW7WYeL/hXpaE07AZ2RCk44hg== +"@vitest/spy@4.0.16": + version "4.0.16" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-4.0.16.tgz#3ac2e63e3e0cf304f1a84ec086d8e36cd185fbbd" + integrity sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw== "@vitest/utils@2.1.9": version "2.1.9" @@ -6249,12 +6270,12 @@ loupe "^3.1.2" tinyrainbow "^1.2.0" -"@vitest/utils@4.0.14": - version "4.0.14" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-4.0.14.tgz#67eeb19012e1bcbe853303100ae52690a09f4726" - integrity sha512-hLqXZKAWNg8pI+SQXyXxWCTOpA3MvsqcbVeNgSi8x/CSN2wi26dSzn1wrOhmCmFjEvN9p8/kLFRHa6PI8jHazw== +"@vitest/utils@4.0.16": + version "4.0.16" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-4.0.16.tgz#f789a4ef5c5b2e8eef90a4c3304678dbc6c92599" + integrity sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA== dependencies: - "@vitest/pretty-format" "4.0.14" + "@vitest/pretty-format" "4.0.16" tinyrainbow "^3.0.3" "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": @@ -6388,6 +6409,30 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@xyflow/react@^12.10.0": + version "12.10.0" + resolved "https://registry.yarnpkg.com/@xyflow/react/-/react-12.10.0.tgz#d2924cb38074e8e6141643dd8bd7a0666aaac868" + integrity sha512-eOtz3whDMWrB4KWVatIBrKuxECHqip6PfA8fTpaS2RUGVpiEAe+nqDKsLqkViVWxDGreq0lWX71Xth/SPAzXiw== + dependencies: + "@xyflow/system" "0.0.74" + classcat "^5.0.3" + zustand "^4.4.0" + +"@xyflow/system@0.0.74": + version "0.0.74" + resolved "https://registry.yarnpkg.com/@xyflow/system/-/system-0.0.74.tgz#4bc01af020504387c88a3b13ac6d426b47cba845" + integrity sha512-7v7B/PkiVrkdZzSbL+inGAo6tkR/WQHHG0/jhSvLQToCsfa8YubOGmBYd1s08tpKpihdHDZFwzQZeR69QSBb4Q== + dependencies: + "@types/d3-drag" "^3.0.7" + "@types/d3-interpolate" "^3.0.4" + "@types/d3-selection" "^3.0.10" + "@types/d3-transition" "^3.0.8" + "@types/d3-zoom" "^3.0.8" + d3-drag "^3.0.0" + d3-interpolate "^3.0.1" + d3-selection "^3.0.0" + d3-zoom "^3.0.0" + accepts@~1.3.4, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -6397,9 +6442,9 @@ accepts@~1.3.4, accepts@~1.3.8: negotiator "0.6.3" ace-builds@^1.36.3, ace-builds@^1.41.0: - version "1.43.4" - resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.43.4.tgz#126830ba77424f5f73cf48faa352e5fa3b345a90" - integrity sha512-8hAxVfo2ImICd69BWlZwZlxe9rxDGDjuUhh+WeWgGDvfBCE+r3lkynkQvIovDz4jcMi8O7bsEaFygaDT+h9sBA== + version "1.43.5" + resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.43.5.tgz#2099eee8caade0cd1ee4ce3e0d2c6fb2cd7e8619" + integrity sha512-iH5FLBKdB7SVn9GR37UgA/tpQS8OTWIxWAuq3Ofaw+Qbc69FfPXsXd9jeW7KRG2xKpKMqBDnu0tHBrCWY5QI7A== acorn-import-assertions@1.9.0: version "1.9.0" @@ -6448,14 +6493,14 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ai@5.0.102, ai@^5.0.30: - version "5.0.102" - resolved "https://registry.yarnpkg.com/ai/-/ai-5.0.102.tgz#1c313495edccf19459ec87b4b22da5a7eee42bb5" - integrity sha512-snRK3nS5DESOjjpq7S74g8YszWVMzjagfHqlJWZsbtl9PyOS+2XUd8dt2wWg/jdaq/jh0aU66W1mx5qFjUQyEg== +ai@5.0.117, ai@^5.0.30: + version "5.0.117" + resolved "https://registry.yarnpkg.com/ai/-/ai-5.0.117.tgz#8c6445f27eed52548f72cab22fc9327cfb80827a" + integrity sha512-uE6HNkdSwxbeHGKP/YbvapwD8fMOpj87wyfT9Z00pbzOh2fpnw5acak/4kzU00SX2vtI9K0uuy+9Tf9ytw5RwA== dependencies: - "@ai-sdk/gateway" "2.0.15" - "@ai-sdk/provider" "2.0.0" - "@ai-sdk/provider-utils" "3.0.17" + "@ai-sdk/gateway" "2.0.24" + "@ai-sdk/provider" "2.0.1" + "@ai-sdk/provider-utils" "3.0.20" "@opentelemetry/api" "1.9.0" ajv-formats@^2.1.1: @@ -6498,36 +6543,36 @@ ajv@^8.0.0, ajv@^8.9.0: require-from-string "^2.0.2" algoliasearch-helper@^3.26.0: - version "3.26.1" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.26.1.tgz#5b7f0874a2751c3d6de675d5403d8fa2f015023f" - integrity sha512-CAlCxm4fYBXtvc5MamDzP6Svu8rW4z9me4DCBY1rQ2UDJ0u0flWmusQ8M3nOExZsLLRcUwUPoRAPMrhzOG3erw== + version "3.27.0" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.27.0.tgz#987c18b715ed0ecb303711feaa14335e5b8516e1" + integrity sha512-eNYchRerbsvk2doHOMfdS1/B6Tm70oGtu8mzQlrNzbCeQ8p1MjCW8t/BL6iZ5PD+cL5NNMgTMyMnmiXZ1sgmNw== dependencies: "@algolia/events" "^4.0.1" algoliasearch@^5.28.0, algoliasearch@^5.37.0: - version "5.45.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.45.0.tgz#90abba15b26d6722360a97c1e1931bc920f9c555" - integrity sha512-wrj4FGr14heLOYkBKV3Fbq5ZBGuIFeDJkTilYq/G+hH1CSlQBtYvG2X1j67flwv0fUeQJwnWxxRIunSemAZirA== - dependencies: - "@algolia/abtesting" "1.11.0" - "@algolia/client-abtesting" "5.45.0" - "@algolia/client-analytics" "5.45.0" - "@algolia/client-common" "5.45.0" - "@algolia/client-insights" "5.45.0" - "@algolia/client-personalization" "5.45.0" - "@algolia/client-query-suggestions" "5.45.0" - "@algolia/client-search" "5.45.0" - "@algolia/ingestion" "1.45.0" - "@algolia/monitoring" "1.45.0" - "@algolia/recommend" "5.45.0" - "@algolia/requester-browser-xhr" "5.45.0" - "@algolia/requester-fetch" "5.45.0" - "@algolia/requester-node-http" "5.45.0" + version "5.46.2" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.46.2.tgz#3afba0e53f3293e39cfde9b2ef27c583d44bf2a5" + integrity sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q== + dependencies: + "@algolia/abtesting" "1.12.2" + "@algolia/client-abtesting" "5.46.2" + "@algolia/client-analytics" "5.46.2" + "@algolia/client-common" "5.46.2" + "@algolia/client-insights" "5.46.2" + "@algolia/client-personalization" "5.46.2" + "@algolia/client-query-suggestions" "5.46.2" + "@algolia/client-search" "5.46.2" + "@algolia/ingestion" "1.46.2" + "@algolia/monitoring" "1.46.2" + "@algolia/recommend" "5.46.2" + "@algolia/requester-browser-xhr" "5.46.2" + "@algolia/requester-fetch" "5.46.2" + "@algolia/requester-node-http" "5.46.2" anser@^2.1.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/anser/-/anser-2.3.3.tgz#84bca8b8a668ae3c7cf49355affb99494444ccc1" - integrity sha512-QGY1oxYE7/kkeNmbtY/2ZjQ07BCG3zYdz+k/+sf69kMzEIxb93guHkPnIXITQ+BYi61oQwG74twMOX1tD4aesg== + version "2.3.5" + resolved "https://registry.yarnpkg.com/anser/-/anser-2.3.5.tgz#3435896b68b93e5e744842499d0ce3e6f6d013ee" + integrity sha512-vcZjxvvVoxTeR5XBNJB38oTu/7eDCZlwdz32N1eNgpyPF7j/Z7Idf+CUwQOkKKpJ7RJyjxgLHCM7vdIK0iCNMQ== ansi-align@^3.0.1: version "3.0.1" @@ -6689,15 +6734,14 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -autoprefixer@^10.4.19, autoprefixer@^10.4.21: - version "10.4.22" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.22.tgz#90b27ab55ec0cf0684210d1f056f7d65dac55f16" - integrity sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg== +autoprefixer@^10.4.19, autoprefixer@^10.4.23: + version "10.4.23" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.23.tgz#c6aa6db8e7376fcd900f9fd79d143ceebad8c4e6" + integrity sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA== dependencies: - browserslist "^4.27.0" - caniuse-lite "^1.0.30001754" + browserslist "^4.28.1" + caniuse-lite "^1.0.30001760" fraction.js "^5.3.4" - normalize-range "^0.1.2" picocolors "^1.1.1" postcss-value-parser "^4.2.0" @@ -6778,10 +6822,10 @@ base64id@2.0.0, base64id@~2.0.0: resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== -baseline-browser-mapping@^2.8.25: - version "2.8.31" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz#16c0f1814638257932e0486dbfdbb3348d0a5710" - integrity sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw== +baseline-browser-mapping@^2.9.0: + version "2.9.11" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz#53724708c8db5f97206517ecfe362dbe5181deea" + integrity sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ== batch@0.6.1: version "0.6.1" @@ -6876,6 +6920,24 @@ body-parser@1.20.3: type-is "~1.6.18" unpipe "1.0.0" +body-parser@~1.20.3: + version "1.20.4" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.4.tgz#f8e20f4d06ca8a50a71ed329c15dccad1cdc547f" + integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA== + dependencies: + bytes "~3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "~1.2.0" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + on-finished "~2.4.1" + qs "~6.14.0" + raw-body "~2.5.3" + type-is "~1.6.18" + unpipe "~1.0.0" + bonjour-service@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" @@ -6951,16 +7013,16 @@ browser-image-compression@^2.0.2: dependencies: uzip "0.20201231.0" -browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.2, browserslist@^4.26.0, browserslist@^4.26.3, browserslist@^4.27.0, browserslist@^4.28.0: - version "4.28.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.0.tgz#9cefece0a386a17a3cd3d22ebf67b9deca1b5929" - integrity sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ== +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.2, browserslist@^4.28.0, browserslist@^4.28.1: + version "4.28.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" + integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== dependencies: - baseline-browser-mapping "^2.8.25" - caniuse-lite "^1.0.30001754" - electron-to-chromium "^1.5.249" + baseline-browser-mapping "^2.9.0" + caniuse-lite "^1.0.30001759" + electron-to-chromium "^1.5.263" node-releases "^2.0.27" - update-browserslist-db "^1.1.4" + update-browserslist-db "^1.2.0" buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: version "0.2.13" @@ -7010,7 +7072,7 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== -bytes@3.1.2: +bytes@3.1.2, bytes@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== @@ -7097,10 +7159,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001754: - version "1.0.30001757" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz#a46ff91449c69522a462996c6aac4ef95d7ccc5e" - integrity sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759, caniuse-lite@^1.0.30001760: + version "1.0.30001762" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001762.tgz#e4dbfeda63d33258cdde93e53af2023a13ba27d4" + integrity sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw== canvas-roundrect-polyfill@0.0.1: version "0.0.1" @@ -7132,9 +7194,9 @@ chai@^5.1.2: pathval "^2.0.0" chai@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-6.2.1.tgz#d1e64bc42433fbee6175ad5346799682060b5b6a" - integrity sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg== + version "6.2.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-6.2.2.tgz#ae41b52c9aca87734505362717f3255facda360e" + integrity sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg== chainsaw@~0.1.0: version "0.1.0" @@ -7276,6 +7338,11 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== +classcat@^5.0.3: + version "5.0.5" + resolved "https://registry.yarnpkg.com/classcat/-/classcat-5.0.5.tgz#8c209f359a93ac302404a10161b501eba9c09c77" + integrity sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w== + classnames@^2.2.5, classnames@^2.3.2: version "2.5.1" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" @@ -7501,11 +7568,6 @@ confbox@^0.1.8: resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06" integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w== -confbox@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.2.2.tgz#8652f53961c74d9e081784beed78555974a9c110" - integrity sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ== - config-chain@^1.1.11: version "1.1.13" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" @@ -7550,7 +7612,7 @@ content-disposition@0.5.2: resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== -content-disposition@0.5.4: +content-disposition@~0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== @@ -7572,17 +7634,12 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" - integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== +cookie-signature@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" + integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== -cookie@~0.7.2: +cookie@~0.7.1, cookie@~0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== @@ -7810,10 +7867,10 @@ css-what@^6.0.1, css-what@^6.1.0: resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea" integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== -cssdb@^8.4.2: - version "8.4.2" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.4.2.tgz#1a367ab1904c97af0bb2c7ae179764deae7b078b" - integrity sha512-PzjkRkRUS+IHDJohtxkIczlxPPZqRo0nXplsYXOMBRPjcVRjj1W4DfvRgshUYTVuUigU7ptVYkFJQ7abUB0nyg== +cssdb@^8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.6.0.tgz#5381310f5fdac6d249fc4016b7d0f6deb0002f6a" + integrity sha512-7ZrRi/Z3cRL1d5I8RuXEWAkRFP3J4GeQRiyVknI4KC70RAU8hT4LysUZDe0y+fYNOktCbxE8sOPUOhyR12UqGQ== cssesc@^3.0.0: version "3.0.0" @@ -7974,7 +8031,7 @@ d3-delaunay@6: resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== -"d3-drag@2 - 3", d3-drag@3: +"d3-drag@2 - 3", d3-drag@3, d3-drag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== @@ -8029,7 +8086,7 @@ d3-hierarchy@3: resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== -"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3, d3-interpolate@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== @@ -8088,7 +8145,7 @@ d3-scale@4: d3-time "2.1.1 - 3" d3-time-format "2 - 4" -"d3-selection@2 - 3", d3-selection@3: +"d3-selection@2 - 3", d3-selection@3, d3-selection@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== @@ -8137,7 +8194,7 @@ d3-shape@^1.2.0: d3-interpolate "1 - 3" d3-timer "1 - 3" -d3-zoom@3: +d3-zoom@3, d3-zoom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== @@ -8230,14 +8287,14 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.7, debug@^4.4.1: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.7, debug@^4.4.1, debug@~4.4.1: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== dependencies: ms "^2.1.3" -debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: +debug@~4.3.2: version "4.3.7" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== @@ -8343,7 +8400,7 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: +depd@2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== @@ -8358,7 +8415,7 @@ dequal@^2.0.0, dequal@^2.0.2, dequal@^2.0.3: resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== -destroy@1.2.0: +destroy@1.2.0, destroy@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== @@ -8492,9 +8549,9 @@ domhandler@^5.0.2, domhandler@^5.0.3: integrity sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ== dompurify@^3.2.5: - version "3.3.0" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.3.0.tgz#aaaadbb83d87e1c2fbb066452416359e5b62ec97" - integrity sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ== + version "3.3.1" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.3.1.tgz#c7e1ddebfe3301eacd6c0c12a4af284936dbbb86" + integrity sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q== optionalDependencies: "@types/trusted-types" "^2.0.7" @@ -8578,10 +8635,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.5.249: - version "1.5.260" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.260.tgz#73f555d3e9b9fd16ff48fc406bbad84efa9b86c7" - integrity sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA== +electron-to-chromium@^1.5.263: + version "1.5.267" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz#5d84f2df8cdb6bfe7e873706bb21bd4bfb574dc7" + integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw== elkjs@^0.9.0, elkjs@^0.9.3: version "0.9.3" @@ -8631,14 +8688,14 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: once "^1.4.0" engine.io-client@~6.6.1: - version "6.6.3" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.6.3.tgz#815393fa24f30b8e6afa8f77ccca2f28146be6de" - integrity sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w== + version "6.6.4" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.6.4.tgz#a04998787dd342b543eec5d4452da7bb540e7ff8" + integrity sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw== dependencies: "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" + debug "~4.4.1" engine.io-parser "~5.2.1" - ws "~8.17.1" + ws "~8.18.3" xmlhttprequest-ssl "~2.1.1" engine.io-parser@~5.2.1: @@ -8647,9 +8704,9 @@ engine.io-parser@~5.2.1: integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== engine.io@~6.6.0: - version "6.6.4" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.6.4.tgz#0a89a3e6b6c1d4b0c2a2a637495e7c149ec8d8ee" - integrity sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g== + version "6.6.5" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.6.5.tgz#a009522f5d5628109781b46722014349859269d2" + integrity sha512-2RZdgEbXmp5+dVbRm0P7HQUImZpICccJy7rN7Tv+SFa55pH+lxnuw6/K1ZxxBfHoYpSkHLAO92oa8O4SwFXA2A== dependencies: "@types/cors" "^2.8.12" "@types/node" ">=10.0.0" @@ -8657,9 +8714,9 @@ engine.io@~6.6.0: base64id "2.0.0" cookie "~0.7.2" cors "~2.8.5" - debug "~4.3.1" + debug "~4.4.1" engine.io-parser "~5.2.1" - ws "~8.17.1" + ws "~8.18.3" enhanced-resolve@5.12.0: version "5.12.0" @@ -8669,10 +8726,10 @@ enhanced-resolve@5.12.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enhanced-resolve@^5.17.3: - version "5.18.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44" - integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww== +enhanced-resolve@^5.17.4: + version "5.18.4" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz#c22d33055f3952035ce6a144ce092447c525f828" + integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -8714,11 +8771,16 @@ es-errors@^1.3.0: resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-module-lexer@^1.2.1, es-module-lexer@^1.5.4, es-module-lexer@^1.7.0: +es-module-lexer@^1.5.4, es-module-lexer@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== +es-module-lexer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.0.0.tgz#f657cd7a9448dcdda9c070a3cb75e5dc1e85f5b1" + integrity sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== + es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" @@ -8737,9 +8799,9 @@ es-set-tostringtag@^2.1.0: hasown "^2.0.2" es-toolkit@^1.39.10: - version "1.42.0" - resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.42.0.tgz#c9e87c7e2d4759ca26887814e6bc780cf4747fc5" - integrity sha512-SLHIyY7VfDJBM8clz4+T2oquwTQxEzu263AyhVK4jREOAwJ+8eebaa4wM3nlvnAqhDrMm2EsA6hWHaQsMPQ1nA== + version "1.43.0" + resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.43.0.tgz#2c278d55ffeb30421e6e73a009738ed37b10ef61" + integrity sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA== es5-ext@^0.10.35, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: version "0.10.64" @@ -8822,37 +8884,37 @@ esbuild@^0.21.3: "@esbuild/win32-ia32" "0.21.5" "@esbuild/win32-x64" "0.21.5" -esbuild@^0.25.0: - version "0.25.12" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.12.tgz#97a1d041f4ab00c2fce2f838d2b9969a2d2a97a5" - integrity sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg== +esbuild@^0.27.0: + version "0.27.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.27.2.tgz#d83ed2154d5813a5367376bb2292a9296fc83717" + integrity sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw== optionalDependencies: - "@esbuild/aix-ppc64" "0.25.12" - "@esbuild/android-arm" "0.25.12" - "@esbuild/android-arm64" "0.25.12" - "@esbuild/android-x64" "0.25.12" - "@esbuild/darwin-arm64" "0.25.12" - "@esbuild/darwin-x64" "0.25.12" - "@esbuild/freebsd-arm64" "0.25.12" - "@esbuild/freebsd-x64" "0.25.12" - "@esbuild/linux-arm" "0.25.12" - "@esbuild/linux-arm64" "0.25.12" - "@esbuild/linux-ia32" "0.25.12" - "@esbuild/linux-loong64" "0.25.12" - "@esbuild/linux-mips64el" "0.25.12" - "@esbuild/linux-ppc64" "0.25.12" - "@esbuild/linux-riscv64" "0.25.12" - "@esbuild/linux-s390x" "0.25.12" - "@esbuild/linux-x64" "0.25.12" - "@esbuild/netbsd-arm64" "0.25.12" - "@esbuild/netbsd-x64" "0.25.12" - "@esbuild/openbsd-arm64" "0.25.12" - "@esbuild/openbsd-x64" "0.25.12" - "@esbuild/openharmony-arm64" "0.25.12" - "@esbuild/sunos-x64" "0.25.12" - "@esbuild/win32-arm64" "0.25.12" - "@esbuild/win32-ia32" "0.25.12" - "@esbuild/win32-x64" "0.25.12" + "@esbuild/aix-ppc64" "0.27.2" + "@esbuild/android-arm" "0.27.2" + "@esbuild/android-arm64" "0.27.2" + "@esbuild/android-x64" "0.27.2" + "@esbuild/darwin-arm64" "0.27.2" + "@esbuild/darwin-x64" "0.27.2" + "@esbuild/freebsd-arm64" "0.27.2" + "@esbuild/freebsd-x64" "0.27.2" + "@esbuild/linux-arm" "0.27.2" + "@esbuild/linux-arm64" "0.27.2" + "@esbuild/linux-ia32" "0.27.2" + "@esbuild/linux-loong64" "0.27.2" + "@esbuild/linux-mips64el" "0.27.2" + "@esbuild/linux-ppc64" "0.27.2" + "@esbuild/linux-riscv64" "0.27.2" + "@esbuild/linux-s390x" "0.27.2" + "@esbuild/linux-x64" "0.27.2" + "@esbuild/netbsd-arm64" "0.27.2" + "@esbuild/netbsd-x64" "0.27.2" + "@esbuild/openbsd-arm64" "0.27.2" + "@esbuild/openbsd-x64" "0.27.2" + "@esbuild/openharmony-arm64" "0.27.2" + "@esbuild/sunos-x64" "0.27.2" + "@esbuild/win32-arm64" "0.27.2" + "@esbuild/win32-ia32" "0.27.2" + "@esbuild/win32-x64" "0.27.2" escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" @@ -9077,52 +9139,47 @@ expand-template@^2.0.3: integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== expect-type@^1.1.0, expect-type@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.2.2.tgz#c030a329fb61184126c8447585bc75a7ec6fbff3" - integrity sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.3.0.tgz#0d58ed361877a31bbc4dd6cf71bbfef7faf6bd68" + integrity sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA== express@^4.21.2: - version "4.21.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" - integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== + version "4.22.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069" + integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.3" - content-disposition "0.5.4" + body-parser "~1.20.3" + content-disposition "~0.5.4" content-type "~1.0.4" - cookie "0.7.1" - cookie-signature "1.0.6" + cookie "~0.7.1" + cookie-signature "~1.0.6" debug "2.6.9" depd "2.0.0" encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.3.1" - fresh "0.5.2" - http-errors "2.0.0" + finalhandler "~1.3.1" + fresh "~0.5.2" + http-errors "~2.0.0" merge-descriptors "1.0.3" methods "~1.1.2" - on-finished "2.4.1" + on-finished "~2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.12" + path-to-regexp "~0.1.12" proxy-addr "~2.0.7" - qs "6.13.0" + qs "~6.14.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.19.0" - serve-static "1.16.2" + send "~0.19.0" + serve-static "~1.16.2" setprototypeof "1.2.0" - statuses "2.0.1" + statuses "~2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" -exsolve@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/exsolve/-/exsolve-1.0.8.tgz#7f5e34da61cd1116deda5136e62292c096f50613" - integrity sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA== - ext@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" @@ -9187,9 +9244,9 @@ fast-uri@^3.0.1: integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== fastq@^1.6.0: - version "1.19.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" - integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + version "1.20.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" + integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== dependencies: reusify "^1.0.4" @@ -9259,17 +9316,17 @@ finalhandler@1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -finalhandler@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" - integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== +finalhandler@~1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.2.tgz#1ebc2228fc7673aac4a472c310cc05b77d852b88" + integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg== dependencies: debug "2.6.9" encodeurl "~2.0.0" escape-html "~1.0.3" - on-finished "2.4.1" + on-finished "~2.4.1" parseurl "~1.3.3" - statuses "2.0.1" + statuses "~2.0.2" unpipe "~1.0.0" find-cache-dir@^4.0.0: @@ -9355,7 +9412,7 @@ fractional-indexing@3.2.0: resolved "https://registry.yarnpkg.com/fractional-indexing/-/fractional-indexing-3.2.0.tgz#1193e63d54ff4e0cbe0c79a9ed6cfbab25d91628" integrity sha512-PcOxmqwYCW7O2ovKRU8OoQQj2yqTfEB/yeTYk4gPid6dN5ODRfU1hXd9tTVZzax/0NkO7AxpHykvZnT1aYp/BQ== -fresh@0.5.2: +fresh@0.5.2, fresh@~0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== @@ -9366,9 +9423,9 @@ fs-constants@^1.0.0: integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-extra@^11.1.1, fs-extra@^11.2.0: - version "11.3.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.2.tgz#c838aeddc6f4a8c74dd15f85e11fe5511bfe02a4" - integrity sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A== + version "11.3.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.3.tgz#a27da23b72524e81ac6c3815cc0179b8c74c59ee" + integrity sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -9533,11 +9590,6 @@ global-dirs@^3.0.0: dependencies: ini "2.0.0" -globals@^15.15.0: - version "15.15.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" - integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== - globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -9660,11 +9712,11 @@ has-yarn@^3.0.0: integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== hashery@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/hashery/-/hashery-1.3.0.tgz#2af169f1698efc92bf9235c4880eec92cc5b5107" - integrity sha512-fWltioiy5zsSAs9ouEnvhsVJeAXRybGCNNv0lvzpzNOSDbULXRy7ivFWwCCv4I5Am6kSo75hmbsCduOoc2/K4w== + version "1.4.0" + resolved "https://registry.yarnpkg.com/hashery/-/hashery-1.4.0.tgz#3af04d9af0c63ff2f15a353ee9c2d11fdef7919f" + integrity sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ== dependencies: - hookified "^1.13.0" + hookified "^1.14.0" hasown@^2.0.2: version "2.0.2" @@ -9795,14 +9847,14 @@ hast-util-to-jsx-runtime@^2.0.0: vfile-message "^4.0.0" hast-util-to-parse5@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz#477cd42d278d4f036bc2ea58586130f6f39ee6ed" - integrity sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw== + version "8.0.1" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz#95aa391cc0514b4951418d01c883d1038af42f5d" + integrity sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA== dependencies: "@types/hast" "^3.0.0" comma-separated-tokens "^2.0.0" devlop "^1.0.0" - property-information "^6.0.0" + property-information "^7.0.0" space-separated-tokens "^2.0.0" web-namespaces "^2.0.0" zwitch "^2.0.0" @@ -9864,10 +9916,10 @@ hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.1, hoist-non-react- dependencies: react-is "^16.7.0" -hookified@^1.13.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/hookified/-/hookified-1.13.0.tgz#fa7f8ab04897d77eecba52f35fe29e3d1f97dbbf" - integrity sha512-6sPYUY8olshgM/1LDNW4QZQN0IqgKhtl/1C8koNZBJrKLBk3AZl6chQtNwpNztvfiApHMEwMHek5rv993PRbWw== +hookified@^1.14.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/hookified/-/hookified-1.14.0.tgz#815ca3b9f3e77c782f583bf3974e966df7a9fd7b" + integrity sha512-pi1ynXIMFx/uIIwpWJ/5CEtOHLGtnUB0WhGeeYT+fKcQ+WCQbm3/rrkAXnpfph++PgepNqPdTC2WTj8A6k6zoQ== hpack.js@^2.1.6: version "2.1.6" @@ -9982,6 +10034,17 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" +http-errors@~2.0.0, http-errors@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" + integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== + dependencies: + depd "~2.0.0" + inherits "~2.0.4" + setprototypeof "~1.2.0" + statuses "~2.0.2" + toidentifier "~1.0.1" + http-parser-js@>=0.5.1: version "0.5.10" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" @@ -10033,7 +10096,7 @@ hyperdyperid@^1.2.0: resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== -iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@~0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -10130,7 +10193,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -10183,9 +10246,9 @@ ipaddr.js@1.9.1: integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== ipaddr.js@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.3.0.tgz#71dce70e1398122208996d1c22f2ba46a24b1abc" + integrity sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg== is-alphabetical@^2.0.0: version "2.0.1" @@ -10472,9 +10535,9 @@ joi@^17.9.2: "@sideway/pinpoint" "^2.0.0" jose@^6.1.0: - version "6.1.2" - resolved "https://registry.yarnpkg.com/jose/-/jose-6.1.2.tgz#05f75a3bcdf352d07ebdffcfb11d4e835f6f95c6" - integrity sha512-MpcPtHLE5EmztuFIqB0vzHAWJPpmN1E6L4oo+kze56LIs3MyXIj9ZHMDxqOvkP38gBR7K1v3jqd4WU2+nrfONQ== + version "6.1.3" + resolved "https://registry.yarnpkg.com/jose/-/jose-6.1.3.tgz#8453d7be88af7bb7d64a0481d6a35a0145ba3ea5" + integrity sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ== jotai-scope@0.7.2: version "0.7.2" @@ -10571,9 +10634,9 @@ jszip@^3.10.1: setimmediate "^1.0.5" katex@^0.16.0, katex@^0.16.22, katex@^0.16.9: - version "0.16.25" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.25.tgz#61699984277e3bdb3e89e0e446b83cd0a57d87db" - integrity sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q== + version "0.16.27" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.27.tgz#4ecf6f620e0ca1c1a5de722e85fcdcec49086a48" + integrity sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw== dependencies: commander "^8.3.0" @@ -10609,15 +10672,10 @@ known-css-properties@^0.36.0: resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.36.0.tgz#5c4365f3c9549ca2e813d2e729e6c47ef6a6cb60" integrity sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA== -kolorist@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c" - integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== - kysely@^0.28.5: - version "0.28.8" - resolved "https://registry.yarnpkg.com/kysely/-/kysely-0.28.8.tgz#064340cfa489833fdb11f026cbc5dacf7e37b5fa" - integrity sha512-QUOgl5ZrS9IRuhq5FvOKFSsD/3+IA6MLE81/bOOTRA/YQpKDza2sFdN5g6JCB9BOpqMJDGefLCQ9F12hRS13TA== + version "0.28.9" + resolved "https://registry.yarnpkg.com/kysely/-/kysely-0.28.9.tgz#c7a0e84a78b2990b95a7517f5670cae9e93df8e0" + integrity sha512-3BeXMoiOhpOwu62CiVpO6lxfq4eS6KMYfQdMsN/2kUCRNuF2YiEr7u0HLHaQU+O4Xu8YXE3bHVkwaQ85i72EuA== langium@3.3.1: version "3.3.1" @@ -10787,15 +10845,6 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -local-pkg@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-1.1.2.tgz#c03d208787126445303f8161619dc701afa4abb5" - integrity sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A== - dependencies: - mlly "^1.7.4" - pkg-types "^2.3.0" - quansync "^0.2.11" - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -10810,11 +10859,16 @@ locate-path@^7.1.0: dependencies: p-locate "^6.0.0" -lodash-es@4.17.21, lodash-es@^4.17.21: +lodash-es@4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== +lodash-es@^4.17.21: + version "4.17.22" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.22.tgz#eb7d123ec2470d69b911abe34f85cb694849b346" + integrity sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q== + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -11312,9 +11366,9 @@ media-typer@0.3.0: integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^4.43.1: - version "4.51.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.51.0.tgz#f33b5eff5e2faa01bfacc02aacf23ec7d8c84c94" - integrity sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A== + version "4.51.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.51.1.tgz#25945de4a90d1573945105e187daa9385e1bca73" + integrity sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ== dependencies: "@jsonjoy.com/json-pack" "^1.11.0" "@jsonjoy.com/util" "^1.9.0" @@ -11375,9 +11429,9 @@ mermaid@10.9.3: web-worker "^1.2.0" mermaid@>=11.6.0: - version "11.12.1" - resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-11.12.1.tgz#97445451ce7d0d3740bc2159cb25464bece60b67" - integrity sha512-UlIZrRariB11TY1RtTgUWp65tphtBv4CSq7vyS2ZZ2TgoMjs2nloq+wFqxiwcxlhHUvs7DPGgMjs2aeQxz5h9g== + version "11.12.2" + resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-11.12.2.tgz#48bbdb9f724bc2191e2128e1403bf964fff2bc3d" + integrity sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w== dependencies: "@braintree/sanitize-url" "^7.1.1" "@iconify/utils" "^3.0.1" @@ -12159,7 +12213,7 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: dependencies: minimist "^1.2.6" -mlly@^1.7.4: +mlly@^1.7.4, mlly@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.8.0.tgz#e074612b938af8eba1eaf43299cbc89cb72d824e" integrity sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g== @@ -12305,9 +12359,9 @@ node-fetch@^2.6.7: whatwg-url "^5.0.0" node-forge@^1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.2.tgz#d0d2659a26eef778bf84d73e7f55c08144ee7750" - integrity sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw== + version "1.3.3" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.3.tgz#0ad80f6333b3a0045e827ac20b7f735f93716751" + integrity sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg== node-releases@^2.0.27: version "2.0.27" @@ -12324,11 +12378,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - normalize-url@^8.0.0: version "8.1.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.1.0.tgz#d33504f67970decf612946fd4880bc8c0983486d" @@ -12398,7 +12447,7 @@ obug@^2.1.1: resolved "https://registry.yarnpkg.com/obug/-/obug-2.1.1.tgz#2cba74ff241beb77d63055ddf4cd1e9f90b538be" integrity sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ== -on-finished@2.4.1, on-finished@^2.4.1: +on-finished@2.4.1, on-finished@^2.4.1, on-finished@~2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== @@ -12555,9 +12604,9 @@ package-json@^8.1.0: semver "^7.3.7" package-manager-detector@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-1.5.0.tgz#8dcf7b78554047ddf5da453e6ba07ebc915c507e" - integrity sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw== + version "1.6.0" + resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-1.6.0.tgz#70d0cf0aa02c877eeaf66c4d984ede0be9130734" + integrity sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA== pako@2.0.3: version "2.0.3" @@ -12693,11 +12742,6 @@ path-scurry@^1.11.1, path-scurry@^1.6.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-to-regexp@0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" - integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== - path-to-regexp@3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.3.0.tgz#f7f31d32e8518c2660862b644414b6d5c63a611b" @@ -12710,6 +12754,11 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" +path-to-regexp@~0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -12790,15 +12839,6 @@ pkg-types@^1.3.1: mlly "^1.7.4" pathe "^2.0.1" -pkg-types@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-2.3.0.tgz#037f2c19bd5402966ff6810e32706558cb5b5726" - integrity sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig== - dependencies: - confbox "^0.2.2" - exsolve "^1.0.7" - pathe "^2.0.3" - png-chunk-text@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/png-chunk-text/-/png-chunk-text-1.0.0.tgz#1c6006d8e34ba471d38e1c9c54b3f53e1085e18f" @@ -13227,9 +13267,9 @@ postcss-place@^10.0.0: postcss-value-parser "^4.2.0" postcss-preset-env@^10.2.1: - version "10.4.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-10.4.0.tgz#fa6167a307f337b2bcdd1d125604ff97cdeb5142" - integrity sha512-2kqpOthQ6JhxqQq1FSAAZGe9COQv75Aw8WbsOvQVNJ2nSevc9Yx/IKZGuZ7XJ+iOTtVon7LfO7ELRzg8AZ+sdw== + version "10.6.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-10.6.0.tgz#8b2106ce3f0de1f0005929587aa331385076d463" + integrity sha512-+LzpUSLCGHUdlZ1YZP7lp7w1MjxInJRSG0uaLyk/V/BM17iU2B7xTO7I8x3uk0WQAcLLh/ffqKzOzfaBvG7Fdw== dependencies: "@csstools/postcss-alpha-function" "^1.0.1" "@csstools/postcss-cascade-layers" "^5.0.2" @@ -13258,21 +13298,25 @@ postcss-preset-env@^10.2.1: "@csstools/postcss-nested-calc" "^4.0.0" "@csstools/postcss-normalize-display-values" "^4.0.0" "@csstools/postcss-oklab-function" "^4.0.12" + "@csstools/postcss-position-area-property" "^1.0.0" "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/postcss-property-rule-prelude-list" "^1.0.0" "@csstools/postcss-random-function" "^2.0.1" "@csstools/postcss-relative-color-syntax" "^3.0.12" "@csstools/postcss-scope-pseudo-class" "^4.0.1" "@csstools/postcss-sign-functions" "^1.1.4" "@csstools/postcss-stepped-value-functions" "^4.0.9" + "@csstools/postcss-syntax-descriptor-syntax-production" "^1.0.1" + "@csstools/postcss-system-ui-font-family" "^1.0.0" "@csstools/postcss-text-decoration-shorthand" "^4.0.3" "@csstools/postcss-trigonometric-functions" "^4.0.9" "@csstools/postcss-unset-value" "^4.0.0" - autoprefixer "^10.4.21" - browserslist "^4.26.0" + autoprefixer "^10.4.23" + browserslist "^4.28.1" css-blank-pseudo "^7.0.1" css-has-pseudo "^7.0.3" css-prefers-color-scheme "^10.0.0" - cssdb "^8.4.2" + cssdb "^8.6.0" postcss-attribute-case-insensitive "^7.0.1" postcss-clamp "^4.1.0" postcss-color-functional-notation "^7.0.12" @@ -13349,9 +13393,9 @@ postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: util-deprecate "^1.0.2" postcss-selector-parser@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" - integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz#e75d2e0d843f620e5df69076166f4e16f891cb9f" + integrity sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -13416,9 +13460,9 @@ prebuild-install@^7.1.3: tunnel-agent "^0.6.0" prettier@^3.3.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393" - integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ== + version "3.7.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.7.4.tgz#d2f8335d4b1cec47e1c8098645411b0c9dff9c0f" + integrity sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA== pretty-error@^4.0.0: version "4.0.0" @@ -13473,11 +13517,6 @@ prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" -property-information@^6.0.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" - integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== - property-information@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.1.0.tgz#b622e8646e02b580205415586b40804d3e8bfd5d" @@ -13538,10 +13577,12 @@ qs@6.13.0: dependencies: side-channel "^1.0.6" -quansync@^0.2.11: - version "0.2.11" - resolved "https://registry.yarnpkg.com/quansync/-/quansync-0.2.11.tgz#f9c3adda2e1272e4f8cf3f1457b04cbdb4ee692a" - integrity sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA== +qs@~6.14.0: + version "6.14.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.1.tgz#a41d85b9d3902f31d27861790506294881871159" + integrity sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ== + dependencies: + side-channel "^1.1.0" queue-microtask@^1.2.2: version "1.2.3" @@ -13599,6 +13640,16 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@~2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" + integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== + dependencies: + bytes "~3.1.2" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + unpipe "~1.0.0" + raw-loader@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" @@ -13664,9 +13715,9 @@ react-diff-viewer-continued@^3.4.0: prop-types "^15.8.1" react-dom@^19.2.0: - version "19.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.0.tgz#00ed1e959c365e9a9d48f8918377465466ec3af8" - integrity sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ== + version "19.2.3" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.3.tgz#f0b61d7e5c4a86773889fcc1853af3ed5f215b17" + integrity sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg== dependencies: scheduler "^0.27.0" @@ -13702,9 +13753,9 @@ react-fast-compare@^3.2.0: shallowequal "^1.1.0" react-hook-form@^7.56.1: - version "7.66.1" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.66.1.tgz#da56644b4ad9bd31254662d3242975681e29558c" - integrity sha512-2KnjpgG2Rhbi+CIiIBQQ9Df6sMGH5ExNyFl4Hw9qO7pIqMBR8Bvu9RQyjl3JM4vehzCh9soiNUM/xYMswb2EiA== + version "7.69.0" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.69.0.tgz#40f5e5ba2a436c2eee12b75ab30da5bb743744e7" + integrity sha512-yt6ZGME9f4F6WHwevrvpAjh42HMvocuSnSIHUGycBqXIJdhqGSPQzTpGF+1NLREk/58IdPxEMfPcFCjlMhclGw== react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: version "16.13.1" @@ -13775,9 +13826,9 @@ react-remove-scroll-bar@^2.3.7: tslib "^2.0.0" react-remove-scroll@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz#d2101d414f6d81d7d3bf033f3c1cb4785789f753" - integrity sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA== + version "2.7.2" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz#6442da56791117661978ae99cd29be9026fecca0" + integrity sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q== dependencies: react-remove-scroll-bar "^2.3.7" react-style-singleton "^2.2.3" @@ -13854,9 +13905,9 @@ react-transition-group@^4.3.0: prop-types "^15.6.2" react@^19.2.0: - version "19.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-19.2.0.tgz#d33dd1721698f4376ae57a54098cb47fc75d93a5" - integrity sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ== + version "19.2.3" + resolved "https://registry.yarnpkg.com/react/-/react-19.2.3.tgz#d83e5e8e7a258cf6b4fe28640515f99b87cd19b8" + integrity sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA== reactjs-popup@^2.0.6: version "2.0.6" @@ -14231,34 +14282,34 @@ robust-predicates@^3.0.2: integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== rollup@^4.20.0, rollup@^4.43.0: - version "4.53.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.53.3.tgz#dbc8cd8743b38710019fb8297e8d7a76e3faa406" - integrity sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA== + version "4.54.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.54.0.tgz#930f4dfc41ff94d720006f9f62503612a6c319b8" + integrity sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw== dependencies: "@types/estree" "1.0.8" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.53.3" - "@rollup/rollup-android-arm64" "4.53.3" - "@rollup/rollup-darwin-arm64" "4.53.3" - "@rollup/rollup-darwin-x64" "4.53.3" - "@rollup/rollup-freebsd-arm64" "4.53.3" - "@rollup/rollup-freebsd-x64" "4.53.3" - "@rollup/rollup-linux-arm-gnueabihf" "4.53.3" - "@rollup/rollup-linux-arm-musleabihf" "4.53.3" - "@rollup/rollup-linux-arm64-gnu" "4.53.3" - "@rollup/rollup-linux-arm64-musl" "4.53.3" - "@rollup/rollup-linux-loong64-gnu" "4.53.3" - "@rollup/rollup-linux-ppc64-gnu" "4.53.3" - "@rollup/rollup-linux-riscv64-gnu" "4.53.3" - "@rollup/rollup-linux-riscv64-musl" "4.53.3" - "@rollup/rollup-linux-s390x-gnu" "4.53.3" - "@rollup/rollup-linux-x64-gnu" "4.53.3" - "@rollup/rollup-linux-x64-musl" "4.53.3" - "@rollup/rollup-openharmony-arm64" "4.53.3" - "@rollup/rollup-win32-arm64-msvc" "4.53.3" - "@rollup/rollup-win32-ia32-msvc" "4.53.3" - "@rollup/rollup-win32-x64-gnu" "4.53.3" - "@rollup/rollup-win32-x64-msvc" "4.53.3" + "@rollup/rollup-android-arm-eabi" "4.54.0" + "@rollup/rollup-android-arm64" "4.54.0" + "@rollup/rollup-darwin-arm64" "4.54.0" + "@rollup/rollup-darwin-x64" "4.54.0" + "@rollup/rollup-freebsd-arm64" "4.54.0" + "@rollup/rollup-freebsd-x64" "4.54.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.54.0" + "@rollup/rollup-linux-arm-musleabihf" "4.54.0" + "@rollup/rollup-linux-arm64-gnu" "4.54.0" + "@rollup/rollup-linux-arm64-musl" "4.54.0" + "@rollup/rollup-linux-loong64-gnu" "4.54.0" + "@rollup/rollup-linux-ppc64-gnu" "4.54.0" + "@rollup/rollup-linux-riscv64-gnu" "4.54.0" + "@rollup/rollup-linux-riscv64-musl" "4.54.0" + "@rollup/rollup-linux-s390x-gnu" "4.54.0" + "@rollup/rollup-linux-x64-gnu" "4.54.0" + "@rollup/rollup-linux-x64-musl" "4.54.0" + "@rollup/rollup-openharmony-arm64" "4.54.0" + "@rollup/rollup-win32-arm64-msvc" "4.54.0" + "@rollup/rollup-win32-ia32-msvc" "4.54.0" + "@rollup/rollup-win32-x64-gnu" "4.54.0" + "@rollup/rollup-win32-x64-msvc" "4.54.0" fsevents "~2.3.2" rou3@^0.7.10: @@ -14287,9 +14338,9 @@ roughjs@^4.6.6: points-on-path "^0.2.1" rslog@^1.2.3: - version "1.3.1" - resolved "https://registry.yarnpkg.com/rslog/-/rslog-1.3.1.tgz#bd8d02898147e476e907a65b65be64a6176e85a1" - integrity sha512-cO4V+79h7+gSLKx1qk1jUhHzuCPN7LiH8PoEbmbGhQITMMk39JtyjxTkbSfL9P4CoR/RpOiJrDyVM/Iprhvq7w== + version "1.3.2" + resolved "https://registry.yarnpkg.com/rslog/-/rslog-1.3.2.tgz#55aa0cc939388487d0d026cf4370fbe6f10436ec" + integrity sha512-1YyYXBvN0a2b1MSIDLwDTqqgjDzRKxUg/S/+KO6EAgbtZW1B3fdLHAMhEEtvk1patJYMqcRvlp3HQwnxj7AdGQ== rtlcss@^4.1.0: version "4.3.0" @@ -14364,9 +14415,9 @@ sass@1.51.0: source-map-js ">=0.6.2 <2.0.0" sass@^1.93.2: - version "1.94.2" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.94.2.tgz#198511fc6fdd2fc0a71b8d1261735c12608d4ef3" - integrity sha512-N+7WK20/wOr7CzA2snJcUSSNTCzeCGUTFY3OgeQP3mZ1aj9NMQ0mSTXwlrnd89j33zzQJGqIN52GIOmYrfq46A== + version "1.97.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.97.1.tgz#f36e492baf8ccdd08d591b58d3d8b53ea35ab905" + integrity sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A== dependencies: chokidar "^4.0.0" immutable "^5.0.2" @@ -14472,6 +14523,25 @@ send@0.19.0: range-parser "~1.2.1" statuses "2.0.1" +send@~0.19.0, send@~0.19.1: + version "0.19.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29" + integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "~0.5.2" + http-errors "~2.0.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.4.1" + range-parser "~1.2.1" + statuses "~2.0.2" + serialize-javascript@^6.0.0, serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" @@ -14515,6 +14585,16 @@ serve-static@1.16.2: parseurl "~1.3.3" send "0.19.0" +serve-static@~1.16.2: + version "1.16.3" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9" + integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "~0.19.1" + set-cookie-parser@^2.7.1: version "2.7.2" resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz#ccd08673a9ae5d2e44ea2a2de25089e67c7edf68" @@ -14542,7 +14622,7 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== -setprototypeof@1.2.0: +setprototypeof@1.2.0, setprototypeof@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== @@ -14605,7 +14685,7 @@ side-channel-weakmap@^1.0.2: object-inspect "^1.13.3" side-channel-map "^1.0.1" -side-channel@^1.0.6: +side-channel@^1.0.6, side-channel@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== @@ -14700,30 +14780,30 @@ snake-case@^3.0.4: tslib "^2.0.3" socket.io-adapter@~2.5.2: - version "2.5.5" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz#c7a1f9c703d7756844751b6ff9abfc1780664082" - integrity sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg== + version "2.5.6" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz#c697f609d36a676a46749782274607d8df52c1d8" + integrity sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ== dependencies: - debug "~4.3.4" - ws "~8.17.1" + debug "~4.4.1" + ws "~8.18.3" socket.io-client@^4.8.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.8.1.tgz#1941eca135a5490b94281d0323fe2a35f6f291cb" - integrity sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ== + version "4.8.3" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.8.3.tgz#62717edd46a318c918125b57e92dc7f8bb71c34c" + integrity sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g== dependencies: "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.2" + debug "~4.4.1" engine.io-client "~6.6.1" socket.io-parser "~4.2.4" socket.io-parser@~4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" - integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + version "4.2.5" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.5.tgz#3f41b8d369129a93268f2abecba94b5292850099" + integrity sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ== dependencies: "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" + debug "~4.4.1" socket.io@4.8.1: version "4.8.1" @@ -14843,6 +14923,11 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@~2.0.1, statuses@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + std-env@^3.10.0, std-env@^3.7.0, std-env@^3.8.0: version "3.10.0" resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.10.0.tgz#d810b27e3a073047b2b5e40034881f5ea6f9c83b" @@ -15041,12 +15126,12 @@ swc-loader@^0.2.6: "@swc/counter" "^0.1.3" swr@^2.2.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/swr/-/swr-2.3.6.tgz#5fee0ee8a0762a16871ee371075cb09422b64f50" - integrity sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw== + version "2.3.8" + resolved "https://registry.yarnpkg.com/swr/-/swr-2.3.8.tgz#aa15596321a34e575226a60576bade0b57adf7bf" + integrity sha512-gaCPRVoMq8WGDcWj9p4YWzCMPHzE0WNl6W8ADIx9c3JBEIdMkJGMzW+uzXvxHMltwcYACr9jP+32H8/hgwMR7w== dependencies: dequal "^2.0.3" - use-sync-external-store "^1.4.0" + use-sync-external-store "^1.6.0" tabbable@^6.0.0: version "6.3.0" @@ -15084,10 +15169,10 @@ tar-stream@^2.1.4, tar-stream@^2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" -terser-webpack-plugin@^5.3.11, terser-webpack-plugin@^5.3.9: - version "5.3.14" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" - integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== +terser-webpack-plugin@^5.3.16, terser-webpack-plugin@^5.3.9: + version "5.3.16" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz#741e448cc3f93d8026ebe4f7ef9e4afacfd56330" + integrity sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q== dependencies: "@jridgewell/trace-mapping" "^0.3.25" jest-worker "^27.4.5" @@ -15144,12 +15229,12 @@ tinybench@^2.9.0: resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== -tinyexec@^0.3.1, tinyexec@^0.3.2: +tinyexec@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.2.tgz#941794e657a85e496577995c6eef66f53f42b3d2" integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA== -tinyexec@^1.0.1: +tinyexec@^1.0.1, tinyexec@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-1.0.2.tgz#bdd2737fe2ba40bd6f918ae26642f264b99ca251" integrity sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg== @@ -15194,7 +15279,7 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -toidentifier@1.0.1: +toidentifier@1.0.1, toidentifier@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== @@ -15496,10 +15581,10 @@ unzipper@^0.10.11: readable-stream "~2.3.6" setimmediate "~1.0.4" -update-browserslist-db@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz#7802aa2ae91477f255b86e0e46dbc787a206ad4a" - integrity sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A== +update-browserslist-db@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== dependencies: escalade "^3.2.0" picocolors "^1.1.1" @@ -15560,7 +15645,7 @@ use-sidecar@^1.1.3: detect-node-es "^1.1.0" tslib "^2.0.0" -use-sync-external-store@^1.2.2, use-sync-external-store@^1.4.0: +use-sync-external-store@^1.2.2, use-sync-external-store@^1.4.0, use-sync-external-store@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz#b174bfa65cb2b526732d9f2ac0a408027876f32d" integrity sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w== @@ -15682,11 +15767,11 @@ vite@^5.0.0: fsevents "~2.3.3" "vite@^6.0.0 || ^7.0.0": - version "7.2.4" - resolved "https://registry.yarnpkg.com/vite/-/vite-7.2.4.tgz#a3a09c7e25487612ecc1119c7d412c73da35bd4e" - integrity sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w== + version "7.3.0" + resolved "https://registry.yarnpkg.com/vite/-/vite-7.3.0.tgz#066c7a835993a66e82004eac3e185d0d157fd658" + integrity sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg== dependencies: - esbuild "^0.25.0" + esbuild "^0.27.0" fdir "^6.5.0" picomatch "^4.0.3" postcss "^8.5.6" @@ -15696,17 +15781,17 @@ vite@^5.0.0: fsevents "~2.3.3" vitest@*: - version "4.0.14" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-4.0.14.tgz#69f550e3b3e666671948da18e5d50939d5a22e5d" - integrity sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw== - dependencies: - "@vitest/expect" "4.0.14" - "@vitest/mocker" "4.0.14" - "@vitest/pretty-format" "4.0.14" - "@vitest/runner" "4.0.14" - "@vitest/snapshot" "4.0.14" - "@vitest/spy" "4.0.14" - "@vitest/utils" "4.0.14" + version "4.0.16" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-4.0.16.tgz#7ceaecd4612fa6351923e842a0723c48cdfb6719" + integrity sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q== + dependencies: + "@vitest/expect" "4.0.16" + "@vitest/mocker" "4.0.16" + "@vitest/pretty-format" "4.0.16" + "@vitest/runner" "4.0.16" + "@vitest/snapshot" "4.0.16" + "@vitest/spy" "4.0.16" + "@vitest/utils" "4.0.16" es-module-lexer "^1.7.0" expect-type "^1.2.2" magic-string "^0.30.21" @@ -15715,7 +15800,7 @@ vitest@*: picomatch "^4.0.3" std-env "^3.10.0" tinybench "^2.9.0" - tinyexec "^0.3.2" + tinyexec "^1.0.2" tinyglobby "^0.2.15" tinyrainbow "^3.0.3" vite "^6.0.0 || ^7.0.0" @@ -15795,9 +15880,9 @@ warning@^4.0.0: loose-envify "^1.0.0" watchpack@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947" - integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.0.tgz#fa115d5ccaa4bf3aa594f586257c0bc4768939fd" + integrity sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -15917,9 +16002,9 @@ webpack-virtual-modules@^0.5.0: integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== webpack@^5.88.1, webpack@^5.95.0: - version "5.103.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.103.0.tgz#17a7c5a5020d5a3a37c118d002eade5ee2c6f3da" - integrity sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw== + version "5.104.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.104.1.tgz#94bd41eb5dbf06e93be165ba8be41b8260d4fb1a" + integrity sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA== dependencies: "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.8" @@ -15929,10 +16014,10 @@ webpack@^5.88.1, webpack@^5.95.0: "@webassemblyjs/wasm-parser" "^1.14.1" acorn "^8.15.0" acorn-import-phases "^1.0.3" - browserslist "^4.26.3" + browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.3" - es-module-lexer "^1.2.1" + enhanced-resolve "^5.17.4" + es-module-lexer "^2.0.0" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" @@ -15943,7 +16028,7 @@ webpack@^5.88.1, webpack@^5.95.0: neo-async "^2.6.2" schema-utils "^4.3.3" tapable "^2.3.0" - terser-webpack-plugin "^5.3.11" + terser-webpack-plugin "^5.3.16" watchpack "^2.4.4" webpack-sources "^3.3.3" @@ -16062,16 +16147,11 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== -ws@^8.18.0: +ws@^8.18.0, ws@~8.18.3: version "8.18.3" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== -ws@~8.17.1: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" - integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== - wsl-utils@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/wsl-utils/-/wsl-utils-0.1.0.tgz#8783d4df671d4d50365be2ee4c71917a0557baab" @@ -16159,11 +16239,11 @@ zip-stream@^4.1.0: readable-stream "^3.6.0" zod@^4.1.12, zod@^4.1.8: - version "4.1.13" - resolved "https://registry.yarnpkg.com/zod/-/zod-4.1.13.tgz#93699a8afe937ba96badbb0ce8be6033c0a4b6b1" - integrity sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig== + version "4.3.2" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.3.2.tgz#bcfc856b621287390636f3368cd7e9d5d1be30ce" + integrity sha512-b8L8yn4rIVfiXyHAmnr52/ZEpDumlT0bmxiq3Ws1ybrinhflGpt12Hvv54kYnEsGPRs6o/Ka3/ppA2OWY21IVg== -zustand@^4.3.2: +zustand@^4.3.2, zustand@^4.4.0: version "4.5.7" resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.7.tgz#7d6bb2026a142415dd8be8891d7870e6dbe65f55" integrity sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==