From aa957a8fa69fbc1e6cf2ecbfd0ecf854d6b59464 Mon Sep 17 00:00:00 2001 From: Simon Larsen Date: Mon, 6 Feb 2023 13:20:41 +0000 Subject: [PATCH] fix lint. --- CommonUI/src/Components/Icon/Icon.tsx | 26 +- .../Components/Workflow/AddNewComponent.tsx | 107 ++++ .../src/Components/Workflow/AddNewNode.tsx | 76 --- .../src/Components/Workflow/Component.tsx | 126 ++++ CommonUI/src/Components/Workflow/Node.tsx | 97 ---- CommonUI/src/Components/Workflow/Workflow.tsx | 139 +++-- Dashboard/package-lock.json | 539 +++++++++++++++++- Dashboard/src/App.tsx | 86 +-- Dashboard/src/Pages/Workflow/View/Builder.tsx | 61 +- Dashboard/src/Pages/Workflow/View/Delete.tsx | 4 +- Dashboard/src/Pages/Workflow/View/Index.tsx | 5 - Dashboard/src/Pages/Workflow/View/Logs.tsx | 2 +- .../src/Pages/Workflow/View/SideMenu.tsx | 5 +- Dashboard/src/Utils/PageMap.ts | 7 +- Dashboard/src/Utils/RouteMap.ts | 4 +- 15 files changed, 982 insertions(+), 302 deletions(-) create mode 100644 CommonUI/src/Components/Workflow/AddNewComponent.tsx delete mode 100644 CommonUI/src/Components/Workflow/AddNewNode.tsx create mode 100644 CommonUI/src/Components/Workflow/Component.tsx delete mode 100644 CommonUI/src/Components/Workflow/Node.tsx diff --git a/CommonUI/src/Components/Icon/Icon.tsx b/CommonUI/src/Components/Icon/Icon.tsx index 1c1eba9f28..2539d27bf6 100644 --- a/CommonUI/src/Components/Icon/Icon.tsx +++ b/CommonUI/src/Components/Icon/Icon.tsx @@ -105,7 +105,7 @@ export enum IconProp { Wrench, TransparentCube, Logs, - Bolt + Bolt, } export enum IconType { @@ -221,16 +221,20 @@ const Icon: FunctionComponent = ({ ); } else if (icon === IconProp.Logs) { return getSvgWrapper( - + ); - } else if (icon === IconProp.Bolt) { return getSvgWrapper( - - - + ); - } else if (icon === IconProp.Chat) { return getSvgWrapper( = ({ ); } else if (icon === IconProp.Workflow) { return getSvgWrapper( - - - + ); } else if (icon === IconProp.TransparentCube) { return getSvgWrapper( diff --git a/CommonUI/src/Components/Workflow/AddNewComponent.tsx b/CommonUI/src/Components/Workflow/AddNewComponent.tsx new file mode 100644 index 0000000000..d660a37f81 --- /dev/null +++ b/CommonUI/src/Components/Workflow/AddNewComponent.tsx @@ -0,0 +1,107 @@ +import React, { FunctionComponent, useState } from 'react'; +import { Connection, Handle, Position } from 'reactflow'; +import Icon, { IconProp } from '../Icon/Icon'; + +export interface NodeDataProp { + isTrigger: boolean; +} + +export interface ComponentProps { + data: NodeDataProp; +} + +const Node: FunctionComponent = (props: ComponentProps) => { + const [isHovering, setIsHovering] = useState(false); + + const handleStyle: React.CSSProperties = { + background: '#cbd5e1', + height: '0.75rem', + width: '0.75rem', + }; + + return ( +
{ + setIsHovering(true); + }} + onMouseOut={() => { + setIsHovering(false); + }} + style={{ + borderStyle: 'dashed', + width: '15rem', + height: '8rem', + padding: '1rem', + borderColor: isHovering ? '#94a3b8' : '#cbd5e1', + borderRadius: '0.25rem', + borderWidth: '2px', + backgroundColor: 'white', + }} + > + {!props.data.isTrigger && ( + {}} + isConnectable={true} + position={Position.Top} + style={handleStyle} + /> + )} + +
+
+ +

+ {props.data.isTrigger + ? 'Add a Trigger' + : 'Add a Component'} +

+

+ Click to add a new{' '} + {props.data.isTrigger ? 'trigger' : 'component'} +

+
+
+
+ ); +}; + +export default Node; diff --git a/CommonUI/src/Components/Workflow/AddNewNode.tsx b/CommonUI/src/Components/Workflow/AddNewNode.tsx deleted file mode 100644 index 0206871a54..0000000000 --- a/CommonUI/src/Components/Workflow/AddNewNode.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, { FunctionComponent, useState } from 'react'; -import { Handle, Position } from 'reactflow'; -import Icon, { IconProp } from '../Icon/Icon'; - -export interface NodeDataProp { - isTrigger: boolean -} - -export interface ComponentProps { - data: NodeDataProp; -} - - -const Node: FunctionComponent = (props: ComponentProps) => { - - const [isHovering, setIsHovering] = useState(false); - - - const handleStyle = { - background: "#cbd5e1", - height: "0.75rem", - width: "0.75rem", - - } - - return ( -
{ - setIsHovering(true) - }} onMouseOut={() => { - setIsHovering(false) - }} style={{ - borderStyle: "dashed", - width: "15rem", height: "8rem", padding: "1rem", borderColor: isHovering ? "#94a3b8" : "#cbd5e1", borderRadius: "0.25rem", borderWidth: "2px", backgroundColor: "white" - } - }> - {!props.data.isTrigger && console.log('handle onConnect', params)} - isConnectable={true} - position={Position.Top} - style={handleStyle} - />} - -
-
- -

{props.data.isTrigger ? "Add a Trigger" : "Add a Component"}

-

Click to add a new {props.data.isTrigger ? "trigger" : "component"}

-
-
-
- - ); -}; - -export default Node; diff --git a/CommonUI/src/Components/Workflow/Component.tsx b/CommonUI/src/Components/Workflow/Component.tsx new file mode 100644 index 0000000000..d9fd0fe9ff --- /dev/null +++ b/CommonUI/src/Components/Workflow/Component.tsx @@ -0,0 +1,126 @@ +import { JSONObject } from 'Common/Types/JSON'; +import React, { FunctionComponent, useState } from 'react'; +import { Handle, Position, Connection } from 'reactflow'; +import Icon, { IconProp } from '../Icon/Icon'; + +export interface NodeDataProp { + nodeData: JSONObject; + title: string; + id: string; + description: string; + icon: IconProp; + isTrigger: boolean; +} + +export interface ComponentProps { + data: NodeDataProp; +} + +const Node: FunctionComponent = (props: ComponentProps) => { + const [isHovering, setIsHovering] = useState(false); + + const handleStyle: React.CSSProperties = { + background: '#4b5563', + height: '0.75rem', + width: '0.75rem', + }; + + return ( +
{ + setIsHovering(true); + }} + onMouseOut={() => { + setIsHovering(false); + }} + style={{ + width: '15rem', + height: '8rem', + padding: '1rem', + borderColor: isHovering ? '#111827' : '#4b5563', + borderRadius: '0.25rem', + borderWidth: '2px', + backgroundColor: 'white', + boxShadow: + '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)', + }} + > + {!props.data.isTrigger && ( + {}} + isConnectable={true} + position={Position.Top} + style={handleStyle} + /> + )} + +
+
+ +

+ {props.data.title} +

+

+ ({props.data.id}) +

+

+ {props.data.description} +

+
+
+ + {}} + isConnectable={true} + position={Position.Bottom} + style={handleStyle} + /> +
+ ); +}; + +export default Node; diff --git a/CommonUI/src/Components/Workflow/Node.tsx b/CommonUI/src/Components/Workflow/Node.tsx deleted file mode 100644 index d7ab6fca99..0000000000 --- a/CommonUI/src/Components/Workflow/Node.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { JSONObject } from 'Common/Types/JSON'; -import React, { FunctionComponent, useState } from 'react'; -import { Handle, Position } from 'reactflow'; -import Icon, { IconProp } from '../Icon/Icon'; - - -export interface NodeDataProp { - nodeData: JSONObject; - title: string; - id: string; - description: string; - icon: IconProp; - isTrigger: boolean -} - -export interface ComponentProps { - data: NodeDataProp; -} - - -const Node: FunctionComponent = (props: ComponentProps) => { - - - const [isHovering, setIsHovering] = useState(false); - - - const handleStyle = { - background: "#4b5563", - height: "0.75rem", - width: "0.75rem", - - } - - return ( -
{ - setIsHovering(true) - }} onMouseOut={() => { - setIsHovering(false) - }} style={{ - width: "15rem", height: "8rem", padding: "1rem", borderColor: isHovering ? "#111827" : "#4b5563", borderRadius: "0.25rem", borderWidth: "2px", backgroundColor: "white", boxShadow: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)" - } - }> - {!props.data.isTrigger && console.log('handle onConnect', params)} - isConnectable={true} - position={Position.Top} - style={handleStyle} - />} - -
-
- -

{props.data.title}

-

({props.data.id})

-

{props.data.description}

-
-
- - -
- - ); -}; - -export default Node; diff --git a/CommonUI/src/Components/Workflow/Workflow.tsx b/CommonUI/src/Components/Workflow/Workflow.tsx index 39c5ca73d1..6c35fe4fec 100644 --- a/CommonUI/src/Components/Workflow/Workflow.tsx +++ b/CommonUI/src/Components/Workflow/Workflow.tsx @@ -1,4 +1,4 @@ -import React, { FunctionComponent, useCallback } from 'react'; +import React, { FunctionComponent, useCallback, useRef } from 'react'; import ReactFlow, { MiniMap, Controls, @@ -9,64 +9,112 @@ import ReactFlow, { MarkerType, Edge, Connection, - updateEdge + updateEdge, + Node, + ProOptions, + NodeTypes, + OnConnect, } from 'reactflow'; // 👇 you need to import the reactflow styles import 'reactflow/dist/style.css'; -import { IconProp } from '../Icon/Icon'; -import Node from './Node'; -import AddNewNode from './AddNewNode'; +import WorkflowComponent from './Component'; +import AddNewComponent from './AddNewComponent'; -const nodeTypes = { - node: Node, - addNewNode: AddNewNode +const nodeTypes: NodeTypes = { + node: WorkflowComponent, + addNewNode: AddNewComponent, }; +const edgeStyle: React.CSSProperties = { + strokeWidth: '2px', + stroke: '#94a3b8', + color: '#94a3b8', +}; -const edgeStyle = { - strokeWidth: "2px", - stroke: "#94a3b8", - color: "#94a3b8", -} - -const newNodeEdge = { - strokeWidth: "2px", - stroke: "#e2e8f0", - color: "#e2e8f0", - backgroundColor: "#e2e8f0", -} - - -const initialNodes = [ - { id: '1', type: 'node', position: { x: 100, y: 100 }, data: { id: 'slack-1', title: "Slack", description: "Open a channel", icon: IconProp.Add, isTrigger: true } }, - { id: '2', type: 'addNewNode', position: { x: 100, y: 500 }, data: { id: 'slack-1', title: "Slack", description: "Open a channel", icon: IconProp.Add, isTrigger: true } }, -]; - -const initialEdges = [{ - id: 'e1-2', source: '1', target: '2', type: 'smoothstep', markerEnd: { - type: MarkerType.Arrow, color: newNodeEdge.color - }, - style: newNodeEdge, -}]; +const newNodeEdgeStyle: React.CSSProperties = { + strokeWidth: '2px', + stroke: '#e2e8f0', + color: '#e2e8f0', + backgroundColor: '#e2e8f0', +}; export interface ComponentProps { - name: string; + initialNodes: Array; + initialEdges: Array; } +const Workflow: FunctionComponent = (props: ComponentProps) => { + const edgeUpdateSuccessful: any = useRef(true); -const Workflow: FunctionComponent = (_props: ComponentProps) => { - const [nodes, _setNodes, onNodesChange] = useNodesState(initialNodes); - const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); - const proOptions = { hideAttribution: true }; - const onConnect = useCallback((params: any) => setEdges((eds) => addEdge(params, eds)), [setEdges]); - const onEdgeUpdate = useCallback( - (oldEdge: Edge, newConnection: Connection) => setEdges((els) => updateEdge(oldEdge, newConnection, els)), + const [nodes, _setNodes, onNodesChange] = useNodesState(props.initialNodes); + const [edges, setEdges, onEdgesChange] = useEdgesState( + props.initialEdges.map((edge: Edge) => { + // add style. + + let isDarkEdge: boolean = true; + + const node: Node | undefined = props.initialNodes.find( + (node: Node) => { + return node.id === edge.target; + } + ); + + if (node && node.type === 'addNewNode') { + isDarkEdge = false; + } + + edge = { + ...edge, + type: 'smoothstep', + markerEnd: { + type: MarkerType.Arrow, + color: isDarkEdge + ? edgeStyle.color?.toString() || '' + : newNodeEdgeStyle.color?.toString() || '', + }, + style: isDarkEdge ? edgeStyle : newNodeEdgeStyle, + }; + return edge; + }) + ); + const proOptions: ProOptions = { hideAttribution: true }; + const onConnect: OnConnect = useCallback( + (params: any) => { + return setEdges((eds: Array) => { + return addEdge(params, eds); + }); + }, + [setEdges] + ); + + const onEdgeUpdateStart: any = useCallback(() => { + edgeUpdateSuccessful.current = false; + }, []); + + const onEdgeUpdate: any = useCallback( + (oldEdge: Edge, newConnection: Connection) => { + edgeUpdateSuccessful.current = true; + setEdges((eds: Array) => { + return updateEdge(oldEdge, newConnection, eds); + }); + }, [] ); + const onEdgeUpdateEnd: any = useCallback((_props: any, edge: Edge) => { + if (!edgeUpdateSuccessful.current) { + setEdges((eds: Array) => { + return eds.filter((e: Edge) => { + return e.id !== edge.id; + }); + }); + } + + edgeUpdateSuccessful.current = true; + }, []); return ( -
+
= (_props: ComponentProps) => onConnect={onConnect} onEdgeUpdate={onEdgeUpdate} nodeTypes={nodeTypes} + onEdgeUpdateStart={onEdgeUpdateStart} + onEdgeUpdateEnd={onEdgeUpdateEnd} >
- ); -} +}; -export default Workflow; \ No newline at end of file +export default Workflow; diff --git a/Dashboard/package-lock.json b/Dashboard/package-lock.json index d1cd1cdfe0..a0e02179c2 100644 --- a/Dashboard/package-lock.json +++ b/Dashboard/package-lock.json @@ -56,6 +56,8 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "peer": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -103,6 +105,20 @@ "multicast-dns": "cli.js" } }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "peer": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@emotion/hash": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", @@ -3413,6 +3429,22 @@ "url": "https://github.com/sponsors/gregberge" } }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-alphanumerical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", @@ -4341,6 +4373,13 @@ "node": ">=6" } }, + "node_modules/jest-watch-typeahead/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true, + "peer": true + }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -4658,6 +4697,15 @@ "node": ">=14" } }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -4835,6 +4883,11 @@ "pino": "bin.js" } }, + "node_modules/typeorm/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -5178,6 +5231,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -6691,6 +6757,11 @@ "postcss": "^8.0.9" } }, + "node_modules/color/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/micromark-util-subtokenize": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", @@ -6806,6 +6877,18 @@ "postcss": "^8.4" } }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -7506,6 +7589,16 @@ "reusify": "^1.0.4" } }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", @@ -7558,6 +7651,27 @@ "node": ">=6.9.0" } }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, "node_modules/escodegen/node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -7905,6 +8019,14 @@ "node": ">= 4.9.1" } }, + "node_modules/locter/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/domexception/node_modules/webidl-conversions": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", @@ -8095,6 +8217,19 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -8608,7 +8743,6 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "peer": true, "engines": { "node": ">=6" } @@ -8793,6 +8927,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "peer": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -8825,6 +8960,22 @@ "postcss": ">=8" } }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -9269,6 +9420,11 @@ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, + "node_modules/node-device-detector/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", "inBundle": true, @@ -9952,6 +10108,13 @@ "resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.1.tgz", "integrity": "sha512-kGZJY+R+WnR5Rk+RPHUMERtb2qBRViIHCBdtUrY+NmwuGb8pQdfTqQiCKPrxpdoycl8KWm2DLdkpoSdt479XoQ==" }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, "node_modules/svgo/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -10188,6 +10351,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "peer": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -10319,6 +10483,13 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -11605,6 +11776,15 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -12856,6 +13036,11 @@ "@types/d3-selection": "*" } }, + "node_modules/fastify/node_modules/pino-std-serializers": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", + "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" + }, "node_modules/@types/prettier": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", @@ -13953,6 +14138,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/hast-util-to-parse5": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz", @@ -14059,6 +14258,11 @@ "postcss": "^8.3" } }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", @@ -15087,6 +15291,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -15382,6 +15598,17 @@ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, + "node_modules/locter/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -17569,6 +17796,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/@types/eslint": { "version": "8.4.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", @@ -18498,6 +18735,13 @@ "tslib": "^2.0.3" } }, + "node_modules/bl/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "optional": true, + "peer": true + }, "node_modules/npm/node_modules/cmd-shim": { "version": "5.0.0", "inBundle": true, @@ -20348,6 +20592,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "peer": true, "engines": { "node": ">=10" }, @@ -20451,6 +20696,21 @@ "node": ">= 0.6" } }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@emotion/utils": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", @@ -20696,6 +20956,12 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/refractor": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/refractor/-/refractor-4.8.0.tgz", @@ -21745,6 +22011,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "peer": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -24178,7 +24445,9 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "peer": true }, "node_modules/supports-color": { "version": "7.2.0", @@ -24580,6 +24849,16 @@ } } }, + "node_modules/postcss-svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -26496,7 +26775,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "devOptional": true + "dev": true }, "node_modules/object-inspect": { "version": "1.12.2", @@ -27100,6 +27379,19 @@ "node": ">= 10" } }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "peer": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/postcss-custom-properties": { "version": "12.1.11", "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", @@ -30809,6 +31101,13 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, "globals": { "version": "13.19.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", @@ -34739,6 +35038,8 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "peer": true, "requires": { "sprintf-js": "~1.0.2" } @@ -35191,6 +35492,13 @@ "safe-buffer": "^5.1.1" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "optional": true, + "peer": true + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -35746,6 +36054,11 @@ "requires": { "color-name": "1.1.3" } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" } } }, @@ -35869,6 +36182,12 @@ "ms": "2.0.0" } }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -36092,6 +36411,13 @@ "fast-deep-equal": "^3.1.3" } }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + }, "schema-utils": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", @@ -37135,6 +37461,17 @@ "source-map": "~0.6.1" }, "dependencies": { + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "peer": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -37800,6 +38137,11 @@ "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, @@ -37970,6 +38312,11 @@ "sonic-boom": "^1.0.2" } }, + "pino-std-serializers": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", + "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" + }, "sonic-boom": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", @@ -39521,7 +39868,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "devOptional": true + "dev": true }, "isexe": { "version": "2.0.0", @@ -40155,6 +40502,13 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + }, "emittery": { "version": "0.10.2", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", @@ -40162,6 +40516,33 @@ "dev": true, "peer": true }, + "jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "peer": true + } + } + }, "jest-regex-util": { "version": "28.0.2", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", @@ -40224,6 +40605,26 @@ } } }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "peer": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true, + "peer": true + }, "slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -40619,6 +41020,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "peer": true, "requires": { "p-locate": "^5.0.0" } @@ -40632,6 +41034,14 @@ "glob": "^8.1.0" }, "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, "glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -40643,6 +41053,14 @@ "minimatch": "^5.0.1", "once": "^1.3.0" } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } } } }, @@ -41601,6 +42019,11 @@ "js-yaml": "^4.1.0" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -43550,6 +43973,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "peer": true, "requires": { "yocto-queue": "^0.1.0" } @@ -43559,6 +43983,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "peer": true, "requires": { "p-limit": "^3.0.2" } @@ -43577,8 +44002,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "peer": true + "dev": true }, "packet-reader": { "version": "1.0.0", @@ -43829,6 +44253,33 @@ "locate-path": "^5.0.0", "path-exists": "^4.0.0" } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } } } }, @@ -43851,6 +44302,44 @@ "requires": { "locate-path": "^3.0.0" } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "peer": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "peer": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "peer": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "peer": true } } }, @@ -44561,6 +45050,13 @@ "svgo": "^2.7.0" }, "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "peer": true + }, "css-tree": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", @@ -46107,6 +46603,12 @@ "ms": "2.0.0" } }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -46448,7 +46950,9 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "peer": true }, "stable": { "version": "0.1.8", @@ -46808,6 +47312,13 @@ "nth-check": "^1.0.2" } }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true, + "peer": true + }, "dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -47348,6 +47859,11 @@ "yargs": "^17.3.1" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -47930,6 +48446,12 @@ "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true } } }, @@ -48741,7 +49263,8 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "dev": true, + "peer": true }, "yup": { "version": "0.32.11", diff --git a/Dashboard/src/App.tsx b/Dashboard/src/App.tsx index 34427ee2d0..6dd84429fc 100644 --- a/Dashboard/src/App.tsx +++ b/Dashboard/src/App.tsx @@ -188,7 +188,7 @@ const App: FunctionComponent = () => { } catch (err) { setError( (err as HTTPErrorResponse).message || - 'Server Error. Please try again' + 'Server Error. Please try again' ); } @@ -271,7 +271,7 @@ const App: FunctionComponent = () => { { { { { { path={RouteMap[PageMap.WORKFLOW_BUILDER]?.toString() || ''} element={ } /> - { } /> - } @@ -488,7 +490,7 @@ const App: FunctionComponent = () => { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { = ( _props: PageComponentProps ): ReactElement => { + const initialNodes: Array = [ + { + id: '1', + type: 'node', + position: { x: 100, y: 100 }, + data: { + id: 'slack-1', + title: 'Slack', + description: 'Open a channel', + icon: IconProp.Add, + isTrigger: true, + }, + }, + { + id: '3', + type: 'node', + position: { x: 100, y: 300 }, + data: { + id: 'slack-1', + title: 'Slack', + description: 'Open a channel', + icon: IconProp.Add, + isTrigger: false, + }, + }, + { + id: '2', + type: 'addNewNode', + position: { x: 100, y: 500 }, + data: { + id: 'slack-1', + title: 'Slack', + description: 'Open a channel', + icon: IconProp.Add, + isTrigger: true, + }, + }, + ]; + + const initialEdges: Array = [ + { + id: 'e1-2', + source: '1', + target: '3', + }, + ]; + const modelId: ObjectID = Navigation.getLastParamAsObjectID(1); return ( @@ -50,11 +99,15 @@ const Delete: FunctionComponent = ( ]} sideMenu={} > - - - + + - ); }; diff --git a/Dashboard/src/Pages/Workflow/View/Delete.tsx b/Dashboard/src/Pages/Workflow/View/Delete.tsx index 658c1bef3e..204c61b876 100644 --- a/Dashboard/src/Pages/Workflow/View/Delete.tsx +++ b/Dashboard/src/Pages/Workflow/View/Delete.tsx @@ -54,9 +54,7 @@ const Delete: FunctionComponent = ( modelType={Workflow} modelId={modelId} onDeleteSuccess={() => { - Navigation.navigate( - RouteMap[PageMap.WORKFLOWS] as Route - ); + Navigation.navigate(RouteMap[PageMap.WORKFLOWS] as Route); }} /> diff --git a/Dashboard/src/Pages/Workflow/View/Index.tsx b/Dashboard/src/Pages/Workflow/View/Index.tsx index f8a6e15b08..efe73b5162 100644 --- a/Dashboard/src/Pages/Workflow/View/Index.tsx +++ b/Dashboard/src/Pages/Workflow/View/Index.tsx @@ -52,8 +52,6 @@ const Delete: FunctionComponent = ( ]} sideMenu={} > - - {/* StatusPage View */} = ( modelId: modelId, }} /> - - - ); }; diff --git a/Dashboard/src/Pages/Workflow/View/Logs.tsx b/Dashboard/src/Pages/Workflow/View/Logs.tsx index 8ddbfb848a..b8e49a9665 100644 --- a/Dashboard/src/Pages/Workflow/View/Logs.tsx +++ b/Dashboard/src/Pages/Workflow/View/Logs.tsx @@ -48,7 +48,7 @@ const Delete: FunctionComponent = ( ]} sideMenu={} > - +
); }; diff --git a/Dashboard/src/Pages/Workflow/View/SideMenu.tsx b/Dashboard/src/Pages/Workflow/View/SideMenu.tsx index 663d765476..d99c8652eb 100644 --- a/Dashboard/src/Pages/Workflow/View/SideMenu.tsx +++ b/Dashboard/src/Pages/Workflow/View/SideMenu.tsx @@ -43,9 +43,7 @@ const DashboardSideMenu: FunctionComponent = ( link={{ title: 'Runs & Logs', to: RouteUtil.populateRouteParams( - RouteMap[ - PageMap.WORKFLOW_LOGS - ] as Route, + RouteMap[PageMap.WORKFLOW_LOGS] as Route, props.modelId ), }} @@ -54,7 +52,6 @@ const DashboardSideMenu: FunctionComponent = ( - = { `/dashboard/${RouteParams.ProjectID}/workflows/${RouteParams.ModelID}/delete` ), - - // logout. [PageMap.LOGOUT]: new Route(`/dashboard/logout`), }; @@ -292,7 +290,7 @@ export class RouteUtil { if ( route.toString() === RouteMap[PageMap.USER_PROFILE]?.toString() || route.toString() === - RouteMap[PageMap.PROJECT_INVITATIONS]?.toString() || + RouteMap[PageMap.PROJECT_INVITATIONS]?.toString() || route.toString() === RouteMap[PageMap.ACTIVE_INCIDENTS]?.toString() ) { return true;