diff --git a/frontend/README.md b/frontend/README.md index d0a0af2d43ee3915404d7161578b7962897d2b26..63e3a54459ef858a8bbda1878fa8167d614b2ce8 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -108,7 +108,6 @@ VisualDL supports the latest version of [Google Chrome](https://www.google.com/c This project is based on following projects: -- [Next.js](https://nextjs.org/) - [React](https://reactjs.org/) - [ECharts](https://echarts.apache.org/) - [wasm-pack](https://rustwasm.github.io/wasm-pack/) diff --git a/frontend/README_cn.md b/frontend/README_cn.md index 22082087fd7a3ab7a23ad7c30b1dfc5b8b26a0a3..0dd1f417612830b8591b133f117bcfb8553fcdbe 100644 --- a/frontend/README_cn.md +++ b/frontend/README_cn.md @@ -108,7 +108,6 @@ VisualDL 支持最新版本的 [Google Chrome](https://www.google.com/chrome/) 本项目基于以下项目: -- [Next.js](https://nextjs.org/) - [React](https://reactjs.org/) - [ECharts](https://echarts.apache.org/) - [wasm-pack](https://rustwasm.github.io/wasm-pack/) diff --git a/frontend/package.json b/frontend/package.json index 17e3abf80634c9b455843e41f9e86a53fc050c1e..6b80af21b2c12cff261fafeaa1f125ec0dcb2d9c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -47,7 +47,7 @@ "eslint-plugin-react-hooks": "4.1.0", "husky": "4.2.5", "lerna": "3.22.1", - "lint-staged": "10.2.13", + "lint-staged": "10.3.0", "prettier": "2.1.1", "rimraf": "3.0.2", "typescript": "4.0.2", diff --git a/frontend/packages/cli/package.json b/frontend/packages/cli/package.json index ebe65a63693e6b1979a2eafa4f59159e69ab1585..3b38d738e4e430d937907af00e31eb32751fed37 100644 --- a/frontend/packages/cli/package.json +++ b/frontend/packages/cli/package.json @@ -41,7 +41,7 @@ "yargs": "15.4.1" }, "devDependencies": { - "@types/node": "14.6.3", + "@types/node": "14.6.4", "@types/yargs": "15.0.5", "cross-env": "7.0.2", "ts-node": "9.0.0", diff --git a/frontend/packages/core/package.json b/frontend/packages/core/package.json index ab2a506a4e7bdcadac11fa1370dcf649d0ea80a8..a429daac506639450989aea612295cc576d5c6e8 100644 --- a/frontend/packages/core/package.json +++ b/frontend/packages/core/package.json @@ -66,14 +66,14 @@ "tippy.js": "6.2.6" }, "devDependencies": { - "@babel/core": "7.11.5", + "@babel/core": "7.11.6", "@babel/preset-react": "7.10.4", "@snowpack/app-scripts-react": "1.10.0", "@snowpack/plugin-dotenv": "2.0.1", "@snowpack/plugin-run-script": "2.1.1", "@svgr/core": "5.4.0", "@testing-library/jest-dom": "5.11.4", - "@testing-library/react": "10.4.9", + "@testing-library/react": "11.0.2", "@types/d3-format": "1.3.1", "@types/echarts": "4.6.5", "@types/file-saver": "2.0.1", diff --git a/frontend/packages/core/public/locales/en/graph.json b/frontend/packages/core/public/locales/en/graph.json index 49d86a7b2a9db46c638c6249eef0fd580dfffbaf..515089df51bb39597f1f456b8736a6ef1a643b80 100644 --- a/frontend/packages/core/public/locales/en/graph.json +++ b/frontend/packages/core/public/locales/en/graph.json @@ -37,6 +37,7 @@ "producer": "Producer", "runtime": "Runtime", "source": "Source", + "subgraph": "Subgraph", "tags": "Tags", "type": "Type", "version": "Version" @@ -45,6 +46,7 @@ "show-attributes": "Show Attributes", "show-initializers": "Show Initializers", "show-node-names": "Show Node Names", + "subgraph": "Select Subgraph", "supported-model": "Supported models: ", "supported-model-list": "PaddlePaddle, ONNX, Keras, Core ML, Caffe, Caffe2, Darknet, MXNet, ncnn, TensorFlow Lite", "upload-model": "Upload Model", diff --git a/frontend/packages/core/public/locales/zh/graph.json b/frontend/packages/core/public/locales/zh/graph.json index 2cd60b8c17267d0039003afb841d834ad6b1b3b2..67f8654912c9957b4b662797aa61a1a569f99186 100644 --- a/frontend/packages/core/public/locales/zh/graph.json +++ b/frontend/packages/core/public/locales/zh/graph.json @@ -37,6 +37,7 @@ "producer": "框架", "runtime": "运行时", "source": "源", + "subgraph": "子图", "tags": "标签", "type": "类型", "version": "版本" @@ -45,6 +46,7 @@ "show-attributes": "显示参数", "show-initializers": "显示初始化参数", "show-node-names": "显示节点名称", + "subgraph": "选择子图", "supported-model": "VisualDL支持:", "supported-model-list": "PaddlePaddle、ONNX、Keras、Core ML、Caffe、Caffe2、Darknet、MXNet、ncnn、TensorFlow Lite", "upload-model": "上传模型", diff --git a/frontend/packages/core/src/components/GraphPage/Graph.tsx b/frontend/packages/core/src/components/GraphPage/Graph.tsx index bdcc30fbe2eb41fb17a3b8d4b80b344075c0253a..43fa41b6e8279cad812f7ffbb219d674b4302502 100644 --- a/frontend/packages/core/src/components/GraphPage/Graph.tsx +++ b/frontend/packages/core/src/components/GraphPage/Graph.tsx @@ -1,4 +1,4 @@ -import type {Documentation, Properties, SearchItem, SearchResult} from '~/resource/graph/types'; +import type {Documentation, OpenedResult, Properties, SearchItem, SearchResult} from '~/resource/graph/types'; import React, {useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'; import {backgroundColor, borderColor, contentHeight, position, primaryColor, rem, size} from '~/utils/style'; @@ -77,10 +77,11 @@ const Loading = styled.div` export type GraphRef = { export(type: 'svg' | 'png'): void; + changeGraph(name: string): void; search(value: string): void; select(item: SearchItem): void; showModelProperties(): void; - showNodeDocumentation: (data: Properties) => void; + showNodeDocumentation(data: Properties): void; }; type GraphProps = { @@ -91,6 +92,7 @@ type GraphProps = { showNames: boolean; horizontal: boolean; onRendered?: () => unknown; + onOpened?: (data: OpenedResult) => unknown; onSearch?: (data: SearchResult) => unknown; onShowModelProperties?: (data: Properties) => unknown; onShowNodeProperties?: (data: Properties) => unknown; @@ -107,6 +109,7 @@ const Graph = React.forwardRef( showNames, horizontal, onRendered, + onOpened, onSearch, onShowModelProperties, onShowNodeProperties, @@ -139,6 +142,8 @@ const Graph = React.forwardRef( return; } return; + case 'opened': + return onOpened?.(data); case 'search': return onSearch?.(data); case 'cancel': @@ -156,7 +161,7 @@ const Graph = React.forwardRef( } } }, - [onRendered, onSearch, onShowModelProperties, onShowNodeProperties, onShowNodeDocumentation] + [onRendered, onOpened, onSearch, onShowModelProperties, onShowNodeProperties, onShowNodeDocumentation] ); const dispatch = useCallback((type: string, data?: unknown) => { iframe.current?.contentWindow?.postMessage( @@ -197,6 +202,9 @@ const Graph = React.forwardRef( export(type) { dispatch('export', type); }, + changeGraph(name) { + dispatch('change-graph', name); + }, search(value) { dispatch('search', value); }, diff --git a/frontend/packages/core/src/components/Icon.tsx b/frontend/packages/core/src/components/Icon.tsx index 6763bd812a5c15ca06bc5e78233440d2c32164ff..8bd936c644dc727ae27bc9976ba24e12964ea41a 100644 --- a/frontend/packages/core/src/components/Icon.tsx +++ b/frontend/packages/core/src/components/Icon.tsx @@ -1,9 +1,19 @@ import React, {FunctionComponent, Suspense, useMemo} from 'react'; import type {WithStyled} from '~/utils/style'; +import styled from 'styled-components'; const PUBLIC_PATH: string = import.meta.env.SNOWPACK_PUBLIC_PATH; +const Wrapper = styled.i` + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; +`; + export type Icons = string; type IconProps = { @@ -15,11 +25,11 @@ const Icon: FunctionComponent = ({type, onClick, classNa const Svg = useMemo(() => React.lazy(() => import(`${PUBLIC_PATH}/icons/${type}.js`)), [type]); return ( - onClick?.()}> + onClick?.()}> - + ); }; diff --git a/frontend/packages/core/src/pages/graph.tsx b/frontend/packages/core/src/pages/graph.tsx index be6ba960ecb12b1bfb5059fd5911deb19074e8af..1c8bb47ec706f7d46ed35095be4bbc60f6a8fffc 100644 --- a/frontend/packages/core/src/pages/graph.tsx +++ b/frontend/packages/core/src/pages/graph.tsx @@ -1,8 +1,9 @@ import Aside, {AsideSection} from '~/components/Aside'; import {BlobResponse, blobFetcher} from '~/utils/fetch'; -import type {Documentation, Properties, SearchItem, SearchResult} from '~/resource/graph/types'; +import type {Documentation, OpenedResult, Properties, SearchItem, SearchResult} from '~/resource/graph/types'; import GraphComponent, {GraphRef} from '~/components/GraphPage/Graph'; import React, {FunctionComponent, useCallback, useEffect, useMemo, useRef, useState} from 'react'; +import Select, {SelectProps} from '~/components/Select'; import {primaryColor, rem, size} from '~/utils/style'; import Button from '~/components/Button'; @@ -26,6 +27,10 @@ const FullWidthButton = styled(Button)` width: 100%; `; +const FullWidthSelect = styled>>>(Select)` + width: 100%; +`; + const ExportButtonWrapper = styled.div` display: flex; justify-content: space-between; @@ -88,6 +93,17 @@ const Graph: FunctionComponent = () => { } }, [data]); + const [modelGraphs, setModelGraphs] = useState([]); + const [selectedGraph, setSelectedGraph] = useState>(''); + const setOpenedModel = useCallback((data: OpenedResult) => { + setModelGraphs(data.graphs); + setSelectedGraph(data.selected || ''); + }, []); + const changeGraph = useCallback((name: string) => { + setSelectedGraph(name); + graph.current?.changeGraph(name); + }, []); + const [search, setSearch] = useState(''); const [searching, setSearching] = useState(false); const [searchResult, setSearchResult] = useState({text: '', result: []}); @@ -167,6 +183,13 @@ const Graph: FunctionComponent = () => { {t('graph:model-properties')} + {modelGraphs.length > 1 && ( + + + + + + )}
@@ -216,6 +239,9 @@ const Graph: FunctionComponent = () => { search, searching, searchResult, + modelGraphs, + selectedGraph, + changeGraph, onSearch, onSelect, showAttributes, @@ -249,6 +275,7 @@ const Graph: FunctionComponent = () => { showNames={showNames} horizontal={horizontal} onRendered={() => setRendered(true)} + onOpened={setOpenedModel} onSearch={data => setSearchResult(data)} onShowModelProperties={data => setModelData(data)} onShowNodeProperties={data => { diff --git a/frontend/packages/core/src/resource/graph/types.ts b/frontend/packages/core/src/resource/graph/types.ts index 2341adc2fa6e564644349b1751db777584a51a31..7753403b1f4816f3aad80c6e9f5d9a8f2adeec85 100644 --- a/frontend/packages/core/src/resource/graph/types.ts +++ b/frontend/packages/core/src/resource/graph/types.ts @@ -33,6 +33,11 @@ export type SearchItem = { id: string; }; +export type OpenedResult = { + graphs: string[]; + selected: string | null; +}; + export type SearchResult = { text: string; result: SearchItem[]; diff --git a/frontend/packages/demo/package.json b/frontend/packages/demo/package.json index 49ffd041949d9f1727489bced2dd0bdb24db7744..dfa14c61d7c8431178a42eb1f4804f642f202bea 100644 --- a/frontend/packages/demo/package.json +++ b/frontend/packages/demo/package.json @@ -34,7 +34,7 @@ "devDependencies": { "@types/express": "4.17.8", "@types/mkdirp": "1.0.1", - "@types/node": "14.6.3", + "@types/node": "14.6.4", "@types/node-fetch": "2.5.7", "@types/rimraf": "3.0.0", "cpy-cli": "3.1.1", diff --git a/frontend/packages/mock/package.json b/frontend/packages/mock/package.json index 70f2610f6fe733c2bb6ce207025de4736944de74..776ed42b06a0ceed884ab87be7c7630ffcfdeedb 100644 --- a/frontend/packages/mock/package.json +++ b/frontend/packages/mock/package.json @@ -42,7 +42,7 @@ "devDependencies": { "@types/express": "4.17.8", "@types/faker": "4.1.12", - "@types/node": "14.6.3", + "@types/node": "14.6.4", "cpy-cli": "3.1.1", "rimraf": "3.0.2", "ts-node": "9.0.0", diff --git a/frontend/packages/netron/package.json b/frontend/packages/netron/package.json index 14263c5dbaa05a3191e18b0cfb908e939014cbf5..64479016365397b54514d5f4ce8117bcdec3acb5 100644 --- a/frontend/packages/netron/package.json +++ b/frontend/packages/netron/package.json @@ -48,8 +48,8 @@ "postcss-loader": "3.0.0", "rimraf": "3.0.2", "sass": "1.26.10", - "sass-loader": "10.0.1", - "terser": "5.2.1", + "sass-loader": "10.0.2", + "terser": "5.3.0", "webpack": "4.44.1", "webpack-cli": "3.3.12" }, diff --git a/frontend/packages/netron/src/index.js b/frontend/packages/netron/src/index.js index 5b68a2320c8bea6f29158dc929fc2717e77be764..a30a4b37fc261efc4a0fa4af3a204b9c79e016aa 100644 --- a/frontend/packages/netron/src/index.js +++ b/frontend/packages/netron/src/index.js @@ -64,6 +64,8 @@ host.BrowserHost = class { return this._view.toggleDirection(data); case 'export': return this._view.export(`${document.title}.${data}`); + case 'change-graph': + return this._view.changeGraph(data); case 'search': return this._view.find(data); case 'select': diff --git a/frontend/packages/netron/src/sidebar.js b/frontend/packages/netron/src/sidebar.js index c927fc6b6aacb538b7ec176e324e9ec52c34d7a9..fc2a3e33c39cc1d7a6b9cb3ff898c164bfe08750 100644 --- a/frontend/packages/netron/src/sidebar.js +++ b/frontend/packages/netron/src/sidebar.js @@ -531,18 +531,17 @@ sidebar.ModelSidebar = class { } } - // TODO: graph select - // if (this._model._graphs.length > 1) { - // let graphSelector = new sidebar.SelectView( - // this._host, - // this._model.graphs.map(g => g.name), - // graph.name - // ); - // graphSelector.on('change', (sender, data) => { - // this._raise('update-active-graph', data); - // }); - // this._addProperty('subgraph', graphSelector); - // } + if (this._model._graphs.length > 1) { + // let graphSelector = new sidebar.SelectView( + // this._host, + // this._model.graphs.map(g => g.name), + // graph.name + // ); + // graphSelector.on('change', (sender, data) => { + // this._raise('update-active-graph', data); + // }); + this._addProperty('subgraph', new sidebar.ValueTextView(this._host, graph.name)); + } if (graph) { if (graph.version) { diff --git a/frontend/packages/netron/src/view.js b/frontend/packages/netron/src/view.js index a6e92a941ac68111287a3c0581e01fce8a243ea6..b3fb77594a91307847a7a4c167924abc98295564 100644 --- a/frontend/packages/netron/src/view.js +++ b/frontend/packages/netron/src/view.js @@ -190,12 +190,20 @@ view.View = class { return this._modelFactoryService.open(context).then(model => { return this._timeout(20).then(() => { const graph = model.graphs.length > 0 ? model.graphs[0] : null; + this._host.message('opened', { + graphs: model.graphs.map(g => g.name || ''), + selected: graph && (graph.name || '') + }); return this._updateGraph(model, graph); }); }); }); } + changeGraph(name) { + this._updateActiveGraph(name); + } + _updateActiveGraph(name) { if (this._model) { const model = this._model; diff --git a/frontend/packages/server/package.json b/frontend/packages/server/package.json index a3fdb1c55935cce39c02cd011cabc8ec787f0dd8..9cfd6dd1bc4eff05dd2b053f0ed8c8aa502c5f07 100644 --- a/frontend/packages/server/package.json +++ b/frontend/packages/server/package.json @@ -47,7 +47,7 @@ "devDependencies": { "@types/enhanced-resolve": "3.0.6", "@types/express": "4.17.8", - "@types/node": "14.6.3", + "@types/node": "14.6.4", "@visualdl/mock": "2.0.0", "cross-env": "7.0.2", "nodemon": "2.0.4", diff --git a/frontend/packages/server/tsconfig.json b/frontend/packages/server/tsconfig.json index bf52cb67a07572255803890ff4165a7e06ca8361..c7ac75610db887879f334bf8ad74c9b1cc036837 100644 --- a/frontend/packages/server/tsconfig.json +++ b/frontend/packages/server/tsconfig.json @@ -6,6 +6,7 @@ "skipLibCheck": true, "esModuleInterop": true, "declaration": true, + "resolveJsonModule": true, "outDir": "dist" }, "files": [ diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 0f0932603e8e27cdbd23999bad24c71f1716d7cb..b0b3a979ac94f3957a680717d78cea79adea2c1d 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -18,13 +18,13 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@7.11.5", "@babel/core@^7.1.0", "@babel/core@^7.10.5", "@babel/core@^7.7.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.5.tgz#6ad96e2f71899ea3f9b651f0a911e85205d1ff6d" - integrity sha512-fsEANVOcZHzrsV6dMVWqpSeXClq3lNbYrfFGme6DE25FQWe7pyeYpXyx9guqUnpy466JLzZ8z4uwSr2iv60V5Q== +"@babel/core@7.11.6": + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" + integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.5" + "@babel/generator" "^7.11.6" "@babel/helper-module-transforms" "^7.11.0" "@babel/helpers" "^7.10.4" "@babel/parser" "^7.11.5" @@ -38,7 +38,7 @@ lodash "^4.17.19" resolve "^1.3.2" semver "^5.4.1" - source-map "^0.6.1" + source-map "^0.5.0" "@babel/core@7.9.0": version "7.9.0" @@ -62,6 +62,28 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.1.0", "@babel/core@^7.10.5", "@babel/core@^7.7.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.5.tgz#6ad96e2f71899ea3f9b651f0a911e85205d1ff6d" + integrity sha512-fsEANVOcZHzrsV6dMVWqpSeXClq3lNbYrfFGme6DE25FQWe7pyeYpXyx9guqUnpy466JLzZ8z4uwSr2iv60V5Q== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.11.5" + "@babel/helper-module-transforms" "^7.11.0" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.11.5" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.11.5" + "@babel/types" "^7.11.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.6.1" + "@babel/generator@^7.11.5", "@babel/generator@^7.9.0": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.5.tgz#a5582773425a468e4ba269d9a1f701fbca6a7a82" @@ -71,6 +93,15 @@ jsesc "^2.5.1" source-map "^0.6.1" +"@babel/generator@^7.11.6": + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" + integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== + dependencies: + "@babel/types" "^7.11.5" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -996,7 +1027,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.11.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== @@ -2583,10 +2614,10 @@ dependencies: defer-to-connect "^2.0.0" -"@testing-library/dom@^7.22.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.24.0.tgz#b50066100947e4d1bd0f2f6855c7ff3f2a8770e2" - integrity sha512-Q83bQctoBse3NbHrUHlLypSp+cIchmpLCtVTG2rgVL2RhzgNOjlYgqH/gmwg3ztHVPADSD3PwtoXRhgU6dfTxQ== +"@testing-library/dom@^7.23.0": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.24.1.tgz#0e8acd042070f2c1b183fbfe5c0d38b3194ad3c0" + integrity sha512-TemHWY59gvzcScGiE5eooZpzYk9GaED0TuuK4WefbIc/DQg0L5wOpnj7MIEeAGF3B7Ekf1kvmVnQ97vwz4Lmhg== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.10.3" @@ -2610,13 +2641,13 @@ lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react@10.4.9": - version "10.4.9" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.4.9.tgz#9faa29c6a1a217bf8bbb96a28bd29d7a847ca150" - integrity sha512-pHZKkqUy0tmiD81afs8xfiuseXfU/N7rAX3iKjeZYje86t9VaB0LrxYVa+OOsvkrveX5jCK3IjajVn2MbePvqA== +"@testing-library/react@11.0.2": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.0.2.tgz#4588cc537085907bd1d98b531eb247dbbf57b1cc" + integrity sha512-iOuNNHt4ZgMH5trSKC4kaWDcKzUOf7e7KQIcu7xvGCd68/w1EegbW89F9T5sZ4IjS0gAXdvOfZbG9ESZ7YjOug== dependencies: - "@babel/runtime" "^7.10.3" - "@testing-library/dom" "^7.22.3" + "@babel/runtime" "^7.11.2" + "@testing-library/dom" "^7.23.0" "@tippyjs/react@4.1.0": version "4.1.0" @@ -2896,11 +2927,16 @@ "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@14.6.3", "@types/node@>= 8": +"@types/node@*", "@types/node@>= 8": version "14.6.3" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.3.tgz#cc4f979548ca4d8e7b90bc0180052ab99ee64224" integrity sha512-pC/hkcREG6YfDfui1FBmj8e20jFU5Exjw4NYDm8kEdrW+mOh0T1Zve8DWKnS7ZIZvgncrctcNCXF4Q2I+loyww== +"@types/node@14.6.4": + version "14.6.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.4.tgz#a145cc0bb14ef9c4777361b7bbafa5cf8e3acb5a" + integrity sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ== + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -9075,10 +9111,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -lint-staged@10.2.13: - version "10.2.13" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.13.tgz#b9c504683470edfc464b7d3fe3845a5a1efcd814" - integrity sha512-conwlukNV6aL9SiMWjFtDp5exeDnTMekdNPDZsKGnpfQuHcO0E3L3Bbf58lcR+M7vk6LpCilxDAVks/DDVBYlA== +lint-staged@10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.3.0.tgz#388c3d440590c45c339e7163f669ea69ae90b1e0" + integrity sha512-an3VgjHqmJk0TORB/sdQl0CTkRg4E5ybYCXTTCSJ5h9jFwZbcgKIx5oVma5e7wp/uKt17s1QYFmYqT9MGVosGw== dependencies: chalk "^4.1.0" cli-truncate "^2.1.0" @@ -9895,7 +9931,7 @@ netmask@^1.0.6: netron@PeterPanZH/netron: version "4.4.2" - resolved "https://codeload.github.com/PeterPanZH/netron/tar.gz/9ed207c03a4d4137f6ee0a66655665d249a6cb2a" + resolved "https://codeload.github.com/PeterPanZH/netron/tar.gz/b2068aa97dd79c4d60b9a3a1a1d2e5aa8b06eae4" dependencies: d3 "5.16.0" dagre "0.8.5" @@ -12180,15 +12216,15 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass-loader@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.1.tgz#10c0364d8034f22fee25ddcc9eded20f99bbe3b4" - integrity sha512-b2PSldKVTS3JcFPHSrEXh3BeAfR7XknGiGCAO5aHruR3Pf3kqLP3Gb2ypXLglRrAzgZkloNxLZ7GXEGDX0hBUQ== +sass-loader@10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.2.tgz#c7b73010848b264792dd45372eea0b87cba4401e" + integrity sha512-wV6NDUVB8/iEYMalV/+139+vl2LaRFlZGEd5/xmdcdzQcgmis+npyco6NsDTVOlNA3y2NV9Gcz+vHyFMIT+ffg== dependencies: klona "^2.0.3" loader-utils "^2.0.0" neo-async "^2.6.2" - schema-utils "^2.7.0" + schema-utils "^2.7.1" semver "^7.3.2" sass@1.26.10: @@ -13168,10 +13204,10 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.2.1.tgz#40b971b8d28b4fe98c9e8c0d073ab48e7bb96cd8" - integrity sha512-/AOtjRtAMNGO0fIF6m8HfcvXTw/2AKpsOzDn36tA5RfhRdeXyb4RvHxJ5Pah7iL6dFkLk+gOnCaNHGwJPl6TrQ== +terser@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.0.tgz#c481f4afecdcc182d5e2bdd2ff2dc61555161e81" + integrity sha512-XTT3D3AwxC54KywJijmY2mxZ8nJiEjBHVYzq8l9OaYuRFWeQNBwvipuzzYEP4e+/AVcd1hqG/CqgsdIRyT45Fg== dependencies: commander "^2.20.0" source-map "~0.6.1"