diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index b8b477fd..684e92a4 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,3 @@ # These are supported funding model platforms -github: [wbkd] +github: [xyflow] diff --git a/examples/react/cypress.config.ts b/examples/react/cypress.config.ts index b46eaa76..027bd690 100644 --- a/examples/react/cypress.config.ts +++ b/examples/react/cypress.config.ts @@ -2,7 +2,7 @@ import { defineConfig } from 'cypress'; export default defineConfig({ e2e: { - baseUrl: 'http://localhost:3000', + baseUrl: 'http://localhost:3000/examples', viewportWidth: 1280, viewportHeight: 720, video: false, diff --git a/examples/react/index.html b/examples/react/index.html index f1cba741..828516b9 100644 --- a/examples/react/index.html +++ b/examples/react/index.html @@ -2,7 +2,7 @@ - + React Flow Examples diff --git a/examples/react/package.json b/examples/react/package.json index 73d91382..36dd09a6 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -1,5 +1,5 @@ { - "name": "@xyflow/react-examples", + "name": "react-examples", "private": true, "version": "0.0.0", "type": "module", @@ -15,25 +15,25 @@ }, "dependencies": { "@xyflow/react": "workspace:*", - "classcat": "^5.0.3", + "classcat": "^5.0.4", "dagre": "^0.8.5", "localforage": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.3.0", - "zustand": "^4.4.1" + "react-router-dom": "^6.18.0", + "zustand": "^4.4.6" }, "devDependencies": { "@cypress/skip-test": "^2.6.1", - "@types/dagre": "^0.7.48", - "@types/react": "^18.0.17", - "@types/react-dom": "^18.0.6", - "@vitejs/plugin-react": "4.0.4", - "@vitejs/plugin-react-swc": "^3.3.2", + "@types/dagre": "^0.7.52", + "@types/react": "^18.2.36", + "@types/react-dom": "^18.2.14", + "@vitejs/plugin-react": "4.1.1", + "@vitejs/plugin-react-swc": "^3.4.1", "cypress": "12.17.3", - "cypress-real-events": "1.10.0", - "start-server-and-test": "^1.14.0", - "typescript": "5.1.3", - "vite": "4.4.9" + "cypress-real-events": "1.11.0", + "start-server-and-test": "^2.0.2", + "typescript": "5.2.2", + "vite": "4.5.0" } } diff --git a/examples/react/public/favicon.ico b/examples/react/public/favicon.ico new file mode 100644 index 00000000..9ef0fbfd Binary files /dev/null and b/examples/react/public/favicon.ico differ diff --git a/examples/react/public/vite.svg b/examples/react/public/vite.svg deleted file mode 100644 index e7b8dfb1..00000000 --- a/examples/react/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/react/src/App/header.tsx b/examples/react/src/App/header.tsx new file mode 100644 index 00000000..37e57910 --- /dev/null +++ b/examples/react/src/App/header.tsx @@ -0,0 +1,34 @@ +import { useEffect, useState } from 'react'; +import { Outlet, useLocation, useNavigate } from 'react-router-dom'; + +import routes from './routes'; + +export default function Header() { + const location = useLocation(); + const navigate = useNavigate(); + const [currentPath, setCurrentPath] = useState(location.pathname); + + useEffect(() => { + const name = routes.find((route) => route.path === currentPath)?.name; + document.title = `React Flow Examples${name ? ' - ' + name : ''}`; + navigate(currentPath); + }, [currentPath]); + + return ( + <> +
+ + React Flow Dev + + +
+ + + ); +} diff --git a/examples/react/src/App/index.tsx b/examples/react/src/App/index.tsx index b6bc5be7..98b70cf8 100644 --- a/examples/react/src/App/index.tsx +++ b/examples/react/src/App/index.tsx @@ -1,326 +1,21 @@ -import { useEffect, useState } from 'react'; -import { BrowserRouter, Route, Routes, useLocation, useNavigate } from 'react-router-dom'; +import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom'; +import routes from './routes'; +import GenericTestRoutes from '../generic-tests'; import Basic from '../examples/Basic'; -import Backgrounds from '../examples/Backgrounds'; -import ControlledUncontrolled from '../examples/ControlledUncontrolled'; -import ControlledViewport from '../examples/ControlledViewport'; -import CustomConnectionLine from '../examples/CustomConnectionLine'; -import CustomMiniMapNode from '../examples/CustomMiniMapNode'; -import CustomNode from '../examples/CustomNode'; -import DefaultNodes from '../examples/DefaultNodes'; -import DragHandle from '../examples/DragHandle'; -import DragNDrop from '../examples/DragNDrop'; -import EasyConnect from '../examples/EasyConnect'; -import Edges from '../examples/Edges'; -import EdgeRenderer from '../examples/EdgeRenderer'; -import EdgeTypes from '../examples/EdgeTypes'; -import Empty from '../examples/Empty'; -import Figma from '../examples/Figma'; -import FloatingEdges from '../examples/FloatingEdges'; -import Hidden from '../examples/Hidden'; -import Interaction from '../examples/Interaction'; -import Intersection from '../examples/Intersection'; -import Layouting from '../examples/Layouting'; -import MultiFlows from '../examples/MultiFlows'; -import NestedNodes from '../examples/NestedNodes'; -import NodeResizer from '../examples/NodeResizer'; -import NodeTypeChange from '../examples/NodeTypeChange'; -import NodeTypesObjectChange from '../examples/NodeTypesObjectChange'; -import Overview from '../examples/Overview'; -import Provider from '../examples/Provider'; -import SaveRestore from '../examples/SaveRestore'; -import Stress from '../examples/Stress'; -import Subflow from '../examples/Subflow'; -import SwitchFlow from '../examples/Switch'; -import TouchDevice from '../examples/TouchDevice'; -import Undirectional from '../examples/Undirectional'; -import UpdatableEdge from '../examples/UpdatableEdge'; -import UpdateNode from '../examples/UpdateNode'; -import UseUpdateNodeInternals from '../examples/UseUpdateNodeInternals'; -import UseReactFlow from '../examples/UseReactFlow'; -import Validation from '../examples/Validation'; -import UseKeyPress from '../examples/UseKeyPress'; -import EdgeRouting from '../examples/EdgeRouting'; -import CancelConnection from '../examples/CancelConnection'; -import InteractiveMinimap from '../examples/InteractiveMinimap'; -import UseOnSelectionChange from '../examples/UseOnSelectionChange'; -import NodeToolbar from '../examples/NodeToolbar'; -import useNodesInitialized from '../examples/UseNodesInit'; - -interface IRoute { - name: string; - path: string; - component: React.ComponentType; -} - -const routes: IRoute[] = [ - { - name: 'Basic', - path: '/', - component: Basic, - }, - { - name: 'Backgrounds', - path: '/backgrounds', - component: Backgrounds, - }, - { - name: 'Cancel Connection', - path: '/cancel-connection', - component: CancelConnection, - }, - { - name: 'Controlled/Uncontrolled', - path: '/controlled-uncontrolled', - component: ControlledUncontrolled, - }, - { - name: 'Controlled Viewport', - path: '/controlled-viewport', - component: ControlledViewport, - }, - { - name: 'Custom Connection Line', - path: '/custom-connectionline', - component: CustomConnectionLine, - }, - { - name: 'Custom Minimap Node', - path: '/custom-minimap-node', - component: CustomMiniMapNode, - }, - { - name: 'Custom Node', - path: '/custom-node', - component: CustomNode, - }, - { - name: 'Default Nodes', - path: '/default-nodes', - component: DefaultNodes, - }, - { - name: 'Drag Handle', - path: '/draghandle', - component: DragHandle, - }, - { - name: 'Drag and Drop', - path: '/dragndrop', - component: DragNDrop, - }, - { - name: 'EasyConnect', - path: '/easy-connect', - component: EasyConnect, - }, - { - name: 'Edges', - path: '/edges', - component: Edges, - }, - { - name: 'Edge Renderer', - path: '/edge-renderer', - component: EdgeRenderer, - }, - { - name: 'Edge Types', - path: '/edge-types', - component: EdgeTypes, - }, - { - name: 'Edge Routing', - path: '/edge-routing', - component: EdgeRouting, - }, - { - name: 'Empty', - path: '/empty', - component: Empty, - }, - { - name: 'Figma', - path: '/figma', - component: Figma, - }, - { - name: 'Floating Edges', - path: '/floating-edges', - component: FloatingEdges, - }, - { - name: 'Hidden', - path: '/hidden', - component: Hidden, - }, - { - name: 'Interaction', - path: '/interaction', - component: Interaction, - }, - { - name: 'Intersection', - path: '/intersection', - component: Intersection, - }, - { - name: 'Interactive Minimap', - path: '/interactive-minimap', - component: InteractiveMinimap, - }, - { - name: 'Layouting', - path: '/layouting', - component: Layouting, - }, - { - name: 'Multi Flows', - path: '/multiflows', - component: MultiFlows, - }, - { - name: 'Nested Nodes', - path: '/nested-nodes', - component: NestedNodes, - }, - { - name: 'Node Type Change', - path: '/nodetype-change', - component: NodeTypeChange, - }, - { - name: 'nodeTypes Object Change', - path: '/nodetypesobject-change', - component: NodeTypesObjectChange, - }, - { - name: 'NodeToolbar', - path: '/node-toolbar', - component: NodeToolbar, - }, - { - name: 'NodeResizer', - path: '/node-resizer', - component: NodeResizer, - }, - { - name: 'Overview', - path: '/overview', - component: Overview, - }, - { - name: 'Provider', - path: '/provider', - component: Provider, - }, - { - name: 'Save/Restore', - path: '/save-restore', - component: SaveRestore, - }, - { - name: 'Stress', - path: '/stress', - component: Stress, - }, - { - name: 'Subflow', - path: '/subflow', - component: Subflow, - }, - { - name: 'Switch Flow', - path: '/switch', - component: SwitchFlow, - }, - { - name: 'Touch Device', - path: '/touch-device', - component: TouchDevice, - }, - { - name: 'Undirectional', - path: '/undirectional', - component: Undirectional, - }, - { - name: 'Updatable Edge', - path: '/updatable-edge', - component: UpdatableEdge, - }, - { - name: 'Update Node', - path: '/update-node', - component: UpdateNode, - }, - { - name: 'useNodesInitialized', - path: '/use-nodes-initialized', - component: useNodesInitialized, - }, - { - name: 'useOnSelectionChange', - path: '/use-on-selection-change', - component: UseOnSelectionChange, - }, - { - name: 'useReactFlow', - path: '/usereactflow', - component: UseReactFlow, - }, - { - name: 'useUpdateNodeInternals', - path: '/useupdatenodeinternals', - component: UseUpdateNodeInternals, - }, - { - name: 'Validation', - path: '/validation', - component: Validation, - }, - { - name: 'useKeyPress', - path: '/use-key-press', - component: UseKeyPress, - }, -]; - -const Header = () => { - const location = useLocation(); - const navigate = useNavigate(); - const [currentPath, setCurrentPath] = useState(location.pathname); - - useEffect(() => { - const name = routes.find((route) => route.path === currentPath)?.name; - document.title = `React Flow Examples${name ? ' - ' + name : ''}`; - navigate(currentPath); - }, [currentPath]); - - return ( -
- - React Flow Dev - - -
- ); -}; +import Header from './header'; export default () => ( -
- {routes.map((route) => ( - } /> - ))} + } /> + }> + } /> + {routes.map((route) => ( + } /> + ))} + + } /> ); diff --git a/examples/react/src/App/routes.ts b/examples/react/src/App/routes.ts new file mode 100644 index 00000000..6c6b596c --- /dev/null +++ b/examples/react/src/App/routes.ts @@ -0,0 +1,287 @@ +import Basic from '../examples/Basic'; +import Backgrounds from '../examples/Backgrounds'; +import ControlledUncontrolled from '../examples/ControlledUncontrolled'; +import ControlledViewport from '../examples/ControlledViewport'; +import CustomConnectionLine from '../examples/CustomConnectionLine'; +import CustomMiniMapNode from '../examples/CustomMiniMapNode'; +import CustomNode from '../examples/CustomNode'; +import DefaultNodes from '../examples/DefaultNodes'; +import DragHandle from '../examples/DragHandle'; +import DragNDrop from '../examples/DragNDrop'; +import EasyConnect from '../examples/EasyConnect'; +import Edges from '../examples/Edges'; +import EdgeRenderer from '../examples/EdgeRenderer'; +import EdgeTypes from '../examples/EdgeTypes'; +import Empty from '../examples/Empty'; +import Figma from '../examples/Figma'; +import FloatingEdges from '../examples/FloatingEdges'; +import Hidden from '../examples/Hidden'; +import Interaction from '../examples/Interaction'; +import Intersection from '../examples/Intersection'; +import Layouting from '../examples/Layouting'; +import MultiFlows from '../examples/MultiFlows'; +import NestedNodes from '../examples/NestedNodes'; +import NodeResizer from '../examples/NodeResizer'; +import NodeTypeChange from '../examples/NodeTypeChange'; +import NodeTypesObjectChange from '../examples/NodeTypesObjectChange'; +import Overview from '../examples/Overview'; +import Provider from '../examples/Provider'; +import SaveRestore from '../examples/SaveRestore'; +import Stress from '../examples/Stress'; +import Subflow from '../examples/Subflow'; +import SwitchFlow from '../examples/Switch'; +import TouchDevice from '../examples/TouchDevice'; +import Undirectional from '../examples/Undirectional'; +import UpdatableEdge from '../examples/UpdatableEdge'; +import UpdateNode from '../examples/UpdateNode'; +import UseUpdateNodeInternals from '../examples/UseUpdateNodeInternals'; +import UseReactFlow from '../examples/UseReactFlow'; +import Validation from '../examples/Validation'; +import UseKeyPress from '../examples/UseKeyPress'; +import EdgeRouting from '../examples/EdgeRouting'; +import CancelConnection from '../examples/CancelConnection'; +import InteractiveMinimap from '../examples/InteractiveMinimap'; +import UseOnSelectionChange from '../examples/UseOnSelectionChange'; +import NodeToolbar from '../examples/NodeToolbar'; +import useNodesInitialized from '../examples/UseNodesInit'; + +export interface IRoute { + name: string; + path: string; + component: React.ComponentType; +} + +const routes: IRoute[] = [ + { + name: 'Basic', + path: 'basic', + component: Basic, + }, + { + name: 'Backgrounds', + path: 'backgrounds', + component: Backgrounds, + }, + { + name: 'Cancel Connection', + path: 'cancel-connection', + component: CancelConnection, + }, + { + name: 'Controlled/Uncontrolled', + path: 'controlled-uncontrolled', + component: ControlledUncontrolled, + }, + { + name: 'Controlled Viewport', + path: 'controlled-viewport', + component: ControlledViewport, + }, + { + name: 'Custom Connection Line', + path: 'custom-connectionline', + component: CustomConnectionLine, + }, + { + name: 'Custom Minimap Node', + path: 'custom-minimap-node', + component: CustomMiniMapNode, + }, + { + name: 'Custom Node', + path: 'custom-node', + component: CustomNode, + }, + { + name: 'Default Nodes', + path: 'default-nodes', + component: DefaultNodes, + }, + { + name: 'Drag Handle', + path: 'draghandle', + component: DragHandle, + }, + { + name: 'Drag and Drop', + path: 'dragndrop', + component: DragNDrop, + }, + { + name: 'EasyConnect', + path: 'easy-connect', + component: EasyConnect, + }, + { + name: 'Edges', + path: 'edges', + component: Edges, + }, + { + name: 'Edge Renderer', + path: 'edge-renderer', + component: EdgeRenderer, + }, + { + name: 'Edge Types', + path: 'edge-types', + component: EdgeTypes, + }, + { + name: 'Edge Routing', + path: 'edge-routing', + component: EdgeRouting, + }, + { + name: 'Empty', + path: 'empty', + component: Empty, + }, + { + name: 'Figma', + path: 'figma', + component: Figma, + }, + { + name: 'Floating Edges', + path: 'floating-edges', + component: FloatingEdges, + }, + { + name: 'Hidden', + path: 'hidden', + component: Hidden, + }, + { + name: 'Interaction', + path: 'interaction', + component: Interaction, + }, + { + name: 'Intersection', + path: 'intersection', + component: Intersection, + }, + { + name: 'Interactive Minimap', + path: 'interactive-minimap', + component: InteractiveMinimap, + }, + { + name: 'Layouting', + path: 'layouting', + component: Layouting, + }, + { + name: 'Multi Flows', + path: 'multiflows', + component: MultiFlows, + }, + { + name: 'Nested Nodes', + path: 'nested-nodes', + component: NestedNodes, + }, + { + name: 'Node Type Change', + path: 'nodetype-change', + component: NodeTypeChange, + }, + { + name: 'nodeTypes Object Change', + path: 'nodetypesobject-change', + component: NodeTypesObjectChange, + }, + { + name: 'NodeToolbar', + path: 'node-toolbar', + component: NodeToolbar, + }, + { + name: 'NodeResizer', + path: 'node-resizer', + component: NodeResizer, + }, + { + name: 'Overview', + path: 'overview', + component: Overview, + }, + { + name: 'Provider', + path: 'provider', + component: Provider, + }, + { + name: 'Save/Restore', + path: 'save-restore', + component: SaveRestore, + }, + { + name: 'Stress', + path: 'stress', + component: Stress, + }, + { + name: 'Subflow', + path: 'subflow', + component: Subflow, + }, + { + name: 'Switch Flow', + path: 'switch', + component: SwitchFlow, + }, + { + name: 'Touch Device', + path: 'touch-device', + component: TouchDevice, + }, + { + name: 'Undirectional', + path: 'undirectional', + component: Undirectional, + }, + { + name: 'Updatable Edge', + path: 'updatable-edge', + component: UpdatableEdge, + }, + { + name: 'Update Node', + path: 'update-node', + component: UpdateNode, + }, + { + name: 'useNodesInitialized', + path: 'use-nodes-initialized', + component: useNodesInitialized, + }, + { + name: 'useOnSelectionChange', + path: 'use-on-selection-change', + component: UseOnSelectionChange, + }, + { + name: 'useReactFlow', + path: 'usereactflow', + component: UseReactFlow, + }, + { + name: 'useUpdateNodeInternals', + path: 'useupdatenodeinternals', + component: UseUpdateNodeInternals, + }, + { + name: 'Validation', + path: 'validation', + component: Validation, + }, + { + name: 'useKeyPress', + path: 'use-key-press', + component: UseKeyPress, + }, +]; + +export default routes; diff --git a/examples/react/src/app.d.ts b/examples/react/src/app.d.ts new file mode 100644 index 00000000..da7d9f29 --- /dev/null +++ b/examples/react/src/app.d.ts @@ -0,0 +1,7 @@ +import { Edge, Node, ReactFlowProps } from '@xyflow/react'; + +declare global { + interface FlowConfig { + flowProps: Omit & { nodes: Node[]; edges: Edge[] }; + } +} diff --git a/examples/react/src/examples/Basic/index.tsx b/examples/react/src/examples/Basic/index.tsx index 21f48ec5..4f1a51d2 100644 --- a/examples/react/src/examples/Basic/index.tsx +++ b/examples/react/src/examples/Basic/index.tsx @@ -41,6 +41,7 @@ const initialNodes: Node[] = [ data: { label: 'Node 4' }, position: { x: 400, y: 200 }, className: 'light', + connectable: false, }, ]; diff --git a/examples/react/src/generic-tests/Flow.tsx b/examples/react/src/generic-tests/Flow.tsx new file mode 100644 index 00000000..e5c9cd77 --- /dev/null +++ b/examples/react/src/generic-tests/Flow.tsx @@ -0,0 +1,30 @@ +import { useState, useCallback } from 'react'; +import { + ReactFlow, + applyNodeChanges, + applyEdgeChanges, + addEdge, + OnNodesChange, + OnEdgesChange, + OnConnect, +} from '@xyflow/react'; + +type FlowProps = { + flowConfig: FlowConfig; +}; + +export default ({ flowConfig }: FlowProps) => { + const [nodes, setNodes] = useState(flowConfig.flowProps.nodes); + const [edges, setEdges] = useState(flowConfig.flowProps.edges); + const props = { ...flowConfig.flowProps, nodes, edges }; + + const onNodesChange: OnNodesChange = useCallback((changes) => setNodes((nds) => applyNodeChanges(changes, nds)), []); + const onEdgesChange: OnEdgesChange = useCallback((changes) => setEdges((eds) => applyEdgeChanges(changes, eds)), []); + const onConnect: OnConnect = useCallback((params) => setEdges((eds) => addEdge(params, eds)), []); + + return ( +
+ +
+ ); +}; diff --git a/examples/react/src/generic-tests/edges/general.ts b/examples/react/src/generic-tests/edges/general.ts new file mode 100644 index 00000000..bb768b09 --- /dev/null +++ b/examples/react/src/generic-tests/edges/general.ts @@ -0,0 +1,163 @@ +import { MarkerType } from '@xyflow/react'; + +export default { + flowProps: { + fitView: true, + nodes: [ + { + id: '1', + data: { label: '1' }, + position: { x: 0, y: 0 }, + type: 'input', + }, + { + id: '2', + data: { label: '2' }, + position: { x: -100, y: 100 }, + }, + { + id: '3', + data: { label: '3' }, + position: { x: 100, y: 100 }, + }, + { + id: '4', + data: { label: '4' }, + position: { x: -100, y: 200 }, + }, + { + id: '5', + data: { label: '5' }, + position: { x: 100, y: 200 }, + }, + { + id: '6', + data: { label: '6' }, + position: { x: -100, y: 300 }, + }, + { + id: '7', + data: { label: '7' }, + position: { x: 100, y: 300 }, + }, + { + id: '8', + data: { label: '8' }, + position: { x: -100, y: 400 }, + }, + { + id: '9', + data: { label: '9' }, + position: { x: 100, y: 400 }, + }, + { + id: '10', + data: { label: '10' }, + position: { x: -100, y: 500 }, + }, + { + id: '11', + data: { label: '11' }, + position: { x: 100, y: 500 }, + }, + // { + // id: '12', + // data: { label: '12' }, + // position: { x: -100, y: 600 } + // }, + // { + // id: '13', + // data: { label: '13' }, + // position: { x: 100, y: 600 } + // } + ], + edges: [ + { + id: 'edge-with-class', + source: '1', + target: '2', + className: 'edge-class-test', + }, + { + id: 'edge-with-style', + source: '1', + target: '3', + style: { + stroke: 'red', + }, + }, + { + id: 'hidden-edge', + source: '2', + target: '4', + label: 'hidden', + hidden: true, + }, + { + id: 'animated-edge', + source: '3', + target: '5', + label: 'animated', + animated: true, + }, + { + id: 'not-selectable-edge', + source: '4', + target: '6', + label: 'not-selectable', + selectable: false, + }, + { + id: 'not-deletable', + source: '5', + target: '7', + label: 'not-deletable', + deletable: false, + }, + { + id: 'z-index', + source: '6', + target: '8', + label: 'z-index', + zIndex: 3141592, + }, + { + id: 'aria-label', + source: '7', + target: '9', + label: 'aria-label', + ariaLabel: 'aria-label-test', + }, + { + id: 'interaction-width', + source: '8', + target: '10', + label: 'interaction-width', + interactionWidth: 42, + }, + { + id: 'markers', + source: '9', + target: '11', + label: 'markers', + markerEnd: { type: MarkerType.Arrow }, + markerStart: { type: MarkerType.ArrowClosed }, + }, + // { + // id: 'updatable', + // source: '9', + // target: '11', + // label: 'focusable', + // updatable: true + // }, + // { + // id: 'not-focusable', + // + // source: '5', + // target: '7', + // label: 'not-focusable', + // focusable: false + // }, + ], + }, +} satisfies FlowConfig; diff --git a/examples/react/src/generic-tests/index.tsx b/examples/react/src/generic-tests/index.tsx new file mode 100644 index 00000000..1a595581 --- /dev/null +++ b/examples/react/src/generic-tests/index.tsx @@ -0,0 +1,17 @@ +import { useLocation } from 'react-router-dom'; + +import Flow from './Flow'; + +const flowConfigs = import.meta.glob('./**/*.ts', { eager: true, import: 'default' }); + +export default () => { + const location = useLocation(); + const path = `.${location.pathname.replace('/tests/generic', '')}.ts`; + const flowConfig = flowConfigs[path]; + + if (!flowConfig) { + return `404: This route doesn't exists.`; + } + + return ; +}; diff --git a/examples/react/src/generic-tests/nodes/components/DragHandleNode.tsx b/examples/react/src/generic-tests/nodes/components/DragHandleNode.tsx new file mode 100644 index 00000000..48037f61 --- /dev/null +++ b/examples/react/src/generic-tests/nodes/components/DragHandleNode.tsx @@ -0,0 +1,25 @@ +export default () => { + return ( +
+
+
+ ); +}; diff --git a/examples/react/src/generic-tests/nodes/general.ts b/examples/react/src/generic-tests/nodes/general.ts new file mode 100644 index 00000000..0fcb975c --- /dev/null +++ b/examples/react/src/generic-tests/nodes/general.ts @@ -0,0 +1,91 @@ +import DragHandleNode from './components/DragHandleNode'; + +export default { + flowProps: { + fitView: true, + nodeTypes: { + DragHandleNode, + }, + nodes: [ + { + id: 'Node-1', + data: { label: 'Node-1' }, + position: { x: 0, y: 0 }, + type: 'input', + className: 'playwright-test-class-123', + style: { backgroundColor: 'red' }, + }, + { + id: 'Node-2', + type: 'output', + data: { label: 'Node-2' }, + position: { x: -100, y: 100 }, + }, + { + id: 'Node-3', + data: { label: 'Node-3' }, + position: { x: 100, y: 100 }, + }, + { + id: 'Node-4', + data: { label: 'Node-4' }, + position: { x: 0, y: 200 }, + type: 'output', + }, + { + id: 'drag-handle', + data: { label: 'Drag Handle' }, + position: { x: 200, y: 0 }, + type: 'DragHandleNode', + dragHandle: '.custom-drag-handle', + }, + { + id: 'notConnectable', + type: 'output', + data: { label: 'notConnectable' }, + position: { x: 0, y: 300 }, + connectable: false, + }, + { + id: 'notDraggable', + data: { label: 'notDraggable' }, + position: { x: 0, y: 400 }, + draggable: false, + }, + { + id: 'notSelectable', + data: { label: 'notSelectable' }, + position: { x: 0, y: 500 }, + selectable: false, + }, + { + id: 'notDeletable', + data: { label: 'notDeletable' }, + position: { x: 0, y: 600 }, + deletable: false, + }, + { + id: 'hidden', + data: { label: 'hidden' }, + position: { x: 0, y: 700 }, + hidden: true, + }, + ], + edges: [ + { + id: '1-2', + type: 'default', + source: 'Node-1', + target: 'Node-2', + label: 'edge', + }, + { + id: '1-3', + type: 'default', + source: 'Node-1', + target: 'Node-3', + label: 'edge', + }, + ], + }, +} satisfies FlowConfig; diff --git a/examples/react/src/generic-tests/pane/general.ts b/examples/react/src/generic-tests/pane/general.ts new file mode 100644 index 00000000..54c1d193 --- /dev/null +++ b/examples/react/src/generic-tests/pane/general.ts @@ -0,0 +1,37 @@ +export default { + flowProps: { + minZoom: 0.25, + maxZoom: 4, + fitView: true, + nodes: [ + { + id: '1', + data: { label: '1' }, + position: { x: 0, y: 0 }, + type: 'input', + }, + { + id: '2', + data: { label: '2' }, + position: { x: -100, y: 100 }, + }, + { + id: '3', + data: { label: '3' }, + position: { x: 100, y: 100 }, + }, + ], + edges: [ + { + id: 'first-edge', + source: '1', + target: '2', + }, + { + id: 'second-edge', + source: '1', + target: '3', + }, + ], + }, +} satisfies FlowConfig; diff --git a/examples/react/src/generic-tests/pane/non-defaults.ts b/examples/react/src/generic-tests/pane/non-defaults.ts new file mode 100644 index 00000000..1da85cdd --- /dev/null +++ b/examples/react/src/generic-tests/pane/non-defaults.ts @@ -0,0 +1,38 @@ +export default { + flowProps: { + panOnScroll: true, + defaultViewport: { x: 1.23, y: 9.87, zoom: 1.234 }, + autoPanOnConnect: false, + autoPanOnNodeDrag: false, + nodes: [ + { + id: '1', + data: { label: '1' }, + position: { x: 0, y: 0 }, + type: 'input', + }, + { + id: '2', + data: { label: '2' }, + position: { x: -100, y: 100 }, + }, + { + id: '3', + data: { label: '3' }, + position: { x: 100, y: 100 }, + }, + ], + edges: [ + { + id: 'first-edge', + source: '1', + target: '2', + }, + { + id: 'second-edge', + source: '1', + target: '3', + }, + ], + }, +} satisfies FlowConfig; diff --git a/examples/react/src/main.tsx b/examples/react/src/main.tsx index 34599efc..663a29b5 100644 --- a/examples/react/src/main.tsx +++ b/examples/react/src/main.tsx @@ -1,9 +1,10 @@ import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; + import App from './App'; -import './index.css'; import '@xyflow/react/dist/style.css'; +import './index.css'; createRoot(document.getElementById('root') as HTMLElement).render( diff --git a/examples/svelte/package.json b/examples/svelte/package.json index 8cd6a14e..2679983a 100644 --- a/examples/svelte/package.json +++ b/examples/svelte/package.json @@ -1,5 +1,5 @@ { - "name": "svelte", + "name": "svelte-examples", "version": "0.0.1", "private": true, "scripts": { @@ -12,20 +12,20 @@ "format": "prettier --plugin-search-dir . --write ." }, "devDependencies": { - "@sveltejs/adapter-auto": "^2.0.0", - "@sveltejs/kit": "^1.20.4", - "@typescript-eslint/eslint-plugin": "^5.45.0", - "@typescript-eslint/parser": "^5.45.0", - "eslint": "^8.28.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-svelte": "^2.30.0", - "prettier": "^2.8.0", - "prettier-plugin-svelte": "^2.10.1", - "svelte": "^4.0.5", - "svelte-check": "^3.4.3", - "tslib": "^2.4.1", - "typescript": "^5.0.0", - "vite": "^4.4.2" + "@sveltejs/adapter-auto": "^2.1.1", + "@sveltejs/kit": "^1.27.3", + "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/parser": "^6.10.0", + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-svelte": "^2.35.0", + "prettier": "^3.0.3", + "prettier-plugin-svelte": "^3.0.3", + "svelte": "^4.2.2", + "svelte-check": "^3.5.2", + "tslib": "^2.6.2", + "typescript": "^5.2.2", + "vite": "^4.5.0" }, "type": "module", "dependencies": { diff --git a/examples/svelte/src/app.d.ts b/examples/svelte/src/app.d.ts index f59b884c..f1252a6d 100644 --- a/examples/svelte/src/app.d.ts +++ b/examples/svelte/src/app.d.ts @@ -1,4 +1,7 @@ // See https://kit.svelte.dev/docs/types#app + +import type { Edge, Node, SvelteFlowProps } from '@xyflow/svelte'; + // for information about these interfaces declare global { namespace App { @@ -7,6 +10,10 @@ declare global { // interface PageData {} // interface Platform {} } + + interface FlowConfig { + flowProps: Omit & { nodes: Node[]; edges: Edge[] }; + } } export {}; diff --git a/examples/svelte/src/app.html b/examples/svelte/src/app.html index 68f1308a..a9d5b2f0 100644 --- a/examples/svelte/src/app.html +++ b/examples/svelte/src/app.html @@ -1,8 +1,9 @@ - + + diff --git a/examples/svelte/src/generic-tests/nodes/general.ts b/examples/svelte/src/generic-tests/nodes/general.ts new file mode 100644 index 00000000..4e5abc91 --- /dev/null +++ b/examples/svelte/src/generic-tests/nodes/general.ts @@ -0,0 +1,91 @@ +import DragHandleNode from './components/DragHandleNode.svelte'; + +export default { + flowProps: { + fitView: true, + nodeTypes: { + DragHandleNode + }, + nodes: [ + { + id: 'Node-1', + data: { label: 'Node-1' }, + position: { x: 0, y: 0 }, + type: 'input', + class: 'playwright-test-class-123', + style: 'background-color: red;' + }, + { + id: 'Node-2', + type: 'output', + data: { label: 'Node-2' }, + position: { x: -100, y: 100 } + }, + { + id: 'Node-3', + data: { label: 'Node-3' }, + position: { x: 100, y: 100 } + }, + { + id: 'Node-4', + data: { label: 'Node-4' }, + position: { x: 0, y: 200 }, + type: 'output' + }, + { + id: 'drag-handle', + data: { label: 'Drag Handle' }, + position: { x: 200, y: 0 }, + type: 'DragHandleNode', + dragHandle: '.custom-drag-handle' + }, + { + id: 'notConnectable', + type: 'output', + data: { label: 'notConnectable' }, + position: { x: 0, y: 300 }, + connectable: false + }, + { + id: 'notDraggable', + data: { label: 'notDraggable' }, + position: { x: 0, y: 400 }, + draggable: false + }, + { + id: 'notSelectable', + data: { label: 'notSelectable' }, + position: { x: 0, y: 500 }, + selectable: false + }, + { + id: 'notDeletable', + data: { label: 'notDeletable' }, + position: { x: 0, y: 600 }, + deletable: false + }, + { + id: 'hidden', + data: { label: 'hidden' }, + position: { x: 0, y: 700 }, + hidden: true + } + ], + edges: [ + { + id: '1-2', + type: 'default', + source: 'Node-1', + target: 'Node-2', + label: 'edge' + }, + { + id: '1-3', + type: 'default', + source: 'Node-1', + target: 'Node-3', + label: 'edge' + } + ] + } +} satisfies FlowConfig; diff --git a/examples/svelte/src/generic-tests/pane/activation-keys.ts b/examples/svelte/src/generic-tests/pane/activation-keys.ts new file mode 100644 index 00000000..ca16c47b --- /dev/null +++ b/examples/svelte/src/generic-tests/pane/activation-keys.ts @@ -0,0 +1,40 @@ +export default { + flowProps: { + zoomOnScroll: false, + // zoomActivationKey: 'Space', + // panOnDrag: false, + // panOnScroll: false, + panActivationKey: 'Space', + fitView: true, + nodes: [ + { + id: '1', + data: { label: '1' }, + position: { x: 0, y: 0 }, + type: 'input' + }, + { + id: '2', + data: { label: '2' }, + position: { x: -100, y: 100 } + }, + { + id: '3', + data: { label: '3' }, + position: { x: 100, y: 100 } + } + ], + edges: [ + { + id: 'first-edge', + source: '1', + target: '2' + }, + { + id: 'second-edge', + source: '1', + target: '3' + } + ] + } +} satisfies FlowConfig; diff --git a/examples/svelte/src/generic-tests/pane/general.ts b/examples/svelte/src/generic-tests/pane/general.ts new file mode 100644 index 00000000..9b9c9a5c --- /dev/null +++ b/examples/svelte/src/generic-tests/pane/general.ts @@ -0,0 +1,37 @@ +export default { + flowProps: { + minZoom: 0.25, + maxZoom: 4, + fitView: true, + nodes: [ + { + id: '1', + data: { label: '1' }, + position: { x: 0, y: 0 }, + type: 'input' + }, + { + id: '2', + data: { label: '2' }, + position: { x: -100, y: 100 } + }, + { + id: '3', + data: { label: '3' }, + position: { x: 100, y: 100 } + } + ], + edges: [ + { + id: 'first-edge', + source: '1', + target: '2' + }, + { + id: 'second-edge', + source: '1', + target: '3' + } + ] + } +} satisfies FlowConfig; diff --git a/examples/svelte/src/generic-tests/pane/non-defaults.ts b/examples/svelte/src/generic-tests/pane/non-defaults.ts new file mode 100644 index 00000000..d3aa8e27 --- /dev/null +++ b/examples/svelte/src/generic-tests/pane/non-defaults.ts @@ -0,0 +1,38 @@ +export default { + flowProps: { + panOnScroll: true, + initialViewport: { x: 1.23, y: 9.87, zoom: 1.234 }, + autoPanOnConnect: false, + autoPanOnNodeDrag: false, + nodes: [ + { + id: '1', + data: { label: '1' }, + position: { x: 0, y: 0 }, + type: 'input' + }, + { + id: '2', + data: { label: '2' }, + position: { x: -100, y: 100 } + }, + { + id: '3', + data: { label: '3' }, + position: { x: 100, y: 100 } + } + ], + edges: [ + { + id: 'first-edge', + source: '1', + target: '2' + }, + { + id: 'second-edge', + source: '1', + target: '3' + } + ] + } +} satisfies FlowConfig; diff --git a/examples/svelte/src/routes/+layout.server.ts b/examples/svelte/src/routes/+layout.server.ts index b64f1170..c968a610 100644 --- a/examples/svelte/src/routes/+layout.server.ts +++ b/examples/svelte/src/routes/+layout.server.ts @@ -2,7 +2,7 @@ import { redirect } from '@sveltejs/kit'; /** @type {import('./$types').LayoutServerLoad} */ export function load({ route }) { - if (route.id === '/') { - throw redirect(307, '/overview'); - } + if (route.id === '/') { + throw redirect(307, '/examples/overview'); + } } diff --git a/examples/svelte/src/routes/+layout.svelte b/examples/svelte/src/routes/examples/+layout.svelte similarity index 81% rename from examples/svelte/src/routes/+layout.svelte rename to examples/svelte/src/routes/examples/+layout.svelte index 84598fec..cf9f655f 100644 --- a/examples/svelte/src/routes/+layout.svelte +++ b/examples/svelte/src/routes/examples/+layout.svelte @@ -1,5 +1,5 @@
diff --git a/examples/svelte/src/routes/examples/+page.svelte b/examples/svelte/src/routes/examples/+page.svelte new file mode 100644 index 00000000..45db2228 --- /dev/null +++ b/examples/svelte/src/routes/examples/+page.svelte @@ -0,0 +1 @@ +
this redirects to /overview
diff --git a/examples/svelte/src/routes/add-node-on-drop/+page.svelte b/examples/svelte/src/routes/examples/add-node-on-drop/+page.svelte similarity index 100% rename from examples/svelte/src/routes/add-node-on-drop/+page.svelte rename to examples/svelte/src/routes/examples/add-node-on-drop/+page.svelte diff --git a/examples/svelte/src/routes/add-node-on-drop/Flow.svelte b/examples/svelte/src/routes/examples/add-node-on-drop/Flow.svelte similarity index 100% rename from examples/svelte/src/routes/add-node-on-drop/Flow.svelte rename to examples/svelte/src/routes/examples/add-node-on-drop/Flow.svelte diff --git a/examples/svelte/src/routes/custom-connection-line/+page.svelte b/examples/svelte/src/routes/examples/custom-connection-line/+page.svelte similarity index 100% rename from examples/svelte/src/routes/custom-connection-line/+page.svelte rename to examples/svelte/src/routes/examples/custom-connection-line/+page.svelte diff --git a/examples/svelte/src/routes/custom-connection-line/ConnectionLine.svelte b/examples/svelte/src/routes/examples/custom-connection-line/ConnectionLine.svelte similarity index 100% rename from examples/svelte/src/routes/custom-connection-line/ConnectionLine.svelte rename to examples/svelte/src/routes/examples/custom-connection-line/ConnectionLine.svelte diff --git a/examples/svelte/src/routes/custom-connection-line/CustomNode.svelte b/examples/svelte/src/routes/examples/custom-connection-line/CustomNode.svelte similarity index 100% rename from examples/svelte/src/routes/custom-connection-line/CustomNode.svelte rename to examples/svelte/src/routes/examples/custom-connection-line/CustomNode.svelte diff --git a/examples/svelte/src/routes/customnode/+page.svelte b/examples/svelte/src/routes/examples/customnode/+page.svelte similarity index 100% rename from examples/svelte/src/routes/customnode/+page.svelte rename to examples/svelte/src/routes/examples/customnode/+page.svelte diff --git a/examples/svelte/src/routes/customnode/CustomNode.svelte b/examples/svelte/src/routes/examples/customnode/CustomNode.svelte similarity index 100% rename from examples/svelte/src/routes/customnode/CustomNode.svelte rename to examples/svelte/src/routes/examples/customnode/CustomNode.svelte diff --git a/examples/svelte/src/routes/dagre/+page.svelte b/examples/svelte/src/routes/examples/dagre/+page.svelte similarity index 100% rename from examples/svelte/src/routes/dagre/+page.svelte rename to examples/svelte/src/routes/examples/dagre/+page.svelte diff --git a/examples/svelte/src/routes/dagre/nodes-and-edges.ts b/examples/svelte/src/routes/examples/dagre/nodes-and-edges.ts similarity index 100% rename from examples/svelte/src/routes/dagre/nodes-and-edges.ts rename to examples/svelte/src/routes/examples/dagre/nodes-and-edges.ts diff --git a/examples/svelte/src/routes/drag-n-drop/+page.svelte b/examples/svelte/src/routes/examples/drag-n-drop/+page.svelte similarity index 100% rename from examples/svelte/src/routes/drag-n-drop/+page.svelte rename to examples/svelte/src/routes/examples/drag-n-drop/+page.svelte diff --git a/examples/svelte/src/routes/drag-n-drop/Flow.svelte b/examples/svelte/src/routes/examples/drag-n-drop/Flow.svelte similarity index 100% rename from examples/svelte/src/routes/drag-n-drop/Flow.svelte rename to examples/svelte/src/routes/examples/drag-n-drop/Flow.svelte diff --git a/examples/svelte/src/routes/drag-n-drop/Sidebar.svelte b/examples/svelte/src/routes/examples/drag-n-drop/Sidebar.svelte similarity index 100% rename from examples/svelte/src/routes/drag-n-drop/Sidebar.svelte rename to examples/svelte/src/routes/examples/drag-n-drop/Sidebar.svelte diff --git a/examples/svelte/src/routes/edges/+page.svelte b/examples/svelte/src/routes/examples/edges/+page.svelte similarity index 100% rename from examples/svelte/src/routes/edges/+page.svelte rename to examples/svelte/src/routes/examples/edges/+page.svelte diff --git a/examples/svelte/src/routes/figma/+page.svelte b/examples/svelte/src/routes/examples/figma/+page.svelte similarity index 100% rename from examples/svelte/src/routes/figma/+page.svelte rename to examples/svelte/src/routes/examples/figma/+page.svelte diff --git a/examples/svelte/src/routes/interaction/+page.svelte b/examples/svelte/src/routes/examples/interaction/+page.svelte similarity index 100% rename from examples/svelte/src/routes/interaction/+page.svelte rename to examples/svelte/src/routes/examples/interaction/+page.svelte diff --git a/examples/svelte/src/routes/intersections/+page.svelte b/examples/svelte/src/routes/examples/intersections/+page.svelte similarity index 100% rename from examples/svelte/src/routes/intersections/+page.svelte rename to examples/svelte/src/routes/examples/intersections/+page.svelte diff --git a/examples/svelte/src/routes/intersections/+server.ts b/examples/svelte/src/routes/examples/intersections/+server.ts similarity index 100% rename from examples/svelte/src/routes/intersections/+server.ts rename to examples/svelte/src/routes/examples/intersections/+server.ts diff --git a/examples/svelte/src/routes/intersections/Flow.svelte b/examples/svelte/src/routes/examples/intersections/Flow.svelte similarity index 100% rename from examples/svelte/src/routes/intersections/Flow.svelte rename to examples/svelte/src/routes/examples/intersections/Flow.svelte diff --git a/examples/svelte/src/routes/intersections/nodes-and-edges.ts b/examples/svelte/src/routes/examples/intersections/nodes-and-edges.ts similarity index 100% rename from examples/svelte/src/routes/intersections/nodes-and-edges.ts rename to examples/svelte/src/routes/examples/intersections/nodes-and-edges.ts diff --git a/examples/svelte/src/routes/overview/+page.svelte b/examples/svelte/src/routes/examples/overview/+page.svelte similarity index 100% rename from examples/svelte/src/routes/overview/+page.svelte rename to examples/svelte/src/routes/examples/overview/+page.svelte diff --git a/examples/svelte/src/routes/overview/CustomEdge.svelte b/examples/svelte/src/routes/examples/overview/CustomEdge.svelte similarity index 100% rename from examples/svelte/src/routes/overview/CustomEdge.svelte rename to examples/svelte/src/routes/examples/overview/CustomEdge.svelte diff --git a/examples/svelte/src/routes/overview/CustomNode.svelte b/examples/svelte/src/routes/examples/overview/CustomNode.svelte similarity index 100% rename from examples/svelte/src/routes/overview/CustomNode.svelte rename to examples/svelte/src/routes/examples/overview/CustomNode.svelte diff --git a/examples/svelte/src/routes/overview/CustomNodeDragHandle.svelte b/examples/svelte/src/routes/examples/overview/CustomNodeDragHandle.svelte similarity index 100% rename from examples/svelte/src/routes/overview/CustomNodeDragHandle.svelte rename to examples/svelte/src/routes/examples/overview/CustomNodeDragHandle.svelte diff --git a/examples/svelte/src/routes/stress/+page.svelte b/examples/svelte/src/routes/examples/stress/+page.svelte similarity index 100% rename from examples/svelte/src/routes/stress/+page.svelte rename to examples/svelte/src/routes/examples/stress/+page.svelte diff --git a/examples/svelte/src/routes/subflows/+page.svelte b/examples/svelte/src/routes/examples/subflows/+page.svelte similarity index 100% rename from examples/svelte/src/routes/subflows/+page.svelte rename to examples/svelte/src/routes/examples/subflows/+page.svelte diff --git a/examples/svelte/src/routes/subflows/DebugNode.svelte b/examples/svelte/src/routes/examples/subflows/DebugNode.svelte similarity index 100% rename from examples/svelte/src/routes/subflows/DebugNode.svelte rename to examples/svelte/src/routes/examples/subflows/DebugNode.svelte diff --git a/examples/svelte/src/routes/two-way-viewport/+page.svelte b/examples/svelte/src/routes/examples/two-way-viewport/+page.svelte similarity index 100% rename from examples/svelte/src/routes/two-way-viewport/+page.svelte rename to examples/svelte/src/routes/examples/two-way-viewport/+page.svelte diff --git a/examples/svelte/src/routes/two-way-viewport/Flow.svelte b/examples/svelte/src/routes/examples/two-way-viewport/Flow.svelte similarity index 100% rename from examples/svelte/src/routes/two-way-viewport/Flow.svelte rename to examples/svelte/src/routes/examples/two-way-viewport/Flow.svelte diff --git a/examples/svelte/src/routes/usesvelteflow/+page.svelte b/examples/svelte/src/routes/examples/usesvelteflow/+page.svelte similarity index 100% rename from examples/svelte/src/routes/usesvelteflow/+page.svelte rename to examples/svelte/src/routes/examples/usesvelteflow/+page.svelte diff --git a/examples/svelte/src/routes/usesvelteflow/Flow.svelte b/examples/svelte/src/routes/examples/usesvelteflow/Flow.svelte similarity index 100% rename from examples/svelte/src/routes/usesvelteflow/Flow.svelte rename to examples/svelte/src/routes/examples/usesvelteflow/Flow.svelte diff --git a/examples/svelte/src/routes/usesvelteflow/Sidebar.svelte b/examples/svelte/src/routes/examples/usesvelteflow/Sidebar.svelte similarity index 100% rename from examples/svelte/src/routes/usesvelteflow/Sidebar.svelte rename to examples/svelte/src/routes/examples/usesvelteflow/Sidebar.svelte diff --git a/examples/svelte/src/routes/useupdatenodeinternals/+page.svelte b/examples/svelte/src/routes/examples/useupdatenodeinternals/+page.svelte similarity index 100% rename from examples/svelte/src/routes/useupdatenodeinternals/+page.svelte rename to examples/svelte/src/routes/examples/useupdatenodeinternals/+page.svelte diff --git a/examples/svelte/src/routes/useupdatenodeinternals/CustomNode.svelte b/examples/svelte/src/routes/examples/useupdatenodeinternals/CustomNode.svelte similarity index 100% rename from examples/svelte/src/routes/useupdatenodeinternals/CustomNode.svelte rename to examples/svelte/src/routes/examples/useupdatenodeinternals/CustomNode.svelte diff --git a/examples/svelte/src/routes/useupdatenodeinternals/Flow.svelte b/examples/svelte/src/routes/examples/useupdatenodeinternals/Flow.svelte similarity index 100% rename from examples/svelte/src/routes/useupdatenodeinternals/Flow.svelte rename to examples/svelte/src/routes/examples/useupdatenodeinternals/Flow.svelte diff --git a/examples/svelte/src/routes/validation/+page.svelte b/examples/svelte/src/routes/examples/validation/+page.svelte similarity index 100% rename from examples/svelte/src/routes/validation/+page.svelte rename to examples/svelte/src/routes/examples/validation/+page.svelte diff --git a/examples/svelte/src/routes/validation/style.css b/examples/svelte/src/routes/examples/validation/style.css similarity index 100% rename from examples/svelte/src/routes/validation/style.css rename to examples/svelte/src/routes/examples/validation/style.css diff --git a/examples/svelte/src/routes/tests/generic/[topic]/[example]/+page.svelte b/examples/svelte/src/routes/tests/generic/[topic]/[example]/+page.svelte new file mode 100644 index 00000000..8d75afb8 --- /dev/null +++ b/examples/svelte/src/routes/tests/generic/[topic]/[example]/+page.svelte @@ -0,0 +1,11 @@ + + + + + diff --git a/examples/svelte/src/routes/tests/generic/[topic]/[example]/+page.ts b/examples/svelte/src/routes/tests/generic/[topic]/[example]/+page.ts new file mode 100644 index 00000000..193516c1 --- /dev/null +++ b/examples/svelte/src/routes/tests/generic/[topic]/[example]/+page.ts @@ -0,0 +1,19 @@ +import { error } from '@sveltejs/kit'; + +const flowConfigs = import.meta.glob('/src/generic-tests/**/*.ts', { + eager: true, + import: 'default' +}); + +/** @type {import('./$types').PageLoad} */ +export function load({ params }) { + const flowConfig = flowConfigs[`/src/generic-tests/${params.topic}/${params.example}.ts`]; + + if (!flowConfig) { + throw error(404, 'Not found'); + } + + return { + flowConfig + }; +} diff --git a/examples/svelte/src/routes/tests/generic/[topic]/[example]/Flow.svelte b/examples/svelte/src/routes/tests/generic/[topic]/[example]/Flow.svelte new file mode 100644 index 00000000..44965e2e --- /dev/null +++ b/examples/svelte/src/routes/tests/generic/[topic]/[example]/Flow.svelte @@ -0,0 +1,16 @@ + + + diff --git a/examples/svelte/static/favicon.ico b/examples/svelte/static/favicon.ico new file mode 100644 index 00000000..9ef0fbfd Binary files /dev/null and b/examples/svelte/static/favicon.ico differ diff --git a/examples/svelte/static/favicon.png b/examples/svelte/static/favicon.png deleted file mode 100644 index 825b9e65..00000000 Binary files a/examples/svelte/static/favicon.png and /dev/null differ diff --git a/examples/svelte/svelte.config.js b/examples/svelte/svelte.config.js index 1cf26a00..80719d79 100644 --- a/examples/svelte/svelte.config.js +++ b/examples/svelte/svelte.config.js @@ -11,7 +11,10 @@ const config = { // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. // If your environment is not supported or you settled on a specific environment, switch out the adapter. // See https://kit.svelte.dev/docs/adapters for more information about adapters. - adapter: adapter() + adapter: adapter(), + alias: { + $components: './src/components' + } } }; diff --git a/package.json b/package.json index f0e22afe..4411e137 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,10 @@ "dev": "turbo run dev --parallel --concurrency 12", "dev:svelte": "turbo run dev --filter=svelte --filter=system", "dev:react": "turbo run dev --filter=react", + "test:svelte": "pnpm --filter=playwright run test:svelte", + "test:svelte:ui": "pnpm --filter=playwright run test:svelte:ui", + "test:react": "pnpm --filter=playwright run test:react", + "test:react:ui": "pnpm --filter=playwright run test:react:ui", "build": "turbo run build", "test": "turbo run test", "lint": "turbo run lint", diff --git a/packages/react/src/components/Edges/wrapEdge.tsx b/packages/react/src/components/Edges/wrapEdge.tsx index ad1d8f2a..750254ff 100644 --- a/packages/react/src/components/Edges/wrapEdge.tsx +++ b/packages/react/src/components/Edges/wrapEdge.tsx @@ -213,6 +213,7 @@ export default (EdgeComponent: ComponentType) => { onKeyDown={isFocusable ? onKeyDown : undefined} tabIndex={isFocusable ? 0 : undefined} role={isFocusable ? 'button' : 'img'} + data-id={id} data-testid={`rf__edge-${id}`} aria-label={ariaLabel === null ? undefined : ariaLabel ? ariaLabel : `Edge from ${source} to ${target}`} aria-describedby={isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : undefined} diff --git a/packages/svelte/src/lib/components/BaseEdge/BaseEdge.svelte b/packages/svelte/src/lib/components/BaseEdge/BaseEdge.svelte index e53bd7c1..4e5b39d1 100644 --- a/packages/svelte/src/lib/components/BaseEdge/BaseEdge.svelte +++ b/packages/svelte/src/lib/components/BaseEdge/BaseEdge.svelte @@ -24,7 +24,6 @@ =6.9.0'} dependencies: regenerator-runtime: registry.npmjs.org/regenerator-runtime@0.14.0 + dev: true registry.npmjs.org/@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz} @@ -1705,6 +1700,26 @@ packages: eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys@3.4.3 dev: true + registry.npmjs.org/@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz} + id: registry.npmjs.org/@eslint-community/eslint-utils/4.4.0 + name: '@eslint-community/eslint-utils' + version: 4.4.0 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: registry.npmjs.org/eslint@8.53.0 + eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys@3.4.3 + dev: true + + registry.npmjs.org/@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz} + name: '@eslint-community/regexpp' + version: 4.10.0 + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + registry.npmjs.org/@eslint-community/regexpp@4.9.1: resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz} name: '@eslint-community/regexpp' @@ -1731,6 +1746,25 @@ packages: - supports-color dev: true + registry.npmjs.org/@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz} + name: '@eslint/eslintrc' + version: 2.1.3 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: registry.npmjs.org/ajv@6.12.6 + debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) + espree: registry.npmjs.org/espree@9.6.1 + globals: registry.npmjs.org/globals@13.23.0 + ignore: registry.npmjs.org/ignore@5.2.4 + import-fresh: registry.npmjs.org/import-fresh@3.3.0 + js-yaml: registry.npmjs.org/js-yaml@4.1.0 + minimatch: registry.npmjs.org/minimatch@3.1.2 + strip-json-comments: registry.npmjs.org/strip-json-comments@3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + registry.npmjs.org/@eslint/js@8.43.0: resolution: {integrity: sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz} name: '@eslint/js' @@ -1738,12 +1772,18 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + registry.npmjs.org/@eslint/js@8.53.0: + resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz} + name: '@eslint/js' + version: 8.53.0 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + registry.npmjs.org/@fastify/busboy@2.0.0: resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz} name: '@fastify/busboy' version: 2.0.0 engines: {node: '>=14'} - dev: false registry.npmjs.org/@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz} @@ -1853,119 +1893,6 @@ packages: read-yaml-file: registry.npmjs.org/read-yaml-file@1.1.0 dev: true - registry.npmjs.org/@next/env@13.5.4: - resolution: {integrity: sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/env/-/env-13.5.4.tgz} - name: '@next/env' - version: 13.5.4 - dev: false - - registry.npmjs.org/@next/eslint-plugin-next@13.5.4: - resolution: {integrity: sha512-vI94U+D7RNgX6XypSyjeFrOzxGlZyxOplU0dVE5norIfZGn/LDjJYPHdvdsR5vN1eRtl6PDAsOHmycFEOljK5A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.4.tgz} - name: '@next/eslint-plugin-next' - version: 13.5.4 - dependencies: - glob: registry.npmjs.org/glob@7.1.7 - dev: true - - registry.npmjs.org/@next/swc-darwin-arm64@13.5.4: - resolution: {integrity: sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.4.tgz} - name: '@next/swc-darwin-arm64' - version: 13.5.4 - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - registry.npmjs.org/@next/swc-darwin-x64@13.5.4: - resolution: {integrity: sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.4.tgz} - name: '@next/swc-darwin-x64' - version: 13.5.4 - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - registry.npmjs.org/@next/swc-linux-arm64-gnu@13.5.4: - resolution: {integrity: sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.4.tgz} - name: '@next/swc-linux-arm64-gnu' - version: 13.5.4 - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - registry.npmjs.org/@next/swc-linux-arm64-musl@13.5.4: - resolution: {integrity: sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.4.tgz} - name: '@next/swc-linux-arm64-musl' - version: 13.5.4 - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - registry.npmjs.org/@next/swc-linux-x64-gnu@13.5.4: - resolution: {integrity: sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.4.tgz} - name: '@next/swc-linux-x64-gnu' - version: 13.5.4 - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - registry.npmjs.org/@next/swc-linux-x64-musl@13.5.4: - resolution: {integrity: sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.4.tgz} - name: '@next/swc-linux-x64-musl' - version: 13.5.4 - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - registry.npmjs.org/@next/swc-win32-arm64-msvc@13.5.4: - resolution: {integrity: sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.4.tgz} - name: '@next/swc-win32-arm64-msvc' - version: 13.5.4 - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - registry.npmjs.org/@next/swc-win32-ia32-msvc@13.5.4: - resolution: {integrity: sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.4.tgz} - name: '@next/swc-win32-ia32-msvc' - version: 13.5.4 - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - registry.npmjs.org/@next/swc-win32-x64-msvc@13.5.4: - resolution: {integrity: sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.4.tgz} - name: '@next/swc-win32-x64-msvc' - version: 13.5.4 - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - registry.npmjs.org/@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz} name: '@nodelib/fs.scandir' @@ -1990,12 +1917,72 @@ packages: '@nodelib/fs.scandir': registry.npmjs.org/@nodelib/fs.scandir@2.1.5 fastq: registry.npmjs.org/fastq@1.15.0 + registry.npmjs.org/@playwright/experimental-ct-core@1.39.0(@types/node@18.7.16): + resolution: {integrity: sha512-1b/qrlB5A/CdEZns8f2RDkWFmSnGkNyec8n72iinmw07+GHsdMP8fIpazeFB0umxWfo+gPLhkjhTGdB3WXJTBw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@playwright/experimental-ct-core/-/experimental-ct-core-1.39.0.tgz} + id: registry.npmjs.org/@playwright/experimental-ct-core/1.39.0 + name: '@playwright/experimental-ct-core' + version: 1.39.0 + engines: {node: '>=16'} + hasBin: true + dependencies: + playwright: registry.npmjs.org/playwright@1.39.0 + playwright-core: registry.npmjs.org/playwright-core@1.39.0 + vite: registry.npmjs.org/vite@4.5.0(@types/node@18.7.16) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - terser + dev: false + + registry.npmjs.org/@playwright/experimental-ct-react@1.39.0(@types/node@18.7.16)(vite@4.5.0): + resolution: {integrity: sha512-6GaDVVo6x8P9Jdw3yPbVaEP59nesRsETn3kznHAy+2493VsP3IaVATat2G28z0Sivf/K9Tkh5xRYjiawN0ebgw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@playwright/experimental-ct-react/-/experimental-ct-react-1.39.0.tgz} + id: registry.npmjs.org/@playwright/experimental-ct-react/1.39.0 + name: '@playwright/experimental-ct-react' + version: 1.39.0 + engines: {node: '>=16'} + hasBin: true + dependencies: + '@playwright/experimental-ct-core': registry.npmjs.org/@playwright/experimental-ct-core@1.39.0(@types/node@18.7.16) + '@vitejs/plugin-react': registry.npmjs.org/@vitejs/plugin-react@4.1.1(vite@4.5.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - vite + dev: false + + registry.npmjs.org/@playwright/test@1.39.0: + resolution: {integrity: sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz} + name: '@playwright/test' + version: 1.39.0 + engines: {node: '>=16'} + hasBin: true + dependencies: + playwright: registry.npmjs.org/playwright@1.39.0 + dev: true + registry.npmjs.org/@polka/url@1.0.0-next.23: resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz} name: '@polka/url' version: 1.0.0-next.23 dev: true + registry.npmjs.org/@remix-run/router@1.11.0: + resolution: {integrity: sha512-BHdhcWgeiudl91HvVa2wxqZjSHbheSgIiDvxrF1VjFzBzpTtuDPkOdOi3Iqvc08kXtFkLjhbS+ML9aM8mJS+wQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@remix-run/router/-/router-1.11.0.tgz} + name: '@remix-run/router' + version: 1.11.0 + engines: {node: '>=14.0.0'} + dev: false + registry.npmjs.org/@rollup/plugin-commonjs@25.0.0(rollup@3.23.0): resolution: {integrity: sha512-hoho2Kay9TZrLu0bnDsTTCaj4Npa+THk9snajP/XDNb9a9mmjTjh52EQM9sKl3HD1LsnihX7js+eA2sd2uKAhw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.0.tgz} id: registry.npmjs.org/@rollup/plugin-commonjs/25.0.0 @@ -2113,12 +2100,6 @@ packages: rollup: registry.npmjs.org/rollup@3.23.0 dev: true - registry.npmjs.org/@rushstack/eslint-patch@1.5.1: - resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz} - name: '@rushstack/eslint-patch' - version: 1.5.1 - dev: true - registry.npmjs.org/@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz} name: '@sideway/address' @@ -2153,11 +2134,23 @@ packages: peerDependencies: '@sveltejs/kit': ^1.0.0 dependencies: - '@sveltejs/kit': registry.npmjs.org/@sveltejs/kit@1.22.6(svelte@4.2.1)(vite@4.4.9) + '@sveltejs/kit': registry.npmjs.org/@sveltejs/kit@1.22.6(svelte@4.2.1)(vite@4.5.0) import-meta-resolve: registry.npmjs.org/import-meta-resolve@3.0.0 dev: true - registry.npmjs.org/@sveltejs/kit@1.22.6(svelte@4.2.1)(vite@4.4.9): + registry.npmjs.org/@sveltejs/adapter-auto@2.1.1(@sveltejs/kit@1.27.3): + resolution: {integrity: sha512-nzi6x/7/3Axh5VKQ8Eed3pYxastxoa06Y/bFhWb7h3Nu+nGRVxKAy3+hBJgmPCwWScy8n0TsstZjSVKfyrIHkg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.1.tgz} + id: registry.npmjs.org/@sveltejs/adapter-auto/2.1.1 + name: '@sveltejs/adapter-auto' + version: 2.1.1 + peerDependencies: + '@sveltejs/kit': ^1.0.0 + dependencies: + '@sveltejs/kit': registry.npmjs.org/@sveltejs/kit@1.27.3(svelte@4.2.2)(vite@4.5.0) + import-meta-resolve: registry.npmjs.org/import-meta-resolve@4.0.0 + dev: true + + registry.npmjs.org/@sveltejs/kit@1.22.6(svelte@4.2.1)(vite@4.5.0): resolution: {integrity: sha512-SDKxI/QpsReCwIn5czjT53fKlPBybbmMk67d317gUqfeORroBAFN1Z6s/x0E1JYi+04i7kKllS+Sz9wVfmUkAQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sveltejs/kit/-/kit-1.22.6.tgz} id: registry.npmjs.org/@sveltejs/kit/1.22.6 name: '@sveltejs/kit' @@ -2169,7 +2162,7 @@ packages: svelte: ^3.54.0 || ^4.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': registry.npmjs.org/@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.1)(vite@4.4.9) + '@sveltejs/vite-plugin-svelte': registry.npmjs.org/@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.1)(vite@4.5.0) '@types/cookie': registry.npmjs.org/@types/cookie@0.5.3 cookie: registry.npmjs.org/cookie@0.5.0 devalue: registry.npmjs.org/devalue@4.3.2 @@ -2182,7 +2175,38 @@ packages: sirv: registry.npmjs.org/sirv@2.0.3 svelte: registry.npmjs.org/svelte@4.2.1 undici: registry.npmjs.org/undici@5.23.0 - vite: registry.npmjs.org/vite@4.4.9 + vite: registry.npmjs.org/vite@4.5.0(@types/node@18.7.16) + transitivePeerDependencies: + - supports-color + dev: true + + registry.npmjs.org/@sveltejs/kit@1.27.3(svelte@4.2.2)(vite@4.5.0): + resolution: {integrity: sha512-pd7qwX6ww5noA0/FLk45B0aKUeOXWR+pfZsGTrv3dRmj3lTmnki9UTmTdWzHJGrje+BBkGUZHfgGrsSOQQBQpQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sveltejs/kit/-/kit-1.27.3.tgz} + id: registry.npmjs.org/@sveltejs/kit/1.27.3 + name: '@sveltejs/kit' + version: 1.27.3 + engines: {node: ^16.14 || >=18} + hasBin: true + requiresBuild: true + peerDependencies: + svelte: ^3.54.0 || ^4.0.0-next.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': registry.npmjs.org/@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.2)(vite@4.5.0) + '@types/cookie': registry.npmjs.org/@types/cookie@0.5.4 + cookie: registry.npmjs.org/cookie@0.5.0 + devalue: registry.npmjs.org/devalue@4.3.2 + esm-env: registry.npmjs.org/esm-env@1.0.0 + kleur: registry.npmjs.org/kleur@4.1.5 + magic-string: registry.npmjs.org/magic-string@0.30.5 + mrmime: registry.npmjs.org/mrmime@1.0.1 + sade: registry.npmjs.org/sade@1.8.1 + set-cookie-parser: registry.npmjs.org/set-cookie-parser@2.6.0 + sirv: registry.npmjs.org/sirv@2.0.3 + svelte: registry.npmjs.org/svelte@4.2.2 + tiny-glob: registry.npmjs.org/tiny-glob@0.2.9 + undici: registry.npmjs.org/undici@5.26.5 + vite: registry.npmjs.org/vite@4.5.0(@types/node@18.7.16) transitivePeerDependencies: - supports-color dev: true @@ -2207,7 +2231,7 @@ packages: - typescript dev: true - registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.1)(vite@4.4.9): + registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.1)(vite@4.5.0): resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.4.tgz} id: registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/1.0.4 name: '@sveltejs/vite-plugin-svelte-inspector' @@ -2218,14 +2242,33 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': registry.npmjs.org/@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.1)(vite@4.4.9) + '@sveltejs/vite-plugin-svelte': registry.npmjs.org/@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.1)(vite@4.5.0) debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) svelte: registry.npmjs.org/svelte@4.2.1 - vite: registry.npmjs.org/vite@4.4.9 + vite: registry.npmjs.org/vite@4.5.0(@types/node@18.7.16) transitivePeerDependencies: - supports-color - registry.npmjs.org/@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.1)(vite@4.4.9): + registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.2)(vite@4.5.0): + resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.4.tgz} + id: registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/1.0.4 + name: '@sveltejs/vite-plugin-svelte-inspector' + version: 1.0.4 + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^2.2.0 + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': registry.npmjs.org/@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.2)(vite@4.5.0) + debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) + svelte: registry.npmjs.org/svelte@4.2.2 + vite: registry.npmjs.org/vite@4.5.0(@types/node@18.7.16) + transitivePeerDependencies: + - supports-color + dev: true + + registry.npmjs.org/@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.1)(vite@4.5.0): resolution: {integrity: sha512-zO79p0+DZnXPnF0ltIigWDx/ux7Ni+HRaFOw720Qeivc1azFUrJxTl0OryXVibYNx1hCboGia1NRV3x8RNv4cA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.6.tgz} id: registry.npmjs.org/@sveltejs/vite-plugin-svelte/2.4.6 name: '@sveltejs/vite-plugin-svelte' @@ -2235,22 +2278,45 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.1)(vite@4.4.9) + '@sveltejs/vite-plugin-svelte-inspector': registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.1)(vite@4.5.0) debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) deepmerge: registry.npmjs.org/deepmerge@4.3.1 kleur: registry.npmjs.org/kleur@4.1.5 magic-string: registry.npmjs.org/magic-string@0.30.5 svelte: registry.npmjs.org/svelte@4.2.1 svelte-hmr: registry.npmjs.org/svelte-hmr@0.15.3(svelte@4.2.1) - vite: registry.npmjs.org/vite@4.4.9 - vitefu: registry.npmjs.org/vitefu@0.2.5(vite@4.4.9) + vite: registry.npmjs.org/vite@4.5.0(@types/node@18.7.16) + vitefu: registry.npmjs.org/vitefu@0.2.5(vite@4.5.0) transitivePeerDependencies: - supports-color - registry.npmjs.org/@swc/core-darwin-arm64@1.3.94: - resolution: {integrity: sha512-KNuE6opIy/wAXiGUWLhGWhCG3wA/AdjG6eYkv6dstrAURLaQMAoD8vDfVm8pxS8FA8Kx+0Z4QiDNPqk5aKIsqg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.94.tgz} + registry.npmjs.org/@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.2)(vite@4.5.0): + resolution: {integrity: sha512-zO79p0+DZnXPnF0ltIigWDx/ux7Ni+HRaFOw720Qeivc1azFUrJxTl0OryXVibYNx1hCboGia1NRV3x8RNv4cA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.6.tgz} + id: registry.npmjs.org/@sveltejs/vite-plugin-svelte/2.4.6 + name: '@sveltejs/vite-plugin-svelte' + version: 2.4.6 + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.2)(vite@4.5.0) + debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) + deepmerge: registry.npmjs.org/deepmerge@4.3.1 + kleur: registry.npmjs.org/kleur@4.1.5 + magic-string: registry.npmjs.org/magic-string@0.30.5 + svelte: registry.npmjs.org/svelte@4.2.2 + svelte-hmr: registry.npmjs.org/svelte-hmr@0.15.3(svelte@4.2.2) + vite: registry.npmjs.org/vite@4.5.0(@types/node@18.7.16) + vitefu: registry.npmjs.org/vitefu@0.2.5(vite@4.5.0) + transitivePeerDependencies: + - supports-color + dev: true + + registry.npmjs.org/@swc/core-darwin-arm64@1.3.96: + resolution: {integrity: sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.96.tgz} name: '@swc/core-darwin-arm64' - version: 1.3.94 + version: 1.3.96 engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -2258,10 +2324,10 @@ packages: dev: true optional: true - registry.npmjs.org/@swc/core-darwin-x64@1.3.94: - resolution: {integrity: sha512-HypemhyehQrLqXwfJv5ronD4BMAXdgMCP4Ei7rt3B6Ftmt9axwGvdwGiXxsYR9h1ncyxoVxN+coGxbNIhKhahw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.94.tgz} + registry.npmjs.org/@swc/core-darwin-x64@1.3.96: + resolution: {integrity: sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.96.tgz} name: '@swc/core-darwin-x64' - version: 1.3.94 + version: 1.3.96 engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -2269,10 +2335,10 @@ packages: dev: true optional: true - registry.npmjs.org/@swc/core-linux-arm-gnueabihf@1.3.94: - resolution: {integrity: sha512-KzKN54c7Y6X1db+bBVSXG4+bXmAPvXtDWk+TgwNJH4yYliOrnP/RKkHA5QZ9VFSnqJF06/sAO4kYBiL/aVQDBQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.94.tgz} + registry.npmjs.org/@swc/core-linux-arm-gnueabihf@1.3.96: + resolution: {integrity: sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.96.tgz} name: '@swc/core-linux-arm-gnueabihf' - version: 1.3.94 + version: 1.3.96 engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -2280,10 +2346,10 @@ packages: dev: true optional: true - registry.npmjs.org/@swc/core-linux-arm64-gnu@1.3.94: - resolution: {integrity: sha512-iAcR8Ho0Uck/SLSrgYfXkpcGOXuN5waMZO7GlL/52QODr7GJtOfZ0H1MCZLbIFkPJp/iXoJpYgym4d/qSd477Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.94.tgz} + registry.npmjs.org/@swc/core-linux-arm64-gnu@1.3.96: + resolution: {integrity: sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.96.tgz} name: '@swc/core-linux-arm64-gnu' - version: 1.3.94 + version: 1.3.96 engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -2291,10 +2357,10 @@ packages: dev: true optional: true - registry.npmjs.org/@swc/core-linux-arm64-musl@1.3.94: - resolution: {integrity: sha512-VCHL1Mb9ENHx+sAeubSSg481MUeP9/PYzPPy9tfswunj/w35M+vEWflwK2dzQL9kUTFD3zcFTpAgsKnj6aX24w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.94.tgz} + registry.npmjs.org/@swc/core-linux-arm64-musl@1.3.96: + resolution: {integrity: sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.96.tgz} name: '@swc/core-linux-arm64-musl' - version: 1.3.94 + version: 1.3.96 engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -2302,10 +2368,10 @@ packages: dev: true optional: true - registry.npmjs.org/@swc/core-linux-x64-gnu@1.3.94: - resolution: {integrity: sha512-gjq7U6clhJi0Oel2a4gwR4MbSu+THQ2hmBNVCOSA3JjPZWZTkJXaJDpnh/r7PJxKBwUDlo0VPlwiwjepAQR2Rw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.94.tgz} + registry.npmjs.org/@swc/core-linux-x64-gnu@1.3.96: + resolution: {integrity: sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.96.tgz} name: '@swc/core-linux-x64-gnu' - version: 1.3.94 + version: 1.3.96 engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -2313,10 +2379,10 @@ packages: dev: true optional: true - registry.npmjs.org/@swc/core-linux-x64-musl@1.3.94: - resolution: {integrity: sha512-rSylruWyeol2ujZDHmwiovupMR5ukMXivlA7DDxmQ1dFUV9HuiPknQrU5rEbI3V2V3V5RkpbEKjnADen7AeMPQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.94.tgz} + registry.npmjs.org/@swc/core-linux-x64-musl@1.3.96: + resolution: {integrity: sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.96.tgz} name: '@swc/core-linux-x64-musl' - version: 1.3.94 + version: 1.3.96 engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -2324,10 +2390,10 @@ packages: dev: true optional: true - registry.npmjs.org/@swc/core-win32-arm64-msvc@1.3.94: - resolution: {integrity: sha512-OenDUr5MQkz506ebVQq6ezoZ3GZ26nchgf5mPnwab4gx2TEiyR9zn7MdX5LWskTmOK3+FszPbGK0B5oLK6Y5yw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.94.tgz} + registry.npmjs.org/@swc/core-win32-arm64-msvc@1.3.96: + resolution: {integrity: sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.96.tgz} name: '@swc/core-win32-arm64-msvc' - version: 1.3.94 + version: 1.3.96 engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -2335,10 +2401,10 @@ packages: dev: true optional: true - registry.npmjs.org/@swc/core-win32-ia32-msvc@1.3.94: - resolution: {integrity: sha512-mi6NcmtJKnaiHAxLtVz+WzunscsEwPdA0j15DuiYVx06Xo+MdRLJj4eVBgVLwGD1AI3IqKs4MVVx2cD7n0h5mg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.94.tgz} + registry.npmjs.org/@swc/core-win32-ia32-msvc@1.3.96: + resolution: {integrity: sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.96.tgz} name: '@swc/core-win32-ia32-msvc' - version: 1.3.94 + version: 1.3.96 engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -2346,10 +2412,10 @@ packages: dev: true optional: true - registry.npmjs.org/@swc/core-win32-x64-msvc@1.3.94: - resolution: {integrity: sha512-Ba0ZLcGMnqPWWF9Xa+rWhhnkpvE7XoQegMP/VCF2JIHb2ieGBC8jChO6nKRFKZjib/3wghGzxakyDQx3LDhDug==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.94.tgz} + registry.npmjs.org/@swc/core-win32-x64-msvc@1.3.96: + resolution: {integrity: sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.96.tgz} name: '@swc/core-win32-x64-msvc' - version: 1.3.94 + version: 1.3.96 engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -2357,10 +2423,10 @@ packages: dev: true optional: true - registry.npmjs.org/@swc/core@1.3.94: - resolution: {integrity: sha512-jTHn8UJOGgERKZLy8euEixVAzC/w/rUSuMlM3e7hxgap/TC595hSkuQwtkpL238dsuEPveD44GMy2A5UBtSvjg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core/-/core-1.3.94.tgz} + registry.npmjs.org/@swc/core@1.3.96: + resolution: {integrity: sha512-zwE3TLgoZwJfQygdv2SdCK9mRLYluwDOM53I+dT6Z5ZvrgVENmY3txvWDvduzkV+/8IuvrRbVezMpxcojadRdQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/core/-/core-1.3.96.tgz} name: '@swc/core' - version: 1.3.94 + version: 1.3.96 engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -2372,16 +2438,16 @@ packages: '@swc/counter': registry.npmjs.org/@swc/counter@0.1.2 '@swc/types': registry.npmjs.org/@swc/types@0.1.5 optionalDependencies: - '@swc/core-darwin-arm64': registry.npmjs.org/@swc/core-darwin-arm64@1.3.94 - '@swc/core-darwin-x64': registry.npmjs.org/@swc/core-darwin-x64@1.3.94 - '@swc/core-linux-arm-gnueabihf': registry.npmjs.org/@swc/core-linux-arm-gnueabihf@1.3.94 - '@swc/core-linux-arm64-gnu': registry.npmjs.org/@swc/core-linux-arm64-gnu@1.3.94 - '@swc/core-linux-arm64-musl': registry.npmjs.org/@swc/core-linux-arm64-musl@1.3.94 - '@swc/core-linux-x64-gnu': registry.npmjs.org/@swc/core-linux-x64-gnu@1.3.94 - '@swc/core-linux-x64-musl': registry.npmjs.org/@swc/core-linux-x64-musl@1.3.94 - '@swc/core-win32-arm64-msvc': registry.npmjs.org/@swc/core-win32-arm64-msvc@1.3.94 - '@swc/core-win32-ia32-msvc': registry.npmjs.org/@swc/core-win32-ia32-msvc@1.3.94 - '@swc/core-win32-x64-msvc': registry.npmjs.org/@swc/core-win32-x64-msvc@1.3.94 + '@swc/core-darwin-arm64': registry.npmjs.org/@swc/core-darwin-arm64@1.3.96 + '@swc/core-darwin-x64': registry.npmjs.org/@swc/core-darwin-x64@1.3.96 + '@swc/core-linux-arm-gnueabihf': registry.npmjs.org/@swc/core-linux-arm-gnueabihf@1.3.96 + '@swc/core-linux-arm64-gnu': registry.npmjs.org/@swc/core-linux-arm64-gnu@1.3.96 + '@swc/core-linux-arm64-musl': registry.npmjs.org/@swc/core-linux-arm64-musl@1.3.96 + '@swc/core-linux-x64-gnu': registry.npmjs.org/@swc/core-linux-x64-gnu@1.3.96 + '@swc/core-linux-x64-musl': registry.npmjs.org/@swc/core-linux-x64-musl@1.3.96 + '@swc/core-win32-arm64-msvc': registry.npmjs.org/@swc/core-win32-arm64-msvc@1.3.96 + '@swc/core-win32-ia32-msvc': registry.npmjs.org/@swc/core-win32-ia32-msvc@1.3.96 + '@swc/core-win32-x64-msvc': registry.npmjs.org/@swc/core-win32-x64-msvc@1.3.96 dev: true registry.npmjs.org/@swc/counter@0.1.2: @@ -2390,14 +2456,6 @@ packages: version: 0.1.2 dev: true - registry.npmjs.org/@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz} - name: '@swc/helpers' - version: 0.5.2 - dependencies: - tslib: registry.npmjs.org/tslib@2.6.2 - dev: false - registry.npmjs.org/@swc/types@0.1.5: resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz} name: '@swc/types' @@ -2418,35 +2476,43 @@ packages: dependencies: '@babel/parser': registry.npmjs.org/@babel/parser@7.23.0 '@babel/types': registry.npmjs.org/@babel/types@7.23.0 - '@types/babel__generator': registry.npmjs.org/@types/babel__generator@7.6.6 - '@types/babel__template': registry.npmjs.org/@types/babel__template@7.4.3 - '@types/babel__traverse': registry.npmjs.org/@types/babel__traverse@7.20.3 + '@types/babel__generator': registry.npmjs.org/@types/babel__generator@7.6.7 + '@types/babel__template': registry.npmjs.org/@types/babel__template@7.4.4 + '@types/babel__traverse': registry.npmjs.org/@types/babel__traverse@7.20.4 dev: false - registry.npmjs.org/@types/babel__generator@7.6.6: - resolution: {integrity: sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz} - name: '@types/babel__generator' - version: 7.6.6 - dependencies: - '@babel/types': registry.npmjs.org/@babel/types@7.23.0 - dev: false - - registry.npmjs.org/@types/babel__template@7.4.3: - resolution: {integrity: sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz} - name: '@types/babel__template' - version: 7.4.3 + registry.npmjs.org/@types/babel__core@7.20.4: + resolution: {integrity: sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.4.tgz} + name: '@types/babel__core' + version: 7.20.4 dependencies: '@babel/parser': registry.npmjs.org/@babel/parser@7.23.0 '@babel/types': registry.npmjs.org/@babel/types@7.23.0 - dev: false + '@types/babel__generator': registry.npmjs.org/@types/babel__generator@7.6.7 + '@types/babel__template': registry.npmjs.org/@types/babel__template@7.4.4 + '@types/babel__traverse': registry.npmjs.org/@types/babel__traverse@7.20.4 - registry.npmjs.org/@types/babel__traverse@7.20.3: - resolution: {integrity: sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz} + registry.npmjs.org/@types/babel__generator@7.6.7: + resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz} + name: '@types/babel__generator' + version: 7.6.7 + dependencies: + '@babel/types': registry.npmjs.org/@babel/types@7.23.0 + + registry.npmjs.org/@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz} + name: '@types/babel__template' + version: 7.4.4 + dependencies: + '@babel/parser': registry.npmjs.org/@babel/parser@7.23.0 + '@babel/types': registry.npmjs.org/@babel/types@7.23.0 + + registry.npmjs.org/@types/babel__traverse@7.20.4: + resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz} name: '@types/babel__traverse' - version: 7.20.3 + version: 7.20.4 dependencies: '@babel/types': registry.npmjs.org/@babel/types@7.23.0 - dev: false registry.npmjs.org/@types/cookie@0.5.3: resolution: {integrity: sha512-SLg07AS9z1Ab2LU+QxzU8RCmzsja80ywjf/t5oqw+4NSH20gIGlhLOrBDm1L3PBWzPa4+wkgFQVZAjE6Ioj2ug==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/cookie/-/cookie-0.5.3.tgz} @@ -2454,6 +2520,12 @@ packages: version: 0.5.3 dev: true + registry.npmjs.org/@types/cookie@0.5.4: + resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/cookie/-/cookie-0.5.4.tgz} + name: '@types/cookie' + version: 0.5.4 + dev: true + registry.npmjs.org/@types/d3-array@3.0.9: resolution: {integrity: sha512-mZowFN3p64ajCJJ4riVYlOjNlBJv3hctgAY01pjw3qTnJePD8s9DZmYDzhHKvzfCYvdjwylkU38+Vdt7Cu2FDA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.9.tgz} name: '@types/d3-array' @@ -2695,10 +2767,10 @@ packages: '@types/d3-zoom': registry.npmjs.org/@types/d3-zoom@3.0.1 dev: false - registry.npmjs.org/@types/dagre@0.7.48: - resolution: {integrity: sha512-rF3yXSwHIrDxEkN6edCE4TXknb5YSEpiXfLaspw1I08grC49ZFuAVGOQCmZGIuLUGoFgcqGlUFBL/XrpgYpQgw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/dagre/-/dagre-0.7.48.tgz} + registry.npmjs.org/@types/dagre@0.7.52: + resolution: {integrity: sha512-XKJdy+OClLk3hketHi9Qg6gTfe1F3y+UFnHxKA2rn9Dw+oXa4Gb378Ztz9HlMgZKSxpPmn4BNVh9wgkpvrK1uw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/dagre/-/dagre-0.7.52.tgz} name: '@types/dagre' - version: 0.7.48 + version: 0.7.52 dev: true registry.npmjs.org/@types/debug@4.1.10: @@ -2736,16 +2808,10 @@ packages: ci-info: registry.npmjs.org/ci-info@3.9.0 dev: true - registry.npmjs.org/@types/json-schema@7.0.14: - resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz} + registry.npmjs.org/@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz} name: '@types/json-schema' - version: 7.0.14 - dev: true - - registry.npmjs.org/@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz} - name: '@types/json5' - version: 0.0.29 + version: 7.0.15 dev: true registry.npmjs.org/@types/json5@0.0.30: @@ -2796,32 +2862,16 @@ packages: version: 12.20.55 dev: true - registry.npmjs.org/@types/node@16.18.59: - resolution: {integrity: sha512-PJ1w2cNeKUEdey4LiPra0ZuxZFOGvetswE8qHRriV/sUkL5Al4tTmPV9D2+Y/TPIxTHHgxTfRjZVKWhPw/ORhQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/node/-/node-16.18.59.tgz} + registry.npmjs.org/@types/node@16.18.60: + resolution: {integrity: sha512-ZUGPWx5vKfN+G2/yN7pcSNLkIkXEvlwNaJEd4e0ppX7W2S8XAkdc/37hM4OUNJB9sa0p12AOvGvxL4JCPiz9DA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/node/-/node-16.18.60.tgz} name: '@types/node' - version: 16.18.59 + version: 16.18.60 dev: true registry.npmjs.org/@types/node@18.7.16: resolution: {integrity: sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/node/-/node-18.7.16.tgz} name: '@types/node' version: 18.7.16 - dev: true - - registry.npmjs.org/@types/node@20.0.0: - resolution: {integrity: sha512-cD2uPTDnQQCVpmRefonO98/PPijuOnnEy5oytWJFPY1N9aJCz2wJ5kSGWO+zJoed2cY2JxQh6yBuUq4vIn61hw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/node/-/node-20.0.0.tgz} - name: '@types/node' - version: 20.0.0 - dev: true - - registry.npmjs.org/@types/node@20.8.7: - resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz} - name: '@types/node' - version: 20.8.7 - dependencies: - undici-types: registry.npmjs.org/undici-types@5.25.3 - dev: true - optional: true registry.npmjs.org/@types/normalize-package-data@2.4.3: resolution: {integrity: sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz} @@ -2835,17 +2885,29 @@ packages: version: 6.0.3 dev: false + registry.npmjs.org/@types/prop-types@15.7.10: + resolution: {integrity: sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.10.tgz} + name: '@types/prop-types' + version: 15.7.10 + registry.npmjs.org/@types/prop-types@15.7.9: resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz} name: '@types/prop-types' version: 15.7.9 - registry.npmjs.org/@types/pug@2.0.8: - resolution: {integrity: sha512-QzhsZ1dMGyJbn/D9V80zp4GIA4J4rfAjCCxc3MP+new0E8dyVdSkR735Lx+n3LIaHNFcjHL5+TbziccuT+fdoQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/pug/-/pug-2.0.8.tgz} + registry.npmjs.org/@types/pug@2.0.9: + resolution: {integrity: sha512-Yg4LkgFYvn1faISbDNWmcAC1XoDT8IoMUFspp5mnagKk+UvD2N0IWt5A7GRdMubsNWqgCLmrkf8rXkzNqb4szA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/pug/-/pug-2.0.9.tgz} name: '@types/pug' - version: 2.0.8 + version: 2.0.9 dev: true + registry.npmjs.org/@types/react-dom@18.2.14: + resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.14.tgz} + name: '@types/react-dom' + version: 18.2.14 + dependencies: + '@types/react': registry.npmjs.org/@types/react@18.2.36 + registry.npmjs.org/@types/react-dom@18.2.8: resolution: {integrity: sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.8.tgz} name: '@types/react-dom' @@ -2862,6 +2924,25 @@ packages: '@types/scheduler': registry.npmjs.org/@types/scheduler@0.16.5 csstype: registry.npmjs.org/csstype@3.1.2 + registry.npmjs.org/@types/react@18.2.31: + resolution: {integrity: sha512-c2UnPv548q+5DFh03y8lEDeMfDwBn9G3dRwfkrxQMo/dOtRHUUO57k6pHvBIfH/VF4Nh+98mZ5aaSe+2echD5g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/react/-/react-18.2.31.tgz} + name: '@types/react' + version: 18.2.31 + dependencies: + '@types/prop-types': registry.npmjs.org/@types/prop-types@15.7.10 + '@types/scheduler': registry.npmjs.org/@types/scheduler@0.16.5 + csstype: registry.npmjs.org/csstype@3.1.2 + dev: false + + registry.npmjs.org/@types/react@18.2.36: + resolution: {integrity: sha512-o9XFsHYLLZ4+sb9CWUYwHqFVoG61SesydF353vFMMsQziiyRu8np4n2OYMUSDZ8XuImxDr9c5tR7gidlH29Vnw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/react/-/react-18.2.36.tgz} + name: '@types/react' + version: 18.2.36 + dependencies: + '@types/prop-types': registry.npmjs.org/@types/prop-types@15.7.10 + '@types/scheduler': registry.npmjs.org/@types/scheduler@0.16.5 + csstype: registry.npmjs.org/csstype@3.1.2 + registry.npmjs.org/@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz} name: '@types/resolve' @@ -2921,7 +3002,7 @@ packages: version: 2.10.2 requiresBuild: true dependencies: - '@types/node': registry.npmjs.org/@types/node@20.8.7 + '@types/node': registry.npmjs.org/@types/node@18.7.16 dev: true optional: true @@ -2956,6 +3037,38 @@ packages: - supports-color dev: true + registry.npmjs.org/@typescript-eslint/eslint-plugin@6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.10.0.tgz} + id: registry.npmjs.org/@typescript-eslint/eslint-plugin/6.10.0 + name: '@typescript-eslint/eslint-plugin' + version: 6.10.0 + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': registry.npmjs.org/@eslint-community/regexpp@4.10.0 + '@typescript-eslint/parser': registry.npmjs.org/@typescript-eslint/parser@6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': registry.npmjs.org/@typescript-eslint/scope-manager@6.10.0 + '@typescript-eslint/type-utils': registry.npmjs.org/@typescript-eslint/type-utils@6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': registry.npmjs.org/@typescript-eslint/utils@6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': registry.npmjs.org/@typescript-eslint/visitor-keys@6.10.0 + debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) + eslint: registry.npmjs.org/eslint@8.53.0 + graphemer: registry.npmjs.org/graphemer@1.4.0 + ignore: registry.npmjs.org/ignore@5.2.4 + natural-compare: registry.npmjs.org/natural-compare@1.4.0 + semver: registry.npmjs.org/semver@7.5.4 + ts-api-utils: registry.npmjs.org/ts-api-utils@1.0.3(typescript@5.2.2) + typescript: registry.npmjs.org/typescript@5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + registry.npmjs.org/@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.43.0)(typescript@5.1.3): resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz} id: registry.npmjs.org/@typescript-eslint/eslint-plugin/6.8.0 @@ -2970,7 +3083,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': registry.npmjs.org/@eslint-community/regexpp@4.9.1 + '@eslint-community/regexpp': registry.npmjs.org/@eslint-community/regexpp@4.10.0 '@typescript-eslint/parser': registry.npmjs.org/@typescript-eslint/parser@6.8.0(eslint@8.43.0)(typescript@5.1.3) '@typescript-eslint/scope-manager': registry.npmjs.org/@typescript-eslint/scope-manager@6.8.0 '@typescript-eslint/type-utils': registry.npmjs.org/@typescript-eslint/type-utils@6.8.0(eslint@8.43.0)(typescript@5.1.3) @@ -3011,25 +3124,26 @@ packages: - supports-color dev: true - registry.npmjs.org/@typescript-eslint/parser@5.62.0(eslint@8.43.0)(typescript@5.1.3): - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz} - id: registry.npmjs.org/@typescript-eslint/parser/5.62.0 + registry.npmjs.org/@typescript-eslint/parser@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.10.0.tgz} + id: registry.npmjs.org/@typescript-eslint/parser/6.10.0 name: '@typescript-eslint/parser' - version: 5.62.0 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + version: 6.10.0 + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': registry.npmjs.org/@typescript-eslint/scope-manager@5.62.0 - '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types@5.62.0 - '@typescript-eslint/typescript-estree': registry.npmjs.org/@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.3) + '@typescript-eslint/scope-manager': registry.npmjs.org/@typescript-eslint/scope-manager@6.10.0 + '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types@6.10.0 + '@typescript-eslint/typescript-estree': registry.npmjs.org/@typescript-eslint/typescript-estree@6.10.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': registry.npmjs.org/@typescript-eslint/visitor-keys@6.10.0 debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) - eslint: registry.npmjs.org/eslint@8.43.0 - typescript: registry.npmjs.org/typescript@5.1.3 + eslint: registry.npmjs.org/eslint@8.53.0 + typescript: registry.npmjs.org/typescript@5.2.2 transitivePeerDependencies: - supports-color dev: true @@ -3068,14 +3182,14 @@ packages: '@typescript-eslint/visitor-keys': registry.npmjs.org/@typescript-eslint/visitor-keys@5.60.0 dev: true - registry.npmjs.org/@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz} + registry.npmjs.org/@typescript-eslint/scope-manager@6.10.0: + resolution: {integrity: sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz} name: '@typescript-eslint/scope-manager' - version: 5.62.0 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + version: 6.10.0 + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types@5.62.0 - '@typescript-eslint/visitor-keys': registry.npmjs.org/@typescript-eslint/visitor-keys@5.62.0 + '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types@6.10.0 + '@typescript-eslint/visitor-keys': registry.npmjs.org/@typescript-eslint/visitor-keys@6.10.0 dev: true registry.npmjs.org/@typescript-eslint/scope-manager@6.8.0: @@ -3111,6 +3225,29 @@ packages: - supports-color dev: true + registry.npmjs.org/@typescript-eslint/type-utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.10.0.tgz} + id: registry.npmjs.org/@typescript-eslint/type-utils/6.10.0 + name: '@typescript-eslint/type-utils' + version: 6.10.0 + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': registry.npmjs.org/@typescript-eslint/typescript-estree@6.10.0(typescript@5.2.2) + '@typescript-eslint/utils': registry.npmjs.org/@typescript-eslint/utils@6.10.0(eslint@8.53.0)(typescript@5.2.2) + debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) + eslint: registry.npmjs.org/eslint@8.53.0 + ts-api-utils: registry.npmjs.org/ts-api-utils@1.0.3(typescript@5.2.2) + typescript: registry.npmjs.org/typescript@5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + registry.npmjs.org/@typescript-eslint/type-utils@6.8.0(eslint@8.43.0)(typescript@5.1.3): resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz} id: registry.npmjs.org/@typescript-eslint/type-utils/6.8.0 @@ -3141,11 +3278,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - registry.npmjs.org/@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz} + registry.npmjs.org/@typescript-eslint/types@6.10.0: + resolution: {integrity: sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz} name: '@typescript-eslint/types' - version: 5.62.0 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + version: 6.10.0 + engines: {node: ^16.0.0 || >=18.0.0} dev: true registry.npmjs.org/@typescript-eslint/types@6.8.0: @@ -3179,26 +3316,26 @@ packages: - supports-color dev: true - registry.npmjs.org/@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.3): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz} - id: registry.npmjs.org/@typescript-eslint/typescript-estree/5.62.0 + registry.npmjs.org/@typescript-eslint/typescript-estree@6.10.0(typescript@5.2.2): + resolution: {integrity: sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz} + id: registry.npmjs.org/@typescript-eslint/typescript-estree/6.10.0 name: '@typescript-eslint/typescript-estree' - version: 5.62.0 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + version: 6.10.0 + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types@5.62.0 - '@typescript-eslint/visitor-keys': registry.npmjs.org/@typescript-eslint/visitor-keys@5.62.0 + '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types@6.10.0 + '@typescript-eslint/visitor-keys': registry.npmjs.org/@typescript-eslint/visitor-keys@6.10.0 debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) globby: registry.npmjs.org/globby@11.1.0 is-glob: registry.npmjs.org/is-glob@4.0.3 semver: registry.npmjs.org/semver@7.5.4 - tsutils: registry.npmjs.org/tsutils@3.21.0(typescript@5.1.3) - typescript: registry.npmjs.org/typescript@5.1.3 + ts-api-utils: registry.npmjs.org/ts-api-utils@1.0.3(typescript@5.2.2) + typescript: registry.npmjs.org/typescript@5.2.2 transitivePeerDependencies: - supports-color dev: true @@ -3237,7 +3374,7 @@ packages: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': registry.npmjs.org/@eslint-community/eslint-utils@4.4.0(eslint@8.43.0) - '@types/json-schema': registry.npmjs.org/@types/json-schema@7.0.14 + '@types/json-schema': registry.npmjs.org/@types/json-schema@7.0.15 '@types/semver': registry.npmjs.org/@types/semver@7.5.4 '@typescript-eslint/scope-manager': registry.npmjs.org/@typescript-eslint/scope-manager@5.60.0 '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types@5.60.0 @@ -3250,6 +3387,28 @@ packages: - typescript dev: true + registry.npmjs.org/@typescript-eslint/utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.10.0.tgz} + id: registry.npmjs.org/@typescript-eslint/utils/6.10.0 + name: '@typescript-eslint/utils' + version: 6.10.0 + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': registry.npmjs.org/@eslint-community/eslint-utils@4.4.0(eslint@8.53.0) + '@types/json-schema': registry.npmjs.org/@types/json-schema@7.0.15 + '@types/semver': registry.npmjs.org/@types/semver@7.5.4 + '@typescript-eslint/scope-manager': registry.npmjs.org/@typescript-eslint/scope-manager@6.10.0 + '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types@6.10.0 + '@typescript-eslint/typescript-estree': registry.npmjs.org/@typescript-eslint/typescript-estree@6.10.0(typescript@5.2.2) + eslint: registry.npmjs.org/eslint@8.53.0 + semver: registry.npmjs.org/semver@7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + registry.npmjs.org/@typescript-eslint/utils@6.8.0(eslint@8.43.0)(typescript@5.1.3): resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz} id: registry.npmjs.org/@typescript-eslint/utils/6.8.0 @@ -3260,7 +3419,7 @@ packages: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': registry.npmjs.org/@eslint-community/eslint-utils@4.4.0(eslint@8.43.0) - '@types/json-schema': registry.npmjs.org/@types/json-schema@7.0.14 + '@types/json-schema': registry.npmjs.org/@types/json-schema@7.0.15 '@types/semver': registry.npmjs.org/@types/semver@7.5.4 '@typescript-eslint/scope-manager': registry.npmjs.org/@typescript-eslint/scope-manager@6.8.0 '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types@6.8.0 @@ -3282,13 +3441,13 @@ packages: eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys@3.4.3 dev: true - registry.npmjs.org/@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz} + registry.npmjs.org/@typescript-eslint/visitor-keys@6.10.0: + resolution: {integrity: sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz} name: '@typescript-eslint/visitor-keys' - version: 5.62.0 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + version: 6.10.0 + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types@5.62.0 + '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types@6.10.0 eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys@3.4.3 dev: true @@ -3302,25 +3461,31 @@ packages: eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys@3.4.3 dev: true - registry.npmjs.org/@vitejs/plugin-react-swc@3.3.2(vite@4.4.9): - resolution: {integrity: sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz} - id: registry.npmjs.org/@vitejs/plugin-react-swc/3.3.2 + registry.npmjs.org/@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz} + name: '@ungap/structured-clone' + version: 1.2.0 + dev: true + + registry.npmjs.org/@vitejs/plugin-react-swc@3.4.1(vite@4.5.0): + resolution: {integrity: sha512-7YQOQcVV5x1luD8nkbCDdyYygFvn1hjqJk68UvNAzY2QG4o4N5EwAhLLFNOcd1HrdMwDl0VElP8VutoWf9IvJg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.4.1.tgz} + id: registry.npmjs.org/@vitejs/plugin-react-swc/3.4.1 name: '@vitejs/plugin-react-swc' - version: 3.3.2 + version: 3.4.1 peerDependencies: vite: ^4 dependencies: - '@swc/core': registry.npmjs.org/@swc/core@1.3.94 - vite: registry.npmjs.org/vite@4.4.9 + '@swc/core': registry.npmjs.org/@swc/core@1.3.96 + vite: registry.npmjs.org/vite@4.5.0(@types/node@18.7.16) transitivePeerDependencies: - '@swc/helpers' dev: true - registry.npmjs.org/@vitejs/plugin-react@4.0.4(vite@4.4.9): - resolution: {integrity: sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz} - id: registry.npmjs.org/@vitejs/plugin-react/4.0.4 + registry.npmjs.org/@vitejs/plugin-react@4.1.1(vite@4.5.0): + resolution: {integrity: sha512-Jie2HERK+uh27e+ORXXwEP5h0Y2lS9T2PRGbfebiHGlwzDO0dEnd2aNtOR/qjBlPb1YgxwAONeblL1xqLikLag==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.1.tgz} + id: registry.npmjs.org/@vitejs/plugin-react/4.1.1 name: '@vitejs/plugin-react' - version: 4.0.4 + version: 4.1.1 engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 @@ -3328,8 +3493,9 @@ packages: '@babel/core': registry.npmjs.org/@babel/core@7.23.2 '@babel/plugin-transform-react-jsx-self': registry.npmjs.org/@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.23.2) '@babel/plugin-transform-react-jsx-source': registry.npmjs.org/@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.23.2) + '@types/babel__core': registry.npmjs.org/@types/babel__core@7.20.4 react-refresh: registry.npmjs.org/react-refresh@0.14.0 - vite: registry.npmjs.org/vite@4.4.9 + vite: registry.npmjs.org/vite@4.5.0(@types/node@18.7.16) transitivePeerDependencies: - supports-color @@ -3351,6 +3517,14 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + registry.npmjs.org/acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz} + name: acorn + version: 8.11.2 + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + registry.npmjs.org/aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz} name: aggregate-error @@ -3454,6 +3628,12 @@ packages: version: 2.2.0 dev: true + registry.npmjs.org/arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/arg/-/arg-5.0.2.tgz} + name: arg + version: 5.0.2 + dev: true + registry.npmjs.org/argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz} name: argparse @@ -3508,19 +3688,6 @@ packages: engines: {node: '>=8'} dev: true - registry.npmjs.org/array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz} - name: array.prototype.findlastindex - version: 1.2.3 - engines: {node: '>= 0.4'} - dependencies: - call-bind: registry.npmjs.org/call-bind@1.0.5 - define-properties: registry.npmjs.org/define-properties@1.2.1 - es-abstract: registry.npmjs.org/es-abstract@1.22.3 - es-shim-unscopables: registry.npmjs.org/es-shim-unscopables@1.0.2 - get-intrinsic: registry.npmjs.org/get-intrinsic@1.2.2 - dev: true - registry.npmjs.org/array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz} name: array.prototype.flat @@ -3594,12 +3761,6 @@ packages: engines: {node: '>=0.8'} dev: true - registry.npmjs.org/ast-types-flow@0.0.7: - resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz} - name: ast-types-flow - version: 0.0.7 - dev: true - registry.npmjs.org/astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz} name: astral-regex @@ -3665,8 +3826,8 @@ packages: undici: registry.npmjs.org/undici@5.26.5 unist-util-visit: registry.npmjs.org/unist-util-visit@4.1.2 vfile: registry.npmjs.org/vfile@5.3.7 - vite: registry.npmjs.org/vite@4.4.9 - vitefu: registry.npmjs.org/vitefu@0.2.5(vite@4.4.9) + vite: registry.npmjs.org/vite@4.5.0(@types/node@18.7.16) + vitefu: registry.npmjs.org/vitefu@0.2.5(vite@4.5.0) which-pm: registry.npmjs.org/which-pm@2.1.1 yargs-parser: registry.npmjs.org/yargs-parser@21.1.1 zod: registry.npmjs.org/zod@3.21.1 @@ -3683,10 +3844,10 @@ packages: - terser dev: false - registry.npmjs.org/async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/async/-/async-3.2.4.tgz} + registry.npmjs.org/async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/async/-/async-3.2.5.tgz} name: async - version: 3.2.4 + version: 3.2.5 dev: true registry.npmjs.org/asynciterator.prototype@1.0.0: @@ -3748,20 +3909,14 @@ packages: version: 1.12.0 dev: true - registry.npmjs.org/axe-core@4.8.2: - resolution: {integrity: sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz} - name: axe-core - version: 4.8.2 - engines: {node: '>=4'} - dev: true - - registry.npmjs.org/axios@0.21.4(debug@4.3.2): - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/axios/-/axios-0.21.4.tgz} - id: registry.npmjs.org/axios/0.21.4 + registry.npmjs.org/axios@0.27.2(debug@4.3.4): + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/axios/-/axios-0.27.2.tgz} + id: registry.npmjs.org/axios/0.27.2 name: axios - version: 0.21.4 + version: 0.27.2 dependencies: - follow-redirects: registry.npmjs.org/follow-redirects@1.15.3(debug@4.3.2) + follow-redirects: registry.npmjs.org/follow-redirects@1.15.3(debug@4.3.4) + form-data: registry.npmjs.org/form-data@4.0.0 transitivePeerDependencies: - debug dev: true @@ -3963,6 +4118,7 @@ packages: engines: {node: '>=10.16.0'} dependencies: streamsearch: registry.npmjs.org/streamsearch@1.1.0 + dev: true registry.npmjs.org/cachedir@2.4.0: resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz} @@ -4194,12 +4350,6 @@ packages: string-width: registry.npmjs.org/string-width@4.2.3 dev: true - registry.npmjs.org/client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz} - name: client-only - version: 0.0.1 - dev: false - registry.npmjs.org/cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz} name: cliui @@ -4588,16 +4738,15 @@ packages: stream-transform: registry.npmjs.org/stream-transform@2.1.3 dev: true - registry.npmjs.org/cypress-real-events@1.10.0(cypress@12.17.3): - resolution: {integrity: sha512-ALSdCiG+Rj3Sl6qooqTFeFGBxOIe8QJUcgIuJ6ZVBanTEijXRzqxqstMC2ZKfixqj1TyNjolyZU4zOoN/jtHpg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/cypress-real-events/-/cypress-real-events-1.10.0.tgz} - id: registry.npmjs.org/cypress-real-events/1.10.0 + registry.npmjs.org/cypress-real-events@1.11.0(cypress@12.17.3): + resolution: {integrity: sha512-4LXVRsyq+xBh5TmlEyO1ojtBXtN7xw720Pwb9rEE9rkJuXmeH3VyoR1GGayMGr+Itqf11eEjfDewtDmcx6PWPQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/cypress-real-events/-/cypress-real-events-1.11.0.tgz} + id: registry.npmjs.org/cypress-real-events/1.11.0 name: cypress-real-events - version: 1.10.0 + version: 1.11.0 peerDependencies: - cypress: ^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x + cypress: ^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x || ^13.x dependencies: cypress: registry.npmjs.org/cypress@12.17.3 - prettier: registry.npmjs.org/prettier@3.0.3 dev: true registry.npmjs.org/cypress@12.17.3: @@ -4610,7 +4759,7 @@ packages: dependencies: '@cypress/request': registry.npmjs.org/@cypress/request@2.88.12 '@cypress/xvfb': registry.npmjs.org/@cypress/xvfb@1.2.4(supports-color@8.1.1) - '@types/node': registry.npmjs.org/@types/node@16.18.59 + '@types/node': registry.npmjs.org/@types/node@16.18.60 '@types/sinonjs__fake-timers': registry.npmjs.org/@types/sinonjs__fake-timers@8.1.1 '@types/sizzle': registry.npmjs.org/@types/sizzle@2.3.5 arch: registry.npmjs.org/arch@2.2.0 @@ -4745,12 +4894,6 @@ packages: lodash: registry.npmjs.org/lodash@4.17.21 dev: false - registry.npmjs.org/damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz} - name: damerau-levenshtein - version: 1.0.8 - dev: true - registry.npmjs.org/dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz} name: dashdash @@ -4808,20 +4951,6 @@ packages: ms: registry.npmjs.org/ms@2.1.3 supports-color: registry.npmjs.org/supports-color@8.1.1 - registry.npmjs.org/debug@4.3.2: - resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/debug/-/debug-4.3.2.tgz} - name: debug - version: 4.3.2 - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: registry.npmjs.org/ms@2.1.2 - dev: true - registry.npmjs.org/debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/debug/-/debug-4.3.4.tgz} id: registry.npmjs.org/debug/4.3.4 @@ -5111,6 +5240,7 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz} name: emoji-regex version: 9.2.2 + dev: false registry.npmjs.org/end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz} @@ -5119,16 +5249,6 @@ packages: dependencies: once: registry.npmjs.org/once@1.4.0 - registry.npmjs.org/enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz} - name: enhanced-resolve - version: 5.15.0 - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: registry.npmjs.org/graceful-fs@4.2.11 - tapable: registry.npmjs.org/tapable@2.2.1 - dev: true - registry.npmjs.org/enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz} name: enquirer @@ -5353,32 +5473,16 @@ packages: engines: {node: '>=12'} dev: false - registry.npmjs.org/eslint-config-next@13.5.4(eslint@8.43.0)(typescript@5.1.3): - resolution: {integrity: sha512-FzQGIj4UEszRX7fcRSJK6L1LrDiVZvDFW320VVntVKh3BSU8Fb9kpaoxQx0cdFgf3MQXdeSbrCXJ/5Z/NndDkQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.4.tgz} - id: registry.npmjs.org/eslint-config-next/13.5.4 - name: eslint-config-next - version: 13.5.4 + registry.npmjs.org/eslint-compat-utils@0.1.2(eslint@8.53.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz} + id: registry.npmjs.org/eslint-compat-utils/0.1.2 + name: eslint-compat-utils + version: 0.1.2 + engines: {node: '>=12'} peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true + eslint: '>=6.0.0' dependencies: - '@next/eslint-plugin-next': registry.npmjs.org/@next/eslint-plugin-next@13.5.4 - '@rushstack/eslint-patch': registry.npmjs.org/@rushstack/eslint-patch@1.5.1 - '@typescript-eslint/parser': registry.npmjs.org/@typescript-eslint/parser@5.62.0(eslint@8.43.0)(typescript@5.1.3) - eslint: registry.npmjs.org/eslint@8.43.0 - eslint-import-resolver-node: registry.npmjs.org/eslint-import-resolver-node@0.3.9 - eslint-import-resolver-typescript: registry.npmjs.org/eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.43.0) - eslint-plugin-import: registry.npmjs.org/eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.8.0)(eslint@8.43.0) - eslint-plugin-jsx-a11y: registry.npmjs.org/eslint-plugin-jsx-a11y@6.7.1(eslint@8.43.0) - eslint-plugin-react: registry.npmjs.org/eslint-plugin-react@7.33.2(eslint@8.43.0) - eslint-plugin-react-hooks: registry.npmjs.org/eslint-plugin-react-hooks@4.6.0(eslint@8.43.0) - typescript: registry.npmjs.org/typescript@5.1.3 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - supports-color + eslint: registry.npmjs.org/eslint@8.53.0 dev: true registry.npmjs.org/eslint-config-prettier@8.8.0(eslint@8.43.0): @@ -5393,6 +5497,18 @@ packages: eslint: registry.npmjs.org/eslint@8.43.0 dev: true + registry.npmjs.org/eslint-config-prettier@9.0.0(eslint@8.53.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz} + id: registry.npmjs.org/eslint-config-prettier/9.0.0 + name: eslint-config-prettier + version: 9.0.0 + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: registry.npmjs.org/eslint@8.53.0 + dev: true + registry.npmjs.org/eslint-config-turbo@1.10.15(eslint@8.43.0): resolution: {integrity: sha512-76mpx2x818JZE26euen14utYcFDxOahZ9NaWA+6Xa4pY2ezVKVschuOxS96EQz3o3ZRSmcgBOapw/gHbN+EKxQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-config-turbo/-/eslint-config-turbo-1.10.15.tgz} id: registry.npmjs.org/eslint-config-turbo/1.10.15 @@ -5405,175 +5521,6 @@ packages: eslint-plugin-turbo: registry.npmjs.org/eslint-plugin-turbo@1.10.15(eslint@8.43.0) dev: true - registry.npmjs.org/eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz} - name: eslint-import-resolver-node - version: 0.3.9 - dependencies: - debug: registry.npmjs.org/debug@3.2.7(supports-color@8.1.1) - is-core-module: registry.npmjs.org/is-core-module@2.13.1 - resolve: registry.npmjs.org/resolve@1.22.8 - transitivePeerDependencies: - - supports-color - dev: true - - registry.npmjs.org/eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.43.0): - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz} - id: registry.npmjs.org/eslint-import-resolver-typescript/3.6.1 - name: eslint-import-resolver-typescript - version: 3.6.1 - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - dependencies: - debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) - enhanced-resolve: registry.npmjs.org/enhanced-resolve@5.15.0 - eslint: registry.npmjs.org/eslint@8.43.0 - eslint-module-utils: registry.npmjs.org/eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.43.0) - eslint-plugin-import: registry.npmjs.org/eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.8.0)(eslint@8.43.0) - fast-glob: registry.npmjs.org/fast-glob@3.3.1 - get-tsconfig: registry.npmjs.org/get-tsconfig@4.7.2 - is-core-module: registry.npmjs.org/is-core-module@2.13.1 - is-glob: registry.npmjs.org/is-glob@4.0.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color - dev: true - - registry.npmjs.org/eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.43.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz} - id: registry.npmjs.org/eslint-module-utils/2.8.0 - name: eslint-module-utils - version: 2.8.0 - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': registry.npmjs.org/@typescript-eslint/parser@5.62.0(eslint@8.43.0)(typescript@5.1.3) - debug: registry.npmjs.org/debug@3.2.7(supports-color@8.1.1) - eslint: registry.npmjs.org/eslint@8.43.0 - eslint-import-resolver-node: registry.npmjs.org/eslint-import-resolver-node@0.3.9 - eslint-import-resolver-typescript: registry.npmjs.org/eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.43.0) - transitivePeerDependencies: - - supports-color - dev: true - - registry.npmjs.org/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.43.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz} - id: registry.npmjs.org/eslint-module-utils/2.8.0 - name: eslint-module-utils - version: 2.8.0 - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': registry.npmjs.org/@typescript-eslint/parser@6.8.0(eslint@8.43.0)(typescript@5.1.3) - debug: registry.npmjs.org/debug@3.2.7(supports-color@8.1.1) - eslint: registry.npmjs.org/eslint@8.43.0 - eslint-import-resolver-node: registry.npmjs.org/eslint-import-resolver-node@0.3.9 - transitivePeerDependencies: - - supports-color - dev: true - - registry.npmjs.org/eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.8.0)(eslint@8.43.0): - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz} - id: registry.npmjs.org/eslint-plugin-import/2.29.0 - name: eslint-plugin-import - version: 2.29.0 - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': registry.npmjs.org/@typescript-eslint/parser@6.8.0(eslint@8.43.0)(typescript@5.1.3) - array-includes: registry.npmjs.org/array-includes@3.1.7 - array.prototype.findlastindex: registry.npmjs.org/array.prototype.findlastindex@1.2.3 - array.prototype.flat: registry.npmjs.org/array.prototype.flat@1.3.2 - array.prototype.flatmap: registry.npmjs.org/array.prototype.flatmap@1.3.2 - debug: registry.npmjs.org/debug@3.2.7(supports-color@8.1.1) - doctrine: registry.npmjs.org/doctrine@2.1.0 - eslint: registry.npmjs.org/eslint@8.43.0 - eslint-import-resolver-node: registry.npmjs.org/eslint-import-resolver-node@0.3.9 - eslint-module-utils: registry.npmjs.org/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.43.0) - hasown: registry.npmjs.org/hasown@2.0.0 - is-core-module: registry.npmjs.org/is-core-module@2.13.1 - is-glob: registry.npmjs.org/is-glob@4.0.3 - minimatch: registry.npmjs.org/minimatch@3.1.2 - object.fromentries: registry.npmjs.org/object.fromentries@2.0.7 - object.groupby: registry.npmjs.org/object.groupby@1.0.1 - object.values: registry.npmjs.org/object.values@1.1.7 - semver: registry.npmjs.org/semver@6.3.1 - tsconfig-paths: registry.npmjs.org/tsconfig-paths@3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - registry.npmjs.org/eslint-plugin-jsx-a11y@6.7.1(eslint@8.43.0): - resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz} - id: registry.npmjs.org/eslint-plugin-jsx-a11y/6.7.1 - name: eslint-plugin-jsx-a11y - version: 6.7.1 - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - '@babel/runtime': registry.npmjs.org/@babel/runtime@7.23.2 - aria-query: registry.npmjs.org/aria-query@5.3.0 - array-includes: registry.npmjs.org/array-includes@3.1.7 - array.prototype.flatmap: registry.npmjs.org/array.prototype.flatmap@1.3.2 - ast-types-flow: registry.npmjs.org/ast-types-flow@0.0.7 - axe-core: registry.npmjs.org/axe-core@4.8.2 - axobject-query: registry.npmjs.org/axobject-query@3.2.1 - damerau-levenshtein: registry.npmjs.org/damerau-levenshtein@1.0.8 - emoji-regex: registry.npmjs.org/emoji-regex@9.2.2 - eslint: registry.npmjs.org/eslint@8.43.0 - has: registry.npmjs.org/has@1.0.4 - jsx-ast-utils: registry.npmjs.org/jsx-ast-utils@3.3.5 - language-tags: registry.npmjs.org/language-tags@1.0.5 - minimatch: registry.npmjs.org/minimatch@3.1.2 - object.entries: registry.npmjs.org/object.entries@1.1.7 - object.fromentries: registry.npmjs.org/object.fromentries@2.0.7 - semver: registry.npmjs.org/semver@6.3.1 - dev: true - registry.npmjs.org/eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.43.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz} id: registry.npmjs.org/eslint-plugin-prettier/4.2.1 @@ -5594,18 +5541,6 @@ packages: prettier-linter-helpers: registry.npmjs.org/prettier-linter-helpers@1.0.0 dev: true - registry.npmjs.org/eslint-plugin-react-hooks@4.6.0(eslint@8.43.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz} - id: registry.npmjs.org/eslint-plugin-react-hooks/4.6.0 - name: eslint-plugin-react-hooks - version: 4.6.0 - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: registry.npmjs.org/eslint@8.43.0 - dev: true - registry.npmjs.org/eslint-plugin-react@7.33.2(eslint@8.43.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz} id: registry.npmjs.org/eslint-plugin-react/7.33.2 @@ -5665,6 +5600,38 @@ packages: - ts-node dev: true + registry.npmjs.org/eslint-plugin-svelte@2.35.0(eslint@8.53.0)(svelte@4.2.2): + resolution: {integrity: sha512-3WDFxNrkXaMlpqoNo3M1ZOQuoFLMO9+bdnN6oVVXaydXC7nzCJuGy9a0zqoNDHMSRPYt0Rqo6hIdHMEaI5sQnw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.35.0.tgz} + id: registry.npmjs.org/eslint-plugin-svelte/2.35.0 + name: eslint-plugin-svelte + version: 2.35.0 + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0-0 + svelte: ^3.37.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true + dependencies: + '@eslint-community/eslint-utils': registry.npmjs.org/@eslint-community/eslint-utils@4.4.0(eslint@8.53.0) + '@jridgewell/sourcemap-codec': registry.npmjs.org/@jridgewell/sourcemap-codec@1.4.15 + debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) + eslint: registry.npmjs.org/eslint@8.53.0 + eslint-compat-utils: registry.npmjs.org/eslint-compat-utils@0.1.2(eslint@8.53.0) + esutils: registry.npmjs.org/esutils@2.0.3 + known-css-properties: registry.npmjs.org/known-css-properties@0.29.0 + postcss: registry.npmjs.org/postcss@8.4.31 + postcss-load-config: registry.npmjs.org/postcss-load-config@3.1.4(postcss@8.4.31) + postcss-safe-parser: registry.npmjs.org/postcss-safe-parser@6.0.0(postcss@8.4.31) + postcss-selector-parser: registry.npmjs.org/postcss-selector-parser@6.0.13 + semver: registry.npmjs.org/semver@7.5.4 + svelte: registry.npmjs.org/svelte@4.2.2 + svelte-eslint-parser: registry.npmjs.org/svelte-eslint-parser@0.33.1(svelte@4.2.2) + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + registry.npmjs.org/eslint-plugin-turbo@1.10.15(eslint@8.43.0): resolution: {integrity: sha512-Tv4QSKV/U56qGcTqS/UgOvb9HcKFmWOQcVh3HEaj7of94lfaENgfrtK48E2CckQf7amhKs1i+imhCsNCKjkQyA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-plugin-turbo/-/eslint-plugin-turbo-1.10.15.tgz} id: registry.npmjs.org/eslint-plugin-turbo/1.10.15 @@ -5754,6 +5721,55 @@ packages: - supports-color dev: true + registry.npmjs.org/eslint@8.53.0: + resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz} + name: eslint + version: 8.53.0 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': registry.npmjs.org/@eslint-community/eslint-utils@4.4.0(eslint@8.53.0) + '@eslint-community/regexpp': registry.npmjs.org/@eslint-community/regexpp@4.10.0 + '@eslint/eslintrc': registry.npmjs.org/@eslint/eslintrc@2.1.3 + '@eslint/js': registry.npmjs.org/@eslint/js@8.53.0 + '@humanwhocodes/config-array': registry.npmjs.org/@humanwhocodes/config-array@0.11.13 + '@humanwhocodes/module-importer': registry.npmjs.org/@humanwhocodes/module-importer@1.0.1 + '@nodelib/fs.walk': registry.npmjs.org/@nodelib/fs.walk@1.2.8 + '@ungap/structured-clone': registry.npmjs.org/@ungap/structured-clone@1.2.0 + ajv: registry.npmjs.org/ajv@6.12.6 + chalk: registry.npmjs.org/chalk@4.1.2 + cross-spawn: registry.npmjs.org/cross-spawn@7.0.3 + debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) + doctrine: registry.npmjs.org/doctrine@3.0.0 + escape-string-regexp: registry.npmjs.org/escape-string-regexp@4.0.0 + eslint-scope: registry.npmjs.org/eslint-scope@7.2.2 + eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys@3.4.3 + espree: registry.npmjs.org/espree@9.6.1 + esquery: registry.npmjs.org/esquery@1.5.0 + esutils: registry.npmjs.org/esutils@2.0.3 + fast-deep-equal: registry.npmjs.org/fast-deep-equal@3.1.3 + file-entry-cache: registry.npmjs.org/file-entry-cache@6.0.1 + find-up: registry.npmjs.org/find-up@5.0.0 + glob-parent: registry.npmjs.org/glob-parent@6.0.2 + globals: registry.npmjs.org/globals@13.23.0 + graphemer: registry.npmjs.org/graphemer@1.4.0 + ignore: registry.npmjs.org/ignore@5.2.4 + imurmurhash: registry.npmjs.org/imurmurhash@0.1.4 + is-glob: registry.npmjs.org/is-glob@4.0.3 + is-path-inside: registry.npmjs.org/is-path-inside@3.0.3 + js-yaml: registry.npmjs.org/js-yaml@4.1.0 + json-stable-stringify-without-jsonify: registry.npmjs.org/json-stable-stringify-without-jsonify@1.0.1 + levn: registry.npmjs.org/levn@0.4.1 + lodash.merge: registry.npmjs.org/lodash.merge@4.6.2 + minimatch: registry.npmjs.org/minimatch@3.1.2 + natural-compare: registry.npmjs.org/natural-compare@1.4.0 + optionator: registry.npmjs.org/optionator@0.9.3 + strip-ansi: registry.npmjs.org/strip-ansi@6.0.1 + text-table: registry.npmjs.org/text-table@0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + registry.npmjs.org/esm-env@1.0.0: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz} name: esm-env @@ -6004,6 +6020,19 @@ packages: merge2: registry.npmjs.org/merge2@1.4.1 micromatch: registry.npmjs.org/micromatch@4.0.5 + registry.npmjs.org/fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz} + name: fast-glob + version: 3.3.2 + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': registry.npmjs.org/@nodelib/fs.stat@2.0.5 + '@nodelib/fs.walk': registry.npmjs.org/@nodelib/fs.walk@1.2.8 + glob-parent: registry.npmjs.org/glob-parent@5.1.2 + merge2: registry.npmjs.org/merge2@1.4.1 + micromatch: registry.npmjs.org/micromatch@4.0.5 + dev: true + registry.npmjs.org/fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz} name: fast-json-stable-stringify @@ -6100,7 +6129,7 @@ packages: version: 3.2.9 dev: true - registry.npmjs.org/follow-redirects@1.15.3(debug@4.3.2): + registry.npmjs.org/follow-redirects@1.15.3(debug@4.3.4): resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz} id: registry.npmjs.org/follow-redirects/1.15.3 name: follow-redirects @@ -6112,7 +6141,7 @@ packages: debug: optional: true dependencies: - debug: registry.npmjs.org/debug@4.3.2 + debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) dev: true registry.npmjs.org/for-each@0.3.3: @@ -6140,6 +6169,17 @@ packages: mime-types: registry.npmjs.org/mime-types@2.1.35 dev: true + registry.npmjs.org/form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz} + name: form-data + version: 4.0.0 + engines: {node: '>= 6'} + dependencies: + asynckit: registry.npmjs.org/asynckit@0.4.0 + combined-stream: registry.npmjs.org/combined-stream@1.0.8 + mime-types: registry.npmjs.org/mime-types@2.1.35 + dev: true + registry.npmjs.org/fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz} name: fraction.js @@ -6201,7 +6241,7 @@ packages: at-least-node: registry.npmjs.org/at-least-node@1.0.0 graceful-fs: registry.npmjs.org/graceful-fs@4.2.11 jsonfile: registry.npmjs.org/jsonfile@6.1.0 - universalify: registry.npmjs.org/universalify@2.0.0 + universalify: registry.npmjs.org/universalify@2.0.1 dev: true registry.npmjs.org/fs.realpath@1.0.0: @@ -6210,6 +6250,15 @@ packages: version: 1.0.0 dev: true + registry.npmjs.org/fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz} + name: fsevents + version: 2.3.2 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + registry.npmjs.org/fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} name: fsevents @@ -6306,20 +6355,12 @@ packages: get-intrinsic: registry.npmjs.org/get-intrinsic@1.2.2 dev: true - registry.npmjs.org/get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz} - name: get-tsconfig - version: 4.7.2 - dependencies: - resolve-pkg-maps: registry.npmjs.org/resolve-pkg-maps@1.0.0 - dev: true - registry.npmjs.org/getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/getos/-/getos-3.2.1.tgz} name: getos version: 3.2.1 dependencies: - async: registry.npmjs.org/async@3.2.4 + async: registry.npmjs.org/async@3.2.5 dev: true registry.npmjs.org/getpass@0.1.7: @@ -6360,25 +6401,6 @@ packages: is-glob: registry.npmjs.org/is-glob@4.0.3 dev: true - registry.npmjs.org/glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz} - name: glob-to-regexp - version: 0.4.1 - dev: false - - registry.npmjs.org/glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/glob/-/glob-7.1.7.tgz} - name: glob - version: 7.1.7 - dependencies: - fs.realpath: registry.npmjs.org/fs.realpath@1.0.0 - inflight: registry.npmjs.org/inflight@1.0.6 - inherits: registry.npmjs.org/inherits@2.0.4 - minimatch: registry.npmjs.org/minimatch@3.1.2 - once: registry.npmjs.org/once@1.4.0 - path-is-absolute: registry.npmjs.org/path-is-absolute@1.0.1 - dev: true - registry.npmjs.org/glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/glob/-/glob-7.2.3.tgz} name: glob @@ -6438,6 +6460,12 @@ packages: define-properties: registry.npmjs.org/define-properties@1.2.1 dev: true + registry.npmjs.org/globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz} + name: globalyzer + version: 0.1.0 + dev: true + registry.npmjs.org/globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/globby/-/globby-11.1.0.tgz} name: globby @@ -6446,7 +6474,7 @@ packages: dependencies: array-union: registry.npmjs.org/array-union@2.1.0 dir-glob: registry.npmjs.org/dir-glob@3.0.1 - fast-glob: registry.npmjs.org/fast-glob@3.3.1 + fast-glob: registry.npmjs.org/fast-glob@3.3.2 ignore: registry.npmjs.org/ignore@5.2.4 merge2: registry.npmjs.org/merge2@1.4.1 slash: registry.npmjs.org/slash@3.0.0 @@ -6459,12 +6487,18 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: registry.npmjs.org/dir-glob@3.0.1 - fast-glob: registry.npmjs.org/fast-glob@3.3.1 + fast-glob: registry.npmjs.org/fast-glob@3.3.2 ignore: registry.npmjs.org/ignore@5.2.4 merge2: registry.npmjs.org/merge2@1.4.1 slash: registry.npmjs.org/slash@4.0.0 dev: true + registry.npmjs.org/globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz} + name: globrex + version: 0.1.2 + dev: true + registry.npmjs.org/gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz} name: gopd @@ -6566,13 +6600,6 @@ packages: has-symbols: registry.npmjs.org/has-symbols@1.0.3 dev: true - registry.npmjs.org/has@1.0.4: - resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/has/-/has-1.0.4.tgz} - name: has - version: 1.0.4 - engines: {node: '>= 0.4.0'} - dev: true - registry.npmjs.org/hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz} name: hasown @@ -6670,14 +6697,6 @@ packages: space-separated-tokens: registry.npmjs.org/space-separated-tokens@2.0.2 dev: false - registry.npmjs.org/history@5.3.0: - resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/history/-/history-5.3.0.tgz} - name: history - version: 5.3.0 - dependencies: - '@babel/runtime': registry.npmjs.org/@babel/runtime@7.23.2 - dev: false - registry.npmjs.org/hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz} name: hosted-git-info @@ -6780,6 +6799,19 @@ packages: resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz} name: import-meta-resolve version: 3.0.0 + dev: true + + registry.npmjs.org/import-meta-resolve@3.1.1: + resolution: {integrity: sha512-qeywsE/KC3w9Fd2ORrRDUw6nS/nLwZpXgfrOc2IILvZYnCaEMd+D56Vfg9k4G29gIeVi3XKql1RQatME8iYsiw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.1.1.tgz} + name: import-meta-resolve + version: 3.1.1 + dev: false + + registry.npmjs.org/import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz} + name: import-meta-resolve + version: 4.0.0 + dev: true registry.npmjs.org/imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz} @@ -7334,15 +7366,6 @@ packages: version: 5.0.1 dev: true - registry.npmjs.org/json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/json5/-/json5-1.0.2.tgz} - name: json5 - version: 1.0.2 - hasBin: true - dependencies: - minimist: registry.npmjs.org/minimist@1.2.8 - dev: true - registry.npmjs.org/json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/json5/-/json5-2.2.3.tgz} name: json5 @@ -7369,7 +7392,7 @@ packages: name: jsonfile version: 6.1.0 dependencies: - universalify: registry.npmjs.org/universalify@2.0.0 + universalify: registry.npmjs.org/universalify@2.0.1 optionalDependencies: graceful-fs: registry.npmjs.org/graceful-fs@4.2.11 dev: true @@ -7431,18 +7454,10 @@ packages: version: 0.27.0 dev: true - registry.npmjs.org/language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz} - name: language-subtag-registry - version: 0.3.22 - dev: true - - registry.npmjs.org/language-tags@1.0.5: - resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz} - name: language-tags - version: 1.0.5 - dependencies: - language-subtag-registry: registry.npmjs.org/language-subtag-registry@0.3.22 + registry.npmjs.org/known-css-properties@0.29.0: + resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz} + name: known-css-properties + version: 0.29.0 dev: true registry.npmjs.org/lazy-ass@1.6.0: @@ -8362,6 +8377,14 @@ packages: version: 3.3.6 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + dev: true + + registry.npmjs.org/nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz} + name: nanoid + version: 3.3.7 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true registry.npmjs.org/napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz} @@ -8396,48 +8419,6 @@ packages: - supports-color dev: false - registry.npmjs.org/next@13.5.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/next/-/next-13.5.4.tgz} - id: registry.npmjs.org/next/13.5.4 - name: next - version: 13.5.4 - engines: {node: '>=16.14.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - sass: - optional: true - dependencies: - '@next/env': registry.npmjs.org/@next/env@13.5.4 - '@swc/helpers': registry.npmjs.org/@swc/helpers@0.5.2 - busboy: registry.npmjs.org/busboy@1.6.0 - caniuse-lite: registry.npmjs.org/caniuse-lite@1.0.30001553 - postcss: registry.npmjs.org/postcss@8.4.31 - react: registry.npmjs.org/react@18.2.0 - react-dom: registry.npmjs.org/react-dom@18.2.0(react@18.2.0) - styled-jsx: registry.npmjs.org/styled-jsx@5.1.1(react@18.2.0) - watchpack: registry.npmjs.org/watchpack@2.4.0 - optionalDependencies: - '@next/swc-darwin-arm64': registry.npmjs.org/@next/swc-darwin-arm64@13.5.4 - '@next/swc-darwin-x64': registry.npmjs.org/@next/swc-darwin-x64@13.5.4 - '@next/swc-linux-arm64-gnu': registry.npmjs.org/@next/swc-linux-arm64-gnu@13.5.4 - '@next/swc-linux-arm64-musl': registry.npmjs.org/@next/swc-linux-arm64-musl@13.5.4 - '@next/swc-linux-x64-gnu': registry.npmjs.org/@next/swc-linux-x64-gnu@13.5.4 - '@next/swc-linux-x64-musl': registry.npmjs.org/@next/swc-linux-x64-musl@13.5.4 - '@next/swc-win32-arm64-msvc': registry.npmjs.org/@next/swc-win32-arm64-msvc@13.5.4 - '@next/swc-win32-ia32-msvc': registry.npmjs.org/@next/swc-win32-ia32-msvc@13.5.4 - '@next/swc-win32-x64-msvc': registry.npmjs.org/@next/swc-win32-x64-msvc@13.5.4 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - dev: false - registry.npmjs.org/nlcst-to-string@3.1.1: resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz} name: nlcst-to-string @@ -8594,17 +8575,6 @@ packages: es-abstract: registry.npmjs.org/es-abstract@1.22.3 dev: true - registry.npmjs.org/object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz} - name: object.groupby - version: 1.0.1 - dependencies: - call-bind: registry.npmjs.org/call-bind@1.0.5 - define-properties: registry.npmjs.org/define-properties@1.2.1 - es-abstract: registry.npmjs.org/es-abstract@1.22.3 - get-intrinsic: registry.npmjs.org/get-intrinsic@1.2.2 - dev: true - registry.npmjs.org/object.hasown@1.1.3: resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz} name: object.hasown @@ -8921,6 +8891,24 @@ packages: dependencies: find-up: registry.npmjs.org/find-up@4.1.0 + registry.npmjs.org/playwright-core@1.39.0: + resolution: {integrity: sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz} + name: playwright-core + version: 1.39.0 + engines: {node: '>=16'} + hasBin: true + + registry.npmjs.org/playwright@1.39.0: + resolution: {integrity: sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz} + name: playwright + version: 1.39.0 + engines: {node: '>=16'} + hasBin: true + dependencies: + playwright-core: registry.npmjs.org/playwright-core@1.39.0 + optionalDependencies: + fsevents: registry.npmjs.org/fsevents@2.3.2 + registry.npmjs.org/postcss-calc@9.0.1(postcss@8.4.21): resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz} id: registry.npmjs.org/postcss-calc/9.0.1 @@ -9476,7 +9464,7 @@ packages: version: 8.4.31 engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: registry.npmjs.org/nanoid@3.3.6 + nanoid: registry.npmjs.org/nanoid@3.3.7 picocolors: registry.npmjs.org/picocolors@1.0.0 source-map-js: registry.npmjs.org/source-map-js@1.0.2 @@ -9542,6 +9530,19 @@ packages: svelte: registry.npmjs.org/svelte@4.2.1 dev: true + registry.npmjs.org/prettier-plugin-svelte@3.0.3(prettier@3.0.3)(svelte@4.2.2): + resolution: {integrity: sha512-dLhieh4obJEK1hnZ6koxF+tMUrZbV5YGvRpf2+OADyanjya5j0z1Llo8iGwiHmFWZVG/hLEw/AJD5chXd9r3XA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.0.3.tgz} + id: registry.npmjs.org/prettier-plugin-svelte/3.0.3 + name: prettier-plugin-svelte + version: 3.0.3 + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 + dependencies: + prettier: registry.npmjs.org/prettier@3.0.3 + svelte: registry.npmjs.org/svelte@4.2.2 + dev: true + registry.npmjs.org/prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz} name: prettier @@ -9660,6 +9661,13 @@ packages: engines: {node: '>=6'} dev: true + registry.npmjs.org/punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz} + name: punycode + version: 2.3.1 + engines: {node: '>=6'} + dev: true + registry.npmjs.org/qs@6.10.4: resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/qs/-/qs-6.10.4.tgz} name: qs @@ -9739,30 +9747,32 @@ packages: version: 0.14.0 engines: {node: '>=0.10.0'} - registry.npmjs.org/react-router-dom@6.3.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz} - id: registry.npmjs.org/react-router-dom/6.3.0 + registry.npmjs.org/react-router-dom@6.18.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Ubrue4+Ercc/BoDkFQfc6og5zRQ4A8YxSO3Knsne+eRbZ+IepAsK249XBH/XaFuOYOYr3L3r13CXTLvYt5JDjw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.18.0.tgz} + id: registry.npmjs.org/react-router-dom/6.18.0 name: react-router-dom - version: 6.3.0 + version: 6.18.0 + engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - history: registry.npmjs.org/history@5.3.0 + '@remix-run/router': registry.npmjs.org/@remix-run/router@1.11.0 react: registry.npmjs.org/react@18.2.0 react-dom: registry.npmjs.org/react-dom@18.2.0(react@18.2.0) - react-router: registry.npmjs.org/react-router@6.3.0(react@18.2.0) + react-router: registry.npmjs.org/react-router@6.18.0(react@18.2.0) dev: false - registry.npmjs.org/react-router@6.3.0(react@18.2.0): - resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz} - id: registry.npmjs.org/react-router/6.3.0 + registry.npmjs.org/react-router@6.18.0(react@18.2.0): + resolution: {integrity: sha512-vk2y7Dsy8wI02eRRaRmOs9g2o+aE72YCx5q9VasT1N9v+lrdB79tIqrjMfByHiY5+6aYkH2rUa5X839nwWGPDg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/react-router/-/react-router-6.18.0.tgz} + id: registry.npmjs.org/react-router/6.18.0 name: react-router - version: 6.3.0 + version: 6.18.0 + engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' dependencies: - history: registry.npmjs.org/history@5.3.0 + '@remix-run/router': registry.npmjs.org/@remix-run/router@1.11.0 react: registry.npmjs.org/react@18.2.0 dev: false @@ -9864,6 +9874,7 @@ packages: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz} name: regenerator-runtime version: 0.14.0 + dev: true registry.npmjs.org/regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz} @@ -10006,12 +10017,6 @@ packages: engines: {node: '>=8'} dev: true - registry.npmjs.org/resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz} - name: resolve-pkg-maps - version: 1.0.0 - dev: true - registry.npmjs.org/resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz} name: resolve @@ -10627,20 +10632,21 @@ packages: tweetnacl: registry.npmjs.org/tweetnacl@0.14.5 dev: true - registry.npmjs.org/start-server-and-test@1.14.0: - resolution: {integrity: sha512-on5ELuxO2K0t8EmNj9MtVlFqwBMxfWOhu4U7uZD1xccVpFlOQKR93CSe0u98iQzfNxRyaNTb/CdadbNllplTsw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.14.0.tgz} + registry.npmjs.org/start-server-and-test@2.0.2: + resolution: {integrity: sha512-4sGS2QmETUwqeBUqtTLP7OqXp3PdDnevaWlPlrFQgn8+7uCgVg4Do7/H/ZhAAVyvnL3DqKyANhnLgcgxrjhrMA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-2.0.2.tgz} name: start-server-and-test - version: 1.14.0 - engines: {node: '>=6'} + version: 2.0.2 + engines: {node: '>=16'} hasBin: true dependencies: + arg: registry.npmjs.org/arg@5.0.2 bluebird: registry.npmjs.org/bluebird@3.7.2 check-more-types: registry.npmjs.org/check-more-types@2.24.0 - debug: registry.npmjs.org/debug@4.3.2 + debug: registry.npmjs.org/debug@4.3.4(supports-color@8.1.1) execa: registry.npmjs.org/execa@5.1.1 lazy-ass: registry.npmjs.org/lazy-ass@1.6.0 ps-tree: registry.npmjs.org/ps-tree@1.2.0 - wait-on: registry.npmjs.org/wait-on@6.0.0(debug@4.3.2) + wait-on: registry.npmjs.org/wait-on@7.1.0(debug@4.3.4) transitivePeerDependencies: - supports-color dev: true @@ -10685,6 +10691,7 @@ packages: name: streamsearch version: 1.1.0 engines: {node: '>=10.0.0'} + dev: true registry.npmjs.org/streamx@2.15.1: resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz} @@ -10867,26 +10874,6 @@ packages: engines: {node: '>=8'} dev: true - registry.npmjs.org/styled-jsx@5.1.1(react@18.2.0): - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz} - id: registry.npmjs.org/styled-jsx/5.1.1 - name: styled-jsx - version: 5.1.1 - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - dependencies: - client-only: registry.npmjs.org/client-only@0.0.1 - react: registry.npmjs.org/react@18.2.0 - dev: false - registry.npmjs.org/stylehacks@6.0.0(postcss@8.4.21): resolution: {integrity: sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz} id: registry.npmjs.org/stylehacks/6.0.0 @@ -10948,8 +10935,8 @@ packages: picocolors: registry.npmjs.org/picocolors@1.0.0 sade: registry.npmjs.org/sade@1.8.1 svelte: registry.npmjs.org/svelte@4.2.1 - svelte-preprocess: registry.npmjs.org/svelte-preprocess@5.0.4(postcss@8.4.21)(svelte@4.2.1)(typescript@5.1.3) - typescript: registry.npmjs.org/typescript@5.1.3 + svelte-preprocess: registry.npmjs.org/svelte-preprocess@5.0.4(postcss@8.4.21)(svelte@4.2.1)(typescript@5.2.2) + typescript: registry.npmjs.org/typescript@5.2.2 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -10962,24 +10949,24 @@ packages: - sugarss dev: true - registry.npmjs.org/svelte-check@3.5.0(postcss@8.4.31)(svelte@4.2.1): - resolution: {integrity: sha512-KHujbn4k17xKYLmtCwv0sKKM7uiHTYcQvXnvrCcNU6a7hcszh99zFTIoiu/Sp/ewAw5aJmillJ1Cs8gKLmcX4A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte-check/-/svelte-check-3.5.0.tgz} - id: registry.npmjs.org/svelte-check/3.5.0 + registry.npmjs.org/svelte-check@3.5.2(postcss@8.4.31)(svelte@4.2.2): + resolution: {integrity: sha512-5a/YWbiH4c+AqAUP+0VneiV5bP8YOk9JL3jwvN+k2PEPLgpu85bjQc5eE67+eIZBBwUEJzmO3I92OqKcqbp3fw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte-check/-/svelte-check-3.5.2.tgz} + id: registry.npmjs.org/svelte-check/3.5.2 name: svelte-check - version: 3.5.0 + version: 3.5.2 hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 dependencies: '@jridgewell/trace-mapping': registry.npmjs.org/@jridgewell/trace-mapping@0.3.20 chokidar: registry.npmjs.org/chokidar@3.5.3 - fast-glob: registry.npmjs.org/fast-glob@3.3.1 + fast-glob: registry.npmjs.org/fast-glob@3.3.2 import-fresh: registry.npmjs.org/import-fresh@3.3.0 picocolors: registry.npmjs.org/picocolors@1.0.0 sade: registry.npmjs.org/sade@1.8.1 - svelte: registry.npmjs.org/svelte@4.2.1 - svelte-preprocess: registry.npmjs.org/svelte-preprocess@5.0.4(postcss@8.4.31)(svelte@4.2.1)(typescript@5.1.3) - typescript: registry.npmjs.org/typescript@5.1.3 + svelte: registry.npmjs.org/svelte@4.2.2 + svelte-preprocess: registry.npmjs.org/svelte-preprocess@5.0.4(postcss@8.4.31)(svelte@4.2.2)(typescript@5.2.2) + typescript: registry.npmjs.org/typescript@5.2.2 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -11032,6 +11019,26 @@ packages: svelte: registry.npmjs.org/svelte@4.2.1 dev: true + registry.npmjs.org/svelte-eslint-parser@0.33.1(svelte@4.2.2): + resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.33.1.tgz} + id: registry.npmjs.org/svelte-eslint-parser/0.33.1 + name: svelte-eslint-parser + version: 0.33.1 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + svelte: ^3.37.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true + dependencies: + eslint-scope: registry.npmjs.org/eslint-scope@7.2.2 + eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys@3.4.3 + espree: registry.npmjs.org/espree@9.6.1 + postcss: registry.npmjs.org/postcss@8.4.31 + postcss-scss: registry.npmjs.org/postcss-scss@4.0.9(postcss@8.4.31) + svelte: registry.npmjs.org/svelte@4.2.2 + dev: true + registry.npmjs.org/svelte-hmr@0.15.3(svelte@4.2.1): resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz} id: registry.npmjs.org/svelte-hmr/0.15.3 @@ -11043,7 +11050,19 @@ packages: dependencies: svelte: registry.npmjs.org/svelte@4.2.1 - registry.npmjs.org/svelte-preprocess@5.0.4(postcss@8.4.21)(svelte@4.2.1)(typescript@5.1.3): + registry.npmjs.org/svelte-hmr@0.15.3(svelte@4.2.2): + resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz} + id: registry.npmjs.org/svelte-hmr/0.15.3 + name: svelte-hmr + version: 0.15.3 + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + dependencies: + svelte: registry.npmjs.org/svelte@4.2.2 + dev: true + + registry.npmjs.org/svelte-preprocess@5.0.4(postcss@8.4.21)(svelte@4.2.1)(typescript@5.2.2): resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz} id: registry.npmjs.org/svelte-preprocess/5.0.4 name: svelte-preprocess @@ -11084,17 +11103,17 @@ packages: typescript: optional: true dependencies: - '@types/pug': registry.npmjs.org/@types/pug@2.0.8 + '@types/pug': registry.npmjs.org/@types/pug@2.0.9 detect-indent: registry.npmjs.org/detect-indent@6.1.0 magic-string: registry.npmjs.org/magic-string@0.27.0 postcss: registry.npmjs.org/postcss@8.4.21 sorcery: registry.npmjs.org/sorcery@0.11.0 strip-indent: registry.npmjs.org/strip-indent@3.0.0 svelte: registry.npmjs.org/svelte@4.2.1 - typescript: registry.npmjs.org/typescript@5.1.3 + typescript: registry.npmjs.org/typescript@5.2.2 dev: true - registry.npmjs.org/svelte-preprocess@5.0.4(postcss@8.4.31)(svelte@4.2.1)(typescript@5.1.3): + registry.npmjs.org/svelte-preprocess@5.0.4(postcss@8.4.31)(svelte@4.2.2)(typescript@5.2.2): resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz} id: registry.npmjs.org/svelte-preprocess/5.0.4 name: svelte-preprocess @@ -11135,14 +11154,14 @@ packages: typescript: optional: true dependencies: - '@types/pug': registry.npmjs.org/@types/pug@2.0.8 + '@types/pug': registry.npmjs.org/@types/pug@2.0.9 detect-indent: registry.npmjs.org/detect-indent@6.1.0 magic-string: registry.npmjs.org/magic-string@0.27.0 postcss: registry.npmjs.org/postcss@8.4.31 sorcery: registry.npmjs.org/sorcery@0.11.0 strip-indent: registry.npmjs.org/strip-indent@3.0.0 - svelte: registry.npmjs.org/svelte@4.2.1 - typescript: registry.npmjs.org/typescript@5.1.3 + svelte: registry.npmjs.org/svelte@4.2.2 + typescript: registry.npmjs.org/typescript@5.2.2 dev: true registry.npmjs.org/svelte2tsx@0.6.23(svelte@4.2.1)(typescript@5.1.3): @@ -11158,6 +11177,22 @@ packages: pascal-case: registry.npmjs.org/pascal-case@3.1.2 svelte: registry.npmjs.org/svelte@4.2.1 typescript: registry.npmjs.org/typescript@5.1.3 + dev: true + + registry.npmjs.org/svelte2tsx@0.6.23(svelte@4.2.1)(typescript@5.2.2): + resolution: {integrity: sha512-3bwd1PuWUA3oEXy8+85zrLDnmJOsVpShpKVAehGWeYsz/66zMihTpRpUN97VVAKTZbO5tP4wnchHUXYs0zOwdw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.6.23.tgz} + id: registry.npmjs.org/svelte2tsx/0.6.23 + name: svelte2tsx + version: 0.6.23 + peerDependencies: + svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 + typescript: ^4.9.4 || ^5.0.0 + dependencies: + dedent-js: registry.npmjs.org/dedent-js@1.0.1 + pascal-case: registry.npmjs.org/pascal-case@3.1.2 + svelte: registry.npmjs.org/svelte@4.2.1 + typescript: registry.npmjs.org/typescript@5.2.2 + dev: false registry.npmjs.org/svelte@4.2.1: resolution: {integrity: sha512-LpLqY2Jr7cRxkrTc796/AaaoMLF/1ax7cto8Ot76wrvKQhrPmZ0JgajiWPmg9mTSDqO16SSLiD17r9MsvAPTmw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte/-/svelte-4.2.1.tgz} @@ -11179,6 +11214,27 @@ packages: magic-string: registry.npmjs.org/magic-string@0.30.5 periscopic: registry.npmjs.org/periscopic@3.1.0 + registry.npmjs.org/svelte@4.2.2: + resolution: {integrity: sha512-My2tytF2e2NnHSpn2M7/3VdXT4JdTglYVUuSuK/mXL2XtulPYbeBfl8Dm1QiaKRn0zoULRnL+EtfZHHP0k4H3A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte/-/svelte-4.2.2.tgz} + name: svelte + version: 4.2.2 + engines: {node: '>=16'} + dependencies: + '@ampproject/remapping': registry.npmjs.org/@ampproject/remapping@2.2.1 + '@jridgewell/sourcemap-codec': registry.npmjs.org/@jridgewell/sourcemap-codec@1.4.15 + '@jridgewell/trace-mapping': registry.npmjs.org/@jridgewell/trace-mapping@0.3.20 + acorn: registry.npmjs.org/acorn@8.11.2 + aria-query: registry.npmjs.org/aria-query@5.3.0 + axobject-query: registry.npmjs.org/axobject-query@3.2.1 + code-red: registry.npmjs.org/code-red@1.0.4 + css-tree: registry.npmjs.org/css-tree@2.3.1 + estree-walker: registry.npmjs.org/estree-walker@3.0.3 + is-reference: registry.npmjs.org/is-reference@3.0.2 + locate-character: registry.npmjs.org/locate-character@3.0.0 + magic-string: registry.npmjs.org/magic-string@0.30.5 + periscopic: registry.npmjs.org/periscopic@3.1.0 + dev: true + registry.npmjs.org/svgo@3.0.2: resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz} name: svgo @@ -11194,13 +11250,6 @@ packages: picocolors: registry.npmjs.org/picocolors@1.0.0 dev: true - registry.npmjs.org/tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz} - name: tapable - version: 2.2.1 - engines: {node: '>=6'} - dev: true - registry.npmjs.org/tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz} name: tar-fs @@ -11293,6 +11342,15 @@ packages: version: 2.3.8 dev: true + registry.npmjs.org/tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz} + name: tiny-glob + version: 0.2.9 + dependencies: + globalyzer: registry.npmjs.org/globalyzer@0.1.0 + globrex: registry.npmjs.org/globrex@0.1.2 + dev: true + registry.npmjs.org/tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz} name: tmp @@ -11339,7 +11397,7 @@ packages: engines: {node: '>=6'} dependencies: psl: registry.npmjs.org/psl@1.9.0 - punycode: registry.npmjs.org/punycode@2.3.0 + punycode: registry.npmjs.org/punycode@2.3.1 universalify: registry.npmjs.org/universalify@0.2.0 url-parse: registry.npmjs.org/url-parse@1.5.10 dev: true @@ -11388,15 +11446,16 @@ packages: typescript: registry.npmjs.org/typescript@5.1.3 dev: true - registry.npmjs.org/tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz} - name: tsconfig-paths - version: 3.14.2 + registry.npmjs.org/ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz} + id: registry.npmjs.org/ts-api-utils/1.0.3 + name: ts-api-utils + version: 1.0.3 + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' dependencies: - '@types/json5': registry.npmjs.org/@types/json5@0.0.29 - json5: registry.npmjs.org/json5@1.0.2 - minimist: registry.npmjs.org/minimist@1.2.8 - strip-bom: registry.npmjs.org/strip-bom@3.0.0 + typescript: registry.npmjs.org/typescript@5.2.2 dev: true registry.npmjs.org/tsconfig-resolver@3.0.1: @@ -11656,6 +11715,14 @@ packages: version: 5.1.3 engines: {node: '>=14.17'} hasBin: true + dev: true + + registry.npmjs.org/typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz} + name: typescript + version: 5.2.2 + engines: {node: '>=14.17'} + hasBin: true registry.npmjs.org/ultrahtml@1.5.2: resolution: {integrity: sha512-qh4mBffhlkiXwDAOxvSGxhL0QEQsTbnP9BozOK3OYPEGvPvdWzvAUaXNtUSMdNsKDtuyjEbyVUPFZ52SSLhLqw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.2.tgz} @@ -11674,13 +11741,6 @@ packages: which-boxed-primitive: registry.npmjs.org/which-boxed-primitive@1.0.2 dev: true - registry.npmjs.org/undici-types@5.25.3: - resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz} - name: undici-types - version: 5.25.3 - dev: true - optional: true - registry.npmjs.org/undici@5.23.0: resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/undici/-/undici-5.23.0.tgz} name: undici @@ -11697,7 +11757,6 @@ packages: engines: {node: '>=14.0'} dependencies: '@fastify/busboy': registry.npmjs.org/@fastify/busboy@2.0.0 - dev: false registry.npmjs.org/unherit@3.0.1: resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/unherit/-/unherit-3.0.1.tgz} @@ -11833,6 +11892,13 @@ packages: engines: {node: '>= 10.0.0'} dev: true + registry.npmjs.org/universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz} + name: universalify + version: 2.0.1 + engines: {node: '>= 10.0.0'} + dev: true + registry.npmjs.org/untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz} name: untildify @@ -11955,10 +12021,11 @@ packages: vfile-message: registry.npmjs.org/vfile-message@3.1.4 dev: false - registry.npmjs.org/vite@4.4.9: - resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/vite/-/vite-4.4.9.tgz} + registry.npmjs.org/vite@4.5.0(@types/node@18.7.16): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/vite/-/vite-4.5.0.tgz} + id: registry.npmjs.org/vite/4.5.0 name: vite - version: 4.4.9 + version: 4.5.0 engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -11985,13 +12052,14 @@ packages: terser: optional: true dependencies: + '@types/node': registry.npmjs.org/@types/node@18.7.16 esbuild: registry.npmjs.org/esbuild@0.18.20 postcss: registry.npmjs.org/postcss@8.4.31 rollup: registry.npmjs.org/rollup@3.29.4 optionalDependencies: fsevents: registry.npmjs.org/fsevents@2.3.3 - registry.npmjs.org/vitefu@0.2.5(vite@4.4.9): + registry.npmjs.org/vitefu@0.2.5(vite@4.5.0): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz} id: registry.npmjs.org/vitefu/0.2.5 name: vitefu @@ -12002,7 +12070,7 @@ packages: vite: optional: true dependencies: - vite: registry.npmjs.org/vite@4.4.9 + vite: registry.npmjs.org/vite@4.5.0(@types/node@18.7.16) registry.npmjs.org/vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz} @@ -12016,15 +12084,15 @@ packages: version: 8.0.0 dev: false - registry.npmjs.org/wait-on@6.0.0(debug@4.3.2): - resolution: {integrity: sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/wait-on/-/wait-on-6.0.0.tgz} - id: registry.npmjs.org/wait-on/6.0.0 + registry.npmjs.org/wait-on@7.1.0(debug@4.3.4): + resolution: {integrity: sha512-U7TF/OYYzAg+OoiT/B8opvN48UHt0QYMi4aD3PjRFpybQ+o6czQF8Ig3SKCCMJdxpBrCalIJ4O00FBof27Fu9Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/wait-on/-/wait-on-7.1.0.tgz} + id: registry.npmjs.org/wait-on/7.1.0 name: wait-on - version: 6.0.0 - engines: {node: '>=10.0.0'} + version: 7.1.0 + engines: {node: '>=12.0.0'} hasBin: true dependencies: - axios: registry.npmjs.org/axios@0.21.4(debug@4.3.2) + axios: registry.npmjs.org/axios@0.27.2(debug@4.3.4) joi: registry.npmjs.org/joi@17.11.0 lodash: registry.npmjs.org/lodash@4.17.21 minimist: registry.npmjs.org/minimist@1.2.8 @@ -12033,16 +12101,6 @@ packages: - debug dev: true - registry.npmjs.org/watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz} - name: watchpack - version: 2.4.0 - engines: {node: '>=10.13.0'} - dependencies: - glob-to-regexp: registry.npmjs.org/glob-to-regexp@0.4.1 - graceful-fs: registry.npmjs.org/graceful-fs@4.2.11 - dev: false - registry.npmjs.org/wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz} name: wcwidth @@ -12369,6 +12427,29 @@ packages: use-sync-external-store: registry.npmjs.org/use-sync-external-store@1.2.0(react@18.2.0) dev: false + registry.npmjs.org/zustand@4.4.6(@types/react@18.2.36)(react@18.2.0): + resolution: {integrity: sha512-Rb16eW55gqL4W2XZpJh0fnrATxYEG3Apl2gfHTyDSE965x/zxslTikpNch0JgNjJA9zK6gEFW8Fl6d1rTZaqgg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/zustand/-/zustand-4.4.6.tgz} + id: registry.npmjs.org/zustand/4.4.6 + name: zustand + version: 4.4.6 + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + dependencies: + '@types/react': registry.npmjs.org/@types/react@18.2.36 + react: registry.npmjs.org/react@18.2.0 + use-sync-external-store: registry.npmjs.org/use-sync-external-store@1.2.0(react@18.2.0) + dev: false + registry.npmjs.org/zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz} name: zwitch diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e36b3997..a75d7de6 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,5 @@ packages: - - "packages/*" - - "examples/*" - - "tooling/*" \ No newline at end of file + - 'packages/*' + - 'examples/*' + - 'tooling/*' + - 'tests/*' diff --git a/tests/playwright/.gitignore b/tests/playwright/.gitignore new file mode 100644 index 00000000..6d284fa6 --- /dev/null +++ b/tests/playwright/.gitignore @@ -0,0 +1,7 @@ +node_modules/ +/test-results/ +/playwright-report/ +/playwright/.cache/ +/test-results/ +/playwright-report/ +/playwright/.cache/ diff --git a/tests/playwright/e2e/constants.ts b/tests/playwright/e2e/constants.ts new file mode 100644 index 00000000..b1ce66b1 --- /dev/null +++ b/tests/playwright/e2e/constants.ts @@ -0,0 +1 @@ +export const FRAMEWORK = process.env.FRAMEWORK; diff --git a/tests/playwright/e2e/edges.spec.ts b/tests/playwright/e2e/edges.spec.ts new file mode 100644 index 00000000..af2cf980 --- /dev/null +++ b/tests/playwright/e2e/edges.spec.ts @@ -0,0 +1,161 @@ +import { test, expect } from '@playwright/test'; + +import { FRAMEWORK } from './constants'; + +test.describe('EDGES', () => { + test.beforeEach(async ({ page }) => { + // Go to the starting url before each test. + await page.goto('/tests/generic/edges/general'); + + // Timeout get's ignored and tests timeout after 200ms ??? + // page.waitForSelector('[data-id="edge-with-class"]', { timeout: 5000 }); + }); + + test.describe('selection', () => { + test('selecting an edge by click', async ({ page }) => { + const edge = page.locator(`[data-id="edge-with-class"]`); + + await expect(edge).toBeAttached(); + await edge.click(); + await expect(edge).toHaveClass(/selected/); + }); + + test('selecting multiple edges by meta-click', async ({ page }) => { + const edge1 = page.locator('[data-id="edge-with-class"]'); + const edge2 = page.locator('[data-id="edge-with-style"]'); + + await expect(edge1).toBeAttached(); + await expect(edge2).toBeAttached(); + + await edge1.click(); + await expect(edge1).toHaveClass(/selected/); + + // FIXME: I cannot get this to work + await page.keyboard.down('MetaLeft'); + await edge2.click(); + await expect(edge2).toHaveClass(/selected/); + + await expect(edge1).toHaveClass(/selected/); + }); + }); + + test.describe('properties', () => { + test('classes get applied', async ({ page }) => { + const edge = page.locator('[data-id="edge-with-class"]'); + + await expect(edge).toHaveClass(/edge-class-test/); + }); + + test('styles get applied', async ({ page }) => { + const edge = page.locator('[data-id="edge-with-style"]').locator(`.${FRAMEWORK}-flow__edge-path`); + + await expect(edge).toHaveCSS('stroke', 'rgb(255, 0, 0)'); + }); + + test('hidden=true hides edge', async ({ page }) => { + const edge = page.locator('#hidden-edge'); + + await expect(edge).not.toBeVisible(); + }); + + test('animated=true add "animated" class', async ({ page }) => { + const edge = page.locator('[data-id="animated-edge"]'); + + await expect(edge).toHaveClass(/animated/); + }); + + test('selectable=false prevents selecting of edges', async ({ page }) => { + const edge = page.locator('[data-id="not-selectable-edge"]'); + + await expect(edge).toBeAttached(); + await expect(edge).not.toHaveClass(/selected/); + + // For some reason these commands do not work + // await expect(edge).toBeInViewport(); + // await edge.click(); + + const edgeBox = await edge.boundingBox(); + + await page.mouse.move(edgeBox!.x + edgeBox!.width * 0.5, edgeBox!.y + edgeBox!.height * 0.5); + await page.mouse.down(); + await page.mouse.up(); + + await expect(edge).not.toHaveClass(/selected/); + }); + + test('deleting edges is possible', async ({ page }) => { + const edge = page.locator('[data-id="edge-with-class"]'); + + await expect(edge).toBeAttached(); + + const edgeBox = await edge.boundingBox(); + + await edge.click(); + await expect(edge).toHaveClass(/selected/); + + await page.keyboard.press('Backspace'); + + await expect(edge).not.toBeAttached(); + }); + + test('deletable=false prevents deleting of edges', async ({ page }) => { + const edge = page.locator('[data-id="not-deletable"]'); + + await expect(edge).toBeAttached(); + + // For some reason these commands do not work + // await expect(edge).toBeInViewport(); + // await edge.click(); + + const edgeBox = await edge.boundingBox(); + + await page.mouse.move(edgeBox!.x + edgeBox!.width * 0.5, edgeBox!.y + edgeBox!.height * 0.5); + await page.mouse.down(); + await page.mouse.up(); + + // TODO: times out on webkit + await expect(edge).toHaveClass(/selected/); + + await page.keyboard.press('Backspace'); + await expect(edge).toBeAttached(); + }); + + test('zIndex sets z-index of edge svgs', async ({ page }) => { + const svg = page.locator('svg', { has: page.locator('[data-id="z-index"]') }); + + await expect(svg).toBeAttached(); + await expect(svg).toHaveCSS('z-index', '3141592'); + }); + + test('aria-lable is working', async ({ page }) => { + const edge = page.locator('[data-id="aria-label"]'); + + await expect(edge).toHaveAttribute('aria-label', 'aria-label-test'); + }); + + test('interactionWidth is working', async ({ page }) => { + const edge = page.locator('[data-id="interaction-width"]'); + + await expect(edge).toBeAttached(); + + const edgeBox = await edge.boundingBox(); + + //FIXME: Negative values are not working. Investigate further + await page.mouse.move(edgeBox!.x + edgeBox!.width * 0.5 + 21, edgeBox!.y + edgeBox!.height * 0.5); + await page.mouse.down(); + await page.mouse.up(); + + // TODO: times out on webkit + await expect(edge).toHaveClass(/selected/); + }); + + test('marker-start, marker-end set markers', async ({ page }) => { + const edge = page.locator('[data-id="markers"]').locator(`.${FRAMEWORK}-flow__edge-path`); + + await expect(edge).toBeAttached(); + + await expect(edge).toHaveAttribute('marker-start', 'url(#1__type=arrowclosed)'); + await expect(edge).toHaveAttribute('marker-end', 'url(#1__type=arrow)'); + }); + }); +}); diff --git a/tests/playwright/e2e/nodes.spec.ts b/tests/playwright/e2e/nodes.spec.ts new file mode 100644 index 00000000..5afa41de --- /dev/null +++ b/tests/playwright/e2e/nodes.spec.ts @@ -0,0 +1,257 @@ +import { test, expect, Locator } from '@playwright/test'; + +import { FRAMEWORK } from './constants'; + +test.describe('NODES', () => { + test.beforeEach(async ({ page }) => { + // Go to the starting url before each test. + await page.goto('/tests/generic/nodes/general'); + }); + + test.describe('selection', () => { + test('selecting a node by click', async ({ page }) => { + const locator = page.locator(`.${FRAMEWORK}-flow__node`).first(); + await locator.click(); + + await expect(locator).toHaveClass(/selected/); + }); + + test('selecting multiple nodes with shift drag', async ({ page }) => { + const nodes = page.locator(`.${FRAMEWORK}-flow__node`); + const firstNode = nodes.first(); + const secondNode = nodes.nth(1); + const thirdNode = nodes.nth(2); + + await expect(firstNode).toBeInViewport(); + await expect(secondNode).toBeInViewport(); + await expect(thirdNode).toBeInViewport(); + + const box = await firstNode.boundingBox(); + + await page.mouse.move(box!.x - 150, box!.y - 25); + await page.keyboard.down('Shift'); + await page.mouse.down(); + await page.mouse.move(box!.x + 275, box!.y + 200); + await page.mouse.up(); + await page.keyboard.up('Shift'); + + await expect(firstNode).toHaveClass(/selected/); + await expect(secondNode).toHaveClass(/selected/); + await expect(thirdNode).toHaveClass(/selected/); + + let selection: Locator | undefined; + if (FRAMEWORK === 'react') { + selection = page.locator('.react-flow__nodesselection'); + } else if (FRAMEWORK === 'svelte') { + selection = page.locator('.svelte-flow__selection'); + } + + if (selection) await expect(selection).toBeInViewport(); + }); + + test('selectable=false prevents selection', async ({ page }) => { + const locator = page.locator(`.${FRAMEWORK}-flow__node`).and(page.locator('[data-id="notSelectable"]')); + await locator.click(); + + await expect(locator).not.toHaveClass(/selected/); + }); + }); + + test.describe('dragging', () => { + test('dragging a node', async ({ page }) => { + const node = page.locator(`.${FRAMEWORK}-flow__node`).first(); + + const transformBeforeMove = await node.evaluate((element) => { + return element.style.transform; + }); + + await node.hover(); + await page.mouse.down(); + await page.mouse.move(500, 500); + await page.mouse.up(); + + const transformAfterMove = await node.evaluate((element) => { + return element.style.transform; + }); + + expect(transformBeforeMove).not.toMatch(transformAfterMove); + }); + + test('draggable=false prevents dragging', async ({ page }) => { + const node = page.locator(`.${FRAMEWORK}-flow__node`).and(page.locator('[data-id="notDraggable"]')); + + const transformBeforeMove = await node.evaluate((element) => { + return element.style.transform; + }); + + await node.hover(); + await page.mouse.down(); + await page.mouse.move(500, 500); + await page.mouse.up(); + + const transformAfterMove = await node.evaluate((element) => { + return element.style.transform; + }); + + expect(transformBeforeMove).toMatch(transformAfterMove); + }); + + test('custom drag handle works', async ({ page }) => { + const node = page.locator(`.${FRAMEWORK}-flow__node`).and(page.locator('[data-id="drag-handle"]')); + const dragHandle = page.locator('.custom-drag-handle'); + + const transformBeforeMove = await node.evaluate((element) => { + return element.style.transform; + }); + + const nodeBox = await node.boundingBox(); + + await page.mouse.move(nodeBox!.x + 10, nodeBox!.y + 10); + await page.mouse.down(); + await page.mouse.move(500, 500); + await page.mouse.up(); + + const transformAfterMove = await node.evaluate((element) => { + return element.style.transform; + }); + + expect(transformBeforeMove).toMatch(transformAfterMove); + + await dragHandle.hover(); + await page.mouse.down(); + await page.mouse.move(500, 500); + await page.mouse.up(); + + const transformAfterDragHandleMove = await node.evaluate((element) => { + return element.style.transform; + }); + + expect(transformBeforeMove).not.toMatch(transformAfterDragHandleMove); + }); + }); + + test.describe('deleting', () => { + test('deleting a node and its edges', async ({ page }) => { + const node = page.locator(`.${FRAMEWORK}-flow__node`).and(page.locator('[data-id="Node-1"]')); + + await node.click(); + await page.keyboard.press('Backspace'); + + await expect(node).not.toBeAttached(); + + const edges = await page.locator(`.${FRAMEWORK}-flow__edge`).all(); + expect(edges).toHaveLength(0); + }); + + // TODO: pressing backspace creates problems on webkit + test('deletable=false prevents deletion', async ({ page }) => { + const node = page.locator(`.${FRAMEWORK}-flow__node`).and(page.locator('[data-id="notDeletable"]')); + + await expect(node).toBeAttached(); + + await node.click(); + await page.keyboard.press('Backspace'); + + await expect(node).toBeAttached(); + }); + }); + + test.describe('connecting', () => { + test('connecting two nodes', async ({ page }) => { + const outputSourceHandle = page.locator(`.${FRAMEWORK}-flow__handle`).and(page.locator('[data-nodeid="Node-1"]')); + const inputSourceHandle = page.locator(`.${FRAMEWORK}-flow__handle`).and(page.locator('[data-nodeid="Node-4"]')); + + await expect(outputSourceHandle).toBeInViewport(); + await expect(inputSourceHandle).toBeInViewport(); + + const edgesBefore = await page.locator(`.${FRAMEWORK}-flow__edge`).all(); + + await outputSourceHandle.hover(); + await page.mouse.down(); + await inputSourceHandle.hover(); + await page.mouse.up(); + + const edgesAfter = await page.locator(`.${FRAMEWORK}-flow__edge`).all(); + expect(edgesAfter).toHaveLength(edgesBefore.length + 1); + }); + + test('connecting two output handles does not work', async ({ page }) => { + const firstOutputHandle = page.locator(`.${FRAMEWORK}-flow__handle`).and(page.locator('[data-nodeid="Node-2"]')); + const secondOutputHandle = page.locator(`.${FRAMEWORK}-flow__handle`).and(page.locator('[data-nodeid="Node-4"]')); + + await expect(firstOutputHandle).toBeInViewport(); + await expect(secondOutputHandle).toBeInViewport(); + + const edgesBefore = await page.locator(`.${FRAMEWORK}-flow__edge`).all(); + + await firstOutputHandle.hover(); + await page.mouse.down(); + await secondOutputHandle.hover(); + await page.mouse.up(); + + const edgesAfter = await page.locator(`.${FRAMEWORK}-flow__edge`).all(); + expect(edgesAfter).toHaveLength(edgesBefore.length); + }); + + test('connecting two input handles does not work', async ({ page }) => { + const firstInputHandle = page.locator(`.${FRAMEWORK}-flow__handle`).and(page.locator('[data-nodeid="Node-1"]')); + const secondInputHandle = page + .locator(`.${FRAMEWORK}-flow__handle`) + .and(page.locator('[data-nodeid="Node-3"]')) + .and(page.locator('.source')); + + await expect(firstInputHandle).toBeInViewport(); + await expect(secondInputHandle).toBeInViewport(); + + const edgesBefore = await page.locator(`.${FRAMEWORK}-flow__edge`).all(); + + await firstInputHandle.hover(); + await page.mouse.down(); + await secondInputHandle.hover(); + await page.mouse.up(); + + const edgesAfter = await page.locator(`.${FRAMEWORK}-flow__edge`).all(); + expect(edgesAfter).toHaveLength(edgesBefore.length); + }); + + test('connectable=false prevents connections', async ({ page }) => { + const outputHandle = page.locator(`.${FRAMEWORK}-flow__handle`).and(page.locator('[data-nodeid="Node-1"]')); + const notConnectableHandle = page + .locator(`.${FRAMEWORK}-flow__handle`) + .and(page.locator('[data-nodeid="notConnectable"]')); + + const notConnectableBox = await notConnectableHandle.boundingBox(); + + await expect(outputHandle).toBeInViewport(); + await expect(notConnectableHandle).toBeInViewport(); + + const edgesBefore = await page.locator(`.${FRAMEWORK}-flow__edge`).all(); + + await outputHandle.hover(); + await page.mouse.down(); + await page.mouse.move(notConnectableBox!.x + 2, notConnectableBox!.y + 2); + await page.mouse.up(); + + const edgesAfter = await page.locator(`.${FRAMEWORK}-flow__edge`).all(); + expect(edgesAfter).toHaveLength(edgesBefore.length); + }); + }); + + test('hidden=true hides the node', async ({ page }) => { + const node = page.locator(`.${FRAMEWORK}-flow__node`).and(page.locator('[data-id="hidden"]')); + + await expect(node).not.toBeInViewport(); + }); + + test('classes get applied', async ({ page }) => { + const node = page.locator(`.${FRAMEWORK}-flow__node`).and(page.locator('[data-id="Node-1"]')); + + await expect(node).toHaveClass(/playwright-test-class-123/); + }); + + test('styles get applied', async ({ page }) => { + const node = page.locator(`.${FRAMEWORK}-flow__node`).and(page.locator('[data-id="Node-1"]')); + + await expect(node).toHaveCSS('background-color', 'rgb(255, 0, 0)'); + }); +}); diff --git a/tests/playwright/e2e/pane.spec.ts b/tests/playwright/e2e/pane.spec.ts new file mode 100644 index 00000000..31777c97 --- /dev/null +++ b/tests/playwright/e2e/pane.spec.ts @@ -0,0 +1,196 @@ +import { test, expect } from '@playwright/test'; + +import { FRAMEWORK } from './constants'; + +const MATCH_ALL_NUMBERS = /[\d\.]+/g; + +// Type "Locator" not exported... +async function getTransform(element) { + const transformString = await element.evaluate((el) => { + return el.style.transform; + }); + + // Parses all numbers in f.ex "translate(590px, 324px) scale(2)"" + const transforms = transformString.match(MATCH_ALL_NUMBERS); + return { + translateX: parseFloat(transforms![0]), + translateY: parseFloat(transforms![1]), + scale: parseFloat(transforms![2]), + }; +} + +test.describe('PANE DEFAULT', () => { + test.beforeEach(async ({ page }) => { + // Go to the starting url before each test. + await page.goto('/tests/generic/pane/general'); + + // Wait till the edges are rendered + await page.waitForSelector('[data-id="first-edge"]', { timeout: 5000 }); + }); + + test.describe('pan & zoom', () => { + test('panning the pane moves it', async ({ page }) => { + const pane = page.locator(`.${FRAMEWORK}-flow__pane`); + const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); + + await expect(pane).toBeAttached(); + + const paneBox = await pane.boundingBox(); + + const transformsBefore = await getTransform(viewport); + + await pane.hover(); + await page.mouse.down(); + // Move pane by 100, 100 + await page.mouse.move(paneBox!.x + paneBox!.width * 0.5 + 100, paneBox!.y + paneBox!.height * 0.5 + 100); + + const transformsAfter = await getTransform(viewport); + + expect(transformsAfter.translateX - transformsBefore.translateX).toBe(100); + expect(transformsAfter.translateY - transformsBefore.translateY).toBe(100); + }); + + test('scrolling the default pane zooms it', async ({ page }) => { + const pane = page.locator(`.${FRAMEWORK}-flow__pane`); + const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); + + await expect(pane).toBeAttached(); + + const transformsBefore = await getTransform(viewport); + + await pane.hover(); + await page.mouse.wheel(0, 100); + + const transformsAfter = await getTransform(viewport); + + expect(transformsAfter.scale).not.toBe(transformsBefore.scale); + }); + }); + + test.describe('minZoom & maxZoom', () => { + test('minZoom works as intended', async ({ page }) => { + const pane = page.locator(`.${FRAMEWORK}-flow__pane`); + const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); + + await expect(pane).toBeAttached(); + + await pane.hover(); + + // Zoom out + await page.mouse.wheel(5000, 5000); + + const transformsMinZoom = await getTransform(viewport); + expect(transformsMinZoom.scale).toBe(0.25); + }); + + test('maxZoom works as intended', async ({ page }) => { + const pane = page.locator(`.${FRAMEWORK}-flow__pane`); + const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); + + await expect(pane).toBeAttached(); + + await pane.hover(); + + // Zoom in + await page.mouse.wheel(-5000, -5000); + + const transformsMaxZoom = await getTransform(viewport); + expect(transformsMaxZoom.scale).toBe(4); + }); + }); + + test.describe('autoPan', () => { + test('autoPanOnNodeDrag works as intended', async ({ page }) => { + const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); + const node = page.locator('[data-id="1"]'); + + await expect(node).toBeAttached(); + + const transformBefore = await getTransform(viewport); + + await node.hover(); + await page.mouse.down(); + await page.mouse.move(0, 0); + await page.waitForTimeout(500); + await page.mouse.move(100, 100); + + const transformAfter = await getTransform(viewport); + + await expect(transformAfter.translateX).toBeGreaterThan(transformBefore.translateX); + await expect(transformAfter.translateY).toBeGreaterThan(transformBefore.translateY); + }); + + test('autoPanOnConnect works as intended', async ({ page }) => { + const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); + const handle = page.locator(`[data-id="1"] .${FRAMEWORK}-flow__handle`); + + await expect(handle).toBeAttached(); + + const transformBefore = await getTransform(viewport); + + await handle.hover(); + await page.mouse.down(); + await page.mouse.move(0, 0); + await page.waitForTimeout(500); + await page.mouse.move(100, 100); + + const transformAfter = await getTransform(viewport); + + await expect(transformAfter.translateX).toBeGreaterThan(transformBefore.translateX); + await expect(transformAfter.translateY).toBeGreaterThan(transformBefore.translateY); + }); + }); +}); + +test.describe('PANE NON-DEFAULT', () => { + test.beforeEach(async ({ page }) => { + // Go to the starting url before each test. + await page.goto('/tests/generic/pane/non-defaults'); + + // Wait till the edges are rendered + await page.waitForSelector('[data-id="first-edge"]', { timeout: 5000 }); + }); + + test.describe('pan & zoom', () => { + test('panOnScroll pans the pane on scrolling', async ({ page }) => { + const pane = page.locator(`.${FRAMEWORK}-flow__pane`); + const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); + + await expect(pane).toBeAttached(); + + const transformsBefore = await getTransform(viewport); + + await pane.hover(); + await page.mouse.wheel(100, 100); + + const transformsAfter = await getTransform(viewport); + + expect(transformsAfter.translateX).not.toBe(transformsBefore.translateX); + expect(transformsAfter.translateY).not.toBe(transformsBefore.translateY); + }); + + test('intialViewport', async ({ page }) => { + const pane = page.locator(`.${FRAMEWORK}-flow__pane`); + const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); + + await expect(pane).toBeAttached(); + + const viewportTransform = await getTransform(viewport); + + expect(viewportTransform.translateX).toBe(1.23); + expect(viewportTransform.translateY).toBe(9.87); + expect(viewportTransform.scale).toBe(1.234); + }); + }); +}); + +test.describe('PANE ACTIVATION KEYS', () => { + test.beforeEach(async ({ page }) => { + // Go to the starting url before each test. + await page.goto('/tests/generic/pane/activation-keys'); + + // Wait till the edges are rendered + await page.waitForSelector('[data-id="first-edge"]', { timeout: 5000 }); + }); + // TODO +}); diff --git a/tests/playwright/package-lock.json b/tests/playwright/package-lock.json new file mode 100644 index 00000000..98e0fdff --- /dev/null +++ b/tests/playwright/package-lock.json @@ -0,0 +1,1377 @@ +{ + "name": "playwright", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "playwright", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@playwright/experimental-ct-react": "^1.39.0", + "@types/react": "^18.2.31", + "@types/react-dom": "^18.2.14", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "typescript": "^5.2.2" + }, + "devDependencies": { + "@playwright/test": "^1.39.0", + "@types/node": "^18.7.16" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", + "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", + "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@playwright/experimental-ct-core": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-core/-/experimental-ct-core-1.39.0.tgz", + "integrity": "sha512-1b/qrlB5A/CdEZns8f2RDkWFmSnGkNyec8n72iinmw07+GHsdMP8fIpazeFB0umxWfo+gPLhkjhTGdB3WXJTBw==", + "dependencies": { + "playwright": "1.39.0", + "playwright-core": "1.39.0", + "vite": "^4.4.10" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@playwright/experimental-ct-react": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-react/-/experimental-ct-react-1.39.0.tgz", + "integrity": "sha512-6GaDVVo6x8P9Jdw3yPbVaEP59nesRsETn3kznHAy+2493VsP3IaVATat2G28z0Sivf/K9Tkh5xRYjiawN0ebgw==", + "dependencies": { + "@playwright/experimental-ct-core": "1.39.0", + "@vitejs/plugin-react": "^4.0.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@playwright/test": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz", + "integrity": "sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==", + "dev": true, + "dependencies": { + "playwright": "1.39.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz", + "integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.6", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz", + "integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz", + "integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz", + "integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/node": { + "version": "18.18.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.6.tgz", + "integrity": "sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w==", + "devOptional": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.9", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz", + "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==" + }, + "node_modules/@types/react": { + "version": "18.2.31", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.31.tgz", + "integrity": "sha512-c2UnPv548q+5DFh03y8lEDeMfDwBn9G3dRwfkrxQMo/dOtRHUUO57k6pHvBIfH/VF4Nh+98mZ5aaSe+2echD5g==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.14", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.14.tgz", + "integrity": "sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz", + "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==" + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz", + "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==", + "dependencies": { + "@babel/core": "^7.22.20", + "@babel/plugin-transform-react-jsx-self": "^7.22.5", + "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "@types/babel__core": "^7.20.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001554", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz", + "integrity": "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.566", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.566.tgz", + "integrity": "sha512-mv+fAy27uOmTVlUULy15U3DVJ+jg+8iyKH1bpwboCRhtDC69GKf1PPTZvEIhCyDr81RFqfxZJYrbgp933a1vtg==" + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/playwright": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz", + "integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==", + "dependencies": { + "playwright-core": "1.39.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz", + "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } +} diff --git a/tests/playwright/package.json b/tests/playwright/package.json new file mode 100644 index 00000000..af0109da --- /dev/null +++ b/tests/playwright/package.json @@ -0,0 +1,27 @@ +{ + "name": "playwright", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test:svelte": "FRAMEWORK=svelte npx playwright test -c playwright.svelte.config.ts", + "test:react": "FRAMEWORK=react npx playwright test -c playwright.react.config.ts", + "test:react:ui": "pnpm run test:react --ui", + "test:svelte:ui": "pnpm run test:svelte --ui" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@playwright/test": "^1.39.0", + "@types/node": "^18.7.16" + }, + "dependencies": { + "@playwright/experimental-ct-react": "^1.39.0", + "@types/react": "^18.2.31", + "@types/react-dom": "^18.2.14", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "typescript": "^5.2.2" + } +} diff --git a/tests/playwright/playwright.react.config.ts b/tests/playwright/playwright.react.config.ts new file mode 100644 index 00000000..c407dd5f --- /dev/null +++ b/tests/playwright/playwright.react.config.ts @@ -0,0 +1,4 @@ +import { defineConfig } from '@playwright/test'; +import { sharedConfigWithPort } from './playwright.shared.config'; + +export default defineConfig(sharedConfigWithPort({ port: 3000, framework: 'react' })); diff --git a/tests/playwright/playwright.shared.config.ts b/tests/playwright/playwright.shared.config.ts new file mode 100644 index 00000000..4649a9fc --- /dev/null +++ b/tests/playwright/playwright.shared.config.ts @@ -0,0 +1,73 @@ +import { PlaywrightTestConfig, devices } from '@playwright/test'; + +type ConfigParams = { + port: number; + framework: string; +}; + +export function sharedConfigWithPort({ port, framework }: ConfigParams): PlaywrightTestConfig { + return { + testDir: './e2e', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: `http://localhost:${port}/`, + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + webServer: { + command: `pnpm --filter=${framework}-examples run dev --port ${port}`, + port, + reuseExistingServer: !process.env.CI, + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + }; +} diff --git a/tests/playwright/playwright.svelte.config.ts b/tests/playwright/playwright.svelte.config.ts new file mode 100644 index 00000000..2c40111f --- /dev/null +++ b/tests/playwright/playwright.svelte.config.ts @@ -0,0 +1,4 @@ +import { defineConfig } from '@playwright/test'; +import { sharedConfigWithPort } from './playwright.shared.config'; + +export default defineConfig(sharedConfigWithPort({ port: 5173, framework: 'svelte' }));