Browse Source

完善基本样式,CSS in JS

redux
YuJian920 3 years ago
parent
commit
fcfc347c4f
  1. 47
      README.md
  2. 4
      package.json
  3. 22
      src/components/lib.tsx
  4. 15
      src/context/index.tsx
  5. 15
      src/index.tsx
  6. 4
      src/pages/App.tsx
  7. 5
      src/pages/Auth/Login/index.tsx
  8. 7
      src/pages/Auth/Register/index.tsx
  9. 13
      src/pages/Auth/index.tsx
  10. 32
      src/pages/Auth/style.ts
  11. 37
      src/pages/Home/index.tsx
  12. 9
      src/pages/Home/style.ts
  13. 23
      src/pages/Home/style.tsx
  14. 19
      src/pages/Project/List/index.tsx
  15. 9
      src/pages/Project/Search/index.tsx
  16. 8
      src/pages/Project/index.tsx
  17. 6
      src/pages/Project/style.tsx
  18. 2
      src/style/global.css
  19. 10
      src/utils/index.ts
  20. 86
      yarn.lock

47
README.md

@ -1,46 +1,3 @@ @@ -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 系统

4
package.json

@ -15,10 +15,12 @@ @@ -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"

22
src/components/lib.tsx

@ -0,0 +1,22 @@ @@ -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};
}
`;

15
src/context/index.tsx

@ -1,8 +1,13 @@ @@ -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 <AuthProvider>{children}</AuthProvider>
}
return (
<QueryClientProvider client={new QueryClient()}>
<AuthProvider>{children}</AuthProvider>
</QueryClientProvider>
);
};
export default AppProviders
export default AppProviders;

15
src/index.tsx

@ -1,14 +1,15 @@ @@ -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(
<React.StrictMode>
<AppProviders>
<DevTools />
<App />
</AppProviders>
</React.StrictMode>,

4
src/pages/App.tsx

@ -2,11 +2,11 @@ import React from "react"; @@ -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 <div>{user ? <Home /> : <AuthPage />}</div>;
return <div className="App">{user ? <Home /> : <AuthPage />}</div>;
};
export default App;

5
src/pages/Auth/Login/index.tsx

@ -1,6 +1,7 @@ @@ -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 = () => { @@ -20,7 +21,7 @@ const Login = () => {
<Input placeholder="密码" type="text" id="password" />
</Item>
<Item>
<Button htmlType="submit" type="primary"></Button>
<LongButton htmlType="submit" type="primary"></LongButton>
</Item>
</Form>
);

7
src/pages/Auth/Register/index.tsx

@ -1,6 +1,7 @@ @@ -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 = () => { @@ -23,9 +24,9 @@ const Register = () => {
<Input placeholder="密码" type="text" id="password" />
</Item>
<Item>
<Button htmlType="submit" type="primary">
<LongButton htmlType="submit" type="primary">
</Button>
</LongButton>
</Item>
</Form>
);

13
src/pages/Auth/index.tsx

@ -1,19 +1,22 @@ @@ -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 (
<Container>
<Header />
<Background />
<ShadowCard>
<Title>{isRegister ? "请注册" : "请登录"}</Title>
{isRegister ? <Register /> : <Login />}
<Divider />
<a onClick={() => setIsRegister(!isRegister)}>
{isRegister ? "已经有帐号了?直接登录" : "没有账号?注册新账号"}
</a>
<Button type="link" onClick={() => setIsRegister(!isRegister)}>
Button{isRegister ? "已经有帐号了?直接登录" : "没有账号?注册新账号"}
</Button>
</ShadowCard>
</Container>
);

32
src/pages/Auth/style.ts

@ -1,5 +1,35 @@ @@ -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;

37
src/pages/Home/index.tsx

@ -1,19 +1,42 @@ @@ -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 (
<div>
<PageHeader>
<button onClick={logout}></button>
</PageHeader>
<Container>
<Header between={true}>
<HeaderLeft gap={true}>
<SoftwareLogo width="18rem" color="rgb(38, 132, 255)" />
<h2></h2>
<h2></h2>
</HeaderLeft>
<HeaderRight>
<Dropdown
overlay={
<Menu>
<Menu.Item key="logout">
<Button type="link" onClick={logout}>
</Button>
</Menu.Item>
</Menu>
}
>
<Button type="link" onClick={(e) => e.preventDefault()}>
Hi, {user?.name}
</Button>
</Dropdown>
</HeaderRight>
</Header>
<Main>
<Project />
</Main>
</div>
</Container>
);
};

9
src/pages/Home/style.ts

@ -1,9 +0,0 @@ @@ -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)
`

