From fcfc347c4f78ea846f400d0ded0241bba1a5766c Mon Sep 17 00:00:00 2001 From: YuJian920 Date: Sun, 20 Mar 2022 22:40:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=9F=BA=E6=9C=AC=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=EF=BC=8CCSS=20in=20JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 47 +-------------- package.json | 4 +- src/components/lib.tsx | 22 +++++++ src/context/index.tsx | 15 +++-- src/index.tsx | 17 +++--- src/pages/App.tsx | 4 +- src/pages/Auth/Login/index.tsx | 5 +- src/pages/Auth/Register/index.tsx | 7 ++- src/pages/Auth/index.tsx | 13 ++-- src/pages/Auth/style.ts | 32 +++++++++- src/pages/Home/index.tsx | 37 +++++++++--- src/pages/Home/style.ts | 9 --- src/pages/Home/style.tsx | 23 +++++++ src/pages/Project/List/index.tsx | 19 ++++++ src/pages/Project/Search/index.tsx | 9 ++- src/pages/Project/index.tsx | 8 ++- src/pages/Project/style.tsx | 6 ++ src/style/{global.less => global.css} | 2 +- src/utils/index.ts | 10 ++-- yarn.lock | 86 +++++++++++++++++++++++++-- 20 files changed, 269 insertions(+), 106 deletions(-) create mode 100644 src/components/lib.tsx delete mode 100644 src/pages/Home/style.ts create mode 100644 src/pages/Home/style.tsx create mode 100644 src/pages/Project/style.tsx rename src/style/{global.less => global.css} (73%) diff --git a/README.md b/README.md index b87cb00..a346fd1 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,3 @@ -# Getting Started with Create React App +# React-Jira -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.\ -You will also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.\ -See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). +基于 React Hook 开发的 Jira 系统 \ No newline at end of file diff --git a/package.json b/package.json index 7544a22..93fee4a 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,12 @@ "@types/react-dom": "^17.0.14", "antd": "^4.19.2", "craco-less": "^2.0.0", - "jira-dev-tool": "^1.7.61", + "dayjs": "^1.11.0", + "jira-dev-tool": "^1.6.59", "qs": "^6.10.3", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-query": "^3.34.16", "react-scripts": "5.0.0", "typescript": "^4.6.2", "web-vitals": "^2.1.4" diff --git a/src/components/lib.tsx b/src/components/lib.tsx new file mode 100644 index 0000000..fc59780 --- /dev/null +++ b/src/components/lib.tsx @@ -0,0 +1,22 @@ +import styled from "@emotion/styled"; +export const Row = styled.div<{ + gap?: number | boolean; + between?: boolean; + marginBottom?: number; +}>` + display: flex; + align-items: center; + justify-content: ${(props) => (props.between ? "space-between" : undefined)}; + margin-bottom: ${(props) => props.marginBottom + "rem"}; + > * { + margin-top: 0 !important; + margin-bottom: 0 !important; + margin-right: ${(props) => + // @ts-nocheck + typeof props.gap === "number" + ? props.gap + "rem" + : props.gap + ? "2rem" + : undefined}; + } +`; diff --git a/src/context/index.tsx b/src/context/index.tsx index 040dc84..5cc5f77 100644 --- a/src/context/index.tsx +++ b/src/context/index.tsx @@ -1,8 +1,13 @@ -import React, { ReactNode } from "react" -import { AuthProvider } from "./auth-context" +import React, { ReactNode } from "react"; +import { QueryClient, QueryClientProvider } from "react-query"; +import { AuthProvider } from "./auth-context"; const AppProviders = ({ children }: { children: ReactNode }) => { - return {children} -} + return ( + + {children} + + ); +}; -export default AppProviders \ No newline at end of file +export default AppProviders; diff --git a/src/index.tsx b/src/index.tsx index 62bd3b9..3057386 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,14 +1,15 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import { loadDevTools } from 'jira-dev-tool' -import AppProviders from './context'; -import App from './pages/App'; -import reportWebVitals from './reportWebVitals'; +import React from "react"; +import ReactDOM from "react-dom"; +import { loadServer, DevTools } from "jira-dev-tool"; +import AppProviders from "./context"; +import App from "./pages/App"; +import reportWebVitals from "./reportWebVitals"; -loadDevTools(() => +loadServer(() => ReactDOM.render( + , @@ -19,4 +20,4 @@ loadDevTools(() => // If you want to start measuring performance in your app, pass a function // to log results (for example: reportWebVitals(console.log)) // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); \ No newline at end of file +reportWebVitals(); diff --git a/src/pages/App.tsx b/src/pages/App.tsx index c93dce7..7b02d05 100644 --- a/src/pages/App.tsx +++ b/src/pages/App.tsx @@ -2,11 +2,11 @@ import React from "react"; import Home from "./Home"; import AuthPage from "./Auth"; import { useAuth } from "../context/auth-context"; -import "../style/global.less" +import "../style/global.css"; const App = () => { const { user } = useAuth(); - return
{user ? : }
; + return
{user ? : }
; }; export default App; diff --git a/src/pages/Auth/Login/index.tsx b/src/pages/Auth/Login/index.tsx index ac9d53d..92ead83 100644 --- a/src/pages/Auth/Login/index.tsx +++ b/src/pages/Auth/Login/index.tsx @@ -1,6 +1,7 @@ import React from "react"; -import { Form, Input, Button } from "antd"; +import { Form, Input } from "antd"; import { useAuth } from "../../../context/auth-context"; +import { LongButton } from "../style"; const { Item } = Form; @@ -20,7 +21,7 @@ const Login = () => { - + 登录 ); diff --git a/src/pages/Auth/Register/index.tsx b/src/pages/Auth/Register/index.tsx index 10adb8a..60ba919 100644 --- a/src/pages/Auth/Register/index.tsx +++ b/src/pages/Auth/Register/index.tsx @@ -1,6 +1,7 @@ import React from "react"; -import { Form, Input, Button } from "antd"; +import { Form, Input } from "antd"; import { useAuth } from "../../../context/auth-context"; +import { LongButton } from "../style"; const { Item } = Form; @@ -23,9 +24,9 @@ const Register = () => { - + ); diff --git a/src/pages/Auth/index.tsx b/src/pages/Auth/index.tsx index 9faec1c..2a9f7d4 100644 --- a/src/pages/Auth/index.tsx +++ b/src/pages/Auth/index.tsx @@ -1,19 +1,22 @@ import React, { useState } from "react"; -import { Divider } from "antd"; +import { Divider, Button } from "antd"; import Login from "./Login"; import Register from "./Register"; -import { Container, ShadowCard } from "./style"; +import { Header, Container, ShadowCard, Background, Title } from "./style"; const AuthPage = () => { const [isRegister, setIsRegister] = useState(false); return ( +
+ + {isRegister ? "请注册" : "请登录"} {isRegister ? : } - setIsRegister(!isRegister)}> - 切换到{isRegister ? "已经有帐号了?直接登录" : "没有账号?注册新账号"} - + ); diff --git a/src/pages/Auth/style.ts b/src/pages/Auth/style.ts index cccba37..802806c 100644 --- a/src/pages/Auth/style.ts +++ b/src/pages/Auth/style.ts @@ -1,5 +1,35 @@ import styled from "@emotion/styled"; -import { Card } from "antd"; +import { Card, Button } from "antd"; +import logo from "../../assets/logo.svg" +import left from "../../assets/left.svg" +import right from "../../assets/right.svg" + +export const LongButton = styled(Button)` + width: 100% +` + +export const Title = styled.h2` + margin-bottom: 2.4rem; + color: rgb(94, 108, 132); +` + +export const Background = styled.div` + position: absolute; + width: 100%; + height: 100%; + background-repeat: no-repeat; + background-attachment: fixed; + background-position: left bottom, right bottom; + background-size: calc(((100vw - 40rem) / 2) - 3.2rem), calc(((100vw - 40rem) / 2) - 3.2rem), cover; + background-image: url(${left}), url(${right}); +` + +export const Header = styled.header` + background: url(${logo}) no-repeat center; + padding: 5rem 0; + background-size: 8rem; + width: 100%; +` export const Container = styled.div` display: flex; diff --git a/src/pages/Home/index.tsx b/src/pages/Home/index.tsx index 9a95485..ce680f4 100644 --- a/src/pages/Home/index.tsx +++ b/src/pages/Home/index.tsx @@ -1,19 +1,42 @@ import React from "react"; import Project from "../Project"; import { useAuth } from "../../context/auth-context"; -import { PageHeader, Main } from "./style"; +import { ReactComponent as SoftwareLogo } from "../../assets/software-logo.svg"; +import { Main, Container, Header, HeaderLeft, HeaderRight } from "./style"; +import { Dropdown, Menu, Button } from "antd"; const Home = () => { - const { logout } = useAuth(); + const { logout, user } = useAuth(); return ( -
- - - + +
+ + +

项目

+

用户

+
+ + + + + + + } + > + + + +
-
+ ); }; diff --git a/src/pages/Home/style.ts b/src/pages/Home/style.ts deleted file mode 100644 index f77a5cd..0000000 --- a/src/pages/Home/style.ts +++ /dev/null @@ -1,9 +0,0 @@ -import styled from "@emotion/styled"; - -export const PageHeader = styled.header` - height: 6rem; -` - -export const Main = styled.main` - height: calc(100vh - 6rem) -` \ No newline at end of file diff --git a/src/pages/Home/style.tsx b/src/pages/Home/style.tsx new file mode 100644 index 0000000..4c2a198 --- /dev/null +++ b/src/pages/Home/style.tsx @@ -0,0 +1,23 @@ +import styled from "@emotion/styled"; +import { Row } from "../../components/lib"; + +export const Container = styled.div` + display: grid; + grid-template-rows: 6rem 1fr; + height: 100vh; +`; + +export const Header = styled(Row)` + padding: 3.2rem; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.1); + z-index: 1; +`; + +export const HeaderLeft = styled(Row)``; + +export const HeaderRight = styled.div``; + +export const Main = styled.main` + display: flex; + overflow: hidden; +`; diff --git a/src/pages/Project/List/index.tsx b/src/pages/Project/List/index.tsx index 36e1c00..24adb10 100644 --- a/src/pages/Project/List/index.tsx +++ b/src/pages/Project/List/index.tsx @@ -1,5 +1,6 @@ import React from "react"; import { Table } from "antd"; +import dayjs from "dayjs"; interface Project { id: string; @@ -7,6 +8,7 @@ interface Project { personId: string; pin: boolean; organization: string; + created: number; } interface User { @@ -32,6 +34,10 @@ const ProjectList = ({ list, users }: ListProps) => { dataIndex: "name", sorter: (a, b) => a.name.localeCompare(b.name), }, + { + title: "部门", + dataIndex: "organization", + }, { title: "负责人", render: (value, project) => { @@ -43,8 +49,21 @@ const ProjectList = ({ list, users }: ListProps) => { ); }, }, + { + title: "创建时间", + render: (value, project) => { + return ( + + {project.created + ? dayjs(project.created).format("YYYY-MM-DD") + : "无"} + + ); + }, + }, ]} dataSource={list} + rowKey="id" > ); }; diff --git a/src/pages/Project/Search/index.tsx b/src/pages/Project/Search/index.tsx index c7ff79a..746ba62 100644 --- a/src/pages/Project/Search/index.tsx +++ b/src/pages/Project/Search/index.tsx @@ -23,13 +23,16 @@ export interface User { const Search = ({ param, setParam, users }: SearchPanelProps) => { return ( -
-
+ + setParam({ ...param, name: evt.target.value })} /> + + -
+
); }; diff --git a/src/pages/Project/index.tsx b/src/pages/Project/index.tsx index ab0f83f..96ebf2a 100644 --- a/src/pages/Project/index.tsx +++ b/src/pages/Project/index.tsx @@ -3,6 +3,7 @@ import { cleanObject, useDebounce, useMount } from "../../utils"; import { useRequest } from "../../utils/request"; import List from "./List"; import SearchPanel from "./Search"; +import { Container } from "./style"; const Project = () => { const [param, setParam] = useState({ name: "", personId: "" }); @@ -13,7 +14,7 @@ const Project = () => { const request = useRequest(); useEffect(() => { - request("/projects", { data: cleanObject(debouncedParam) }).then(setList) + request("/projects", { data: cleanObject(debouncedParam) }).then(setList); }, [debouncedParam]); useMount(() => { @@ -21,10 +22,11 @@ const Project = () => { }); return ( -
+ +

项目列表

-
+ ); }; diff --git a/src/pages/Project/style.tsx b/src/pages/Project/style.tsx new file mode 100644 index 0000000..b04d31b --- /dev/null +++ b/src/pages/Project/style.tsx @@ -0,0 +1,6 @@ +import styled from "@emotion/styled"; + +export const Container = styled.div` + padding: 3.2rem; + width: 100%; +` \ No newline at end of file diff --git a/src/style/global.less b/src/style/global.css similarity index 73% rename from src/style/global.less rename to src/style/global.css index 3f4128e..4a67ecb 100644 --- a/src/style/global.less +++ b/src/style/global.css @@ -1,5 +1,5 @@ html { - font-size: 62.5; + font-size: 62.5%; } html body #root .App { diff --git a/src/utils/index.ts b/src/utils/index.ts index 4bd2757..2a6d9a1 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -24,17 +24,15 @@ export const useMount = (callback: () => void) => { export const isFalsy = (value: unknown) => (value === 0 ? false : !value); +export const isVoid = (value: unknown) => value === undefined || value === null || value === ''; + // 筛选对象空值 -export const cleanObject = (object: object) => { +export const cleanObject = (object: { [key: string]: unknown }) => { const result = { ...object }; Object.keys(object).forEach((key) => { - // @ts-ignore const v = object[key]; - if (isFalsy(v)) { - // @ts-ignore - delete result[key]; - } + if (isVoid(v)) delete result[key]; }); return result; diff --git a/yarn.lock b/yarn.lock index f4fa6eb..d1b075a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1058,7 +1058,7 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.17.8" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== @@ -2895,6 +2895,11 @@ bfj@^7.0.2: hoopy "^0.1.4" tryer "^1.0.1" +big-integer@^1.6.16: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2958,6 +2963,20 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" +broadcast-channel@^3.4.1: + version "3.7.0" + resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-3.7.0.tgz#2dfa5c7b4289547ac3f6705f9c00af8723889937" + integrity sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg== + dependencies: + "@babel/runtime" "^7.7.2" + detect-node "^2.1.0" + js-sha3 "0.8.0" + microseconds "0.2.0" + nano-time "1.0.0" + oblivious-set "1.0.0" + rimraf "3.0.2" + unload "2.2.0" + browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" @@ -3641,7 +3660,7 @@ date-fns@2.x: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== -dayjs@1.x: +dayjs@1.x, dayjs@^1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.0.tgz#009bf7ef2e2ea2d5db2e6583d2d39a4b5061e805" integrity sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug== @@ -3762,7 +3781,7 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -detect-node@^2.0.4: +detect-node@^2.0.4, detect-node@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== @@ -5805,7 +5824,7 @@ jest@^27.4.3: import-local "^3.0.2" jest-cli "^27.5.1" -jira-dev-tool@^1.7.61: +jira-dev-tool@^1.6.13: version "1.7.61" resolved "https://registry.yarnpkg.com/jira-dev-tool/-/jira-dev-tool-1.7.61.tgz#32477c1e0f9f9f46ad5ffd61409ac05a1422c17c" integrity sha512-ym9L6tQAs7Pi9XrGvoOlz0/dpYR23I2J1C0IDIk3E29YySHwYJ5KWWHZIk9dqiFSkDhfr/ae8CbZBhAbfe8EmQ== @@ -5815,6 +5834,21 @@ jira-dev-tool@^1.7.61: react-query "^2.26.3" react-query-devtools "^2.6.3" +jira-dev-tool@^1.6.59: + version "1.6.59" + resolved "https://registry.yarnpkg.com/jira-dev-tool/-/jira-dev-tool-1.6.59.tgz#67a98dba9fc9c976d004f3bea1b0349437a0da17" + integrity sha512-0LsUIP2qMSRzbnlccWeaWOxuh7zN+SHYarcT/YFQE+1mw9k6jbDNCxlxCjrpKfo/BYF8LWL6pmTSvHfDAS0kGg== + dependencies: + antd "^4.9.1" + jira-dev-tool "^1.6.13" + msw "^0.24.1" + react-query "^3.5.10" + +js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -6191,6 +6225,14 @@ match-sorter@^4.1.0: "@babel/runtime" "^7.10.5" remove-accents "0.4.2" +match-sorter@^6.0.2: + version "6.3.1" + resolved "https://registry.yarnpkg.com/match-sorter/-/match-sorter-6.3.1.tgz#98cc37fda756093424ddf3cbc62bfe9c75b92bda" + integrity sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw== + dependencies: + "@babel/runtime" "^7.12.5" + remove-accents "0.4.2" + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -6246,6 +6288,11 @@ micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" +microseconds@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/microseconds/-/microseconds-0.2.0.tgz#233b25f50c62a65d861f978a4a4f8ec18797dc39" + integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA== + mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -6362,6 +6409,13 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +nano-time@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/nano-time/-/nano-time-1.0.0.tgz#b0554f69ad89e22d0907f7a12b0993a5d96137ef" + integrity sha1-sFVPaa2J4i0JB/ehKwmTpdlhN+8= + dependencies: + big-integer "^1.6.16" + nanoid@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" @@ -6558,6 +6612,11 @@ object.values@^1.1.0, object.values@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" +oblivious-set@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.0.0.tgz#c8316f2c2fb6ff7b11b6158db3234c49f733c566" + integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw== + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -7953,6 +8012,15 @@ react-query@^2.26.3: dependencies: "@babel/runtime" "^7.5.5" +react-query@^3.34.16, react-query@^3.5.10: + version "3.34.16" + resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.34.16.tgz#279ea180bcaeaec49c7864b29d1711ee9f152594" + integrity sha512-7FvBvjgEM4YQ8nPfmAr+lJfbW95uyW/TVjFoi2GwCkF33/S8ajx45tuPHPFGWs4qYwPy1mzwxD4IQfpUDrefNQ== + dependencies: + "@babel/runtime" "^7.5.5" + broadcast-channel "^3.4.1" + match-sorter "^6.0.2" + react-refresh@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" @@ -8232,7 +8300,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -9180,6 +9248,14 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== +unload@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/unload/-/unload-2.2.0.tgz#ccc88fdcad345faa06a92039ec0f80b488880ef7" + integrity sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA== + dependencies: + "@babel/runtime" "^7.6.2" + detect-node "^2.0.4" + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"