23
src/pages/Home/style.tsx

@ -0,0 +1,23 @@ @@ -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;
`;

19
src/pages/Project/List/index.tsx

@ -1,5 +1,6 @@ @@ -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 { @@ -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) => { @@ -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) => { @@ -43,8 +49,21 @@ const ProjectList = ({ list, users }: ListProps) => {
);
},
},
{
title: "创建时间",
render: (value, project) => {
return (
<span>
{project.created
? dayjs(project.created).format("YYYY-MM-DD")
: "无"}
</span>
);
},
},
]}
dataSource={list}
rowKey="id"
></Table>
);
};

9
src/pages/Project/Search/index.tsx

@ -23,13 +23,16 @@ export interface User { @@ -23,13 +23,16 @@ export interface User {
const Search = ({ param, setParam, users }: SearchPanelProps) => {
return (
<Form>
<div>
<Form style={{ marginBottom: "2rem" }} layout="inline">
<Form.Item>
<Input
placeholder="项目名"
type="text"
value={param.name}
onChange={(evt) => setParam({ ...param, name: evt.target.value })}
/>
</Form.Item>
<Form.Item>
<Select
value={param.personId}
onChange={(value) => setParam({ ...param, personId: value })}
@ -41,7 +44,7 @@ const Search = ({ param, setParam, users }: SearchPanelProps) => { @@ -41,7 +44,7 @@ const Search = ({ param, setParam, users }: SearchPanelProps) => {
</Option>
))}
</Select>
</div>
</Form.Item>
</Form>
);
};

8
src/pages/Project/index.tsx

@ -3,6 +3,7 @@ import { cleanObject, useDebounce, useMount } from "../../utils"; @@ -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 = () => { @@ -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 = () => { @@ -21,10 +22,11 @@ const Project = () => {
});
return (
<div>
<Container>
<h1></h1>
<SearchPanel users={users} param={param} setParam={setParam} />
<List list={list} users={users}></List>
</div>
</Container>
);
};

6
src/pages/Project/style.tsx

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
import styled from "@emotion/styled";
export const Container = styled.div`
padding: 3.2rem;
width: 100%;
`

2
src/style/global.less → src/style/global.css

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
html {
font-size: 62.5;
font-size: 62.5%;
}
html body #root .App {

10
src/utils/index.ts

@ -24,17 +24,15 @@ export const useMount = (callback: () => void) => { @@ -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;

86
yarn.lock

@ -1058,7 +1058,7 @@ @@ -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: @@ -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: @@ -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 @@ [email protected]: @@ -3641,7 +3660,7 @@ [email protected]:
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2"
integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==
[email protected]:
[email protected], 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: @@ -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: @@ -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: @@ -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"
[email protected]:
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: @@ -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"
[email protected]:
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: @@ -6246,6 +6288,11 @@ micromatch@^4.0.2, micromatch@^4.0.4:
braces "^3.0.1"
picomatch "^2.2.3"
[email protected]:
version "0.2.0"
resolved "https://registry.yarnpkg.com/microseconds/-/microseconds-0.2.0.tgz#233b25f50c62a65d861f978a4a4f8ec18797dc39"
integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==
[email protected], "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: @@ -6362,6 +6409,13 @@ multicast-dns@^6.0.1:
dns-packet "^1.3.1"
thunky "^1.0.2"
[email protected]:
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: @@ -6558,6 +6612,11 @@ object.values@^1.1.0, object.values@^1.1.5:
define-properties "^1.1.3"
es-abstract "^1.19.1"
[email protected]:
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: @@ -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: @@ -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:
[email protected], 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: @@ -9180,6 +9248,14 @@ universalify@^2.0.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
[email protected]:
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"
[email protected], unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"

Loading…
Cancel
Save