From 599a89449bb53b724c5c819b4d06fc422f743c28 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 11:31:02 +0700 Subject: [PATCH 001/324] feat: init responsive mode --- src/component/BreadcumbComponent.js | 4 +- src/index.css | 7 + src/pages/About/About.js | 2 +- src/pages/App/App.js | 1 + src/pages/App/DesktopLayout.js | 416 +++++++++++++++++++++++----- src/pages/Home/Home.js | 2 +- src/pages/Membership/Membership.js | 3 +- src/pages/Product/Product.js | 118 ++++---- src/store/ui.js | 18 +- 9 files changed, 438 insertions(+), 133 deletions(-) diff --git a/src/component/BreadcumbComponent.js b/src/component/BreadcumbComponent.js index e5690ad..75b4494 100644 --- a/src/component/BreadcumbComponent.js +++ b/src/component/BreadcumbComponent.js @@ -6,8 +6,8 @@ export const BreadcumbComponent = (props) => { return (
- {props.data.map((e) => ( - + {props.data.map((e, index) => ( + {e.name} diff --git a/src/index.css b/src/index.css index b244ccd..e81bbc3 100644 --- a/src/index.css +++ b/src/index.css @@ -46,3 +46,10 @@ code { background: #2D9CDB !important; } +.transparent { + background: transparent +} + +.ppob-container { + padding: 14px 14px 14px 14px; +} diff --git a/src/pages/About/About.js b/src/pages/About/About.js index 72330e5..242c868 100644 --- a/src/pages/About/About.js +++ b/src/pages/About/About.js @@ -2,7 +2,7 @@ import React from "react"; import {PageHeader} from "antd"; export const About = () => { - return
+ return
{ diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index a0156f5..d41f7d7 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -1,14 +1,17 @@ import React, {useState} from "react"; -import {Button, Layout, Menu, Popover, Typography,} from "antd"; +import {Button, Drawer, Layout, Menu, Popover, Typography,} from "antd"; import {MenuList} from "./MenuList"; import {Link} from "react-router-dom"; -import {PlusSquareOutlined, UserOutlined,} from "@ant-design/icons"; +import {CalendarOutlined, HomeOutlined, MenuOutlined, UserOutlined,} from "@ant-design/icons"; import {AppRoute} from "../../routes/app"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; const {Text, Paragraph} = Typography; const {Header, Content, Sider} = Layout; -export const DesktopLayout = () => { +export const DesktopLayout = observer(() => { + const store = useStore(); const [clicked, setClicked] = useState(false); return ( @@ -23,7 +26,7 @@ export const DesktopLayout = () => { height: "100vh", }} > - {
{ }}/> - + } + + {store.ui.mediaQuery.isMobile && ( + { + store.ui.toggleLeftDrawerIsShown() + console.log("clicked"); + }} + visible={store.ui.leftDrawerIsShown} + key={"dashboard-drawer"} + bodyStyle={{ + padding: 0, + paddingTop: 20, + }} + > +
+ + + + + Home + + + + + + Membership + + + + + + Product + + + + + + Transaction + + + + + + About + + + + +
+
+ )}
- - +
- - - Profile - - - + } onClick={() => { - // store.authentication.logout(); - // return history.push("/login"); + store.ui.toggleLeftDrawerIsShown(); + console.log("apa") + }} + /> +
- Sign out - - - } - title={ - - info@bangun-kreatif.com - {/*{store.userData.email}{" "}*/} - - Administrator - {/*{store.userData.role}*/} - - - } - trigger="click" - visible={clicked} - onVisibleChange={() => setClicked(!clicked)} - > -
+ + + + Profile + + + { + // store.authentication.logout(); + // return history.push("/login"); + }} + > + Sign out + + + } + title={ + + {/*{store.user.data.email}{" "}*/} + {/**/} + {/* {store.authentication.userData.full_name}*/} + {/**/} + + } + trigger="click" + visible={clicked} + onVisibleChange={() => setClicked(!clicked)} + > +
+
+ {/**/} +
+ )} + + {store.ui.mediaQuery.isDesktop && ( +
+
+
+ + + + Profile + + + { + // store.authentication.logout(); + // return history.push("/login"); + }} + > + Sign out + + + } + title={ + + {store.user.data.email}{" "} + + {/*{store.authentication.userData.full_name}*/} + + + } + trigger="click" + visible={clicked} + onVisibleChange={() => setClicked(!clicked)} + > +
+ )}
- + + + + + +
); -}; +}); diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index 198586b..5a96c09 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -4,7 +4,7 @@ import {store} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; export const Home = observer(() => { - return
+ return
{ } return ( -
+
{store.ui.mediaQuery.isDesktop && ( @@ -201,7 +201,6 @@ export const Membership = observer(() => { dataSource={store.membership.data} style={{padding: 0}} renderItem={(item) => { - console.log(item, "item ->"); return (
{ - const callback = (key) => { - console.log(key); - }; - const routeData = [ - { - route: "/app/home", - name: "Home", - }, - { - route: "/app/product", - name: Product, - }, - ]; - return ( -
- - - - - - - - - - - - - - - - - Game Voucher - - - Product - - - Prduct - - - Prdct - - - -
- ); + const callback = (key) => { + console.log(key); + }; + const routeData = [ + { + route: "/app/home", + name: "Home", + }, + { + route: "/app/product", + name: Product, + }, + ]; + return ( +
+ + + + + + + + + + + + + + + + + Game Voucher + + + Product + + + Prduct + + + Prdct + + + +
+ ); }; diff --git a/src/store/ui.js b/src/store/ui.js index 0aaf93a..5bf55b1 100644 --- a/src/store/ui.js +++ b/src/store/ui.js @@ -1,12 +1,11 @@ import {makeAutoObservable} from "mobx"; export class UI { - mediaQuery = { - isMobile: false, - isDesktop: true - }; - + mediaQuery = {}; testValue = "Test Mobx"; + leftDrawerIsShown = false; + params = {}; + baseUrl = '/app'; constructor(ctx) { this.ctx = ctx; @@ -22,4 +21,13 @@ export class UI { this.mediaQuery = data; } }; + + toggleLeftDrawerIsShown() { + console.log('what') + this.leftDrawerIsShown = !this.leftDrawerIsShown; + } + + setParams(data) { + this.params = data; + }; } From 5016f9068dc310d1f668cdb4a962753d98815d9f Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 12:53:55 +0700 Subject: [PATCH 002/324] fix: responsive each pages --- src/index.css | 4 + src/pages/App/DesktopLayout.js | 8 +- src/pages/Membership/Membership.js | 161 ++++++--------------------- src/pages/Transaction/Transaction.js | 2 +- 4 files changed, 44 insertions(+), 131 deletions(-) diff --git a/src/index.css b/src/index.css index e81bbc3..39746de 100644 --- a/src/index.css +++ b/src/index.css @@ -53,3 +53,7 @@ code { .ppob-container { padding: 14px 14px 14px 14px; } + +.shadow { + box-shadow: 0 7px 14px 0 rgba(60, 66, 87, 0.05), 0 3px 6px 0 rgba(0, 0, 0, 0.05); +} \ No newline at end of file diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index d41f7d7..7d1edf9 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -18,7 +18,7 @@ export const DesktopLayout = observer(() => { { theme={"light"} className={store.ui.mediaQuery.isMobile ? "shadow" : null} style={{ - height: store.ui.mediaQuery.isDesktop ? 54 : 35, + height: store.ui.mediaQuery.isDesktop ? 24 : 35, // width: 'calc(100vw - 200px)', width: "100%", position: store.ui.mediaQuery.isDesktop ? "fixed" : "fixed", @@ -158,7 +158,7 @@ export const DesktopLayout = observer(() => { backgroundColor: store.ui.mediaQuery.isMobile ? "#fff" : "transparent", - maxWidth: store.ui.mediaQuery.isDesktop ? 1920 : 768, + maxWidth: store.ui.mediaQuery.isDesktop ? 1024 : 768, // minWidth: store.ui.mediaQuery.isDesktop ? 768 : 0, top: store.ui.mediaQuery.isMobile ? 0 : 12, /**/ @@ -426,7 +426,7 @@ export const DesktopLayout = observer(() => { zIndex: 22, // height: `calc(100vh - ${store.ui.mediaQuery.isDesktop ? 78 : 71}px)`, height: `calc(100vh - ${ - store.ui.mediaQuery.isDesktop ? 78 : 71 + store.ui.mediaQuery.isDesktop ? 43 : 37 }px)`, // paddingLeft: 8, // paddingRight: 8 diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 7add9f3..72276fa 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,5 +1,5 @@ import React, {useEffect, useState} from "react"; -import {Button, Card, Col, Input, List, message, Modal, PageHeader, Row, Space, Table, Tag} from "antd"; +import {Button, Card, Col, Input, message, Modal, Row, Space, Table, Tag} from "antd"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; import {ExclamationCircleOutlined, FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; @@ -137,132 +137,41 @@ export const Membership = observer(() => {
- {store.ui.mediaQuery.isDesktop && ( -
- - - - - - - - - - { - store.membership.pageSize = page.pageSize; - store.membership.page = page.current; - store.membership.getData(); - }} current={store.membership.page} - loading={store.membership.pageSize}/> - - )} - {store.ui.mediaQuery.isMobile && ( -
- - } - size={"small"} - style={{margin: 3}} - > - Filter - - } - subTitle="" - /> - - - { - return ( -
- - {item.name}} - description={ -
-

- Username : {item.username}
-

-

- {item.status} -

-
- } - /> - {/*
- - {item.updated_at ? moment(item.updated_at).format("DD MMM YY, H:mm:ss") : "There is not top up yet"} -

- } - prefix={"Rp"} - precision={0} - style={{ fontSize: 12, fontWeight: 300 }} - valueStyle={{ - color: "#5469d4", - fontSize: 12, - fontWeight: 600, - textAlign: "right", - }} - value={item.balances} - /> - -
*/} -
- {/* */} -
- ); - }} +
+ +
+ + + + - - )} + + + +
{ + store.membership.pageSize = page.pageSize; + store.membership.page = page.current; + store.membership.getData(); + }} current={store.membership.page} + loading={store.membership.pageSize}/> + { }, ]; return ( -
+
From 75580d1e2143ab40461d3fd00025d0620b1d4067 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 14:35:14 +0700 Subject: [PATCH 003/324] fix: responsive layout --- package.json | 3 +- src/index.css | 10 +-- src/pages/App/DesktopLayout.js | 10 ++- src/pages/Membership/Membership.js | 107 ++++++++++++++++++++++++----- yarn.lock | 19 +++-- 5 files changed, 114 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index bd09d63..78c12c6 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "camelcase": "^6.2.0", "case-sensitive-paths-webpack-plugin": "2.4.0", "css-loader": "4.3.0", + "date-fns": "^2.27.0", "dotenv": "8.2.0", "dotenv-expand": "5.1.0", "eslint": "^7.28.0", @@ -61,7 +62,7 @@ "react-dev-utils": "^11.0.4", "react-dom": "^17.0.2", "react-refresh": "^0.8.3", - "react-responsive": "^8.2.0", + "react-responsive": "^9.0.0-beta.5", "react-router-dom": "^5.2.0", "react-router-transition": "^2.1.0", "resolve": "1.20.0", diff --git a/src/index.css b/src/index.css index 39746de..1e43dce 100644 --- a/src/index.css +++ b/src/index.css @@ -24,11 +24,11 @@ code { border-color: #2D9CDB !important; } -.ant-card { - margin-bottom: 30px !important; - width: 1000px; - height: auto; -} +/*.ant-card {*/ +/* margin-bottom: 30px !important;*/ +/* width: 1000px;*/ +/* height: auto;*/ +/*}*/ .ant-table-cell { text-align: center !important; diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 7d1edf9..2a1da7a 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -6,11 +6,13 @@ import {CalendarOutlined, HomeOutlined, MenuOutlined, UserOutlined,} from "@ant- import {AppRoute} from "../../routes/app"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; +import {useMediaQuery} from "react-responsive"; const {Text, Paragraph} = Typography; const {Header, Content, Sider} = Layout; export const DesktopLayout = observer(() => { + const xl = useMediaQuery({minWidth: 1024}); const store = useStore(); const [clicked, setClicked] = useState(false); @@ -20,10 +22,12 @@ export const DesktopLayout = observer(() => { className={"transparent"} hasSider={store.ui.mediaQuery.isDesktop} style={{ - paddingLeft: 0, + paddingLeft: xl ? "calc(70vw - 1024px)" : "0", display: "flex", - width: "100vw", - height: "100vh", + // minWidth: 1024, + width: "100%", + height: "100%", + position: "relative", }} > {store.ui.mediaQuery.isDesktop && { }, { title: "Username", - dataIndex: "username", - key: "username", + dataIndex: "name", + key: "name", }, { title: "Status", @@ -155,22 +156,90 @@ export const Membership = observer(() => { -
{ - store.membership.pageSize = page.pageSize; - store.membership.page = page.current; - store.membership.getData(); - }} current={store.membership.page} - loading={store.membership.pageSize}/> + + {store.ui.mediaQuery.isDesktop && ( +
{ + store.membership.pageSize = page.pageSize; + store.membership.page = page.current; + store.membership.getData(); + }} + current={store.membership.page} + loading={store.membership.pageSize} + />)} + + {store.ui.mediaQuery.isMobile && ( + { + store.membership.pageSize = page.pageSize; + store.membership.page = page.current; + store.membership.getData(); + }, + pageSize: store.membership.pageSize, + total: store.membership.total_data, + current: store.membership.page, + style: {marginBottom: '1rem', marginRight: '1rem'} + }} + dataSource={store.membership.data} + style={{padding: 0}} + renderItem={(item) => { + return ( +
+ + +

+ Email : {item.email}
+

+
+ } + /> +
+

+ {format(new Date(item.created_at), "dd-MM-yyyy")} +

+
+ + + + ); + }} + /> + )} Date: Thu, 9 Dec 2021 17:59:39 +0700 Subject: [PATCH 004/324] fix: scrollable table in product --- src/pages/Product/Pulsa.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/pages/Product/Pulsa.js b/src/pages/Product/Pulsa.js index b633fd1..c6d1e6c 100644 --- a/src/pages/Product/Pulsa.js +++ b/src/pages/Product/Pulsa.js @@ -51,7 +51,6 @@ export const Pulsa = () => { kode: "BROP2", produk: "DATA AXIS 2GB-60HR", harga_beli: "Rp.10.000", - harga_beli: "Rp.10.000", harga_jual: "Rp.40.000", gangguan: Active, tersedia: Ya, @@ -61,7 +60,6 @@ export const Pulsa = () => { kode: "-", produk: "-", harga_beli: "-", - harga_beli: "-", harga_jual: "-", gangguan: Gangguan, tersedia: Tidak, @@ -71,7 +69,6 @@ export const Pulsa = () => { kode: "-", produk: "-", harga_beli: "-", - harga_beli: "-", harga_jual: "-", gangguan: Active, tersedia: Ya, @@ -81,7 +78,6 @@ export const Pulsa = () => { kode: "-", produk: "-", harga_beli: "-", - harga_beli: "-", harga_jual: "-", gangguan: Active, tersedia: Ya, @@ -94,6 +90,7 @@ export const Pulsa = () => { columns={columns} dataSource={dataSource} bordered + scroll={{x: 1500}} /> ); From 7f89e6562b949d7e409d4bfaa1124823b7d01a1f Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 19:02:02 +0700 Subject: [PATCH 005/324] fix: change key --- src/pages/App/MenuList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 8f061a8..1e81b44 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -51,7 +51,7 @@ export const MenuList = observer((props) => { Product - + Transaction From 525d5534df79457a518a2069b070f262be9d316f Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 19:55:53 +0700 Subject: [PATCH 006/324] fix: card product responsive --- src/pages/Transaction/Pulsa.js | 214 +++++++++++++-------------- src/pages/Transaction/Transaction.js | 4 +- 2 files changed, 106 insertions(+), 112 deletions(-) diff --git a/src/pages/Transaction/Pulsa.js b/src/pages/Transaction/Pulsa.js index 6392849..ded433a 100644 --- a/src/pages/Transaction/Pulsa.js +++ b/src/pages/Transaction/Pulsa.js @@ -2,126 +2,120 @@ import React from "react"; import {Button, Card, Col, Dropdown, Menu, message, Modal, Row, Space,} from "antd"; import {DownOutlined, TabletOutlined, UserOutlined} from "@ant-design/icons"; -//const style = { background: "#0092ff", padding: "8px 0" }; -const gridStyle = { - width: "18%", - textAlign: "center", - marginRight: "8px", - marginBottom: "20px", -}; - export const Pulsa = () => { - function handleMenuClick(e) { - message.info("Click on menu item."); - console.log("click", e); - } + function handleMenuClick(e) { + message.info("Click on menu item."); + console.log("click", e); + } - const menu = ( - - }> - 1st menu item - - }> - 2nd menu item - - }> - 3rd menu item - - - ); + const menu = ( + + }> + 1st menu item + + }> + 2nd menu item + + }> + 3rd menu item + + + ); - function success() { - Modal.success({ - content: 'some messages...some messages...', - }); - } + function success() { + Modal.success({ + content: 'some messages...some messages...', + }); + } - return ( -
- + const dataCard = [ + { + title: "DATA AXIS BRONET 2GB-60HR", + price: "Harga : Rp.6.000", + }, + { + title: "DATA AXIS BRONET 2GB-60HR", + price: "Harga : Rp.6.000", + }, + { + title: "DATA AXIS BRONET 2GB-60HR", + price: "Harga : Rp.6.000", + }, + { + title: "DATA AXIS BRONET 2GB-60HR", + price: "Harga : Rp.6.000", + }, + { + title: "DATA AXIS BRONET 2GB-60HR", + price: "Harga : Rp.6.000", + }, + { + title: "DATA AXIS BRONET 2GB-60HR", + price: "Harga : Rp.6.000", + }, + { + title: "DATA AXIS BRONET 2GB-60HR", + price: "Harga : Rp.6.000", + }, + { + title: "DATA AXIS BRONET 2GB-60HR", + price: "Harga : Rp.6.000", + }, + { + title: "DATA AXIS BRONET 2GB-60HR", + price: "Harga : Rp.6.000", + }, + { + title: "DATA AXIS BRONET 2GB-60HR", + price: "Harga : Rp.6.000", + }, + ] + + return ( +
+ Sub-Category - - - - - - - - - + + + + + + + + + Produk & Nominal - - - - DATA AXIS BRONET 2GB-60HR -
- Harga : Rp.6.000 -
- - DATA AXIS BRONET 2GB-60HR -
- Harga : Rp.6.000 -
- - DATA AXIS BRONET 2GB-60HR -
- Harga : Rp.6.000 -
- - DATA AXIS BRONET 2GB-60HR -
- Harga : Rp.6.000 -
- - DATA AXIS BRONET 2GB-60HR -
- Harga : Rp.6.000 -
- - DATA AXIS BRONET 2GB-60HR -
- Harga : Rp.6.000 -
- - DATA AXIS BRONET 2GB-60HR -
- Harga : Rp.6.000 -
- - DATA AXIS BRONET 2GB-60HR -
- Harga : Rp.6.000 -
- - DATA AXIS BRONET 2GB-60HR -
- Harga : Rp.6.000 -
- - DATA AXIS BRONET 2GB-60HR -
- Harga : Rp.6.000 -
-
-
- - - + + + {dataCard.map((item, index) => ( + + + {item.title} +
+ {item.price} +
+ + ))} + + + + + ); }; diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js index c255002..9d42dfe 100644 --- a/src/pages/Transaction/Transaction.js +++ b/src/pages/Transaction/Transaction.js @@ -55,10 +55,10 @@ export const Transaction = () => { Product - Prduct + Product - Prdct + Product From 7b6784709e6d7cb791f9e75ed689c88e8c9d1a6b Mon Sep 17 00:00:00 2001 From: ajat91 Date: Thu, 9 Dec 2021 20:04:37 +0700 Subject: [PATCH 007/324] fix: merge ajat --- src/config/app.js | 2 +- src/pages/Product/Product.js | 55 ++++++++- src/pages/Product/Pulsa.js | 140 +++++++++++++-------- src/pages/Product/PulsaModal.js | 213 ++++++++++++++++++++++++++++++++ src/store/categories.js | 40 ++++++ src/store/index.js | 4 + src/store/product.js | 40 ++++++ src/store/user.js | 2 +- 8 files changed, 434 insertions(+), 62 deletions(-) create mode 100644 src/pages/Product/PulsaModal.js create mode 100644 src/store/categories.js create mode 100644 src/store/product.js diff --git a/src/config/app.js b/src/config/app.js index 92eae9f..36a03ee 100644 --- a/src/config/app.js +++ b/src/config/app.js @@ -1,5 +1,5 @@ export const appConfig = { - apiUrl: 'https://api-reconcile.movic.id' + apiUrl: 'http://localhost:3222/v1' }; //export default appConfig; diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index b51d3f8..0a00d0a 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,13 +1,21 @@ -import React from "react"; -import {Button, Card, Col, Input, Row, Tabs} from "antd"; +import React, {useState} from "react"; +import {Button, Card, Col, Input, message, Row, Tabs} from "antd"; import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {Pulsa} from "./Pulsa"; +import {PulsaModal} from "./PulsaModal"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; const {TabPane} = Tabs; const {Search} = Input; -export const Product = () => { +export const Product = observer(() => { + const [visibleModal, setVisibleModal] = useState(false) + const [initialData, setInitialData] = useState({}) + const [confirmLoading, setConfirmLoading] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const store = useStore(); const callback = (key) => { console.log(key); }; @@ -21,6 +29,32 @@ export const Product = () => { name: Product, }, ]; + const onSubmit = async (data) => { + if (initialData.id) { + setInitialData({}) + setConfirmLoading(true); + try { + await store.product.update(initialData.id, data) + message.success("Success Update Data Member") + } catch (e) { + message.error("Failed Update Data Member") + } + setConfirmLoading(false); + setVisibleModal(false); + } else { + setInitialData({}) + setConfirmLoading(true); + try { + await store.product.create(data) + message.success("Success Add New Member") + } catch (e) { + console.log(e, "apa errornya") + message.error("Failed Add Member") + } + setConfirmLoading(false); + setVisibleModal(false); + } + } return (
@@ -37,7 +71,7 @@ export const Product = () => { placeholder="input search text" style={{width: 200, marginRight: 10}} /> - @@ -64,7 +98,16 @@ export const Product = () => { Prdct - + { + onSubmit(data) + }} + onCancel={() => { + setInitialData({}) + setVisibleModal(false); + }}/>
); -}; +}); diff --git a/src/pages/Product/Pulsa.js b/src/pages/Product/Pulsa.js index c6d1e6c..eafdfb9 100644 --- a/src/pages/Product/Pulsa.js +++ b/src/pages/Product/Pulsa.js @@ -1,38 +1,77 @@ -import React from "react"; -import {Button, Space, Table, Tag} from "antd"; +import React, {useEffect, useState} from "react"; +import {Button, message, Modal, Space, Table, Tag} from "antd"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {ExclamationCircleOutlined} from "@ant-design/icons"; +import {useHistory} from "react-router-dom"; -export const Pulsa = () => { +export const Pulsa = observer(() => { + const store = useStore(); + const history = useHistory(); + const [visibleModal, setVisibleModal] = useState(false); + const [initialData, setInitialData] = useState({}); + const [confirmLoading, setConfirmLoading] = useState(false); + const [isLoading, setIsLoading] = useState(false); + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.product.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + + init(); + }, []); const columns = [ { title: "Kode", - dataIndex: "kode", - key: "kode", + dataIndex: "code", + key: "code", }, { title: "Produk", - dataIndex: "produk", - key: "produk", + dataIndex: "name", + key: "name", }, { title: "Harga Beli", - dataIndex: "harga_beli", - key: "harga_beli", + dataIndex: "price", + key: "price", }, , { title: "Harga Jual", - dataIndex: "harga_jual", - key: "harga_beli", + dataIndex: "mark_up_price", + key: "mark_up_price", }, { title: "Gangguan", - dataIndex: "gangguan", - key: "gangguan", + dataIndex: "status", + key: "status", + render: (text, record) => ( + + {record?.status} + + ), }, { title: "Tersedia", dataIndex: "tersedia", key: "tersedia", + render: (text, record) => ( + + {record?.status === "AKTIF" ? " Ya" : "Tidak"} + + ), }, { title: "Action", @@ -40,58 +79,51 @@ export const Pulsa = () => { render: (text, record) => ( - + ), }, ]; - const dataSource = [ - { - key: "1", - kode: "BROP2", - produk: "DATA AXIS 2GB-60HR", - harga_beli: "Rp.10.000", - harga_jual: "Rp.40.000", - gangguan: Active, - tersedia: Ya, - }, - { - key: "2", - kode: "-", - produk: "-", - harga_beli: "-", - harga_jual: "-", - gangguan: Gangguan, - tersedia: Tidak, - }, - { - key: "3", - kode: "-", - produk: "-", - harga_beli: "-", - harga_jual: "-", - gangguan: Active, - tersedia: Ya, - }, - { - key: "4", - kode: "-", - produk: "-", - harga_beli: "-", - harga_jual: "-", - gangguan: Active, - tersedia: Ya, + const deleteData = async (id) => { + try { + console.log(id); + await store.product.delete(id); + message.success("Data Berhasil Dihapus"); + history.push("/app/product"); + } catch (err) { + console.log("error", err); + message.error("Gagal menghapus"); } - ]; + }; + const handleDelete = (id) => { + Modal.confirm({ + title: "Are you sure delete this record?", + icon: , + okText: "Yes", + okType: "primary", + cancelText: "Cancel", + onOk() { + return deleteData(id); + }, + onCancel() { + console.log("Cancel"); + }, + }); + }; return (
); -}; +}); diff --git a/src/pages/Product/PulsaModal.js b/src/pages/Product/PulsaModal.js new file mode 100644 index 0000000..13b54af --- /dev/null +++ b/src/pages/Product/PulsaModal.js @@ -0,0 +1,213 @@ +// import React,{useEffect,useState} from "react"; +// import { Form, Input, Modal, Select } from "antd"; + +// export const PulsaModal = ({ visible, onCreate, onCancel, initialData }) => { +// const [form] = Form.useForm(); +// const { Option } = Select; +// const [visibleModal, setVisibleModal] = useState(false) +// const [initialData, setInitialData] = useState({}) +// const [confirmLoading, setConfirmLoading] = useState(false); +// const [isLoading, setIsLoading] = useState(false); +// useEffect(() => { +// const init = async () => { +// try { +// setIsLoading(true); +// await store.categories.getData(); +// setIsLoading(false); +// } catch (e) { +// setIsLoading(false); +// } +// }; + +// init(); +// }, []); + +// return ( +// { +// onSubmit(data) +// }} +// onCancel={() => { +// setInitialData({}) +// setVisibleModal(false); +// }} +// visible={visible} +// title={initialData.id ? "Edit Member" : "Create a new Member"} +// okText={initialData.id ? "Edit" : "Create"} +// cancelText="Cancel" +// onCancel={() => { +// form.resetFields(); +// onCancel(); +// }} +// onOk={() => { +// form +// .validateFields() +// .then((values) => { +// onCreate(values); +// form.resetFields(); +// }) +// .catch((info) => { +// console.log("Validate Failed:", info); +// }); +// }} +// > +//
+// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +//
+// ); +// }; +import React, {useEffect, useState} from "react"; +import {Form, Input, Modal, Select} from "antd"; +import {useStore} from "../../utils/useStore"; + +export const PulsaModal = ({visible, onCreate, onCancel}) => { + const [form] = Form.useForm(); + const {Option} = Select; + const dataStatus = ["Active", "Inactive"]; + const store = useStore(); + const [visibleModal, setVisibleModal] = useState(false); + const [initialData, setInitialData] = useState({}); + const [confirmLoading, setConfirmLoading] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const init = async () => { + try { + setIsLoading(true); + await store.categories.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + + useEffect(() => { + init(); + }, []); + + return ( + { + form.resetFields(); + onCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + onCreate(values); + form.resetFields(); + }) + .catch((info) => { + console.log("Validate Failed:", info); + }); + }} + > +
+ + + + + + + + + + + + + + + + + + + +
+ ); +}; diff --git a/src/store/categories.js b/src/store/categories.js new file mode 100644 index 0000000..a74f913 --- /dev/null +++ b/src/store/categories.js @@ -0,0 +1,40 @@ +import {action, makeAutoObservable} from "mobx"; +import {http} from "../utils/http"; + +export class Categories { + page = 0; + pageSize = 10 + data = []; + total_data = 0 + + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } + + @action + async getData() { + const response = await http.get(`/product/sub-categories?page=${this.page}&pageSize=${this.pageSize}`); + console.log(response, 'Data cate') + console.log(JSON.stringify(response.body.data), 'Data') + + this.data = response.body.data ?? [] + this.total_data = response.body.total_data ?? 0 + } + + @action + async create(data) { + return await http.post('/user').send(data) + } + + @action + async update(id, data) { + return await http.put('/user/' + id).send(data); + } + + async delete(id) { + return await http.del('/product/' + id); + } +} + + diff --git a/src/store/index.js b/src/store/index.js index e3e59fb..e6250f3 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -2,12 +2,16 @@ import {UI} from "./ui"; import {Authentication} from "./authentication"; import {User} from "./user"; import {Membership} from "./membership"; +import {Product} from "./product"; +import {Categories} from "./categories"; export class Store { ui = new UI(this); authentication = new Authentication(this); user = new User(this); membership = new Membership(this); + product = new Product(this); + categories = new Categories(this); constructor() { } diff --git a/src/store/product.js b/src/store/product.js new file mode 100644 index 0000000..cd761ae --- /dev/null +++ b/src/store/product.js @@ -0,0 +1,40 @@ +import {action, makeAutoObservable} from "mobx"; +import {http} from "../utils/http"; + +export class Product { + page = 0; + pageSize = 10 + data = []; + total_data = 0 + + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } + + @action + async getData() { + const response = await http.get(`/product?page=${this.page}&pageSize=${this.pageSize}`); + console.log(response, 'Data') + console.log(JSON.stringify(response.body.data), 'Data') + + this.data = response.body.data ?? [] + this.total_data = response.body.total_data ?? 0 + } + + @action + async create(data) { + return await http.post('/product').send(data) + } + + @action + async update(id, data) { + return await http.put('/user/' + id).send(data); + } + + async delete(id) { + return await http.del('/product/' + id); + } +} + + diff --git a/src/store/user.js b/src/store/user.js index 741da5b..00722be 100644 --- a/src/store/user.js +++ b/src/store/user.js @@ -6,7 +6,7 @@ export class User { @action async getData() { - this.data = (await http.get('/user')).body.data; + this.data = (await http.get('/product')).body.data; } } From b346e1fdbdb21a75c281dbd5ac6d5ad03579321a Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 20:18:07 +0700 Subject: [PATCH 008/324] feat: erorr on click --- src/pages/Product/Product.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 0a00d0a..b87f363 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -71,7 +71,7 @@ export const Product = observer(() => { placeholder="input search text" style={{width: 200, marginRight: 10}} /> - setVisibleModal(true)}> + From 84d3085c0c265bd82300e006342c384daa9e8695 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 23:00:56 +0700 Subject: [PATCH 009/324] feat: implement login --- src/config/app.js | 2 +- src/pages/App/DesktopLayout.js | 19 ++-- src/pages/Login/Login.js | 172 +++++++++++---------------------- src/routes/index.js | 5 +- src/store/authentication.js | 54 +++++++++-- src/store/index.js | 5 + src/store/user.js | 2 +- src/utils/token.js | 17 ---- 8 files changed, 124 insertions(+), 152 deletions(-) diff --git a/src/config/app.js b/src/config/app.js index 36a03ee..e4b7ca0 100644 --- a/src/config/app.js +++ b/src/config/app.js @@ -1,5 +1,5 @@ export const appConfig = { - apiUrl: 'http://localhost:3222/v1' + apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' }; //export default appConfig; diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 2a1da7a..abf523d 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -1,7 +1,7 @@ import React, {useState} from "react"; import {Button, Drawer, Layout, Menu, Popover, Typography,} from "antd"; import {MenuList} from "./MenuList"; -import {Link} from "react-router-dom"; +import {Link, useHistory} from "react-router-dom"; import {CalendarOutlined, HomeOutlined, MenuOutlined, UserOutlined,} from "@ant-design/icons"; import {AppRoute} from "../../routes/app"; import {useStore} from "../../utils/useStore"; @@ -12,6 +12,7 @@ const {Text, Paragraph} = Typography; const {Header, Content, Sider} = Layout; export const DesktopLayout = observer(() => { + let history = useHistory(); const xl = useMediaQuery({minWidth: 1024}); const store = useStore(); const [clicked, setClicked] = useState(false); @@ -268,8 +269,8 @@ export const DesktopLayout = observer(() => { { - // store.authentication.logout(); - // return history.push("/login"); + store.authentication.logout(); + history.push("/login"); }} > Sign out @@ -278,10 +279,10 @@ export const DesktopLayout = observer(() => { } title={ - {/*{store.user.data.email}{" "}*/} - {/**/} - {/* {store.authentication.userData.full_name}*/} - {/**/} + {store.user.data.email}{" "} + + {store.authentication.userData.email} + } trigger="click" @@ -359,8 +360,8 @@ export const DesktopLayout = observer(() => { { - // store.authentication.logout(); - // return history.push("/login"); + store.authentication.logout(); + history.push("/login"); }} > Sign out diff --git a/src/pages/Login/Login.js b/src/pages/Login/Login.js index 9c5090a..14f1e6f 100644 --- a/src/pages/Login/Login.js +++ b/src/pages/Login/Login.js @@ -1,51 +1,52 @@ -import React, {useState} from "react"; +import React from "react"; import {observer} from 'mobx-react-lite'; import {useStore} from "../../utils/useStore"; -import {Button, Card, Checkbox, Col, Form, Input, Row, Typography} from 'antd'; -import {LockOutlined, UserOutlined} from '@ant-design/icons'; +import {Button, Card, Col, Form, Input, message, Row, Typography} from 'antd'; import {useHistory} from "react-router-dom"; export const Login = observer(() => { const store = useStore(); - const [loading, setLoading] = useState(false); - let history = useHistory(); + const [form] = Form.useForm(); - const onFinish = values => { - console.log('Received values of form: ', values); - enterLoading(values).then(res => { - console.log(res, "awasaa"); - }).catch((error) => { - console.log({error}, "awasaa error"); - }); - }; + const handleLogin = async (params) => { + try { + await store.authentication.login({ + username: params.username, + password: params.password, + }); + history.push('/app/home'); + } catch (e) { + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); + } + } - const enterLoading = async (props) => { - // store.setInitialToken("ayayay", "clap"); - return history.push("/app/page_example_1"); - }; - - return
- -
-
-
- + return ( +
+ +
+
+
+ Boilerplate
@@ -57,83 +58,28 @@ export const Login = observer(() => { title={'Sign in to your account'} >
- - } - type="text" - placeholder="Email"/> + + - - - } - type="password" - placeholder="Password" - /> - - - - Forgot password - - - - - - Remember me - - - - - + + +
+ +
-
- - - - ; + + + + + ); }); diff --git a/src/routes/index.js b/src/routes/index.js index dd37c94..e35d030 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -2,15 +2,16 @@ import {Redirect, Route, Switch} from "react-router-dom"; import {Login} from "../pages/Login/Login"; import {PublicRoute} from "../component/PublicRoute"; import {App} from "../pages/App/App"; +import {PrivateRoute} from "../component/PrivateRoute"; export const MainRoutes = (props) => { return ( - + - + ); }; diff --git a/src/store/authentication.js b/src/store/authentication.js index 49a92ae..ef39c7a 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -1,27 +1,63 @@ -import {makeAutoObservable} from "mobx"; +import {makeAutoObservable, runInAction} from "mobx"; +import {TokenUtil} from "../utils/token"; +import {http} from "../utils/http"; export class Authentication { + isLoggedIn = false; + isLoginLoading = false; ctx; accessToken = ''; - refreshToken = ''; - constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); } get isLoggedIn() { - return !!this.refreshToken; + return !!this.accessToken; } - setInitialToken(accessToken, refreshToken) { - this.setToken(accessToken, refreshToken); + get userData() { + const defaultValue = { + role: '', + user_id: '', + username: '', + }; + + try { + return JSON.parse(atob(this.accessToken.split('.')[1])); + } catch (err) { + return defaultValue; + } } - setToken(accessToken, refreshToken) { - this.accessToken = accessToken; - this.refreshToken = refreshToken; + async login({username, password}) { + runInAction(() => { + this.isLoginLoading = true; + }); + + try { + const result = await http.post('/auth/login').send({username, password}); + + TokenUtil.setAccessToken(result.body.access_token); + TokenUtil.persistToken(); + runInAction(() => { + this.isLoginLoading = false; + this.isLoggedIn = true; + }); + } catch (e) { + runInAction(() => { + this.isLoginLoading = false; + }); + console.error(e); + throw e; + } + } + + logout() { + TokenUtil.clearAccessToken(); + TokenUtil.persistToken(); + this.isLoggedIn = false; } } diff --git a/src/store/index.js b/src/store/index.js index e6250f3..cb89030 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -4,6 +4,7 @@ import {User} from "./user"; import {Membership} from "./membership"; import {Product} from "./product"; import {Categories} from "./categories"; +import {TokenUtil} from "../utils/token"; export class Store { ui = new UI(this); @@ -14,5 +15,9 @@ export class Store { categories = new Categories(this); constructor() { + TokenUtil.loadToken(); + if (TokenUtil.accessToken) { + this.authentication.isLoggedIn = true; + } } } diff --git a/src/store/user.js b/src/store/user.js index 00722be..741da5b 100644 --- a/src/store/user.js +++ b/src/store/user.js @@ -6,7 +6,7 @@ export class User { @action async getData() { - this.data = (await http.get('/product')).body.data; + this.data = (await http.get('/user')).body.data; } } diff --git a/src/utils/token.js b/src/utils/token.js index a66e156..8b28c65 100644 --- a/src/utils/token.js +++ b/src/utils/token.js @@ -4,15 +4,10 @@ export class TokenUtil { static loadToken() { const accessToken = localStorage.getItem('access_token'); - const refreshToken = localStorage.getItem('refresh_token'); if (accessToken) { TokenUtil.setAccessToken(accessToken); } - - if (refreshToken) { - TokenUtil.setRefreshToken(refreshToken); - } } static persistToken() { @@ -22,25 +17,13 @@ export class TokenUtil { localStorage.removeItem('access_token'); } - if (TokenUtil.refreshToken != null) { - localStorage.setItem('refresh_token', TokenUtil.refreshToken); - } else { - localStorage.removeItem('refresh_token'); - } } static setAccessToken(accessToken) { TokenUtil.accessToken = accessToken; } - static setRefreshToken(refreshToken) { - TokenUtil.refreshToken = refreshToken; - } - static clearAccessToken() { TokenUtil.accessToken = null; } - static clearRefreshToken() { - TokenUtil.accessToken = null; - } } From 4846e7022a8fc4a1ffebf3ac896eea12f8357df5 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 23:06:16 +0700 Subject: [PATCH 010/324] feat: implement token in fetch api --- src/store/authentication.js | 1 + src/utils/http.js | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/store/authentication.js b/src/store/authentication.js index ef39c7a..24f2b35 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -26,6 +26,7 @@ export class Authentication { }; try { + console.log(JSON.parse(atob(this.accessToken.split('.')[1])), "isi jwt") return JSON.parse(atob(this.accessToken.split('.')[1])); } catch (err) { return defaultValue; diff --git a/src/utils/http.js b/src/utils/http.js index d794204..a63234c 100644 --- a/src/utils/http.js +++ b/src/utils/http.js @@ -1,33 +1,33 @@ import superagent from "superagent"; import {appConfig} from "../config/app"; -import {store} from "./useStore"; +import {TokenUtil} from "./token"; export const http = { get: (url, opts = {}) => { let req = superagent.get(appConfig.apiUrl + url); - if (store.token) { - req = req.set('Authorization', 'Bearer ' + store.token); + if (TokenUtil.accessToken) { + req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken); } return req; }, post: (url, opts) => { let req = superagent.post(appConfig.apiUrl + url); - if (store.token) { - req = req.set('Authorization', 'Bearer ' + store.token); + if (TokenUtil.accessToken) { + req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken); } return req; }, put: (url, opts) => { let req = superagent.put(appConfig.apiUrl + url); - if (store.token) { - req = req.set('Authorization', 'Bearer ' + store.token); + if (TokenUtil.accessToken) { + req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken); } return req; }, del: (url, opts) => { let req = superagent.del(appConfig.apiUrl + url); - if (store.token) { - req = req.set('Authorization', 'Bearer ' + store.token); + if (TokenUtil.accessToken) { + req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken); } return req; }, From ed42cb6c0c6ee5670e49f9da65118865425793ce Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 23:18:54 +0700 Subject: [PATCH 011/324] feat: get data from jwt --- src/pages/App/DesktopLayout.js | 9 +++++---- src/store/authentication.js | 2 ++ src/store/index.js | 1 + src/store/product.js | 2 -- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index abf523d..6a474fc 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -279,9 +279,9 @@ export const DesktopLayout = observer(() => { } title={ - {store.user.data.email}{" "} + {store.user.data.username} - {store.authentication.userData.email} + {store.authentication.userData.username} } @@ -353,12 +353,13 @@ export const DesktopLayout = observer(() => { }} mode="inline" > - + Profile { store.authentication.logout(); history.push("/login"); @@ -372,7 +373,7 @@ export const DesktopLayout = observer(() => { {store.user.data.email}{" "} - {/*{store.authentication.userData.full_name}*/} + {store.authentication.userData.username} } diff --git a/src/store/authentication.js b/src/store/authentication.js index 24f2b35..2b46fe9 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -41,6 +41,7 @@ export class Authentication { try { const result = await http.post('/auth/login').send({username, password}); + this.accessToken = result.body.access_token; TokenUtil.setAccessToken(result.body.access_token); TokenUtil.persistToken(); runInAction(() => { @@ -60,5 +61,6 @@ export class Authentication { TokenUtil.clearAccessToken(); TokenUtil.persistToken(); this.isLoggedIn = false; + this.accessToken = ''; } } diff --git a/src/store/index.js b/src/store/index.js index cb89030..3d345dd 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -18,6 +18,7 @@ export class Store { TokenUtil.loadToken(); if (TokenUtil.accessToken) { this.authentication.isLoggedIn = true; + this.authentication.accessToken = TokenUtil.accessToken; } } } diff --git a/src/store/product.js b/src/store/product.js index cd761ae..9b52295 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -15,8 +15,6 @@ export class Product { @action async getData() { const response = await http.get(`/product?page=${this.page}&pageSize=${this.pageSize}`); - console.log(response, 'Data') - console.log(JSON.stringify(response.body.data), 'Data') this.data = response.body.data ?? [] this.total_data = response.body.total_data ?? 0 From 7a62ad32a9ec5bd4f6cac3101ff354fd39c7f2d1 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 23:20:22 +0700 Subject: [PATCH 012/324] feat: remove unused code --- src/utils/token.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utils/token.js b/src/utils/token.js index 8b28c65..00d6b67 100644 --- a/src/utils/token.js +++ b/src/utils/token.js @@ -1,6 +1,5 @@ export class TokenUtil { static accessToken = null; - static refreshToken = null; static loadToken() { const accessToken = localStorage.getItem('access_token'); From 993c24cd3699d9a6210779c588421bf59357a987 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 23:29:40 +0700 Subject: [PATCH 013/324] feat: remove unused code --- src/pages/App/DesktopLayout.js | 2 -- src/pages/Product/Product.js | 21 +++++++++++---------- src/store/authentication.js | 11 +---------- src/store/index.js | 1 - 4 files changed, 12 insertions(+), 23 deletions(-) diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 6a474fc..1c46dc5 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -88,7 +88,6 @@ export const DesktopLayout = observer(() => { width={"50%"} onClose={() => { store.ui.toggleLeftDrawerIsShown() - console.log("clicked"); }} visible={store.ui.leftDrawerIsShown} key={"dashboard-drawer"} @@ -211,7 +210,6 @@ export const DesktopLayout = observer(() => { } onClick={() => { store.ui.toggleLeftDrawerIsShown(); - console.log("apa") }} />
{ Prdct - { - onSubmit(data) - }} - onCancel={() => { - setInitialData({}) - setVisibleModal(false); - }}/> + + { + onSubmit(data) + }} + onCancel={() => { + setInitialData({}) + setVisibleModal(false); + }}/>
); }); diff --git a/src/store/authentication.js b/src/store/authentication.js index 2b46fe9..4b90963 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -7,17 +7,11 @@ export class Authentication { isLoginLoading = false; ctx; - accessToken = ''; - constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); } - get isLoggedIn() { - return !!this.accessToken; - } - get userData() { const defaultValue = { role: '', @@ -26,8 +20,7 @@ export class Authentication { }; try { - console.log(JSON.parse(atob(this.accessToken.split('.')[1])), "isi jwt") - return JSON.parse(atob(this.accessToken.split('.')[1])); + return JSON.parse(atob(TokenUtil.accessToken.split('.')[1])); } catch (err) { return defaultValue; } @@ -41,7 +34,6 @@ export class Authentication { try { const result = await http.post('/auth/login').send({username, password}); - this.accessToken = result.body.access_token; TokenUtil.setAccessToken(result.body.access_token); TokenUtil.persistToken(); runInAction(() => { @@ -61,6 +53,5 @@ export class Authentication { TokenUtil.clearAccessToken(); TokenUtil.persistToken(); this.isLoggedIn = false; - this.accessToken = ''; } } diff --git a/src/store/index.js b/src/store/index.js index 3d345dd..cb89030 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -18,7 +18,6 @@ export class Store { TokenUtil.loadToken(); if (TokenUtil.accessToken) { this.authentication.isLoggedIn = true; - this.authentication.accessToken = TokenUtil.accessToken; } } } From 65252fd2a74f23815746e9a194518563dc1d27b6 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 9 Dec 2021 23:30:38 +0700 Subject: [PATCH 014/324] feat: remove unused code --- src/pages/Product/PulsaModal.js | 105 -------------------------------- 1 file changed, 105 deletions(-) diff --git a/src/pages/Product/PulsaModal.js b/src/pages/Product/PulsaModal.js index 13b54af..0f3db10 100644 --- a/src/pages/Product/PulsaModal.js +++ b/src/pages/Product/PulsaModal.js @@ -1,108 +1,3 @@ -// import React,{useEffect,useState} from "react"; -// import { Form, Input, Modal, Select } from "antd"; - -// export const PulsaModal = ({ visible, onCreate, onCancel, initialData }) => { -// const [form] = Form.useForm(); -// const { Option } = Select; -// const [visibleModal, setVisibleModal] = useState(false) -// const [initialData, setInitialData] = useState({}) -// const [confirmLoading, setConfirmLoading] = useState(false); -// const [isLoading, setIsLoading] = useState(false); -// useEffect(() => { -// const init = async () => { -// try { -// setIsLoading(true); -// await store.categories.getData(); -// setIsLoading(false); -// } catch (e) { -// setIsLoading(false); -// } -// }; - -// init(); -// }, []); - -// return ( -// { -// onSubmit(data) -// }} -// onCancel={() => { -// setInitialData({}) -// setVisibleModal(false); -// }} -// visible={visible} -// title={initialData.id ? "Edit Member" : "Create a new Member"} -// okText={initialData.id ? "Edit" : "Create"} -// cancelText="Cancel" -// onCancel={() => { -// form.resetFields(); -// onCancel(); -// }} -// onOk={() => { -// form -// .validateFields() -// .then((values) => { -// onCreate(values); -// form.resetFields(); -// }) -// .catch((info) => { -// console.log("Validate Failed:", info); -// }); -// }} -// > -//
-// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -//
-// ); -// }; import React, {useEffect, useState} from "react"; import {Form, Input, Modal, Select} from "antd"; import {useStore} from "../../utils/useStore"; From 8a73e728d835c38afc283c156638b26f5860c5e9 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 10 Dec 2021 10:50:39 +0700 Subject: [PATCH 015/324] feat: create component product --- package.json | 1 + .../ProductComponent.js} | 77 ++++++++++----- src/pages/Product/Product.js | 97 +++++++------------ src/pages/Product/PulsaModal.js | 67 +++++++++---- src/store/categories.js | 40 -------- src/store/index.js | 2 - src/store/product.js | 49 ++++++++-- yarn.lock | 2 +- 8 files changed, 180 insertions(+), 155 deletions(-) rename src/{pages/Product/Pulsa.js => component/ProductComponent.js} (61%) delete mode 100644 src/store/categories.js diff --git a/package.json b/package.json index 78c12c6..31c20a8 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "jest-watch-typeahead": "0.6.1", "less": "^3.11.1", "less-loader": "6.1.0", + "lodash": "^4.17.21", "mini-css-extract-plugin": "0.11.3", "mobx": "^6.3.2", "mobx-react-lite": "^3.2.0", diff --git a/src/pages/Product/Pulsa.js b/src/component/ProductComponent.js similarity index 61% rename from src/pages/Product/Pulsa.js rename to src/component/ProductComponent.js index eafdfb9..19649c0 100644 --- a/src/pages/Product/Pulsa.js +++ b/src/component/ProductComponent.js @@ -1,30 +1,18 @@ -import React, {useEffect, useState} from "react"; +import React, {useState} from "react"; import {Button, message, Modal, Space, Table, Tag} from "antd"; -import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; import {ExclamationCircleOutlined} from "@ant-design/icons"; import {useHistory} from "react-router-dom"; +import {capitalize} from "lodash"; +import {store} from "../utils/useStore"; +import {PulsaModal} from "../pages/Product/PulsaModal"; -export const Pulsa = observer(() => { - const store = useStore(); +export const ProductComponent = observer((props) => { const history = useHistory(); - const [visibleModal, setVisibleModal] = useState(false); const [initialData, setInitialData] = useState({}); const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - await store.product.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - init(); - }, []); const columns = [ { title: "Kode", @@ -44,8 +32,8 @@ export const Pulsa = observer(() => { , { title: "Harga Jual", - dataIndex: "mark_up_price", - key: "mark_up_price", + dataIndex: "base_price", + key: "base_price", }, { title: "Gangguan", @@ -56,7 +44,7 @@ export const Pulsa = observer(() => { color={record?.status === "AKTIF" ? "processing" : "#E3E8EE"} style={{color: "#4F566B"}} > - {record?.status} + {capitalize(record?.status)} ), }, @@ -78,7 +66,12 @@ export const Pulsa = observer(() => { key: "action", render: (text, record) => ( - +
+ { + await onSubmit(data) + }} + onCancel={() => { + setInitialData({}) + store.product.visibleModal = false; + }}/> ); }); diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 45ffbbb..4ba587d 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,24 +1,38 @@ -import React, {useState} from "react"; -import {Button, Card, Col, Input, message, Row, Tabs} from "antd"; +import React, {useEffect, useState} from "react"; +import {Button, Card, Col, Input, Row, Tabs} from "antd"; import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {Pulsa} from "./Pulsa"; -import {PulsaModal} from "./PulsaModal"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; +import {ProductComponent} from "../../component/ProductComponent"; const {TabPane} = Tabs; const {Search} = Input; export const Product = observer(() => { - const [visibleModal, setVisibleModal] = useState(false) - const [initialData, setInitialData] = useState({}) - const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); const store = useStore(); - const callback = (key) => { + + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.product.getDataCategories(); + await store.product.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + + init(); + }, []); + + const handleChangeTabPane = async (key) => { + store.product.filterCategory = key; console.log(key); }; + const routeData = [ { route: "/app/home", @@ -29,32 +43,7 @@ export const Product = observer(() => { name: Product, }, ]; - const onSubmit = async (data) => { - if (initialData.id) { - setInitialData({}) - setConfirmLoading(true); - try { - await store.product.update(initialData.id, data) - message.success("Success Update Data Member") - } catch (e) { - message.error("Failed Update Data Member") - } - setConfirmLoading(false); - setVisibleModal(false); - } else { - setInitialData({}) - setConfirmLoading(true); - try { - await store.product.create(data) - message.success("Success Add New Member") - } catch (e) { - console.log(e, "apa errornya") - message.error("Failed Add Member") - } - setConfirmLoading(false); - setVisibleModal(false); - } - } + return (
@@ -71,44 +60,28 @@ export const Product = observer(() => { placeholder="input search text" style={{width: 200, marginRight: 10}} /> - - - - - - Game Voucher - - - Product - - - Prduct - - - Prdct - + {store.product.dataCategories.map((item) => ( + + + + ))} - { - onSubmit(data) - }} - onCancel={() => { - setInitialData({}) - setVisibleModal(false); - }}/>
); }); diff --git a/src/pages/Product/PulsaModal.js b/src/pages/Product/PulsaModal.js index 0f3db10..f8f5108 100644 --- a/src/pages/Product/PulsaModal.js +++ b/src/pages/Product/PulsaModal.js @@ -1,30 +1,50 @@ import React, {useEffect, useState} from "react"; import {Form, Input, Modal, Select} from "antd"; import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; -export const PulsaModal = ({visible, onCreate, onCancel}) => { +export const PulsaModal = observer(({visible, onCreate, onCancel, initialData}) => { const [form] = Form.useForm(); const {Option} = Select; - const dataStatus = ["Active", "Inactive"]; const store = useStore(); const [visibleModal, setVisibleModal] = useState(false); - const [initialData, setInitialData] = useState({}); const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); - const init = async () => { - try { - setIsLoading(true); - await store.categories.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.product.getDataSubCategories(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + init(); }, []); + + const subCategoriesOption = [ + , + + ]; + + const subCategoriesOption2 = store.product.dataSubCategories.slice().map(subCategory => { + return ( + + ) + }); + + console.log(store.product.dataSubCategories, 'subCategoriesOption2'); + return ( { @@ -92,17 +112,24 @@ export const PulsaModal = ({visible, onCreate, onCancel}) => { + {/**/} + {/* */} + {/**/} ); -}; +}); diff --git a/src/store/categories.js b/src/store/categories.js deleted file mode 100644 index a74f913..0000000 --- a/src/store/categories.js +++ /dev/null @@ -1,40 +0,0 @@ -import {action, makeAutoObservable} from "mobx"; -import {http} from "../utils/http"; - -export class Categories { - page = 0; - pageSize = 10 - data = []; - total_data = 0 - - constructor(ctx) { - this.ctx = ctx; - makeAutoObservable(this); - } - - @action - async getData() { - const response = await http.get(`/product/sub-categories?page=${this.page}&pageSize=${this.pageSize}`); - console.log(response, 'Data cate') - console.log(JSON.stringify(response.body.data), 'Data') - - this.data = response.body.data ?? [] - this.total_data = response.body.total_data ?? 0 - } - - @action - async create(data) { - return await http.post('/user').send(data) - } - - @action - async update(id, data) { - return await http.put('/user/' + id).send(data); - } - - async delete(id) { - return await http.del('/product/' + id); - } -} - - diff --git a/src/store/index.js b/src/store/index.js index cb89030..a5a0d80 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -3,7 +3,6 @@ import {Authentication} from "./authentication"; import {User} from "./user"; import {Membership} from "./membership"; import {Product} from "./product"; -import {Categories} from "./categories"; import {TokenUtil} from "../utils/token"; export class Store { @@ -12,7 +11,6 @@ export class Store { user = new User(this); membership = new Membership(this); product = new Product(this); - categories = new Categories(this); constructor() { TokenUtil.loadToken(); diff --git a/src/store/product.js b/src/store/product.js index 9b52295..3959731 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -5,33 +5,66 @@ export class Product { page = 0; pageSize = 10 data = []; - total_data = 0 + total_data = 0; + filterCategory = null; + + pageCategories = 0; + pageSizeCategories = 10 + dataCategories = []; + total_dataCategories = 0; + + pageSubCategories = 0; + pageSizeSubCategories = 10 + dataSubCategories = []; + total_dataSubCategories = 0; + + visibleModal = false; constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); } - @action async getData() { - const response = await http.get(`/product?page=${this.page}&pageSize=${this.pageSize}`); + const response = await http.get(`/product/by-categories?categories=${this.filterCategory}&page=${this.page}&pageSize=${this.pageSize}`); this.data = response.body.data ?? [] this.total_data = response.body.total_data ?? 0 } - @action - async create(data) { - return await http.post('/product').send(data) + async getDataSubCategories() { + const response = await http.get(`/product/sub-categories?pageSize=${this.pageSizeSubCategories}`); + this.dataSubCategories = response.body.data ?? [] + this.total_dataSubCategories = response.body.count ?? 0 + } + + async getDataCategories() { + const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); + + this.dataCategories = response.body.data ?? [] + this.total_dataCategories = response.body.total_data ?? 0 + if (this.dataCategories.length > 0) { + this.filterCategory = this.dataCategories[0].id + } } @action + async create(data) { + const response = await http.post('/product', data); + await this.getData(); + return response; + } + async update(id, data) { - return await http.put('/user/' + id).send(data); + const response = await http.put(`/product/${id}`, data); + await this.getData(); + return response; } async delete(id) { - return await http.del('/product/' + id); + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; } } diff --git a/yarn.lock b/yarn.lock index 172036b..9a5a60e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7784,7 +7784,7 @@ lodash.uniq@^4.5.0: lodash@^4.17.21: version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== loglevel@^1.6.8: From 4ab1c34946d2e1ad9ae637f395dfef1f2f5598c8 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Fri, 10 Dec 2021 10:53:02 +0700 Subject: [PATCH 016/324] Data Membership --- src/pages/Membership/Membership.js | 69 +++++++++++++++--------------- src/pages/Product/PulsaModal.js | 2 +- src/store/membership.js | 6 ++- 3 files changed, 40 insertions(+), 37 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 653b1c3..9e43b81 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -16,16 +16,17 @@ export const Membership = observer(() => { const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true) - await store.membership.getData(); - setIsLoading(false) - } catch (e) { - setIsLoading(false) - } + const init = async () => { + try { + setIsLoading(true) + await store.membership.getData(); + setIsLoading(false) + } catch (e) { + setIsLoading(false) } + } + useEffect(() => { + init() @@ -34,26 +35,26 @@ export const Membership = observer(() => { const columns = [ { title: "Name", - dataIndex: "name", - key: "name", + dataIndex: "username", + key: "username", }, { title: "Username", - dataIndex: "name", - key: "name", + dataIndex: "username", + key: "username", }, { title: "Status", dataIndex: "status", key: "status", render: (text, record) => ( - <> - - Inactive - - Active - - ) + + {record?.status} + + ) }, { title: "Action", @@ -163,21 +164,21 @@ export const Membership = observer(() => { hasEmpty size={"small"} columns={columns} - dataSource={store.membership.data} + dataSource={store.membership.data[0]} bordered - pagination={{ - total: store.membership.total_data, - current: store.membership.page, - pageSize: store.membership.pageSize, - simple: true - }} - onChange={(page) => { - store.membership.pageSize = page.pageSize; - store.membership.page = page.current; - store.membership.getData(); - }} - current={store.membership.page} - loading={store.membership.pageSize} + // pagination={{ + // total: store.membership.total_data, + // current: store.membership.page, + // pageSize: store.membership.pageSize, + // simple: true + // }} + // onChange={(page) => { + // store.membership.pageSize = page.pageSize; + // store.membership.page = page.current; + // store.membership.getData(); + // }} + // current={store.membership.page} + // loading={store.membership.pageSize} />)} {store.ui.mediaQuery.isMobile && ( diff --git a/src/pages/Product/PulsaModal.js b/src/pages/Product/PulsaModal.js index 0f3db10..53c4736 100644 --- a/src/pages/Product/PulsaModal.js +++ b/src/pages/Product/PulsaModal.js @@ -28,7 +28,7 @@ export const PulsaModal = ({visible, onCreate, onCancel}) => { return ( { diff --git a/src/store/membership.js b/src/store/membership.js index 558dee2..50280bd 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -2,7 +2,7 @@ import {action, makeAutoObservable} from "mobx"; import {http} from "../utils/http"; export class Membership { - page = 1; + page = 0; pageSize = 10 data = []; total_data = 0 @@ -14,7 +14,9 @@ export class Membership { @action async getData() { - const response = await http.get(`/user?page=${this.page}&pageSize=${this.pageSize}`); + const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); + // console.log(response, 'Data user') + // console.log(JSON.stringify(response.body.data), 'Data') this.data = response.body.data ?? [] this.total_data = response.body.total_data ?? 0 } From 4d1cd215a1f73546b2bcaf6d94b2aaaced4e112c Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 10 Dec 2021 11:06:41 +0700 Subject: [PATCH 017/324] feat: misc change --- src/pages/Product/PulsaModal.js | 41 ++++++--------------------------- src/store/product.js | 2 +- 2 files changed, 8 insertions(+), 35 deletions(-) diff --git a/src/pages/Product/PulsaModal.js b/src/pages/Product/PulsaModal.js index dfdd69d..70834ec 100644 --- a/src/pages/Product/PulsaModal.js +++ b/src/pages/Product/PulsaModal.js @@ -3,12 +3,10 @@ import {Form, Input, Modal, Select} from "antd"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; -export const PulsaModal = observer(({visible, onCreate, onCancel, initialData}) => { +export const PulsaModal = observer(({visible, onCreate, onCancel, initialData, confirmLoading}) => { const [form] = Form.useForm(); const {Option} = Select; const store = useStore(); - const [visibleModal, setVisibleModal] = useState(false); - const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); useEffect(() => { @@ -25,26 +23,6 @@ export const PulsaModal = observer(({visible, onCreate, onCancel, initialData}) init(); }, []); - - const subCategoriesOption = [ - , - - ]; - - const subCategoriesOption2 = store.product.dataSubCategories.slice().map(subCategory => { - return ( - - ) - }); - - console.log(store.product.dataSubCategories, 'subCategoriesOption2'); - return ( { - console.log("Validate Failed:", info); + console.error("Validate Failed:", info); }); }} > @@ -117,18 +95,13 @@ export const PulsaModal = observer(({visible, onCreate, onCancel, initialData}) rules={[{required: true, message: "Please select sub categories!"}]} > - {/**/} - {/* */} - {/**/} ); diff --git a/src/store/product.js b/src/store/product.js index 3959731..009fddf 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -33,7 +33,7 @@ export class Product { } async getDataSubCategories() { - const response = await http.get(`/product/sub-categories?pageSize=${this.pageSizeSubCategories}`); + const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); this.dataSubCategories = response.body.data ?? [] this.total_dataSubCategories = response.body.count ?? 0 } From 6da88a97a8758e1b48b23c31a08a8737162ba781 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 10 Dec 2021 12:05:49 +0700 Subject: [PATCH 018/324] feat: rewrite modal logic product --- src/component/ProductComponent.js | 154 ++++++++++++++++++++++++------ src/pages/Product/PulsaModal.js | 108 --------------------- src/store/product.js | 2 - 3 files changed, 125 insertions(+), 139 deletions(-) delete mode 100644 src/pages/Product/PulsaModal.js diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 19649c0..a9c0fd3 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -1,17 +1,47 @@ -import React, {useState} from "react"; -import {Button, message, Modal, Space, Table, Tag} from "antd"; +import React, {useEffect, useState} from "react"; +import {Button, Form, Input, message, Modal, Select, Space, Table, Tag} from "antd"; import {observer} from "mobx-react-lite"; import {ExclamationCircleOutlined} from "@ant-design/icons"; import {useHistory} from "react-router-dom"; import {capitalize} from "lodash"; -import {store} from "../utils/useStore"; -import {PulsaModal} from "../pages/Product/PulsaModal"; +import {useStore} from "../utils/useStore"; export const ProductComponent = observer((props) => { + const store = useStore(); + const [form] = Form.useForm(); + const {Option} = Select; const history = useHistory(); - const [initialData, setInitialData] = useState({}); + const [idData, setIdData] = useState(''); const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); + const [visibleModal, setVisibleModal] = useState(false); + + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.product.getDataSubCategories(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + + init(); + }, []); + + const handleEditButton = (data) => { + console.log(data, "isi data") + form.setFieldsValue({ + name: data.name, + price: data.price, + base_price: data.base_price, + code: data.code, + status: data.status, + }); + setVisibleModal(true); + setIdData(data.id); + } const columns = [ { @@ -67,15 +97,10 @@ export const ProductComponent = observer((props) => { render: (text, record) => ( @@ -112,20 +137,23 @@ export const ProductComponent = observer((props) => { }); }; - const onSubmit = async (data) => { - if (initialData.id) { - setInitialData({}) + const handleCancel = () => { + setIdData('') + setVisibleModal(false); + } + + const handleSubmit = async (data) => { + if (idData != '') { setConfirmLoading(true); try { - await store.product.update(initialData.id, data) + await store.product.update(idData, data) message.success("Success Update Data Member") } catch (e) { message.error("Failed Update Data Member") } setConfirmLoading(false); - store.product.visibleModal = false; + setVisibleModal(false); } else { - setInitialData({}) setConfirmLoading(true); try { await store.product.create(data) @@ -135,7 +163,7 @@ export const ProductComponent = observer((props) => { message.error("Failed Add Member") } setConfirmLoading(false); - store.product.visibleModal = false; + setVisibleModal(false); } } @@ -147,16 +175,84 @@ export const ProductComponent = observer((props) => { dataSource={props.data} bordered /> - { - await onSubmit(data) - }} - onCancel={() => { - setInitialData({}) - store.product.visibleModal = false; - }}/> + { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + handleSubmit(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + + + + + + + + + + + + + + + + +
); }); diff --git a/src/pages/Product/PulsaModal.js b/src/pages/Product/PulsaModal.js deleted file mode 100644 index 70834ec..0000000 --- a/src/pages/Product/PulsaModal.js +++ /dev/null @@ -1,108 +0,0 @@ -import React, {useEffect, useState} from "react"; -import {Form, Input, Modal, Select} from "antd"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; - -export const PulsaModal = observer(({visible, onCreate, onCancel, initialData, confirmLoading}) => { - const [form] = Form.useForm(); - const {Option} = Select; - const store = useStore(); - const [isLoading, setIsLoading] = useState(false); - - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - await store.product.getDataSubCategories(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); - }, []); - - return ( - { - form.resetFields(); - onCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - onCreate(values); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} - > -
- - - - - - - - - - - - - - - - - - - -
- ); -}); diff --git a/src/store/product.js b/src/store/product.js index 009fddf..aebf01e 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -18,8 +18,6 @@ export class Product { dataSubCategories = []; total_dataSubCategories = 0; - visibleModal = false; - constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); From a0207af25ec496f9208b62116abc64478a53eb91 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Fri, 10 Dec 2021 13:18:42 +0700 Subject: [PATCH 019/324] Crud Membership --- src/component/ProductComponent.js | 8 +- src/pages/Membership/Membership.js | 363 +++++++++++++----------- src/pages/Membership/MembershipModal.js | 33 ++- src/store/membership.js | 6 +- 4 files changed, 220 insertions(+), 190 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 19649c0..21eb4b2 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -26,14 +26,14 @@ export const ProductComponent = observer((props) => { }, { title: "Harga Beli", - dataIndex: "price", - key: "price", + dataIndex: "basePrice", + key: "basePrice", }, , { title: "Harga Jual", - dataIndex: "base_price", - key: "base_price", + dataIndex: "price", + key: "price", }, { title: "Gangguan", diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 9e43b81..0f599a5 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,35 +1,49 @@ -import React, {useEffect, useState} from "react"; -import {Button, Card, Col, Divider, Input, List, message, Modal, Row, Space, Table, Tag} from "antd"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined, FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; -import {MembershipModal} from "./MembershipModal"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {format} from "date-fns"; +import React, { useEffect, useState } from "react"; +import { + Button, + Card, + Col, + Divider, + Input, + List, + message, + Modal, + Row, + Space, + Table, + Tag, +} from "antd"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { + ExclamationCircleOutlined, + FilterOutlined, + PlusSquareOutlined, +} from "@ant-design/icons"; +import { MembershipModal } from "./MembershipModal"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { format } from "date-fns"; -const {Search} = Input; +const { Search } = Input; export const Membership = observer(() => { const store = useStore(); - const [visibleModal, setVisibleModal] = useState(false) - const [initialData, setInitialData] = useState({}) + const [visibleModal, setVisibleModal] = useState(false); + const [initialData, setInitialData] = useState({}); const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); const init = async () => { try { - setIsLoading(true) + setIsLoading(true); await store.membership.getData(); - setIsLoading(false) + setIsLoading(false); } catch (e) { - setIsLoading(false) + setIsLoading(false); } - } + }; useEffect(() => { - - - init() - + init(); }, []); const columns = [ @@ -49,28 +63,34 @@ export const Membership = observer(() => { key: "status", render: (text, record) => ( - {record?.status} + {record?.isActive === true ? " ACTIVE" : "INACTIVE"} - ) + ), }, { title: "Action", key: "action", render: (text, record) => ( - - - - + > + Edit + + +
), }, ]; @@ -82,177 +102,180 @@ export const Membership = observer(() => { }, { route: "/app/membership", - name: Membership, + name: Membership, }, ]; const onSubmit = async (data) => { if (initialData.id) { - setInitialData({}) + setInitialData({}); setConfirmLoading(true); try { - await store.membership.update(initialData.id, data) - message.success("Success Update Data Member") + await store.membership.update(initialData.id, data); + message.success("Success Update Data Member"); + await store.membership.getData(); } catch (e) { - message.error("Failed Update Data Member") + message.error("Failed Update Data Member"); } setConfirmLoading(false); setVisibleModal(false); } else { - setInitialData({}) + setInitialData({}); setConfirmLoading(true); try { - await store.membership.create(data) - message.success("Success Add New Member") + await store.membership.create(data); + message.success("Success Add New Member"); + await store.membership.getData(); } catch (e) { - console.log(e, "apa errornya") - message.error("Failed Add Member") + console.log(e, "apa errornya"); + message.error("Failed Add Member"); } setConfirmLoading(false); setVisibleModal(false); } - } + }; const handleDelete = (record) => { Modal.confirm({ - title: 'Are you sure reject this record?', - icon: , - okText: 'Yes', - okType: 'primary', - cancelText: 'Cancel', + title: "Are you sure reject this record?", + icon: , + okText: "Yes", + okType: "primary", + cancelText: "Cancel", onOk() { try { //TODO: minta apinya ke ka ilham ya, jangan di uncomment kalo pake api reconcile, nanti beneran ke apus datanya // await store.membership.delete(record.id) - message.success('Success Delete Data') + message.success("Success Delete Data"); } catch (e) { - message.error("Failed Delete Data") + message.error("Failed Delete Data"); } }, onCancel() { - console.log('Cancel'); + console.log("Cancel"); }, }); - } - + }; return ( -
- - -
- -
- - - - - - - +
+ + +
+ +
+ + + + + + + + {store.ui.mediaQuery.isDesktop && ( +
{ + // store.membership.pageSize = page.pageSize; + // store.membership.page = page.current; + // store.membership.getData(); + // }} + // current={store.membership.page} + // loading={store.membership.pageSize} + /> + )} - {store.ui.mediaQuery.isDesktop && ( -
{ - // store.membership.pageSize = page.pageSize; - // store.membership.page = page.current; - // store.membership.getData(); - // }} - // current={store.membership.page} - // loading={store.membership.pageSize} - />)} - - {store.ui.mediaQuery.isMobile && ( - { - store.membership.pageSize = page.pageSize; - store.membership.page = page.current; - store.membership.getData(); - }, - pageSize: store.membership.pageSize, - total: store.membership.total_data, - current: store.membership.page, - style: {marginBottom: '1rem', marginRight: '1rem'} - }} - dataSource={store.membership.data} - style={{padding: 0}} - renderItem={(item) => { - return ( -
- - -

- Email : {item.email}
-

-
- } - /> -
-

- {format(new Date(item.created_at), "dd-MM-yyyy")} -

-
- - + {store.ui.mediaQuery.isMobile && ( + { + store.membership.pageSize = page.pageSize; + store.membership.page = page.current; + store.membership.getData(); + }, + pageSize: store.membership.pageSize, + total: store.membership.total_data, + current: store.membership.page, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.membership.data} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + +

+ Username : {item.username}
+

- ); - }} - /> - )} - - - { - onSubmit(data) - }} - onCancel={() => { - setInitialData({}) - setVisibleModal(false); - }}/> - + } + /> +
+

+ {item.username} +

+
+ + + + ); + }} + /> + )} + + + { + onSubmit(data); + }} + onCancel={() => { + setInitialData({}); + setVisibleModal(false); + }} + /> + ); }); diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index bcbece4..b404639 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -9,13 +9,13 @@ export const MembershipModal = ({ }) => { const [form] = Form.useForm(); const {Option} = Select; - const dataStatus = ['Active', 'Inactive'] + const dataStatus = ["true", "false"] return ( { @@ -40,13 +40,7 @@ export const MembershipModal = ({ name="form_in_modal" initialValues={initialData} > - - - + + + + + + + @@ -239,7 +244,7 @@ export const ProductComponent = observer((props) => { diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 4ba587d..594374b 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -60,7 +60,7 @@ export const Product = observer(() => { placeholder="input search text" style={{width: 200, marginRight: 10}} /> - diff --git a/src/store/product.js b/src/store/product.js index aebf01e..c8f6e38 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -1,4 +1,4 @@ -import {action, makeAutoObservable} from "mobx"; +import {makeAutoObservable} from "mobx"; import {http} from "../utils/http"; export class Product { @@ -7,6 +7,7 @@ export class Product { data = []; total_data = 0; filterCategory = null; + visibleModalProduct = false; pageCategories = 0; pageSizeCategories = 10 @@ -46,15 +47,14 @@ export class Product { } } - @action async create(data) { - const response = await http.post('/product', data); + const response = await http.post('/product').send(data); await this.getData(); return response; } async update(id, data) { - const response = await http.put(`/product/${id}`, data); + const response = await http.put(`/product/${id}`).send(data); await this.getData(); return response; } From d3ecd09d6f0786fadc90023425f1971b00f8f64c Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 10 Dec 2021 13:58:50 +0700 Subject: [PATCH 021/324] fix: merge conflicts --- src/component/ProductComponent.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index a4ded5b..a61d8ca 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -56,8 +56,8 @@ export const ProductComponent = observer((props) => { }, { title: "Harga Beli", - dataIndex: "basePrice", - key: "basePrice", + dataIndex: "price", + key: "price", }, { title: "Harga Jual", From 6a364fe8b4ce12abc4335fe3ce75a76a4d71c9eb Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 10 Dec 2021 14:33:55 +0700 Subject: [PATCH 022/324] feat: add roles in Membership --- src/pages/App/MenuList.js | 26 ++++----- src/pages/Membership/Membership.js | 74 +++++++++++-------------- src/pages/Membership/MembershipModal.js | 13 ++++- src/store/index.js | 2 + src/store/membership.js | 2 - src/store/role.js | 34 ++++++++++++ 6 files changed, 91 insertions(+), 60 deletions(-) create mode 100644 src/store/role.js diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 1e81b44..8068ac5 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -1,7 +1,7 @@ import React, {useEffect, useState} from "react"; import {Menu} from "antd"; import {Link} from "react-router-dom"; -import {CalendarOutlined, HomeOutlined,} from "@ant-design/icons"; +import {HomeOutlined,} from "@ant-design/icons"; import {observer} from "mobx-react-lite"; import {useStore} from "../../utils/useStore"; @@ -39,30 +39,30 @@ export const MenuList = observer((props) => { Home - + {store.authentication.userData.role !== 'Retail' && Membership - - + } + {store.authentication.userData.role !== 'Retail' && Product - - + } + {store.authentication.userData.role === 'Retail' && Transaction - - - - - About - - + } + {/**/} + {/* */} + {/* */} + {/* About*/} + {/* */} + {/**/} ); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 0f599a5..df36bd5 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,30 +1,12 @@ -import React, { useEffect, useState } from "react"; -import { - Button, - Card, - Col, - Divider, - Input, - List, - message, - Modal, - Row, - Space, - Table, - Tag, -} from "antd"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; -import { - ExclamationCircleOutlined, - FilterOutlined, - PlusSquareOutlined, -} from "@ant-design/icons"; -import { MembershipModal } from "./MembershipModal"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { format } from "date-fns"; +import React, {useEffect, useState} from "react"; +import {Button, Card, Col, Divider, Input, List, message, Modal, Row, Space, Table, Tag,} from "antd"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {ExclamationCircleOutlined, FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; +import {MembershipModal} from "./MembershipModal"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -const { Search } = Input; +const {Search} = Input; export const Membership = observer(() => { const store = useStore(); @@ -33,16 +15,18 @@ export const Membership = observer(() => { const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); - const init = async () => { - try { - setIsLoading(true); - await store.membership.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.membership.getData(); + await store.role.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + init(); }, []); @@ -78,7 +62,10 @@ export const Membership = observer(() => {
- + - diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index b404639..84ff209 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -1,5 +1,7 @@ import React from 'react'; import {Form, Input, Modal, Select,} from 'antd'; +import {capitalize} from "lodash"; +import {useStore} from "../../utils/useStore"; export const MembershipModal = ({ visible, @@ -10,6 +12,7 @@ export const MembershipModal = ({ const [form] = Form.useForm(); const {Option} = Select; const dataStatus = ["true", "false"] + const store = useStore(); return ( @@ -57,10 +60,14 @@ export const MembershipModal = ({ - + {dataStatus.map(it => { - return + return })} diff --git a/src/store/index.js b/src/store/index.js index a5a0d80..8a935c9 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -4,6 +4,7 @@ import {User} from "./user"; import {Membership} from "./membership"; import {Product} from "./product"; import {TokenUtil} from "../utils/token"; +import {Role} from "./role"; export class Store { ui = new UI(this); @@ -11,6 +12,7 @@ export class Store { user = new User(this); membership = new Membership(this); product = new Product(this); + role = new Role(this); constructor() { TokenUtil.loadToken(); diff --git a/src/store/membership.js b/src/store/membership.js index 786313f..9dad452 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -15,8 +15,6 @@ export class Membership { @action async getData() { const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); - // console.log(response, 'Data user') - // console.log(JSON.stringify(response.body.data), 'Data') this.data = response.body.data ?? [] this.total_data = response.body.total_data ?? 0 } diff --git a/src/store/role.js b/src/store/role.js new file mode 100644 index 0000000..4352187 --- /dev/null +++ b/src/store/role.js @@ -0,0 +1,34 @@ +import {makeAutoObservable} from "mobx"; +import {http} from "../utils/http"; + +export class Role { + page = null; + pageSize = null; + data = []; + total_data = 0 + + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } + + async getData() { + const response = await http.get(`/config/roles?page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data ?? [] + this.total_data = response.body.total_data ?? 0 + } + + async create(data) { + return await http.post('/users').send(data) + } + + async update(id, data) { + return await http.put('/users/' + id).send(data); + } + + async delete(id) { + return await http.del('/users/' + id); + } +} + + From f262eb45e8e37f7655d27019d966f0543f742323 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Fri, 10 Dec 2021 14:35:44 +0700 Subject: [PATCH 023/324] Pages Membership --- src/pages/Membership/Membership.js | 16 ++++++++++++++-- src/pages/Membership/MembershipModal.js | 5 +++-- src/store/membership.js | 8 +++++++- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 0f599a5..936871f 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -90,6 +90,10 @@ export const Membership = observer(() => { > Delete + {/* */} ), }, @@ -111,6 +115,7 @@ export const Membership = observer(() => { setInitialData({}); setConfirmLoading(true); try { + console.log(data) await store.membership.update(initialData.id, data); message.success("Success Update Data Member"); await store.membership.getData(); @@ -135,6 +140,7 @@ export const Membership = observer(() => { } }; + const handleDelete = (record) => { Modal.confirm({ title: "Are you sure reject this record?", @@ -142,11 +148,12 @@ export const Membership = observer(() => { okText: "Yes", okType: "primary", cancelText: "Cancel", - onOk() { + async onOk() { try { //TODO: minta apinya ke ka ilham ya, jangan di uncomment kalo pake api reconcile, nanti beneran ke apus datanya - // await store.membership.delete(record.id) + await store.membership.delete(record) message.success("Success Delete Data"); + await store.membership.getData(); } catch (e) { message.error("Failed Delete Data"); } @@ -158,6 +165,11 @@ export const Membership = observer(() => { }; return (
+ {/* +

Some contents...

+

Some contents...

+

Some contents...

+
*/}
diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index b404639..82fdd81 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -51,16 +51,17 @@ export const MembershipModal = ({ - + Date: Fri, 10 Dec 2021 14:54:25 +0700 Subject: [PATCH 024/324] feat: const for routes and init profile page --- src/component/ProductComponent.js | 3 +- src/pages/App/DesktopLayout.js | 42 ++++++++++++++++------------ src/pages/App/MenuList.js | 19 +++++++++---- src/pages/Login/Login.js | 3 +- src/pages/Membership/Membership.js | 7 +++-- src/pages/Product/Product.js | 5 ++-- src/pages/Transaction/Transaction.js | 5 ++-- src/routes/app.js | 24 ++++++++++++---- 8 files changed, 69 insertions(+), 39 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index a61d8ca..e139217 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -5,6 +5,7 @@ import {ExclamationCircleOutlined} from "@ant-design/icons"; import {useHistory} from "react-router-dom"; import {capitalize} from "lodash"; import {useStore} from "../utils/useStore"; +import {LINKS} from "../routes/app"; export const ProductComponent = observer((props) => { const store = useStore(); @@ -113,7 +114,7 @@ export const ProductComponent = observer((props) => { console.log(id); await store.product.delete(id); message.success("Data Berhasil Dihapus"); - history.push("/app/product"); + history.push(LINKS.PRODUCT); } catch (err) { console.log("error", err); message.error("Gagal menghapus"); diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 1c46dc5..77d14f3 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -2,8 +2,8 @@ import React, {useState} from "react"; import {Button, Drawer, Layout, Menu, Popover, Typography,} from "antd"; import {MenuList} from "./MenuList"; import {Link, useHistory} from "react-router-dom"; -import {CalendarOutlined, HomeOutlined, MenuOutlined, UserOutlined,} from "@ant-design/icons"; -import {AppRoute} from "../../routes/app"; +import {HomeOutlined, MenuOutlined, UserOutlined,} from "@ant-design/icons"; +import {AppRoute, LINKS} from "../../routes/app"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; import {useMediaQuery} from "react-responsive"; @@ -104,35 +104,41 @@ export const DesktopLayout = observer(() => { > - + Home - - + {store.authentication.userData.role !== 'Retail' && + Membership - - - + } + {store.authentication.userData.role !== 'Retail' && + Product - - - + } + {store.authentication.userData.role === 'Retail' && + Transaction - - - - - About + } + + + + Profile + {/**/} + {/* */} + {/* */} + {/* About*/} + {/* */} + {/**/}
@@ -261,7 +267,7 @@ export const DesktopLayout = observer(() => { mode="inline" > - + Profile @@ -352,7 +358,7 @@ export const DesktopLayout = observer(() => { mode="inline" > - + Profile diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 8068ac5..8c7f184 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -1,9 +1,10 @@ import React, {useEffect, useState} from "react"; import {Menu} from "antd"; import {Link} from "react-router-dom"; -import {HomeOutlined,} from "@ant-design/icons"; +import {HomeOutlined, UserOutlined,} from "@ant-design/icons"; import {observer} from "mobx-react-lite"; import {useStore} from "../../utils/useStore"; +import {LINKS} from "../../routes/app"; const {SubMenu} = Menu; @@ -34,29 +35,35 @@ export const MenuList = observer((props) => { forceSubMenuRender={true} > - + Home {store.authentication.userData.role !== 'Retail' && - + Membership } {store.authentication.userData.role !== 'Retail' && - + Product } - {store.authentication.userData.role === 'Retail' && - + {store.authentication.userData.role === ('Supervisor' || 'Sales') && + Transaction } + + + + Profile + + {/**/} {/* */} {/* */} diff --git a/src/pages/Login/Login.js b/src/pages/Login/Login.js index 14f1e6f..a55531b 100644 --- a/src/pages/Login/Login.js +++ b/src/pages/Login/Login.js @@ -3,6 +3,7 @@ import {observer} from 'mobx-react-lite'; import {useStore} from "../../utils/useStore"; import {Button, Card, Col, Form, Input, message, Row, Typography} from 'antd'; import {useHistory} from "react-router-dom"; +import {LINKS} from "../../routes/app"; export const Login = observer(() => { const store = useStore(); @@ -15,7 +16,7 @@ export const Login = observer(() => { username: params.username, password: params.password, }); - history.push('/app/home'); + history.push(LINKS.HOME); } catch (e) { if (e.response?.body?.message) { message.error(e.response.body.message); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index df36bd5..99bfe5e 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -5,6 +5,7 @@ import {observer} from "mobx-react-lite"; import {ExclamationCircleOutlined, FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; import {MembershipModal} from "./MembershipModal"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {LINKS} from "../../routes/app"; const {Search} = Input; @@ -84,12 +85,12 @@ export const Membership = observer(() => { const routeData = [ { - route: "/app/home", + route: LINKS.HOME, name: "Home", }, { - route: "/app/membership", - name: Membership, + route: LINKS.MEMBERSHIP, + name: Membership, }, ]; diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 594374b..146a475 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -5,6 +5,7 @@ import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; import {ProductComponent} from "../../component/ProductComponent"; +import {LINKS} from "../../routes/app"; const {TabPane} = Tabs; const {Search} = Input; @@ -35,11 +36,11 @@ export const Product = observer(() => { const routeData = [ { - route: "/app/home", + route: LINKS.HOME, name: "Home", }, { - route: "/app/product", + route: LINKS.PRODUCT, name: Product, }, ]; diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js index 9d42dfe..5d5e506 100644 --- a/src/pages/Transaction/Transaction.js +++ b/src/pages/Transaction/Transaction.js @@ -3,6 +3,7 @@ import {Button, Card, Col, Input, Row, Tabs} from "antd"; import {FilterOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {Pulsa} from "./Pulsa"; +import {LINKS} from "../../routes/app"; const {TabPane} = Tabs; const {Search} = Input; @@ -13,11 +14,11 @@ export const Transaction = () => { }; const routeData = [ { - route: "/app/home", + route: LINKS.HOME, name: "Home", }, { - route: "/app/transaction", + route: LINKS.TRANSACTION, name: Transaction, }, ]; diff --git a/src/routes/app.js b/src/routes/app.js index efb720d..bada08d 100644 --- a/src/routes/app.js +++ b/src/routes/app.js @@ -5,25 +5,37 @@ import {Membership} from "../pages/Membership/Membership"; import {Product} from "../pages/Product/Product"; import {Transaction} from "../pages/Transaction/Transaction"; +export const LINKS = { + HOME: "/app/home", + ABOUT: "/app/about", + MEMBERSHIP: "/app/membership", + PRODUCT: "/app/product", + TRANSACTION: "/app/transaction", + PROFILE: "/app/profile", +}; + export const AppRoute = () => { return - + - + - + - + - + + + + - + } From c8faca652df4b377a6f6e4fcfef0271c86725c6c Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 10 Dec 2021 14:58:01 +0700 Subject: [PATCH 025/324] feat: config for transaction role --- src/pages/App/MenuList.js | 2 +- src/pages/Profile/Profile.js | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/pages/Profile/Profile.js diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 8c7f184..5a79b91 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -52,7 +52,7 @@ export const MenuList = observer((props) => { Product } - {store.authentication.userData.role === ('Supervisor' || 'Sales') && + {store.authentication.userData.role === ('Retail' || 'Admin') && Transaction diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js new file mode 100644 index 0000000..1b3baea --- /dev/null +++ b/src/pages/Profile/Profile.js @@ -0,0 +1,24 @@ +import React from "react"; +import {PageHeader} from "antd"; + +export const Profile = () => { + return ( +
+ + + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus aut recusandae velit! Consequatur + corporis, + eum fuga, harum incidunt laboriosam minus necessitatibus neque non nostrum pariatur tempore. Dignissimos + impedit + rem tempora! +
+ ) +}; From ed278b61fc42383bd73e2869d2cd81fa1df60dd5 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 10 Dec 2021 15:02:44 +0700 Subject: [PATCH 026/324] feat: init profile page layout --- src/pages/Profile/Profile.js | 56 +++++++++++++++++++++++++----------- src/routes/app.js | 3 +- 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 1b3baea..8aaa140 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -1,24 +1,48 @@ import React from "react"; -import {PageHeader} from "antd"; +import {Button, Card, Col, Input, Row} from "antd"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {FilterOutlined, PlusSquareOutlined} from "@ant-design/icons"; +import {LINKS} from "../../routes/app"; + +const {Search} = Input; export const Profile = () => { + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.PROFILE, + name: Profile, + }, + ]; + return (
- - - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus aut recusandae velit! Consequatur - corporis, - eum fuga, harum incidunt laboriosam minus necessitatibus neque non nostrum pariatur tempore. Dignissimos - impedit - rem tempora! + + + +
+ + + + + + + +
+ + ) }; diff --git a/src/routes/app.js b/src/routes/app.js index bada08d..414bc9e 100644 --- a/src/routes/app.js +++ b/src/routes/app.js @@ -4,6 +4,7 @@ import {About} from "../pages/About/About"; import {Membership} from "../pages/Membership/Membership"; import {Product} from "../pages/Product/Product"; import {Transaction} from "../pages/Transaction/Transaction"; +import {Profile} from "../pages/Profile/Profile"; export const LINKS = { HOME: "/app/home", @@ -32,7 +33,7 @@ export const AppRoute = () => { - + From 63413a78f8b12ce9bf1c53bbaf6fca7c5fa3a8c9 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 10 Dec 2021 16:30:52 +0700 Subject: [PATCH 027/324] fix: pagination and some logic --- .gitignore | 1 + src/component/ProductComponent.js | 18 +- src/pages/Membership/Membership.js | 41 +- src/pages/Product/Product.js | 4 +- yarn.lock | 12951 --------------------------- 5 files changed, 39 insertions(+), 12976 deletions(-) delete mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index 7575959..6f1c4f3 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ yarn-error.log* /.idea /package-lock.json +/yarn.lock diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index e139217..3266a2e 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -177,9 +177,25 @@ export const ProductComponent = observer((props) => {
{ + let pageNumber = page.current; + store.product.pageSize = page.pageSize; + store.product.page = pageNumber - 1; + // store.membership.isLoading = true; + await store.product.getData(); + // store.membership.isLoading = false; + }} /> + { cancelText: "Cancel", onOk() { try { - //TODO: minta apinya ke ka ilham ya, jangan di uncomment kalo pake api reconcile, nanti beneran ke apus datanya - // await store.membership.delete(record.id) message.success("Success Delete Data"); } catch (e) { message.error("Failed Delete Data"); @@ -171,25 +169,26 @@ export const Membership = observer(() => { {store.ui.mediaQuery.isDesktop && (
{ - // store.membership.pageSize = page.pageSize; - // store.membership.page = page.current; - // store.membership.getData(); - // }} - // current={store.membership.page} - // loading={store.membership.pageSize} + key="1" + hasEmpty + columns={columns} + dataSource={store.membership.data} + bordered + pagination={{ + pageSize: store.membership.pageSize, + total: store.membership.total_data, + current: store.membership.page + 1, + showSizeChanger: true, + simple: false + }} + onChange={async (page) => { + let pageNumber = page.current; + store.membership.pageSize = page.pageSize; + store.membership.page = pageNumber - 1; + // store.membership.isLoading = true; + await store.membership.getData(); + // store.membership.isLoading = false; + }} /> )} diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 146a475..f7471f1 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -76,9 +76,7 @@ export const Product = observer(() => { tab={item.name} key={item.id} > - + ))} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 9a5a60e..0000000 --- a/yarn.lock +++ /dev/null @@ -1,12951 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ant-design/colors@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz" - integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== - dependencies: - "@ctrl/tinycolor" "^3.4.0" - -"@ant-design/icons-svg@^4.0.0": - version "4.1.0" - resolved "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz" - integrity sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ== - -"@ant-design/icons@^4.6.2": - version "4.6.2" - resolved "https://registry.npmjs.org/@ant-design/icons/-/icons-4.6.2.tgz" - integrity sha512-QsBG2BxBYU/rxr2eb8b2cZ4rPKAPBpzAR+0v6rrZLp/lnyvflLH3tw1vregK+M7aJauGWjIGNdFmUfpAOtw25A== - dependencies: - "@ant-design/colors" "^6.0.0" - "@ant-design/icons-svg" "^4.0.0" - "@babel/runtime" "^7.11.2" - classnames "^2.2.6" - rc-util "^5.9.4" - -"@ant-design/react-slick@~0.28.1": - version "0.28.1" - resolved "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.28.1.tgz" - integrity sha512-Uk+GNexHOmiK3BMk/xvliNsNt+LYnN49u5o4lqeuMKXJlNqE9kGpEF03KpxDqu/zybO0/0yAJALha8oPtR5iHA== - dependencies: - "@babel/runtime" "^7.10.4" - classnames "^2.2.5" - json2mq "^0.2.0" - lodash "^4.17.15" - resize-observer-polyfill "^1.5.0" - -"@babel/code-frame@7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.5.5": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.13.tgz" - integrity sha512-U/hshG5R+SIoW7HVWIdmy1cB7s3ki+r3FpyEZiCgpi4tFgPnX/vynY80ZGSASOIrUM6O7VxOgCZgdt7h97bUGg== - -"@babel/compat-data@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.5.tgz" - integrity sha512-kixrYn4JwfAVPa0f2yfzc2AWti6WRRyO3XjWW5PJAvtE11qhSayrrcrEnee05KAtNaPC+EwehE8Qt1UedEVB8w== - -"@babel/core@7.12.3": - version "7.12.3" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz" - integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.1" - "@babel/parser" "^7.12.3" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - 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.5.0" - -"@babel/core@7.14.5", "@babel/core@^7.1.0": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.14.5.tgz" - integrity sha512-RN/AwP2DJmQTZSfiDaD+JQQ/J99KsIpOCfBE5pL+5jJSt7nI3nYGoAXZu+ffYSQ029NLs2DstZb+eR81uuARgg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.5" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helpers" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@^7.8.4": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.13.tgz" - integrity sha512-BQKE9kXkPlXHPeqissfxo0lySWJcYdEP0hdtJOH/iJfDdhOCcgtNCjftCJg3qqauB4h+lz2N6ixM++b9DN1Tcw== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.12.13" - "@babel/helper-module-transforms" "^7.12.13" - "@babel/helpers" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.12.1", "@babel/generator@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.12.13.tgz" - integrity sha512-9qQ8Fgo8HaSvHEt6A5+BATP7XktD/AdAnObUeTRz5/e2y3kbrxZgz32qUJJsdmwUvBJzF4AeV21nGTNwv05Mpw== - dependencies: - "@babel/types" "^7.12.13" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz" - integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA== - dependencies: - "@babel/types" "^7.14.5" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz" - integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-annotate-as-pure@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz" - integrity sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz" - integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.13.tgz" - integrity sha512-dXof20y/6wB5HnLOGyLh/gobsMvDNoekcC+8MCV2iaTd5JemhFkPD73QB+tK3iFC9P0xJC73B6MvKkyUfS9cCw== - dependencies: - "@babel/compat-data" "^7.12.13" - "@babel/helper-validator-option" "^7.12.11" - browserslist "^4.14.5" - semver "^5.5.0" - -"@babel/helper-compilation-targets@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz" - integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== - dependencies: - "@babel/compat-data" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.13.tgz" - integrity sha512-Vs/e9wv7rakKYeywsmEBSRC9KtmE7Px+YBlESekLeJOF0zbGUicGfXSNi3o+tfXSNS48U/7K9mIOOCR79Cl3+Q== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-member-expression-to-functions" "^7.12.13" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - -"@babel/helper-create-class-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.5.tgz" - integrity sha512-Uq9z2e7ZtcnDMirRqAGLRaLwJn+Lrh388v5ETrR3pALJnElVh2zqQmdbz4W2RUJYohAPh2mtyPUgyMHMzXMncQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - -"@babel/helper-create-regexp-features-plugin@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.13.tgz" - integrity sha512-XC+kiA0J3at6E85dL5UnCYfVOcIZ834QcAY0TIpgUVnz0zDzg+0TtvZTnJ4g9L1dPRGe30Qi03XCIS4tYCLtqw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - regexpu-core "^4.7.1" - -"@babel/helper-explode-assignable-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz" - integrity sha512-5loeRNvMo9mx1dA/d6yNi+YiKziJZFylZnCo1nmFF4qPU4yJ14abhWESuSMQSlQxWdxdOFzxXjk/PpfudTtYyw== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz" - integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== - dependencies: - "@babel/helper-get-function-arity" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-get-function-arity@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz" - integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-hoist-variables@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.12.13.tgz" - integrity sha512-KSC5XSj5HreRhYQtZ3cnSnQwDzgnbdUDEFsxkN0m6Q3WrCRt72xrnZ8+h+pX7YxM7hr87zIO3a/v5p/H3TrnVw== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-hoist-variables@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz" - integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-member-expression-to-functions@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.13.tgz" - integrity sha512-B+7nN0gIL8FZ8SvMcF+EPyB21KnCcZHQZFczCxbiNGV/O0rsrSBlWGLzmtBJ3GMjSVMIm4lpFhR+VdVBuIsUcQ== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-member-expression-to-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.5.tgz" - integrity sha512-UxUeEYPrqH1Q/k0yRku1JE7dyfyehNwT6SVkMHvYvPDv4+uu627VXBckVj891BO8ruKBkiDoGnZf4qPDD8abDQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz" - integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-module-imports@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz" - integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz" - integrity sha512-acKF7EjqOR67ASIlDTupwkKM1eUisNAjaSduo5Cz+793ikfnpe7p4Q7B7EWU2PCoSTPWsQkR7hRUWEIZPiVLGA== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" - "@babel/helper-simple-access" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.12.11" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" - lodash "^4.17.19" - -"@babel/helper-module-transforms@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz" - integrity sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-optimise-call-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz" - integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz" - integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA== - -"@babel/helper-plugin-utils@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-remap-async-to-generator@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.13.tgz" - integrity sha512-Qa6PU9vNcj1NZacZZI1Mvwt+gXDH6CTfgAkSjeRMLE8HxtDK76+YDId6NQR+z7Rgd5arhD2cIbS74r0SxD6PDA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-wrap-function" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-replace-supers@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz" - integrity sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.12.13" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-replace-supers@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz" - integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-simple-access@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz" - integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-simple-access@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz" - integrity sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-split-export-declaration@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz" - integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-validator-identifier@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz" - integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== - -"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11": - version "7.12.11" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz" - integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helper-wrap-function@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.13.tgz" - integrity sha512-t0aZFEmBJ1LojdtJnhOaQEVejnzYhyjWHSsNSNo8vOYRbAJNh6r6GQF7pd36SqG7OKGbn+AewVQ/0IfYfIuGdw== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helpers@^7.12.1", "@babel/helpers@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.13.tgz" - integrity sha512-oohVzLRZ3GQEk4Cjhfs9YkJA4TdIDTObdBEZGrd6F/T0GPSnuV6l22eMcxlvcvzVIPH3VTtxbseudM1zIE+rPQ== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helpers@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.5.tgz" - integrity sha512-xtcWOuN9VL6nApgVHtq3PPcQv5qFBJzoSZzJ/2c0QK/IP/gxVcoWSNQwFEGvmbQsuS9rhYqjILDGGXcTkA705Q== - dependencies: - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz" - integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.7.0": - version "7.12.14" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.14.tgz" - integrity sha512-xcfxDq3OrBnDsA/Z8eK5/2iPcLD8qbOaSSfOw4RA6jp4i7e6dEQ7+wTwxItEwzcXPQcsry5nZk96gmVPKletjQ== - -"@babel/parser@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.14.5.tgz" - integrity sha512-TM8C+xtH/9n1qzX+JNHi7AN2zHMTiPUtspO0ZdHflW8KaskkALhMmuMHb4bCmNdv9VAPzJX3/bXqkVLnAvsPfg== - -"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz" - integrity sha512-1KH46Hx4WqP77f978+5Ye/VUbuwQld2hph70yaw2hXS2v7ER2f3nlpNMu909HO2rbvP0NKLlMVDPh9KXklVMhA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-remap-async-to-generator" "^7.12.13" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@babel/plugin-proposal-class-properties@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz" - integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.13.tgz" - integrity sha512-8SCJ0Ddrpwv4T7Gwb33EmW1V9PY5lggTO+A8WjyIwxrSHDUyBw4MtF96ifn1n8H806YlxbVCoKXbbmzD6RD+cA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-decorators@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz" - integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-decorators" "^7.12.1" - -"@babel/plugin-proposal-decorators@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.5.tgz" - integrity sha512-LYz5nvQcvYeRVjui1Ykn28i+3aUiXwQ/3MGoEy0InTaz1pJo/lAzmIDXX+BQny/oufgHzJ6vnEEiXQ8KZjEVFg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-decorators" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz" - integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - -"@babel/plugin-proposal-export-namespace-from@^7.12.1", "@babel/plugin-proposal-export-namespace-from@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz" - integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz" - integrity sha512-v9eEi4GiORDg8x+Dmi5r8ibOe0VXoKDeNPYcTTxdGN4eOWikrJfDJCJrr1l5gKGvsNyGJbrfMftC2dTL6oz7pg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-logical-assignment-operators@^7.12.1", "@babel/plugin-proposal-logical-assignment-operators@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz" - integrity sha512-fqmiD3Lz7jVdK6kabeSr1PZlWSUVqSitmHEe3Z00dtGTKieWnX9beafvavc32kjORa5Bai4QNHgFDwWJP+WtSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz" - integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.13.tgz" - integrity sha512-Qoxpy+OxhDBI5kRqliJFAl4uWXk3Bn24WeFstPH0iLymFehSAUR8MHpqU7njyXv/qbo7oN6yTy5bfCmXdKpo1Q== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-numeric-separator@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz" - integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-numeric-separator@^7.12.1", "@babel/plugin-proposal-numeric-separator@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz" - integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.13.tgz" - integrity sha512-WvA1okB/0OS/N3Ldb3sziSrXg6sRphsBgqiccfcQq7woEn5wQLNX82Oc4PlaFcdwcWHuQXAtb8ftbS8Fbsg/sg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.12.13" - -"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz" - integrity sha512-9+MIm6msl9sHWg58NvqpNpLtuFbmpFYk37x8kgnGzAHvX35E1FyAwSUt5hIkSoWJFSAH+iwU8bJ4fcD1zKXOzg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz" - integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.13.tgz" - integrity sha512-0ZwjGfTcnZqyV3y9DSD1Yk3ebp+sIUpT2YDqP8hovzaNZnQq2Kd7PEqa6iOIUDBXBt7Jl3P7YAcEIL5Pz8u09Q== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.13.tgz" - integrity sha512-sV0V57uUwpauixvR7s2o75LmwJI6JECwm5oPUY5beZB1nBl2i37hc7CJGqB5G+58fur5Y6ugvl3LRONk5x34rg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz" - integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-decorators@^7.12.1": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz" - integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-decorators@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz" - integrity sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.0": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.12.1": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz" - integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz" - integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz" - integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-typescript@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz" - integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.13.tgz" - integrity sha512-tBtuN6qtCTd+iHzVZVOMNp+L04iIJBpqkdY42tWbmjIT5wvR2kx7gxMBsyhQtFzHwBbyGi9h8J8r9HgnOpQHxg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.13.tgz" - integrity sha512-psM9QHcHaDr+HZpRuJcE1PXESuGWSCcbiGFFhhwfzdbTxaGDVzuVtdNYliAwcRo3GFg0Bc8MmI+AvIGYIJG04A== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-remap-async-to-generator" "^7.12.13" - -"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz" - integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-block-scoping@^7.12.1", "@babel/plugin-transform-block-scoping@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz" - integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.13.tgz" - integrity sha512-cqZlMlhCC1rVnxE5ZGMtIb896ijL90xppMiuWXcwcOAuFczynpd3KYemb91XFFPi3wJSe/OcrX9lXoowatkkxA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.13.tgz" - integrity sha512-dDfuROUPGK1mTtLKyDPUavmj2b6kFu82SmgpztBFEO974KMjJT+Ytj3/oWsTUMBmgPcp9J5Pc1SlcAYRpJ2hRA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.13.tgz" - integrity sha512-Dn83KykIFzjhA3FDPA1z4N+yfF3btDGhjnJwxIj0T43tP0flCujnU8fKgEkf0C1biIpSv9NZegPBQ1J6jYkwvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz" - integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz" - integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz" - integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-flow-strip-types@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz" - integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-flow" "^7.12.1" - -"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.13.tgz" - integrity sha512-xCbdgSzXYmHGyVX3+BsQjcd4hv4vA/FDy7Kc8eOpzKmBBPEOTurt0w5fCRQaGl+GSBORKgJdstQ1rHl4jbNseQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz" - integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz" - integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz" - integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.13.tgz" - integrity sha512-JHLOU0o81m5UqG0Ulz/fPC68/v+UTuGTWaZBUwpEk1fYQ1D9LfKV6MPn4ttJKqRo5Lm460fkzjLTL4EHvCprvA== - dependencies: - "@babel/helper-module-transforms" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.13.tgz" - integrity sha512-OGQoeVXVi1259HjuoDnsQMlMkT9UkZT9TpXAsqWplS/M0N1g3TJAn/ByOCeQu7mfjc5WpSsRU+jV1Hd89ts0kQ== - dependencies: - "@babel/helper-module-transforms" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-simple-access" "^7.12.13" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz" - integrity sha512-aHfVjhZ8QekaNF/5aNdStCGzwTbU7SI5hUybBKlMzqIMC7w7Ho8hx5a4R/DkTHfRfLwHGGxSpFt9BfxKCoXKoA== - dependencies: - "@babel/helper-hoist-variables" "^7.12.13" - "@babel/helper-module-transforms" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-validator-identifier" "^7.12.11" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.13.tgz" - integrity sha512-BgZndyABRML4z6ibpi7Z98m4EVLFI9tVsZDADC14AElFaNHHBcJIovflJ6wtCqFxwy2YJ1tJhGRsr0yLPKoN+w== - dependencies: - "@babel/helper-module-transforms" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz" - integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - -"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz" - integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz" - integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" - -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.13.tgz" - integrity sha512-e7QqwZalNiBRHCpJg/P8s/VJeSRYgmtWySs1JwvfwPqhBbiWfOcHDKdeAi6oAyIimoKWBlwc8oTgbZHdhCoVZA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz" - integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.13.tgz" - integrity sha512-qmzKVTn46Upvtxv8LQoQ8mTCdUC83AOVQIQm57e9oekLT5cmK9GOMOfcWhe8jMNx4UJXn/UDhVZ/7lGofVNeDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-display-name@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz" - integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-react-display-name@^7.12.1", "@babel/plugin-transform-react-display-name@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz" - integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-jsx-development@^7.12.1", "@babel/plugin-transform-react-jsx-development@^7.12.12": - version "7.12.12" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.12.tgz" - integrity sha512-i1AxnKxHeMxUaWVXQOSIco4tvVvvCxMSfeBMnMM06mpaJt3g+MpxYQQrDfojUQldP1xxraPSJYSMEljoWM/dCg== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.12.12" - -"@babel/plugin-transform-react-jsx-self@^7.12.1": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz" - integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-jsx-source@^7.12.1": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz" - integrity sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.13.tgz" - integrity sha512-hhXZMYR8t9RvduN2uW4sjl6MRtUhzNE726JvoJhpjhxKgRUVkZqTsA0xc49ALZxQM7H26pZ/lLvB2Yrea9dllA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/plugin-transform-react-pure-annotations@^7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz" - integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz" - integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz" - integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-runtime@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz" - integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== - dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz" - integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.13.tgz" - integrity sha512-dUCrqPIowjqk5pXsx1zPftSq4sT0aCeZVAxhdgs3AMgyaDmoUT0G+5h3Dzja27t76aUEIJWlFgPJqJ/d4dbTtg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - -"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz" - integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.13.tgz" - integrity sha512-arIKlWYUgmNsF28EyfmiQHJLJFlAJNYkuQO10jL46ggjBpeb2re1P9K9YGxNJB45BqTbaslVysXDYm/g3sN/Qg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz" - integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-typescript@^7.12.1": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.13.tgz" - integrity sha512-z1VWskPJxK9tfxoYvePWvzSJC+4pxXr8ArmRm5ofqgi+mwpKg6lvtomkIngBYMJVnKhsFYVysCQLDn//v2RHcg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-typescript" "^7.12.13" - -"@babel/plugin-transform-unicode-escapes@^7.12.1", "@babel/plugin-transform-unicode-escapes@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz" - integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz" - integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/preset-env@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz" - integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== - dependencies: - "@babel/compat-data" "^7.12.1" - "@babel/helper-compilation-targets" "^7.12.1" - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-option" "^7.12.1" - "@babel/plugin-proposal-async-generator-functions" "^7.12.1" - "@babel/plugin-proposal-class-properties" "^7.12.1" - "@babel/plugin-proposal-dynamic-import" "^7.12.1" - "@babel/plugin-proposal-export-namespace-from" "^7.12.1" - "@babel/plugin-proposal-json-strings" "^7.12.1" - "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" - "@babel/plugin-proposal-numeric-separator" "^7.12.1" - "@babel/plugin-proposal-object-rest-spread" "^7.12.1" - "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.12.1" - "@babel/plugin-proposal-private-methods" "^7.12.1" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.12.1" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.12.1" - "@babel/plugin-transform-arrow-functions" "^7.12.1" - "@babel/plugin-transform-async-to-generator" "^7.12.1" - "@babel/plugin-transform-block-scoped-functions" "^7.12.1" - "@babel/plugin-transform-block-scoping" "^7.12.1" - "@babel/plugin-transform-classes" "^7.12.1" - "@babel/plugin-transform-computed-properties" "^7.12.1" - "@babel/plugin-transform-destructuring" "^7.12.1" - "@babel/plugin-transform-dotall-regex" "^7.12.1" - "@babel/plugin-transform-duplicate-keys" "^7.12.1" - "@babel/plugin-transform-exponentiation-operator" "^7.12.1" - "@babel/plugin-transform-for-of" "^7.12.1" - "@babel/plugin-transform-function-name" "^7.12.1" - "@babel/plugin-transform-literals" "^7.12.1" - "@babel/plugin-transform-member-expression-literals" "^7.12.1" - "@babel/plugin-transform-modules-amd" "^7.12.1" - "@babel/plugin-transform-modules-commonjs" "^7.12.1" - "@babel/plugin-transform-modules-systemjs" "^7.12.1" - "@babel/plugin-transform-modules-umd" "^7.12.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" - "@babel/plugin-transform-new-target" "^7.12.1" - "@babel/plugin-transform-object-super" "^7.12.1" - "@babel/plugin-transform-parameters" "^7.12.1" - "@babel/plugin-transform-property-literals" "^7.12.1" - "@babel/plugin-transform-regenerator" "^7.12.1" - "@babel/plugin-transform-reserved-words" "^7.12.1" - "@babel/plugin-transform-shorthand-properties" "^7.12.1" - "@babel/plugin-transform-spread" "^7.12.1" - "@babel/plugin-transform-sticky-regex" "^7.12.1" - "@babel/plugin-transform-template-literals" "^7.12.1" - "@babel/plugin-transform-typeof-symbol" "^7.12.1" - "@babel/plugin-transform-unicode-escapes" "^7.12.1" - "@babel/plugin-transform-unicode-regex" "^7.12.1" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.12.1" - core-js-compat "^3.6.2" - semver "^5.5.0" - -"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.8.4": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.13.tgz" - integrity sha512-JUVlizG8SoFTz4LmVUL8++aVwzwxcvey3N0j1tRbMAXVEy95uQ/cnEkmEKHN00Bwq4voAV3imQGnQvpkLAxsrw== - dependencies: - "@babel/compat-data" "^7.12.13" - "@babel/helper-compilation-targets" "^7.12.13" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-validator-option" "^7.12.11" - "@babel/plugin-proposal-async-generator-functions" "^7.12.13" - "@babel/plugin-proposal-class-properties" "^7.12.13" - "@babel/plugin-proposal-dynamic-import" "^7.12.1" - "@babel/plugin-proposal-export-namespace-from" "^7.12.13" - "@babel/plugin-proposal-json-strings" "^7.12.13" - "@babel/plugin-proposal-logical-assignment-operators" "^7.12.13" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.13" - "@babel/plugin-proposal-numeric-separator" "^7.12.13" - "@babel/plugin-proposal-object-rest-spread" "^7.12.13" - "@babel/plugin-proposal-optional-catch-binding" "^7.12.13" - "@babel/plugin-proposal-optional-chaining" "^7.12.13" - "@babel/plugin-proposal-private-methods" "^7.12.13" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.12.13" - "@babel/plugin-transform-arrow-functions" "^7.12.13" - "@babel/plugin-transform-async-to-generator" "^7.12.13" - "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.12.13" - "@babel/plugin-transform-classes" "^7.12.13" - "@babel/plugin-transform-computed-properties" "^7.12.13" - "@babel/plugin-transform-destructuring" "^7.12.13" - "@babel/plugin-transform-dotall-regex" "^7.12.13" - "@babel/plugin-transform-duplicate-keys" "^7.12.13" - "@babel/plugin-transform-exponentiation-operator" "^7.12.13" - "@babel/plugin-transform-for-of" "^7.12.13" - "@babel/plugin-transform-function-name" "^7.12.13" - "@babel/plugin-transform-literals" "^7.12.13" - "@babel/plugin-transform-member-expression-literals" "^7.12.13" - "@babel/plugin-transform-modules-amd" "^7.12.13" - "@babel/plugin-transform-modules-commonjs" "^7.12.13" - "@babel/plugin-transform-modules-systemjs" "^7.12.13" - "@babel/plugin-transform-modules-umd" "^7.12.13" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" - "@babel/plugin-transform-new-target" "^7.12.13" - "@babel/plugin-transform-object-super" "^7.12.13" - "@babel/plugin-transform-parameters" "^7.12.13" - "@babel/plugin-transform-property-literals" "^7.12.13" - "@babel/plugin-transform-regenerator" "^7.12.13" - "@babel/plugin-transform-reserved-words" "^7.12.13" - "@babel/plugin-transform-shorthand-properties" "^7.12.13" - "@babel/plugin-transform-spread" "^7.12.13" - "@babel/plugin-transform-sticky-regex" "^7.12.13" - "@babel/plugin-transform-template-literals" "^7.12.13" - "@babel/plugin-transform-typeof-symbol" "^7.12.13" - "@babel/plugin-transform-unicode-escapes" "^7.12.13" - "@babel/plugin-transform-unicode-regex" "^7.12.13" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.12.13" - core-js-compat "^3.8.0" - semver "^5.5.0" - -"@babel/preset-modules@^0.1.3": - version "0.1.4" - resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.1.tgz" - integrity sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-react-display-name" "^7.12.1" - "@babel/plugin-transform-react-jsx" "^7.12.1" - "@babel/plugin-transform-react-jsx-development" "^7.12.1" - "@babel/plugin-transform-react-jsx-self" "^7.12.1" - "@babel/plugin-transform-react-jsx-source" "^7.12.1" - "@babel/plugin-transform-react-pure-annotations" "^7.12.1" - -"@babel/preset-react@^7.12.5": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.13.tgz" - integrity sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-transform-react-display-name" "^7.12.13" - "@babel/plugin-transform-react-jsx" "^7.12.13" - "@babel/plugin-transform-react-jsx-development" "^7.12.12" - "@babel/plugin-transform-react-pure-annotations" "^7.12.1" - -"@babel/preset-typescript@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz" - integrity sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-typescript" "^7.12.1" - -"@babel/runtime-corejs3@^7.10.2": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.13.tgz" - integrity sha512-8fSpqYRETHATtNitsCXq8QQbKJP31/KnDl2Wz2Vtui9nKzjss2ysuZtyVsWjBtvkeEFo346gkwjYPab1hvrXkQ== - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz" - integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== - 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.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz" - integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/template@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz" - integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.13", "@babel/traverse@^7.7.0": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz" - integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.12.13" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.5.tgz" - integrity sha512-G3BiS15vevepdmFqmUc9X+64y0viZYygubAMO8SvBmKARuF6CPSZtH4Ng9vi/lrWlZFGe3FWdXNy835akH8Glg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz" - integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz" - integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== - -"@csstools/normalize.css@^10.1.0": - version "10.1.0" - resolved "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz" - integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== - -"@ctrl/tinycolor@^3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz" - integrity sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ== - -"@eslint/eslintrc@^0.4.2": - version "0.4.2" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz" - integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.1.0": - version "15.1.1" - resolved "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== - -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz" - integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" - slash "^3.0.0" - -"@jest/core@^26.6.0", "@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz" - integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^26.6.0", "@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz" - integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== - dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz" - integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== - dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" - "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz" - integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" - -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz" - integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" - -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz" - integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^26.6.0", "@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz" - integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz" - integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== - dependencies: - "@jest/test-result" "^26.6.2" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz" - integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/transform@^27.0.2": - version "27.0.2" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.0.2.tgz" - integrity sha512-H8sqKlgtDfVog/s9I4GG2XMbi4Ar7RBxjsKQDUhn2XHAi3NG+GoQwWMER+YfantzExbjNqQvqBHzo/G2pfTiPw== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.0.2" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^27.0.2" - jest-regex-util "^27.0.1" - jest-util "^27.0.2" - micromatch "^4.0.4" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^26.6.0", "@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^27.0.2": - version "27.0.2" - resolved "https://registry.npmjs.org/@jest/types/-/types-27.0.2.tgz" - integrity sha512-XpjCtJ/99HB4PmyJ2vgmN7vT+JLP7RW1FBT9RgnMFS4Dt7cvIyBee8O3/j98aUZ34ZpenPZFqmaaObWSeL65dg== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@nodelib/fs.scandir@2.1.4": - version "2.1.4" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz" - integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== - dependencies: - "@nodelib/fs.stat" "2.0.4" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": - version "2.0.4" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz" - integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.6" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz" - integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== - dependencies: - "@nodelib/fs.scandir" "2.1.4" - fastq "^1.6.0" - -"@npmcli/move-file@^1.0.1": - version "1.1.1" - resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.1.tgz" - integrity sha512-LtWTicuF2wp7PNTuyCwABx7nNG+DnzSE8gN0iWxkC6mpgm/iOPu0ZMTkXuCxmJxtWFsDxUaixM9COSNJEMUfuQ== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@pmmmwh/react-refresh-webpack-plugin@0.4.3": - version "0.4.3" - resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz" - integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== - dependencies: - ansi-html "^0.0.7" - error-stack-parser "^2.0.6" - html-entities "^1.2.1" - native-url "^0.2.6" - schema-utils "^2.6.5" - source-map "^0.7.3" - -"@rollup/plugin-node-resolve@^7.1.1": - version "7.1.3" - resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz" - integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== - dependencies: - "@rollup/pluginutils" "^3.0.8" - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.14.2" - -"@rollup/plugin-replace@^2.3.1": - version "2.3.4" - resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz" - integrity sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@sinonjs/commons@^1.7.0": - version "1.8.2" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz" - integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@surma/rollup-plugin-off-main-thread@^1.1.1": - version "1.4.2" - resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz" - integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== - dependencies: - ejs "^2.6.1" - magic-string "^0.25.0" - -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== - -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== - -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== - -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== - -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== - -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== - -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz" - integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== - -"@svgr/babel-preset@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz" - integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" - -"@svgr/core@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz" - integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== - dependencies: - "@svgr/plugin-jsx" "^5.5.0" - camelcase "^6.2.0" - cosmiconfig "^7.0.0" - -"@svgr/hast-util-to-babel-ast@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz" - integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== - dependencies: - "@babel/types" "^7.12.6" - -"@svgr/plugin-jsx@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz" - integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== - dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" - svg-parser "^2.0.2" - -"@svgr/plugin-svgo@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz" - integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== - dependencies: - cosmiconfig "^7.0.0" - deepmerge "^4.2.2" - svgo "^1.2.2" - -"@svgr/webpack@5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz" - integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - loader-utils "^2.0.0" - -"@testing-library/dom@^7.28.1": - version "7.29.4" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-7.29.4.tgz" - integrity sha512-CtrJRiSYEfbtNGtEsd78mk1n1v2TUbeABlNIcOCJdDfkN5/JTOwQEbbQpoSRxGqzcWPgStMvJ4mNolSuBRv1NA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" - chalk "^4.1.0" - dom-accessibility-api "^0.5.4" - lz-string "^1.4.4" - pretty-format "^26.6.2" - -"@testing-library/jest-dom@^5.14.1": - version "5.14.1" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz" - integrity sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ== - dependencies: - "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^4.2.2" - chalk "^3.0.0" - css "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" - redent "^3.0.0" - -"@testing-library/react@^11.2.7": - version "11.2.7" - resolved "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz" - integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^7.28.1" - -"@testing-library/user-event@^13.1.9": - version "13.1.9" - resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.1.9.tgz" - integrity sha512-NZr0zL2TMOs2qk+dNlqrAdbaRW5dAmYwd1yuQ4r7HpkVEOj0MWuUjDWwKhcLd/atdBy8ZSMHSKp+kXSQe47ezg== - dependencies: - "@babel/runtime" "^7.12.5" - -"@types/aria-query@^4.2.0": - version "4.2.1" - resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.1.tgz" - integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg== - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.12" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz" - integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__core@^7.1.14": - version "7.1.14" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz" - integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.2" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz" - integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.0" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz" - integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.11.0" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz" - integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== - dependencies: - "@babel/types" "^7.3.0" - -"@types/eslint@^7.2.6": - version "7.2.13" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz" - integrity sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*": - version "0.0.46" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz" - integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/glob@^7.1.1": - version "7.1.3" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/graceful-fs@^4.1.2": - version "4.1.4" - resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz" - integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== - dependencies: - "@types/node" "*" - -"@types/html-minifier-terser@^5.0.0": - version "5.1.1" - resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz" - integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@*": - version "26.0.20" - resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.20.tgz" - integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== - dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" - -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7": - version "7.0.7" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/node@*": - version "14.14.22" - resolved "https://registry.npmjs.org/@types/node/-/node-14.14.22.tgz" - integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prettier@^2.0.0": - version "2.1.6" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.6.tgz" - integrity sha512-6gOkRe7OIioWAXfnO/2lFiv+SJichKVSys1mSsgyrYHSEjk8Ctv4tSR/Odvnu+HWlH2C8j53dahU03XmQdd5fA== - -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz" - integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== - -"@types/tapable@^1", "@types/tapable@^1.0.5": - version "1.0.7" - resolved "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.7.tgz" - integrity sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ== - -"@types/testing-library__jest-dom@^5.9.1": - version "5.9.5" - resolved "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz" - integrity sha512-ggn3ws+yRbOHog9GxnXiEZ/35Mow6YtPZpd7Z5mKDeZS/o7zx3yAle0ov/wjhVB5QT4N2Dt+GNoGCdqkBGCajQ== - dependencies: - "@types/jest" "*" - -"@types/uglify-js@*": - version "3.13.0" - resolved "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.0.tgz" - integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q== - dependencies: - source-map "^0.6.1" - -"@types/webpack-sources@*": - version "2.1.0" - resolved "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz" - integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@^4.41.8": - version "4.41.29" - resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.29.tgz" - integrity sha512-6pLaORaVNZxiB3FSHbyBiWM7QdazAWda1zvAq4SbZObZqHSDbWLi62iFdblVea6SK9eyBIVp5yHhKt/yNQdR7Q== - dependencies: - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - anymatch "^3.0.0" - source-map "^0.6.0" - -"@types/yargs-parser@*": - version "20.2.0" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz" - integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== - -"@types/yargs@^15.0.0": - version "15.0.13" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz" - integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^16.0.0": - version "16.0.3" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz" - integrity sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^4.26.1": - version "4.26.1" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.26.1.tgz" - integrity sha512-aoIusj/8CR+xDWmZxARivZjbMBQTT9dImUtdZ8tVCVRXgBUuuZyM5Of5A9D9arQPxbi/0rlJLcuArclz/rCMJw== - dependencies: - "@typescript-eslint/experimental-utils" "4.26.1" - "@typescript-eslint/scope-manager" "4.26.1" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - lodash "^4.17.21" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.26.1": - version "4.26.1" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.26.1.tgz" - integrity sha512-sQHBugRhrXzRCs9PaGg6rowie4i8s/iD/DpTB+EXte8OMDfdCG5TvO73XlO9Wc/zi0uyN4qOmX9hIjQEyhnbmQ== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.26.1" - "@typescript-eslint/types" "4.26.1" - "@typescript-eslint/typescript-estree" "4.26.1" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/experimental-utils@^3.10.1": - version "3.10.1" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz" - integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/typescript-estree" "3.10.1" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/experimental-utils@^4.0.1": - version "4.14.2" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.2.tgz" - integrity sha512-mV9pmET4C2y2WlyHmD+Iun8SAEqkLahHGBkGqDVslHkmoj3VnxnGP4ANlwuxxfq1BsKdl/MPieDbohCEQgKrwA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.14.2" - "@typescript-eslint/types" "4.14.2" - "@typescript-eslint/typescript-estree" "4.14.2" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^4.26.1": - version "4.26.1" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.26.1.tgz" - integrity sha512-q7F3zSo/nU6YJpPJvQveVlIIzx9/wu75lr6oDbDzoeIRWxpoc/HQ43G4rmMoCc5my/3uSj2VEpg/D83LYZF5HQ== - dependencies: - "@typescript-eslint/scope-manager" "4.26.1" - "@typescript-eslint/types" "4.26.1" - "@typescript-eslint/typescript-estree" "4.26.1" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.14.2": - version "4.14.2" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.14.2.tgz" - integrity sha512-cuV9wMrzKm6yIuV48aTPfIeqErt5xceTheAgk70N1V4/2Ecj+fhl34iro/vIssJlb7XtzcaD07hWk7Jk0nKghg== - dependencies: - "@typescript-eslint/types" "4.14.2" - "@typescript-eslint/visitor-keys" "4.14.2" - -"@typescript-eslint/scope-manager@4.26.1": - version "4.26.1" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.26.1.tgz" - integrity sha512-TW1X2p62FQ8Rlne+WEShyd7ac2LA6o27S9i131W4NwDSfyeVlQWhw8ylldNNS8JG6oJB9Ha9Xyc+IUcqipvheQ== - dependencies: - "@typescript-eslint/types" "4.26.1" - "@typescript-eslint/visitor-keys" "4.26.1" - -"@typescript-eslint/types@3.10.1": - version "3.10.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz" - integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== - -"@typescript-eslint/types@4.14.2": - version "4.14.2" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.14.2.tgz" - integrity sha512-LltxawRW6wXy4Gck6ZKlBD05tCHQUj4KLn4iR69IyRiDHX3d3NCAhO+ix5OR2Q+q9bjCrHE/HKt+riZkd1At8Q== - -"@typescript-eslint/types@4.26.1": - version "4.26.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.26.1.tgz" - integrity sha512-STyMPxR3cS+LaNvS8yK15rb8Y0iL0tFXq0uyl6gY45glyI7w0CsyqyEXl/Fa0JlQy+pVANeK3sbwPneCbWE7yg== - -"@typescript-eslint/typescript-estree@3.10.1": - version "3.10.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz" - integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== - dependencies: - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/visitor-keys" "3.10.1" - debug "^4.1.1" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/typescript-estree@4.14.2": - version "4.14.2" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.2.tgz" - integrity sha512-ESiFl8afXxt1dNj8ENEZT12p+jl9PqRur+Y19m0Z/SPikGL6rqq4e7Me60SU9a2M28uz48/8yct97VQYaGl0Vg== - dependencies: - "@typescript-eslint/types" "4.14.2" - "@typescript-eslint/visitor-keys" "4.14.2" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/typescript-estree@4.26.1": - version "4.26.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.1.tgz" - integrity sha512-l3ZXob+h0NQzz80lBGaykdScYaiEbFqznEs99uwzm8fPHhDjwaBFfQkjUC/slw6Sm7npFL8qrGEAMxcfBsBJUg== - dependencies: - "@typescript-eslint/types" "4.26.1" - "@typescript-eslint/visitor-keys" "4.26.1" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@3.10.1": - version "3.10.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz" - integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== - dependencies: - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/visitor-keys@4.14.2": - version "4.14.2" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.2.tgz" - integrity sha512-KBB+xLBxnBdTENs/rUgeUKO0UkPBRs2vD09oMRRIkj5BEN8PX1ToXV532desXfpQnZsYTyLLviS7JrPhdL154w== - dependencies: - "@typescript-eslint/types" "4.14.2" - eslint-visitor-keys "^2.0.0" - -"@typescript-eslint/visitor-keys@4.26.1": - version "4.26.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.1.tgz" - integrity sha512-IGouNSSd+6x/fHtYRyLOM6/C+QxMDzWlDtN41ea+flWuSF9g02iqcIlX8wM53JkfljoIjP0U+yp7SiTS1onEkw== - dependencies: - "@typescript-eslint/types" "4.26.1" - eslint-visitor-keys "^2.0.0" - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abab@^2.0.3: - version "2.0.5" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -address@1.1.2, address@^1.0.1: - version "1.1.2" - resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -adjust-sourcemap-loader@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz" - integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== - dependencies: - loader-utils "^2.0.0" - regex-parser "^2.2.11" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.6.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz" - integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-html@0.0.7, ansi-html@^0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -antd@^4.16.2: - version "4.16.2" - resolved "https://registry.npmjs.org/antd/-/antd-4.16.2.tgz" - integrity sha512-8aRrhzVz0Z32PptW9syq0eQqjc9wfJn3nxgVqqxGNH5BkFr1LRiqM0wJ6FNiYc6XVbpnqP20z5gufYFHC7BHqw== - dependencies: - "@ant-design/colors" "^6.0.0" - "@ant-design/icons" "^4.6.2" - "@ant-design/react-slick" "~0.28.1" - "@babel/runtime" "^7.12.5" - array-tree-filter "^2.1.0" - classnames "^2.2.6" - copy-to-clipboard "^3.2.0" - lodash "^4.17.21" - moment "^2.25.3" - rc-cascader "~1.4.0" - rc-checkbox "~2.3.0" - rc-collapse "~3.1.0" - rc-dialog "~8.5.1" - rc-drawer "~4.3.0" - rc-dropdown "~3.2.0" - rc-field-form "~1.20.0" - rc-image "~5.2.4" - rc-input-number "~7.1.0" - rc-mentions "~1.6.1" - rc-menu "~9.0.9" - rc-motion "^2.4.0" - rc-notification "~4.5.7" - rc-pagination "~3.1.6" - rc-picker "~2.5.10" - rc-progress "~3.1.0" - rc-rate "~2.9.0" - rc-resize-observer "^1.0.0" - rc-select "~12.1.6" - rc-slider "~9.7.1" - rc-steps "~4.1.0" - rc-switch "~3.2.0" - rc-table "~7.15.1" - rc-tabs "~11.9.1" - rc-textarea "~0.3.0" - rc-tooltip "~5.1.1" - rc-tree "~4.1.0" - rc-tree-select "~4.3.0" - rc-trigger "^5.2.1" - rc-upload "~4.3.0" - rc-util "^5.13.1" - scroll-into-view-if-needed "^2.2.25" - warning "^4.0.3" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.0: - version "3.1.2" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -anymatch@^3.0.3, anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -arity-n@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz" - integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-includes@^3.1.1, array-includes@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz" - integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - get-intrinsic "^1.0.1" - is-string "^1.0.5" - -array-includes@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz" - integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - get-intrinsic "^1.1.1" - is-string "^1.0.5" - -array-tree-filter@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz" - integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.flat@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -array.prototype.flatmap@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz" - integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - function-bind "^1.1.1" - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asap@~2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async-validator@^3.0.3: - version "3.5.1" - resolved "https://registry.npmjs.org/async-validator/-/async-validator-3.5.1.tgz" - integrity sha512-DDmKA7sdSAJtTVeNZHrnr2yojfFaoeW8MfQN8CeuXg8DDQHTqKk9Fdv38dSvnesHoO8MUwMI2HphOeSyIF+wmQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.npmjs.org/async/-/async-2.6.3.tgz" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.6.1: - version "9.8.6" - resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz" - integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - colorette "^1.2.1" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axe-core@^4.0.2: - version "4.1.1" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz" - integrity sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ== - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-extract-comments@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz" - integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== - dependencies: - babylon "^6.18.0" - -babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz" - integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== - dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-jest@^27.0.2: - version "27.0.2" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.2.tgz" - integrity sha512-9OThPl3/IQbo4Yul2vMz4FYwILPQak8XelX4YGowygfHaOl5R5gfjm4iVx4d8aUugkW683t8aq0A74E7b5DU1Q== - dependencies: - "@jest/transform" "^27.0.2" - "@jest/types" "^27.0.2" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^27.0.1" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-loader@8.2.2: - version "8.2.2" - resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^1.4.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz" - integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-jest-hoist@^27.0.1: - version "27.0.1" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.1.tgz" - integrity sha512-sqBF0owAcCDBVEDtxqfYr2F36eSHdx7lAVGyYuOBRnKdD6gzcy0I0XrAYCZgOA3CRrLhmR+Uae9nogPzmAtOfQ== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@2.8.0: - version "2.8.0" - resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - -babel-plugin-named-asset-import@^0.3.7: - version "0.3.7" - resolved "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz" - integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz" - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-react-remove-prop-types@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" - integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz" - integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== - dependencies: - babel-plugin-jest-hoist "^26.6.2" - babel-preset-current-node-syntax "^1.0.0" - -babel-preset-jest@^27.0.1: - version "27.0.1" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.1.tgz" - integrity sha512-nIBIqCEpuiyhvjQs2mVNwTxQQa2xk70p9Dd/0obQGBf8FBzbnI8QhQKzLsWMN2i6q+5B0OcWDtrboBX5gmOLyA== - dependencies: - babel-plugin-jest-hoist "^27.0.1" - babel-preset-current-node-syntax "^1.0.0" - -babel-preset-react-app@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.0.tgz" - integrity sha512-itL2z8v16khpuKutx5IH8UdCdSTuzrOhRFTEdIhveZ2i1iBKDrVE0ATa4sFVy+02GLucZNVBWtoarXBy0Msdpg== - dependencies: - "@babel/core" "7.12.3" - "@babel/plugin-proposal-class-properties" "7.12.1" - "@babel/plugin-proposal-decorators" "7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "7.12.1" - "@babel/plugin-proposal-numeric-separator" "7.12.1" - "@babel/plugin-proposal-optional-chaining" "7.12.1" - "@babel/plugin-transform-flow-strip-types" "7.12.1" - "@babel/plugin-transform-react-display-name" "7.12.1" - "@babel/plugin-transform-runtime" "7.12.1" - "@babel/preset-env" "7.12.1" - "@babel/preset-react" "7.12.1" - "@babel/preset-typescript" "7.12.1" - "@babel/runtime" "7.12.1" - babel-plugin-macros "2.8.0" - babel-plugin-transform-react-remove-prop-types "0.4.24" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -bfj@^7.0.2: - version "7.0.2" - resolved "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz" - integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== - dependencies: - bluebird "^3.5.5" - check-types "^11.1.1" - hoopy "^0.1.4" - tryer "^1.0.1" - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.11.9" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz" - integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.1.3" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz" - integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@4.14.2: - version "4.14.2" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz" - integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== - dependencies: - caniuse-lite "^1.0.30001125" - electron-to-chromium "^1.3.564" - escalade "^3.0.2" - node-releases "^1.1.61" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.1, browserslist@^4.6.2, browserslist@^4.6.4: - version "4.16.3" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz" - integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== - dependencies: - caniuse-lite "^1.0.30001181" - colorette "^1.2.1" - electron-to-chromium "^1.3.649" - escalade "^3.1.1" - node-releases "^1.1.70" - -browserslist@^4.16.6: - version "4.16.6" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== - dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^15.0.5: - version "15.0.5" - resolved "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz" - integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== - dependencies: - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.0" - tar "^6.0.2" - unique-filename "^1.1.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.1: - version "4.1.2" - resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0, camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001181: - version "1.0.30001183" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001183.tgz" - integrity sha512-7JkwTEE1hlRKETbCFd8HDZeLiQIUcl8rC6JgNjvHCNaxOeNmQ9V4LvQXRUsKIV2CC73qKxljwVhToaA3kLRqTw== - -caniuse-lite@^1.0.30001219: - version "1.0.30001237" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001237.tgz" - integrity sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -case-sensitive-paths-webpack-plugin@2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz" - integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -check-types@^11.1.1: - version "11.1.2" - resolved "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz" - integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1: - version "3.5.1" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.1.1: - version "3.2.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz" - integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz" - integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6: - version "2.2.6" - resolved "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz" - integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== - -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -clone@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.5.4: - version "1.5.4" - resolved "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz" - integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.1.3" - resolved "https://registry.npmjs.org/color/-/color-3.1.3.tgz" - integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.4" - -colorette@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz" - integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== - -colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1, component-emitter@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compose-function@3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz" - integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= - dependencies: - arity-n "^1.0.4" - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -compute-scroll-into-view@^1.0.16: - version "1.0.16" - resolved "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.16.tgz" - integrity sha512-a85LHKY81oQnikatZYA90pufpZ6sQx++BoCxOEMsjpZx+ZnaKGQnCyCehTRr/1p9GBIAHTjcU9k71kSYWloLiQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -confusing-browser-globals@^1.0.10: - version "1.0.10" - resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz" - integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz" - integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -cookiejar@^2.1.2: - version "2.1.3" - resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz" - integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== - -copy-anything@^2.0.1: - version "2.0.3" - resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz" - integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ== - dependencies: - is-what "^3.12.0" - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-to-clipboard@^3.2.0: - version "3.3.1" - resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz" - integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== - dependencies: - toggle-selection "^1.0.6" - -core-js-compat@^3.6.2, core-js-compat@^3.8.0: - version "3.8.3" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.3.tgz" - integrity sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog== - dependencies: - browserslist "^4.16.1" - semver "7.0.0" - -core-js-pure@^3.0.0: - version "3.8.3" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.8.3.tgz" - integrity sha512-V5qQZVAr9K0xu7jXg1M7qTEwuxUgqr7dUOezGaNa7i+Xn9oXAU/d1fzqD9ObuwpVQOaorO5s70ckyi1woP9lVA== - -core-js@^2.4.0, core-js@^2.5.7: - version "2.6.12" - resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-js@^3.6.5: - version "3.8.3" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz" - integrity sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -cosmiconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz" - integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - -css-blank-pseudo@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz" - integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== - dependencies: - postcss "^7.0.5" - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-has-pseudo@^0.10.0: - version "0.10.0" - resolved "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz" - integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^5.0.0-rc.4" - -css-loader@4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/css-loader/-/css-loader-4.3.0.tgz" - integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== - dependencies: - camelcase "^6.0.0" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^2.0.0" - postcss "^7.0.32" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.3" - postcss-modules-scope "^2.2.0" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.1.0" - schema-utils "^2.7.1" - semver "^7.3.2" - -css-mediaquery@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz" - integrity sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA= - -css-prefers-color-scheme@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz" - integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== - dependencies: - postcss "^7.0.5" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0, css-select@^2.0.2: - version "2.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz" - integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" - integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= - -css@^2.0.0: - version "2.2.4" - resolved "https://registry.npmjs.org/css/-/css-2.2.4.tgz" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -css@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/css/-/css-3.0.0.tgz" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== - dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" - -cssdb@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz" - integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== - -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.2.0" - resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -damerau-levenshtein@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz" - integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -date-fns@^2.15.0: - version "2.17.0" - resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.17.0.tgz" - integrity sha512-ZEhqxUtEZeGgg9eHNSOAJ8O9xqSgiJdrL0lzSSfMF54x6KXWJiOH/xntSJ9YomJPrYH/p08t6gWjGWq1SDJlSA== - -date-fns@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.27.0.tgz#e1ff3c3ddbbab8a2eaadbb6106be2929a5a2d92b" - integrity sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.1, debug@^3.2.5, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decimal.js@^10.2.0: - version "10.2.1" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz" - integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/del/-/del-4.1.1.tgz" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -detect-port-alt@1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.5.4: - version "0.5.4" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz" - integrity sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ== - -dom-accessibility-api@^0.5.6: - version "0.5.6" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.6.tgz" - integrity sha512-DplGLZd8L1lN64jlT27N9TVSESFR5STaEJvX+thCby7fuCHonfPpAlodYc3vuUYbDuDec5w8AMP7oCM5TWFsqw== - -dom-align@^1.7.0: - version "1.12.0" - resolved "https://registry.npmjs.org/dom-align/-/dom-align-1.12.0.tgz" - integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA== - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.1.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz" - integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@^1.5.1, domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.649: - version "1.3.652" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.652.tgz" - integrity sha512-85J5D0Ksxjq2MIHfgwOURRej72UMlexbaa7t+oKTJan3Pa/RBE8vJ4/JzwaQjLCElPvd0XeLWi7+xYTVrq96aA== - -electron-to-chromium@^1.3.723: - version "1.3.752" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz" - integrity sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A== - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.7.1: - version "0.7.2" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz" - integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.0.0: - version "9.2.1" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.1.tgz" - integrity sha512-117l1H6U4X3Krn+MrzYrL57d5H7siRHWraBs7s+LjRuFK7Fe7hJqnJ0skWlinqsycVLU5YAo6L8CsEYQ0V5prg== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.3.0: - version "4.5.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== - dependencies: - stackframe "^1.1.1" - -es-abstract@^1.17.2: - version "1.17.7" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz" - integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.18.0-next.1: - version "1.18.0-next.2" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz" - integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-negative-zero "^2.0.1" - is-regex "^1.1.1" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.3" - string.prototype.trimstart "^1.0.3" - -es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: - version "1.18.3" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz" - integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.3" - is-string "^1.0.6" - object-inspect "^1.10.3" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: - version "0.10.53" - resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-map@^0.1.5: - version "0.1.5" - resolved "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz" - integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz" - integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -escalade@^3.0.2, escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^1.14.1: - version "1.14.3" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-react-app@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz" - integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== - dependencies: - confusing-browser-globals "^1.0.10" - -eslint-import-resolver-node@^0.3.4: - version "0.3.4" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-module-utils@^2.6.1: - version "2.6.1" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz" - integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== - dependencies: - debug "^3.2.7" - pkg-dir "^2.0.0" - -eslint-plugin-flowtype@^5.7.2: - version "5.7.2" - resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.7.2.tgz" - integrity sha512-7Oq/N0+3nijBnYWQYzz/Mp/7ZCpwxYvClRyW/PLAmimY9uLCBvoXsNsERcJdkKceyOjgRbFhhxs058KTrne9Mg== - dependencies: - lodash "^4.17.15" - string-natural-compare "^3.0.1" - -eslint-plugin-import@^2.23.4: - version "2.23.4" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz" - integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== - dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.4" - eslint-module-utils "^2.6.1" - find-up "^2.0.0" - has "^1.0.3" - is-core-module "^2.4.0" - minimatch "^3.0.4" - object.values "^1.1.3" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" - resolve "^1.20.0" - tsconfig-paths "^3.9.0" - -eslint-plugin-jest@^24.3.6: - version "24.3.6" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.3.6.tgz" - integrity sha512-WOVH4TIaBLIeCX576rLcOgjNXqP+jNlCiEmRgFTfQtJ52DpwnIQKAVGlGPAN7CZ33bW6eNfHD6s8ZbEUTQubJg== - dependencies: - "@typescript-eslint/experimental-utils" "^4.0.1" - -eslint-plugin-jsx-a11y@^6.4.1: - version "6.4.1" - resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz" - integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== - dependencies: - "@babel/runtime" "^7.11.2" - aria-query "^4.2.2" - array-includes "^3.1.1" - ast-types-flow "^0.0.7" - axe-core "^4.0.2" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.6" - emoji-regex "^9.0.0" - has "^1.0.3" - jsx-ast-utils "^3.1.0" - language-tags "^1.0.5" - -eslint-plugin-react-hooks@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz" - integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== - -eslint-plugin-react@^7.24.0: - version "7.24.0" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz" - integrity sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q== - dependencies: - array-includes "^3.1.3" - array.prototype.flatmap "^1.2.4" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.0.4" - object.entries "^1.1.4" - object.fromentries "^2.0.4" - object.values "^1.1.4" - prop-types "^15.7.2" - resolve "^2.0.0-next.3" - string.prototype.matchall "^4.0.5" - -eslint-plugin-testing-library@^3.9.2: - version "3.10.2" - resolved "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz" - integrity sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA== - dependencies: - "@typescript-eslint/experimental-utils" "^3.10.1" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== - -eslint-webpack-plugin@^2.5.4: - version "2.5.4" - resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.4.tgz" - integrity sha512-7rYh0m76KyKSDE+B+2PUQrlNS4HJ51t3WKpkJg6vo2jFMbEPTG99cBV0Dm7LXSHucN4WGCG65wQcRiTFrj7iWw== - dependencies: - "@types/eslint" "^7.2.6" - arrify "^2.0.1" - jest-worker "^26.6.2" - micromatch "^4.0.2" - normalize-path "^3.0.0" - schema-utils "^3.0.0" - -eslint@^7.28.0: - version "7.28.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz" - integrity sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/events/-/events-3.2.0.tgz" - integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== - -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^26.6.0, expect@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz" - integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== - dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.npmjs.org/express/-/express-4.17.1.tgz" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.1.1: - version "3.2.5" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz" - integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fast-safe-stringify@^2.0.7: - version "2.1.1" - resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastq@^1.6.0: - version "1.10.1" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz" - integrity sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-loader@6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filesize@6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz" - integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz" - integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== - -flatten@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz" - integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.13.2" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz" - integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -fork-ts-checker-webpack-plugin@4.1.6: - version "4.1.6" - resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz" - integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== - dependencies: - "@babel/code-frame" "^7.5.5" - chalk "^2.4.1" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -formidable@^1.2.2: - version "1.2.6" - resolved "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz" - integrity sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ== - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz" - integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.6.0, globals@^13.9.0: - version "13.9.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz" - integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== - dependencies: - type-fest "^0.20.2" - -globby@11.0.1: - version "11.0.1" - resolved "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^11.0.1: - version "11.0.2" - resolved "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz" - integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^11.0.3: - version "11.0.3" - resolved "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz" - integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -gzip-size@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -harmony-reflect@^1.4.6: - version "1.6.1" - resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz" - integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -history@^4.9.0: - version "4.10.1" - resolved "https://registry.npmjs.org/history/-/history-4.10.1.tgz" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.1.0: - version "3.3.2" - resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hoopy@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-entities@^1.2.1, html-entities@^1.3.1: - version "1.4.0" - resolved "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz" - integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^5.0.1: - version "5.1.1" - resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== - dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" - he "^1.2.0" - param-case "^3.0.3" - relateurl "^0.2.7" - terser "^4.6.3" - -html-webpack-plugin@4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz" - integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== - dependencies: - "@types/html-minifier-terser" "^5.0.0" - "@types/tapable" "^1.0.5" - "@types/webpack" "^4.41.8" - html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" - lodash "^4.17.15" - pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" - -htmlparser2@^3.10.1: - version "3.10.1" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.18.1" - resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -hyphenate-style-name@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" - integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -identity-obj-proxy@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" - integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= - dependencies: - harmony-reflect "^1.4.6" - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" - integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= - -immer@8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz" - integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.5: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.0" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz" - integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== - dependencies: - call-bind "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz" - integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz" - integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== - dependencies: - call-bind "^1.0.2" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.2, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== - dependencies: - ci-info "^3.1.1" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-core-module@^2.2.0, is-core-module@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz" - integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-potential-custom-element-name@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz" - integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= - -is-regex@^1.0.4, is-regex@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.1" - -is-regex@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz" - integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.2" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-root@2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-string@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz" - integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== - -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-what@^3.12.0: - version "3.12.0" - resolved "https://registry.npmjs.org/is-what/-/is-what-3.12.0.tgz" - integrity sha512-2ilQz5/f/o9V7WRWJQmpFYNmQFZ9iM+OXRonZKcYgTkCzjb949Vi4h282PD1UfmgHk666rcWonbRJ++KI41VGw== - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1, is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz" - integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== - dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" - -jest-circus@26.6.0: - version "26.6.0" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.0.tgz" - integrity sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.0" - "@jest/test-result" "^26.6.0" - "@jest/types" "^26.6.0" - "@types/babel__traverse" "^7.0.4" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^26.6.0" - is-generator-fn "^2.0.0" - jest-each "^26.6.0" - jest-matcher-utils "^26.6.0" - jest-message-util "^26.6.0" - jest-runner "^26.6.0" - jest-runtime "^26.6.0" - jest-snapshot "^26.6.0" - jest-util "^26.6.0" - pretty-format "^26.6.0" - stack-utils "^2.0.2" - throat "^5.0.0" - -jest-cli@^26.6.0: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz" - integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== - dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" - prompts "^2.0.1" - yargs "^15.4.1" - -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz" - integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" - -jest-diff@^26.0.0, jest-diff@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== - dependencies: - detect-newline "^3.0.0" - -jest-each@^26.6.0, jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz" - integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" - -jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz" - integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" - -jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz" - integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz" - integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== - dependencies: - "@jest/types" "^26.6.2" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -jest-haste-map@^27.0.2: - version "27.0.2" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.2.tgz" - integrity sha512-37gYfrYjjhEfk37C4bCMWAC0oPBxDpG0qpl8lYg8BT//wf353YT/fzgA7+Dq0EtM7rPFS3JEcMsxdtDwNMi2cA== - dependencies: - "@jest/types" "^27.0.2" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^27.0.1" - jest-serializer "^27.0.1" - jest-util "^27.0.2" - jest-worker "^27.0.2" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz" - integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^26.6.2" - is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" - -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz" - integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-matcher-utils@^26.6.0, jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz" - integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== - dependencies: - chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-message-util@^26.6.0, jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz" - integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" - slash "^3.0.0" - stack-utils "^2.0.2" - -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz" - integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz" - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== - -jest-regex-util@^27.0.1: - version "27.0.1" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.1.tgz" - integrity sha512-6nY6QVcpTgEKQy1L41P4pr3aOddneK17kn3HJw6SdwGiKfgCGTvH02hVXL0GU8GEKtPH83eD2DIDgxHXOxVohQ== - -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz" - integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== - dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" - -jest-resolve@26.6.0: - version "26.6.0" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.0.tgz" - integrity sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ== - dependencies: - "@jest/types" "^26.6.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.0" - read-pkg-up "^7.0.1" - resolve "^1.17.0" - slash "^3.0.0" - -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz" - integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" - slash "^3.0.0" - -jest-runner@^26.6.0, jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz" - integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^26.6.0, jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz" - integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - cjs-module-lexer "^0.6.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.4.1" - -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz" - integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-serializer@^27.0.1: - version "27.0.1" - resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.1.tgz" - integrity sha512-svy//5IH6bfQvAbkAEg1s7xhhgHTtXu0li0I2fdKHDsLP2P2MOiscPQIENQep8oU2g2B3jqLyxKKzotZOz4CwQ== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^26.6.0, jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz" - integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" - chalk "^4.0.0" - expect "^26.6.2" - graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - natural-compare "^1.4.0" - pretty-format "^26.6.2" - semver "^7.3.2" - -jest-util@^26.6.0, jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-util@^27.0.2: - version "27.0.2" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.0.2.tgz" - integrity sha512-1d9uH3a00OFGGWSibpNYr+jojZ6AckOMCXV2Z4K3YXDnzpkAaXQyIpY14FOJPiUmil7CD+A6Qs+lnnh6ctRbIA== - dependencies: - "@jest/types" "^27.0.2" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - picomatch "^2.2.3" - -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== - dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.6.2" - -jest-watch-typeahead@0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz" - integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== - dependencies: - ansi-escapes "^4.3.1" - chalk "^4.0.0" - jest-regex-util "^26.0.0" - jest-watcher "^26.3.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - -jest-watcher@^26.3.0, jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz" - integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== - dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^26.6.2" - string-length "^4.0.1" - -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^26.5.0, jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^27.0.2: - version "27.0.2" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.2.tgz" - integrity sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@26.6.0: - version "26.6.0" - resolved "https://registry.npmjs.org/jest/-/jest-26.6.0.tgz" - integrity sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA== - dependencies: - "@jest/core" "^26.6.0" - import-local "^3.0.2" - jest-cli "^26.6.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^16.4.0: - version "16.4.0" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz" - integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== - dependencies: - abab "^2.0.3" - acorn "^7.1.1" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.2.0" - data-urls "^2.0.0" - decimal.js "^10.2.0" - domexception "^2.0.1" - escodegen "^1.14.1" - html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" - nwsapi "^2.2.0" - parse5 "5.1.1" - request "^2.88.2" - request-promise-native "^1.0.8" - saxes "^5.0.0" - symbol-tree "^3.2.4" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - ws "^7.2.3" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json2mq@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz" - integrity sha1-tje9O6nqvhIsg+lyBIOusQ0skEo= - dependencies: - string-convert "^0.2.0" - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz" - integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== - dependencies: - array-includes "^3.1.2" - object.assign "^4.1.2" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -klona@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz" - integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== - -language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" - integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= - dependencies: - language-subtag-registry "~0.3.2" - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -less-loader@6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/less-loader/-/less-loader-6.1.0.tgz" - integrity sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA== - dependencies: - clone "^2.1.2" - less "^3.11.1" - loader-utils "^2.0.0" - schema-utils "^2.6.6" - -less@^3.11.1: - version "3.13.1" - resolved "https://registry.npmjs.org/less/-/less-3.13.1.tgz" - integrity sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw== - dependencies: - copy-anything "^2.0.1" - tslib "^1.10.0" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - native-request "^1.0.5" - source-map "~0.6.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@2.0.0, loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5: - version "4.17.20" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loglevel@^1.6.8: - version "1.7.1" - resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" - integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= - -magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -matchmediaquery@^0.3.0: - version "0.3.1" - resolved "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz" - integrity sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ== - dependencies: - css-mediaquery "^0.1.2" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@^1.1.2, methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.45.0, "mime-db@>= 1.43.0 < 2": - version "1.45.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz" - integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== - -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.28" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz" - integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== - dependencies: - mime-db "1.45.0" - -mime@1.6.0, mime@^1.4.1: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.5.0" - resolved "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz" - integrity sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag== - -mime@^2.4.6: - version "2.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -mini-create-react-context@^0.4.0: - version "0.4.1" - resolved "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz" - integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== - dependencies: - "@babel/runtime" "^7.12.1" - tiny-warning "^1.0.3" - -mini-css-extract-plugin@0.11.3: - version "0.11.3" - resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz" - integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@3.0.4, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.4" - resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mobx-react-lite@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-3.2.0.tgz" - integrity sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g== - -mobx@^6.3.2: - version "6.3.2" - resolved "https://registry.npmjs.org/mobx/-/mobx-6.3.2.tgz" - integrity sha512-xGPM9dIE1qkK9Nrhevp0gzpsmELKU4MFUJRORW/jqxVFIHHWIoQrjDjL8vkwoJYY3C2CeVJqgvl38hgKTalTWg== - -moment@^2.24.0, moment@^2.25.3: - version "2.29.1" - resolved "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -nan@^2.12.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - -nanoid@^3.1.20: - version "3.1.20" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz" - integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -native-request@^1.0.5: - version "1.0.8" - resolved "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz" - integrity sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag== - -native-url@^0.2.6: - version "0.2.6" - resolved "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz" - integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== - dependencies: - querystring "^0.2.0" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^8.0.0: - version "8.0.1" - resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.1.tgz" - integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA== - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - -node-releases@^1.1.61, node-releases@^1.1.70: - version "1.1.70" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz" - integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== - -node-releases@^1.1.71: - version "1.1.73" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz" - integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== - -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.10.3: - version "1.10.3" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz" - integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== - -object-inspect@^1.8.0, object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== - -object-is@^1.0.1: - version "1.1.4" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz" - integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.0: - version "1.1.3" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz" - integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - has "^1.0.3" - -object.entries@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz" - integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -object.fromentries@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz" - integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" - -object.getownpropertydescriptors@^2.0.3: - version "2.1.2" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - -object.getownpropertydescriptors@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz" - integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz" - integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - has "^1.0.3" - -object.values@^1.1.3, object.values@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz" - integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^7.0.2: - version "7.4.0" - resolved "https://registry.npmjs.org/open/-/open-7.4.0.tgz" - integrity sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimize-css-assets-webpack-plugin@5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz" - integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/original/-/original-1.0.2.tgz" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - 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== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@^3.0.3: - version "3.0.4" - resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse5@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -particles-bg@^2.5.5: - version "2.5.5" - resolved "https://registry.npmjs.org/particles-bg/-/particles-bg-2.5.5.tgz" - integrity sha512-NzjgmayGwyvH/hGq437++nNc9qUCrsV1riX+m0+kuvbJSXStyUJ3hJocejNKtvOVuml0RfUp64pRt3UmmmAgsQ== - dependencies: - proton-engine "^4.1.3" - raf-manager "^0.3.0" - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.1.1" - resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz" - integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU= - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: - version "2.2.2" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -pnp-webpack-plugin@1.6.4: - version "1.6.4" - resolved "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - -portfinder@^1.0.26: - version "1.0.28" - resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-attribute-case-insensitive@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz" - integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^6.0.2" - -postcss-browser-comments@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz" - integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== - dependencies: - postcss "^7" - -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-color-functional-notation@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz" - integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-gray@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz" - integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-color-hex-alpha@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz" - integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== - dependencies: - postcss "^7.0.14" - postcss-values-parser "^2.0.1" - -postcss-color-mod-function@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz" - integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-rebeccapurple@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz" - integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-custom-media@^7.0.8: - version "7.0.8" - resolved "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz" - integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== - dependencies: - postcss "^7.0.14" - -postcss-custom-properties@^8.0.11: - version "8.0.11" - resolved "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz" - integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== - dependencies: - postcss "^7.0.17" - postcss-values-parser "^2.0.1" - -postcss-custom-selectors@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz" - integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-dir-pseudo-class@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz" - integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-double-position-gradients@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz" - integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== - dependencies: - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-env-function@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz" - integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-flexbugs-fixes@4.2.1: - version "4.2.1" - resolved "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz" - integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== - dependencies: - postcss "^7.0.26" - -postcss-focus-visible@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz" - integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== - dependencies: - postcss "^7.0.2" - -postcss-focus-within@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz" - integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== - dependencies: - postcss "^7.0.2" - -postcss-font-variant@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz" - integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== - dependencies: - postcss "^7.0.2" - -postcss-gap-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz" - integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== - dependencies: - postcss "^7.0.2" - -postcss-image-set-function@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz" - integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-initial@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz" - integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== - dependencies: - lodash.template "^4.5.0" - postcss "^7.0.2" - -postcss-lab-function@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz" - integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-logical@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz" - integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== - dependencies: - postcss "^7.0.2" - -postcss-media-minmax@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz" - integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== - dependencies: - postcss "^7.0.2" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz" - integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== - dependencies: - icss-utils "^4.1.1" - postcss "^7.0.32" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" - -postcss-nesting@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz" - integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== - dependencies: - postcss "^7.0.2" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize@8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz" - integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== - dependencies: - "@csstools/normalize.css" "^10.1.0" - browserslist "^4.6.2" - postcss "^7.0.17" - postcss-browser-comments "^3.0.0" - sanitize.css "^10.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-overflow-shorthand@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz" - integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== - dependencies: - postcss "^7.0.2" - -postcss-page-break@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz" - integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== - dependencies: - postcss "^7.0.2" - -postcss-place@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz" - integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-preset-env@6.7.0: - version "6.7.0" - resolved "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz" - integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== - dependencies: - autoprefixer "^9.6.1" - browserslist "^4.6.4" - caniuse-lite "^1.0.30000981" - css-blank-pseudo "^0.1.4" - css-has-pseudo "^0.10.0" - css-prefers-color-scheme "^3.1.1" - cssdb "^4.4.0" - postcss "^7.0.17" - postcss-attribute-case-insensitive "^4.0.1" - postcss-color-functional-notation "^2.0.1" - postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.3" - postcss-color-mod-function "^3.0.3" - postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.8" - postcss-custom-properties "^8.0.11" - postcss-custom-selectors "^5.1.2" - postcss-dir-pseudo-class "^5.0.0" - postcss-double-position-gradients "^1.0.0" - postcss-env-function "^2.0.2" - postcss-focus-visible "^4.0.0" - postcss-focus-within "^3.0.0" - postcss-font-variant "^4.0.0" - postcss-gap-properties "^2.0.0" - postcss-image-set-function "^3.0.1" - postcss-initial "^3.0.0" - postcss-lab-function "^2.0.1" - postcss-logical "^3.0.0" - postcss-media-minmax "^4.0.0" - postcss-nesting "^7.0.0" - postcss-overflow-shorthand "^2.0.0" - postcss-page-break "^2.0.0" - postcss-place "^4.0.1" - postcss-pseudo-class-any-link "^6.0.0" - postcss-replace-overflow-wrap "^3.0.0" - postcss-selector-matches "^4.0.0" - postcss-selector-not "^4.0.0" - -postcss-pseudo-class-any-link@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz" - integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-replace-overflow-wrap@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz" - integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== - dependencies: - postcss "^7.0.2" - -postcss-safe-parser@5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz" - integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ== - dependencies: - postcss "^8.1.0" - -postcss-selector-matches@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz" - integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-not@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz" - integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0: - version "6.0.6" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-selector-parser@^6.0.2: - version "6.0.4" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - util-deprecate "^1.0.2" - -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz" - integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss@7.0.21: - version "7.0.21" - resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz" - integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.35" - resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^8.1.0: - version "8.2.4" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.2.4.tgz" - integrity sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg== - dependencies: - colorette "^1.2.1" - nanoid "^3.1.20" - source-map "^0.6.1" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -pretty-bytes@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.5.0.tgz" - integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== - -pretty-error@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz" - integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== - dependencies: - lodash "^4.17.20" - renderkid "^2.0.4" - -pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz" - integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== - dependencies: - asap "~2.0.6" - -prompts@2.4.0, prompts@^2.0.1: - version "2.4.0" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz" - integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prompts@2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz" - integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -proton-engine@^4.1.3: - version "4.2.1" - resolved "https://registry.npmjs.org/proton-engine/-/proton-engine-4.2.1.tgz" - integrity sha512-c72hgcnwMyyvUoy7Jq/HX3HQZnAo5MUNvFbyZHiWZrwcERX9+lYzM9YyT0iueXVAJpt+r8nrPan9F3HTXj7IsA== - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@^6.9.4: - version "6.10.2" - resolved "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz" - integrity sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw== - dependencies: - side-channel "^1.0.4" - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0, querystring@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -raf-manager@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/raf-manager/-/raf-manager-0.3.0.tgz" - integrity sha512-qLpVgVlUmwtlY35zoyCQwLWMOpLkVtiItPd/RxouHAh80XZjoh84CF5pFBVyIIUWXubypSJi1OBJS4jM7onOng== - dependencies: - core-js "^2.5.7" - es6-map "^0.1.5" - -raf@^3.1.0, raf@^3.4.1: - version "3.4.1" - resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc-align@^4.0.0: - version "4.0.9" - resolved "https://registry.npmjs.org/rc-align/-/rc-align-4.0.9.tgz" - integrity sha512-myAM2R4qoB6LqBul0leaqY8gFaiECDJ3MtQDmzDo9xM9NRT/04TvWOYd2YHU9zvGzqk9QXF6S9/MifzSKDZeMw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - dom-align "^1.7.0" - rc-util "^5.3.0" - resize-observer-polyfill "^1.5.1" - -rc-cascader@~1.4.0: - version "1.4.2" - resolved "https://registry.npmjs.org/rc-cascader/-/rc-cascader-1.4.2.tgz" - integrity sha512-JVuLGrSi+3G8DZyPvlKlGVWJjhoi9NTz6REHIgRspa5WnznRkKGm2ejb0jJtz0m2IL8Q9BG4ZA2sXuqAu71ltQ== - dependencies: - "@babel/runtime" "^7.12.5" - array-tree-filter "^2.1.0" - rc-trigger "^5.0.4" - rc-util "^5.0.1" - warning "^4.0.1" - -rc-checkbox@~2.3.0: - version "2.3.2" - resolved "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz" - integrity sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - -rc-collapse@~3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.1.0.tgz" - integrity sha512-EwpNPJcLe7b+5JfyaxM9ZNnkCgqArt3QQO0Cr5p5plwz/C9h8liAmjYY5I4+hl9lAjBqb7ZwLu94+z+rt5g1WQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.3.4" - rc-util "^5.2.1" - shallowequal "^1.1.0" - -rc-dialog@~8.5.0, rc-dialog@~8.5.1: - version "8.5.1" - resolved "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.5.1.tgz" - integrity sha512-EcLgHHjF3Jp4C+TFceO2j7gIrpx0YIhY6ronki5QJDL/z+qWYozY5RNh4rnv4a6R21SPVhV+SK+gMMlMHZ/YRQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-motion "^2.3.0" - rc-util "^5.6.1" - -rc-drawer@~4.3.0: - version "4.3.1" - resolved "https://registry.npmjs.org/rc-drawer/-/rc-drawer-4.3.1.tgz" - integrity sha512-GMfFy4maqxS9faYXEhQ+0cA1xtkddEQzraf6SAdzWbn444DrrLogwYPk1NXSpdXjLCLxgxOj9MYtyYG42JsfXg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-util "^5.7.0" - -rc-dropdown@^3.2.0, rc-dropdown@~3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.2.0.tgz" - integrity sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-trigger "^5.0.4" - -rc-field-form@~1.20.0: - version "1.20.1" - resolved "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.20.1.tgz" - integrity sha512-f64KEZop7zSlrG4ef/PLlH12SLn6iHDQ3sTG+RfKBM45hikwV1i8qMf53xoX12NvXXWg1VwchggX/FSso4bWaA== - dependencies: - "@babel/runtime" "^7.8.4" - async-validator "^3.0.3" - rc-util "^5.8.0" - -rc-image@~5.2.4: - version "5.2.4" - resolved "https://registry.npmjs.org/rc-image/-/rc-image-5.2.4.tgz" - integrity sha512-kWOjhZC1OoGKfvWqtDoO9r8WUNswBwnjcstI6rf7HMudz0usmbGvewcWqsOhyaBRJL9+I4eeG+xiAoxV1xi75Q== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "^2.2.6" - rc-dialog "~8.5.0" - rc-util "^5.0.6" - -rc-input-number@~7.1.0: - version "7.1.4" - resolved "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.1.4.tgz" - integrity sha512-EG4iqkqyqzLRu/Dq+fw2od7nlgvXLEatE+J6uhi3HXE1qlM3C7L6a7o/hL9Ly9nimkES2IeQoj3Qda3I0izj3Q== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.9.8" - -rc-mentions@~1.6.1: - version "1.6.1" - resolved "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.6.1.tgz" - integrity sha512-LDzGI8jJVGnkhpTZxZuYBhMz3avcZZqPGejikchh97xPni/g4ht714Flh7DVvuzHQ+BoKHhIjobHnw1rcP8erg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-menu "^9.0.0" - rc-textarea "^0.3.0" - rc-trigger "^5.0.4" - rc-util "^5.0.1" - -rc-menu@^9.0.0, rc-menu@~9.0.9: - version "9.0.11" - resolved "https://registry.npmjs.org/rc-menu/-/rc-menu-9.0.11.tgz" - integrity sha512-lwE6Zrs3ZpK9XKuk8+AOsQI3QXQFybzANvTNU2DIZQuqi53aEJIzNtibfq9j68DosKhKcxV++GcK9K6pL9Ku8A== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.4.3" - rc-overflow "^1.2.0" - rc-trigger "^5.1.2" - rc-util "^5.12.0" - shallowequal "^1.1.0" - -rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.0: - version "2.4.1" - resolved "https://registry.npmjs.org/rc-motion/-/rc-motion-2.4.1.tgz" - integrity sha512-TWLvymfMu8SngPx5MDH8dQ0D2RYbluNTfam4hY/dNNx9RQ3WtGuZ/GXHi2ymLMzH+UNd6EEFYkOuR5JTTtm8Xg== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-util "^5.2.1" - -rc-motion@^2.4.3: - version "2.4.4" - resolved "https://registry.npmjs.org/rc-motion/-/rc-motion-2.4.4.tgz" - integrity sha512-ms7n1+/TZQBS0Ydd2Q5P4+wJTSOrhIrwNxLXCZpR7Fa3/oac7Yi803HDALc2hLAKaCTQtw9LmQeB58zcwOsqlQ== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-util "^5.2.1" - -rc-notification@~4.5.7: - version "4.5.7" - resolved "https://registry.npmjs.org/rc-notification/-/rc-notification-4.5.7.tgz" - integrity sha512-zhTGUjBIItbx96SiRu3KVURcLOydLUHZCPpYEn1zvh+re//Tnq/wSxN4FKgp38n4HOgHSVxcLEeSxBMTeBBDdw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.2.0" - rc-util "^5.0.1" - -rc-overflow@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.0.2.tgz" - integrity sha512-GXj4DAyNxm4f57LvXLwhJaZoJHzSge2l2lQq64MZP7NJAfLpQqOLD+v9JMV9ONTvDPZe8kdzR+UMmkAn7qlzFA== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-resize-observer "^1.0.0" - rc-util "^5.5.1" - -rc-overflow@^1.2.0: - version "1.2.2" - resolved "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.2.2.tgz" - integrity sha512-X5kj9LDU1ue5wHkqvCprJWLKC+ZLs3p4He/oxjZ1Q4NKaqKBaYf5OdSzRSgh3WH8kSdrfU8LjvlbWnHgJOEkNQ== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-resize-observer "^1.0.0" - rc-util "^5.5.1" - -rc-pagination@~3.1.6: - version "3.1.6" - resolved "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.6.tgz" - integrity sha512-Pb2zJEt8uxXzYCWx/2qwsYZ3vSS9Eqdw0cJBli6C58/iYhmvutSBqrBJh51Z5UzYc5ZcW5CMeP5LbbKE1J3rpw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - -rc-picker@~2.5.10: - version "2.5.12" - resolved "https://registry.npmjs.org/rc-picker/-/rc-picker-2.5.12.tgz" - integrity sha512-rUqEtpNZdPTnnCMvWWioFFcJiq110Bq7fKAS37NY4Rrd3DoXZUwyfjeCrvCWgLLO9XeYDnDr88+rhhplY7HBNA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - date-fns "^2.15.0" - moment "^2.24.0" - rc-trigger "^5.0.4" - rc-util "^5.4.0" - shallowequal "^1.1.0" - -rc-progress@~3.1.0: - version "3.1.3" - resolved "https://registry.npmjs.org/rc-progress/-/rc-progress-3.1.3.tgz" - integrity sha512-Jl4fzbBExHYMoC6HBPzel0a9VmhcSXx24LVt/mdhDM90MuzoMCJjXZAlhA0V0CJi+SKjMhfBoIQ6Lla1nD4QNw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - -rc-rate@~2.9.0: - version "2.9.1" - resolved "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.1.tgz" - integrity sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.0.1" - -rc-resize-observer@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz" - integrity sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - rc-util "^5.0.0" - resize-observer-polyfill "^1.5.1" - -rc-select@^12.0.0: - version "12.1.3" - resolved "https://registry.npmjs.org/rc-select/-/rc-select-12.1.3.tgz" - integrity sha512-pMJ27VQRh5QbyGLSE+by4tORYucNFbZxON+Ywj81qjXAGMjvhMcOOvlv1RZRNdnZxaMwH//3iDPOf80b0AJxZg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-overflow "^1.0.0" - rc-trigger "^5.0.4" - rc-util "^5.0.1" - rc-virtual-list "^3.2.0" - -rc-select@~12.1.6: - version "12.1.10" - resolved "https://registry.npmjs.org/rc-select/-/rc-select-12.1.10.tgz" - integrity sha512-LQdUhYncvcULlrNcAShYicc1obPtnNK7/rvCD+YCm0b2BLLYxl3M3b/HOX6o+ppPej+yZulkUPeU6gcgcp9nag== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-overflow "^1.0.0" - rc-trigger "^5.0.4" - rc-util "^5.9.8" - rc-virtual-list "^3.2.0" - -rc-slider@~9.7.1: - version "9.7.1" - resolved "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.1.tgz" - integrity sha512-r9r0dpFA3PEvxBhIfVi1lVzxuSogWxeY+tGvi2AqMM1rPgaOXQ7WbtT+9kVFkJ9K8TntA/vYPgiCCKfN29KTkw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-tooltip "^5.0.1" - rc-util "^5.0.0" - shallowequal "^1.1.0" - -rc-steps@~4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/rc-steps/-/rc-steps-4.1.3.tgz" - integrity sha512-GXrMfWQOhN3sVze3JnzNboHpQdNHcdFubOETUHyDpa/U3HEKBZC3xJ8XK4paBgF4OJ3bdUVLC+uBPc6dCxvDYA== - dependencies: - "@babel/runtime" "^7.10.2" - classnames "^2.2.3" - rc-util "^5.0.1" - -rc-switch@~3.2.0: - version "3.2.2" - resolved "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz" - integrity sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - rc-util "^5.0.1" - -rc-table@~7.15.1: - version "7.15.2" - resolved "https://registry.npmjs.org/rc-table/-/rc-table-7.15.2.tgz" - integrity sha512-TAs7kCpIZwc2mtvD8CMrXSM6TqJDUsy0rUEV1YgRru33T8bjtAtc+9xW/KC1VWROJlHSpU0R0kXjFs9h/6+IzQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-resize-observer "^1.0.0" - rc-util "^5.13.0" - shallowequal "^1.1.0" - -rc-tabs@~11.9.1: - version "11.9.1" - resolved "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.9.1.tgz" - integrity sha512-CLNx3qaWnO8KBWPd+7r52Pfk0MoPyKtlr+2ltWq2I9iqAjd1nZu6iBpQP7wbWBwIomyeFNw/WjHdRN7VcX5Qtw== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "2.x" - rc-dropdown "^3.2.0" - rc-menu "^9.0.0" - rc-resize-observer "^1.0.0" - rc-util "^5.5.0" - -rc-textarea@^0.3.0, rc-textarea@~0.3.0: - version "0.3.4" - resolved "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.3.4.tgz" - integrity sha512-ILUYx831ZukQPv3m7R4RGRtVVWmL1LV4ME03L22mvT56US0DGCJJaRTHs4vmpcSjFHItph5OTmhodY4BOwy81A== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - rc-resize-observer "^1.0.0" - rc-util "^5.7.0" - -rc-tooltip@^5.0.1: - version "5.0.2" - resolved "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.0.2.tgz" - integrity sha512-A4FejSG56PzYtSNUU4H1pVzfhtkV/+qMT2clK0CsSj+9mbc4USEtpWeX6A/jjVL+goBOMKj8qlH7BCZmZWh/Nw== - dependencies: - "@babel/runtime" "^7.11.2" - rc-trigger "^5.0.0" - -rc-tooltip@~5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.1.1.tgz" - integrity sha512-alt8eGMJulio6+4/uDm7nvV+rJq9bsfxFDCI0ljPdbuoygUscbsMYb6EQgwib/uqsXQUvzk+S7A59uYHmEgmDA== - dependencies: - "@babel/runtime" "^7.11.2" - rc-trigger "^5.0.0" - -rc-tree-select@~4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-4.3.0.tgz" - integrity sha512-EEXB9dKBsJNJuKIU5NERZsaJ71GDGIj5uWLl7A4XiYr2jXM4JICfScvvp3O5jHMDfhqmgpqNc0z90mHkgh3hKg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-select "^12.0.0" - rc-tree "^4.0.0" - rc-util "^5.0.5" - -rc-tree@^4.0.0, rc-tree@~4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/rc-tree/-/rc-tree-4.1.1.tgz" - integrity sha512-ufq7CkWfvTQa+xMPzEWYfOjTfsEALlPr0/IyujEG4+4d8NdaR3e+0dc8LkkVWoe1VCcXV2FQqAsgr2z/ThFUrQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-util "^5.0.0" - rc-virtual-list "^3.0.1" - -rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.1.tgz" - integrity sha512-XZilSlSDnb0L/R3Ff2xo9C0Fho2aBDoAn8u3coM60XdLqTCo24nsOh1bfAMm0uIB1qVjh5eqeyFqnBPmXi8pJg== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "^2.2.6" - rc-align "^4.0.0" - rc-motion "^2.0.0" - rc-util "^5.5.0" - -rc-upload@~4.3.0: - version "4.3.1" - resolved "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.1.tgz" - integrity sha512-W8Iyv0LRyEnFEzpv90ET/i1XG2jlPzPxKkkOVtDfgh9c3f4lZV770vgpUfiyQza+iLtQLVco3qIvgue8aDiOsQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.2.0" - -rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0, rc-util@^5.5.1, rc-util@^5.6.1, rc-util@^5.7.0: - version "5.8.0" - resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.8.0.tgz" - integrity sha512-x8UGbURS1/9mMyqNMsRdCq+nBLefjcubfS++d/P/oAKZ2b0X2Zo6TPPPS4nKyZIK8Xvo4DFx5zfwJ9hUm9CRYQ== - dependencies: - "@babel/runtime" "^7.12.5" - react-is "^16.12.0" - shallowequal "^1.1.0" - -rc-util@^5.12.0, rc-util@^5.13.0, rc-util@^5.13.1, rc-util@^5.8.0, rc-util@^5.9.4, rc-util@^5.9.8: - version "5.13.1" - resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.13.1.tgz" - integrity sha512-Dws2tjXBBihfjVQFlG5JzZ/5O3Wutctm0W94Wb1+M7GD2roWJPrQdSa4AkWm2pn0Ms32zoVPPkWodFeAYZPLfA== - dependencies: - "@babel/runtime" "^7.12.5" - react-is "^16.12.0" - shallowequal "^1.1.0" - -rc-virtual-list@^3.0.1, rc-virtual-list@^3.2.0: - version "3.2.6" - resolved "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.2.6.tgz" - integrity sha512-8FiQLDzm3c/tMX0d62SQtKDhLH7zFlSI6pWBAPt+TUntEqd3Lz9zFAmpvTu8gkvUom/HCsDSZs4wfV4wDPWC0Q== - dependencies: - classnames "^2.2.6" - rc-resize-observer "^1.0.0" - rc-util "^5.0.7" - -react-app-polyfill@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz" - integrity sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA== - dependencies: - core-js "^3.6.5" - object-assign "^4.1.1" - promise "^8.1.0" - raf "^3.4.1" - regenerator-runtime "^0.13.7" - whatwg-fetch "^3.4.1" - -react-dev-utils@^11.0.4: - version "11.0.4" - resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz" - integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== - dependencies: - "@babel/code-frame" "7.10.4" - address "1.1.2" - browserslist "4.14.2" - chalk "2.4.2" - cross-spawn "7.0.3" - detect-port-alt "1.1.6" - escape-string-regexp "2.0.0" - filesize "6.1.0" - find-up "4.1.0" - fork-ts-checker-webpack-plugin "4.1.6" - global-modules "2.0.0" - globby "11.0.1" - gzip-size "5.1.1" - immer "8.0.1" - is-root "2.1.0" - loader-utils "2.0.0" - open "^7.0.2" - pkg-up "3.1.0" - prompts "2.4.0" - react-error-overlay "^6.0.9" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - strip-ansi "6.0.0" - text-table "0.2.0" - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - -react-error-overlay@^6.0.9: - version "6.0.9" - resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz" - integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== - -react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz" - integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== - -react-motion@^0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz" - integrity sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ== - dependencies: - performance-now "^0.2.0" - prop-types "^15.5.8" - raf "^3.1.0" - -react-refresh@^0.8.3: - version "0.8.3" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz" - integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== - -react-responsive@^9.0.0-beta.5: - version "9.0.0-beta.5" - resolved "https://registry.yarnpkg.com/react-responsive/-/react-responsive-9.0.0-beta.5.tgz#94b6eba0d089c4977d5353188a4d5a744392cbe3" - integrity sha512-Zvikc/28FsabQ4caLP1wIQlRPXBelYMct6dnUEwTRI4P7jH5d9x8RAMb1SbAZ0IdZGQHQ06aSRvhhg/tvqXktA== - dependencies: - hyphenate-style-name "^1.0.0" - matchmediaquery "^0.3.0" - prop-types "^15.6.1" - shallow-equal "^1.2.1" - -react-router-dom@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz" - integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== - dependencies: - "@babel/runtime" "^7.1.2" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.2.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router-transition@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/react-router-transition/-/react-router-transition-2.1.0.tgz" - integrity sha512-vL0JczAcs4s5MjWm1DSitoap9KRqE1m7YZopIXiT4x6NVrqXs9CGH1uLBBSZ3rJFwGBQRgsfY7NFe2ygDfGQ2Q== - dependencies: - prop-types "^15.7.2" - react-motion "^0.5.2" - -react-router@5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz" - integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw== - dependencies: - "@babel/runtime" "^7.1.2" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - mini-create-react-context "^0.4.0" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react@^17.0.2: - version "17.0.2" - resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -recursive-readdir@2.2.2: - version "2.2.2" - resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== - dependencies: - minimatch "3.0.4" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: - version "0.13.7" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regex-parser@^2.2.11: - version "2.2.11" - resolved "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz" - integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.6.4: - version "0.6.7" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz" - integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.4: - version "2.0.5" - resolved "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz" - integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== - dependencies: - css-select "^2.0.2" - dom-converter "^0.2" - htmlparser2 "^3.10.1" - lodash "^4.17.20" - strip-ansi "^3.0.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.8: - version "1.0.9" - resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - -resolve-url-loader@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz" - integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== - dependencies: - adjust-sourcemap-loader "3.0.0" - camelcase "5.3.1" - compose-function "3.0.3" - convert-source-map "1.7.0" - es6-iterator "2.0.3" - loader-utils "1.2.3" - postcss "7.0.21" - rework "1.0.1" - rework-visit "1.0.0" - source-map "0.6.1" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.20.0, resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.8.1: - version "1.19.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rework-visit@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz" - integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= - -rework@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz" - integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= - dependencies: - convert-source-map "^0.3.3" - css "^2.0.0" - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rollup-plugin-babel@^4.3.3: - version "4.4.0" - resolved "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz" - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-terser@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz" - integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== - dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" - serialize-javascript "^4.0.0" - terser "^4.6.2" - -rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^1.31.1: - version "1.32.1" - resolved "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -run-parallel@^1.1.9: - version "1.1.10" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz" - integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -sanitize.css@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz" - integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== - -sass-loader@^10.0.5: - version "10.1.1" - resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz" - integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw== - dependencies: - klona "^2.0.4" - loader-utils "^2.0.0" - neo-async "^2.6.2" - schema-utils "^3.0.0" - semver "^7.3.2" - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0, schema-utils@^2.7.1: - version "2.7.1" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -schema-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz" - integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== - dependencies: - "@types/json-schema" "^7.0.6" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -scroll-into-view-if-needed@^2.2.25: - version "2.2.26" - resolved "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.26.tgz" - integrity sha512-SQ6AOKfABaSchokAmmaxVnL9IArxEnLEX9j4wAZw+x4iUTb40q7irtHG3z4GtAWz5veVZcCnubXDBRyLVQaohw== - dependencies: - compute-scroll-into-view "^1.0.16" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.7: - version "1.10.8" - resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz" - integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== - dependencies: - node-forge "^0.10.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@7.3.5, semver@^7.3.2, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1: - version "7.3.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.npmjs.org/send/-/send-0.17.1.tgz" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallow-equal@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" - integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== - -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@1.7.2: - version "1.7.2" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.20: - version "0.3.20" - resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz" - integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.4.0" - websocket-driver "0.6.5" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - -source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: - version "0.5.19" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.7.3, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^8.0.0: - version "8.0.1" - resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz" - integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== - dependencies: - escape-string-regexp "^2.0.0" - -stackframe@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz" - integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-convert@^0.2.0: - version "0.2.1" - resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" - integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c= - -string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz" - integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-natural-compare@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" - integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.matchall@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz" - integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - get-intrinsic "^1.1.1" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" - side-channel "^1.0.4" - -string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz" - integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz" - integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@6.0.0, strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz" - integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== - dependencies: - babel-extract-comments "^1.0.0" - babel-plugin-transform-object-rest-spread "^6.26.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -style-loader@1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz" - integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.7.0" - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -superagent@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz" - integrity sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg== - dependencies: - component-emitter "^1.3.0" - cookiejar "^2.1.2" - debug "^4.1.1" - fast-safe-stringify "^2.0.7" - form-data "^3.0.0" - formidable "^1.2.2" - methods "^1.1.2" - mime "^2.4.6" - qs "^6.9.4" - readable-stream "^3.6.0" - semver "^7.3.2" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -svg-parser@^2.0.2: - version "2.0.4" - resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^1.0.0, svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -table@^6.0.9: - version "6.7.1" - resolved "https://registry.npmjs.org/table/-/table-6.7.1.tgz" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tar@^6.0.2: - version "6.1.0" - resolved "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz" - integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= - -tempy@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz" - integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== - dependencies: - temp-dir "^1.0.0" - type-fest "^0.3.1" - unique-string "^1.0.0" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser-webpack-plugin@4.2.3: - version "4.2.3" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz" - integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== - dependencies: - cacache "^15.0.5" - find-cache-dir "^3.3.1" - jest-worker "^26.5.0" - p-limit "^3.0.2" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - source-map "^0.6.1" - terser "^5.3.4" - webpack-sources "^1.4.3" - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2, terser@^4.6.2, terser@^4.6.3: - version "4.8.0" - resolved "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^5.3.4: - version "5.5.1" - resolved "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz" - integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.19" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@0.2.0, text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tiny-invariant@^1.0.2: - version "1.1.0" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz" - integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== - -tiny-warning@^1.0.0, tiny-warning@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" - integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== - dependencies: - punycode "^2.1.1" - -tryer@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - -ts-pnp@1.2.0, ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - -tsconfig-paths@^3.9.0: - version "3.9.0" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz" - integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3: - version "2.1.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - -tsutils@^3.17.1: - version "3.20.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz" - integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg== - dependencies: - tslib "^1.8.1" - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/type/-/type-2.1.0.tgz" - integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= - dependencies: - crypto-random-string "^1.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.0: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache@^2.0.3: - version "2.2.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz" - integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== - -v8-to-istanbul@^7.0.0: - version "7.1.0" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz" - integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -warning@^4.0.1, warning@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== - dependencies: - loose-envify "^1.0.0" - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -web-vitals@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/web-vitals/-/web-vitals-1.1.0.tgz" - integrity sha512-1cx54eRxY/+M0KNKdNpNnuXAXG+vJEvwScV4DiV9rOYDguHoeDIzm09ghBohOPtkqPO5OtPC14FWkNva3SDisg== - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -webpack-dev-middleware@^3.7.2: - version "3.7.3" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz" - integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@3.11.0: - version "3.11.0" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz" - integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "0.3.20" - sockjs-client "1.4.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-manifest-plugin@2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz" - integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== - dependencies: - fs-extra "^7.0.0" - lodash ">=3.5 <5" - object.entries "^1.1.0" - tapable "^1.0.0" - -webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@4.44.2: - version "4.44.2" - resolved "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz" - integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -websocket-driver@0.6.5: - version "0.6.5" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz" - integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= - dependencies: - websocket-extensions ">=0.1.1" - -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@^3.4.1: - version "3.5.0" - resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz" - integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A== - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^8.0.0: - version "8.4.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz" - integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -workbox-background-sync@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz" - integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== - dependencies: - workbox-core "^5.1.4" - -workbox-broadcast-update@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz" - integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== - dependencies: - workbox-core "^5.1.4" - -workbox-build@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-5.1.4.tgz" - integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== - dependencies: - "@babel/core" "^7.8.4" - "@babel/preset-env" "^7.8.4" - "@babel/runtime" "^7.8.4" - "@hapi/joi" "^15.1.0" - "@rollup/plugin-node-resolve" "^7.1.1" - "@rollup/plugin-replace" "^2.3.1" - "@surma/rollup-plugin-off-main-thread" "^1.1.1" - common-tags "^1.8.0" - fast-json-stable-stringify "^2.1.0" - fs-extra "^8.1.0" - glob "^7.1.6" - lodash.template "^4.5.0" - pretty-bytes "^5.3.0" - rollup "^1.31.1" - rollup-plugin-babel "^4.3.3" - rollup-plugin-terser "^5.3.1" - source-map "^0.7.3" - source-map-url "^0.4.0" - stringify-object "^3.3.0" - strip-comments "^1.0.2" - tempy "^0.3.0" - upath "^1.2.0" - workbox-background-sync "^5.1.4" - workbox-broadcast-update "^5.1.4" - workbox-cacheable-response "^5.1.4" - workbox-core "^5.1.4" - workbox-expiration "^5.1.4" - workbox-google-analytics "^5.1.4" - workbox-navigation-preload "^5.1.4" - workbox-precaching "^5.1.4" - workbox-range-requests "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" - workbox-streams "^5.1.4" - workbox-sw "^5.1.4" - workbox-window "^5.1.4" - -workbox-cacheable-response@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz" - integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== - dependencies: - workbox-core "^5.1.4" - -workbox-core@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-5.1.4.tgz" - integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== - -workbox-expiration@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-5.1.4.tgz" - integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== - dependencies: - workbox-core "^5.1.4" - -workbox-google-analytics@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz" - integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== - dependencies: - workbox-background-sync "^5.1.4" - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" - -workbox-navigation-preload@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz" - integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== - dependencies: - workbox-core "^5.1.4" - -workbox-precaching@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-5.1.4.tgz" - integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== - dependencies: - workbox-core "^5.1.4" - -workbox-range-requests@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz" - integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== - dependencies: - workbox-core "^5.1.4" - -workbox-routing@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-5.1.4.tgz" - integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== - dependencies: - workbox-core "^5.1.4" - -workbox-strategies@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-5.1.4.tgz" - integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== - dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - -workbox-streams@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-5.1.4.tgz" - integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== - dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - -workbox-sw@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-5.1.4.tgz" - integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== - -workbox-webpack-plugin@5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz" - integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ== - dependencies: - "@babel/runtime" "^7.5.5" - fast-json-stable-stringify "^2.0.0" - source-map-url "^0.4.0" - upath "^1.1.2" - webpack-sources "^1.3.0" - workbox-build "^5.1.4" - -workbox-window@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-5.1.4.tgz" - integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== - dependencies: - workbox-core "^5.1.4" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^6.2.1: - version "6.2.1" - resolved "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -ws@^7.2.3: - version "7.4.3" - resolved "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz" - integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0, yaml@^1.7.2: - version "1.10.0" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^15.4.1: - version "15.4.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 72d8566f23eadc31eade47f67aac2920caf3fdd4 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Fri, 10 Dec 2021 16:32:05 +0700 Subject: [PATCH 028/324] Pages Membership --- src/pages/Membership/Membership.js | 71 +++++++++++++++++++----------- 1 file changed, 46 insertions(+), 25 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index bbc4da4..485c01f 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,13 +1,29 @@ -import React, {useEffect, useState} from "react"; -import {Button, Card, Col, Divider, Input, List, message, Modal, Row, Space, Table, Tag,} from "antd"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined, FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; -import {MembershipModal} from "./MembershipModal"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {LINKS} from "../../routes/app"; +import React, { useEffect, useState } from "react"; +import { + Button, + Card, + Col, + Divider, + Input, + List, + message, + Modal, + Row, + Space, + Table, + Tag, +} from "antd"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { + ExclamationCircleOutlined, + FilterOutlined, + PlusSquareOutlined, +} from "@ant-design/icons"; +import { MembershipModal } from "./MembershipModal"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -const {Search} = Input; +const { Search } = Input; export const Membership = observer(() => { const store = useStore(); @@ -89,12 +105,12 @@ export const Membership = observer(() => { const routeData = [ { - route: LINKS.HOME, + route: "/app/home", name: "Home", }, { - route: LINKS.MEMBERSHIP, - name: Membership, + route: "/app/membership", + name: Membership, }, ]; @@ -103,7 +119,7 @@ export const Membership = observer(() => { setInitialData({}); setConfirmLoading(true); try { - console.log(data) + console.log(data); await store.membership.update(initialData.id, data); message.success("Success Update Data Member"); await store.membership.getData(); @@ -128,7 +144,6 @@ export const Membership = observer(() => { } }; - const handleDelete = (record) => { Modal.confirm({ title: "Are you sure delete this record?", @@ -139,7 +154,7 @@ export const Membership = observer(() => { async onOk() { try { //TODO: minta apinya ke ka ilham ya, jangan di uncomment kalo pake api reconcile, nanti beneran ke apus datanya - await store.membership.delete(record) + await store.membership.delete(record); message.success("Success Delete Data"); await store.membership.getData(); } catch (e) { @@ -164,20 +179,26 @@ export const Membership = observer(() => { - + - @@ -189,7 +210,7 @@ export const Membership = observer(() => { columns={columns} dataSource={store.membership.data} bordered - + // pagination={{ // total: store.membership.total_data, // current: store.membership.page, From cae14036db10ce194f4981bb9a046323e2e1ad2f Mon Sep 17 00:00:00 2001 From: buckyhelmsmash Date: Fri, 10 Dec 2021 16:32:38 +0700 Subject: [PATCH 029/324] stitching pulsa component --- src/pages/Transaction/Pulsa.js | 145 ++++++++++++++++----------------- src/store/index.js | 16 ++-- src/store/transaction.js | 69 ++++++++++++++++ 3 files changed, 149 insertions(+), 81 deletions(-) create mode 100644 src/store/transaction.js diff --git a/src/pages/Transaction/Pulsa.js b/src/pages/Transaction/Pulsa.js index ded433a..9397be8 100644 --- a/src/pages/Transaction/Pulsa.js +++ b/src/pages/Transaction/Pulsa.js @@ -1,25 +1,65 @@ -import React from "react"; -import {Button, Card, Col, Dropdown, Menu, message, Modal, Row, Space,} from "antd"; -import {DownOutlined, TabletOutlined, UserOutlined} from "@ant-design/icons"; +import React, { useEffect, useState } from "react"; +import { useStore } from "../../utils/useStore"; +import { Button, Card, Col, Dropdown, Menu, message, Modal, Row, Space, } from "antd"; +import { DownOutlined, TabletOutlined, UserOutlined } from "@ant-design/icons"; export const Pulsa = () => { - function handleMenuClick(e) { - message.info("Click on menu item."); - console.log("click", e); + const store = useStore(); + + const [isLoading, setIsLoading] = useState(false); + + const [productData, setProductData] = useState([]) + const [productFilter, setProductFilter] = useState("") + // useEffect(()=>{ + // if(!productFilter){ + // setProductData(store.transaction.data) + // } + // },[productFilter]) + + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.transaction.getDataSubCategories(); + await store.transaction.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + + init(); + }, []); + + // data + useEffect(() => { + console.log('âš¡ transaction data store', store.transaction.data) + setProductData(store.transaction.data) + }, [store.transaction.data]) + + // Subcategory + useEffect(() => { + console.log('âš¡ transaction subcategory store', store.transaction.dataSubCategories) + }, [store.transaction.dataSubCategories]) + + + function handleMenuClick(item) { + message.info("âš¡ Click on menu item."); + console.log("âš¡ click", item); + setProductFilter(item.name) } const menu = ( - - }> - 1st menu item - - }> - 2nd menu item - - }> - 3rd menu item - + + {store.transaction.dataSubCategories.map((item, index) => ( + } onClick={() => handleMenuClick(item)} > + {item.name} + + ))} + ); @@ -29,55 +69,12 @@ export const Pulsa = () => { }); } - const dataCard = [ - { - title: "DATA AXIS BRONET 2GB-60HR", - price: "Harga : Rp.6.000", - }, - { - title: "DATA AXIS BRONET 2GB-60HR", - price: "Harga : Rp.6.000", - }, - { - title: "DATA AXIS BRONET 2GB-60HR", - price: "Harga : Rp.6.000", - }, - { - title: "DATA AXIS BRONET 2GB-60HR", - price: "Harga : Rp.6.000", - }, - { - title: "DATA AXIS BRONET 2GB-60HR", - price: "Harga : Rp.6.000", - }, - { - title: "DATA AXIS BRONET 2GB-60HR", - price: "Harga : Rp.6.000", - }, - { - title: "DATA AXIS BRONET 2GB-60HR", - price: "Harga : Rp.6.000", - }, - { - title: "DATA AXIS BRONET 2GB-60HR", - price: "Harga : Rp.6.000", - }, - { - title: "DATA AXIS BRONET 2GB-60HR", - price: "Harga : Rp.6.000", - }, - { - title: "DATA AXIS BRONET 2GB-60HR", - price: "Harga : Rp.6.000", - }, - ] - return (
- - Sub-Category - + + Sub-Category + @@ -88,34 +85,34 @@ export const Pulsa = () => { color: "grey", }} > - + Select sub-Category - + - - Produk & Nominal - + + Produk & Nominal + - {dataCard.map((item, index) => ( + {productData.map((item, index) => (
- {item.title} -
- {item.price} + {item.name} +
+ {item.price}
))} - - + - ); + ); }; diff --git a/src/store/index.js b/src/store/index.js index 8a935c9..899dc04 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,10 +1,11 @@ -import {UI} from "./ui"; -import {Authentication} from "./authentication"; -import {User} from "./user"; -import {Membership} from "./membership"; -import {Product} from "./product"; -import {TokenUtil} from "../utils/token"; -import {Role} from "./role"; +import { UI } from "./ui"; +import { Authentication } from "./authentication"; +import { User } from "./user"; +import { Membership } from "./membership"; +import { Product } from "./product"; +import { Transaction } from "./transaction"; +import { TokenUtil } from "../utils/token"; +import { Role } from "./role"; export class Store { ui = new UI(this); @@ -12,6 +13,7 @@ export class Store { user = new User(this); membership = new Membership(this); product = new Product(this); + transaction = new Transaction(this); role = new Role(this); constructor() { diff --git a/src/store/transaction.js b/src/store/transaction.js new file mode 100644 index 0000000..8150f40 --- /dev/null +++ b/src/store/transaction.js @@ -0,0 +1,69 @@ +import { makeAutoObservable } from "mobx"; +import { http } from "../utils/http"; + +export class Transaction { + page = 0; + pageSize = 10 + data = []; + total_data = 0; + filterCategory = null; + visibleModalProduct = false; + + pageCategories = 0; + pageSizeCategories = 10 + dataCategories = []; + total_dataCategories = 0; + + pageSubCategories = 0; + pageSizeSubCategories = 10 + dataSubCategories = []; + total_dataSubCategories = 0; + + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } + + async getData() { + const response = await http.get(`/product/by-categories?categories=${this.filterCategory}&page=${this.page}&pageSize=${this.pageSize}`); + + this.data = response.body.data ?? [] + this.total_data = response.body.total_data ?? 0 + } + + async getDataSubCategories() { + const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + this.dataSubCategories = response.body.data ?? [] + this.total_dataSubCategories = response.body.count ?? 0 + } + + async getDataCategories() { + const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); + + this.dataCategories = response.body.data ?? [] + this.total_dataCategories = response.body.total_data ?? 0 + if (this.dataCategories.length > 0) { + this.filterCategory = this.dataCategories[0].id + } + } + + async create(data) { + const response = await http.post('/product').send(data); + await this.getData(); + return response; + } + + async update(id, data) { + const response = await http.put(`/product/${id}`).send(data); + await this.getData(); + return response; + } + + async delete(id) { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } +} + + From 9208bd5dd82655f8455c785bc896fe07167ff48b Mon Sep 17 00:00:00 2001 From: buckyhelmsmash Date: Fri, 10 Dec 2021 17:59:41 +0700 Subject: [PATCH 030/324] fix: responsive tabs by data T[Transaction page] --- src/pages/Transaction/Pulsa.js | 18 +++-- src/pages/Transaction/Transaction.js | 115 +++++++++++++++------------ 2 files changed, 79 insertions(+), 54 deletions(-) diff --git a/src/pages/Transaction/Pulsa.js b/src/pages/Transaction/Pulsa.js index 9397be8..bb7195d 100644 --- a/src/pages/Transaction/Pulsa.js +++ b/src/pages/Transaction/Pulsa.js @@ -11,11 +11,17 @@ export const Pulsa = () => { const [productData, setProductData] = useState([]) const [productFilter, setProductFilter] = useState("") - // useEffect(()=>{ - // if(!productFilter){ - // setProductData(store.transaction.data) - // } - // },[productFilter]) + useEffect(() => { + if (!productFilter) { + console.log('âš¡ filter is null', productFilter) + setProductData(store.transaction.data) + } else { + console.log('âš¡ filter is not null', productFilter) + setProductData(store.transaction.data.filter(function (product) { + return product.sub_categories.name === productFilter + })) + } + }, [productFilter]) useEffect(() => { const init = async () => { @@ -23,6 +29,7 @@ export const Pulsa = () => { setIsLoading(true); await store.transaction.getDataSubCategories(); await store.transaction.getData(); + await store.transaction.getDataCategories(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -30,6 +37,7 @@ export const Pulsa = () => { }; init(); + setProductFilter("") }, []); // data diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js index 5d5e506..33cf846 100644 --- a/src/pages/Transaction/Transaction.js +++ b/src/pages/Transaction/Transaction.js @@ -1,14 +1,40 @@ -import React from "react"; -import {Button, Card, Col, Input, Row, Tabs} from "antd"; -import {FilterOutlined,} from "@ant-design/icons"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {Pulsa} from "./Pulsa"; -import {LINKS} from "../../routes/app"; +import React, { useEffect, useState } from "react"; +import { useStore } from "../../utils/useStore"; +import { Button, Card, Col, Input, Row, Tabs } from "antd"; +import { FilterOutlined, } from "@ant-design/icons"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { Pulsa } from "./Pulsa"; +import { LINKS } from "../../routes/app"; -const {TabPane} = Tabs; -const {Search} = Input; +const { TabPane } = Tabs; +const { Search } = Input; export const Transaction = () => { + + const store = useStore(); + + const [isLoading, setIsLoading] = useState(false); + + // Init + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.transaction.getDataCategories(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + + init(); + }, []); + + // Category + useEffect(() => { + console.log('âš¡ transaction category store', store.transaction.dataCategories) + }, [store.transaction.dataCategories]) + const callback = (key) => { console.log(key); }; @@ -19,50 +45,41 @@ export const Transaction = () => { }, { route: LINKS.TRANSACTION, - name: Transaction, + name: Transaction, }, ]; return ( -
- - - -
- - - - - - - - - +
+ + + +
+ + + + + + + + {store.transaction.dataCategories.map((item, index) => ( + + - - Game Voucher - - - Product - - - Product - - - Product - - - - + ))} + + + + ); }; From 89443daa8c305e9d4bd324dbfd8f4c8ba1cbabfb Mon Sep 17 00:00:00 2001 From: caturbgs Date: Tue, 14 Dec 2021 12:13:39 +0700 Subject: [PATCH 031/324] feat: profile page --- src/pages/Profile/Profile.js | 42 ++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 8aaa140..25e83d2 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -1,12 +1,13 @@ import React from "react"; -import {Button, Card, Col, Input, Row} from "antd"; +import {Card, Col, Row, Typography} from "antd"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {FilterOutlined, PlusSquareOutlined} from "@ant-design/icons"; import {LINKS} from "../../routes/app"; +import {useStore} from "../../utils/useStore"; -const {Search} = Input; +const {Title, Text} = Typography; export const Profile = () => { + const store = useStore(); const routeData = [ { route: LINKS.HOME, @@ -23,24 +24,27 @@ export const Profile = () => { - - - - - - + +
+ Profile + +
+ Name + + + {store.authentication.userData.username} + + + Role + + + {store.authentication.userData.role} + + + -
+
From 558ca2a09808a06b21777551937ca72c3c298c07 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Tue, 14 Dec 2021 18:52:42 +0700 Subject: [PATCH 032/324] Pages Config --- package.json | 3 + src/component/BreadcumbComponent.js | 2 +- ...ionComponent.js => CommissionComponent.js} | 30 +- src/component/PartnerComponent.js | 496 ++++++++++-------- src/component/SupplierComponent.js | 4 +- src/index.css | 3 + src/pages/App/DesktopLayout.js | 10 +- src/pages/App/MenuList.js | 20 +- .../Config/{Commision.js => Commission.js} | 30 +- src/pages/Config/Partner.js | 18 +- src/pages/Config/Supplier.js | 21 +- src/pages/Product/Product.js | 6 +- src/routes/app.js | 8 +- src/store/commision.js | 0 src/store/commission.js | 52 ++ src/store/index.js | 4 +- src/store/partner.js | 32 +- src/store/supplier.js | 24 +- 18 files changed, 421 insertions(+), 342 deletions(-) rename src/component/{CommisionComponent.js => CommissionComponent.js} (88%) rename src/pages/Config/{Commision.js => Commission.js} (70%) delete mode 100644 src/store/commision.js create mode 100644 src/store/commission.js diff --git a/package.json b/package.json index 31c20a8..644ea67 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,9 @@ "dependencies": { "@ant-design/icons": "^4.6.2", "@babel/core": "7.14.5", + "@fortawesome/fontawesome-svg-core": "^1.2.36", + "@fortawesome/free-solid-svg-icons": "^6.0.0-beta3", + "@fortawesome/react-fontawesome": "^0.1.16", "@pmmmwh/react-refresh-webpack-plugin": "0.4.3", "@svgr/webpack": "5.5.0", "@testing-library/jest-dom": "^5.14.1", diff --git a/src/component/BreadcumbComponent.js b/src/component/BreadcumbComponent.js index 75b4494..58708ea 100644 --- a/src/component/BreadcumbComponent.js +++ b/src/component/BreadcumbComponent.js @@ -5,7 +5,7 @@ import {Link} from "react-router-dom"; export const BreadcumbComponent = (props) => { return (
- + {props.data.map((e, index) => ( diff --git a/src/component/CommisionComponent.js b/src/component/CommissionComponent.js similarity index 88% rename from src/component/CommisionComponent.js rename to src/component/CommissionComponent.js index 98a5cc0..a569aaa 100644 --- a/src/component/CommisionComponent.js +++ b/src/component/CommissionComponent.js @@ -7,7 +7,7 @@ import {capitalize} from "lodash"; import {useStore} from "../utils/useStore"; import {LINKS} from "../routes/app"; -export const CommisionComponent = observer((props) => { +export const CommissionComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); const {Option} = Select; @@ -20,7 +20,7 @@ export const CommisionComponent = observer((props) => { const init = async () => { try { setIsLoading(true); - await store.product.getDataSubCategories(); + //await store.product.getDataSubCategories(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -38,7 +38,7 @@ export const CommisionComponent = observer((props) => { address: data.address, }); - store.product.visibleModalProduct = true; + store.commission.visibleModalCommission = true; setIdData(data.id); } @@ -92,7 +92,7 @@ export const CommisionComponent = observer((props) => { const deleteData = async (id) => { try { console.log(id); - await store.product.delete(id); + await store.commission.delete(id); message.success("Data Berhasil Dihapus"); history.push(LINKS.PRODUCT); } catch (err) { @@ -119,7 +119,7 @@ export const CommisionComponent = observer((props) => { const handleCancel = () => { setIdData('') - store.product.visibleModalProduct = false; + store.commission.visibleModalCommission = false; } const handleSubmit = async (data) => { @@ -127,26 +127,26 @@ export const CommisionComponent = observer((props) => { if (idData !== '') { setConfirmLoading(true); try { - await store.product.update(idData, data) + await store.commission.update(idData, data) message.success("Success Update Data Member") } catch (e) { message.error("Failed Update Data Member") } setConfirmLoading(false); - store.product.visibleModalProduct = false; + store.commission.visibleModalCommission = false; setIdData(''); form.resetFields(); } else { setConfirmLoading(true); try { - await store.partner.create(data) + await store.commission.create(data) message.success("Success Add New Member") } catch (e) { console.log(e, "apa errornya") message.error("Failed Add Member") } setConfirmLoading(false); - store.product.visibleModalProduct = false; + store.commission.visibleModalCommission = false; setIdData(''); form.resetFields(); } @@ -157,7 +157,7 @@ export const CommisionComponent = observer((props) => {
{ }} onChange={async (page) => { let pageNumber = page.current; - store.product.pageSize = page.pageSize; - store.product.page = pageNumber - 1; + store.commission.pageSize = page.pageSize; + store.commission.page = pageNumber - 1; // store.membership.isLoading = true; - await store.product.getData(); + await store.commission.getData(); // store.membership.isLoading = false; }} /> { diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index f91e120..64f27ee 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -1,244 +1,274 @@ -import React, {useEffect, useState} from "react"; -import {Button, Form, Input, message, Modal, Select, Space, Table, Tag} from "antd"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined} from "@ant-design/icons"; -import {useHistory} from "react-router-dom"; -import {capitalize} from "lodash"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; +import React, { useEffect, useState } from "react"; +import { + Button, + Form, + Input, + message, + Modal, + Select, + Space, + Table, + Tag, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { useHistory } from "react-router-dom"; +import { capitalize } from "lodash"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; export const PartnerComponent = observer((props) => { - const store = useStore(); - const [form] = Form.useForm(); - const {Option} = Select; - const history = useHistory(); - const [idData, setIdData] = useState(''); - const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); + const store = useStore(); + const [form] = Form.useForm(); + const { Option } = Select; + const history = useHistory(); + const [idData, setIdData] = useState(""); + const [confirmLoading, setConfirmLoading] = useState(false); + const [isLoading, setIsLoading] = useState(false); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - await store.partner.getDataSubCategories(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); - }, []); - - const handleEditButton = (data) => { - console.log(data, "isi data") - form.setFieldsValue({ - name: data.name, - npwp: data.npwp, - address: data.address, - - }); - store.partner.visibleModalPartner = true; - setIdData(data.id); - } - - const columns = [ - { - title: "Name", - dataIndex: "name", - key: "name", - }, - { - title: "Npwp", - dataIndex: "npwp", - key: "npwp", - }, - { - title: "Address", - dataIndex: "address", - key: "address", - }, - { - title: "Status", - dataIndex: "status", - key: "status", - render: (text, record) => ( - - {record?.status === true ? " ACTIVE" : "INACTIVE"} - - ), - }, - { - title: "Action", - key: "action", - render: (text, record) => ( - - - - - ), - }, - ]; - - const deleteData = async (id) => { - try { - console.log(id); - await store.product.delete(id); - message.success("Data Berhasil Dihapus"); - history.push(LINKS.PRODUCT); - } catch (err) { - console.log("error", err); - message.error("Gagal menghapus"); - } + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.partner.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } }; - const handleDelete = (id) => { - Modal.confirm({ - title: "Are you sure delete this record?", - icon: , - okText: "Yes", - okType: "primary", - cancelText: "Cancel", - onOk() { - return deleteData(id); - }, - onCancel() { - console.log("Cancel"); - }, - }); - }; + init(); + }, []); - const handleCancel = () => { - setIdData('') - store.partner.visibleModalPartner = false; + const handleEditButton = (data) => { + console.log(data, "isi data"); + form.setFieldsValue({ + name: data.name, + npwp: data.npwp, + address: data.address, + }); + store.partner.visibleModalPartner = true; + setIdData(data.id); + }; + + const columns = [ + { + title: "Name", + dataIndex: "name", + key: "name", + }, + { + title: "Npwp", + dataIndex: "npwp", + key: "npwp", + }, + { + title: "Address", + dataIndex: "address", + key: "address", + }, + { + title: "Status", + dataIndex: "status", + key: "status", + render: (text, record) => ( + + ), + }, + { + title: "Action", + key: "action", + render: (text, record) => ( + + + + + ), + }, + ]; + +// const handleEditStatus = async (id)=>{ +// try { +// console.log(id); +// await store.partner.delete(id); +// message.success("Data Berhasil Dihapus"); +// history.push(LINKS.PARTNER); +// } catch (err) { +// console.log("error", err); +// message.error("Gagal menghapus"); +// } +// } + + const deleteData = async (id) => { + try { + console.log(id); + await store.partner.delete(id); + message.success("Data Berhasil Dihapus"); + history.push(LINKS.PARTNER); + } catch (err) { + console.log("error", err); + message.error("Gagal menghapus"); } + }; - const handleSubmit = async (data) => { - console.log(data, "isi data2") - if (idData !== '') { - setConfirmLoading(true); - try { - await store.partner.update(idData, data) - message.success("Success Update Data Member") - } catch (e) { - message.error("Failed Update Data Member") - } - setConfirmLoading(false); - store.partner.visibleModalPartner = false; - setIdData(''); - form.resetFields(); - } else { - setConfirmLoading(true); - try { - await store.partner.create(data) - message.success("Success Add New Member") - } catch (e) { - console.log(e, "apa errornya") - message.error("Failed Add Member") - } - setConfirmLoading(false); - store.partner.visibleModalPartner = false; - setIdData(''); - form.resetFields(); - } + + const handleDelete = (id) => { + Modal.confirm({ + title: "Are you sure delete this record?", + icon: , + okText: "Yes", + okType: "primary", + cancelText: "Cancel", + onOk() { + return deleteData(id); + }, + onCancel() { + console.log("Cancel"); + }, + }); + }; + + const handleCancel = () => { + setIdData(""); + store.partner.visibleModalPartner = false; + }; + + const handleSubmit = async (data) => { + console.log(data, "isi data2"); + if (idData !== "") { + setConfirmLoading(true); + try { + await store.partner.update(idData, data); + message.success("Success Update Data Partner"); + //await store.partner.getData() + } catch (e) { + message.error("Failed Update Data Partner"); + } + setConfirmLoading(false); + store.partner.visibleModalPartner = false; + setIdData(""); + form.resetFields(); + } else { + setConfirmLoading(true); + try { + await store.partner.create(data); + message.success("Success Add New Partner"); + //await store.partner.getData() + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Add Partner"); + } + setConfirmLoading(false); + store.partner.visibleModalPartner = false; + setIdData(""); + form.resetFields(); } + }; + return ( +
+
{ + let pageNumber = page.current; + store.partner.pageSize = page.pageSize; + store.partner.page = pageNumber - 1; + //store.membership.isLoading = true; + await store.partner.getData(); + // store.membership.isLoading = false; + }} + /> - return ( -
-
{ - let pageNumber = page.current; - store.partner.pageSize = page.pageSize; - store.partner.page = pageNumber - 1; - // store.membership.isLoading = true; - await store.partner.getData(); - // store.membership.isLoading = false; - }} - /> - - { - form.resetFields(); - handleCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form") - handleSubmit(values); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} - > -
- - - - - - - - - - - - - - - - -
- - ); + { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmit(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + + + + + + + + + + + + + +
+ + ); }); diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index c3c5454..f12cc45 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -30,7 +30,7 @@ export const SupplierComponent = observer((props) => { const init = async () => { try { setIsLoading(true); - await store.product.getDataSubCategories(); + await store.supplier.getData(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -90,7 +90,7 @@ export const SupplierComponent = observer((props) => { const deleteData = async (id) => { try { console.log(id); - await store.product.delete(id); + await store.supplier.delete(id); message.success("Data Berhasil Dihapus"); history.push(LINKS.PRODUCT); } catch (err) { diff --git a/src/index.css b/src/index.css index 47e2225..8911c18 100644 --- a/src/index.css +++ b/src/index.css @@ -63,3 +63,6 @@ code { .ant-menu-submenu-arrow{ padding-right: 40px !important; } +.ant-breadcrumb{ + margin-bottom: 10px !important; +} \ No newline at end of file diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index b1bb129..56a4e1c 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -133,13 +133,13 @@ export const DesktopLayout = observer(() => { - + Commision - + Supplier @@ -168,12 +168,6 @@ export const DesktopLayout = observer(() => { Profile - {/**/} - {/* */} - {/* */} - {/* About*/} - {/* */} - {/**/} diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 19e699d..c56da91 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -9,7 +9,7 @@ import { DatabaseOutlined, MoneyCollectOutlined, ProjectOutlined, - FileProtectOutlined + FileProtectOutlined, } from "@ant-design/icons"; import { observer } from "mobx-react-lite"; import { useStore } from "../../utils/useStore"; @@ -51,28 +51,32 @@ export const MenuList = observer((props) => { {store.authentication.userData.role !== "Retail" && ( - + Membership )} {store.authentication.userData.role !== "Retail" && ( - } title="Config" style={{backgroundColor:'#e3e8ee'}}> + } + title="Config" + > - + Partner - - - Commision + + + Commission - + Supplier diff --git a/src/pages/Config/Commision.js b/src/pages/Config/Commission.js similarity index 70% rename from src/pages/Config/Commision.js rename to src/pages/Config/Commission.js index 099f158..50a669a 100644 --- a/src/pages/Config/Commision.js +++ b/src/pages/Config/Commission.js @@ -4,13 +4,13 @@ import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; -import {CommisionComponent} from "../../component/CommisionComponent"; +import {CommissionComponent} from "../../component/CommissionComponent"; import {LINKS} from "../../routes/app"; const {TabPane} = Tabs; const {Search} = Input; -export const Commision = observer(() => { +export const Commission = observer(() => { const [isLoading, setIsLoading] = useState(false); const store = useStore(); @@ -18,8 +18,8 @@ export const Commision = observer(() => { const init = async () => { try { setIsLoading(true); - await store.partner.getDataCategories(); - await store.partner.getData(); + //await store.commission.getDataCategories(); + await store.commission.getData(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -29,10 +29,10 @@ export const Commision = observer(() => { init(); }, []); - const handleChangeTabPane = async (key) => { - store.product.filterCategory = key; - console.log(key); - }; + // const handleChangeTabPane = async (key) => { + // store.product.filterCategory = key; + // console.log(key); + // }; const routeData = [ { @@ -40,8 +40,8 @@ export const Commision = observer(() => { name: "Home", }, { - route: LINKS.PARTNER, - name: Partner, + route: LINKS.COMMISSION, + name: Commission, }, ]; @@ -59,7 +59,11 @@ export const Commision = observer(() => { console.log(value)} /> + + + ), + }, + ]; + + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.PAYBACK, + name: Payback, + }, + ]; + + const onSubmit = async (data) => { + setConfirmLoading(true); + try { + // await store.membership.create(data); + // message.success("Success Add New Member"); + // await store.membership.getData(); + } catch (e) { + console.error(e, "apa errornya"); + message.error("Failed Add Member"); + } + setConfirmLoading(false); + setVisibleModal(false); + }; + + const handleAction = async (record, type) => { + + }; + + return ( +
+ {/* +

Some contents...

+

Some contents...

+

Some contents...

+
*/} + + +
+ +
+ + + + + + + + {store.ui.mediaQuery.isDesktop && ( +
{ + // let pageNumber = page.current; + // store.membership.pageSize = page.pageSize; + // store.membership.page = pageNumber - 1; + // // store.membership.isLoading = true; + // await store.membership.getData(); + // // store.membership.isLoading = false; + // }} + /> + )} + + {store.ui.mediaQuery.isMobile && ( + { + // store.membership.pageSize = page.pageSize; + // store.membership.page = page.current; + // store.membership.getData(); + // }, + // pageSize: store.membership.pageSize, + // total: store.membership.total_data, + // current: store.membership.page, + // style: {marginBottom: "1rem", marginRight: "1rem"}, + // }} + dataSource={dummyData} + style={{padding: 0}} + renderItem={(item) => { + return ( +
+ + + +
+ } + /> +
+

+ {item.amount} +

+
+ + + + ); + }} + /> + )} + + + + { + await onSubmit(data); + }} + onCancel={() => { + setInitialData({}); + setVisibleModal(false); + }} + /> + + ); +}); diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js new file mode 100644 index 0000000..f7fcda0 --- /dev/null +++ b/src/pages/Payback/PaybackModal.js @@ -0,0 +1,164 @@ +import React, {useState} from 'react'; +import {Button, Form, Image, Input, message, Modal, Upload} from 'antd'; +import {useStore} from "../../utils/useStore"; +import {appConfig} from "../../config/app"; +import {LoadingOutlined, UploadOutlined} from "@ant-design/icons"; + +export const PaybackModal = ({ + visible, + onCreate, + onCancel, + initialData, + }) => { + const [form] = Form.useForm(); + const store = useStore(); + + const [fileList, setFileList] = useState([]); + const [previewTitle, setPreviewTitle] = useState(""); + const [previewImage, setPreviewImage] = useState(""); + const [loading, setLoading] = useState(false); + const [fileUrl, setFileUrl] = useState(""); + const firstIndexFileList = fileList[0]; + + const beforeUpload = (file) => { + let isPdf, isLt2M; + let allowedFile = ['image/jpeg', 'image/png', "application/pdf"]; + let isValid = allowedFile.includes(file.type) + if (!isValid) { + message.error("You can only upload PDF or Image file!"); + } + // return file.type === 'application/pdf' ? true : Upload.LIST_IGNORE; + isLt2M = file.size / 1024 / 1024 < 2; + if (!isLt2M) { + message.error("File must smaller than 2MB!"); + } + return isValid && isLt2M ? true : Upload.LIST_IGNORE; + } + + const handlePreview = async (file) => { + const fileUrl = appConfig.apiUrl + file.response.path; + setPreviewTitle(file.url?.substring(file.url?.lastIndexOf("/") + 1)); + }; + + const handleChange = ({fileList}) => { + setFileList(fileList); + if (fileList.length && fileList[0].status === "done") { + form.setFieldsValue({ + file_url: fileList[0].response.path, + }); + console.log(fileList, "apaaaaaa"); + setFileUrl(fileList[0].response.path); + setPreviewImage(fileList[0].response.path); + setPreviewTitle(fileList[0].name); + } + }; + + const uploadButton = ( +
+ {loading ? ( + + ) : ( + + )} +
+ ); + + const previewUpload = ( + + ) + + return ( + { + form.resetFields() + onCancel() + }} + onOk={() => { + form + .validateFields() + .then(values => { + onCreate(values); + form.resetFields() + }) + .catch(info => { + console.log('Validate Failed:', info); + }); + }} + > +
+ + + + + +
+
+ + {!firstIndexFileList ? uploadButton : null} + +
+ Max size of file 2 mb +
+
+
+
Preview
+
+ preview +
+
{previewTitle}
+
{previewUpload} + {previewTitle && {`${previewTitle ?? ""}`}}
+
+
+
+ + + + +
+ ); +}; diff --git a/src/routes/app.js b/src/routes/app.js index 5e2aa7d..09e89b8 100644 --- a/src/routes/app.js +++ b/src/routes/app.js @@ -8,6 +8,7 @@ import {Profile} from "../pages/Profile/Profile"; import {Commission} from "../pages/Config/Commission"; import {Partner} from "../pages/Config/Partner"; import {Supplier} from "../pages/Config/Supplier"; +import {Payback} from "../pages/Payback/Payback"; export const LINKS = { @@ -20,7 +21,8 @@ export const LINKS = { PARTNER: "/app/partner", COMMISSION: "/app/commission", SUPPLIER: "/app/supplier", - + PAYBACK: "/app/payback", + }; export const AppRoute = () => { @@ -46,6 +48,9 @@ export const AppRoute = () => { + + + From 7b95d2901bca10a7dba1ede518096f62939a731e Mon Sep 17 00:00:00 2001 From: ajat91 Date: Wed, 15 Dec 2021 14:41:00 +0700 Subject: [PATCH 034/324] Page Category --- src/component/CategoryComponent.js | 217 +++++++++++++++++++++++++++++ src/component/PartnerComponent.js | 2 +- src/component/ProductComponent.js | 5 +- src/component/SupplierComponent.js | 62 ++++++++- src/pages/App/MenuList.js | 21 +++ src/pages/Config/Supplier.js | 172 ++++++++++++----------- src/pages/Membership/Membership.js | 2 +- src/pages/Product/Category.js | 83 +++++++++++ src/pages/Product/Product.js | 159 ++++++++++----------- src/pages/Product/Subcategory.js | 0 src/routes/app.js | 5 + src/store/category.js | 69 +++++++++ src/store/index.js | 3 + src/store/membership.js | 8 +- src/store/subcategory.js | 0 src/store/supplier.js | 8 +- 16 files changed, 644 insertions(+), 172 deletions(-) create mode 100644 src/component/CategoryComponent.js create mode 100644 src/pages/Product/Category.js create mode 100644 src/pages/Product/Subcategory.js create mode 100644 src/store/category.js create mode 100644 src/store/subcategory.js diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js new file mode 100644 index 0000000..87f01c7 --- /dev/null +++ b/src/component/CategoryComponent.js @@ -0,0 +1,217 @@ +import React, {useEffect, useState} from "react"; +import {Button, Form, Input, message, Modal, Select, Space, Table, Tag} from "antd"; +import {observer} from "mobx-react-lite"; +import {ExclamationCircleOutlined} from "@ant-design/icons"; +import {useHistory} from "react-router-dom"; +import {capitalize} from "lodash"; +import {useStore} from "../utils/useStore"; +import {LINKS} from "../routes/app"; + +export const CategoryComponent = observer((props) => { + const store = useStore(); + const [form] = Form.useForm(); + const {Option} = Select; + const history = useHistory(); + const [idData, setIdData] = useState(''); + const [confirmLoading, setConfirmLoading] = useState(false); + const [isLoading, setIsLoading] = useState(false); + + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + //store.product.pageCategories=StrToLower(props.category) + await store.product.getDataSubCategories(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + + init(); + }, []); + + const handleEditButton = (data) => { + console.log(data, "isi data") + form.setFieldsValue({ + name: data.name, + }); + store.category.visibleModalCategory = true; + setIdData(data.id); + } + + const columns = [ + { + title: "Product Name", + dataIndex: "name", + key: "name", + }, + // { + // title: "Gangguan", + // dataIndex: "status", + // key: "status", + // render: (text, record) => ( + // + // {capitalize(record?.status)} + // + // ), + // }, + // { + // title: "Tersedia", + // dataIndex: "tersedia", + // key: "tersedia", + // render: (text, record) => ( + // + // {record?.status === "ACTIVE" ? " Ya" : "Tidak"} + // + // ), + // }, + { + title: "Action", + key: "action", + render: (text, record) => ( + + + + + ), + }, + ]; + + const deleteData = async (id) => { + try { + console.log(id); + await store.category.delete(id); + message.success("Data Berhasil Dihapus"); + history.push(LINKS.PRODUCT); + } catch (err) { + console.log("error", err); + message.error("Gagal menghapus"); + } + }; + + const handleDelete = (id) => { + Modal.confirm({ + title: "Are you sure delete this record?", + icon: , + okText: "Yes", + okType: "primary", + cancelText: "Cancel", + onOk() { + return deleteData(id); + }, + onCancel() { + console.log("Cancel"); + }, + }); + }; + + const handleCancel = () => { + setIdData('') + store.category.visibleModalCategory = false; + } + + const handleSubmit = async (data) => { + console.log(data, "isi data2") + if (idData !== '') { + setConfirmLoading(true); + try { + await store.category.update(idData, data) + message.success("Success Update Data Category") + } catch (e) { + message.error("Failed Update Data Category") + } + setConfirmLoading(false); + store.category.visibleModalCategory = false; + setIdData(''); + form.resetFields(); + } else { + setConfirmLoading(true); + try { + await store.category.create(data) + message.success("Success Add New Category") + } catch (e) { + console.log(e, "apa errornya") + message.error("Failed Add Category") + } + setConfirmLoading(false); + store.category.visibleModalCategory = false; + setIdData(''); + form.resetFields(); + } + } + + return ( +
+
{ + let pageNumber = page.current; + store.product.pageSize = page.pageSize; + store.product.page = pageNumber - 1; + // store.membership.isLoading = true; + await store.product.getData(); + // store.membership.isLoading = false; + }} + /> + + { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form") + handleSubmit(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + +
+ + ); +}); diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 64f27ee..87636a0 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -72,7 +72,7 @@ export const PartnerComponent = observer((props) => { dataIndex: "status", key: "status", render: (text, record) => ( - ), diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 3266a2e..ec308be 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -20,6 +20,7 @@ export const ProductComponent = observer((props) => { const init = async () => { try { setIsLoading(true); + //store.product.pageCategories=StrToLower(props.category) await store.product.getDataSubCategories(); setIsLoading(false); } catch (e) { @@ -71,7 +72,7 @@ export const ProductComponent = observer((props) => { key: "status", render: (text, record) => ( {capitalize(record?.status)} @@ -84,7 +85,7 @@ export const ProductComponent = observer((props) => { key: "tersedia", render: (text, record) => ( {record?.status === "ACTIVE" ? " Ya" : "Tidak"} diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index f12cc45..ecb2431 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -68,7 +68,7 @@ export const SupplierComponent = observer((props) => { key: "status", render: (text, record) => ( {record?.status === true ? " ACTIVE" : "INACTIVE"} @@ -119,6 +119,9 @@ export const SupplierComponent = observer((props) => { setIdData(""); store.supplier.visibleModalSupplier = false; }; + const handleCancelTransaction= () => { + store.supplier.visibleModalTransaction = false; + }; const handleSubmit = async (data) => { console.log(data, "isi data2"); @@ -151,6 +154,24 @@ export const SupplierComponent = observer((props) => { } }; + const handleSubmitTransaction = async (data) => { + console.log(data, "isi data2"); + setConfirmLoading(true); + try { + await store.supplier.createTransaction(data); + message.success("Success Top Up"); + //await store.supplier.getData() + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Top Up"); + } + setConfirmLoading(false); + store.supplier.visibleModalTransaction = false; + form.resetFields(); + }; + + + return (
{ + { + form.resetFields(); + handleCancelTransaction(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmitTransaction(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + + + + +
); }); diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index c56da91..6366638 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -10,6 +10,9 @@ import { MoneyCollectOutlined, ProjectOutlined, FileProtectOutlined, + FileAddOutlined, + FileSyncOutlined, + ProfileOutlined } from "@ant-design/icons"; import { observer } from "mobx-react-lite"; import { useStore } from "../../utils/useStore"; @@ -83,12 +86,30 @@ export const MenuList = observer((props) => { )} {store.authentication.userData.role !== "Retail" && ( + } + title="Product" + > Product + + + + Category + + + + + + Sub Category + + + )} {store.authentication.userData.role === ("Retail" || "Admin") && ( diff --git a/src/pages/Config/Supplier.js b/src/pages/Config/Supplier.js index 0e5474b..19de002 100644 --- a/src/pages/Config/Supplier.js +++ b/src/pages/Config/Supplier.js @@ -1,91 +1,97 @@ -import React, {useEffect, useState} from "react"; -import {Button, Card, Col, Input, Row, Tabs} from "antd"; -import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {SupplierComponent} from "../../component/SupplierComponent"; -import {LINKS} from "../../routes/app"; +import React, { useEffect, useState } from "react"; +import { Button, Card, Col, Input, Row, Tabs } from "antd"; +import { FilterOutlined, PlusSquareOutlined,DownloadOutlined } from "@ant-design/icons"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { SupplierComponent } from "../../component/SupplierComponent"; +import { LINKS } from "../../routes/app"; -const {TabPane} = Tabs; -const {Search} = Input; +const { TabPane } = Tabs; +const { Search } = Input; export const Supplier = observer(() => { - const [isLoading, setIsLoading] = useState(false); - const store = useStore(); + const [isLoading, setIsLoading] = useState(false); + const store = useStore(); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - //await store.supplier.getDataCategories(); - await store.supplier.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + //await store.supplier.getDataCategories(); + await store.supplier.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; - init(); - }, []); + init(); + }, []); - // const handleChangeTabPane = async (key) => { - // store.product.filterCategory = key; - // console.log(key); - // }; + // const handleChangeTabPane = async (key) => { + // store.product.filterCategory = key; + // console.log(key); + // }; - const routeData = [ - { - route: LINKS.HOME, - name: "Home", - }, - { - route: LINKS.SUPPLIER, - name: Supplier, - }, - ]; - - return ( -
- - - -
- - - - console.log(value)} - /> - - - - - - - - - )) - - - - ); + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.SUPPLIER, + name: Supplier, + }, + ]; + + return ( +
+ + + +
+ + + + console.log(value)} + /> + + + + + + + + + + + )) + + + + ); }); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 848a9fc..62bb56b 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -64,7 +64,7 @@ export const Membership = observer(() => { key: "status", render: (text, record) => ( {record?.isActive === true ? " ACTIVE" : "INACTIVE"} diff --git a/src/pages/Product/Category.js b/src/pages/Product/Category.js new file mode 100644 index 0000000..3c875e1 --- /dev/null +++ b/src/pages/Product/Category.js @@ -0,0 +1,83 @@ +import React, { useEffect, useState } from "react"; +import { Button, Card, Col, Input, Row, Tabs } from "antd"; +import { FilterOutlined, PlusSquareOutlined } from "@ant-design/icons"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { LINKS } from "../../routes/app"; +import { CategoryComponent } from "../../component/CategoryComponent"; + +const { TabPane } = Tabs; +const { Search } = Input; + +export const Category = observer(() => { + const [isLoading, setIsLoading] = useState(false); + const store = useStore(); + + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + //await store.product.getDataCategories(); + await store.category.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + + init(); + }, []); + + const handleChangeTabPane = async (key) => { + store.product.filterCategory = key; + console.log(key); + }; + + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.CATEGORY, + name: Category, + }, + ]; + + return ( +
+ + + +
+ + + + + + + + + + + + + ))} + + + + ); +}); diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 8beee01..cf7f2d8 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,90 +1,85 @@ -import React, {useEffect, useState} from "react"; -import {Button, Card, Col, Input, Row, Tabs} from "antd"; -import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {ProductComponent} from "../../component/ProductComponent"; -import {LINKS} from "../../routes/app"; +import React, { useEffect, useState } from "react"; +import { Button, Card, Col, Input, Row, Tabs } from "antd"; +import { FilterOutlined, PlusSquareOutlined } from "@ant-design/icons"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { ProductComponent } from "../../component/ProductComponent"; +import { LINKS } from "../../routes/app"; -const {TabPane} = Tabs; -const {Search} = Input; +const { TabPane } = Tabs; +const { Search } = Input; export const Product = observer(() => { - const [isLoading, setIsLoading] = useState(false); - const store = useStore(); + const [isLoading, setIsLoading] = useState(false); + const store = useStore(); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - await store.product.getDataCategories(); - await store.product.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); - }, []); - - const handleChangeTabPane = async (key) => { - store.product.filterCategory = key; - console.log(key); + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.product.getDataCategories(); + await store.product.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } }; - const routeData = [ - { - route: LINKS.HOME, - name: "Home", - }, - { - route: LINKS.PRODUCT, - name: Product, - }, - ]; + init(); + }, []); - return ( -
- - - -
- - - - - - - - - {store.product.dataCategories.map((item) => ( - - - - ))} - - - - ); + const handleChangeTabPane = async (key) => { + store.product.filterCategory = key; + console.log(key); + }; + + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.PRODUCT, + name: Product, + }, + ]; + + return ( +
+ + + +
+ + + + + + + + + + {store.product.dataCategories.map((item) => ( + + {/* */} + + + ))} + + + + ); }); diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/app.js b/src/routes/app.js index 5e2aa7d..47452a5 100644 --- a/src/routes/app.js +++ b/src/routes/app.js @@ -8,6 +8,7 @@ import {Profile} from "../pages/Profile/Profile"; import {Commission} from "../pages/Config/Commission"; import {Partner} from "../pages/Config/Partner"; import {Supplier} from "../pages/Config/Supplier"; +import {Category} from "../pages/Product/Category"; export const LINKS = { @@ -20,6 +21,7 @@ export const LINKS = { PARTNER: "/app/partner", COMMISSION: "/app/commission", SUPPLIER: "/app/supplier", + CATEGORY: "/app/category", }; @@ -31,6 +33,9 @@ export const AppRoute = () => { + + + diff --git a/src/store/category.js b/src/store/category.js new file mode 100644 index 0000000..895de03 --- /dev/null +++ b/src/store/category.js @@ -0,0 +1,69 @@ +import {makeAutoObservable} from "mobx"; +import {http} from "../utils/http"; + +export class Category { + page = 0; + pageSize = 10 + data = []; + total_data = 0; + filterCategory = null; + visibleModalCategory = false; + + pageCategories = 0; + pageSizeCategories = 10 + dataCategories = []; + total_dataCategories = 0; + + pageSubCategories = 0; + pageSizeSubCategories = 10 + dataSubCategories = []; + total_dataSubCategories = 0; + + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } + + async getData() { + const response = await http.get(`/product/categories?page=${this.page}&pageSize=${this.pageSize}`); + console.log(response) + this.data = response.body.data ?? [] + this.total_data = response.body.total_data ?? 0 + } + + async getDataSubCategories() { + const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + this.dataSubCategories = response.body.data ?? [] + this.total_dataSubCategories = response.body.count ?? 0 + } + + async getDataCategories() { + const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); + + this.dataCategories = response.body.data ?? [] + this.total_dataCategories = response.body.total_data ?? 0 + if (this.dataCategories.length > 0) { + this.filterCategory = this.dataCategories[0].id + } + } + + async create(data) { + const response = await http.post('/product/categories').send(data); + await this.getData(); + return response; + } + + async update(id, data) { + const response = await http.put(`/product/categories/${id}`).send(data); + await this.getData(); + return response; + } + + async delete(id) { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } +} + + diff --git a/src/store/index.js b/src/store/index.js index 26a144f..2f07d46 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -8,6 +8,8 @@ import { Supplier } from "./supplier"; import { Commission } from "./commission"; import { Transaction } from "./transaction"; import { TokenUtil } from "../utils/token"; +import { Category } from "./category"; + import { Role } from "./role"; export class Store { @@ -19,6 +21,7 @@ export class Store { partner = new Partner(this); supplier = new Supplier(this); commission = new Commission(this); + category = new Category(this); transaction = new Transaction(this); role = new Role(this); diff --git a/src/store/membership.js b/src/store/membership.js index eba13d4..e8830c8 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -14,10 +14,16 @@ export class Membership { @action async getData() { - const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); + const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}`); + console.log(response) this.data = response.body.data ?? [] this.total_data = response.body.total_data ?? 0 } + // async getData() { + // const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); + // this.data = response.body.data ?? [] + // this.total_data = response.body.total_data ?? 0 + // } @action async create(data) { diff --git a/src/store/subcategory.js b/src/store/subcategory.js new file mode 100644 index 0000000..e69de29 diff --git a/src/store/supplier.js b/src/store/supplier.js index 9da2048..e9e2957 100644 --- a/src/store/supplier.js +++ b/src/store/supplier.js @@ -8,6 +8,7 @@ export class Supplier { total_data = 0; filterCategory = null; visibleModalSupplier = false; + visibleModalTransaction=false; pageCategories = 0; pageSizeCategories = 10 @@ -36,9 +37,14 @@ export class Supplier { await this.getData(); return response; } + async createTransaction(data) { + const response = await http.post('/transaction/add-saldo-supplier').send(data); + await this.getData(); + return response; + } async update(id, data) { - const response = await http.put(`/product/${id}`).send(data); + const response = await http.put(`/users/supplier/${id}`).send(data); await this.getData(); return response; } From fa856997602831cf336d5767523c4f3b35a10deb Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 15 Dec 2021 15:33:12 +0700 Subject: [PATCH 035/324] fix: merge error menu list --- src/pages/App/MenuList.js | 43 ++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index e3fb037..b64a400 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -4,15 +4,14 @@ import {Link} from "react-router-dom"; import { AppstoreOutlined, DatabaseOutlined, + FileAddOutlined, FileProtectOutlined, + FileSyncOutlined, HomeOutlined, MenuUnfoldOutlined, MoneyCollectOutlined, - ProjectOutlined, - FileProtectOutlined, - FileAddOutlined, - FileSyncOutlined, ProfileOutlined, + ProjectOutlined, UserOutlined, } from "@ant-design/icons"; import {observer} from "mobx-react-lite"; @@ -113,12 +112,14 @@ export const MenuList = observer((props) => { )} - {store.authentication.userData.role === ("Retail" || "Admin") && ( - - - - Transaction - + {store.authentication.userData.role === ("Retail" || "Admin") && ( + + + + Transaction + + + )} {store.authentication.userData.role !== "Retail" && ( @@ -144,16 +145,16 @@ export const MenuList = observer((props) => { - Profile - - - {/**/} - {/* */} - {/* */} - {/* About*/} - {/* */} - {/**/} - - + Profile + + + {/**/} + {/* */} + {/* */} + {/* About*/} + {/* */} + {/**/} + + ); }); From 78f20e76d833fdec89350113a0ffe3b800328ca6 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Wed, 15 Dec 2021 15:35:26 +0700 Subject: [PATCH 036/324] menu list --- src/pages/App/MenuList.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index e3fb037..102fb6a 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -9,7 +9,6 @@ import { MenuUnfoldOutlined, MoneyCollectOutlined, ProjectOutlined, - FileProtectOutlined, FileAddOutlined, FileSyncOutlined, ProfileOutlined, @@ -119,14 +118,15 @@ export const MenuList = observer((props) => { Transaction - {store.authentication.userData.role !== "Retail" && ( + )} + {store.authentication.userData.role !== "Retail" && ( Product - )} + )} @@ -154,6 +154,6 @@ export const MenuList = observer((props) => { {/* */} {/**/} - + ); }); From c8278c2cea337a04ecd85def2d42a4e22753900a Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Wed, 15 Dec 2021 15:35:57 +0700 Subject: [PATCH 037/324] feat: update supplier status --- src/component/SupplierComponent.js | 8 +++++++- src/pages/Payback/Payback.js | 4 ++++ src/pages/Product/Product.js | 1 + src/store/product.js | 8 +++++++- src/store/supplier.js | 6 ++++++ 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index f12cc45..95e527c 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -51,6 +51,11 @@ export const SupplierComponent = observer((props) => { setIdData(data.id); }; + const changeStatus = (id, isActive) => { + const status = isActive ? "inactive" : "active" + store.supplier.changeStatus(id, status) + } + const columns = [ { title: "Name", @@ -69,7 +74,8 @@ export const SupplierComponent = observer((props) => { render: (text, record) => ( changeStatus(record?.id, record?.status)} > {record?.status === true ? " ACTIVE" : "INACTIVE"} diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index e319918..adb7056 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -32,24 +32,28 @@ export const Payback = observer(() => { const dummyData = [ { + key: '1', id: 1, name: "John Doe", picture: "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", amount: "Rp. 1.000.000", }, { + key: '2', id: 1, name: "John Doe", picture: "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", amount: "Rp. 1.000.000", }, { + key: '3', id: 1, name: "John Doe", picture: "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", amount: "Rp. 1.000.000", }, { + key: '4',Z id: 1, name: "John Doe", picture: "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 8beee01..fae9465 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -32,6 +32,7 @@ export const Product = observer(() => { const handleChangeTabPane = async (key) => { store.product.filterCategory = key; console.log(key); + await store.product.getData() }; const routeData = [ diff --git a/src/store/product.js b/src/store/product.js index c8f6e38..be0b059 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -27,8 +27,14 @@ export class Product { async getData() { const response = await http.get(`/product/by-categories?categories=${this.filterCategory}&page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data ?? [] + this.data = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + this.total_data = response.body.total_data ?? 0 + + console.log(response.body.data, this.filterCategory); } async getDataSubCategories() { diff --git a/src/store/supplier.js b/src/store/supplier.js index 9da2048..ecebdba 100644 --- a/src/store/supplier.js +++ b/src/store/supplier.js @@ -48,6 +48,12 @@ export class Supplier { await this.getData(); return response; } + + async changeStatus(id, status) { + const response = await http.get(`/users/supplier/${id}/${status}`); + await this.getData(); + return response; + } } From 1be4d4531dee85380f7f9f236a25d767c33ff004 Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Wed, 15 Dec 2021 15:54:03 +0700 Subject: [PATCH 038/324] fix: key on menu list & product table --- src/pages/App/MenuList.js | 8 ++++---- src/pages/Product/Product.js | 4 ++-- src/store/product.js | 2 -- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index b64a400..df944ea 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -88,7 +88,7 @@ export const MenuList = observer((props) => { )} {store.authentication.userData.role !== "Retail" && ( } title="Product" > @@ -98,13 +98,13 @@ export const MenuList = observer((props) => { Product - + Category - + Sub Category @@ -121,7 +121,7 @@ export const MenuList = observer((props) => { )} {store.authentication.userData.role !== "Retail" && ( - + Product diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index d756d5d..2f5496a 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -31,7 +31,7 @@ export const Product = observer(() => { const handleChangeTabPane = async (key) => { store.product.filterCategory = key; - console.log(key); + // console.log(key); await store.product.getData(); }; @@ -73,7 +73,7 @@ export const Product = observer(() => { - {store.product.dataCategories.map((item) => ( + {store.product.dataCategories.map((item, idx) => ( {/* */} diff --git a/src/store/product.js b/src/store/product.js index be0b059..81df70c 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -33,8 +33,6 @@ export class Product { }) ?? [] this.total_data = response.body.total_data ?? 0 - - console.log(response.body.data, this.filterCategory); } async getDataSubCategories() { From d0b2aec893d13083c6cbb013d290512e5df8b460 Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Wed, 15 Dec 2021 18:14:02 +0700 Subject: [PATCH 039/324] feat: change status partner & membership --- src/component/PartnerComponent.js | 25 +++- src/component/SupplierComponent.js | 52 ++++--- src/pages/Membership/Membership.js | 97 ++++++++---- src/pages/Membership/MembershipModal.js | 186 ++++++++++++------------ src/store/membership.js | 17 ++- src/store/partner.js | 13 +- src/store/product.js | 11 +- 7 files changed, 245 insertions(+), 156 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 87636a0..d08a8e5 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -40,6 +40,21 @@ export const PartnerComponent = observer((props) => { init(); }, []); + const changeStatus = async (id, isActive) => { + const status = isActive ? "inactive" : "active"; + const status2 = isActive ? "Inactivating" : "Activating"; + try { + const response = await store.partner.changeStatus(id, status); + + response?.body?.statusCode === 201 + ? message.success(`Success ${status2} Partner`) + : message.error(`Failed ${status2} Partner`); + } catch (err) { + console.log("error", err); + message.error(`Failed ${status2} Partner`); + } + }; + const handleEditButton = (data) => { console.log(data, "isi data"); form.setFieldsValue({ @@ -72,9 +87,13 @@ export const PartnerComponent = observer((props) => { dataIndex: "status", key: "status", render: (text, record) => ( - + changeStatus(record?.id, record?.status)} + > + {record?.status === true ? " ACTIVE" : "INACTIVE"} + ), }, { diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index e23240e..d637d84 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -45,16 +45,26 @@ export const SupplierComponent = observer((props) => { form.setFieldsValue({ name: data.name, code: data.code, - status:data.status + status: data.status, }); store.supplier.visibleModalSupplier = true; setIdData(data.id); }; - const changeStatus = (id, isActive) => { - const status = isActive ? "inactive" : "active" - store.supplier.changeStatus(id, status) - } + const changeStatus = async (id, isActive) => { + const status = isActive ? "inactive" : "active"; + const status2 = isActive ? "Inactivating" : "Activating"; + try { + const response = await store.supplier.changeStatus(id, status); + + response?.body?.statusCode === 201 + ? message.success(`Success ${status2} Supplier`) + : message.error(`Failed ${status2} Supplier`); + } catch (err) { + console.log("error", err); + message.error(`Failed ${status2} Supplier`); + } + }; const columns = [ { @@ -74,7 +84,7 @@ export const SupplierComponent = observer((props) => { render: (text, record) => ( changeStatus(record?.id, record?.status)} > {record?.status === true ? " ACTIVE" : "INACTIVE"} @@ -125,7 +135,7 @@ export const SupplierComponent = observer((props) => { setIdData(""); store.supplier.visibleModalSupplier = false; }; - const handleCancelTransaction= () => { + const handleCancelTransaction = () => { store.supplier.visibleModalTransaction = false; }; @@ -162,21 +172,19 @@ export const SupplierComponent = observer((props) => { const handleSubmitTransaction = async (data) => { console.log(data, "isi data2"); - setConfirmLoading(true); - try { - await store.supplier.createTransaction(data); - message.success("Success Top Up"); - //await store.supplier.getData() - } catch (e) { - console.log(e, "apa errornya"); - message.error("Failed Top Up"); - } - setConfirmLoading(false); - store.supplier.visibleModalTransaction = false; - form.resetFields(); - }; - - + setConfirmLoading(true); + try { + await store.supplier.createTransaction(data); + message.success("Success Top Up"); + //await store.supplier.getData() + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Top Up"); + } + setConfirmLoading(false); + store.supplier.visibleModalTransaction = false; + form.resetFields(); + }; return (
diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 44b1186..0e621a2 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,13 +1,30 @@ -import React, {useEffect, useState} from "react"; -import {Button, Card, Col, Divider, Input, List, message, Modal, Row, Space, Table, Tag,} from "antd"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined, FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; -import {MembershipModal} from "./MembershipModal"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {LINKS} from "../../routes/app"; +import React, { useEffect, useState } from "react"; +import { + Button, + Card, + Col, + Divider, + Input, + List, + message, + Modal, + Row, + Space, + Table, + Tag, +} from "antd"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { + ExclamationCircleOutlined, + FilterOutlined, + PlusSquareOutlined, +} from "@ant-design/icons"; +import { MembershipModal } from "./MembershipModal"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { LINKS } from "../../routes/app"; -const {Search} = Input; +const { Search } = Input; export const Membership = observer(() => { const store = useStore(); @@ -31,6 +48,21 @@ export const Membership = observer(() => { init(); }, []); + const changeStatus = async (id, isActive) => { + const status = isActive ? "inactive" : "active"; + const status2 = isActive ? "Inactivating" : "Activating"; + try { + const response = await store.membership.changeStatus(id, status); + + response?.body?.statusCode === 201 + ? message.success(`Success ${status2} Membership`) + : message.error(`Failed ${status2} Membership`); + } catch (err) { + console.log("error", err); + message.error(`Failed ${status2} Membership`); + } + }; + const columns = [ { title: "Name", @@ -48,10 +80,11 @@ export const Membership = observer(() => { key: "status", render: (text, record) => ( changeStatus(record?.id, record?.status)} > - {record?.isActive === true ? " ACTIVE" : "INACTIVE"} + {record?.status === true ? " ACTIVE" : "INACTIVE"} ), }, @@ -188,26 +221,26 @@ export const Membership = observer(() => { {store.ui.mediaQuery.isDesktop && (
{ - let pageNumber = page.current; - store.membership.pageSize = page.pageSize; - store.membership.page = pageNumber - 1; - // store.membership.isLoading = true; - await store.membership.getData(); - // store.membership.isLoading = false; - }} + key="1" + hasEmpty + columns={columns} + dataSource={store.membership.data} + bordered + pagination={{ + pageSize: store.membership.pageSize, + total: store.membership.total_data, + current: store.membership.page + 1, + showSizeChanger: true, + simple: false, + }} + onChange={async (page) => { + let pageNumber = page.current; + store.membership.pageSize = page.pageSize; + store.membership.page = pageNumber - 1; + // store.membership.isLoading = true; + await store.membership.getData(); + // store.membership.isLoading = false; + }} /> )} diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index 4aca734..c3c9796 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -1,96 +1,100 @@ -import React from 'react'; -import {Form, Input, Modal, Select,} from 'antd'; -import {capitalize} from "lodash"; -import {useStore} from "../../utils/useStore"; +import React from "react"; +import { Form, Input, Modal, Select } from "antd"; +import { capitalize } from "lodash"; +import { useStore } from "../../utils/useStore"; export const MembershipModal = ({ - visible, - onCreate, - onCancel, - initialData, - }) => { - const [form] = Form.useForm(); - const {Option} = Select; - const dataStatus = ["true", "false"] - const store = useStore(); + visible, + onCreate, + onCancel, + initialData, +}) => { + const [form] = Form.useForm(); + const { Option } = Select; + const dataStatus = ["true", "false"]; + const store = useStore(); - - return ( - { - form.resetFields() - onCancel() - }} - onOk={() => { - form - .validateFields() - .then(values => { - onCreate(values); - form.resetFields() - }) - .catch(info => { - console.log('Validate Failed:', info); - }); - }} + return ( + { + form.resetFields(); + onCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + onCreate(values); + form.resetFields(); + }) + .catch((info) => { + console.log("Validate Failed:", info); + }); + }} + > +
+ - - - - - - - - - - - - - - - -
- ); + + + + + + + + + + + + +
+ ); }; diff --git a/src/store/membership.js b/src/store/membership.js index e8830c8..fcbea6b 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -12,11 +12,14 @@ export class Membership { makeAutoObservable(this); } - @action async getData() { const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}`); - console.log(response) - this.data = response.body.data ?? [] + + this.data = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + this.total_data = response.body.total_data ?? 0 } // async getData() { @@ -25,12 +28,10 @@ export class Membership { // this.total_data = response.body.total_data ?? 0 // } - @action async create(data) { return await http.post('/users').send(data) } - @action async update(id, data) { // console.log(data) // console.log(id) @@ -44,6 +45,12 @@ export class Membership { return await http.del('/users/' + id); } + + async changeStatus(id, status) { + const response = await http.get(`/users/${id}/${status}`); + await this.getData(); + return response; + } } diff --git a/src/store/partner.js b/src/store/partner.js index 6b136a1..0e94a36 100644 --- a/src/store/partner.js +++ b/src/store/partner.js @@ -26,8 +26,12 @@ export class Partner { async getData() { const response = await http.get(`/users/partner?page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data ?? [] - //console.log(response.body,"ini dari store") + + this.data = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + this.total_data = response.body.count ?? 0 } @@ -55,6 +59,11 @@ export class Partner { return response; } + async changeStatus(id, status) { + const response = await http.get(`/users/partner/${id}/${status}`); + await this.getData(); + return response; + } } diff --git a/src/store/product.js b/src/store/product.js index 81df70c..e04edd1 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -37,7 +37,10 @@ export class Product { async getDataSubCategories() { const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); - this.dataSubCategories = response.body.data ?? [] + this.dataSubCategories = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] this.total_dataSubCategories = response.body.count ?? 0 } @@ -46,9 +49,15 @@ export class Product { this.dataCategories = response.body.data ?? [] this.total_dataCategories = response.body.total_data ?? 0 + if (this.dataCategories.length > 0) { this.filterCategory = this.dataCategories[0].id } + + this.dataCategories = this.dataCategories.map((item, idx) => { + item.key = idx; + return item + }) ?? [] } async create(data) { From 4df9f7214ee34c399fb1e9560f77dcffc98808a1 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Wed, 15 Dec 2021 18:30:27 +0700 Subject: [PATCH 040/324] Menu Supplier --- src/component/Subcategory.js | 59 +++++------ src/component/SupplierComponent.js | 72 ++------------ src/pages/App/DesktopLayout.js | 152 ++++++++++++++++++----------- src/pages/App/MenuList.js | 151 ++++++++++++++-------------- src/pages/Config/Supplier.js | 90 ++++++++++++++++- src/pages/Product/Subcategory.js | 7 +- src/store/subcategory.js | 17 +--- 7 files changed, 287 insertions(+), 261 deletions(-) diff --git a/src/component/Subcategory.js b/src/component/Subcategory.js index 604280e..b961295 100644 --- a/src/component/Subcategory.js +++ b/src/component/Subcategory.js @@ -22,6 +22,7 @@ export const SubcategoryComponent = observer((props) => { setIsLoading(true); //store.product.pageCategories=StrToLower(props.category) await store.subcategory.getData(); + await store.category.getData(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -35,8 +36,9 @@ export const SubcategoryComponent = observer((props) => { console.log(data, "isi data") form.setFieldsValue({ name: data.name, + categoryId: data.categoryId, }); - store.category.visibleModalCategory = true; + store.subcategory.visibleModalSubcategory = true; setIdData(data.id); } @@ -46,32 +48,6 @@ export const SubcategoryComponent = observer((props) => { dataIndex: "name", key: "name", }, - // { - // title: "Gangguan", - // dataIndex: "status", - // key: "status", - // render: (text, record) => ( - // - // {capitalize(record?.status)} - // - // ), - // }, - // { - // title: "Tersedia", - // dataIndex: "tersedia", - // key: "tersedia", - // render: (text, record) => ( - // - // {record?.status === "ACTIVE" ? " Ya" : "Tidak"} - // - // ), - // }, { title: "Action", key: "action", @@ -120,7 +96,7 @@ export const SubcategoryComponent = observer((props) => { const handleCancel = () => { setIdData('') - store.category.visibleModalCategory = false; + store.subcategory.visibleModalSubcategory = false; } const handleSubmit = async (data) => { @@ -128,31 +104,31 @@ export const SubcategoryComponent = observer((props) => { if (idData !== '') { setConfirmLoading(true); try { - await store.category.update(idData, data) + await store.subcategory.update(idData, data) message.success("Success Update Data Category") } catch (e) { message.error("Failed Update Data Category") } setConfirmLoading(false); - store.category.visibleModalCategory = false; + store.subcategory.visibleModalSubcategory = false; setIdData(''); form.resetFields(); } else { setConfirmLoading(true); try { - await store.category.create(data) + await store.subcategory.create(data) message.success("Success Add New Category") } catch (e) { console.log(e, "apa errornya") message.error("Failed Add Category") } setConfirmLoading(false); - store.category.visibleModalCategory = false; + store.subcategory.visibleModalSubcategory = false; setIdData(''); form.resetFields(); } } - + //console.log() return (
{ /> { @@ -210,6 +186,19 @@ export const SubcategoryComponent = observer((props) => { > + + + diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index e23240e..05f0592 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -20,6 +20,7 @@ import { LINKS } from "../routes/app"; export const SupplierComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); + //const [formEdit] = Form.useForm(); const { Option } = Select; const history = useHistory(); const [idData, setIdData] = useState(""); @@ -45,16 +46,16 @@ export const SupplierComponent = observer((props) => { form.setFieldsValue({ name: data.name, code: data.code, - status:data.status + status: data.status, }); store.supplier.visibleModalSupplier = true; setIdData(data.id); }; const changeStatus = (id, isActive) => { - const status = isActive ? "inactive" : "active" - store.supplier.changeStatus(id, status) - } + const status = isActive ? "inactive" : "active"; + store.supplier.changeStatus(id, status); + }; const columns = [ { @@ -74,7 +75,7 @@ export const SupplierComponent = observer((props) => { render: (text, record) => ( changeStatus(record?.id, record?.status)} > {record?.status === true ? " ACTIVE" : "INACTIVE"} @@ -125,9 +126,6 @@ export const SupplierComponent = observer((props) => { setIdData(""); store.supplier.visibleModalSupplier = false; }; - const handleCancelTransaction= () => { - store.supplier.visibleModalTransaction = false; - }; const handleSubmit = async (data) => { console.log(data, "isi data2"); @@ -136,6 +134,7 @@ export const SupplierComponent = observer((props) => { try { await store.supplier.update(idData, data); message.success("Success Update Data Member"); + await store.supplier.getData(); } catch (e) { message.error("Failed Update Data Member"); } @@ -160,24 +159,6 @@ export const SupplierComponent = observer((props) => { } }; - const handleSubmitTransaction = async (data) => { - console.log(data, "isi data2"); - setConfirmLoading(true); - try { - await store.supplier.createTransaction(data); - message.success("Success Top Up"); - //await store.supplier.getData() - } catch (e) { - console.log(e, "apa errornya"); - message.error("Failed Top Up"); - } - setConfirmLoading(false); - store.supplier.visibleModalTransaction = false; - form.resetFields(); - }; - - - return (
{ - { - form.resetFields(); - handleCancelTransaction(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form"); - handleSubmitTransaction(values); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} - > -
- - - - - - - -
); }); diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index a0e1d46..de39103 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -1,32 +1,40 @@ -import React, {useState} from "react"; -import {Button, Drawer, Layout, Menu, Popover, Typography} from "antd"; -import {MenuList} from "./MenuList"; -import {Link, useHistory} from "react-router-dom"; -import {HomeOutlined, MenuOutlined, UserOutlined} from "@ant-design/icons"; -import {AppRoute, LINKS} from "../../routes/app"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {useMediaQuery} from "react-responsive"; +import React, { useState } from "react"; +import { Button, Drawer, Layout, Menu, Popover, Typography } from "antd"; +import { MenuList } from "./MenuList"; +import { Link, useHistory } from "react-router-dom"; +import { + HomeOutlined, + MenuOutlined, + UserOutlined, + ProfileOutlined, + DatabaseOutlined, + FileAddOutlined, + FileSyncOutlined, +} from "@ant-design/icons"; +import { AppRoute, LINKS } from "../../routes/app"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { useMediaQuery } from "react-responsive"; -const {Text, Paragraph} = Typography; -const {Header, Content, Sider} = Layout; -const {SubMenu} = Menu; +const { Text, Paragraph } = Typography; +const { Header, Content, Sider } = Layout; +const { SubMenu } = Menu; export const DesktopLayout = observer(() => { - let history = useHistory(); - const xl = useMediaQuery({minWidth: 1024}); - const store = useStore(); - const [clicked, setClicked] = useState(false); + let history = useHistory(); + const xl = useMediaQuery({ minWidth: 1024 }); + const store = useStore(); + const [clicked, setClicked] = useState(false); - return ( - { Commision - - - - Supplier - - + + + + Supplier + + )} - {store.authentication.userData.role !== "Retail" && ( - - - - Product - - - )} - - - - Payback + {store.authentication.userData.role !== "Retail" && ( + } + title="Product" + > + + + + Product - - {store.authentication.userData.role === "Retail" && ( - - - - Transaction - - - )} - - - - Profile + + + + + Category + + + + + Sub Category + + + + )} + {store.authentication.userData.role !== "Retail" && ( + + + + Product + - + )} + + + + Payback + + + {store.authentication.userData.role === "Retail" && ( + + + + Transaction + + + )} + + + + Profile + + + diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index e4d14d2..bf6c867 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -1,6 +1,6 @@ -import React, {useEffect, useState} from "react"; -import {Menu} from "antd"; -import {Link} from "react-router-dom"; +import React, { useEffect, useState } from "react"; +import { Menu } from "antd"; +import { Link } from "react-router-dom"; import { AppstoreOutlined, DatabaseOutlined, @@ -14,26 +14,25 @@ import { ProjectOutlined, UserOutlined, } from "@ant-design/icons"; -import {observer} from "mobx-react-lite"; -import {useStore} from "../../utils/useStore"; -import {LINKS} from "../../routes/app"; +import { observer } from "mobx-react-lite"; +import { useStore } from "../../utils/useStore"; +import { LINKS } from "../../routes/app"; -const {SubMenu} = Menu; +const { SubMenu } = Menu; export const MenuList = observer((props) => { const store = useStore(); - useEffect(() => { - }, []); + useEffect(() => {}, []); const [setKeys, setSetKeys] = useState(["dashboard"]); return ( - { )} {store.authentication.userData.role !== "Retail" && ( - } - title="Config" - > + } title="Config"> @@ -87,74 +82,70 @@ export const MenuList = observer((props) => { )} {store.authentication.userData.role !== "Retail" && ( - } - title="Product" - > - + } title="Product"> + + + + Product + + + + + + Category + + + + + + Sub Category + + + + )} + {store.authentication.userData.role === ("Retail" || "Admin") && ( + + + + Transaction + + + )} + {store.authentication.userData.role !== "Retail" && ( + Product - - - - Category - - - - - - Sub Category - - - )} - {store.authentication.userData.role === ("Retail" || "Admin") && ( - - - - Transaction - - - )} - {store.authentication.userData.role !== "Retail" && ( - - - - Product - - - )} - - - - Payback + + + + Payback + + + {store.authentication.userData.role === ("Retail" || "Admin") && ( + + + + Transaction - {store.authentication.userData.role === ("Retail" || "Admin") && ( - - - - Transaction - - - )} - - + )} + + - Profile - - - {/**/} - {/* */} - {/* */} - {/* About*/} - {/* */} - {/**/} - - + Profile + + + {/**/} + {/* */} + {/* */} + {/* About*/} + {/* */} + {/**/} + + ); }); diff --git a/src/pages/Config/Supplier.js b/src/pages/Config/Supplier.js index 19de002..8248e57 100644 --- a/src/pages/Config/Supplier.js +++ b/src/pages/Config/Supplier.js @@ -1,6 +1,21 @@ import React, { useEffect, useState } from "react"; -import { Button, Card, Col, Input, Row, Tabs } from "antd"; -import { FilterOutlined, PlusSquareOutlined,DownloadOutlined } from "@ant-design/icons"; +import { + Button, + Card, + Col, + Input, + Row, + Tabs, + Form, + message, + Modal, + Select, +} from "antd"; +import { + FilterOutlined, + PlusSquareOutlined, + DownloadOutlined, +} from "@ant-design/icons"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; @@ -9,9 +24,12 @@ import { LINKS } from "../../routes/app"; const { TabPane } = Tabs; const { Search } = Input; +const { Option } = Select; export const Supplier = observer(() => { const [isLoading, setIsLoading] = useState(false); + const [confirmLoading, setConfirmLoading] = useState(false); + const [form] = Form.useForm(); const store = useStore(); useEffect(() => { @@ -33,7 +51,24 @@ export const Supplier = observer(() => { // store.product.filterCategory = key; // console.log(key); // }; - + const handleCancelTransaction = () => { + store.supplier.visibleModalTransaction = false; + }; + const handleSubmitTransaction = async (data) => { + console.log(data, "isi data2"); + setConfirmLoading(true); + try { + await store.supplier.createTransaction(data); + message.success("Success Top Up"); + //await store.supplier.getData() + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Top Up"); + } + setConfirmLoading(false); + store.supplier.visibleModalTransaction = false; + form.resetFields(); + }; const routeData = [ { route: LINKS.HOME, @@ -44,7 +79,7 @@ export const Supplier = observer(() => { name: Supplier, }, ]; - + return (
@@ -78,7 +113,7 @@ export const Supplier = observer(() => { { )) + { + form.resetFields(); + handleCancelTransaction(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmitTransaction(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + + + + +
); }); diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js index 68ee928..d00ef06 100644 --- a/src/pages/Product/Subcategory.js +++ b/src/pages/Product/Subcategory.js @@ -18,8 +18,8 @@ export const Subcategory = observer(() => { const init = async () => { try { setIsLoading(true); - //await store.product.getDataCategories(); - await store.subcategory.getDataSubCategories(); + //await store.category.getData(); + await store.subcategory.getData(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -65,12 +65,11 @@ export const Subcategory = observer(() => { marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0, }} /> - - diff --git a/src/store/subcategory.js b/src/store/subcategory.js index e18d6a0..659e79e 100644 --- a/src/store/subcategory.js +++ b/src/store/subcategory.js @@ -7,7 +7,7 @@ export class Subcategory { data = []; total_data = 0; filterCategory = null; - visibleModalCategory = false; + visibleModalSubcategory = false; pageCategories = 0; pageSizeCategories = 10 @@ -38,24 +38,15 @@ export class Subcategory { this.total_dataSubCategories = response.body.count ?? 0 } - async getDataCategories() { - const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); - - this.dataCategories = response.body.data ?? [] - this.total_dataCategories = response.body.total_data ?? 0 - if (this.dataCategories.length > 0) { - this.filterCategory = this.dataCategories[0].id - } - } - async create(data) { - const response = await http.post('/product/categories').send(data); + const response = await http.post('/product/sub-categories').send(data); + console.log(response) await this.getData(); return response; } async update(id, data) { - const response = await http.put(`/product/categories/${id}`).send(data); + const response = await http.put(`/product/sub-categories/${id}`).send(data); await this.getData(); return response; } From 28c42b345375a1e492237122dbc456ca294eac58 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 15 Dec 2021 20:36:48 +0700 Subject: [PATCH 041/324] feat: stiching api profile and history transaction.js --- src/pages/Profile/Profile.js | 91 ++++++++++++++++++++++++++++-------- src/store/authentication.js | 11 +++++ src/store/transaction.js | 16 ++++++- 3 files changed, 97 insertions(+), 21 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 25e83d2..5f39827 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -1,12 +1,13 @@ -import React from "react"; -import {Card, Col, Row, Typography} from "antd"; +import React, {useEffect} from "react"; +import {Card, Col, Row, Table, Typography} from "antd"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {LINKS} from "../../routes/app"; import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; const {Title, Text} = Typography; -export const Profile = () => { +export const Profile = observer(() => { const store = useStore(); const routeData = [ { @@ -19,6 +20,35 @@ export const Profile = () => { }, ]; + useEffect(() => { + (async () => { + await Promise.allSettled([ + store.authentication.getProfile(), + store.transaction.getDataHistoryTransaction(), + ]); + })() + }, []); + + const columns = [ + { + title: 'Markup Price', + dataIndex: 'mark_up_price', + key: 'mark_up_price', + width: '20%', + }, + { + title: 'Name', + dataIndex: 'name', + key: 'name', + width: '50%', + }, + { + title: 'Transaction Date', + dataIndex: 'created_at', + key: 'created_at', + }, + ] + return (
@@ -27,26 +57,49 @@ export const Profile = () => {
Profile - -
- Name - - - {store.authentication.userData.username} - - - Role - - - {store.authentication.userData.role} - - + {/**/} + {/* */} + {/* Name*/} + {/* */} + {/* */} + {/* {store.authentication.profileData.username}*/} + {/* */} + {/* */} + {/* Role*/} + {/* */} + {/* */} + {/* {store.authentication.profileData.roles.name}*/} + {/* */} + {/* */} + {/* Superior*/} + {/* */} + {/* */} + {/* {store.authentication.profileData.superior.username}*/} + {/* */} + {/* */} + {/* Wallet*/} + {/* */} + {/* */} + {/* {store.authentication.profileData.wallet}*/} + {/* */} + {/**/} + + + + + +
+ History User Transaction +
-
) -}; +}); diff --git a/src/store/authentication.js b/src/store/authentication.js index 4b90963..526f512 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -6,6 +6,7 @@ export class Authentication { isLoggedIn = false; isLoginLoading = false; ctx; + profileData = {}; constructor(ctx) { this.ctx = ctx; @@ -49,6 +50,16 @@ export class Authentication { } } + async getProfile() { + try { + const response = await http.get('/auth/profile'); + this.profileData = response.body.data; + } catch (e) { + console.error(e); + throw e; + } + } + logout() { TokenUtil.clearAccessToken(); TokenUtil.persistToken(); diff --git a/src/store/transaction.js b/src/store/transaction.js index 8150f40..50cd379 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -1,5 +1,5 @@ -import { makeAutoObservable } from "mobx"; -import { http } from "../utils/http"; +import {makeAutoObservable} from "mobx"; +import {http} from "../utils/http"; export class Transaction { page = 0; @@ -19,6 +19,11 @@ export class Transaction { dataSubCategories = []; total_dataSubCategories = 0; + pageHistoryTransaction = 0; + pageSizeHistoryTransaction = 10 + dataHistoryTransaction = []; + total_dataHistoryTransaction = 0; + constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); @@ -47,6 +52,13 @@ export class Transaction { } } + async getDataHistoryTransaction() { + const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}&pageSize=${this.pageSizeHistoryTransaction}`); + + this.dataHistoryTransaction = response.body.data ?? [] + this.total_dataHistoryTransaction = response.body.total_data ?? 0 + } + async create(data) { const response = await http.post('/product').send(data); await this.getData(); From 2cc6dc53c0a0d81d6de26653b42f913c6685393d Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 16 Dec 2021 11:12:32 +0700 Subject: [PATCH 042/324] fix: stiching API profile and last history --- src/pages/Profile/Profile.js | 52 ++++++++++++++++++------------------ src/store/authentication.js | 2 +- src/store/transaction.js | 4 +-- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 5f39827..5d851ec 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -57,32 +57,32 @@ export const Profile = observer(() => {
Profile - {/**/} - {/*
*/} - {/* Name*/} - {/* */} - {/* */} - {/* {store.authentication.profileData.username}*/} - {/* */} - {/* */} - {/* Role*/} - {/* */} - {/* */} - {/* {store.authentication.profileData.roles.name}*/} - {/* */} - {/* */} - {/* Superior*/} - {/* */} - {/* */} - {/* {store.authentication.profileData.superior.username}*/} - {/* */} - {/* */} - {/* Wallet*/} - {/* */} - {/* */} - {/* {store.authentication.profileData.wallet}*/} - {/* */} - {/**/} + + + Name + + + {store.authentication.profileData?.username} + + + Role + + + {store.authentication.profileData.roles?.name} + + + Superior + + + {store.authentication.profileData.superior?.username} + + + Wallet + + + {store.authentication.profileData.wallet} + + diff --git a/src/store/authentication.js b/src/store/authentication.js index 526f512..eb541b0 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -53,7 +53,7 @@ export class Authentication { async getProfile() { try { const response = await http.get('/auth/profile'); - this.profileData = response.body.data; + this.profileData = response.body; } catch (e) { console.error(e); throw e; diff --git a/src/store/transaction.js b/src/store/transaction.js index 50cd379..63b8c31 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -20,7 +20,7 @@ export class Transaction { total_dataSubCategories = 0; pageHistoryTransaction = 0; - pageSizeHistoryTransaction = 10 + // pageSizeHistoryTransaction = 10 dataHistoryTransaction = []; total_dataHistoryTransaction = 0; @@ -53,7 +53,7 @@ export class Transaction { } async getDataHistoryTransaction() { - const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}&pageSize=${this.pageSizeHistoryTransaction}`); + const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}`); this.dataHistoryTransaction = response.body.data ?? [] this.total_dataHistoryTransaction = response.body.total_data ?? 0 From 19ef0eee64df3745093ad87592ee9c44b6889253 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 16 Dec 2021 12:32:55 +0700 Subject: [PATCH 043/324] feat: change layout profile page --- src/pages/Profile/Profile.js | 58 +++++++++++++++++------------------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 5d851ec..6eb391f 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -53,36 +53,34 @@ export const Profile = observer(() => {
+ Profile -
-
- Profile - -
- Name - - - {store.authentication.profileData?.username} - - - Role - - - {store.authentication.profileData.roles?.name} - - - Superior - - - {store.authentication.profileData.superior?.username} - - - Wallet - - - {store.authentication.profileData.wallet} - - + + + + Name + + + {store.authentication.profileData?.username} + + + Role + + + {store.authentication.profileData.roles?.name} + + + Superior + + + {store.authentication.profileData.superior?.username} + + + + +
+ Saldo + {store.authentication.profileData?.wallet}
@@ -92,7 +90,7 @@ export const Profile = observer(() => { History User Transaction
From e206c0e221cf402642b227e01b1b490672656a15 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 16 Dec 2021 12:36:42 +0700 Subject: [PATCH 044/324] feat: add filter button last history transaction --- src/pages/Profile/Profile.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 6eb391f..3855740 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -1,9 +1,10 @@ import React, {useEffect} from "react"; -import {Card, Col, Row, Table, Typography} from "antd"; +import {Button, Card, Col, Row, Table, Typography} from "antd"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {LINKS} from "../../routes/app"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; +import {FilterOutlined} from "@ant-design/icons"; const {Title, Text} = Typography; @@ -88,9 +89,16 @@ export const Profile = observer(() => {
History User Transaction + +
From 6ef3964fdb8b6ab89d5ef70f366ab100fcf88ebe Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Thu, 16 Dec 2021 12:50:25 +0700 Subject: [PATCH 045/324] feat: add membership activable toggle & change password --- src/pages/Membership/Membership.js | 50 ++++++++++---- src/pages/Membership/MembershipModal.js | 88 ++++++++++--------------- src/store/commission.js | 7 +- src/store/membership.js | 4 +- 4 files changed, 82 insertions(+), 67 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 0e621a2..9e74cfb 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -51,6 +51,9 @@ export const Membership = observer(() => { const changeStatus = async (id, isActive) => { const status = isActive ? "inactive" : "active"; const status2 = isActive ? "Inactivating" : "Activating"; + + console.log(status); + try { const response = await store.membership.changeStatus(id, status); @@ -80,11 +83,10 @@ export const Membership = observer(() => { key: "status", render: (text, record) => ( changeStatus(record?.id, record?.status)} + color={record?.isActive === true ? "processing" : "#E3E8EE"} + style={{ color: "#4F566B" }} > - {record?.status === true ? " ACTIVE" : "INACTIVE"} + {record?.isActive === true ? " ACTIVE" : "INACTIVE"} ), }, @@ -93,27 +95,45 @@ export const Membership = observer(() => { key: "action", render: (text, record) => ( + + {/* - {/* */} ), @@ -132,13 +152,19 @@ export const Membership = observer(() => { ]; const onSubmit = async (data) => { + data.superior = true; + if (initialData.id) { setInitialData({}); setConfirmLoading(true); try { console.log(data); await store.membership.update(initialData.id, data); - message.success("Success Update Data Member"); + message.success( + initialData.isChangePassword + ? "Success Change Member Password" + : "Success Update Data Member" + ); await store.membership.getData(); } catch (e) { message.error("Failed Update Data Member"); diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index c3c9796..f59929b 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -28,7 +28,10 @@ export const MembershipModal = ({ form .validateFields() .then((values) => { - onCreate(values); + let input = values; + input.username = initialData.username; + + onCreate(input); form.resetFields(); }) .catch((info) => { @@ -42,58 +45,39 @@ export const MembershipModal = ({ name="form_in_modal" initialValues={initialData} > - - - - - - - - - - - - + + + )} + {initialData.id && initialData.isChangePassword && ( + + + + )} + {initialData.id && !initialData.isChangePassword && ( + + + + )} ); diff --git a/src/store/commission.js b/src/store/commission.js index c53ca87..e87449a 100644 --- a/src/store/commission.js +++ b/src/store/commission.js @@ -26,8 +26,11 @@ export class Commission { async getData() { const response = await http.get(`/config/commission?page=${this.page}&pageSize=${this.pageSize}`); - console.log(response) - this.data = response.body.data ?? [] + this.data = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + this.total_data = response.body.total_data ?? 0 } async create(data) { diff --git a/src/store/membership.js b/src/store/membership.js index fcbea6b..2d4abde 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -14,7 +14,7 @@ export class Membership { async getData() { const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}`); - + this.data = response.body.data.map((item, idx) => { item.key = idx; return item @@ -47,6 +47,8 @@ export class Membership { } async changeStatus(id, status) { + console.log(`/users/${id}/${status}`); + const response = await http.get(`/users/${id}/${status}`); await this.getData(); return response; From 375d1225529b8e382d523b8cbb087d2bea513e0d Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Thu, 16 Dec 2021 14:01:53 +0700 Subject: [PATCH 046/324] add partner activable toggle & change password --- src/component/PartnerComponent.js | 159 +++++++++++++----------- src/pages/Config/Partner.js | 19 +-- src/pages/Membership/Membership.js | 6 +- src/pages/Membership/MembershipModal.js | 8 +- 4 files changed, 103 insertions(+), 89 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index d08a8e5..f80a61b 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -23,6 +23,7 @@ export const PartnerComponent = observer((props) => { const { Option } = Select; const history = useHistory(); const [idData, setIdData] = useState(""); + const [isChangePassword, setIsChangePassword] = useState(false); const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); @@ -62,6 +63,19 @@ export const PartnerComponent = observer((props) => { npwp: data.npwp, address: data.address, }); + setIsChangePassword(false); + store.partner.visibleModalPartner = true; + setIdData(data.id); + }; + + const changePassword = (data) => { + // form.setFieldsValue({ + // name: data.name, + // npwp: data.npwp, + // address: data.address, + + // }); + setIsChangePassword(true); store.partner.visibleModalPartner = true; setIdData(data.id); }; @@ -89,8 +103,7 @@ export const PartnerComponent = observer((props) => { render: (text, record) => ( changeStatus(record?.id, record?.status)} + style={{ color: "#4F566B", cursor: "pointer" }} > {record?.status === true ? " ACTIVE" : "INACTIVE"} @@ -101,25 +114,19 @@ export const PartnerComponent = observer((props) => { key: "action", render: (text, record) => ( + - + {/* */} + ), }, ]; -// const handleEditStatus = async (id)=>{ -// try { -// console.log(id); -// await store.partner.delete(id); -// message.success("Data Berhasil Dihapus"); -// history.push(LINKS.PARTNER); -// } catch (err) { -// console.log("error", err); -// message.error("Gagal menghapus"); -// } -// } - const deleteData = async (id) => { try { console.log(id); @@ -132,7 +139,6 @@ export const PartnerComponent = observer((props) => { } }; - const handleDelete = (id) => { Modal.confirm({ title: "Are you sure delete this record?", @@ -160,10 +166,10 @@ export const PartnerComponent = observer((props) => { setConfirmLoading(true); try { await store.partner.update(idData, data); - message.success("Success Update Data Partner"); + message.success(isChangePassword ? "Failed Change Partner Password" : "Success Update Data Partner"); //await store.partner.getData() } catch (e) { - message.error("Failed Update Data Partner"); + message.error(isChangePassword ? "Failed Change Partner Password" : "Failed Update Data Partner"); } setConfirmLoading(false); store.partner.visibleModalPartner = false; @@ -211,7 +217,13 @@ export const PartnerComponent = observer((props) => { { @@ -232,60 +244,65 @@ export const PartnerComponent = observer((props) => { }} >
- - - - - - - - - - - - - - - + : { required: true, message: "Please input password name!" }, + ]} + > + + + )} + {((idData && isChangePassword) || !idData) && ( + + + + )} + + {!isChangePassword && ( + <> + + + + + + + + )}
diff --git a/src/pages/Config/Partner.js b/src/pages/Config/Partner.js index f6ca7c3..0fb2f57 100644 --- a/src/pages/Config/Partner.js +++ b/src/pages/Config/Partner.js @@ -51,10 +51,10 @@ export const Partner = observer(() => {
- + */} { - - - - - - )) - + ); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 9e74cfb..d27c4f0 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -167,7 +167,11 @@ export const Membership = observer(() => { ); await store.membership.getData(); } catch (e) { - message.error("Failed Update Data Member"); + message.error( + initialData.isChangePassword + ? "Failed Update Member Password" + : "Failed Update Data Member" + ); } setConfirmLoading(false); setVisibleModal(false); diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index f59929b..6eb78b4 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -17,7 +17,13 @@ export const MembershipModal = ({ return ( { From a093174c7d0126d526a5825d358b6025bbfaf96a Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Thu, 16 Dec 2021 14:15:30 +0700 Subject: [PATCH 047/324] fix: create new membership --- src/pages/App/MenuList.js | 8 -------- src/pages/Membership/MembershipModal.js | 6 +++--- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index bf6c867..afc5508 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -111,14 +111,6 @@ export const MenuList = observer((props) => { )} - {store.authentication.userData.role !== "Retail" && ( - - - - Product - - - )} diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index 6eb78b4..bfc0a59 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -51,7 +51,7 @@ export const MembershipModal = ({ name="form_in_modal" initialValues={initialData} > - {initialData.id && !initialData.isChangePassword && ( + {((initialData.id && !initialData.isChangePassword) || !initialData.id) && ( )} - {initialData.id && initialData.isChangePassword && ( + {((initialData.id && initialData.isChangePassword) || !initialData.id) && ( )} - {initialData.id && !initialData.isChangePassword && ( + {((initialData.id && !initialData.isChangePassword) || !initialData.id) && ( Date: Thu, 16 Dec 2021 15:14:13 +0700 Subject: [PATCH 048/324] feat: add missing implement user --- src/store/user.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/store/user.js b/src/store/user.js index 741da5b..9e08229 100644 --- a/src/store/user.js +++ b/src/store/user.js @@ -1,9 +1,14 @@ -import {action, observable} from "mobx"; +import {action, makeAutoObservable, observable} from "mobx"; import {http} from "../utils/http"; export class User { @observable data = []; + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } + @action async getData() { this.data = (await http.get('/user')).body.data; From 14407dd5e39ee5865d7d460ebbdc6f2c38d19d6c Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 16 Dec 2021 16:01:45 +0700 Subject: [PATCH 049/324] feat: add additional key profile --- src/pages/Profile/Profile.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 3855740..f4f366a 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -61,6 +61,18 @@ export const Profile = observer(() => { Name + + {store.authentication.profileData?.userDetail?.name} + + + Phone Number + + + {store.authentication.profileData?.userDetail?.phone_number} + + + Username + {store.authentication.profileData?.username} From a29cfd5c9281c231dc8667a7ac001df1325a9568 Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Thu, 16 Dec 2021 16:07:32 +0700 Subject: [PATCH 050/324] feat: show membership by superior --- src/pages/App/DesktopLayout.js | 2 +- src/pages/Membership/Membership.js | 25 ++++++++++++++++++------- src/pages/Product/Product.js | 28 +++++++++++++++++++++------- src/store/membership.js | 17 ++++++++++++----- 4 files changed, 52 insertions(+), 20 deletions(-) diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index de39103..1b47af9 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -83,7 +83,7 @@ export const DesktopLayout = observer(() => { color: "#413d3e", }} > - Admin + {store.authentication.userData.role} {}} /> diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index d27c4f0..17e781e 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -37,8 +37,8 @@ export const Membership = observer(() => { const init = async () => { try { setIsLoading(true); - await store.membership.getData(); - await store.role.getData(); + await getData(); + store.role.getData(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -48,6 +48,12 @@ export const Membership = observer(() => { init(); }, []); + const getData = () => { + (store.authentication.userData.role === "Admin") + ? store.membership.getData() + : store.membership.getDataBySuperior(); + } + const changeStatus = async (id, isActive) => { const status = isActive ? "inactive" : "active"; const status2 = isActive ? "Inactivating" : "Activating"; @@ -77,6 +83,11 @@ export const Membership = observer(() => { dataIndex: "username", key: "username", }, + { + title: "Role", + dataIndex: "roleName", + key: "role", + }, { title: "Status", dataIndex: "status", @@ -165,7 +176,7 @@ export const Membership = observer(() => { ? "Success Change Member Password" : "Success Update Data Member" ); - await store.membership.getData(); + await getData(); } catch (e) { message.error( initialData.isChangePassword @@ -181,7 +192,7 @@ export const Membership = observer(() => { try { await store.membership.create(data); message.success("Success Add New Member"); - await store.membership.getData(); + await getData(); } catch (e) { console.log(e, "apa errornya"); message.error("Failed Add Member"); @@ -203,7 +214,7 @@ export const Membership = observer(() => { //TODO: minta apinya ke ka ilham ya, jangan di uncomment kalo pake api reconcile, nanti beneran ke apus datanya await store.membership.delete(record); message.success("Success Delete Data"); - await store.membership.getData(); + await getData(); } catch (e) { message.error("Failed Delete Data"); } @@ -268,7 +279,7 @@ export const Membership = observer(() => { store.membership.pageSize = page.pageSize; store.membership.page = pageNumber - 1; // store.membership.isLoading = true; - await store.membership.getData(); + await getData(); // store.membership.isLoading = false; }} /> @@ -282,7 +293,7 @@ export const Membership = observer(() => { onChange: (page) => { store.membership.pageSize = page.pageSize; store.membership.page = page.current; - store.membership.getData(); + getData(); }, pageSize: store.membership.pageSize, total: store.membership.total_data, diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 2f5496a..0f80346 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,5 +1,5 @@ import React, { useEffect, useState } from "react"; -import { Button, Card, Col, Input, Row, Tabs } from "antd"; +import { Button, Card, Col, Input, Row, Select, Tabs } from "antd"; import { FilterOutlined, PlusSquareOutlined } from "@ant-design/icons"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { useStore } from "../../utils/useStore"; @@ -9,6 +9,7 @@ import { LINKS } from "../../routes/app"; const { TabPane } = Tabs; const { Search } = Input; +const { Option } = Select; export const Product = observer(() => { const [isLoading, setIsLoading] = useState(false); @@ -72,14 +73,27 @@ export const Product = observer(() => { - + + + + + + + {/* {store.product.dataCategories.map((item, idx) => ( - - {/* */} - - + */} + {/* */} + + {/* ))} - + */} ); diff --git a/src/store/membership.js b/src/store/membership.js index 2d4abde..e6398fe 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -17,16 +17,23 @@ export class Membership { this.data = response.body.data.map((item, idx) => { item.key = idx; + item.roleName = item.roles.name; + return item + }) ?? [] + + this.total_data = response.body.total_data ?? 0 + } + + async getDataBySuperior() { + const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data.map((item, idx) => { + item.key = idx; + item.roleName = item.roles.name; return item }) ?? [] this.total_data = response.body.total_data ?? 0 } - // async getData() { - // const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); - // this.data = response.body.data ?? [] - // this.total_data = response.body.total_data ?? 0 - // } async create(data) { return await http.post('/users').send(data) From ac7e5714e796e18c3cbfcdf735cb9095d315e925 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Thu, 16 Dec 2021 16:11:36 +0700 Subject: [PATCH 051/324] Pages Supplier --- src/component/CommissionComponent.js | 398 +++++++++++---------------- src/component/SupplierComponent.js | 64 ++--- src/component/TopupsaldoModal.js | 74 +++++ src/pages/Config/Commission.js | 147 +++++----- src/pages/Config/Supplier.js | 94 +------ src/pages/Membership/Membership.js | 82 +++++- src/store/commission.js | 4 +- 7 files changed, 422 insertions(+), 441 deletions(-) create mode 100644 src/component/TopupsaldoModal.js diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js index a569aaa..8bfd2e3 100644 --- a/src/component/CommissionComponent.js +++ b/src/component/CommissionComponent.js @@ -1,244 +1,178 @@ -import React, {useEffect, useState} from "react"; -import {Button, Form, Input, message, Modal, Select, Space, Table, Tag} from "antd"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined} from "@ant-design/icons"; -import {useHistory} from "react-router-dom"; -import {capitalize} from "lodash"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; +import React, { useEffect, useState } from "react"; +import { + Button, + Form, + Input, + message, + Modal, + Select, + Space, + Table, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { useHistory } from "react-router-dom"; +import { capitalize } from "lodash"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; export const CommissionComponent = observer((props) => { - const store = useStore(); - const [form] = Form.useForm(); - const {Option} = Select; - const history = useHistory(); - const [idData, setIdData] = useState(''); - const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); + const store = useStore(); + const [form] = Form.useForm(); + const { Option } = Select; + const history = useHistory(); + const [idData, setIdData] = useState(""); + const [confirmLoading, setConfirmLoading] = useState(false); + const [isLoading, setIsLoading] = useState(false); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - //await store.product.getDataSubCategories(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); - }, []); - - const handleEditButton = (data) => { - console.log(data, "isi data") - form.setFieldsValue({ - name: data.name, - npwp: data.npwp, - address: data.address, - - }); - store.commission.visibleModalCommission = true; - setIdData(data.id); - } - - const columns = [ - { - title: "Name", - dataIndex: "name", - key: "name", - }, - { - title: "Npwp", - dataIndex: "npwp", - key: "npwp", - }, - { - title: "Address", - dataIndex: "address", - key: "address", - }, - { - title: "Status", - dataIndex: "status", - key: "status", - render: (text, record) => ( - - {record?.status === true ? " ACTIVE" : "INACTIVE"} - - ), - }, - { - title: "Action", - key: "action", - render: (text, record) => ( - - - - - ), - }, - ]; - - const deleteData = async (id) => { - try { - console.log(id); - await store.commission.delete(id); - message.success("Data Berhasil Dihapus"); - history.push(LINKS.PRODUCT); - } catch (err) { - console.log("error", err); - message.error("Gagal menghapus"); - } + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + //await store.product.getDataSubCategories(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } }; - const handleDelete = (id) => { - Modal.confirm({ - title: "Are you sure delete this record?", - icon: , - okText: "Yes", - okType: "primary", - cancelText: "Cancel", - onOk() { - return deleteData(id); - }, - onCancel() { - console.log("Cancel"); - }, - }); - }; + init(); + }, []); - const handleCancel = () => { - setIdData('') - store.commission.visibleModalCommission = false; + const handleEditButton = (data) => { + console.log(data, "isi data"); + form.setFieldsValue({ + value: data.commission, + }); + store.commission.visibleModalCommission = true; + setIdData(data.id); + }; + + const columns = [ + { + title: "Name", + dataIndex: "name", + key: "name", + }, + { + title: "Amount", + dataIndex: "commission", + key: "commission", + }, + { + title: "Action", + key: "action", + render: (text, record) => ( + + + + ), + }, + ]; + + const deleteData = async (id) => { + try { + console.log(id); + await store.commission.delete(id); + message.success("Data Berhasil Dihapus"); + history.push(LINKS.PRODUCT); + } catch (err) { + console.log("error", err); + message.error("Gagal menghapus"); } + }; - const handleSubmit = async (data) => { - console.log(data, "isi data2") - if (idData !== '') { - setConfirmLoading(true); - try { - await store.commission.update(idData, data) - message.success("Success Update Data Member") - } catch (e) { - message.error("Failed Update Data Member") - } - setConfirmLoading(false); - store.commission.visibleModalCommission = false; - setIdData(''); - form.resetFields(); - } else { - setConfirmLoading(true); - try { - await store.commission.create(data) - message.success("Success Add New Member") - } catch (e) { - console.log(e, "apa errornya") - message.error("Failed Add Member") - } - setConfirmLoading(false); - store.commission.visibleModalCommission = false; - setIdData(''); - form.resetFields(); - } + const handleCancel = () => { + setIdData(""); + store.commission.visibleModalCommission = false; + }; + + const handleSubmit = async (data) => { + console.log(data, "isi data2"); + if (idData !== "") { + setConfirmLoading(true); + try { + await store.commission.update(idData, data); + message.success("Success Update Data Member"); + } catch (e) { + message.error("Failed Update Data Member"); + } + setConfirmLoading(false); + store.commission.visibleModalCommission = false; + setIdData(""); + form.resetFields(); + } else { + setConfirmLoading(true); + try { + await store.commission.create(data); + message.success("Success Add New Member"); + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Add Member"); + } + setConfirmLoading(false); + store.commission.visibleModalCommission = false; + setIdData(""); + form.resetFields(); } + }; - return ( -
-
{ - let pageNumber = page.current; - store.commission.pageSize = page.pageSize; - store.commission.page = pageNumber - 1; - // store.membership.isLoading = true; - await store.commission.getData(); - // store.membership.isLoading = false; - }} - /> + return ( +
+
{ + let pageNumber = page.current; + store.commission.pageSize = page.pageSize; + store.commission.page = pageNumber - 1; + // store.membership.isLoading = true; + await store.commission.getData(); + // store.membership.isLoading = false; + }} + /> - { - form.resetFields(); - handleCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form") - handleSubmit(values); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} - > -
- - - - - - - - - - - - - - - - -
- - ); + { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmit(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + +
+ + ); }); diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index 3b096b4..3af817a 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -1,43 +1,23 @@ import React, { useEffect, useState } from "react"; -import { - Button, - Form, - Input, - message, - Modal, - Select, - Space, - Table, - Tag, -} from "antd"; +import { Button, Form, Input, message, Modal, Space, Table, Tag } from "antd"; import { observer } from "mobx-react-lite"; import { ExclamationCircleOutlined } from "@ant-design/icons"; import { useHistory } from "react-router-dom"; -import { capitalize } from "lodash"; import { useStore } from "../utils/useStore"; import { LINKS } from "../routes/app"; +import { TopupsaldoModal } from "./TopupsaldoModal"; export const SupplierComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - //const [formEdit] = Form.useForm(); - const { Option } = Select; const history = useHistory(); const [idData, setIdData] = useState(""); - const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); + const [code, setCode] = useState(""); useEffect(() => { const init = async () => { - try { - setIsLoading(true); - await store.supplier.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } + await store.supplier.getData(); }; - init(); }, []); @@ -52,6 +32,14 @@ export const SupplierComponent = observer((props) => { setIdData(data.id); }; + const handleTopup = (data) => { + console.log(data, "isi data"); + form.setFieldsValue({ + code: data.code, + }); + store.supplier.visibleModalTransaction = true; + setCode(data.code); + }; const changeStatus = async (id, isActive) => { const status = isActive ? "inactive" : "active"; const status2 = isActive ? "Inactivating" : "Activating"; @@ -78,6 +66,12 @@ export const SupplierComponent = observer((props) => { dataIndex: "code", key: "code", }, + , + { + title: "Saldo", + dataIndex: "saldo", + key: "saldo", + }, { title: "Status", dataIndex: "status", @@ -85,8 +79,7 @@ export const SupplierComponent = observer((props) => { render: (text, record) => ( changeStatus(record?.id, record?.status)} + style={{ color: "#4F566B"}} > {record?.status === true ? " ACTIVE" : "INACTIVE"} @@ -98,7 +91,13 @@ export const SupplierComponent = observer((props) => { render: (text, record) => ( - + + ), }, @@ -140,7 +139,6 @@ export const SupplierComponent = observer((props) => { const handleSubmit = async (data) => { console.log(data, "isi data2"); if (idData !== "") { - setConfirmLoading(true); try { await store.supplier.update(idData, data); message.success("Success Update Data Member"); @@ -148,21 +146,19 @@ export const SupplierComponent = observer((props) => { } catch (e) { message.error("Failed Update Data Member"); } - setConfirmLoading(false); + store.supplier.visibleModalSupplier = false; setIdData(""); form.resetFields(); } else { - setConfirmLoading(true); try { await store.supplier.create(data); message.success("Success Add New Member"); - //await store.supplier.getData() } catch (e) { console.log(e, "apa errornya"); message.error("Failed Add Member"); } - setConfirmLoading(false); + store.supplier.visibleModalSupplier = false; setIdData(""); form.resetFields(); @@ -187,12 +183,9 @@ export const SupplierComponent = observer((props) => { let pageNumber = page.current; store.supplier.pageSize = page.pageSize; store.supplier.page = pageNumber - 1; - // store.membership.isLoading = true; await store.supplier.getData(); - // store.membership.isLoading = false; }} /> - { + ); }); diff --git a/src/component/TopupsaldoModal.js b/src/component/TopupsaldoModal.js new file mode 100644 index 0000000..673e857 --- /dev/null +++ b/src/component/TopupsaldoModal.js @@ -0,0 +1,74 @@ +import React from "react"; +import { Form, Input, message, Modal } from "antd"; +import { observer } from "mobx-react-lite"; +import { useStore } from "../utils/useStore"; + +export const TopupsaldoModal = observer((props) => { + const store = useStore(); + const [form] = Form.useForm(); + + const handleCancelTransaction = () => { + store.supplier.visibleModalTransaction = false; + }; + const handleSubmitTransaction = async (data) => { + console.log(data, "isi data2"); + + try { + await store.supplier.createTransaction(data); + message.success("Success Top Up"); + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Top Up"); + } + + store.supplier.visibleModalTransaction = false; + form.resetFields(); + }; + return ( +
+ { + form.resetFields(); + handleCancelTransaction(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmitTransaction(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + + + + +
+
+ ); +}); diff --git a/src/pages/Config/Commission.js b/src/pages/Config/Commission.js index 50a669a..8a00f05 100644 --- a/src/pages/Config/Commission.js +++ b/src/pages/Config/Commission.js @@ -1,90 +1,73 @@ -import React, {useEffect, useState} from "react"; -import {Button, Card, Col, Input, Row, Tabs} from "antd"; -import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {CommissionComponent} from "../../component/CommissionComponent"; -import {LINKS} from "../../routes/app"; +import React, { useEffect, useState } from "react"; +import { Button, Card, Col, Input, Row, Tabs } from "antd"; +import { FilterOutlined, PlusSquareOutlined } from "@ant-design/icons"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { CommissionComponent } from "../../component/CommissionComponent"; +import { LINKS } from "../../routes/app"; -const {TabPane} = Tabs; -const {Search} = Input; +const { TabPane } = Tabs; +const { Search } = Input; export const Commission = observer(() => { - const [isLoading, setIsLoading] = useState(false); - const store = useStore(); + const [isLoading, setIsLoading] = useState(false); + const store = useStore(); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - //await store.commission.getDataCategories(); - await store.commission.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + //await store.commission.getDataCategories(); + await store.commission.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; - init(); - }, []); + init(); + }, []); - // const handleChangeTabPane = async (key) => { - // store.product.filterCategory = key; - // console.log(key); - // }; + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.COMMISSION, + name: Commission, + }, + ]; - const routeData = [ - { - route: LINKS.HOME, - name: "Home", - }, - { - route: LINKS.COMMISSION, - name: Commission, - }, - ]; - - return ( -
- - - -
- - - - - - - - - - - - - )) - - - - ); + return ( +
+ + + {/* */} + {/*
+ + */} + {/* + + + + */} +
+ + + + ); }); diff --git a/src/pages/Config/Supplier.js b/src/pages/Config/Supplier.js index 8248e57..1f66dbb 100644 --- a/src/pages/Config/Supplier.js +++ b/src/pages/Config/Supplier.js @@ -47,28 +47,6 @@ export const Supplier = observer(() => { init(); }, []); - // const handleChangeTabPane = async (key) => { - // store.product.filterCategory = key; - // console.log(key); - // }; - const handleCancelTransaction = () => { - store.supplier.visibleModalTransaction = false; - }; - const handleSubmitTransaction = async (data) => { - console.log(data, "isi data2"); - setConfirmLoading(true); - try { - await store.supplier.createTransaction(data); - message.success("Success Top Up"); - //await store.supplier.getData() - } catch (e) { - console.log(e, "apa errornya"); - message.error("Failed Top Up"); - } - setConfirmLoading(false); - store.supplier.visibleModalTransaction = false; - form.resetFields(); - }; const routeData = [ { route: LINKS.HOME, @@ -79,19 +57,19 @@ export const Supplier = observer(() => { name: Supplier, }, ]; - + return (
-
+ {/* - - + */} + { onSearch={(value) => console.log(value)} /> - - - - - - - - )) - + - { - form.resetFields(); - handleCancelTransaction(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form"); - handleSubmitTransaction(values); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} - > -
- - - - - - - -
); }); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 0e621a2..817bb05 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -12,6 +12,8 @@ import { Space, Table, Tag, + Form, + Select, } from "antd"; import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; @@ -19,14 +21,16 @@ import { ExclamationCircleOutlined, FilterOutlined, PlusSquareOutlined, + DownloadOutlined, } from "@ant-design/icons"; import { MembershipModal } from "./MembershipModal"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { LINKS } from "../../routes/app"; const { Search } = Input; - +const { Option } = Select; export const Membership = observer(() => { + const [form] = Form.useForm(); const store = useStore(); const [visibleModal, setVisibleModal] = useState(false); const [initialData, setInitialData] = useState({}); @@ -62,6 +66,24 @@ export const Membership = observer(() => { message.error(`Failed ${status2} Membership`); } }; + const handleCancelTransaction = () => { + store.supplier.visibleModalTransaction = false; + }; + const handleSubmitTransaction = async (data) => { + console.log(data, "isi data2"); + setConfirmLoading(true); + try { + await store.supplier.createTransaction(data); + message.success("Success Top Up"); + //await store.supplier.getData() + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Top Up"); + } + setConfirmLoading(false); + store.supplier.visibleModalTransaction = false; + form.resetFields(); + }; const columns = [ { @@ -219,6 +241,19 @@ export const Membership = observer(() => { +
+ + {store.ui.mediaQuery.isDesktop && (
{ )} + { + form.resetFields(); + handleCancelTransaction(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmitTransaction(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + + + + +
Date: Thu, 16 Dec 2021 16:50:59 +0700 Subject: [PATCH 052/324] feat: responsive saldo layout --- src/pages/Profile/Profile.js | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index f4f366a..27ec245 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -50,13 +50,23 @@ export const Profile = observer(() => { }, ] + const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? { + display: "flex", + justifyContent: "center" + } : {fontSize: "0.75rem"}; + const styleSaldoContent = store.ui.mediaQuery.isDesktop ? { + fontSize: '1.25rem', + display: "flex", + justifyContent: "center" + } : null; + return (
Profile -
+ Name @@ -90,11 +100,15 @@ export const Profile = observer(() => { - -
- Saldo - {store.authentication.profileData?.wallet} -
+ + + + Saldo + + + {store.authentication.profileData?.wallet} + + From 0765b6027db0c970a843e3332b21ca600be187e9 Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Thu, 16 Dec 2021 16:52:42 +0700 Subject: [PATCH 053/324] feat: add Top Up Distribute Admin --- src/component/PartnerComponent.js | 17 +++++++-- src/pages/Membership/Membership.js | 55 ++++++++++++++++-------------- src/store/transaction.js | 10 ++++++ 3 files changed, 54 insertions(+), 28 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index f80a61b..51db6dc 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -114,7 +114,10 @@ export const PartnerComponent = observer((props) => { key: "action", render: (text, record) => ( - @@ -166,10 +169,18 @@ export const PartnerComponent = observer((props) => { setConfirmLoading(true); try { await store.partner.update(idData, data); - message.success(isChangePassword ? "Failed Change Partner Password" : "Success Update Data Partner"); + message.success( + isChangePassword + ? "Failed Change Partner Password" + : "Success Update Data Partner" + ); //await store.partner.getData() } catch (e) { - message.error(isChangePassword ? "Failed Change Partner Password" : "Failed Update Data Partner"); + message.error( + isChangePassword + ? "Failed Change Partner Password" + : "Failed Update Data Partner" + ); } setConfirmLoading(false); store.partner.visibleModalPartner = false; diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index abd6d91..8bcf4e6 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -33,6 +33,8 @@ export const Membership = observer(() => { const [form] = Form.useForm(); const store = useStore(); const [visibleModal, setVisibleModal] = useState(false); + const [isVisibleTopUpModal, setIsVisibleTopUpModal] = useState(false); + const [destination, setDestination] = useState(null); const [initialData, setInitialData] = useState({}); const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); @@ -43,6 +45,7 @@ export const Membership = observer(() => { setIsLoading(true); await getData(); store.role.getData(); + await store.supplier.getData(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -53,10 +56,10 @@ export const Membership = observer(() => { }, []); const getData = () => { - (store.authentication.userData.role === "Admin") - ? store.membership.getData() - : store.membership.getDataBySuperior(); - } + store.authentication.userData.role === "Admin" + ? store.membership.getData() + : store.membership.getDataBySuperior(); + }; const changeStatus = async (id, isActive) => { const status = isActive ? "inactive" : "active"; @@ -76,13 +79,16 @@ export const Membership = observer(() => { } }; const handleCancelTransaction = () => { - store.supplier.visibleModalTransaction = false; + setIsVisibleTopUpModal(false); + setDestination(null); }; const handleSubmitTransaction = async (data) => { - console.log(data, "isi data2"); setConfirmLoading(true); try { - await store.supplier.createTransaction(data); + let input = data; + data.destination = destination; + + await store.transaction.distributeAdmin(data); message.success("Success Top Up"); //await store.supplier.getData() } catch (e) { @@ -90,8 +96,9 @@ export const Membership = observer(() => { message.error("Failed Top Up"); } setConfirmLoading(false); - store.supplier.visibleModalTransaction = false; + setIsVisibleTopUpModal(false); form.resetFields(); + setDestination(null); }; const columns = [ @@ -128,9 +135,20 @@ export const Membership = observer(() => { key: "action", render: (text, record) => ( - + - + */} { - - - {store.ui.mediaQuery.isDesktop && (
{ Date: Thu, 16 Dec 2021 17:45:00 +0700 Subject: [PATCH 054/324] fix: menus --- src/pages/App/DesktopLayout.js | 32 +- src/pages/App/MenuList.js | 25 +- src/pages/Membership/Membership.js | 41 +-- src/pages/Payback/Payback.js | 566 +++++++++++++++-------------- 4 files changed, 342 insertions(+), 322 deletions(-) diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 1b47af9..4316984 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -10,6 +10,8 @@ import { DatabaseOutlined, FileAddOutlined, FileSyncOutlined, + FileProtectOutlined, + ShoppingCartOutlined, } from "@ant-design/icons"; import { AppRoute, LINKS } from "../../routes/app"; import { useStore } from "../../utils/useStore"; @@ -122,12 +124,12 @@ export const DesktopLayout = observer(() => { {store.authentication.userData.role !== "Retail" && ( - + Membership )} - {store.authentication.userData.role !== "Retail" && ( + {store.authentication.userData.role === "Admin" && ( } @@ -154,10 +156,10 @@ export const DesktopLayout = observer(() => { )} - {store.authentication.userData.role !== "Retail" && ( + {store.authentication.userData.role === "Admin" && ( } + icon={} title="Product" > @@ -180,28 +182,28 @@ export const DesktopLayout = observer(() => { )} - {store.authentication.userData.role !== "Retail" && ( + {store.authentication.userData.role !== "Admin" && ( - + Product )} + {store.authentication.userData.role === "Retail" && ( + + + + Transaction + + + )} - + Payback - {store.authentication.userData.role === "Retail" && ( - - - - Transaction - - - )} diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index afc5508..f7796cd 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -12,6 +12,7 @@ import { MoneyCollectOutlined, ProfileOutlined, ProjectOutlined, + ShoppingCartOutlined, UserOutlined, } from "@ant-design/icons"; import { observer } from "mobx-react-lite"; @@ -59,7 +60,7 @@ export const MenuList = observer((props) => { )} - {store.authentication.userData.role !== "Retail" && ( + {store.authentication.userData.role === "Admin" && ( } title="Config"> @@ -81,7 +82,7 @@ export const MenuList = observer((props) => { )} - {store.authentication.userData.role !== "Retail" && ( + {store.authentication.userData.role === "Admin" && ( } title="Product"> @@ -103,10 +104,18 @@ export const MenuList = observer((props) => { )} - {store.authentication.userData.role === ("Retail" || "Admin") && ( + {store.authentication.userData.role !== "Admin" && ( + + + + Product + + + )} + {store.authentication.userData.role === "Retail" && ( - + Transaction @@ -117,14 +126,6 @@ export const MenuList = observer((props) => { Payback - {store.authentication.userData.role === ("Retail" || "Admin") && ( - - - - Transaction - - - )} diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 8bcf4e6..3db8042 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -45,7 +45,8 @@ export const Membership = observer(() => { setIsLoading(true); await getData(); store.role.getData(); - await store.supplier.getData(); + if (store.authentication.userData.role === "Admin") + await store.supplier.getData(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -85,10 +86,11 @@ export const Membership = observer(() => { const handleSubmitTransaction = async (data) => { setConfirmLoading(true); try { - let input = data; data.destination = destination; - await store.transaction.distributeAdmin(data); + (await store.authentication.userData.role) === "Admin" + ? store.transaction.distributeAdmin(data) + : store.transaction.distribute(data); message.success("Success Top Up"); //await store.supplier.getData() } catch (e) { @@ -266,11 +268,6 @@ export const Membership = observer(() => { }; return (
- {/* -

Some contents...

-

Some contents...

-

Some contents...

-
*/}
@@ -410,19 +407,21 @@ export const Membership = observer(() => { }} >
- - - + {store.authentication.userData.role === "Admin" && ( + + + + )} { - const store = useStore(); - const [visibleModal, setVisibleModal] = useState(false); - const [confirmLoading, setConfirmLoading] = useState(false); - const [initialData, setInitialData] = useState({}); + const store = useStore(); + const [visibleModal, setVisibleModal] = useState(false); + const [confirmLoading, setConfirmLoading] = useState(false); + const [initialData, setInitialData] = useState({}); - // useEffect(() => { - // // const init = async () => { - // // try { - // // setIsLoading(true); - // // await store.membership.getData(); - // // await store.role.getData(); - // // setIsLoading(false); - // // } catch (e) { - // // setIsLoading(false); - // // } - // // }; - // - // // init(); - // }, []); + // useEffect(() => { + // // const init = async () => { + // // try { + // // setIsLoading(true); + // // await store.membership.getData(); + // // await store.role.getData(); + // // setIsLoading(false); + // // } catch (e) { + // // setIsLoading(false); + // // } + // // }; + // + // // init(); + // }, []); - const dummyData = [ - { - key: '1', - id: 1, - name: "John Doe", - picture: "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", - amount: "Rp. 1.000.000", - }, - { - key: '2', - id: 1, - name: "John Doe", - picture: "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", - amount: "Rp. 1.000.000", - }, - { - key: '3', - id: 1, - name: "John Doe", - picture: "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", - amount: "Rp. 1.000.000", - }, - { - key: '4', - id: 1, - name: "John Doe", - picture: "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", - amount: "Rp. 1.000.000", - }, - ] + const dummyData = [ + { + key: "1", + id: 1, + name: "John Doe", + picture: + "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", + amount: "Rp. 1.000.000", + }, + { + key: "2", + id: 1, + name: "John Doe", + picture: + "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", + amount: "Rp. 1.000.000", + }, + { + key: "3", + id: 1, + name: "John Doe", + picture: + "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", + amount: "Rp. 1.000.000", + }, + { + key: "4", + id: 1, + name: "John Doe", + picture: + "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", + amount: "Rp. 1.000.000", + }, + ]; - const columns = [ - { - title: "Name", - dataIndex: "name", - key: "name", - }, - { - title: "Picture", - dataIndex: "picture", - key: "picture", - render: (text, record) => ( - - ), - }, - { - title: "Amount", - dataIndex: "amount", - key: "amount", - }, - { - title: "Action", - key: "action", - width: 100, - render: (text, record) => ( - - - - - ), - }, - ]; + const columns = [ + { + title: "Name", + dataIndex: "name", + key: "name", + }, + { + title: "Picture", + dataIndex: "picture", + key: "picture", + render: (text, record) => ( + + ), + }, + { + title: "Amount", + dataIndex: "amount", + key: "amount", + }, + { + title: "Action", + key: "action", + width: 100, + render: (text, record) => ( + + + + + ), + }, + ]; - const routeData = [ - { - route: LINKS.HOME, - name: "Home", - }, - { - route: LINKS.PAYBACK, - name: Payback, - }, - ]; + if(store.authentication.userData.role === "Retail") columns.pop(); - const onSubmit = async (data) => { - setConfirmLoading(true); - try { - // await store.membership.create(data); - // message.success("Success Add New Member"); - // await store.membership.getData(); - } catch (e) { - console.error(e, "apa errornya"); - message.error("Failed Add Member"); - } - setConfirmLoading(false); - setVisibleModal(false); - }; + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.PAYBACK, + name: Payback, + }, + ]; - const handleAction = async (record, type) => { + const onSubmit = async (data) => { + setConfirmLoading(true); + try { + // await store.membership.create(data); + // message.success("Success Add New Member"); + // await store.membership.getData(); + } catch (e) { + console.error(e, "apa errornya"); + message.error("Failed Add Member"); + } + setConfirmLoading(false); + setVisibleModal(false); + }; - }; + const handleAction = async (record, type) => {}; - return ( -
- {/* -

Some contents...

-

Some contents...

-

Some contents...

-
*/} - - -
- -
- - - - - - - - {store.ui.mediaQuery.isDesktop && ( -
{ - // let pageNumber = page.current; - // store.membership.pageSize = page.pageSize; - // store.membership.page = pageNumber - 1; - // // store.membership.isLoading = true; - // await store.membership.getData(); - // // store.membership.isLoading = false; - // }} - /> - )} - - {store.ui.mediaQuery.isMobile && ( - { - // store.membership.pageSize = page.pageSize; - // store.membership.page = page.current; - // store.membership.getData(); - // }, - // pageSize: store.membership.pageSize, - // total: store.membership.total_data, - // current: store.membership.page, - // style: {marginBottom: "1rem", marginRight: "1rem"}, - // }} - dataSource={dummyData} - style={{padding: 0}} - renderItem={(item) => { - return ( -
- - - -
- } - /> -
-

- {item.amount} -

-
- - - - ); - }} - /> - )} - - - - { - await onSubmit(data); + return ( +
+ + +
+ +
+ + + + { + /> + {store.authentication.userData.role !== "Admin" && ( + + )} + + + {store.ui.mediaQuery.isDesktop && ( +
{ + // let pageNumber = page.current; + // store.membership.pageSize = page.pageSize; + // store.membership.page = pageNumber - 1; + // // store.membership.isLoading = true; + // await store.membership.getData(); + // // store.membership.isLoading = false; + // }} /> + )} + + {store.ui.mediaQuery.isMobile && ( + { + // store.membership.pageSize = page.pageSize; + // store.membership.page = page.current; + // store.membership.getData(); + // }, + // pageSize: store.membership.pageSize, + // total: store.membership.total_data, + // current: store.membership.page, + // style: {marginBottom: "1rem", marginRight: "1rem"}, + // }} + dataSource={dummyData} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + + +
+ } + /> +
+

+ {item.amount} +

+
+ + + + ); + }} + /> + )} - ); + + + { + await onSubmit(data); + }} + onCancel={() => { + setInitialData({}); + setVisibleModal(false); + }} + /> + + ); }); From 34a9cd972b32531f22233d06895eac88a7768b95 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Thu, 16 Dec 2021 17:47:05 +0700 Subject: [PATCH 055/324] Pages Product --- src/pages/Product/Product.js | 48 +++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 0f80346..3586974 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,6 +1,10 @@ import React, { useEffect, useState } from "react"; -import { Button, Card, Col, Input, Row, Select, Tabs } from "antd"; -import { FilterOutlined, PlusSquareOutlined } from "@ant-design/icons"; +import { Button, Card, Col, Input, Row, Select, Tabs, Upload } from "antd"; +import { + FilterOutlined, + PlusSquareOutlined, + UploadOutlined, +} from "@ant-design/icons"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; @@ -13,14 +17,17 @@ const { Option } = Select; export const Product = observer(() => { const [isLoading, setIsLoading] = useState(false); + const [uploadProduct, setUpload] = useState(true); const store = useStore(); useEffect(() => { const init = async () => { try { setIsLoading(true); + await store.supplier.getData(); await store.product.getDataCategories(); await store.product.getData(); + //await store.supplier.data; setIsLoading(false); } catch (e) { setIsLoading(false); @@ -30,12 +37,6 @@ export const Product = observer(() => { init(); }, []); - const handleChangeTabPane = async (key) => { - store.product.filterCategory = key; - // console.log(key); - await store.product.getData(); - }; - const routeData = [ { route: LINKS.HOME, @@ -46,7 +47,7 @@ export const Product = observer(() => { name: Product, }, ]; - + return (
@@ -72,28 +73,31 @@ export const Product = observer(() => { - -
+ + + + + + - - {/* - {store.product.dataCategories.map((item, idx) => ( - */} - {/* */} - {/* - ))} - */} ); From a0b8ad52beed25e128bdaacbd3e1bfda8d1a8341 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Thu, 16 Dec 2021 17:55:59 +0700 Subject: [PATCH 056/324] Pages Supplier --- src/component/SupplierComponent.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index 3af817a..a70e94a 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -90,7 +90,6 @@ export const SupplierComponent = observer((props) => { key: "action", render: (text, record) => ( - + ), }, From 32c871afc39b2d9bf02de555871d932494c32b0b Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Thu, 16 Dec 2021 18:20:40 +0700 Subject: [PATCH 057/324] feat: membership add name --- src/pages/Membership/Membership.js | 7 ++++--- src/pages/Membership/MembershipModal.js | 9 +++++++++ src/store/membership.js | 10 ++++++++-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 3db8042..c38a993 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -106,8 +106,9 @@ export const Membership = observer(() => { const columns = [ { title: "Name", - dataIndex: "username", - key: "username", + dataIndex: "name", + key: "name", + render: (text, record) => record?.name ?? record?.username, }, { title: "Username", @@ -138,7 +139,7 @@ export const Membership = observer(() => { render: (text, record) => ( - - - ), - }, - ]; - - const deleteData = async (id) => { - try { - console.log(id); - await store.category.delete(id); - message.success("Data Berhasil Dihapus"); - history.push(LINKS.PRODUCT); - } catch (err) { - console.log("error", err); - message.error("Gagal menghapus"); - } + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + //store.product.pageCategories=StrToLower(props.category) + await store.product.getDataSubCategories(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } }; - const handleDelete = (id) => { - Modal.confirm({ - title: "Are you sure delete this record?", - icon: , - okText: "Yes", - okType: "primary", - cancelText: "Cancel", - onOk() { - return deleteData(id); - }, - onCancel() { - console.log("Cancel"); - }, - }); - }; + init(); + }, []); - const handleCancel = () => { - setIdData('') - store.category.visibleModalCategory = false; + const handleEditButton = (data) => { + console.log(data, "isi data"); + form.setFieldsValue({ + name: data.name, + code: data.code, + }); + store.category.visibleModalCategory = true; + setIdData(data.id); + }; + + const columns = [ + { + title: "Kode", + dataIndex: "code", + key: "code", + }, + { + title: "Category Name", + dataIndex: "name", + key: "name", + }, + // { + // title: "Gangguan", + // dataIndex: "status", + // key: "status", + // render: (text, record) => ( + // + // {capitalize(record?.status)} + // + // ), + // }, + // { + // title: "Tersedia", + // dataIndex: "tersedia", + // key: "tersedia", + // render: (text, record) => ( + // + // {record?.status === "ACTIVE" ? " Ya" : "Tidak"} + // + // ), + // }, + { + title: "Action", + key: "action", + render: (text, record) => ( + + + + + ), + }, + ]; + + const deleteData = async (id) => { + try { + console.log(id); + await store.category.delete(id); + message.success("Data Berhasil Dihapus"); + history.push(LINKS.PRODUCT); + } catch (err) { + console.log("error", err); + message.error("Gagal menghapus"); } + }; - const handleSubmit = async (data) => { - console.log(data, "isi data2") - if (idData !== '') { - setConfirmLoading(true); - try { - await store.category.update(idData, data) - message.success("Success Update Data Category") - } catch (e) { - message.error("Failed Update Data Category") - } - setConfirmLoading(false); - store.category.visibleModalCategory = false; - setIdData(''); - form.resetFields(); - } else { - setConfirmLoading(true); - try { - await store.category.create(data) - message.success("Success Add New Category") - } catch (e) { - console.log(e, "apa errornya") - message.error("Failed Add Category") - } - setConfirmLoading(false); - store.category.visibleModalCategory = false; - setIdData(''); - form.resetFields(); - } + const handleDelete = (id) => { + Modal.confirm({ + title: "Are you sure delete this record?", + icon: , + okText: "Yes", + okType: "primary", + cancelText: "Cancel", + onOk() { + return deleteData(id); + }, + onCancel() { + console.log("Cancel"); + }, + }); + }; + + const handleCancel = () => { + setIdData(""); + store.category.visibleModalCategory = false; + }; + + const handleSubmit = async (data) => { + console.log(data, "isi data2"); + if (idData !== "") { + setConfirmLoading(true); + try { + await store.category.update(idData, data); + message.success("Success Update Data Category"); + } catch (e) { + message.error("Failed Update Data Category"); + } + setConfirmLoading(false); + store.category.visibleModalCategory = false; + setIdData(""); + form.resetFields(); + } else { + setConfirmLoading(true); + try { + await store.category.create(data); + message.success("Success Add New Category"); + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Add Category"); + } + setConfirmLoading(false); + store.category.visibleModalCategory = false; + setIdData(""); + form.resetFields(); } + }; - return ( -
-
{ - let pageNumber = page.current; - store.product.pageSize = page.pageSize; - store.product.page = pageNumber - 1; - // store.membership.isLoading = true; - await store.product.getData(); - // store.membership.isLoading = false; - }} - /> + return ( +
+
{ + let pageNumber = page.current; + store.product.pageSize = page.pageSize; + store.product.page = pageNumber - 1; + // store.membership.isLoading = true; + await store.product.getData(); + // store.membership.isLoading = false; + }} + /> - { - form.resetFields(); - handleCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form") - handleSubmit(values); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} - > - - - - - - - - ); + { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmit(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + + + + +
+ + ); }); From 787e74419e494bdae66b38a2be0f225cbd51cc21 Mon Sep 17 00:00:00 2001 From: ilham Date: Thu, 16 Dec 2021 19:48:58 +0700 Subject: [PATCH 063/324] fix: supplier menu --- src/component/SupplierComponent.js | 4 ++-- src/component/TopupsaldoModal.js | 2 +- src/pages/Membership/Membership.js | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index 975df85..3156b2d 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -69,8 +69,8 @@ export const SupplierComponent = observer((props) => { , { title: "Saldo", - dataIndex: "saldo", - key: "saldo", + dataIndex: ["coa","amount"], + key: ["coa","amount"], }, { title: "Status", diff --git a/src/component/TopupsaldoModal.js b/src/component/TopupsaldoModal.js index 673e857..b598b0f 100644 --- a/src/component/TopupsaldoModal.js +++ b/src/component/TopupsaldoModal.js @@ -58,7 +58,7 @@ export const TopupsaldoModal = observer((props) => { label="Supplier" rules={[{ required: true, message: "Please input supplier!" }]} > - + { }, { title: "Status", - dataIndex: "status", - key: "status", + dataIndex: "isActive", + key: "isActive", render: (text, record) => ( Date: Thu, 16 Dec 2021 19:50:45 +0700 Subject: [PATCH 064/324] feat: adjust supplier page --- src/component/SupplierComponent.js | 50 ++++++++++++------------------ src/component/TopupsaldoModal.js | 21 +++++++------ src/store/supplier.js | 3 +- 3 files changed, 33 insertions(+), 41 deletions(-) diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index 3156b2d..9ab1fa8 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -1,25 +1,17 @@ -import React, { useEffect, useState } from "react"; -import { Button, Form, Input, message, Modal, Space, Table, Tag } from "antd"; -import { observer } from "mobx-react-lite"; -import { ExclamationCircleOutlined } from "@ant-design/icons"; -import { useHistory } from "react-router-dom"; -import { useStore } from "../utils/useStore"; -import { LINKS } from "../routes/app"; -import { TopupsaldoModal } from "./TopupsaldoModal"; +import React, {useState} from "react"; +import {Button, Form, Input, message, Modal, Space, Table, Tag} from "antd"; +import {observer} from "mobx-react-lite"; +import {ExclamationCircleOutlined} from "@ant-design/icons"; +import {useHistory} from "react-router-dom"; +import {useStore} from "../utils/useStore"; +import {LINKS} from "../routes/app"; +import {TopupsaldoModal} from "./TopupsaldoModal"; export const SupplierComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); const history = useHistory(); const [idData, setIdData] = useState(""); - const [code, setCode] = useState(""); - - useEffect(() => { - const init = async () => { - await store.supplier.getData(); - }; - init(); - }, []); const handleEditButton = (data) => { console.log(data, "isi data"); @@ -38,8 +30,9 @@ export const SupplierComponent = observer((props) => { code: data.code, }); store.supplier.visibleModalTransaction = true; - setCode(data.code); + store.supplier.code = data.code; }; + const changeStatus = async (id, isActive) => { const status = isActive ? "inactive" : "active"; const status2 = isActive ? "Inactivating" : "Activating"; @@ -66,7 +59,6 @@ export const SupplierComponent = observer((props) => { dataIndex: "code", key: "code", }, - , { title: "Saldo", dataIndex: ["coa","amount"], @@ -216,20 +208,18 @@ export const SupplierComponent = observer((props) => { > - {idData ? ( - "" - ) : ( - - - - )} + {!idData && + + + + } - + ); }); diff --git a/src/component/TopupsaldoModal.js b/src/component/TopupsaldoModal.js index b598b0f..28c6237 100644 --- a/src/component/TopupsaldoModal.js +++ b/src/component/TopupsaldoModal.js @@ -1,7 +1,7 @@ import React from "react"; -import { Form, Input, message, Modal } from "antd"; -import { observer } from "mobx-react-lite"; -import { useStore } from "../utils/useStore"; +import {Form, Input, message, Modal} from "antd"; +import {observer} from "mobx-react-lite"; +import {useStore} from "../utils/useStore"; export const TopupsaldoModal = observer((props) => { const store = useStore(); @@ -10,6 +10,7 @@ export const TopupsaldoModal = observer((props) => { const handleCancelTransaction = () => { store.supplier.visibleModalTransaction = false; }; + const handleSubmitTransaction = async (data) => { console.log(data, "isi data2"); @@ -49,19 +50,19 @@ export const TopupsaldoModal = observer((props) => { }} >
diff --git a/src/store/supplier.js b/src/store/supplier.js index 8464141..a8a22d7 100644 --- a/src/store/supplier.js +++ b/src/store/supplier.js @@ -8,7 +8,8 @@ export class Supplier { total_data = 0; filterCategory = null; visibleModalSupplier = false; - visibleModalTransaction=false; + visibleModalTransaction = false; + code = ""; pageCategories = 0; pageSizeCategories = 10 From d7cb7df6bab032db65a271314320efd44f72e3f2 Mon Sep 17 00:00:00 2001 From: ilham Date: Thu, 16 Dec 2021 19:59:21 +0700 Subject: [PATCH 065/324] fix: remove delete button on master data --- src/component/CategoryComponent.js | 17 --------------- src/component/Subcategory.js | 33 ------------------------------ 2 files changed, 50 deletions(-) diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index 4f8ab07..bff88ca 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -94,7 +94,6 @@ export const CategoryComponent = observer((props) => { render: (text, record) => ( - ), }, @@ -112,22 +111,6 @@ export const CategoryComponent = observer((props) => { } }; - const handleDelete = (id) => { - Modal.confirm({ - title: "Are you sure delete this record?", - icon: , - okText: "Yes", - okType: "primary", - cancelText: "Cancel", - onOk() { - return deleteData(id); - }, - onCancel() { - console.log("Cancel"); - }, - }); - }; - const handleCancel = () => { setIdData(""); store.category.visibleModalCategory = false; diff --git a/src/component/Subcategory.js b/src/component/Subcategory.js index b961295..96b34b4 100644 --- a/src/component/Subcategory.js +++ b/src/component/Subcategory.js @@ -56,44 +56,11 @@ export const SubcategoryComponent = observer((props) => { - ), }, ]; - const deleteData = async (id) => { - try { - console.log(id); - await store.category.delete(id); - message.success("Data Berhasil Dihapus"); - history.push(LINKS.PRODUCT); - } catch (err) { - console.log("error", err); - message.error("Gagal menghapus"); - } - }; - - const handleDelete = (id) => { - Modal.confirm({ - title: "Are you sure delete this record?", - icon: , - okText: "Yes", - okType: "primary", - cancelText: "Cancel", - onOk() { - return deleteData(id); - }, - onCancel() { - console.log("Cancel"); - }, - }); - }; - const handleCancel = () => { setIdData('') store.subcategory.visibleModalSubcategory = false; From d41681c2178343911076aa1a42a1fd588b93627f Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Thu, 16 Dec 2021 20:31:59 +0700 Subject: [PATCH 066/324] feat: completing sub categories --- src/component/Subcategory.js | 358 +++++++++++++++++-------------- src/pages/Product/Category.js | 11 +- src/pages/Product/Product.js | 4 +- src/pages/Product/Subcategory.js | 26 +-- src/store/subcategory.js | 3 - 5 files changed, 210 insertions(+), 192 deletions(-) diff --git a/src/component/Subcategory.js b/src/component/Subcategory.js index 96b34b4..fbb1f71 100644 --- a/src/component/Subcategory.js +++ b/src/component/Subcategory.js @@ -1,173 +1,203 @@ -import React, {useEffect, useState} from "react"; -import {Button, Form, Input, message, Modal, Select, Space, Table, Tag} from "antd"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined} from "@ant-design/icons"; -import {useHistory} from "react-router-dom"; -import {capitalize} from "lodash"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; +import React, { useEffect, useState } from "react"; +import { + Button, + Form, + Input, + message, + Modal, + Select, + Space, + Table, + Tag, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { useHistory } from "react-router-dom"; +import { capitalize } from "lodash"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; export const SubcategoryComponent = observer((props) => { - const store = useStore(); - const [form] = Form.useForm(); - const {Option} = Select; - const history = useHistory(); - const [idData, setIdData] = useState(''); - const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); + const store = useStore(); + const [form] = Form.useForm(); + const { Option } = Select; + const history = useHistory(); + const [idData, setIdData] = useState(""); + const [confirmLoading, setConfirmLoading] = useState(false); + const [isLoading, setIsLoading] = useState(false); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - //store.product.pageCategories=StrToLower(props.category) - await store.subcategory.getData(); - await store.category.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + //store.product.pageCategories=StrToLower(props.category) + getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; - init(); - }, []); + init(); + }, []); - const handleEditButton = (data) => { - console.log(data, "isi data") - form.setFieldsValue({ - name: data.name, - categoryId: data.categoryId, - }); - store.subcategory.visibleModalSubcategory = true; - setIdData(data.id); + const getData = async () => { + await store.subcategory.getData(); + await store.category.getData(); + }; + + const handleEditButton = (data) => { + console.log(data, "isi data"); + form.setFieldsValue({ + code: data.code, + name: data.name, + categoryId: data.categoryId, + }); + store.subcategory.visibleModalSubcategory = true; + setIdData(data.id); + }; + + const columns = [ + { + title: "Code", + dataIndex: "code", + key: "code", + }, + { + title: "Sub Category Name", + dataIndex: "name", + key: "name", + }, + { + title: "Action", + key: "action", + render: (text, record) => ( + + + + ), + }, + ]; + + const handleCancel = () => { + setIdData(""); + store.subcategory.visibleModalSubcategory = false; + }; + + const handleSubmit = async (data) => { + console.log(data, "isi data2"); + if (idData !== "") { + setConfirmLoading(true); + try { + await store.subcategory.update(idData, data); + await getData(); + message.success("Success Update Data Category"); + } catch (e) { + message.error("Failed Update Data Category"); + } + setConfirmLoading(false); + store.subcategory.visibleModalSubcategory = false; + setIdData(""); + form.resetFields(); + } else { + setConfirmLoading(true); + try { + await store.subcategory.create(data); + await getData(); + message.success("Success Add New Category"); + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Add Category"); + } + setConfirmLoading(false); + store.subcategory.visibleModalSubcategory = false; + setIdData(""); + form.resetFields(); } + }; + //console.log() + return ( +
+
{ + let pageNumber = page.current; + store.product.pageSize = page.pageSize; + store.product.page = pageNumber - 1; + // store.membership.isLoading = true; + getData(); + // store.membership.isLoading = false; + }} + /> - const columns = [ - { - title: "Sub Category Name", - dataIndex: "name", - key: "name", - }, - { - title: "Action", - key: "action", - render: (text, record) => ( - - - - ), - }, - ]; - - const handleCancel = () => { - setIdData('') - store.subcategory.visibleModalSubcategory = false; - } - - const handleSubmit = async (data) => { - console.log(data, "isi data2") - if (idData !== '') { - setConfirmLoading(true); - try { - await store.subcategory.update(idData, data) - message.success("Success Update Data Category") - } catch (e) { - message.error("Failed Update Data Category") - } - setConfirmLoading(false); - store.subcategory.visibleModalSubcategory = false; - setIdData(''); - form.resetFields(); - } else { - setConfirmLoading(true); - try { - await store.subcategory.create(data) - message.success("Success Add New Category") - } catch (e) { - console.log(e, "apa errornya") - message.error("Failed Add Category") - } - setConfirmLoading(false); - store.subcategory.visibleModalSubcategory = false; - setIdData(''); - form.resetFields(); - } - } - //console.log() - return ( -
-
{ - let pageNumber = page.current; - store.product.pageSize = page.pageSize; - store.product.page = pageNumber - 1; - // store.membership.isLoading = true; - await store.product.getData(); - // store.membership.isLoading = false; - }} - /> - - { - form.resetFields(); - handleCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form") - handleSubmit(values); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} + { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmit(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > + + {!idData && ( + - - - - - - - - - - - ); + + + )} + + + + {!idData && ( + + + + )} + + + + ); }); diff --git a/src/pages/Product/Category.js b/src/pages/Product/Category.js index 1186ee3..0a26060 100644 --- a/src/pages/Product/Category.js +++ b/src/pages/Product/Category.js @@ -65,18 +65,15 @@ export const Category = observer(() => { marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0, }} /> - - - - - - )) - + ); diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 3586974..7324cde 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -54,10 +54,10 @@ export const Product = observer(() => { - + */} { @@ -18,8 +17,7 @@ export const Subcategory = observer(() => { const init = async () => { try { setIsLoading(true); - //await store.category.getData(); - await store.subcategory.getData(); + // await getData(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -29,11 +27,10 @@ export const Subcategory = observer(() => { init(); }, []); - const handleChangeTabPane = async (key) => { - store.product.filterCategory = key; - console.log(key); + const getData = async () => { + await store.category.getData(); + await store.subcategory.getData(); }; - const routeData = [ { route: LINKS.HOME, @@ -51,10 +48,10 @@ export const Subcategory = observer(() => { - + */} { marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0, }} /> - - - - - - )) - + ); diff --git a/src/store/subcategory.js b/src/store/subcategory.js index 659e79e..64e4bae 100644 --- a/src/store/subcategory.js +++ b/src/store/subcategory.js @@ -26,21 +26,18 @@ export class Subcategory { async getData() { const response = await http.get(`/product/sub-categories?page=${this.page}&pageSize=${this.pageSize}`); - console.log(response) this.data = response.body.data ?? [] this.total_data = response.body.total_data ?? 0 } async getDataSubCategories() { const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); - console.log(response) this.dataSubCategories = response.body.data ?? [] this.total_dataSubCategories = response.body.count ?? 0 } async create(data) { const response = await http.post('/product/sub-categories').send(data); - console.log(response) await this.getData(); return response; } From cf3afb27c413b1290429af1521b09159a8f82f44 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 16 Dec 2021 21:36:42 +0700 Subject: [PATCH 067/324] feat: remodel product page --- src/component/ProductComponent.js | 120 +++++++++++++++++++++++++----- src/pages/Product/Product.js | 105 ++++++++++++-------------- src/store/category.js | 15 ---- src/store/product.js | 8 +- 4 files changed, 154 insertions(+), 94 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index ec308be..09aca03 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -1,5 +1,5 @@ -import React, {useEffect, useState} from "react"; -import {Button, Form, Input, message, Modal, Select, Space, Table, Tag} from "antd"; +import React, {useState} from "react"; +import {Button, Col, Form, Input, message, Modal, Row, Select, Space, Table, Tag, Typography} from "antd"; import {observer} from "mobx-react-lite"; import {ExclamationCircleOutlined} from "@ant-design/icons"; import {useHistory} from "react-router-dom"; @@ -7,6 +7,8 @@ import {capitalize} from "lodash"; import {useStore} from "../utils/useStore"; import {LINKS} from "../routes/app"; +const {Title, Text} = Typography; + export const ProductComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); @@ -15,21 +17,9 @@ export const ProductComponent = observer((props) => { const [idData, setIdData] = useState(''); const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); - - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - //store.product.pageCategories=StrToLower(props.category) - await store.product.getDataSubCategories(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); - }, []); + const [filterSupplier, setFilterSupplier] = useState(null); + const [filterCategories, setFilterCategories] = useState(null); + const [filterSubCategories, setFilterSubCategories] = useState(null); const handleEditButton = (data) => { console.log(data, "isi data") @@ -173,6 +163,42 @@ export const ProductComponent = observer((props) => { } } + const handleRemoveFilter = async () => { + store.product.filterSupplier = null; + store.product.filterCategory = null; + store.product.filterSubCategory = null; + setFilterSupplier(null); + setFilterCategories(null); + setFilterSubCategories(null); + await store.product.getData(); + store.product.visibleModalFilterProduct = false; + }; + + const handleCancelFilter = () => { + setFilterSupplier(null); + setFilterCategories(null); + setFilterSubCategories(null); + store.product.visibleModalFilterProduct = false; + }; + + const handleSubmitFilter = async () => { + store.product.filterSupplier = filterSupplier; + store.product.filterCategory = filterCategories; + store.product.filterSubCategory = filterSubCategories; + await store.product.getData(); + store.product.visibleModalFilterProduct = false; + }; + + const footerLayoutFilter = [ + , + , + + ] + return (
{ + + + + + Filter Supplier + + + + Filter Categories + + + + Filter Sub-Categories + + + + ); }); diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 7324cde..d5e4c40 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,33 +1,32 @@ -import React, { useEffect, useState } from "react"; -import { Button, Card, Col, Input, Row, Select, Tabs, Upload } from "antd"; -import { - FilterOutlined, - PlusSquareOutlined, - UploadOutlined, -} from "@ant-design/icons"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; -import { ProductComponent } from "../../component/ProductComponent"; -import { LINKS } from "../../routes/app"; +import React, {useEffect, useState} from "react"; +import {Button, Card, Col, Input, Row, Select, Tabs, Upload} from "antd"; +import {FilterOutlined, PlusSquareOutlined, UploadOutlined,} from "@ant-design/icons"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {ProductComponent} from "../../component/ProductComponent"; +import {LINKS} from "../../routes/app"; -const { TabPane } = Tabs; -const { Search } = Input; -const { Option } = Select; +const {TabPane} = Tabs; +const {Search} = Input; +const {Option} = Select; export const Product = observer(() => { const [isLoading, setIsLoading] = useState(false); - const [uploadProduct, setUpload] = useState(true); const store = useStore(); useEffect(() => { const init = async () => { try { setIsLoading(true); - await store.supplier.getData(); - await store.product.getDataCategories(); + await Promise.allSettled([ + store.supplier.getData(), + store.product.getDataCategories(), + store.product.getDataSubCategories(), + store.category.getData(), + store.category.getDataSubCategories(), + ]); await store.product.getData(); - //await store.supplier.data; setIsLoading(false); } catch (e) { setIsLoading(false); @@ -47,57 +46,45 @@ export const Product = observer(() => { name: Product, }, ]; - + return (
- +
- {/* */} - - - - - - - - - - - - +
+ + + + + - +
- + ); diff --git a/src/store/category.js b/src/store/category.js index 895de03..d84cce9 100644 --- a/src/store/category.js +++ b/src/store/category.js @@ -9,11 +9,6 @@ export class Category { filterCategory = null; visibleModalCategory = false; - pageCategories = 0; - pageSizeCategories = 10 - dataCategories = []; - total_dataCategories = 0; - pageSubCategories = 0; pageSizeSubCategories = 10 dataSubCategories = []; @@ -37,16 +32,6 @@ export class Category { this.total_dataSubCategories = response.body.count ?? 0 } - async getDataCategories() { - const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); - - this.dataCategories = response.body.data ?? [] - this.total_dataCategories = response.body.total_data ?? 0 - if (this.dataCategories.length > 0) { - this.filterCategory = this.dataCategories[0].id - } - } - async create(data) { const response = await http.post('/product/categories').send(data); await this.getData(); diff --git a/src/store/product.js b/src/store/product.js index e04edd1..39cc536 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -6,8 +6,12 @@ export class Product { pageSize = 10 data = []; total_data = 0; + filterSupplier = null; filterCategory = null; + filterSubCategory = null; visibleModalProduct = false; + visibleModalFilterProduct = false; + uploadBtnProduct = false; pageCategories = 0; pageSizeCategories = 10 @@ -25,8 +29,7 @@ export class Product { } async getData() { - const response = await http.get(`/product/by-categories?categories=${this.filterCategory}&page=${this.page}&pageSize=${this.pageSize}`); - + const response = await http.get(`/product/all?supplier=${this.filterSupplier}&categories=${this.filterCategory}&categories=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); this.data = response.body.data.map((item, idx) => { item.key = idx; return item @@ -46,7 +49,6 @@ export class Product { async getDataCategories() { const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); - this.dataCategories = response.body.data ?? [] this.total_dataCategories = response.body.total_data ?? 0 From ac13d366c854b2ccdc42425dafae153a72b9355a Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Thu, 16 Dec 2021 21:39:31 +0700 Subject: [PATCH 068/324] fix: membership create & update --- src/component/Subcategory.js | 5 +++++ src/pages/Membership/Membership.js | 1 - src/pages/Membership/MembershipModal.js | 22 ++++++++++++++++++---- src/store/category.js | 19 +++++++++++++++---- src/store/membership.js | 2 ++ src/store/subcategory.js | 13 +++++++++++-- 6 files changed, 51 insertions(+), 11 deletions(-) diff --git a/src/component/Subcategory.js b/src/component/Subcategory.js index fbb1f71..0da7987 100644 --- a/src/component/Subcategory.js +++ b/src/component/Subcategory.js @@ -68,6 +68,11 @@ export const SubcategoryComponent = observer((props) => { dataIndex: "name", key: "name", }, + { + title: "Category", + dataIndex: "categoryName", + key: "categoryName", + }, { title: "Action", key: "action", diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 93a5010..e1641dc 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -212,7 +212,6 @@ export const Membership = observer(() => { setInitialData({}); setConfirmLoading(true); try { - console.log(data); await store.membership.update(initialData.id, data); message.success( initialData.isChangePassword diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index bf8225d..df67074 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -35,7 +35,8 @@ export const MembershipModal = ({ .validateFields() .then((values) => { let input = values; - input.username = initialData.username; + if (initialData.id) + input.username = initialData.username; onCreate(input); form.resetFields(); @@ -51,7 +52,8 @@ export const MembershipModal = ({ name="form_in_modal" initialValues={initialData} > - {((initialData.id && !initialData.isChangePassword) || !initialData.id) && ( + {((initialData.id && !initialData.isChangePassword) || + !initialData.id) && ( )} - {((initialData.id && initialData.isChangePassword) || !initialData.id) && ( + {((initialData.id && initialData.isChangePassword) || + !initialData.id) && ( )} - {((initialData.id && !initialData.isChangePassword) || !initialData.id) && ( + {((initialData.id && !initialData.isChangePassword) || + !initialData.id) && ( + + + + )} + {((initialData.id && !initialData.isChangePassword) || + !initialData.id) && ( { + item.key = idx; + return item + }) ?? [] + this.total_data = response.body.total_data ?? 0 } async getDataSubCategories() { const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); - this.dataSubCategories = response.body.data ?? [] + this.dataSubCategories = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + this.total_dataSubCategories = response.body.count ?? 0 } async getDataCategories() { const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); - this.dataCategories = response.body.data ?? [] + this.dataCategories = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + this.total_dataCategories = response.body.total_data ?? 0 if (this.dataCategories.length > 0) { this.filterCategory = this.dataCategories[0].id diff --git a/src/store/membership.js b/src/store/membership.js index 989bbf2..ad56942 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -18,6 +18,7 @@ export class Membership { this.data = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; + item.phone_number = item?.user_detail?.phone_number; item.roleId = item?.roles.id; item.roleName = item?.roles.name; return item @@ -33,6 +34,7 @@ export class Membership { this.data = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; + item.phone_number = item?.user_detail?.phone_number; item.roleId = item?.roles.id; item.roleName = item?.roles?.name; return item diff --git a/src/store/subcategory.js b/src/store/subcategory.js index 64e4bae..282dc39 100644 --- a/src/store/subcategory.js +++ b/src/store/subcategory.js @@ -26,13 +26,22 @@ export class Subcategory { async getData() { const response = await http.get(`/product/sub-categories?page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data ?? [] + this.data = response.body.data.map((item, idx) => { + item.key = idx; + item.categoryName = item.category.name; + return item + }) ?? [] + this.total_data = response.body.total_data ?? 0 } async getDataSubCategories() { const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); - this.dataSubCategories = response.body.data ?? [] + this.dataSubCategories = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + this.total_dataSubCategories = response.body.count ?? 0 } From 5d5fa12fce816a91ecc1b24e25865a9edc3580a7 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 16 Dec 2021 21:40:20 +0700 Subject: [PATCH 069/324] feat: remodel product page --- src/store/product.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/store/product.js b/src/store/product.js index 39cc536..2c377a3 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -49,14 +49,7 @@ export class Product { async getDataCategories() { const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); - this.dataCategories = response.body.data ?? [] - this.total_dataCategories = response.body.total_data ?? 0 - - if (this.dataCategories.length > 0) { - this.filterCategory = this.dataCategories[0].id - } - - this.dataCategories = this.dataCategories.map((item, idx) => { + this.dataCategories = response.body.data.map((item, idx) => { item.key = idx; return item }) ?? [] From a62315641acf130c65bb9e080556b638fddcab9b Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 16 Dec 2021 22:40:21 +0700 Subject: [PATCH 070/324] feat: adding try catch --- src/store/authentication.js | 1 - src/store/category.js | 73 +++++++++++++++++++---------- src/store/commission.js | 38 +++++++++------ src/store/membership.js | 93 +++++++++++++++++++++---------------- src/store/partner.js | 58 +++++++++++++++-------- src/store/product.js | 78 ++++++++++++++++++++----------- src/store/role.js | 28 ++++++++--- src/store/subcategory.js | 52 ++++++++++++++------- src/store/supplier.js | 61 ++++++++++++++++-------- src/store/transaction.js | 91 +++++++++++++++++++++++++----------- src/store/user.js | 6 ++- 11 files changed, 385 insertions(+), 194 deletions(-) diff --git a/src/store/authentication.js b/src/store/authentication.js index eb541b0..9a98b01 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -56,7 +56,6 @@ export class Authentication { this.profileData = response.body; } catch (e) { console.error(e); - throw e; } } diff --git a/src/store/category.js b/src/store/category.js index 8176b46..facc4d2 100644 --- a/src/store/category.js +++ b/src/store/category.js @@ -20,55 +20,78 @@ export class Category { } async getData() { - const response = await http.get(`/product/categories?page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data.map((item, idx) => { + try { + const response = await http.get(`/product/categories?page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data .map((item, idx) => { item.key = idx; return item }) ?? [] - - this.total_data = response.body.total_data ?? 0 + this.total_data = response.body.total_data ?? 0 + } catch (e) { + console.log(e); + } } async getDataSubCategories() { - const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); - this.dataSubCategories = response.body.data.map((item, idx) => { + try { + const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + this.dataSubCategories = response.body.data.map((item, idx) => { item.key = idx; return item }) ?? [] - this.total_dataSubCategories = response.body.count ?? 0 + this.total_dataSubCategories = response.body.count ?? 0 + } catch (e) { + console.log(e); + } } async getDataCategories() { - const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); + try { + const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); - this.dataCategories = response.body.data.map((item, idx) => { - item.key = idx; - return item - }) ?? [] - - this.total_dataCategories = response.body.total_data ?? 0 - if (this.dataCategories.length > 0) { - this.filterCategory = this.dataCategories[0].id + this.dataCategories = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + + this.total_dataCategories = response.body.total_data ?? 0 + if (this.dataCategories.length > 0) { + this.filterCategory = this.dataCategories[0].id + } + } catch (e) { + console.error(e); } } async create(data) { - const response = await http.post('/product/categories').send(data); - await this.getData(); - return response; + try { + const response = await http.post('/product/categories').send(data); + await this.getData(); + return response; + } catch (e) { + console.log(e); + } } async update(id, data) { - const response = await http.put(`/product/categories/${id}`).send(data); - await this.getData(); - return response; + try { + const response = await http.put(`/product/categories/${id}`).send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async delete(id) { - const response = await http.del(`/product/${id}`); - await this.getData(); - return response; + try { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } } diff --git a/src/store/commission.js b/src/store/commission.js index 7fca342..a613c2f 100644 --- a/src/store/commission.js +++ b/src/store/commission.js @@ -25,25 +25,37 @@ export class Commission { } async getData() { - const response = await http.get(`/config/commission?page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data.map((item, idx) => { - item.key = idx; - return item - }) ?? [] - - this.total_data = response.body.total_data ?? 0 + try { + const response = await http.get(`/config/commission?page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + + this.total_data = response.body.total_data ?? 0 + } catch (e) { + console.error(e); + } } async update(id, data) { - const response = await http.put(`/config/commission/${id}`).send(data); - await this.getData(); - return response; + try { + const response = await http.put(`/config/commission/${id}`).send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async delete(id) { - const response = await http.del(`/product/${id}`); - await this.getData(); - return response; + try { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } } diff --git a/src/store/membership.js b/src/store/membership.js index ad56942..b68f75b 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -1,4 +1,4 @@ -import {action, makeAutoObservable} from "mobx"; +import {makeAutoObservable} from "mobx"; import {http} from "../utils/http"; export class Membership { @@ -13,60 +13,75 @@ export class Membership { } async getData() { - const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}`); - - this.data = response.body.data.map((item, idx) => { - item.key = idx; - item.name = item?.user_detail?.name; - item.phone_number = item?.user_detail?.phone_number; - item.roleId = item?.roles.id; - item.roleName = item?.roles.name; - return item - }) ?? [] + try { + const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}`); - console.log(JSON.stringify(this.data), "DATA"); - - this.total_data = response.body.total_data ?? 0 + this.data = response.body.data.map((item, idx) => { + item.key = idx; + item.name = item?.user_detail?.name; + item.phone_number = item?.user_detail?.phone_number;item.roleId = item?.roles.id; + item.roleName = item?.roles.name; + return item + }) ?? [] + + this.total_data = response.body.total_data ?? 0 + } catch (e) { + console.error(e); + } } async getDataBySuperior() { - const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data.map((item, idx) => { - item.key = idx; - item.name = item?.user_detail?.name; - item.phone_number = item?.user_detail?.phone_number; - item.roleId = item?.roles.id; - item.roleName = item?.roles?.name; - return item - }) ?? [] - - this.total_data = response.body.total_data ?? 0 + try { + const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data.map((item, idx) => { + item.key = idx; + item.name = item?.user_detail?.name; + item.phone_number = item?.user_detail?.phone_number;item.roleId = item?.roles.id; + item.roleName = item?.roles?.name; + return item + }) ?? [] + + this.total_data = response.body.total_data ?? 0 + } catch (e) { + console.error(e); + } } async create(data) { - return await http.post('/users').send(data) + try { + return await http.post('/users').send(data) + } catch (e) { + console.error(e); + } } async update(id, data) { - // console.log(data) - // console.log(id) - const response = await http.put('/users/' + id).send(data); - console.log(response, 'Data user') - console.log(JSON.stringify(response.body.data), 'Data') + try { + const response = await http.put('/users/' + id).send(data); + console.log(response, 'Data user') + console.log(JSON.stringify(response.body.data), 'Data') + } catch (e) { + console.error(e); + } } async delete(id) { - console.log(id) - return await http.del('/users/' + id); - + try { + return await http.del('/users/' + id); + } catch (e) { + console.error(e); + } + } async changeStatus(id, status) { - console.log(`/users/${id}/${status}`); - - const response = await http.get(`/users/${id}/${status}`); - await this.getData(); - return response; + try { + const response = await http.get(`/users/${id}/${status}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } } diff --git a/src/store/partner.js b/src/store/partner.js index 0e94a36..f804b6e 100644 --- a/src/store/partner.js +++ b/src/store/partner.js @@ -25,26 +25,38 @@ export class Partner { } async getData() { - const response = await http.get(`/users/partner?page=${this.page}&pageSize=${this.pageSize}`); - - this.data = response.body.data.map((item, idx) => { - item.key = idx; - return item - }) ?? [] + try { + const response = await http.get(`/users/partner?page=${this.page}&pageSize=${this.pageSize}`); - this.total_data = response.body.count ?? 0 + this.data = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + + this.total_data = response.body.count ?? 0 + } catch (e) { + console.error(e); + } } async create(data) { - const response = await http.post('/users/partner').send(data); - await this.getData(); - return response; + try { + const response = await http.post('/users/partner').send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async update(id, data) { - const response = await http.put(`/users/partner/${id}`).send(data); - await this.getData(); - return response; + try { + const response = await http.put(`/users/partner/${id}`).send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } // async updateStatus(id, data) { @@ -54,15 +66,23 @@ export class Partner { // } async delete(id) { - const response = await http.del(`/product/${id}`); - await this.getData(); - return response; + try { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async changeStatus(id, status) { - const response = await http.get(`/users/partner/${id}/${status}`); - await this.getData(); - return response; + try { + const response = await http.get(`/users/partner/${id}/${status}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } } diff --git a/src/store/product.js b/src/store/product.js index 2c377a3..690560c 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -29,48 +29,72 @@ export class Product { } async getData() { - const response = await http.get(`/product/all?supplier=${this.filterSupplier}&categories=${this.filterCategory}&categories=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data.map((item, idx) => { - item.key = idx; - return item - }) ?? [] - - this.total_data = response.body.total_data ?? 0 + try { + const response = await http.get(`/product/all?supplier=${this.filterSupplier}&categories=${this.filterCategory}&categories=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + + this.total_data = response.body.total_data ?? 0 + } catch (e) { + console.error(e); + } } async getDataSubCategories() { - const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); - this.dataSubCategories = response.body.data.map((item, idx) => { - item.key = idx; - return item - }) ?? [] - this.total_dataSubCategories = response.body.count ?? 0 + try { + const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + this.dataSubCategories = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + this.total_dataSubCategories = response.body.count ?? 0 + } catch (e) { + console.error(e); + } } async getDataCategories() { - const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); - this.dataCategories = response.body.data.map((item, idx) => { - item.key = idx; - return item - }) ?? [] + try { + const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); + this.dataCategories = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + } catch (e) { + console.error(e); + } } async create(data) { - const response = await http.post('/product').send(data); - await this.getData(); - return response; + try { + const response = await http.post('/product').send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async update(id, data) { - const response = await http.put(`/product/${id}`).send(data); - await this.getData(); - return response; + try { + const response = await http.put(`/product/${id}`).send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async delete(id) { - const response = await http.del(`/product/${id}`); - await this.getData(); - return response; + try { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } } diff --git a/src/store/role.js b/src/store/role.js index 4352187..51bd959 100644 --- a/src/store/role.js +++ b/src/store/role.js @@ -13,21 +13,37 @@ export class Role { } async getData() { - const response = await http.get(`/config/roles?page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data ?? [] - this.total_data = response.body.total_data ?? 0 + try { + const response = await http.get(`/config/roles?page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data ?? [] + this.total_data = response.body.total_data ?? 0 + } catch (e) { + console.error(e); + } } async create(data) { - return await http.post('/users').send(data) + try { + return await http.post('/users').send(data) + } catch (e) { + console.error(e); + } } async update(id, data) { - return await http.put('/users/' + id).send(data); + try { + return await http.put('/users/' + id).send(data); + } catch (e) { + console.error(e); + } } async delete(id) { - return await http.del('/users/' + id); + try { + return await http.del('/users/' + id); + } catch (e) { + console.error(e); + } } } diff --git a/src/store/subcategory.js b/src/store/subcategory.js index 282dc39..8268179 100644 --- a/src/store/subcategory.js +++ b/src/store/subcategory.js @@ -25,42 +25,62 @@ export class Subcategory { } async getData() { - const response = await http.get(`/product/sub-categories?page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data.map((item, idx) => { + try { + const response = await http.get(`/product/sub-categories?page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data.map((item, idx) => { item.key = idx; item.categoryName = item.category.name; return item }) ?? [] - this.total_data = response.body.total_data ?? 0 + this.total_data = response.body.total_data ?? 0 + } catch (e) { + console.error(e); + } } async getDataSubCategories() { - const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); - this.dataSubCategories = response.body.data.map((item, idx) => { + try { + const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + this.dataSubCategories = response.body.data.map((item, idx) => { item.key = idx; return item }) ?? [] - - this.total_dataSubCategories = response.body.count ?? 0 + + this.total_dataSubCategories = response.body.count ?? 0 + } catch (e) { + console.error(e); + } } async create(data) { - const response = await http.post('/product/sub-categories').send(data); - await this.getData(); - return response; + try { + const response = await http.post('/product/sub-categories').send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async update(id, data) { - const response = await http.put(`/product/sub-categories/${id}`).send(data); - await this.getData(); - return response; + try { + const response = await http.put(`/product/sub-categories/${id}`).send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async delete(id) { - const response = await http.del(`/product/${id}`); - await this.getData(); - return response; + try { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } } diff --git a/src/store/supplier.js b/src/store/supplier.js index a8a22d7..0684349 100644 --- a/src/store/supplier.js +++ b/src/store/supplier.js @@ -27,39 +27,62 @@ export class Supplier { } async getData() { - const response = await http.get(`/users/supplier?page=${this.page}&pageSize=${this.pageSize}`); - //console.log(response) - this.data = response.body.data ?? [] - this.total_data = response.body.count ?? 0 + try { + const response = await http.get(`/users/supplier?page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data ?? [] + this.total_data = response.body.count ?? 0 + } catch (e) { + console.error(e); + } } async create(data) { - const response = await http.post('/users/supplier').send(data); - await this.getData(); - return response; + try { + const response = await http.post('/users/supplier').send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async createTransaction(data) { - const response = await http.post('/transaction/add-saldo-supplier').send(data); - await this.getData(); - return response; + try { + const response = await http.post('/transaction/add-saldo-supplier').send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async update(id, data) { - const response = await http.put(`/users/supplier/${id}`).send(data); - await this.getData(); - return response; + try { + const response = await http.put(`/users/supplier/${id}`).send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async delete(id) { - const response = await http.del(`/product/${id}`); - await this.getData(); - return response; + try { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } catch (e) { + console.error(e) + } } async changeStatus(id, status) { - const response = await http.get(`/users/supplier/${id}/${status}`); - await this.getData(); - return response; + try { + const response = await http.get(`/users/supplier/${id}/${status}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } } diff --git a/src/store/transaction.js b/src/store/transaction.js index 916dc21..9372be4 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -30,61 +30,96 @@ export class Transaction { } async getData() { - const response = await http.get(`/product/by-categories?categories=${this.filterCategory}&page=${this.page}&pageSize=${this.pageSize}`); - - this.data = response.body.data ?? [] - this.total_data = response.body.total_data ?? 0 + try { + const response = await http.get(`/product/by-categories?categories=${this.filterCategory}&page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data ?? [] + this.total_data = response.body.total_data ?? 0 + } catch (e) { + console.error(e); + } } async getDataSubCategories() { - const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); - this.dataSubCategories = response.body.data ?? [] - this.total_dataSubCategories = response.body.count ?? 0 + try { + const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + this.dataSubCategories = response.body.data ?? [] + this.total_dataSubCategories = response.body.count ?? 0 + } catch (e) { + console.error(e); + } } async getDataCategories() { - const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); + try { + const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); - this.dataCategories = response.body.data ?? [] - this.total_dataCategories = response.body.total_data ?? 0 - if (this.dataCategories.length > 0) { - this.filterCategory = this.dataCategories[0].id + this.dataCategories = response.body.data ?? [] + this.total_dataCategories = response.body.total_data ?? 0 + if (this.dataCategories.length > 0) { + this.filterCategory = this.dataCategories[0].id + } + } catch (e) { + console.error(e); } } async getDataHistoryTransaction() { - const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}`); + try { + const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}`); - this.dataHistoryTransaction = response.body.data ?? [] - this.total_dataHistoryTransaction = response.body.total_data ?? 0 + this.dataHistoryTransaction = response.body.data ?? [] + this.total_dataHistoryTransaction = response.body.total_data ?? 0 + } catch (e) { + console.error(e); + } } async create(data) { - const response = await http.post('/product').send(data); - await this.getData(); - return response; + try { + const response = await http.post('/product').send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async update(id, data) { - const response = await http.put(`/product/${id}`).send(data); - await this.getData(); - return response; + try { + const response = await http.put(`/product/${id}`).send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async delete(id) { - const response = await http.del(`/product/${id}`); - await this.getData(); - return response; + try { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } } async distribute(data) { - const response = await http.post('/transaction/distribute').send(data); - return response; + try { + const response = await http.post('/transaction/distribute').send(data); + return response; + } catch (e) { + console.error(e); + } } async distributeAdmin(data) { - const response = await http.post('/transaction/distribute-admin').send(data); - return response; + try { + const response = await http.post('/transaction/distribute-admin').send(data); + return response; + } catch (e) { + console.error(e); + } } } diff --git a/src/store/user.js b/src/store/user.js index 9e08229..f341af4 100644 --- a/src/store/user.js +++ b/src/store/user.js @@ -11,7 +11,11 @@ export class User { @action async getData() { - this.data = (await http.get('/user')).body.data; + try { + this.data = (await http.get('/user')).body.data; + } catch (e) { + console.error(e); + } } } From c1513c9e78f9ebfb2e77a7f2c1aa24b8e0df6668 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 16 Dec 2021 22:40:38 +0700 Subject: [PATCH 071/324] feat: remodel product page --- src/store/user.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/store/user.js b/src/store/user.js index f341af4..8b17b9a 100644 --- a/src/store/user.js +++ b/src/store/user.js @@ -1,15 +1,14 @@ -import {action, makeAutoObservable, observable} from "mobx"; +import {makeAutoObservable} from "mobx"; import {http} from "../utils/http"; export class User { - @observable data = []; + data = []; constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); } - @action async getData() { try { this.data = (await http.get('/user')).body.data; From b8c407bf11808b52dfdc4c0b9c6063f20e922332 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 16 Dec 2021 23:22:50 +0700 Subject: [PATCH 072/324] feat: adjust flow to display transaction --- src/pages/Transaction/Product.js | 107 +++++++++++++++++++++++ src/pages/Transaction/Pulsa.js | 126 --------------------------- src/pages/Transaction/Transaction.js | 79 +++++++---------- src/store/transaction.js | 7 +- 4 files changed, 143 insertions(+), 176 deletions(-) create mode 100644 src/pages/Transaction/Product.js delete mode 100644 src/pages/Transaction/Pulsa.js diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js new file mode 100644 index 0000000..d451a31 --- /dev/null +++ b/src/pages/Transaction/Product.js @@ -0,0 +1,107 @@ +import React, {useEffect, useState} from "react"; +import {useStore} from "../../utils/useStore"; +import {Button, Card, Col, Input, Modal, Row, Select} from "antd"; +import {observer} from "mobx-react-lite"; + +const {Search} = Input; +const {Option} = Select; + +export const Product = observer(() => { + const store = useStore(); + + const [isLoading, setIsLoading] = useState(false); + const [productData, setProductData] = useState([]); + + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.transaction.getDataSubCategories(); + await store.transaction.getDataCategories(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + + init(); + }, []); + + // data + useEffect(() => { + console.log('âš¡ transaction data store', store.transaction.data) + setProductData(store.transaction.data) + }, [store.transaction.data]) + + // Subcategory + useEffect(() => { + console.log('âš¡ transaction subcategory store', store.transaction.dataSubCategories) + }, [store.transaction.dataSubCategories]) + + + const handleChangeSubcategory = async (item) => { + console.log('item', item); + store.transaction.filterSubCategory = item; + await store.transaction.getData(); + } + + const success = () => { + Modal.success({ + content: 'some messages...some messages...', + }); + } + + return ( +
+ + + Sub-Category + + + +
+ + + + + + Produk & Nominal + + + + + + {productData.length != 0 && + {productData.map((item, index) => ( + + + {item.name} +
+ {item.price} +
+ + ))} + } + {productData.length != 0 && + + } + + ); +}); diff --git a/src/pages/Transaction/Pulsa.js b/src/pages/Transaction/Pulsa.js deleted file mode 100644 index bb7195d..0000000 --- a/src/pages/Transaction/Pulsa.js +++ /dev/null @@ -1,126 +0,0 @@ -import React, { useEffect, useState } from "react"; -import { useStore } from "../../utils/useStore"; -import { Button, Card, Col, Dropdown, Menu, message, Modal, Row, Space, } from "antd"; -import { DownOutlined, TabletOutlined, UserOutlined } from "@ant-design/icons"; - -export const Pulsa = () => { - - const store = useStore(); - - const [isLoading, setIsLoading] = useState(false); - - const [productData, setProductData] = useState([]) - const [productFilter, setProductFilter] = useState("") - useEffect(() => { - if (!productFilter) { - console.log('âš¡ filter is null', productFilter) - setProductData(store.transaction.data) - } else { - console.log('âš¡ filter is not null', productFilter) - setProductData(store.transaction.data.filter(function (product) { - return product.sub_categories.name === productFilter - })) - } - }, [productFilter]) - - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - await store.transaction.getDataSubCategories(); - await store.transaction.getData(); - await store.transaction.getDataCategories(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); - setProductFilter("") - }, []); - - // data - useEffect(() => { - console.log('âš¡ transaction data store', store.transaction.data) - setProductData(store.transaction.data) - }, [store.transaction.data]) - - // Subcategory - useEffect(() => { - console.log('âš¡ transaction subcategory store', store.transaction.dataSubCategories) - }, [store.transaction.dataSubCategories]) - - - function handleMenuClick(item) { - message.info("âš¡ Click on menu item."); - console.log("âš¡ click", item); - setProductFilter(item.name) - } - - const menu = ( - - {store.transaction.dataSubCategories.map((item, index) => ( - } onClick={() => handleMenuClick(item)} > - {item.name} - - ))} - - - ); - - function success() { - Modal.success({ - content: 'some messages...some messages...', - }); - } - - return ( -
- - - Sub-Category - - - - - - - - - - - - Produk & Nominal - - - - {productData.map((item, index) => ( -
- - {item.name} -
- {item.price} -
- - ))} - - - - - - ); -}; diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js index 33cf846..37a229e 100644 --- a/src/pages/Transaction/Transaction.js +++ b/src/pages/Transaction/Transaction.js @@ -1,16 +1,14 @@ -import React, { useEffect, useState } from "react"; -import { useStore } from "../../utils/useStore"; -import { Button, Card, Col, Input, Row, Tabs } from "antd"; -import { FilterOutlined, } from "@ant-design/icons"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { Pulsa } from "./Pulsa"; -import { LINKS } from "../../routes/app"; +import React, {useEffect, useState} from "react"; +import {useStore} from "../../utils/useStore"; +import {Card, Tabs} from "antd"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {Product} from "./Product"; +import {LINKS} from "../../routes/app"; +import {observer} from "mobx-react-lite"; -const { TabPane } = Tabs; -const { Search } = Input; - -export const Transaction = () => { +const {TabPane} = Tabs; +export const Transaction = observer(() => { const store = useStore(); const [isLoading, setIsLoading] = useState(false); @@ -35,9 +33,10 @@ export const Transaction = () => { console.log('âš¡ transaction category store', store.transaction.dataCategories) }, [store.transaction.dataCategories]) - const callback = (key) => { - console.log(key); + const handleChangeTabs = async (key) => { + store.transaction.filterCategory = key; }; + const routeData = [ { route: LINKS.HOME, @@ -45,41 +44,27 @@ export const Transaction = () => { }, { route: LINKS.TRANSACTION, - name: Transaction, + name: Transaction, }, ]; - return ( -
- - - -
- - - - - - - - {store.transaction.dataCategories.map((item, index) => ( - - - - ))} - - - + return ( +
+ + + + {store.transaction.dataCategories.map((item, index) => ( + + + + ))} + + + +
); -}; +}); diff --git a/src/store/transaction.js b/src/store/transaction.js index 9372be4..b0570ac 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -6,7 +6,7 @@ export class Transaction { pageSize = 10 data = []; total_data = 0; - filterCategory = null; + filterSubCategory = null; visibleModalProduct = false; pageCategories = 0; @@ -18,6 +18,7 @@ export class Transaction { pageSizeSubCategories = 10 dataSubCategories = []; total_dataSubCategories = 0; + filterSubCategory = null; pageHistoryTransaction = 0; // pageSizeHistoryTransaction = 10 @@ -31,7 +32,7 @@ export class Transaction { async getData() { try { - const response = await http.get(`/product/by-categories?categories=${this.filterCategory}&page=${this.page}&pageSize=${this.pageSize}`); + const response = await http.get(`/product/by-categories-all?subCategories=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); this.data = response.body.data ?? [] this.total_data = response.body.total_data ?? 0 } catch (e) { @@ -41,7 +42,7 @@ export class Transaction { async getDataSubCategories() { try { - const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + const response = await http.get(`/product/sub-categories?categories=${this.filterCategory}&page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); this.dataSubCategories = response.body.data ?? [] this.total_dataSubCategories = response.body.count ?? 0 } catch (e) { From 72595b3779af664e1604ecad1aded704568b92a0 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 16 Dec 2021 23:29:00 +0700 Subject: [PATCH 073/324] feat: change query --- src/store/product.js | 6 +++--- src/store/transaction.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/store/product.js b/src/store/product.js index 690560c..175a46e 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -30,7 +30,7 @@ export class Product { async getData() { try { - const response = await http.get(`/product/all?supplier=${this.filterSupplier}&categories=${this.filterCategory}&categories=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); + const response = await http.get(`/product/all?supplier=${this.filterSupplier}&category=${this.filterCategory}&subCategory=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); this.data = response.body.data.map((item, idx) => { item.key = idx; return item @@ -44,7 +44,7 @@ export class Product { async getDataSubCategories() { try { - const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + const response = await http.get(`/product/subCategory?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); this.dataSubCategories = response.body.data.map((item, idx) => { item.key = idx; return item @@ -57,7 +57,7 @@ export class Product { async getDataCategories() { try { - const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); + const response = await http.get(`/product/category?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); this.dataCategories = response.body.data.map((item, idx) => { item.key = idx; return item diff --git a/src/store/transaction.js b/src/store/transaction.js index b0570ac..ab78d6d 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -32,7 +32,7 @@ export class Transaction { async getData() { try { - const response = await http.get(`/product/by-categories-all?subCategories=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); + const response = await http.get(`/product/by-categories-all?subCategory=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); this.data = response.body.data ?? [] this.total_data = response.body.total_data ?? 0 } catch (e) { @@ -42,7 +42,7 @@ export class Transaction { async getDataSubCategories() { try { - const response = await http.get(`/product/sub-categories?categories=${this.filterCategory}&page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + const response = await http.get(`/product/sub-categories?category=${this.filterCategory}&page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); this.dataSubCategories = response.body.data ?? [] this.total_dataSubCategories = response.body.count ?? 0 } catch (e) { From 20df9934a87ecffbe28bd7a4138a8a6848470807 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 16 Dec 2021 23:30:33 +0700 Subject: [PATCH 074/324] feat: wording --- src/pages/Transaction/Product.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index d451a31..10a3909 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -55,7 +55,7 @@ export const Product = observer(() => {
- Sub-Category + Sub Category From 5d765bc763aa796bde22e708872130ffce8c9b73 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 17 Dec 2021 00:02:00 +0700 Subject: [PATCH 075/324] feat: change query case --- src/store/product.js | 2 +- src/store/transaction.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/store/product.js b/src/store/product.js index 175a46e..2b46acd 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -44,7 +44,7 @@ export class Product { async getDataSubCategories() { try { - const response = await http.get(`/product/subCategory?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + const response = await http.get(`/product/sub-category?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); this.dataSubCategories = response.body.data.map((item, idx) => { item.key = idx; return item diff --git a/src/store/transaction.js b/src/store/transaction.js index ab78d6d..2053402 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -32,7 +32,7 @@ export class Transaction { async getData() { try { - const response = await http.get(`/product/by-categories-all?subCategory=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); + const response = await http.get(`/product/by-categories-all?sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); this.data = response.body.data ?? [] this.total_data = response.body.total_data ?? 0 } catch (e) { From 319948376a2da938b2a527caa30413945022e36d Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 17 Dec 2021 00:07:58 +0700 Subject: [PATCH 076/324] feat: get data subcategories --- src/pages/Transaction/Transaction.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js index 37a229e..1b0d0ec 100644 --- a/src/pages/Transaction/Transaction.js +++ b/src/pages/Transaction/Transaction.js @@ -35,6 +35,7 @@ export const Transaction = observer(() => { const handleChangeTabs = async (key) => { store.transaction.filterCategory = key; + await store.transaction.getDataSubCategories(); }; const routeData = [ From 29f97f751af0b5199662d753c35d67f26924e4fc Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 17 Dec 2021 01:43:42 +0700 Subject: [PATCH 077/324] feat: add buy product --- src/component/BuyProductModal.js | 66 ++++++++++++++++++++++++++++++++ src/pages/Transaction/Product.js | 20 ++++++---- src/store/transaction.js | 10 +++++ 3 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 src/component/BuyProductModal.js diff --git a/src/component/BuyProductModal.js b/src/component/BuyProductModal.js new file mode 100644 index 0000000..086bb97 --- /dev/null +++ b/src/component/BuyProductModal.js @@ -0,0 +1,66 @@ +import React from "react"; +import {Form, Input, message, Modal} from "antd"; +import {observer} from "mobx-react-lite"; +import {useStore} from "../utils/useStore"; + +export const BuyProductModal = observer(({initialData}) => { + const store = useStore(); + const [form] = Form.useForm(); + + const handleCancelBuyProduct = () => { + form.resetFields(); + store.transaction.visibleModalTransaction = false; + }; + + const handleSubmitBuyProduct = async (data) => { + try { + const response = await store.transaction.buyProduct({productCode: data}); + if (response.status === 200) { + message.success("Success Buy Product"); + } else { + message.error("Failed Buy Product"); + } + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Buy Product"); + } + store.transaction.visibleModalTransaction = false; + form.resetFields(); + }; + + return ( +
+ { + form + .validateFields() + .then((values) => { + handleSubmitBuyProduct(values); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + +
+
+ ); +}); diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 10a3909..22ab026 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -1,7 +1,8 @@ import React, {useEffect, useState} from "react"; import {useStore} from "../../utils/useStore"; -import {Button, Card, Col, Input, Modal, Row, Select} from "antd"; +import {Button, Card, Col, Input, Row, Select} from "antd"; import {observer} from "mobx-react-lite"; +import {BuyProductModal} from "../../component/BuyProductModal"; const {Search} = Input; const {Option} = Select; @@ -11,6 +12,7 @@ export const Product = observer(() => { const [isLoading, setIsLoading] = useState(false); const [productData, setProductData] = useState([]); + const [data, setData] = useState({}); useEffect(() => { const init = async () => { @@ -45,10 +47,9 @@ export const Product = observer(() => { await store.transaction.getData(); } - const success = () => { - Modal.success({ - content: 'some messages...some messages...', - }); + const handleBuyProduct = (data) => { + setData(data); + store.transaction.visibleModalTransaction = true; } return ( @@ -61,10 +62,12 @@ export const Product = observer(() => {
{ + onChange={async (val) => { setFilterCategories(val); + store.product.filterByCategory = val; + await store.product.getDataSubCategories(); }} style={{marginBottom: "20px", width: "100%"}} > @@ -353,7 +339,7 @@ export const ProductComponent = observer((props) => { }} style={{marginBottom: "20px", width: "100%"}} > - {store.category.dataSubCategories.map((item) => ( + {store.product.dataSubCategories.map((item) => ( diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index d5e4c40..cd2660e 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -22,9 +22,7 @@ export const Product = observer(() => { await Promise.allSettled([ store.supplier.getData(), store.product.getDataCategories(), - store.product.getDataSubCategories(), store.category.getData(), - store.category.getDataSubCategories(), ]); await store.product.getData(); setIsLoading(false); diff --git a/src/store/product.js b/src/store/product.js index a06dc02..f1d0747 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -22,6 +22,7 @@ export class Product { pageSizeSubCategories = 10 dataSubCategories = []; total_dataSubCategories = 0; + filterByCategory = null; constructor(ctx) { this.ctx = ctx; @@ -44,7 +45,7 @@ export class Product { async getDataSubCategories() { try { - const response = await http.get(`/product/sub-categories?page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + const response = await http.get(`/product/sub-categories?category=${this.filterByCategory}&page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); this.dataSubCategories = response.body.data.map((item, idx) => { item.key = idx; return item From 4f82f9d97881749bb81cdd0886629b469ebbfe14 Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Fri, 17 Dec 2021 06:01:12 +0700 Subject: [PATCH 082/324] fix: add membership owner --- src/component/PartnerComponent.js | 15 +- src/component/SupplierComponent.js | 71 +++++----- src/pages/Membership/Membership.js | 3 +- src/pages/Transaction/Product.js | 220 ++++++++++++++++------------- src/store/ui.js | 2 +- 5 files changed, 173 insertions(+), 138 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index d660997..66f0329 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -257,6 +257,19 @@ export const PartnerComponent = observer((props) => { )} + {!idData && ( + + + + )} {((idData && isChangePassword) || !idData) && ( { { const store = useStore(); @@ -65,6 +65,11 @@ export const SupplierComponent = observer((props) => { dataIndex: ["coa", "amount"], key: ["coa", "amount"], width: "20%", + render: (text, record) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { title: "Status", @@ -72,12 +77,12 @@ export const SupplierComponent = observer((props) => { key: "status", width: "5%", render: (text, record) => ( - - {record?.status === true ? " ACTIVE" : "INACTIVE"} - + + {record?.status === true ? " ACTIVE" : "INACTIVE"} + ), }, { @@ -85,15 +90,15 @@ export const SupplierComponent = observer((props) => { key: "action", width: "20%", render: (text, record) => ( - - - - + + + + ), }, @@ -212,18 +217,18 @@ export const SupplierComponent = observer((props) => { > - {!idData && - - - - } + {!idData && ( + + + + )} - + ); }); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index e1641dc..1e031b9 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -209,7 +209,6 @@ export const Membership = observer(() => { data.superior = true; if (initialData.id) { - setInitialData({}); setConfirmLoading(true); try { await store.membership.update(initialData.id, data); @@ -229,7 +228,6 @@ export const Membership = observer(() => { setConfirmLoading(false); setVisibleModal(false); } else { - setInitialData({}); setConfirmLoading(true); try { await store.membership.create(data); @@ -241,6 +239,7 @@ export const Membership = observer(() => { } setConfirmLoading(false); setVisibleModal(false); + setInitialData({}); } }; diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 5634d7d..fab2125 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -1,111 +1,129 @@ -import React, {useEffect, useState} from "react"; -import {useStore} from "../../utils/useStore"; -import {Button, Card, Col, Input, Row, Select} from "antd"; -import {observer} from "mobx-react-lite"; -import {BuyProductModal} from "../../component/BuyProductModal"; +import React, { useEffect, useState } from "react"; +import { useStore } from "../../utils/useStore"; +import { Button, Card, Col, Input, Row, Select } from "antd"; +import { observer } from "mobx-react-lite"; +import { BuyProductModal } from "../../component/BuyProductModal"; -const {Search} = Input; -const {Option} = Select; +const { Search } = Input; +const { Option } = Select; export const Product = observer(() => { - const store = useStore(); + const store = useStore(); - const [isLoading, setIsLoading] = useState(false); - const [productData, setProductData] = useState([]); - const [data, setData] = useState({}); + const [isLoading, setIsLoading] = useState(false); + const [productData, setProductData] = useState([]); + const [data, setData] = useState({}); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - await store.transaction.getDataSubCategories(); - await store.transaction.getDataCategories(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.transaction.getDataSubCategories(); + await store.transaction.getDataCategories(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; - init(); - }, []); + init(); + }, []); - // data - useEffect(() => { - console.log('âš¡ transaction data store', store.transaction.data) - setProductData(store.transaction.data) - }, [store.transaction.data]) + // data + useEffect(() => { + console.log("âš¡ transaction data store", store.transaction.data); + setProductData(store.transaction.data); + }, [store.transaction.data]); - // Subcategory - useEffect(() => { - console.log('âš¡ transaction subcategory store', store.transaction.dataSubCategories) - }, [store.transaction.dataSubCategories]) - - - const handleChangeSubcategory = async (item) => { - console.log('item', item); - store.transaction.filterSubCategory = item; - await store.transaction.getData(); - } - - const handleBuyProduct = (data) => { - setData(data); - store.transaction.visibleModalTransaction = true; - } - - return ( -
- - - Sub Category - - - -
- - - - - - Produk & Nominal - - - - - - {productData.length != 0 && - {productData.map((item, index) => ( - - handleBuyProduct(item)} style={{cursor: "pointer"}}> - {item.name} -
- {item?.currentPrice?.mark_up_price} -
- - ))} - } - {productData.length != 0 && - - } - - + // Subcategory + useEffect(() => { + console.log( + "âš¡ transaction subcategory store", + store.transaction.dataSubCategories ); + }, [store.transaction.dataSubCategories]); + + const handleChangeSubcategory = async (item) => { + console.log("item", item); + store.transaction.filterSubCategory = item; + await store.transaction.getData(); + }; + + const handleBuyProduct = (data) => { + setData(data); + store.transaction.visibleModalTransaction = true; + }; + + return ( +
+ + + Sub Category + + + +
+ + + + + + Produk & Nominal + + + + + + {productData.length != 0 && ( + + {productData.map((item, index) => ( + + handleBuyProduct(item)} + style={{ cursor: "pointer" }} + > + {item.name} +
+ + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(item?.currentPrice?.mark_up_price)} + +
+ + ))} + + )} + {productData.length !== 0 && ( + + + + )} + + + ); }); diff --git a/src/store/ui.js b/src/store/ui.js index 5bf55b1..f5e9710 100644 --- a/src/store/ui.js +++ b/src/store/ui.js @@ -13,7 +13,7 @@ export class UI { } setTestValue() { - this.testValue = "yo dayo"; + this.testValue = "yoshahhh #!"; } setMediaQuery(data) { From 8c9a3b05de9b74d57795de99143f58e3d9ea425d Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Fri, 17 Dec 2021 06:06:52 +0700 Subject: [PATCH 083/324] fix: category store mapping --- src/store/category.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/category.js b/src/store/category.js index facc4d2..3804881 100644 --- a/src/store/category.js +++ b/src/store/category.js @@ -22,7 +22,7 @@ export class Category { async getData() { try { const response = await http.get(`/product/categories?page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data .map((item, idx) => { + this.data = response.body.data.map((item, idx) => { item.key = idx; return item }) ?? [] From b1317d141c11daeccf423385d7a2a64cba6b8c9f Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Fri, 17 Dec 2021 13:30:35 +0700 Subject: [PATCH 084/324] feat: add number format --- src/component/PartnerComponent.js | 14 +++++- src/component/SupplierComponent.js | 10 ++-- src/pages/Membership/Membership.js | 7 +-- src/store/role.js | 78 +++++++++++++++--------------- 4 files changed, 63 insertions(+), 46 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 66f0329..b200a82 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -286,7 +286,19 @@ export const PartnerComponent = observer((props) => { )} - +{!idData && ( + + + + )} {!isChangePassword && ( <> { key: ["coa", "amount"], width: "20%", render: (text, record) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text), + text + ? new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text) + : "-", }, { title: "Status", diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 1e031b9..2ab68be 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -43,10 +43,11 @@ export const Membership = observer(() => { const init = async () => { try { setIsLoading(true); + const isAdmin = store.authentication.userData.role === "Admin"; + await getData(); - store.role.getData(); - if (store.authentication.userData.role === "Admin") - await store.supplier.getData(); + await store.role.getData(isAdmin); + if (isAdmin) await store.supplier.getData(); setIsLoading(false); } catch (e) { setIsLoading(false); diff --git a/src/store/role.js b/src/store/role.js index 51bd959..28b027d 100644 --- a/src/store/role.js +++ b/src/store/role.js @@ -1,50 +1,52 @@ -import {makeAutoObservable} from "mobx"; -import {http} from "../utils/http"; +import { makeAutoObservable } from "mobx"; +import { http } from "../utils/http"; export class Role { - page = null; - pageSize = null; - data = []; - total_data = 0 + page = null; + pageSize = null; + data = []; + total_data = 0; - constructor(ctx) { - this.ctx = ctx; - makeAutoObservable(this); - } + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } - async getData() { - try { - const response = await http.get(`/config/roles?page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data ?? [] - this.total_data = response.body.total_data ?? 0 - } catch (e) { - console.error(e); - } + async getData(isForMembership = false) { + try { + const response = await http.get( + `/config/roles${isForMembership ? "/for-membership" : ""}?page=${ + this.page + }&pageSize=${this.pageSize}` + ); + this.data = response.body.data ?? []; + this.total_data = response.body.total_data ?? 0; + } catch (e) { + console.error(e); } + } - async create(data) { - try { - return await http.post('/users').send(data) - } catch (e) { - console.error(e); - } + async create(data) { + try { + return await http.post("/users").send(data); + } catch (e) { + console.error(e); } + } - async update(id, data) { - try { - return await http.put('/users/' + id).send(data); - } catch (e) { - console.error(e); - } + async update(id, data) { + try { + return await http.put("/users/" + id).send(data); + } catch (e) { + console.error(e); } + } - async delete(id) { - try { - return await http.del('/users/' + id); - } catch (e) { - console.error(e); - } + async delete(id) { + try { + return await http.del("/users/" + id); + } catch (e) { + console.error(e); } + } } - - From af05055b9e898865d1521104534195ae59d77594 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Fri, 17 Dec 2021 14:22:05 +0700 Subject: [PATCH 085/324] membership --- src/pages/Membership/Membership.js | 6 ++++-- src/pages/Transaction/Product.js | 26 +++++++++++++++++++------- src/store/product.js | 10 ++++++++++ 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 1e031b9..4032e17 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -39,6 +39,7 @@ export const Membership = observer(() => { const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); + useEffect(() => { const init = async () => { try { @@ -146,7 +147,8 @@ export const Membership = observer(() => { handleBuyProduct(item)} - style={{ cursor: "pointer" }} + onClick={() => handleBuy(item)} + style={{ cursor: "pointer",backgroundColor:"#2D9CDB" }} > {item.name}
@@ -118,7 +128,9 @@ export const Product = observer(() => { )} {productData.length !== 0 && (
- diff --git a/src/store/product.js b/src/store/product.js index f1d0747..694f715 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -78,6 +78,16 @@ export class Product { } } + async buyProduct(data) { + try { + const response = await http.post('/transaction/order').send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } + } + async update(id, data) { try { const response = await http.put(`/product/${id}`).send(data); From 4a46c86b305f69d596045727408fc0011e80b580 Mon Sep 17 00:00:00 2001 From: ajat91 Date: Fri, 17 Dec 2021 14:31:53 +0700 Subject: [PATCH 086/324] Pages Membership --- src/pages/Membership/Membership.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index f20b102..34b29eb 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -89,6 +89,12 @@ export const Membership = observer(() => { setConfirmLoading(true); try { data.destination = destination; + if(data.amount) { + data = { + ...data, + amount: Number(data.amount) + } + } (await store.authentication.userData.role) === "Admin" ? store.transaction.distributeAdmin(data) From 72a747e66ea7c22c040571def7fca7b98177cebc Mon Sep 17 00:00:00 2001 From: ajat91 Date: Fri, 17 Dec 2021 15:56:51 +0700 Subject: [PATCH 087/324] Pages Membership --- src/pages/App/DesktopLayout.js | 44 +++++++++++++++++------------- src/pages/App/MenuList.js | 42 ++++++++++++++++------------ src/pages/Membership/Membership.js | 12 ++++---- src/pages/Transaction/Product.js | 30 ++++++++++++-------- src/store/membership.js | 3 +- tes.http | 17 ++++++++++++ 6 files changed, 92 insertions(+), 56 deletions(-) create mode 100644 tes.http diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 4316984..6172ca9 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -124,7 +124,7 @@ export const DesktopLayout = observer(() => { {store.authentication.userData.role !== "Retail" && ( - + Membership @@ -168,18 +168,22 @@ export const DesktopLayout = observer(() => { Product - - - - Category - - - - - - Sub Category - - + {store.authentication.userData.role === "Admin" && ( + + + + Category + + + )} + {store.authentication.userData.role === "Admin" && ( + + + + Sub Category + + + )} )} {store.authentication.userData.role !== "Admin" && ( @@ -204,12 +208,14 @@ export const DesktopLayout = observer(() => { Payback - - - - Profile - - + {store.authentication.userData.role !== "Admin" && ( + + + + Profile + + + )} diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index f7796cd..9253e0c 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -90,18 +90,22 @@ export const MenuList = observer((props) => { Product - - - - Category - - - - - - Sub Category - - + {store.authentication.userData.role === "Admin" && ( + + + + Category + + + )} + {store.authentication.userData.role === "Admin" && ( + + + + Sub Category + + + )} )} {store.authentication.userData.role !== "Admin" && ( @@ -126,12 +130,14 @@ export const MenuList = observer((props) => { Payback - - - - Profile - - + {store.authentication.userData.role !== "Admin" && ( + + + + Profile + + + )} {/**/} {/* */} {/* */} diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 34b29eb..25fe9cb 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -39,7 +39,6 @@ export const Membership = observer(() => { const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); - useEffect(() => { const init = async () => { try { @@ -89,11 +88,11 @@ export const Membership = observer(() => { setConfirmLoading(true); try { data.destination = destination; - if(data.amount) { + if (data.amount) { data = { ...data, - amount: Number(data.amount) - } + amount: Number(data.amount), + }; } (await store.authentication.userData.role) === "Admin" @@ -155,7 +154,7 @@ export const Membership = observer(() => { handleBuy(item)} - style={{ cursor: "pointer",backgroundColor:"#2D9CDB" }} + onClick={() => { + setKode(item.code); + setCardIndex(index); + }} + hoverable + style={{ + cursor: "pointer", + borderColor: cardIndex === index ? "#2D9CDB" : "", + marginLeft: "10px", + }} > {item.name}
@@ -128,8 +133,9 @@ export const Product = observer(() => { )} {productData.length !== 0 && (
- diff --git a/src/store/membership.js b/src/store/membership.js index b68f75b..574f504 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -15,7 +15,7 @@ export class Membership { async getData() { try { const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}`); - + console.log(response,"admin") this.data = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; @@ -33,6 +33,7 @@ export class Membership { async getDataBySuperior() { try { const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); + console.log(response,"non admin") this.data = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; diff --git a/tes.http b/tes.http new file mode 100644 index 0000000..5c8644d --- /dev/null +++ b/tes.http @@ -0,0 +1,17 @@ +POST https://ppob-backend.k3s.bangun-kreatif.com/v1/auth/login HTTP/1.1 +content-type: application/json + +{ + "username": "admin", + "password": 123 +} + +### + +POST https://ppob-backend.k3s.bangun-kreatif.com/v1/auth/login HTTP/1.1 +content-type: application/json + +{ + "username": "admin", + "password": 123 +} \ No newline at end of file From 2bd704a57a2fbdb2dfd0e2b27cf8b8523c7eeec8 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 17 Dec 2021 16:22:49 +0700 Subject: [PATCH 088/324] Pages Membership --- src/store/membership.js | 2 -- src/store/product.js | 2 +- tes.http | 17 ----------------- 3 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 tes.http diff --git a/src/store/membership.js b/src/store/membership.js index 574f504..80046dd 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -15,7 +15,6 @@ export class Membership { async getData() { try { const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}`); - console.log(response,"admin") this.data = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; @@ -33,7 +32,6 @@ export class Membership { async getDataBySuperior() { try { const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); - console.log(response,"non admin") this.data = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; diff --git a/src/store/product.js b/src/store/product.js index 694f715..9422e8d 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -74,7 +74,7 @@ export class Product { await this.getData(); return response; } catch (e) { - console.error(e); + console.error(e) } } diff --git a/tes.http b/tes.http deleted file mode 100644 index 5c8644d..0000000 --- a/tes.http +++ /dev/null @@ -1,17 +0,0 @@ -POST https://ppob-backend.k3s.bangun-kreatif.com/v1/auth/login HTTP/1.1 -content-type: application/json - -{ - "username": "admin", - "password": 123 -} - -### - -POST https://ppob-backend.k3s.bangun-kreatif.com/v1/auth/login HTTP/1.1 -content-type: application/json - -{ - "username": "admin", - "password": 123 -} \ No newline at end of file From 177421717ebc99c2c75f0f5b71024ddbad5065b1 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 17 Dec 2021 16:45:32 +0700 Subject: [PATCH 089/324] Membership Pages --- src/pages/Membership/Membership.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 25fe9cb..ecc7eb9 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -415,7 +415,6 @@ export const Membership = observer(() => { }} >
- {store.authentication.userData.role === "Admin" && ( { ))} - )} Date: Fri, 17 Dec 2021 17:07:13 +0700 Subject: [PATCH 090/324] delete menu product for retail --- src/pages/App/MenuList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 9253e0c..9c06ffc 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -108,7 +108,7 @@ export const MenuList = observer((props) => { )} )} - {store.authentication.userData.role !== "Admin" && ( + {store.authentication.userData.role === "Supervisor" && ( From 9490fd23b2fdd28ae55b35d804e8c9f7de6029d6 Mon Sep 17 00:00:00 2001 From: rarsyansyahr Date: Fri, 17 Dec 2021 06:01:12 +0700 Subject: [PATCH 091/324] fix: revert buy product using modal --- src/component/SupplierComponent.js | 26 ++++++------- src/pages/Transaction/Product.js | 62 +++++++++++------------------- 2 files changed, 34 insertions(+), 54 deletions(-) diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index fb27652..b28fdf3 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -1,11 +1,11 @@ -import React, { useState } from "react"; -import { Button, Form, Input, message, Modal, Space, Table, Tag } from "antd"; -import { observer } from "mobx-react-lite"; -import { ExclamationCircleOutlined } from "@ant-design/icons"; -import { useHistory } from "react-router-dom"; -import { useStore } from "../utils/useStore"; -import { LINKS } from "../routes/app"; -import { TopupsaldoModal } from "./TopupsaldoModal"; +import React, {useState} from "react"; +import {Button, Form, Input, message, Modal, Space, Table, Tag} from "antd"; +import {observer} from "mobx-react-lite"; +import {ExclamationCircleOutlined} from "@ant-design/icons"; +import {useHistory} from "react-router-dom"; +import {useStore} from "../utils/useStore"; +import {LINKS} from "../routes/app"; +import {TopupsaldoModal} from "./TopupsaldoModal"; export const SupplierComponent = observer((props) => { const store = useStore(); @@ -66,12 +66,10 @@ export const SupplierComponent = observer((props) => { key: ["coa", "amount"], width: "20%", render: (text, record) => - text - ? new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text) - : "-", + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { title: "Status", diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 39fe5ad..e6ddb4b 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -1,11 +1,11 @@ -import React, { useEffect, useState } from "react"; -import { useStore } from "../../utils/useStore"; -import { Button, Card, Col, Input, Row, Select, message } from "antd"; -import { observer } from "mobx-react-lite"; -import { BuyProductModal } from "../../component/BuyProductModal"; +import React, {useEffect, useState} from "react"; +import {useStore} from "../../utils/useStore"; +import {Button, Card, Col, Input, Row, Select} from "antd"; +import {observer} from "mobx-react-lite"; +import {BuyProductModal} from "../../component/BuyProductModal"; -const { Search } = Input; -const { Option } = Select; +const {Search} = Input; +const {Option} = Select; export const Product = observer(() => { const store = useStore(); @@ -13,8 +13,6 @@ export const Product = observer(() => { const [isLoading, setIsLoading] = useState(false); const [productData, setProductData] = useState([]); const [data, setData] = useState({}); - const [kode, setKode] = useState({}); - const [cardIndex, setCardIndex] = useState({}); useEffect(() => { const init = async () => { @@ -41,7 +39,7 @@ export const Product = observer(() => { useEffect(() => { console.log( "âš¡ transaction subcategory store", - store.transaction.dataSubCategories + store.transaction.dataSubCategories ); }, [store.transaction.dataSubCategories]); @@ -51,24 +49,19 @@ export const Product = observer(() => { await store.transaction.getData(); }; - const handleBuyProduct = async (kode) => { - console.log(kode); - try { - await store.product.buyProduct({ productCode: kode }); - message.success("Success Buy Product"); - } catch (e) { - message.error("Failed Buy Product"); - } + const handleBuyProduct = (data) => { + setData(data); + store.transaction.visibleModalTransaction = true; }; return ( -
- - +
+ + Sub Category - - + +
{ {productData.map((item, index) => ( handleBuyProduct(item)} - style={{cursor: "pointer"}} + onClick={() => { + setKode(item.code); + setCardIndex(index); + }} + hoverable + style={{ + cursor: "pointer", + borderColor: cardIndex === index ? "#2D9CDB" : "", + marginLeft: "10px", + }} > - {item.name} -
- + {item.name} +
+ {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", @@ -118,7 +133,10 @@ export const Product = observer(() => { )} {productData.length !== 0 && (
- From c73f642b93f8443d713b09bec7843f8326020ffa Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 17 Dec 2021 17:50:02 +0700 Subject: [PATCH 093/324] feat: adjust buy product on click --- src/component/BuyProductModal.js | 66 --------- src/config/app.js | 1 + src/pages/Transaction/Product.js | 224 +++++++++++++++---------------- 3 files changed, 113 insertions(+), 178 deletions(-) delete mode 100644 src/component/BuyProductModal.js diff --git a/src/component/BuyProductModal.js b/src/component/BuyProductModal.js deleted file mode 100644 index 086bb97..0000000 --- a/src/component/BuyProductModal.js +++ /dev/null @@ -1,66 +0,0 @@ -import React from "react"; -import {Form, Input, message, Modal} from "antd"; -import {observer} from "mobx-react-lite"; -import {useStore} from "../utils/useStore"; - -export const BuyProductModal = observer(({initialData}) => { - const store = useStore(); - const [form] = Form.useForm(); - - const handleCancelBuyProduct = () => { - form.resetFields(); - store.transaction.visibleModalTransaction = false; - }; - - const handleSubmitBuyProduct = async (data) => { - try { - const response = await store.transaction.buyProduct({productCode: data}); - if (response.status === 200) { - message.success("Success Buy Product"); - } else { - message.error("Failed Buy Product"); - } - } catch (e) { - console.log(e, "apa errornya"); - message.error("Failed Buy Product"); - } - store.transaction.visibleModalTransaction = false; - form.resetFields(); - }; - - return ( -
- { - form - .validateFields() - .then((values) => { - handleSubmitBuyProduct(values); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} - > - - - - - - -
- ); -}); diff --git a/src/config/app.js b/src/config/app.js index e4b7ca0..ffdd851 100644 --- a/src/config/app.js +++ b/src/config/app.js @@ -1,5 +1,6 @@ export const appConfig = { apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' + // apiUrl: 'http://localhost:3222/v1' }; //export default appConfig; diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 39fe5ad..7e7884d 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -1,147 +1,147 @@ -import React, { useEffect, useState } from "react"; -import { useStore } from "../../utils/useStore"; -import { Button, Card, Col, Input, Row, Select, message } from "antd"; -import { observer } from "mobx-react-lite"; -import { BuyProductModal } from "../../component/BuyProductModal"; +import React, {useEffect, useState} from "react"; +import {useStore} from "../../utils/useStore"; +import {Button, Card, Col, Input, message, Modal, Row, Select} from "antd"; +import {observer} from "mobx-react-lite"; +import {MoneyCollectOutlined} from "@ant-design/icons"; -const { Search } = Input; -const { Option } = Select; +const {Search} = Input; +const {Option} = Select; export const Product = observer(() => { const store = useStore(); const [isLoading, setIsLoading] = useState(false); const [productData, setProductData] = useState([]); - const [data, setData] = useState({}); - const [kode, setKode] = useState({}); - const [cardIndex, setCardIndex] = useState({}); useEffect(() => { const init = async () => { try { - setIsLoading(true); - await store.transaction.getDataSubCategories(); - await store.transaction.getDataCategories(); - setIsLoading(false); + setIsLoading(true); + await store.transaction.getDataSubCategories(); + await store.transaction.getDataCategories(); + setIsLoading(false); } catch (e) { - setIsLoading(false); + setIsLoading(false); } }; - init(); + init(); }, []); - // data - useEffect(() => { - console.log("âš¡ transaction data store", store.transaction.data); - setProductData(store.transaction.data); - }, [store.transaction.data]); + // data + useEffect(() => { + console.log("âš¡ transaction data store", store.transaction.data); + setProductData(store.transaction.data); + }, [store.transaction.data]); - // Subcategory - useEffect(() => { - console.log( - "âš¡ transaction subcategory store", - store.transaction.dataSubCategories - ); - }, [store.transaction.dataSubCategories]); + // Subcategory + useEffect(() => { + console.log( + "âš¡ transaction subcategory store", + store.transaction.dataSubCategories + ); + }, [store.transaction.dataSubCategories]); - const handleChangeSubcategory = async (item) => { - console.log("item", item); - store.transaction.filterSubCategory = item; - await store.transaction.getData(); - }; + const handleChangeSubcategory = async (item) => { + store.transaction.filterSubCategory = item; + await store.transaction.getData(); + }; - const handleBuyProduct = async (kode) => { - console.log(kode); - try { - await store.product.buyProduct({ productCode: kode }); - message.success("Success Buy Product"); - } catch (e) { - message.error("Failed Buy Product"); - } - }; + const handleBuyProduct = async (data) => { + try { + const response = await store.transaction.buyProduct({productCode: data}); + if (response.status === 200) { + message.success("Success Buy Product"); + } else { + message.error("Failed Buy Product"); + } + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Buy Product"); + } + }; - return ( -
- - - Sub Category - - - -
- - - - - - Produk & Nominal - - - - - - {productData.length != 0 && ( - - {productData.map((item, index) => ( - - { - setKode(item.code); - setCardIndex(index); - }} - hoverable - style={{ - cursor: "pointer", - borderColor: cardIndex === index ? "#2D9CDB" : "", - marginLeft: "10px", - }} - > - {item.name} -
- + return ( +
+ + Sub Category + + +
+ + + + + + Produk & Nominal + + + + + + {productData.length != 0 && ( + + {productData.map((item, index) => ( + + { + Modal.confirm({ + title: `Are you sure buy ${item.name}?`, + icon: , + okText: "Confirm", + cancelText: "Cancel", + okType: "primary", + onOk() { + handleBuyProduct(item.code) + }, + onCancel() { + console.log("Cancel"); + }, + }); + }} + style={{cursor: "pointer"}} + > + {item.name} +
+ {new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", + style: "currency", + currency: "IDR", }).format(item?.currentPrice?.mark_up_price)} -
- - ))} + + + ))} )} {productData.length !== 0 && ( - )} - ); }); From 6b9b3f94b66ccf5916981968ae0f7f119286e519 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Mon, 20 Dec 2021 13:01:46 +0700 Subject: [PATCH 094/324] feat: add handler error if API unauthorize --- package.json | 1 + src/utils/http.js | 34 ++++++++++++++++++++++++++++------ src/utils/http_logger.js | 17 +++++++++++++++++ 3 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 src/utils/http_logger.js diff --git a/package.json b/package.json index a356ebf..2ec0235 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "semver": "7.3.5", "style-loader": "1.3.0", "superagent": "^6.1.0", + "superagent-intercept": "^0.1.2", "terser-webpack-plugin": "4.2.3", "ts-pnp": "1.2.0", "url-loader": "4.1.1", diff --git a/src/utils/http.js b/src/utils/http.js index a63234c..a752a36 100644 --- a/src/utils/http.js +++ b/src/utils/http.js @@ -1,31 +1,49 @@ import superagent from "superagent"; +import superagentIntercept from 'superagent-intercept'; import {appConfig} from "../config/app"; import {TokenUtil} from "./token"; +import {attachSuperagentLogger} from "./http_logger"; + +let authIntercept = superagentIntercept((err, res) => { + if (res && res.status === 401) { + TokenUtil.clearAccessToken(); + TokenUtil.persistToken(); + window.location.href = "/login"; + } +}); export const http = { get: (url, opts = {}) => { - let req = superagent.get(appConfig.apiUrl + url); + let req = superagent.get(appConfig.apiUrl + url) + .use(authIntercept) + .use(attachSuperagentLogger); if (TokenUtil.accessToken) { req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken); } return req; }, post: (url, opts) => { - let req = superagent.post(appConfig.apiUrl + url); + let req = superagent.post(appConfig.apiUrl + url) + .use(authIntercept) + .use(attachSuperagentLogger); if (TokenUtil.accessToken) { req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken); } return req; }, put: (url, opts) => { - let req = superagent.put(appConfig.apiUrl + url); + let req = superagent.put(appConfig.apiUrl + url) + .use(authIntercept) + .use(attachSuperagentLogger); if (TokenUtil.accessToken) { req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken); } return req; }, del: (url, opts) => { - let req = superagent.del(appConfig.apiUrl + url); + let req = superagent.del(appConfig.apiUrl + url) + .use(authIntercept) + .use(attachSuperagentLogger); if (TokenUtil.accessToken) { req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken); } @@ -34,13 +52,17 @@ export const http = { upload: (file) => { const request = superagent .post(appConfig.apiUrl + '/files') - .attach('file', file); + .attach('file', file) + .use(authIntercept) + .use(attachSuperagentLogger); return request; }, uploadAntd: (args) => { const file = args.file; - const request = http.upload(file); + const request = http.upload(file) + .use(authIntercept) + .use(attachSuperagentLogger); request .on('progress', event => { args.onProgress(event); diff --git a/src/utils/http_logger.js b/src/utils/http_logger.js new file mode 100644 index 0000000..bb6c35c --- /dev/null +++ b/src/utils/http_logger.js @@ -0,0 +1,17 @@ +export function attachSuperagentLogger(req) { + const callback = req.callback; + console.log('%s %s %s', + req.method.padEnd('delete'.length, " "), + req.url, + '(pending)' + ); + + req.callback = function (err, res) { + console.log('%s %s %s', + req.method.padEnd('delete'.length, " "), + req.url, + res ? res.status : '-' + ); + callback.call(req, err, res); + }; +} From ead2d51fd8ae9aef4e6d0d83bae6dcfc3af92fab Mon Sep 17 00:00:00 2001 From: ilham Date: Mon, 20 Dec 2021 13:07:21 +0700 Subject: [PATCH 095/324] fix: get product --- src/component/ProductComponent.js | 38 +++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 5ec507a..77cd3b2 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -43,32 +43,32 @@ export const ProductComponent = observer((props) => { }, { title: "Produk", - dataIndex: "name", + dataIndex: ["name"], key: "name", }, { title: "Harga Beli", - dataIndex: "price", - key: "price", + dataIndex: ["currentPrice","price"], + key: ["currentPrice","price"], }, { title: "Harga Jual", - dataIndex: "basePrice", - key: "basePrice", - }, - { - title: "Gangguan", - dataIndex: "status", - key: "status", - render: (text, record) => ( - - {capitalize(record?.status)} - - ), + dataIndex: ["currentPrice","mark_up_price"], + key: ["currentPrice","mark_up_price"], }, + // { + // title: "Gangguan", + // dataIndex: "status", + // key: "status", + // render: (text, record) => ( + // + // {capitalize(record?.status)} + // + // ), + // }, { title: "Tersedia", dataIndex: "tersedia", @@ -78,7 +78,7 @@ export const ProductComponent = observer((props) => { color={record?.status === "ACTIVE" ? "blue" : "#E3E8EE"} style={{color: "#4F566B"}} > - {record?.status === "ACTIVE" ? " Ya" : "Tidak"} + {record?.status === "ACTIVE" ? " Tersedia" : "Tidak"} ), } From f89a1620db9ce47a5f28789cfa5c6aeb84ffd7d1 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Mon, 20 Dec 2021 13:32:08 +0700 Subject: [PATCH 096/324] feat: rewrite component use effect --- src/component/CategoryComponent.js | 53 +++++++---------------------- src/component/ProductComponent.js | 2 -- src/component/Subcategory.js | 54 +++++++----------------------- src/pages/Product/Category.js | 26 ++++++-------- src/pages/Product/Subcategory.js | 21 ++++++------ src/store/product.js | 3 +- 6 files changed, 48 insertions(+), 111 deletions(-) diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index bff88ca..98a8239 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -1,46 +1,19 @@ -import React, { useEffect, useState } from "react"; -import { - Button, - Form, - Input, - message, - Modal, - Select, - Space, - Table, - Tag, -} from "antd"; -import { observer } from "mobx-react-lite"; -import { ExclamationCircleOutlined } from "@ant-design/icons"; -import { useHistory } from "react-router-dom"; -import { capitalize } from "lodash"; -import { useStore } from "../utils/useStore"; -import { LINKS } from "../routes/app"; +import React, {useState} from "react"; +import {Button, Form, Input, message, Modal, Select, Space, Table,} from "antd"; +import {observer} from "mobx-react-lite"; +import {useHistory} from "react-router-dom"; +import {useStore} from "../utils/useStore"; +import {LINKS} from "../routes/app"; export const CategoryComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const { Option } = Select; + const {Option} = Select; const history = useHistory(); const [idData, setIdData] = useState(""); const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - //store.product.pageCategories=StrToLower(props.category) - await store.product.getDataSubCategories(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); - }, []); - const handleEditButton = (data) => { console.log(data, "isi data"); form.setFieldsValue({ @@ -154,18 +127,18 @@ export const CategoryComponent = observer((props) => { dataSource={store.category.data} bordered pagination={{ - pageSize: store.product.pageSize, - total: store.product.total_data, - current: store.product.page + 1, + pageSize: store.category.pageSize, + total: store.category.total_data, + current: store.category.page + 1, showSizeChanger: true, simple: false, }} onChange={async (page) => { let pageNumber = page.current; - store.product.pageSize = page.pageSize; - store.product.page = pageNumber - 1; + store.category.pageSize = page.pageSize; + store.category.page = pageNumber - 1; // store.membership.isLoading = true; - await store.product.getData(); + await store.category.getData(); // store.membership.isLoading = false; }} /> diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 77cd3b2..ef52e21 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -149,7 +149,6 @@ export const ProductComponent = observer((props) => { const handleRemoveFilter = async () => { store.product.filterSupplier = null; - store.product.filterCategory = null; store.product.filterSubCategory = null; setFilterSupplier(null); setFilterCategories(null); @@ -167,7 +166,6 @@ export const ProductComponent = observer((props) => { const handleSubmitFilter = async () => { store.product.filterSupplier = filterSupplier; - store.product.filterCategory = filterCategories; store.product.filterSubCategory = filterSubCategories; await store.product.getData(); store.product.visibleModalFilterProduct = false; diff --git a/src/component/Subcategory.js b/src/component/Subcategory.js index 0da7987..45d80ff 100644 --- a/src/component/Subcategory.js +++ b/src/component/Subcategory.js @@ -1,49 +1,21 @@ -import React, { useEffect, useState } from "react"; -import { - Button, - Form, - Input, - message, - Modal, - Select, - Space, - Table, - Tag, -} from "antd"; -import { observer } from "mobx-react-lite"; -import { ExclamationCircleOutlined } from "@ant-design/icons"; -import { useHistory } from "react-router-dom"; -import { capitalize } from "lodash"; -import { useStore } from "../utils/useStore"; -import { LINKS } from "../routes/app"; +import React, {useState} from "react"; +import {Button, Form, Input, message, Modal, Select, Space, Table,} from "antd"; +import {observer} from "mobx-react-lite"; +import {useHistory} from "react-router-dom"; +import {useStore} from "../utils/useStore"; export const SubcategoryComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const { Option } = Select; + const {Option} = Select; const history = useHistory(); const [idData, setIdData] = useState(""); const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - //store.product.pageCategories=StrToLower(props.category) - getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); - }, []); - const getData = async () => { - await store.subcategory.getData(); await store.category.getData(); + await store.subcategory.getData(); }; const handleEditButton = (data) => { @@ -120,7 +92,7 @@ export const SubcategoryComponent = observer((props) => { form.resetFields(); } }; - //console.log() + return (
{ dataSource={store.subcategory.data} bordered pagination={{ - pageSize: store.product.pageSize, - total: store.product.total_data, - current: store.product.page + 1, + pageSize: store.subcategory.pageSize, + total: store.subcategory.total_data, + current: store.subcategory.page + 1, showSizeChanger: true, simple: false, }} onChange={(page) => { let pageNumber = page.current; - store.product.pageSize = page.pageSize; - store.product.page = pageNumber - 1; + store.subcategory.pageSize = page.pageSize; + store.subcategory.page = pageNumber - 1; // store.membership.isLoading = true; getData(); // store.membership.isLoading = false; diff --git a/src/pages/Product/Category.js b/src/pages/Product/Category.js index 0a26060..e3271e0 100644 --- a/src/pages/Product/Category.js +++ b/src/pages/Product/Category.js @@ -1,14 +1,14 @@ -import React, { useEffect, useState } from "react"; -import { Button, Card, Col, Input, Row, Tabs } from "antd"; -import { FilterOutlined, PlusSquareOutlined } from "@ant-design/icons"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; -import { LINKS } from "../../routes/app"; -import { CategoryComponent } from "../../component/CategoryComponent"; +import React, {useEffect, useState} from "react"; +import {Button, Card, Col, Input, Row, Tabs} from "antd"; +import {FilterOutlined, PlusSquareOutlined} from "@ant-design/icons"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {LINKS} from "../../routes/app"; +import {CategoryComponent} from "../../component/CategoryComponent"; -const { TabPane } = Tabs; -const { Search } = Input; +const {TabPane} = Tabs; +const {Search} = Input; export const Category = observer(() => { const [isLoading, setIsLoading] = useState(false); @@ -18,7 +18,6 @@ export const Category = observer(() => { const init = async () => { try { setIsLoading(true); - //await store.product.getDataCategories(); await store.category.getData(); setIsLoading(false); } catch (e) { @@ -29,11 +28,6 @@ export const Category = observer(() => { init(); }, []); - const handleChangeTabPane = async (key) => { - store.product.filterCategory = key; - console.log(key); - }; - const routeData = [ { route: LINKS.HOME, diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js index 7e7162d..663e4ac 100644 --- a/src/pages/Product/Subcategory.js +++ b/src/pages/Product/Subcategory.js @@ -1,13 +1,13 @@ -import React, { useEffect, useState } from "react"; -import { Button, Card, Col, Input, Row, Tabs } from "antd"; -import { FilterOutlined, PlusSquareOutlined } from "@ant-design/icons"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; -import { LINKS } from "../../routes/app"; -import { SubcategoryComponent } from "../../component/Subcategory"; +import React, {useEffect, useState} from "react"; +import {Button, Card, Col, Input, Row} from "antd"; +import {PlusSquareOutlined} from "@ant-design/icons"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {LINKS} from "../../routes/app"; +import {SubcategoryComponent} from "../../component/Subcategory"; -const { Search } = Input; +const {Search} = Input; export const Subcategory = observer(() => { const [isLoading, setIsLoading] = useState(false); @@ -17,7 +17,7 @@ export const Subcategory = observer(() => { const init = async () => { try { setIsLoading(true); - // await getData(); + getData(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -31,6 +31,7 @@ export const Subcategory = observer(() => { await store.category.getData(); await store.subcategory.getData(); }; + const routeData = [ { route: LINKS.HOME, diff --git a/src/store/product.js b/src/store/product.js index 9422e8d..f60eb86 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -7,7 +7,6 @@ export class Product { data = []; total_data = 0; filterSupplier = null; - filterCategory = null; filterSubCategory = null; visibleModalProduct = false; visibleModalFilterProduct = false; @@ -31,7 +30,7 @@ export class Product { async getData() { try { - const response = await http.get(`/product/all?supplier=${this.filterSupplier}&category=${this.filterCategory}&sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); + const response = await http.get(`/product/all?supplier=${this.filterSupplier}&sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); this.data = response.body.data.map((item, idx) => { item.key = idx; return item From 5f062ed63066aa30b75a0503f1144b344232e64e Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 20 Dec 2021 13:42:24 +0700 Subject: [PATCH 097/324] post payback --- src/pages/App/MenuList.js | 20 +- src/pages/Payback/Payback.js | 75 ++---- src/pages/Payback/PaybackFromUser.js | 277 +++++++++++++++++++++ src/pages/Payback/PaybackModal.js | 354 +++++++++++++++------------ src/routes/app.js | 5 + src/store/index.js | 3 +- src/store/payback.js | 91 +++++++ 7 files changed, 609 insertions(+), 216 deletions(-) create mode 100644 src/pages/Payback/PaybackFromUser.js create mode 100644 src/store/payback.js diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 9c06ffc..a099c3b 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -124,12 +124,20 @@ export const MenuList = observer((props) => { )} - - - - Payback - - + } title="Payback"> + + + + Payback + + + + + + Payback User + + + {store.authentication.userData.role !== "Admin" && ( diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 2b2742d..34f9b4c 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useState ,useEffect} from "react"; import { Button, Card, @@ -31,56 +31,25 @@ export const Payback = observer(() => { const [visibleModal, setVisibleModal] = useState(false); const [confirmLoading, setConfirmLoading] = useState(false); const [initialData, setInitialData] = useState({}); + //const [confirmLoading, setConfirmLoading] = useState(false); + const [isLoading, setIsLoading] = useState(false); - // useEffect(() => { - // // const init = async () => { - // // try { - // // setIsLoading(true); - // // await store.membership.getData(); - // // await store.role.getData(); - // // setIsLoading(false); - // // } catch (e) { - // // setIsLoading(false); - // // } - // // }; - // - // // init(); - // }, []); - const dummyData = [ - { - key: "1", - id: 1, - name: "John Doe", - picture: - "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", - amount: "Rp. 1.000.000", - }, - { - key: "2", - id: 1, - name: "John Doe", - picture: - "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", - amount: "Rp. 1.000.000", - }, - { - key: "3", - id: 1, - name: "John Doe", - picture: - "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", - amount: "Rp. 1.000.000", - }, - { - key: "4", - id: 1, - name: "John Doe", - picture: - "https://presidenproperti.com/wp-content/uploads/2018/11/blog-ph.jpg", - amount: "Rp. 1.000.000", - }, - ]; + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.payback.getDataUser(); + //await store.role.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + + init(); + }, []); + const columns = [ { @@ -90,8 +59,8 @@ export const Payback = observer(() => { }, { title: "Picture", - dataIndex: "picture", - key: "picture", + dataIndex: "image_prove", + key: "image_prove", render: (text, record) => ( { key="1" hasEmpty columns={columns} - dataSource={dummyData} + dataSource={store.payback.data} bordered // pagination={{ // pageSize: store.membership.pageSize, @@ -245,7 +214,7 @@ export const Payback = observer(() => { // current: store.membership.page, // style: {marginBottom: "1rem", marginRight: "1rem"}, // }} - dataSource={dummyData} + dataSource={store.payback.data} style={{ padding: 0 }} renderItem={(item) => { return ( diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js new file mode 100644 index 0000000..94077a1 --- /dev/null +++ b/src/pages/Payback/PaybackFromUser.js @@ -0,0 +1,277 @@ +import React, { useState ,useEffect} from "react"; +import { + Button, + Card, + Col, + Divider, + Image, + Input, + List, + message, + Row, + Space, + Table, +} from "antd"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { + CheckCircleOutlined, + CloseOutlined, + FilterOutlined, + PlusSquareOutlined, +} from "@ant-design/icons"; +import { PaybackModal } from "./PaybackModal"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { LINKS } from "../../routes/app"; + +const { Search } = Input; + +export const PaybackFromUser = observer(() => { + const store = useStore(); + const [visibleModal, setVisibleModal] = useState(false); + const [confirmLoading, setConfirmLoading] = useState(false); + const [initialData, setInitialData] = useState({}); + //const [confirmLoading, setConfirmLoading] = useState(false); + const [isLoading, setIsLoading] = useState(false); + + + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.payback.getData(); + //await store.role.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + + init(); + }, []); + + + const columns = [ + // { + // title: "Name", + // dataIndex: "name", + // key: "name", + // }, + { + title: "Picture", + dataIndex: "image_prove", + key: "image_prove", + render: (text, record) => ( + + ), + }, + { + title: "Amount", + dataIndex: "amount", + key: "amount", + }, + // { + // title: "Action", + // key: "action", + // width: 100, + // render: (text, record) => ( + // + // + // + // + // ), + // }, + ]; + + if(store.authentication.userData.role === "Retail") columns.pop(); + + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.PAYBACKFROMUSER, + name: Payback User, + }, + ]; + + const onSubmit = async (data) => { + setConfirmLoading(true); + try { + // await store.membership.create(data); + // message.success("Success Add New Member"); + // await store.membership.getData(); + } catch (e) { + console.error(e, "apa errornya"); + message.error("Failed Add Member"); + } + setConfirmLoading(false); + setVisibleModal(false); + }; + + const handleAction = async (record, type) => {}; + + return ( +
+ + +
+ +
+ + + + + {store.authentication.userData.role !== "Admin" && ( + + )} + + + {store.ui.mediaQuery.isDesktop && ( +
{ + // let pageNumber = page.current; + // store.membership.pageSize = page.pageSize; + // store.membership.page = pageNumber - 1; + // // store.membership.isLoading = true; + // await store.membership.getData(); + // // store.membership.isLoading = false; + // }} + /> + )} + + {store.ui.mediaQuery.isMobile && ( + { + // store.membership.pageSize = page.pageSize; + // store.membership.page = page.current; + // store.membership.getData(); + // }, + // pageSize: store.membership.pageSize, + // total: store.membership.total_data, + // current: store.membership.page, + // style: {marginBottom: "1rem", marginRight: "1rem"}, + // }} + dataSource={store.payback.data} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + + +
+ } + /> +
+

+ {item.amount} +

+
+ + + + ); + }} + /> + )} + + + + { + await onSubmit(data); + }} + onCancel={() => { + setInitialData({}); + setVisibleModal(false); + }} + /> + + ); +}); diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index f7fcda0..dc87207 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -1,164 +1,206 @@ -import React, {useState} from 'react'; -import {Button, Form, Image, Input, message, Modal, Upload} from 'antd'; -import {useStore} from "../../utils/useStore"; -import {appConfig} from "../../config/app"; -import {LoadingOutlined, UploadOutlined} from "@ant-design/icons"; +import React, { useState, useEffect } from "react"; +import { + Button, + Form, + Image, + Input, + message, + Modal, + Upload, +} from "antd"; +import { useStore } from "../../utils/useStore"; +import { appConfig } from "../../config/app"; +import { LoadingOutlined, UploadOutlined } from "@ant-design/icons"; -export const PaybackModal = ({ - visible, - onCreate, - onCancel, - initialData, - }) => { - const [form] = Form.useForm(); - const store = useStore(); +export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => { + const [form] = Form.useForm(); + const store = useStore(); + const [fileList, setFileList] = useState([]); + const [previewTitle, setPreviewTitle] = useState(""); + const [previewImage, setPreviewImage] = useState(""); + const [loading, setLoading] = useState(false); + const [fileUrl, setFileUrl] = useState(""); + const firstIndexFileList = fileList[0]; + const [isLoading, setIsLoading] = useState(false); - const [fileList, setFileList] = useState([]); - const [previewTitle, setPreviewTitle] = useState(""); - const [previewImage, setPreviewImage] = useState(""); - const [loading, setLoading] = useState(false); - const [fileUrl, setFileUrl] = useState(""); - const firstIndexFileList = fileList[0]; + useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + //await store.membership.getData(); + //await store.role.getData(); + await store.authentication.getProfile(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; - const beforeUpload = (file) => { - let isPdf, isLt2M; - let allowedFile = ['image/jpeg', 'image/png', "application/pdf"]; - let isValid = allowedFile.includes(file.type) - if (!isValid) { - message.error("You can only upload PDF or Image file!"); - } - // return file.type === 'application/pdf' ? true : Upload.LIST_IGNORE; - isLt2M = file.size / 1024 / 1024 < 2; - if (!isLt2M) { - message.error("File must smaller than 2MB!"); - } - return isValid && isLt2M ? true : Upload.LIST_IGNORE; + init(); + }, []); + const beforeUpload = (file) => { + let isPdf, isLt2M; + let allowedFile = ["image/jpeg", "image/png", "application/pdf"]; + let isValid = allowedFile.includes(file.type); + if (!isValid) { + message.error("You can only upload PDF or Image file!"); + } + // return file.type === 'application/pdf' ? true : Upload.LIST_IGNORE; + isLt2M = file.size / 1024 / 1024 < 2; + if (!isLt2M) { + message.error("File must smaller than 2MB!"); + } + return isValid && isLt2M ? true : Upload.LIST_IGNORE; + }; + + const handlePreview = async (file) => { + const fileUrl = appConfig.apiUrl + file.response.path; + setPreviewTitle(file.url?.substring(file.url?.lastIndexOf("/") + 1)); + }; + + const handleChange = ({ fileList }) => { + setFileList(fileList); + if (fileList.length && fileList[0].status === "done") { + form.setFieldsValue({ + file_url: fileList[0].response.path, + }); + console.log(fileList, "apaaaaaa"); + setFileUrl(fileList[0].response.path); + setPreviewImage(fileList[0].response.path); + setPreviewTitle(fileList[0].name); + } + }; + + const uploadButton = ( +
+ {loading ? ( + + ) : ( + + )} +
+ ); + + const previewUpload = ( + + ); + + const handleSubmit = async (data) => { + console.log(data, "isi data2"); + try { + await store.payback.create(data); + message.success("Success Add New Member"); + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Add Member"); } - const handlePreview = async (file) => { - const fileUrl = appConfig.apiUrl + file.response.path; - setPreviewTitle(file.url?.substring(file.url?.lastIndexOf("/") + 1)); - }; + store.payback.visibleModalPayback = false; + form.resetFields(); + }; - const handleChange = ({fileList}) => { - setFileList(fileList); - if (fileList.length && fileList[0].status === "done") { - form.setFieldsValue({ - file_url: fileList[0].response.path, - }); - console.log(fileList, "apaaaaaa"); - setFileUrl(fileList[0].response.path); - setPreviewImage(fileList[0].response.path); - setPreviewTitle(fileList[0].name); - } - }; - - const uploadButton = ( -
- {loading ? ( - - ) : ( - - )} -
- ); - - const previewUpload = ( - - ) - - return ( - { - form.resetFields() - onCancel() - }} - onOk={() => { - form - .validateFields() - .then(values => { - onCreate(values); - form.resetFields() - }) - .catch(info => { - console.log('Validate Failed:', info); - }); - }} + return ( + { + form.resetFields(); + onCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + handleSubmit(values); + console.log(values); + form.resetFields(); + }) + .catch((info) => { + console.log("Validate Failed:", info); + }); + }} + > +
+ - - - - - - -
-
- - {!firstIndexFileList ? uploadButton : null} - -
- Max size of file 2 mb -
-
-
-
Preview
-
- preview -
-
{previewTitle}
-
{previewUpload} - {previewTitle && {`${previewTitle ?? ""}`}}
-
-
-
- - - - -
- ); + + + +
+
+ + {!firstIndexFileList ? uploadButton : null} + +
+ Max size of file 2 mb +
+
+
+
Preview
+
+ preview +
+
{previewTitle}
+
+ {previewUpload} + {previewTitle && {`${previewTitle ?? ""}`}} +
+
+
+
+ + + + +
+ ); }; diff --git a/src/routes/app.js b/src/routes/app.js index a61c9ef..1667fd2 100644 --- a/src/routes/app.js +++ b/src/routes/app.js @@ -10,6 +10,7 @@ import {Partner} from "../pages/Config/Partner"; import {Supplier} from "../pages/Config/Supplier"; import {Category} from "../pages/Product/Category"; import {Payback} from "../pages/Payback/Payback"; +import {PaybackFromUser} from "../pages/Payback/PaybackFromUser"; import {Subcategory} from "../pages/Product/Subcategory"; export const LINKS = { @@ -24,6 +25,7 @@ export const LINKS = { SUPPLIER: "/app/supplier", CATEGORY: "/app/category", PAYBACK: "/app/payback", + PAYBACKFROMUSER: "/app/payback-from-user", SUBCATEGORY: "/app/subcategory", }; @@ -36,6 +38,9 @@ export const AppRoute = () => { + + + diff --git a/src/store/index.js b/src/store/index.js index fef11ad..138b277 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -10,7 +10,7 @@ import { Transaction } from "./transaction"; import { TokenUtil } from "../utils/token"; import { Category } from "./category"; import { Subcategory } from "./subcategory"; - +import { Payback } from "./payback"; import { Role } from "./role"; export class Store { @@ -23,6 +23,7 @@ export class Store { supplier = new Supplier(this); commission = new Commission(this); category = new Category(this); + payback = new Payback(this); transaction = new Transaction(this); subcategory = new Subcategory(this); role = new Role(this); diff --git a/src/store/payback.js b/src/store/payback.js new file mode 100644 index 0000000..1c36900 --- /dev/null +++ b/src/store/payback.js @@ -0,0 +1,91 @@ +import { makeAutoObservable } from "mobx"; +import { http } from "../utils/http"; + +export class Payback { + page = 0; + pageSize = 10; + data = []; + total_data = 0; + filterCategory = null; + visibleModalPayback = false; + + pageCategories = 0; + pageSizeCategories = 10; + dataCategories = []; + total_dataCategories = 0; + + pageSubCategories = 0; + pageSizeSubCategories = 10; + dataSubCategories = []; + total_dataSubCategories = 0; + + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } + + async getData() { + try { + const response = await http.get( + `/transaction/deposit-return?page=${this.page}&pageSize=${this.pageSize}` + ); + //console.log(response) + this.data = + response.body[0].map((item, idx) => { + item.key = idx; + return item; + }) ?? []; + + this.total_data = response.body.total_data ?? 0; + } catch (e) { + console.error(e); + } + } + + async getDataUser() { + try { + const response = await http.get( + `/transaction/deposit-return/confirmation?page=${this.page}&pageSize=${this.pageSize}` + ); + console.log(response); + this.data = + response.body[0].map((item, idx) => { + item.key = idx; + return item; + }) ?? []; + + this.total_data = response.body.total_data ?? 0; + } catch (e) { + console.error(e); + } + } + + async update(id, data) { + try { + const response = await http.put(`/config/commission/${id}`).send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } + } + + async delete(id) { + try { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } + } + async create(data) { + try { + console.log(data) + return await http.post("/transaction/deposit-return").send(data); + + } catch (e) { + console.error(e); + } + } +} From 61ec562ca4363eb4c74758c27484f97163ad4988 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Mon, 20 Dec 2021 13:55:00 +0700 Subject: [PATCH 098/324] feat: init modal loader components --- src/component/Modal/ModalLoader.js | 19 +++++++++++++++++++ src/pages/App/App.js | 27 +++++++++++++++++++-------- src/pages/Product/Product.js | 6 +++++- src/utils/modal.js | 3 +++ 4 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 src/component/Modal/ModalLoader.js create mode 100644 src/utils/modal.js diff --git a/src/component/Modal/ModalLoader.js b/src/component/Modal/ModalLoader.js new file mode 100644 index 0000000..ec156f2 --- /dev/null +++ b/src/component/Modal/ModalLoader.js @@ -0,0 +1,19 @@ +import React from 'react'; +import {Modal, Spin} from "antd"; +import {observer} from 'mobx-react-lite'; + +export const ModalLoader = observer(({isOpen, text}) => { + return +
+ + {text || 'Loading ...'} +
+
+}); diff --git a/src/pages/App/App.js b/src/pages/App/App.js index 2225853..64ec790 100644 --- a/src/pages/App/App.js +++ b/src/pages/App/App.js @@ -1,12 +1,11 @@ -import React, {useEffect} from "react"; +import React, {useEffect, useState} from "react"; import {DesktopLayout} from "./DesktopLayout"; import {useMediaQuery} from 'react-responsive'; import {useStore} from "../../utils/useStore"; -import {useHistory} from "react-router-dom"; - +import {ModalLoader} from "../../component/Modal/ModalLoader"; +import {ModalLoaderContext} from "../../utils/modal"; export const App = () => { - // TODO: add mobile layout const store = useStore(); const mediaQuery = { isDesktop: useMediaQuery({minWidth: 1024}), @@ -15,11 +14,23 @@ export const App = () => { isNotMobile: useMediaQuery({minWidth: 768}), }; + const [modalLoading, setModalLoading] = useState(false); + const [modalText, setModalText] = useState(undefined); + const modalContextValue = { + setLoading: setModalLoading, + setText: setModalText, + }; + useEffect(() => { store.ui.setMediaQuery(mediaQuery); }); -// const isMobileDevice = useMediaQuery({ -// query: "(min-device-width: 480px)", -// }); - return ; + + return ( + <> + + + + + + ); }; diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index cd2660e..31461ce 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,4 +1,4 @@ -import React, {useEffect, useState} from "react"; +import React, {useContext, useEffect, useState} from "react"; import {Button, Card, Col, Input, Row, Select, Tabs, Upload} from "antd"; import {FilterOutlined, PlusSquareOutlined, UploadOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; @@ -6,6 +6,7 @@ import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; import {ProductComponent} from "../../component/ProductComponent"; import {LINKS} from "../../routes/app"; +import {ModalLoaderContext} from "../../utils/modal"; const {TabPane} = Tabs; const {Search} = Input; @@ -14,11 +15,13 @@ const {Option} = Select; export const Product = observer(() => { const [isLoading, setIsLoading] = useState(false); const store = useStore(); + const modalLoader = useContext(ModalLoaderContext); useEffect(() => { const init = async () => { try { setIsLoading(true); + modalLoader.setLoading(true); await Promise.allSettled([ store.supplier.getData(), store.product.getDataCategories(), @@ -26,6 +29,7 @@ export const Product = observer(() => { ]); await store.product.getData(); setIsLoading(false); + modalLoader.setLoading(false); } catch (e) { setIsLoading(false); } diff --git a/src/utils/modal.js b/src/utils/modal.js new file mode 100644 index 0000000..6e9f80c --- /dev/null +++ b/src/utils/modal.js @@ -0,0 +1,3 @@ +import React from "react"; + +export const ModalLoaderContext = React.createContext(null); From 1bf45213ded89afd4a668603c808e66adc9f97ba Mon Sep 17 00:00:00 2001 From: caturbgs Date: Mon, 20 Dec 2021 13:56:08 +0700 Subject: [PATCH 099/324] feat: init modal loader components --- src/pages/Product/Product.js | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 31461ce..1c5dc03 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,5 +1,5 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, Input, Row, Select, Tabs, Upload} from "antd"; +import React, {useContext, useEffect} from "react"; +import {Button, Card, Col, Input, Row, Upload} from "antd"; import {FilterOutlined, PlusSquareOutlined, UploadOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {useStore} from "../../utils/useStore"; @@ -8,19 +8,15 @@ import {ProductComponent} from "../../component/ProductComponent"; import {LINKS} from "../../routes/app"; import {ModalLoaderContext} from "../../utils/modal"; -const {TabPane} = Tabs; const {Search} = Input; -const {Option} = Select; export const Product = observer(() => { - const [isLoading, setIsLoading] = useState(false); const store = useStore(); const modalLoader = useContext(ModalLoaderContext); useEffect(() => { const init = async () => { try { - setIsLoading(true); modalLoader.setLoading(true); await Promise.allSettled([ store.supplier.getData(), @@ -28,10 +24,9 @@ export const Product = observer(() => { store.category.getData(), ]); await store.product.getData(); - setIsLoading(false); modalLoader.setLoading(false); } catch (e) { - setIsLoading(false); + modalLoader.setLoading(false); } }; From f2b754a187629de8349553fb1ea705ea0c0bf243 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Mon, 20 Dec 2021 13:59:24 +0700 Subject: [PATCH 100/324] feat: fix paging data --- src/store/category.js | 10 +++++----- src/store/commission.js | 2 +- src/store/membership.js | 4 ++-- src/store/payback.js | 8 ++++---- src/store/product.js | 2 +- src/store/role.js | 6 +++--- src/store/subcategory.js | 2 +- src/store/transaction.js | 6 +++--- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/store/category.js b/src/store/category.js index 3804881..272bfd9 100644 --- a/src/store/category.js +++ b/src/store/category.js @@ -23,10 +23,10 @@ export class Category { try { const response = await http.get(`/product/categories?page=${this.page}&pageSize=${this.pageSize}`); this.data = response.body.data.map((item, idx) => { - item.key = idx; - return item - }) ?? [] - this.total_data = response.body.total_data ?? 0 + item.key = idx; + return item + }) ?? [] + this.total_data = response?.body?.count ?? 0 } catch (e) { console.log(e); } @@ -55,7 +55,7 @@ export class Category { return item }) ?? [] - this.total_dataCategories = response.body.total_data ?? 0 + this.total_dataCategories = response?.body?.count ?? 0 if (this.dataCategories.length > 0) { this.filterCategory = this.dataCategories[0].id } diff --git a/src/store/commission.js b/src/store/commission.js index a613c2f..41894f8 100644 --- a/src/store/commission.js +++ b/src/store/commission.js @@ -32,7 +32,7 @@ export class Commission { return item }) ?? [] - this.total_data = response.body.total_data ?? 0 + this.total_data = response?.body?.count ?? 0 } catch (e) { console.error(e); } diff --git a/src/store/membership.js b/src/store/membership.js index 80046dd..0afded7 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -23,7 +23,7 @@ export class Membership { return item }) ?? [] - this.total_data = response.body.total_data ?? 0 + this.total_data = response?.body?.count ?? 0 } catch (e) { console.error(e); } @@ -40,7 +40,7 @@ export class Membership { return item }) ?? [] - this.total_data = response.body.total_data ?? 0 + this.total_data = response?.body?.count ?? 0 } catch (e) { console.error(e); } diff --git a/src/store/payback.js b/src/store/payback.js index 1c36900..c616825 100644 --- a/src/store/payback.js +++ b/src/store/payback.js @@ -1,5 +1,5 @@ -import { makeAutoObservable } from "mobx"; -import { http } from "../utils/http"; +import {makeAutoObservable} from "mobx"; +import {http} from "../utils/http"; export class Payback { page = 0; @@ -36,7 +36,7 @@ export class Payback { return item; }) ?? []; - this.total_data = response.body.total_data ?? 0; + this.total_data = response?.body?.count ?? 0; } catch (e) { console.error(e); } @@ -54,7 +54,7 @@ export class Payback { return item; }) ?? []; - this.total_data = response.body.total_data ?? 0; + this.total_data = response?.body?.count ?? 0; } catch (e) { console.error(e); } diff --git a/src/store/product.js b/src/store/product.js index f60eb86..e03b223 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -36,7 +36,7 @@ export class Product { return item }) ?? [] - this.total_data = response.body.total_data ?? 0 + this.total_data = response?.body?.count ?? 0 } catch (e) { console.error(e); } diff --git a/src/store/role.js b/src/store/role.js index 28b027d..f5607f0 100644 --- a/src/store/role.js +++ b/src/store/role.js @@ -1,5 +1,5 @@ -import { makeAutoObservable } from "mobx"; -import { http } from "../utils/http"; +import {makeAutoObservable} from "mobx"; +import {http} from "../utils/http"; export class Role { page = null; @@ -20,7 +20,7 @@ export class Role { }&pageSize=${this.pageSize}` ); this.data = response.body.data ?? []; - this.total_data = response.body.total_data ?? 0; + this.total_data = response?.body?.count ?? 0; } catch (e) { console.error(e); } diff --git a/src/store/subcategory.js b/src/store/subcategory.js index 8268179..0ffb7c0 100644 --- a/src/store/subcategory.js +++ b/src/store/subcategory.js @@ -33,7 +33,7 @@ export class Subcategory { return item }) ?? [] - this.total_data = response.body.total_data ?? 0 + this.total_data = response?.body?.count ?? 0 } catch (e) { console.error(e); } diff --git a/src/store/transaction.js b/src/store/transaction.js index f2c0dc9..410e049 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -35,7 +35,7 @@ export class Transaction { try { const response = await http.get(`/product/by-categories-all?sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); this.data = response.body.data ?? [] - this.total_data = response.body.total_data ?? 0 + this.total_data = response?.body?.count ?? 0 } catch (e) { console.error(e); } @@ -56,7 +56,7 @@ export class Transaction { const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); this.dataCategories = response.body.data ?? [] - this.total_dataCategories = response.body.total_data ?? 0 + this.total_dataCategories = response?.body?.count ?? 0 if (this.dataCategories.length > 0) { this.filterCategory = this.dataCategories[0].id } @@ -70,7 +70,7 @@ export class Transaction { const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}`); this.dataHistoryTransaction = response.body.data ?? [] - this.total_dataHistoryTransaction = response.body.total_data ?? 0 + this.total_dataHistoryTransaction = response?.body?.count ?? 0 } catch (e) { console.error(e); } From 0c22a775654c90ed6b6b804cedb018ff85c2acfc Mon Sep 17 00:00:00 2001 From: Rido Akbar Ibrahim Date: Mon, 20 Dec 2021 15:03:36 +0700 Subject: [PATCH 101/324] add ci/cd script --- .dockerignore | 1 + Dockerfile | 12 ++++++++++++ k8s/staging/deployment.yaml | 22 ++++++++++++++++++++++ k8s/staging/ingress.yaml | 25 +++++++++++++++++++++++++ k8s/staging/middleware.yaml | 9 +++++++++ k8s/staging/namespace.yaml | 4 ++++ k8s/staging/service.yaml | 13 +++++++++++++ nginx/nginx.conf | 17 +++++++++++++++++ 8 files changed, 103 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 k8s/staging/deployment.yaml create mode 100644 k8s/staging/ingress.yaml create mode 100644 k8s/staging/middleware.yaml create mode 100644 k8s/staging/namespace.yaml create mode 100644 k8s/staging/service.yaml create mode 100644 nginx/nginx.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3d2cf54 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM node:14-alpine as build-deps +WORKDIR /usr/src/app +COPY package.json yarn.lock ./ +RUN yarn +COPY . ./ +RUN yarn build + +FROM nginx:stable-alpine +COPY --from=build-deps /usr/src/app/build /usr/share/nginx/html +COPY nginx/nginx.conf /etc/nginx/conf.d/default.conf +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/k8s/staging/deployment.yaml b/k8s/staging/deployment.yaml new file mode 100644 index 0000000..550cbb8 --- /dev/null +++ b/k8s/staging/deployment.yaml @@ -0,0 +1,22 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ppob-frontend + namespace: empatnusabangsa-staging +spec: + selector: + matchLabels: + app: ppob-frontend + replicas: 1 + template: + metadata: + labels: + app: ppob-frontend + spec: + containers: + - name: ppob-frontend + image: registry-harbor.app.bangun-kreatif.com/empatnusabangsa/ppob-frontend:1 + ports: + - containerPort: 80 + imagePullSecrets: + - name: regcred diff --git a/k8s/staging/ingress.yaml b/k8s/staging/ingress.yaml new file mode 100644 index 0000000..a29b593 --- /dev/null +++ b/k8s/staging/ingress.yaml @@ -0,0 +1,25 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ppob-frontend-ingress + namespace: empatnusabangsa-staging + annotations: + kubernetes.io/ingress.class: "traefik" + cert-manager.io/cluster-issuer: letsencrypt-prod + #traefik.ingress.kubernetes.io/router.middlewares: empatnusabangsa-staging-redirect-https@kubernetescrd +spec: + rules: + - host: "ppob-frontend.k3s.bangun-kreatif.com" + http: + paths: + - pathType: Prefix + path: / + backend: + service: + name: ppob-frontend + port: + number: 80 + tls: + - hosts: + - "ppob-frontend.k3s.bangun-kreatif.com" + secretName: ppob-frontend-k3s-bangun-kreatif-com-tls diff --git a/k8s/staging/middleware.yaml b/k8s/staging/middleware.yaml new file mode 100644 index 0000000..3b07aca --- /dev/null +++ b/k8s/staging/middleware.yaml @@ -0,0 +1,9 @@ +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: redirect-https + namespace: empatnusabangsa-staging +spec: + redirectScheme: + scheme: https + permanent: true \ No newline at end of file diff --git a/k8s/staging/namespace.yaml b/k8s/staging/namespace.yaml new file mode 100644 index 0000000..e81b142 --- /dev/null +++ b/k8s/staging/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: empatnusabangsa-staging diff --git a/k8s/staging/service.yaml b/k8s/staging/service.yaml new file mode 100644 index 0000000..35b409a --- /dev/null +++ b/k8s/staging/service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: ppob-frontend + namespace: empatnusabangsa-staging + labels: + run: ppob-frontend +spec: + ports: + - port: 80 + protocol: TCP + selector: + app: ppob-frontend diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..40a878b --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,17 @@ +server { + + listen 80; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + error_page 500 502 503 504 /50x.html; + + location = /50x.html { + root /usr/share/nginx/html; + } + +} From f5b930a1d9260002ef7d90921ec9681c5d6df251 Mon Sep 17 00:00:00 2001 From: Rido Akbar Ibrahim Date: Mon, 20 Dec 2021 15:07:49 +0700 Subject: [PATCH 102/324] add ci/cd script --- k8s/staging/ingress.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/staging/ingress.yaml b/k8s/staging/ingress.yaml index a29b593..bc50fec 100644 --- a/k8s/staging/ingress.yaml +++ b/k8s/staging/ingress.yaml @@ -6,7 +6,7 @@ metadata: annotations: kubernetes.io/ingress.class: "traefik" cert-manager.io/cluster-issuer: letsencrypt-prod - #traefik.ingress.kubernetes.io/router.middlewares: empatnusabangsa-staging-redirect-https@kubernetescrd + traefik.ingress.kubernetes.io/router.middlewares: empatnusabangsa-staging-redirect-https@kubernetescrd spec: rules: - host: "ppob-frontend.k3s.bangun-kreatif.com" From 3c4818d917936069e5eff3ca734291523a26b832 Mon Sep 17 00:00:00 2001 From: Rido Akbar Ibrahim Date: Mon, 20 Dec 2021 15:11:30 +0700 Subject: [PATCH 103/324] add ci/cd script --- .gitlab-ci.yml | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..111f7cb --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,68 @@ +variables: + REGISTRY_URL: registry-harbor.app.bangun-kreatif.com + REGISTRY_IMAGE: $REGISTRY_URL/empatnusabangsa/ppob-frontend + VERSION_STAGING: $CI_COMMIT_REF_NAME-$CI_PIPELINE_ID-$CI_COMMIT_SHORT_SHA + VERSION_PRODUCTION: $CI_COMMIT_REF_NAME-$CI_PIPELINE_ID-$CI_COMMIT_SHORT_SHA-production + DOCKER_HOST: tcp://docker:2375 + DOCKER_TLS_CERTDIR: "" + DOCKER_DRIVER: overlay2 + +stages: + - build-staging + - deploy-staging + - build-production + - deploy-production + +build-staging: + stage: build-staging + image: appuio/gitlab-runner-oc:3.11.0 + only: + - devops-staging + services: + - docker:dind + script: + - docker login $REGISTRY_URL -u $BKA_REGISTRY_USER -p $BKA_REGISTRY_PASS + - docker build -t $REGISTRY_IMAGE:$VERSION_STAGING . + - docker push $REGISTRY_IMAGE:$VERSION_STAGING + - docker rmi $REGISTRY_IMAGE:$VERSION_STAGING + +deploy-staging: + stage: deploy-staging + image: dtzar/helm-kubectl + only: + - devops-staging + script: + - kubectl config set-cluster k8s --server="${BKA_CLUSTER_HOST}" + - kubectl config set clusters.k8s.certificate-authority-data ${BKA_CLUSTER_CA} + - kubectl config set-credentials gitlab --token="${BKA_CLUSTER_TOKEN}" + - kubectl config set-context default --cluster=k8s --user=gitlab + - kubectl config use-context default + - sed -i "s//${VERSION_STAGING}/g" k8s/staging/deployment.yaml + - kubectl apply -f k8s/staging/deployment.yaml + +build-production: + stage: build-production + image: appuio/gitlab-runner-oc:3.11.0 + only: + - devops-production + services: + - docker:dind + script: + - docker login $REGISTRY_URL -u $NWP_REGISTRY_USER -p $NWP_REGISTRY_PASS + - docker build -t $REGISTRY_IMAGE:$VERSION_PRODUCTION . + - docker push $REGISTRY_IMAGE:$VERSION_PRODUCTION + - docker rmi $REGISTRY_IMAGE:$VERSION_PRODUCTION + +deploy-production: + stage: deploy-production + image: dtzar/helm-kubectl + only: + - devops-production + script: + - kubectl config set-cluster k8s --server="${NWP_CLUSTER_HOST}" + - kubectl config set clusters.k8s.certificate-authority-data ${NWP_CLUSTER_CA} + - kubectl config set-credentials gitlab --token="${NWP_CLUSTER_TOKEN}" + - kubectl config set-context default --cluster=k8s --user=gitlab + - kubectl config use-context default + - sed -i "s//${VERSION_PRODUCTION}/g" k8s/production/deployment.yaml + - kubectl apply -f k8s/production/deployment.yaml From 80cf5334a832daf3bc0c655a2e0391d825eca683 Mon Sep 17 00:00:00 2001 From: Rido Akbar Ibrahim Date: Mon, 20 Dec 2021 15:16:01 +0700 Subject: [PATCH 104/324] add ci/cd script --- .gitignore | 2 +- yarn.lock | 12267 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 12268 insertions(+), 1 deletion(-) create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index 6f1c4f3..2240f7c 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,4 @@ yarn-error.log* /.idea /package-lock.json -/yarn.lock + diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..efd0cd4 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,12267 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ant-design/colors@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-6.0.0.tgz#9b9366257cffcc47db42b9d0203bb592c13c0298" + integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== + dependencies: + "@ctrl/tinycolor" "^3.4.0" + +"@ant-design/icons-svg@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz#8630da8eb4471a4aabdaed7d1ff6a97dcb2cf05a" + integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw== + +"@ant-design/icons@^4.6.2", "@ant-design/icons@^4.7.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.7.0.tgz#8c3cbe0a556ba92af5dc7d1e70c0b25b5179af0f" + integrity sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-svg" "^4.2.1" + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + rc-util "^5.9.4" + +"@ant-design/react-slick@~0.28.1": + version "0.28.4" + resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.28.4.tgz#8b296b87ad7c7ae877f2a527b81b7eebd9dd29a9" + integrity sha512-j9eAHTn7GxbXUFNknJoHS2ceAsqrQi2j8XykjZE1IXCD8kJF+t28EvhBLniDpbOsBk/3kjalnhriTfZcjBHNqg== + dependencies: + "@babel/runtime" "^7.10.4" + classnames "^2.2.5" + json2mq "^0.2.0" + lodash "^4.17.21" + resize-observer-polyfill "^1.5.0" + +"@babel/code-frame@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.5.5": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" + integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== + dependencies: + "@babel/highlight" "^7.16.0" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.0", "@babel/compat-data@^7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" + integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== + +"@babel/core@7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.5.tgz#d281f46a9905f07d1b3bf71ead54d9c7d89cb1e3" + integrity sha512-RN/AwP2DJmQTZSfiDaD+JQQ/J99KsIpOCfBE5pL+5jJSt7nI3nYGoAXZu+ffYSQ029NLs2DstZb+eR81uuARgg== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.5" + "@babel/helper-compilation-targets" "^7.14.5" + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helpers" "^7.14.5" + "@babel/parser" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.5", "@babel/core@^7.8.4": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.5.tgz#924aa9e1ae56e1e55f7184c8bf073a50d8677f5c" + integrity sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helpers" "^7.16.5" + "@babel/parser" "^7.16.5" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.14.5", "@babel/generator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.5.tgz#26e1192eb8f78e0a3acaf3eede3c6fc96d22bedf" + integrity sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA== + dependencies: + "@babel/types" "^7.16.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" + integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz#a8429d064dce8207194b8bf05a70a9ea828746af" + integrity sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.0" + "@babel/types" "^7.16.0" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.14.5", "@babel/helper-compilation-targets@^7.16.3": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" + integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== + dependencies: + "@babel/compat-data" "^7.16.0" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.17.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.0", "@babel/helper-create-class-features-plugin@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz#5d1bcd096792c1ebec6249eebc6358eec55d0cad" + integrity sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-member-expression-to-functions" "^7.16.5" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-replace-supers" "^7.16.5" + "@babel/helper-split-export-declaration" "^7.16.0" + +"@babel/helper-create-regexp-features-plugin@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz#06b2348ce37fccc4f5e18dcd8d75053f2a7c44ff" + integrity sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + regexpu-core "^4.7.1" + +"@babel/helper-define-polyfill-provider@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" + integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz#f6a7f38b3c6d8b07c88faea083c46c09ef5451b8" + integrity sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-explode-assignable-expression@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz#753017337a15f46f9c09f674cff10cee9b9d7778" + integrity sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-function-name@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" + integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== + dependencies: + "@babel/helper-get-function-arity" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/types" "^7.16.0" + +"@babel/helper-get-function-arity@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" + integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-hoist-variables@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" + integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-member-expression-to-functions@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz#1bc9f7e87354e86f8879c67b316cb03d3dc2caab" + integrity sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" + integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz#530ebf6ea87b500f60840578515adda2af470a29" + integrity sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ== + dependencies: + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-simple-access" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-validator-identifier" "^7.15.7" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + +"@babel/helper-optimise-call-expression@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" + integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz#afe37a45f39fce44a3d50a7958129ea5b1a5c074" + integrity sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ== + +"@babel/helper-remap-async-to-generator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz#e706646dc4018942acb4b29f7e185bc246d65ac3" + integrity sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-wrap-function" "^7.16.5" + "@babel/types" "^7.16.0" + +"@babel/helper-replace-supers@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz#96d3988bd0ab0a2d22c88c6198c3d3234ca25326" + integrity sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ== + dependencies: + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-member-expression-to-functions" "^7.16.5" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + +"@babel/helper-simple-access@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" + integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" + integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-validator-identifier@^7.15.7": + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== + +"@babel/helper-validator-option@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" + integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== + +"@babel/helper-wrap-function@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz#0158fca6f6d0889c3fee8a6ed6e5e07b9b54e41f" + integrity sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA== + dependencies: + "@babel/helper-function-name" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + +"@babel/helpers@^7.14.5", "@babel/helpers@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.5.tgz#29a052d4b827846dd76ece16f565b9634c554ebd" + integrity sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw== + dependencies: + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" + integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== + dependencies: + "@babel/helper-validator-identifier" "^7.15.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.5", "@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.5", "@babel/parser@^7.7.0": + version "7.16.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.6.tgz#8f194828193e8fa79166f34a4b4e52f3e769a314" + integrity sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.2": + version "7.16.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz#2977fca9b212db153c195674e57cfab807733183" + integrity sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz#358972eaab006f5eb0826183b0c93cbcaf13e1e2" + integrity sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + +"@babel/plugin-proposal-async-generator-functions@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz#fd3bd7e0d98404a3d4cbca15a72d533f8c9a2f67" + integrity sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-remap-async-to-generator" "^7.16.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.14.5", "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz#3269f44b89122110f6339806e05d43d84106468a" + integrity sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-proposal-class-static-block@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz#df58ab015a7d3b0963aafc8f20792dcd834952a9" + integrity sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-decorators@^7.14.5", "@babel/plugin-proposal-decorators@^7.16.4": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.5.tgz#4617420d3685078dfab8f68f859dca1448bbb3c7" + integrity sha512-XAiZll5oCdp2Dd2RbXA3LVPlFyIRhhcQy+G34p9ePpl6mjFkbqHAYHovyw2j5mqUrlBf0/+MtOIJ3JGYtz8qaw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-decorators" "^7.16.5" + +"@babel/plugin-proposal-dynamic-import@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz#2e0d19d5702db4dcb9bc846200ca02f2e9d60e9e" + integrity sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz#3b4dd28378d1da2fea33e97b9f25d1c2f5bf1ac9" + integrity sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz#1e726930fca139caab6b084d232a9270d9d16f9c" + integrity sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz#df1f2e4b5a0ec07abf061d2c18e53abc237d3ef5" + integrity sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz#652555bfeeeee2d2104058c6225dc6f75e2d0f07" + integrity sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz#edcb6379b6cf4570be64c45965d8da7a2debf039" + integrity sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz#f30f80dacf7bc1404bf67f99c8d9c01665e830ad" + integrity sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.16.5" + +"@babel/plugin-proposal-optional-catch-binding@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz#1a5405765cf589a11a33a1fd75b2baef7d48b74e" + integrity sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz#a5fa61056194d5059366c0009cb9a9e66ed75c1f" + integrity sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz#2086f7d78c1b0c712d49b5c3fbc2d1ca21a7ee12" + integrity sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-proposal-private-property-in-object@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz#a42d4b56005db3d405b12841309dbca647e7a21b" + integrity sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.16.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz#35fe753afa7c572f322bd068ff3377bde0f37080" + integrity sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.5.tgz#8d397dee482716a79f1a22314f0b4770a5b67427" + integrity sha512-3CbYTXfflvyy8O819uhZcZSMedZG4J8yS/NLTc/8T24M9ke1GssTGvg8VZu3Yn2LU5IyQSv1CmPq0a9JWHXJwg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.5.tgz#ca0d85e12d71b825b4e9fd1f8d29b64acdf1b46e" + integrity sha512-Nrx+7EAJx1BieBQseZa2pavVH2Rp7hADK2xn7coYqVbWRu9C2OFizYcsKo6TrrqJkJl+qF/+Qqzrk/+XDu4GnA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.5.tgz#bf255d252f78bc8b77a17cadc37d1aa5b8ed4394" + integrity sha512-42OGssv9NPk4QHKVgIHlzeLgPOW5rGgfV5jzG90AhcXXIv6hu/eqj63w4VgvRxdvZY3AlYeDgPiSJ3BqAd1Y6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.5.tgz#f47a33e4eee38554f00fb6b2f894fa1f5649b0b3" + integrity sha512-/d4//lZ1Vqb4mZ5xTep3dDK888j7BGM/iKqBmndBaoYAFPlPKrGU608VVBz5JeyAb6YQDjRu1UKqj86UhwWVgw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-arrow-functions@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz#04c18944dd55397b521d9d7511e791acea7acf2d" + integrity sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-async-to-generator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz#89c9b501e65bb14c4579a6ce9563f859de9b34e4" + integrity sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w== + dependencies: + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-remap-async-to-generator" "^7.16.5" + +"@babel/plugin-transform-block-scoped-functions@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz#af087494e1c387574260b7ee9b58cdb5a4e9b0b0" + integrity sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-block-scoping@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz#b91f254fe53e210eabe4dd0c40f71c0ed253c5e7" + integrity sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-classes@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz#6acf2ec7adb50fb2f3194dcd2909dbd056dcf216" + integrity sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-replace-supers" "^7.16.5" + "@babel/helper-split-export-declaration" "^7.16.0" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz#2af91ebf0cceccfcc701281ada7cfba40a9b322a" + integrity sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-destructuring@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz#89ebc87499ac4a81b897af53bb5d3eed261bd568" + integrity sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-dotall-regex@^7.16.5", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz#b40739c00b6686820653536d6d143e311de67936" + integrity sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-duplicate-keys@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz#2450f2742325412b746d7d005227f5e8973b512a" + integrity sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-exponentiation-operator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz#36e261fa1ab643cfaf30eeab38e00ed1a76081e2" + integrity sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-flow-strip-types@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.5.tgz#8ceb65ab6ca4a349e04d1887e2470a5bfe8f046f" + integrity sha512-skE02E/MptkZdBS4HwoRhjWXqeKQj0BWKEAPfPC+8R4/f6bjQqQ9Nftv/+HkxWwnVxh/E2NV9TNfzLN5H/oiBw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-flow" "^7.16.5" + +"@babel/plugin-transform-for-of@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz#9b544059c6ca11d565457c0ff1f08e13ce225261" + integrity sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-function-name@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz#6896ebb6a5538a75d6a4086a277752f655a7bd15" + integrity sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ== + dependencies: + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-literals@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz#af392b90e3edb2bd6dc316844cbfd6b9e009d320" + integrity sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-member-expression-literals@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz#4bd6ecdc11932361631097b779ca5c7570146dd5" + integrity sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-modules-amd@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz#92c0a3e83f642cb7e75fada9ab497c12c2616527" + integrity sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ== + dependencies: + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz#4ee03b089536f076b2773196529d27c32b9d7bde" + integrity sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ== + dependencies: + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-simple-access" "^7.16.0" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz#07078ba2e3cc94fbdd06836e355c246e98ad006b" + integrity sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA== + dependencies: + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-validator-identifier" "^7.15.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz#caa9c53d636fb4e3c99fd35a4c9ba5e5cd7e002e" + integrity sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw== + dependencies: + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz#4afd8cdee377ce3568f4e8a9ee67539b69886a3c" + integrity sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + +"@babel/plugin-transform-new-target@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz#759ea9d6fbbc20796056a5d89d13977626384416" + integrity sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-object-super@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz#8ccd9a1bcd3e7732ff8aa1702d067d8cd70ce380" + integrity sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-replace-supers" "^7.16.5" + +"@babel/plugin-transform-parameters@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz#4fc74b18a89638bd90aeec44a11793ecbe031dde" + integrity sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-property-literals@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz#58f1465a7202a2bb2e6b003905212dd7a79abe3f" + integrity sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.5.tgz#4b01ea6b14bd4e55ca92bb2d6c28dd9957118924" + integrity sha512-fdc1s5npHMZ9A+w9bYbrZu4499WyYPVaTTsRO8bU0GJcMuK4ejIX4lyjnpvi+YGLK/EhFQxWszqylO0vaMciFw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.5.tgz#d5e910327d7931fb9f8f9b6c6999473ceae5a286" + integrity sha512-dHYCOnzSsXFz8UcdNQIHGvg94qPL/teF7CCiCEMRxmA1G2p5Mq4JnKVowCDxYfiQ9D7RstaAp9kwaSI+sXbnhw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-react-jsx-development@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.5.tgz#87da9204c275ffb57f45d192a1120cf104bc1e86" + integrity sha512-uQSLacMZSGLCxOw20dzo1dmLlKkd+DsayoV54q3MHXhbqgPzoiGerZQgNPl/Ro8/OcXV2ugfnkx+rxdS0sN5Uw== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.16.5" + +"@babel/plugin-transform-react-jsx@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.5.tgz#5298aedc5f81e02b1cb702e597e8d6a346675765" + integrity sha512-+arLIz1d7kmwX0fKxTxbnoeG85ONSnLpvdODa4P3pc1sS7CV1hfmtYWufkW/oYsPnkDrEeQFxhUWcFnrXW7jQQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-jsx" "^7.16.5" + "@babel/types" "^7.16.0" + +"@babel/plugin-transform-react-pure-annotations@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.5.tgz#6535d0fe67c7a3a26c5105f92c8cbcbe844cd94b" + integrity sha512-0nYU30hCxnCVCbRjSy9ahlhWZ2Sn6khbY4FqR91W+2RbSqkWEbVu2gXh45EqNy4Bq7sRU+H4i0/6YKwOSzh16A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-regenerator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz#704cc6d8dd3dd4758267621ab7b36375238cef13" + integrity sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz#db95e98799675e193dc2b47d3e72a7c0651d0c30" + integrity sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-runtime@^7.16.4": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.5.tgz#0cc3f01d69f299d5a42cd9ec43b92ea7a777b8db" + integrity sha512-gxpfS8XQWDbQ8oP5NcmpXxtEgCJkbO+W9VhZlOhr0xPyVaRjAQPOv7ZDj9fg0d5s9+NiVvMCE6gbkEkcsxwGRw== + dependencies: + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz#ccb60b1a23b799f5b9a14d97c5bc81025ffd96d7" + integrity sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-spread@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz#912b06cff482c233025d3e69cf56d3e8fa166c29" + integrity sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz#593579bb2b5a8adfbe02cb43823275d9098f75f9" + integrity sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-template-literals@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz#343651385fd9923f5aa2275ca352c5d9183e1773" + integrity sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-typeof-symbol@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz#a1d1bf2c71573fe30965d0e4cd6a3291202e20ed" + integrity sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-typescript@^7.16.1": + version "7.16.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz#cc0670b2822b0338355bc1b3d2246a42b8166409" + integrity sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-typescript" "^7.16.0" + +"@babel/plugin-transform-unicode-escapes@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz#80507c225af49b4f4ee647e2a0ce53d2eeff9e85" + integrity sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-unicode-regex@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz#ac84d6a1def947d71ffb832426aa53b83d7ed49e" + integrity sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.8.4": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.5.tgz#2e94d922f4a890979af04ffeb6a6b4e44ba90847" + integrity sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-validator-option" "^7.14.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.2" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-async-generator-functions" "^7.16.5" + "@babel/plugin-proposal-class-properties" "^7.16.5" + "@babel/plugin-proposal-class-static-block" "^7.16.5" + "@babel/plugin-proposal-dynamic-import" "^7.16.5" + "@babel/plugin-proposal-export-namespace-from" "^7.16.5" + "@babel/plugin-proposal-json-strings" "^7.16.5" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.5" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.5" + "@babel/plugin-proposal-numeric-separator" "^7.16.5" + "@babel/plugin-proposal-object-rest-spread" "^7.16.5" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.5" + "@babel/plugin-proposal-optional-chaining" "^7.16.5" + "@babel/plugin-proposal-private-methods" "^7.16.5" + "@babel/plugin-proposal-private-property-in-object" "^7.16.5" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.5" + "@babel/plugin-transform-async-to-generator" "^7.16.5" + "@babel/plugin-transform-block-scoped-functions" "^7.16.5" + "@babel/plugin-transform-block-scoping" "^7.16.5" + "@babel/plugin-transform-classes" "^7.16.5" + "@babel/plugin-transform-computed-properties" "^7.16.5" + "@babel/plugin-transform-destructuring" "^7.16.5" + "@babel/plugin-transform-dotall-regex" "^7.16.5" + "@babel/plugin-transform-duplicate-keys" "^7.16.5" + "@babel/plugin-transform-exponentiation-operator" "^7.16.5" + "@babel/plugin-transform-for-of" "^7.16.5" + "@babel/plugin-transform-function-name" "^7.16.5" + "@babel/plugin-transform-literals" "^7.16.5" + "@babel/plugin-transform-member-expression-literals" "^7.16.5" + "@babel/plugin-transform-modules-amd" "^7.16.5" + "@babel/plugin-transform-modules-commonjs" "^7.16.5" + "@babel/plugin-transform-modules-systemjs" "^7.16.5" + "@babel/plugin-transform-modules-umd" "^7.16.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.5" + "@babel/plugin-transform-new-target" "^7.16.5" + "@babel/plugin-transform-object-super" "^7.16.5" + "@babel/plugin-transform-parameters" "^7.16.5" + "@babel/plugin-transform-property-literals" "^7.16.5" + "@babel/plugin-transform-regenerator" "^7.16.5" + "@babel/plugin-transform-reserved-words" "^7.16.5" + "@babel/plugin-transform-shorthand-properties" "^7.16.5" + "@babel/plugin-transform-spread" "^7.16.5" + "@babel/plugin-transform-sticky-regex" "^7.16.5" + "@babel/plugin-transform-template-literals" "^7.16.5" + "@babel/plugin-transform-typeof-symbol" "^7.16.5" + "@babel/plugin-transform-unicode-escapes" "^7.16.5" + "@babel/plugin-transform-unicode-regex" "^7.16.5" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.0" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.19.1" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.5.tgz#09df3b7a6522cb3e6682dc89b4dfebb97d22031b" + integrity sha512-3kzUOQeaxY/2vhPDS7CX/KGEGu/1bOYGvdRDJ2U5yjEz5o5jmIeTPLoiQBPGjfhPascLuW5OlMiPzwOOuB6txg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-validator-option" "^7.14.5" + "@babel/plugin-transform-react-display-name" "^7.16.5" + "@babel/plugin-transform-react-jsx" "^7.16.5" + "@babel/plugin-transform-react-jsx-development" "^7.16.5" + "@babel/plugin-transform-react-pure-annotations" "^7.16.5" + +"@babel/preset-typescript@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz#b86a5b0ae739ba741347d2f58c52f52e63cf1ba1" + integrity sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-validator-option" "^7.14.5" + "@babel/plugin-transform-typescript" "^7.16.1" + +"@babel/runtime-corejs3@^7.10.2": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.5.tgz#9057d879720c136193f0440bc400088212a74894" + integrity sha512-F1pMwvTiUNSAM8mc45kccMQxj31x3y3P+tA/X8hKNWp3/hUsxdGxZ3D3H8JIkxtfA8qGkaBTKvcmvStaYseAFw== + dependencies: + core-js-pure "^3.19.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.5.tgz#7f3e34bf8bdbbadf03fbb7b1ea0d929569c9487a" + integrity sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.14.5", "@babel/template@^7.16.0", "@babel/template@^7.3.3": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" + integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/types" "^7.16.0" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.16.5", "@babel/traverse@^7.7.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.5.tgz#d7d400a8229c714a59b87624fc67b0f1fbd4b2b3" + integrity sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/parser" "^7.16.5" + "@babel/types" "^7.16.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.14.5", "@babel/types@^7.16.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" + integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== + dependencies: + "@babel/helper-validator-identifier" "^7.15.7" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== + +"@ctrl/tinycolor@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz#c3c5ae543c897caa9c2a68630bed355be5f9990f" + integrity sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ== + +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@fortawesome/fontawesome-common-types@^0.2.36": + version "0.2.36" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz#b44e52db3b6b20523e0c57ef8c42d315532cb903" + integrity sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg== + +"@fortawesome/fontawesome-common-types@^0.3.0-beta3": + version "0.3.0-beta3" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.3.0-beta3.tgz#8bd8fc862085998adf0875e06ba0cd16a4a12d82" + integrity sha512-OT7fRVwAgQPOivlNP2gYcCe2uzyf+r6vSv/TgliTKnOiGVNL5O7LYh8nLucY0gbnhC6OygaXnA8+hY899FVooQ== + +"@fortawesome/fontawesome-svg-core@^1.2.36": + version "1.2.36" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz#4f2ea6f778298e0c47c6524ce2e7fd58eb6930e3" + integrity sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA== + dependencies: + "@fortawesome/fontawesome-common-types" "^0.2.36" + +"@fortawesome/free-solid-svg-icons@^6.0.0-beta3": + version "6.0.0-beta3" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.0.0-beta3.tgz#3c0570a6389c2e2a040479c16bd7fafe75465ad0" + integrity sha512-7+62D0MK5fy/mzmTNx0P4QzHWzKE4oXdUER6bvR3qzux7hpM3QNzqPAGML7iBf5LG5yYK8mnh+yHWa1KRKUfRg== + dependencies: + "@fortawesome/fontawesome-common-types" "^0.3.0-beta3" + +"@fortawesome/react-fontawesome@^0.1.16": + version "0.1.16" + resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.16.tgz#ce7665490214e20f929368d6b65f68884a99276a" + integrity sha512-aLmzDwC9rEOAJv2UJdMns89VZR5Ry4IHu5dQQh24Z/lWKEm44lfQr1UNalZlkUaQN8d155tNh+CS7ntntj1VMA== + dependencies: + prop-types "^15.7.2" + +"@gar/promisify@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" + integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.1.0": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" + slash "^3.0.0" + +"@jest/core@^26.6.0", "@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" + micromatch "^4.0.2" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^26.6.0", "@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== + dependencies: + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== + dependencies: + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" + +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^7.0.0" + optionalDependencies: + node-notifier "^8.0.0" + +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^26.6.0", "@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== + dependencies: + "@jest/test-result" "^26.6.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^26.6.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/transform@^27.4.5": + version "27.4.5" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.4.5.tgz#3dfe2e3680cd4aa27356172bf25617ab5b94f195" + integrity sha512-PuMet2UlZtlGzwc6L+aZmR3I7CEBpqadO03pU40l2RNY2fFJ191b9/ITB44LNOhVtsyykx0OZvj0PCyuLm7Eew== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.4.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^27.4.5" + jest-regex-util "^27.4.0" + jest-util "^27.4.2" + micromatch "^4.0.4" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^26.6.0", "@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@jest/types@^27.4.2": + version "27.4.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.4.2.tgz#96536ebd34da6392c2b7c7737d693885b5dd44a5" + integrity sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/fs@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.0.tgz#bec1d1b89c170d40e1b73ad6c943b0b75e7d2951" + integrity sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@pmmmwh/react-refresh-webpack-plugin@0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" + integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== + dependencies: + ansi-html "^0.0.7" + error-stack-parser "^2.0.6" + html-entities "^1.2.1" + native-url "^0.2.6" + schema-utils "^2.6.5" + source-map "^0.7.3" + +"@rollup/plugin-node-resolve@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" + integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== + dependencies: + "@rollup/pluginutils" "^3.0.8" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.14.2" + +"@rollup/plugin-replace@^2.3.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@surma/rollup-plugin-off-main-thread@^1.1.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" + integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== + dependencies: + ejs "^2.6.1" + magic-string "^0.25.0" + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/webpack@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + +"@testing-library/dom@^7.28.1": + version "7.31.2" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" + integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^4.2.2" + chalk "^4.1.0" + dom-accessibility-api "^0.5.6" + lz-string "^1.4.4" + pretty-format "^26.6.2" + +"@testing-library/jest-dom@^5.14.1": + version "5.16.1" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.1.tgz#3db7df5ae97596264a7da9696fe14695ba02e51f" + integrity sha512-ajUJdfDIuTCadB79ukO+0l8O+QwN0LiSxDaYUTI4LndbbUsGi6rWU1SCexXzBA2NSjlVB9/vbkasQIL3tmPBjw== + dependencies: + "@babel/runtime" "^7.9.2" + "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^5.0.0" + chalk "^3.0.0" + css "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" + +"@testing-library/react@^11.2.7": + version "11.2.7" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.2.7.tgz#b29e2e95c6765c815786c0bc1d5aed9cb2bf7818" + integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^7.28.1" + +"@testing-library/user-event@^13.1.9": + version "13.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== + dependencies: + "@babel/runtime" "^7.12.5" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@types/aria-query@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" + integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.7": + version "7.1.17" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.17.tgz#f50ac9d20d64153b510578d84f9643f9a3afbe64" + integrity sha512-6zzkezS9QEIL8yCBvXWxPTJPNuMeECJVxSOhxNY/jfq9LxOTHivaYTqr37n9LknWWRTIkzqH2UilS5QFvfa90A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" + integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + dependencies: + "@babel/types" "^7.3.0" + +"@types/eslint@^7.28.2": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" + integrity sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/html-minifier-terser@^5.0.0": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" + integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@*": + version "27.0.3" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.3.tgz#0cf9dfe9009e467f70a342f0f94ead19842a783a" + integrity sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg== + dependencies: + jest-diff "^27.0.0" + pretty-format "^27.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/minimatch@*": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/node@*": + version "17.0.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.1.tgz#88d501e84b6185f6489ecee4ba9e8fcec7f29bb2" + integrity sha512-NXKvBVUzIbs6ylBwmOwHFkZS2EXCcjnqr8ZCRNaXBkHAf+3mn/rPcJxwrzuc6movh8fxQAsUUfYklJ/EG+hZqQ== + +"@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.0.0": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.2.tgz#4c62fae93eb479660c3bd93f9d24d561597a8281" + integrity sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA== + +"@types/q@^1.5.1": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/tapable@^1", "@types/tapable@^1.0.5": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" + integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== + +"@types/testing-library__jest-dom@^5.9.1": + version "5.14.2" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.2.tgz#564fb2b2dc827147e937a75b639a05d17ce18b44" + integrity sha512-vehbtyHUShPxIa9SioxDwCvgxukDMH//icJG90sXQBUm5lJOHLT5kNeU9tnivhnA/TkOFMzGIXN2cTc4hY8/kg== + dependencies: + "@types/jest" "*" + +"@types/uglify-js@*": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.1.tgz#5e889e9e81e94245c75b6450600e1c5ea2878aea" + integrity sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ== + dependencies: + source-map "^0.6.1" + +"@types/webpack-sources@*": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" + integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4.41.8": + version "4.41.32" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212" + integrity sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg== + dependencies: + "@types/node" "*" + "@types/tapable" "^1" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + anymatch "^3.0.0" + source-map "^0.6.0" + +"@types/yargs-parser@*": + version "20.2.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" + integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== + +"@types/yargs@^15.0.0": + version "15.0.14" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" + integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^16.0.0": + version "16.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^4.26.1": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" + integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== + dependencies: + "@typescript-eslint/experimental-utils" "4.33.0" + "@typescript-eslint/scope-manager" "4.33.0" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.33.0", "@typescript-eslint/experimental-utils@^4.0.1": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" + integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/experimental-utils@^3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^4.26.1": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" + integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== + dependencies: + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" + integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== + +"@typescript-eslint/types@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== + +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== + dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/typescript-estree@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== + dependencies: + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/visitor-keys@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== + dependencies: + "@typescript-eslint/types" "4.33.0" + eslint-visitor-keys "^2.0.0" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3, abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4: + version "8.6.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" + integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" + integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.8.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" + integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html@0.0.7, ansi-html@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +antd@^4.16.2: + version "4.17.4" + resolved "https://registry.yarnpkg.com/antd/-/antd-4.17.4.tgz#fa409aa45f4ea2992fd6832889b4ac6d82d4786a" + integrity sha512-aiWi7TxAc7qAxbL412GSKpkWkL/wIhQe6ABuLLCiE1vqXnGTvav2Z0PiOUdFclZcfz2M2IofsUl2pLVN9I8iCg== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons" "^4.7.0" + "@ant-design/react-slick" "~0.28.1" + "@babel/runtime" "^7.12.5" + "@ctrl/tinycolor" "^3.4.0" + array-tree-filter "^2.1.0" + classnames "^2.2.6" + copy-to-clipboard "^3.2.0" + lodash "^4.17.21" + memoize-one "^6.0.0" + moment "^2.25.3" + rc-cascader "~2.3.0" + rc-checkbox "~2.3.0" + rc-collapse "~3.1.0" + rc-dialog "~8.6.0" + rc-drawer "~4.4.2" + rc-dropdown "~3.2.0" + rc-field-form "~1.21.0" + rc-image "~5.2.5" + rc-input-number "~7.3.0" + rc-mentions "~1.6.1" + rc-menu "~9.0.12" + rc-motion "^2.4.4" + rc-notification "~4.5.7" + rc-pagination "~3.1.9" + rc-picker "~2.5.17" + rc-progress "~3.1.0" + rc-rate "~2.9.0" + rc-resize-observer "^1.1.2" + rc-select "~13.2.1" + rc-slider "~9.7.4" + rc-steps "~4.1.0" + rc-switch "~3.2.0" + rc-table "~7.19.0" + rc-tabs "~11.10.0" + rc-textarea "~0.3.0" + rc-tooltip "~5.1.1" + rc-tree "~5.3.0" + rc-tree-select "~4.8.0" + rc-trigger "^5.2.10" + rc-upload "~4.3.0" + rc-util "^5.14.0" + scroll-into-view-if-needed "^2.2.25" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +aria-query@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" + integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== + +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.1.3, array-includes@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" + integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" + integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + +array.prototype.flatmap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" + integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.19.0" + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async-validator@^4.0.2: + version "4.0.7" + resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-4.0.7.tgz#034a0fd2103a6b2ebf010da75183bec299247afe" + integrity sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.8.8" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" + integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + picocolors "^0.2.1" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +axe-core@^4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" + integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== + dependencies: + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + +babel-jest@^27.0.2: + version "27.4.5" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.4.5.tgz#d38bd0be8ea71d8b97853a5fc9f76deeb095c709" + integrity sha512-3uuUTjXbgtODmSv/DXO9nZfD52IyC2OYTFaXGRzL0kpykzroaquCrD5+lZNafTvZlnNqZHt5pb0M08qVBZnsnA== + dependencies: + "@jest/transform" "^27.4.5" + "@jest/types" "^27.4.2" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^27.4.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + +babel-loader@8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" + integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^1.4.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-jest-hoist@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz#d7831fc0f93573788d80dee7e682482da4c730d6" + integrity sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-named-asset-import@^0.3.7: + version "0.3.8" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" + integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd" + integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.0" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz#0b571f4cf3d67f911512f5c04842a7b8e8263087" + integrity sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.0" + core-js-compat "^3.18.0" + +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be" + integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.0" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== + dependencies: + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-jest@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz#70d0e676a282ccb200fbabd7f415db5fdf393bca" + integrity sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg== + dependencies: + babel-plugin-jest-hoist "^27.4.0" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-react-app@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" + integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== + dependencies: + "@babel/core" "^7.16.0" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-decorators" "^7.16.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-transform-flow-strip-types" "^7.16.0" + "@babel/plugin-transform-react-display-name" "^7.16.0" + "@babel/plugin-transform-runtime" "^7.16.4" + "@babel/preset-env" "^7.16.4" + "@babel/preset-react" "^7.16.0" + "@babel/preset-typescript" "^7.16.0" + "@babel/runtime" "^7.16.3" + babel-plugin-macros "^3.1.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + dependencies: + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +body-parser@1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" + integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== + dependencies: + bytes "3.1.1" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.8.1" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.9.6" + raw-body "2.4.2" + type-is "~1.6.18" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +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" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.14.2: + version "4.14.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" + integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== + dependencies: + caniuse-lite "^1.0.30001125" + electron-to-chromium "^1.3.564" + escalade "^3.0.2" + node-releases "^1.1.61" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.17.5, browserslist@^4.19.1, browserslist@^4.6.2, browserslist@^4.6.4: + version "4.19.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== + dependencies: + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" + integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^15.0.5: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + dependencies: + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" + integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001286: + version "1.0.30001291" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001291.tgz#08a8d2cfea0b2cf2e1d94dd795942d0daef6108c" + integrity sha512-roMV5V0HNGgJ88s42eE70sstqGW/gwFndosYrikHthw98N5tLnOTxFqMLQjZVRxTWFlJ4rn+MsgXrR7MDPY4jA== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +case-sensitive-paths-webpack-plugin@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +check-types@^11.1.1: + version "11.1.2" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" + integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" + integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== + +clean-css@^4.2.3: + version "4.2.4" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" + integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.6.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" + integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1, component-emitter@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +compute-scroll-into-view@^1.0.17: + version "1.0.17" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" + integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + +cookiejar@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" + integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== + +copy-anything@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87" + integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ== + dependencies: + is-what "^3.12.0" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-to-clipboard@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" + integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== + dependencies: + toggle-selection "^1.0.6" + +core-js-compat@^3.18.0, core-js-compat@^3.19.1: + version "3.20.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.0.tgz#fd704640c5a213816b6d10ec0192756111e2c9d1" + integrity sha512-relrah5h+sslXssTTOkvqcC/6RURifB0W5yhYBdBkaPYa5/2KBMiog3XiD+s3TwEHWxInWVv4Jx2/Lw0vng+IQ== + dependencies: + browserslist "^4.19.1" + semver "7.0.0" + +core-js-pure@^3.19.0: + version "3.20.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.0.tgz#7253feccf8bb05b72c153ddccdbe391ddbffbe03" + integrity sha512-qsrbIwWSEEYOM7z616jAVgwhuDDtPLwZSpUsU3vyUkHYqKTf/uwOJBZg2V7lMurYWkpVlaVOxBrfX0Q3ppvjfg== + +core-js@^2.4.0, core-js@^2.5.7: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-js@^3.6.5: + version "3.20.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.0.tgz#1c5ac07986b8d15473ab192e45a2e115a4a95b79" + integrity sha512-KjbKU7UEfg4YPpskMtMXPhUKn7m/1OdTHTVjy09ScR2LVaoUXe8Jh0UdvN2EKUR6iKTJph52SJP95mAB0MnVLQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" + integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== + dependencies: + camelcase "^6.0.0" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^2.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.3" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.1" + semver "^7.3.2" + +css-mediaquery@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/css-mediaquery/-/css-mediaquery-0.1.2.tgz#6a2c37344928618631c54bd33cedd301da18bea0" + integrity sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA= + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.0.tgz#ab28276d3afb00cc05e818bd33eb030f14f57895" + integrity sha512-6YVG6hsH9yIb/si3Th/is8Pex7qnVHO6t7q7U6TIUnkQASGbS8tnUDBftnPynLNnuUl/r2+PTd0ekiiq7R0zJw== + dependencies: + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +css@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== + dependencies: + inherits "^2.0.4" + source-map "^0.6.1" + source-map-resolve "^0.6.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.3" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.11" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.8" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" + integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +date-fns@2.x, date-fns@^2.27.0: + version "2.27.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.27.0.tgz#e1ff3c3ddbbab8a2eaadbb6106be2929a5a2d92b" + integrity sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q== + +dayjs@1.x: + version "1.10.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" + integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +debug@^3.1.1, debug@^3.2.5, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decimal.js@^10.2.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-newline@^3.0.0: + version "3.1.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: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + +diff-sequences@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.4.0.tgz#d783920ad8d06ec718a060d00196dfef25b132a5" + integrity sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.6: + version "0.5.10" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.10.tgz#caa6d08f60388d0bb4539dd75fe458a9a1d0014c" + integrity sha512-Xu9mD0UjrJisTmv7lmVSDMagQcU9R5hwAbxsaAE/35XPnPLJobbuREfV/rraiSaEj/UOvgrzQs66zyTWTlyd+g== + +dom-align@^1.7.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.2.tgz#0f8164ebd0c9c21b0c790310493cd855892acd4b" + integrity sha512-pHuazgqrsTFrGU2WLDdXxCFabkdQDx72ddkraZNih1KsMcN5qsRSTR9O4VJRlwTPCPb5COYg3LOfiMHHcPInHg== + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" + integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== + dependencies: + domelementtype "^2.2.0" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.17: + version "1.4.24" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.24.tgz#9cf8a92d5729c480ee47ff0aa5555f57467ae2fa" + integrity sha512-erwx5r69B/WFfFuF2jcNN0817BfDBdC4765kQ6WltOMuwsimlQo3JTEq0Cle+wpHralwdeX3OfAtw/mHxPK0Wg== + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" + integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.1" + is-string "^1.0.7" + is-weakref "^1.0.1" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-map@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.0.2, escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" + integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== + dependencies: + confusing-browser-globals "^1.0.10" + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-module-utils@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" + integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + pkg-dir "^2.0.0" + +eslint-plugin-flowtype@^5.7.2: + version "5.10.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz#7764cc63940f215bf3f0bd2d9a1293b2b9b2b4bb" + integrity sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw== + dependencies: + lodash "^4.17.15" + string-natural-compare "^3.0.1" + +eslint-plugin-import@^2.23.4: + version "2.25.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz#a554b5f66e08fb4f6dc99221866e57cfff824766" + integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.1" + has "^1.0.3" + is-core-module "^2.8.0" + is-glob "^4.0.3" + minimatch "^3.0.4" + object.values "^1.1.5" + resolve "^1.20.0" + tsconfig-paths "^3.11.0" + +eslint-plugin-jest@^24.3.6: + version "24.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.7.0.tgz#206ac0833841e59e375170b15f8d0955219c4889" + integrity sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA== + dependencies: + "@typescript-eslint/experimental-utils" "^4.0.1" + +eslint-plugin-jsx-a11y@^6.4.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" + integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== + dependencies: + "@babel/runtime" "^7.16.3" + aria-query "^4.2.2" + array-includes "^3.1.4" + ast-types-flow "^0.0.7" + axe-core "^4.3.5" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.7" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.2.1" + language-tags "^1.0.5" + minimatch "^3.0.4" + +eslint-plugin-react-hooks@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172" + integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== + +eslint-plugin-react@^7.24.0: + version "7.27.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz#469202442506616f77a854d91babaae1ec174b45" + integrity sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA== + dependencies: + array-includes "^3.1.4" + array.prototype.flatmap "^1.2.5" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.0.4" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.0" + object.values "^1.1.5" + prop-types "^15.7.2" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.6" + +eslint-plugin-testing-library@^3.9.2: + version "3.10.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz#609ec2b0369da7cf2e6d9edff5da153cc31d87bd" + integrity sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA== + dependencies: + "@typescript-eslint/experimental-utils" "^3.10.1" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-webpack-plugin@^2.5.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.6.0.tgz#3bd4ada4e539cb1f6687d2f619073dbb509361cd" + integrity sha512-V+LPY/T3kur5QO3u+1s34VDTcRxjXWPUGM4hlmTb5DwVD0OQz631yGTxJZf4SpAqAjdbBVe978S8BJeHpAdOhQ== + dependencies: + "@types/eslint" "^7.28.2" + arrify "^2.0.1" + jest-worker "^27.3.1" + micromatch "^4.0.4" + normalize-path "^3.0.0" + schema-utils "^3.1.1" + +eslint@^7.28.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + dependencies: + d "1" + es5-ext "~0.10.14" + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^1.0.7: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" + integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.6" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^26.6.0, expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== + dependencies: + "@jest/types" "^26.6.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + +express@^4.17.1: + version "4.17.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" + integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.4.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.9.6" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" + integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + dependencies: + type "^2.5.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.1.1: + version "3.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fast-safe-stringify@^2.0.7: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" + integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" + integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.14.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.6.tgz#8cfb281bbc035b3c067d6cd975b0f6ade6e855cd" + integrity sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fork-ts-checker-webpack-plugin@4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" + integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== + dependencies: + "@babel/code-frame" "^7.5.5" + chalk "^2.4.1" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +formidable@^1.2.2: + version "1.2.6" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.6.tgz#d2a51d60162bbc9b4a055d8457a7c75315d1a168" + integrity sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ== + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.6.0, globals@^13.9.0: + version "13.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" + integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== + dependencies: + type-fest "^0.20.2" + +globby@11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.8" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.1.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^1.2.1, html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-webpack-plugin@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" + integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== + dependencies: + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" + integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +hyphenate-style-name@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4, ignore@^5.1.8: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +immer@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" + integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +import-local@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0" + integrity sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.2.0, is-core-module@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-negative-zero@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.0.4, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-shared-array-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" + integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-weakref@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-what@^3.12.0: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-instrument@^5.0.4: + version "5.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" + integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.1.tgz#7085857f17d2441053c6ce5c3b8fdf6882289397" + integrity sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== + dependencies: + "@jest/types" "^26.6.2" + execa "^4.0.0" + throat "^5.0.0" + +jest-circus@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-26.6.0.tgz#7d9647b2e7f921181869faae1f90a2629fd70705" + integrity sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.0" + "@jest/test-result" "^26.6.0" + "@jest/types" "^26.6.0" + "@types/babel__traverse" "^7.0.4" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^26.6.0" + is-generator-fn "^2.0.0" + jest-each "^26.6.0" + jest-matcher-utils "^26.6.0" + jest-message-util "^26.6.0" + jest-runner "^26.6.0" + jest-runtime "^26.6.0" + jest-snapshot "^26.6.0" + jest-util "^26.6.0" + pretty-format "^26.6.0" + stack-utils "^2.0.2" + throat "^5.0.0" + +jest-cli@^26.6.0: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== + dependencies: + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + import-local "^3.0.2" + is-ci "^2.0.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" + prompts "^2.0.1" + yargs "^15.4.1" + +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + micromatch "^4.0.2" + pretty-format "^26.6.2" + +jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-diff@^27.0.0: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.2.tgz#786b2a5211d854f848e2dcc1e324448e9481f36f" + integrity sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.4.0" + jest-get-type "^27.4.0" + pretty-format "^27.4.2" + +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== + dependencies: + detect-newline "^3.0.0" + +jest-each@^26.6.0, jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" + +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-get-type@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5" + integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ== + +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== + dependencies: + "@jest/types" "^26.6.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + +jest-haste-map@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.4.5.tgz#c2921224a59223f91e03ec15703905978ef0cc1a" + integrity sha512-oJm1b5qhhPs78K24EDGifWS0dELYxnoBiDhatT/FThgB9yxqUm5F6li3Pv+Q+apMBmmPNzOBnZ7ZxWMB1Leq1Q== + dependencies: + "@jest/types" "^27.4.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^27.4.0" + jest-serializer "^27.4.0" + jest-util "^27.4.2" + jest-worker "^27.4.5" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^26.6.2" + is-generator-fn "^2.0.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" + throat "^5.0.0" + +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== + dependencies: + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-matcher-utils@^26.6.0, jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== + dependencies: + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-message-util@^26.6.0, jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" + +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-regex-util@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.4.0.tgz#e4c45b52653128843d07ad94aec34393ea14fbca" + integrity sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg== + +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== + dependencies: + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" + +jest-resolve@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.0.tgz#070fe7159af87b03e50f52ea5e17ee95bbee40e1" + integrity sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ== + dependencies: + "@jest/types" "^26.6.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.0" + read-pkg-up "^7.0.1" + resolve "^1.17.0" + slash "^3.0.0" + +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" + slash "^3.0.0" + +jest-runner@^26.6.0, jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" + source-map-support "^0.5.6" + throat "^5.0.0" + +jest-runtime@^26.6.0, jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.4.1" + +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + +jest-serializer@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.4.0.tgz#34866586e1cae2388b7d12ffa2c7819edef5958a" + integrity sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + +jest-snapshot@^26.6.0, jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" + graceful-fs "^4.2.4" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + natural-compare "^1.4.0" + pretty-format "^26.6.2" + semver "^7.3.2" + +jest-util@^26.6.0, jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-util@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.4.2.tgz#ed95b05b1adfd761e2cda47e0144c6a58e05a621" + integrity sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA== + dependencies: + "@jest/types" "^27.4.2" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.4" + picomatch "^2.2.3" + +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + leven "^3.1.0" + pretty-format "^26.6.2" + +jest-watch-typeahead@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz#45221b86bb6710b7e97baaa1640ae24a07785e63" + integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== + dependencies: + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^26.0.0" + jest-watcher "^26.3.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + +jest-watcher@^26.3.0, jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== + dependencies: + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" + +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^26.5.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^27.3.1, jest-worker@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.5.tgz#d696e3e46ae0f24cff3fa7195ffba22889262242" + integrity sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.0.tgz#546b25a1d8c888569dbbe93cae131748086a4a25" + integrity sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA== + dependencies: + "@jest/core" "^26.6.0" + import-local "^3.0.2" + jest-cli "^26.6.0" + +"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" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsdom@^16.4.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + integrity sha1-tje9O6nqvhIsg+lyBIOusQ0skEo= + dependencies: + string-convert "^0.2.0" + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" + integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== + dependencies: + array-includes "^3.1.3" + object.assign "^4.1.2" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" + integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== + +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +less-loader@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-6.1.0.tgz#59fd591df408ced89a40fce11a2aea449b005631" + integrity sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA== + dependencies: + clone "^2.1.2" + less "^3.11.1" + loader-utils "^2.0.0" + schema-utils "^2.6.6" + +less@^3.11.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/less/-/less-3.13.1.tgz#0ebc91d2a0e9c0c6735b83d496b0ab0583077909" + integrity sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw== + dependencies: + copy-anything "^2.0.1" + tslib "^1.10.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + native-request "^1.0.5" + source-map "~0.6.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loglevel@^1.6.8: + version "1.8.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114" + integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +matchmediaquery@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/matchmediaquery/-/matchmediaquery-0.3.1.tgz#8247edc47e499ebb7c58f62a9ff9ccf5b815c6d7" + integrity sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ== + dependencies: + css-mediaquery "^0.1.2" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@^1.1.2, methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + +mime@1.6.0, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4, mime@^2.4.6: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== + dependencies: + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" + +mini-css-extract-plugin@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" + integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mobx-react-lite@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.2.2.tgz#cee5f09e6b0e4d2705d87276baf1de74d997fa33" + integrity sha512-FxJJMqmHcnQYOVVs2DdjNHioGlFsXF5/9VHztS9NAfIT3DYrxNZzVi119Zr/OmlWKkWNkAsssSNzPkqautfL4A== + +mobx@^6.3.2: + version "6.3.9" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.3.9.tgz#cce102d9aaa5a8793a7d5d2cf33ddb7a98c14e27" + integrity sha512-u9vhETRPgx6s+MD2NhGaOQJMJa/qszflwFxKryCXotERWY77ocdrRQUp7Jwt1urjefUXNj3fQbTnKrCV+kBaXw== + +moment@^2.24.0, moment@^2.25.3: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +nan@^2.12.1: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== + +nanoid@^3.1.30: + version "3.1.30" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" + integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +native-request@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.1.0.tgz#acdb30fe2eefa3e1bc8c54b3a6852e9c5c0d3cb0" + integrity sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw== + +native-url@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" + integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== + dependencies: + querystring "^0.2.0" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-notifier@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" + integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== + dependencies: + growly "^1.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" + shellwords "^0.1.1" + uuid "^8.3.0" + which "^2.0.2" + +node-releases@^1.1.61: + version "1.1.77" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" + integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== + +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== + +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.11.0, object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.0, object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" + integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.hasown@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" + integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0, object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" + integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +particles-bg@^2.5.5: + version "2.5.5" + resolved "https://registry.yarnpkg.com/particles-bg/-/particles-bg-2.5.5.tgz#421d3c4745dfdcc1fa71fa1c57044846fe3514c4" + integrity sha512-NzjgmayGwyvH/hGq437++nNc9qUCrsV1riX+m0+kuvbJSXStyUJ3hJocejNKtvOVuml0RfUp64pRt3UmmmAgsQ== + dependencies: + proton-engine "^4.1.3" + raf-manager "^0.3.0" + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6" + integrity sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw== + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== + dependencies: + postcss "^7" + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== + dependencies: + postcss "^7.0.26" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== + dependencies: + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== + dependencies: + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz#459dd27df6bc2ba64608824ba39e45dacf5e852d" + integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ== + dependencies: + postcss "^8.1.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.7" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz#48404830a635113a71fd79397de8209ed05a66fc" + integrity sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@7.0.36: + version "7.0.36" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" + integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +postcss@^8.1.0: + version "8.4.5" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" + integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== + dependencies: + nanoid "^3.1.30" + picocolors "^1.0.0" + source-map-js "^1.0.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +pretty-bytes@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + +pretty-format@^26.6.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^27.0.0, pretty-format@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.2.tgz#e4ce92ad66c3888423d332b40477c87d1dac1fb8" + integrity sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw== + dependencies: + "@jest/types" "^27.4.2" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prompts@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" + integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proton-engine@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/proton-engine/-/proton-engine-4.2.1.tgz#db938e4f673ddbd91ac70628b0733283a4571ef7" + integrity sha512-c72hgcnwMyyvUoy7Jq/HX3HQZnAo5MUNvFbyZHiWZrwcERX9+lYzM9YyT0iueXVAJpt+r8nrPan9F3HTXj7IsA== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +psl@^1.1.33: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.9.6: + version "6.9.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== + +qs@^6.9.4: + version "6.10.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.2.tgz#c1431bea37fc5b24c5bdbafa20f16bdf2a4b9ffe" + integrity sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw== + dependencies: + side-channel "^1.0.4" + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +raf-manager@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/raf-manager/-/raf-manager-0.3.0.tgz#ec9a659e8a50534e4d64200b7a39ce9905f10e9c" + integrity sha512-qLpVgVlUmwtlY35zoyCQwLWMOpLkVtiItPd/RxouHAh80XZjoh84CF5pFBVyIIUWXubypSJi1OBJS4jM7onOng== + dependencies: + core-js "^2.5.7" + es6-map "^0.1.5" + +raf@^3.1.0, raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" + integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== + dependencies: + bytes "3.1.1" + http-errors "1.8.1" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc-align@^4.0.0: + version "4.0.11" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.11.tgz#8198c62db266bc1b8ef05e56c13275bf72628a5e" + integrity sha512-n9mQfIYQbbNTbefyQnRHZPWuTEwG1rY4a9yKlIWHSTbgwI+XUMGRYd0uJ5pE2UbrNX0WvnMBA1zJ3Lrecpra/A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + dom-align "^1.7.0" + lodash "^4.17.21" + rc-util "^5.3.0" + resize-observer-polyfill "^1.5.1" + +rc-cascader@~2.3.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-2.3.3.tgz#605d04ef469cdd5d892e38cce291157d5a8af941" + integrity sha512-ckD8rKJjS8mdXxylWh1PtIHSFhbj/yf1NimyooqeJlvtLhzRZXIHCj4IuOjwYZ6J1DqoOCCdJfVtc7UeZia38w== + dependencies: + "@babel/runtime" "^7.12.5" + array-tree-filter "^2.1.0" + classnames "^2.3.1" + rc-tree-select "~4.8.0" + rc-trigger "^5.0.4" + rc-util "^5.6.1" + warning "^4.0.1" + +rc-checkbox@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.3.2.tgz#f91b3678c7edb2baa8121c9483c664fa6f0aefc1" + integrity sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + +rc-collapse@~3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.1.2.tgz#76028a811b845d03d9460ccc409c7ea8ad09db14" + integrity sha512-HujcKq7mghk/gVKeI6EjzTbb8e19XUZpakrYazu1MblEZ3Hu3WBMSN4A3QmvbF6n1g7x6lUlZvsHZ5shABWYOQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.3.4" + rc-util "^5.2.1" + shallowequal "^1.1.0" + +rc-dialog@~8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-8.6.0.tgz#3b228dac085de5eed8c6237f31162104687442e7" + integrity sha512-GSbkfqjqxpZC5/zc+8H332+q5l/DKUhpQr0vdX2uDsxo5K0PhvaMEVjyoJUTkZ3+JstEADQji1PVLVb/2bJeOQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-motion "^2.3.0" + rc-util "^5.6.1" + +rc-drawer@~4.4.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.4.3.tgz#2094937a844e55dc9644236a2d9fba79c344e321" + integrity sha512-FYztwRs3uXnFOIf1hLvFxIQP9MiZJA+0w+Os8dfDh/90X7z/HqP/Yg+noLCIeHEbKln1Tqelv8ymCAN24zPcfQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-util "^5.7.0" + +rc-dropdown@^3.2.0, rc-dropdown@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.2.0.tgz#da6c2ada403842baee3a9e909a0b1a91ba3e1090" + integrity sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-trigger "^5.0.4" + +rc-field-form@~1.21.0: + version "1.21.2" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.21.2.tgz#85bda1ee006ae9f1d146e1000337c69b4bb6d101" + integrity sha512-LR/bURt/Tf5g39mb0wtMtQuWn42d/7kEzpzlC5fNC7yaRVmLTtlPP4sBBlaViETM9uZQKLoaB0Pt9Mubhm9gow== + dependencies: + "@babel/runtime" "^7.8.4" + async-validator "^4.0.2" + rc-util "^5.8.0" + +rc-image@~5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-5.2.5.tgz#44e6ffc842626827960e7ab72e1c0d6f3a8ce440" + integrity sha512-qUfZjYIODxO0c8a8P5GeuclYXZjzW4hV/5hyo27XqSFo1DmTCs2HkVeQObkcIk5kNsJtgsj1KoPThVsSc/PXOw== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + rc-dialog "~8.6.0" + rc-util "^5.0.6" + +rc-input-number@~7.3.0: + version "7.3.4" + resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-7.3.4.tgz#674aea98260250287d36e330a7e065b174486e9d" + integrity sha512-W9uqSzuvJUnz8H8vsVY4kx+yK51SsAxNTwr8SNH4G3XqQNocLVmKIibKFRjocnYX1RDHMND9FFbgj2h7E7nvGA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.9.8" + +rc-mentions@~1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.6.1.tgz#46035027d64aa33ef840ba0fbd411871e34617ae" + integrity sha512-LDzGI8jJVGnkhpTZxZuYBhMz3avcZZqPGejikchh97xPni/g4ht714Flh7DVvuzHQ+BoKHhIjobHnw1rcP8erg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-menu "^9.0.0" + rc-textarea "^0.3.0" + rc-trigger "^5.0.4" + rc-util "^5.0.1" + +rc-menu@^9.0.0, rc-menu@~9.0.12: + version "9.0.14" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.0.14.tgz#289bda4a2f6c5ebb3248e2e305d52cf0c73cb9d5" + integrity sha512-CIox5mZeLDAi32SlHrV7UeSjv7tmJJhwRyxQtZCKt351w3q59XlL4WMFOmtT9gwIfP9h0XoxdBZUMe/xzkp78A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.4.3" + rc-overflow "^1.2.0" + rc-trigger "^5.1.2" + rc-util "^5.12.0" + shallowequal "^1.1.0" + +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.4.4.tgz#e995d5fa24fc93065c24f714857cf2677d655bb0" + integrity sha512-ms7n1+/TZQBS0Ydd2Q5P4+wJTSOrhIrwNxLXCZpR7Fa3/oac7Yi803HDALc2hLAKaCTQtw9LmQeB58zcwOsqlQ== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.2.1" + +rc-notification@~4.5.7: + version "4.5.7" + resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.5.7.tgz#265e6e6a0c1a0fac63d6abd4d832eb8ff31522f1" + integrity sha512-zhTGUjBIItbx96SiRu3KVURcLOydLUHZCPpYEn1zvh+re//Tnq/wSxN4FKgp38n4HOgHSVxcLEeSxBMTeBBDdw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.2.0" + rc-util "^5.0.1" + +rc-overflow@^1.0.0, rc-overflow@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.2.2.tgz#95b0222016c0cdbdc0db85f569c262e7706a5f22" + integrity sha512-X5kj9LDU1ue5wHkqvCprJWLKC+ZLs3p4He/oxjZ1Q4NKaqKBaYf5OdSzRSgh3WH8kSdrfU8LjvlbWnHgJOEkNQ== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.5.1" + +rc-pagination@~3.1.9: + version "3.1.14" + resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.1.14.tgz#1f7d0342edb80dca0989e4ddbe937b1d4657d88d" + integrity sha512-tcugvxrtPiVU00Uh0IwC8NIUlxa4KtA9pXcaMNJdSHeO2uQqVkHEwllsULTAWRF3zRV2ozo2weP/DRKIUrX+Zg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + +rc-picker@~2.5.17: + version "2.5.19" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.5.19.tgz#73d07546fac3992f0bfabf2789654acada39e46f" + integrity sha512-u6myoCu/qiQ0vLbNzSzNrzTQhs7mldArCpPHrEI6OUiifs+IPXmbesqSm0zilJjfzrZJLgYeyyOMSznSlh0GKA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + date-fns "2.x" + dayjs "1.x" + moment "^2.24.0" + rc-trigger "^5.0.4" + rc-util "^5.4.0" + shallowequal "^1.1.0" + +rc-progress@~3.1.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.1.4.tgz#66040d0fae7d8ced2b38588378eccb2864bad615" + integrity sha512-XBAif08eunHssGeIdxMXOmRQRULdHaDdIFENQ578CMb4dyewahmmfJRyab+hw4KH4XssEzzYOkAInTLS7JJG+Q== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + +rc-rate@~2.9.0: + version "2.9.1" + resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.9.1.tgz#e43cb95c4eb90a2c1e0b16ec6614d8c43530a731" + integrity sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.0.1" + +rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.1.2.tgz#214bc5d0de19e0a5fcd7d8352d9c1560dd7531b7" + integrity sha512-Qp+1x6D88FxyWBFRYP95IV9A1o0xlkC6qhiTX3YakE+o86QH9IzC7UVnltwmm4Q8uYH+E3F/HRmEiuxXJECdSw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.15.0" + resize-observer-polyfill "^1.5.1" + +rc-select@~13.2.1: + version "13.2.1" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-13.2.1.tgz#d69675f8bc72622a8f3bc024fa21bfee8d56257d" + integrity sha512-L2cJFAjVEeDiNVa/dlOVKE79OUb0J7sUBvWN3Viav3XHcjvv9Ovn4D8J9QhBSlDXeGuczZ81CZI3BbdHD25+Gg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-overflow "^1.0.0" + rc-trigger "^5.0.4" + rc-util "^5.9.8" + rc-virtual-list "^3.2.0" + +rc-slider@~9.7.4: + version "9.7.5" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.7.5.tgz#193141c68e99b1dc3b746daeb6bf852946f5b7f4" + integrity sha512-LV/MWcXFjco1epPbdw1JlLXlTgmWpB9/Y/P2yinf8Pg3wElHxA9uajN21lJiWtZjf5SCUekfSP6QMJfDo4t1hg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-tooltip "^5.0.1" + rc-util "^5.16.1" + shallowequal "^1.1.0" + +rc-steps@~4.1.0: + version "4.1.4" + resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-4.1.4.tgz#0ba82db202d59ca52d0693dc9880dd145b19dc23" + integrity sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w== + dependencies: + "@babel/runtime" "^7.10.2" + classnames "^2.2.3" + rc-util "^5.0.1" + +rc-switch@~3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-3.2.2.tgz#d001f77f12664d52595b4f6fb425dd9e66fba8e8" + integrity sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.0.1" + +rc-table@~7.19.0: + version "7.19.2" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.19.2.tgz#976337a5dace3b8e04bea9554d72bc83aa5ab301" + integrity sha512-NdpnoM50MK02H5/hGOsObfxCvGFUG5cHB9turE5BKJ81T5Ycbq193w5tLhnpILXe//Oanzr47MdMxkUnVGP+qg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-resize-observer "^1.0.0" + rc-util "^5.14.0" + shallowequal "^1.1.0" + +rc-tabs@~11.10.0: + version "11.10.5" + resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-11.10.5.tgz#53bbb642d04b307f8ce86e318ab99d519507b29b" + integrity sha512-DDuUdV6b9zGRYLtjI5hyejWLKoz1QiLWNgMeBzc3aMeQylZFhTYnFGdDc6HRqj5IYearNTsFPVSA+6VIT8g5cg== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "2.x" + rc-dropdown "^3.2.0" + rc-menu "^9.0.0" + rc-resize-observer "^1.0.0" + rc-util "^5.5.0" + +rc-textarea@^0.3.0, rc-textarea@~0.3.0: + version "0.3.6" + resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-0.3.6.tgz#b255a9dd78648033bac8daa281ad95249122420a" + integrity sha512-6esiDE4AG3lqnmCdgAp/nutrZAqZEfRT3K749H8vMzNtxy9JScuMJ9MMtWN2DDQh+LCDvX4dgflaRjDCqtDHWw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.7.0" + +rc-tooltip@^5.0.1, rc-tooltip@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.1.1.tgz#94178ed162d0252bc4993b725f5dc2ac0fccf154" + integrity sha512-alt8eGMJulio6+4/uDm7nvV+rJq9bsfxFDCI0ljPdbuoygUscbsMYb6EQgwib/uqsXQUvzk+S7A59uYHmEgmDA== + dependencies: + "@babel/runtime" "^7.11.2" + rc-trigger "^5.0.0" + +rc-tree-select@~4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.8.0.tgz#bcbcfb45553f84a878e4ff037ff00b526a4afa62" + integrity sha512-evuVIF7GHCGDdvISdBWl4ZYmG/8foof/RDtzCu/WFLA1tFKZD77RRC3khEsjh4WgsB0vllLe7j+ODJ7jHRcDRQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-select "~13.2.1" + rc-tree "~5.3.0" + rc-util "^5.7.0" + +rc-tree@~5.3.0: + version "5.3.5" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.3.5.tgz#99e5af72a619d2520961e16ee63049c67d27b894" + integrity sha512-nMlR7YArdL1m+FJXjl6Mt4n6S2+sVY6op2K3roB34YdVyq/Q4gDy5XT2cpiKGZrfCifX79N2LCihRrOGMO2UTw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-util "^5.16.1" + rc-virtual-list "^3.4.1" + +rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.10: + version "5.2.10" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.2.10.tgz#8a0057a940b1b9027eaa33beec8a6ecd85cce2b1" + integrity sha512-FkUf4H9BOFDaIwu42fvRycXMAvkttph9AlbCZXssZDVzz2L+QZ0ERvfB/4nX3ZFPh1Zd+uVGr1DEDeXxq4J1TA== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + rc-align "^4.0.0" + rc-motion "^2.0.0" + rc-util "^5.5.0" + +rc-upload@~4.3.0: + version "4.3.3" + resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-4.3.3.tgz#e237aa525e5313fa16f4d04d27f53c2f0e157bb8" + integrity sha512-YoJ0phCRenMj1nzwalXzciKZ9/FAaCrFu84dS5pphwucTC8GUWClcDID/WWNGsLFcM97NqIboDqrV82rVRhW/w== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.2.0" + +rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.12.0, rc-util@^5.14.0, rc-util@^5.15.0, rc-util@^5.16.1, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0, rc-util@^5.5.1, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4, rc-util@^5.9.8: + version "5.16.1" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.16.1.tgz#374db7cb735512f05165ddc3d6b2c61c21b8b4e3" + integrity sha512-kSCyytvdb3aRxQacS/71ta6c+kBWvM1v8/2h9d/HaNWauc3qB8pLnF20PJ8NajkNN8gb+rR1l0eWO+D4Pz+LLQ== + dependencies: + "@babel/runtime" "^7.12.5" + react-is "^16.12.0" + shallowequal "^1.1.0" + +rc-virtual-list@^3.2.0, rc-virtual-list@^3.4.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.2.tgz#1078327aa7230b5e456d679ed2ce99f3c036ebd1" + integrity sha512-OyVrrPvvFcHvV0ssz5EDZ+7Rf5qLat/+mmujjchNw5FfbJWNDwkpQ99EcVE6+FtNRmX9wFa1LGNpZLUTvp/4GQ== + dependencies: + classnames "^2.2.6" + rc-resize-observer "^1.0.0" + rc-util "^5.0.7" + +react-app-polyfill@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf" + integrity sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA== + dependencies: + core-js "^3.6.5" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.7" + whatwg-fetch "^3.4.1" + +react-dev-utils@^11.0.4: + version "11.0.4" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" + integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== + dependencies: + "@babel/code-frame" "7.10.4" + address "1.1.2" + browserslist "4.14.2" + chalk "2.4.2" + cross-spawn "7.0.3" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.1.0" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "4.1.6" + global-modules "2.0.0" + globby "11.0.1" + gzip-size "5.1.1" + immer "8.0.1" + is-root "2.1.0" + loader-utils "2.0.0" + open "^7.0.2" + pkg-up "3.1.0" + prompts "2.4.0" + react-error-overlay "^6.0.9" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-error-overlay@^6.0.9: + version "6.0.10" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6" + integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA== + +react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-motion@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz#0dd3a69e411316567927917c6626551ba0607316" + integrity sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ== + dependencies: + performance-now "^0.2.0" + prop-types "^15.5.8" + raf "^3.1.0" + +react-refresh@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" + integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== + +react-responsive@^9.0.0-beta.5: + version "9.0.0-beta.5" + resolved "https://registry.yarnpkg.com/react-responsive/-/react-responsive-9.0.0-beta.5.tgz#94b6eba0d089c4977d5353188a4d5a744392cbe3" + integrity sha512-Zvikc/28FsabQ4caLP1wIQlRPXBelYMct6dnUEwTRI4P7jH5d9x8RAMb1SbAZ0IdZGQHQ06aSRvhhg/tvqXktA== + dependencies: + hyphenate-style-name "^1.0.0" + matchmediaquery "^0.3.0" + prop-types "^15.6.1" + shallow-equal "^1.2.1" + +react-router-dom@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" + integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.2.1" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router-transition@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/react-router-transition/-/react-router-transition-2.1.0.tgz#07011711d25972400211f706a36ea96985d5ab5c" + integrity sha512-vL0JczAcs4s5MjWm1DSitoap9KRqE1m7YZopIXiT4x6NVrqXs9CGH1uLBBSZ3rJFwGBQRgsfY7NFe2ygDfGQ2Q== + dependencies: + prop-types "^15.7.2" + react-motion "^0.5.2" + +react-router@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" + integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.4.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerate-unicode-properties@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" + integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^4.7.1: + version "4.8.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" + integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^9.0.0" + regjsgen "^0.5.2" + regjsparser "^0.7.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" + integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.4: + version "2.0.7" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" + integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^3.0.1" + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve-url-loader@^3.1.2: + version "3.1.4" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz#3c16caebe0b9faea9c7cc252fa49d2353c412320" + integrity sha512-D3sQ04o0eeQEySLrcz4DsX3saHfsr8/N6tfhblxgZKXxMT2Louargg12oGNfoTRLV09GXhVUe5/qgA5vdgNigg== + dependencies: + adjust-sourcemap-loader "3.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.36" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.20.0, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +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== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup-plugin-babel@^4.3.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-terser@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" + integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== + dependencies: + "@babel/code-frame" "^7.5.5" + jest-worker "^24.9.0" + rollup-pluginutils "^2.8.2" + serialize-javascript "^4.0.0" + terser "^4.6.2" + +rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.31.1: + version "1.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" + integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== + dependencies: + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + +sass-loader@^10.0.5: + version "10.2.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.2.0.tgz#3d64c1590f911013b3fa48a0b22a83d5e1494716" + integrity sha512-kUceLzC1gIHz0zNJPpqRsJyisWatGYNFRmv2CKZK2/ngMJgLqxTbXwe/hJ85luyvZkgqU3VlJ33UVF2T/0g6mw== + dependencies: + klona "^2.0.4" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" + semver "^7.3.2" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0, schema-utils@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +scroll-into-view-if-needed@^2.2.25: + version "2.2.28" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.28.tgz#5a15b2f58a52642c88c8eca584644e01703d645a" + integrity sha512-8LuxJSuFVc92+0AdNv4QOxRL4Abeo1DgLnGNkn1XlaujPH/3cCFz3QI60r2VNu4obJJROzgnIUw5TKQkZvZI1w== + dependencies: + compute-scroll-into-view "^1.0.17" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.7: + version "1.10.11" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" + integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== + dependencies: + node-forge "^0.10.0" + +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.3.5, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "1.8.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.2" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-equal@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" + integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.6" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" + integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.7.3, source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.11" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c= + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" + integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" + integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.7.0" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +superagent-intercept@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/superagent-intercept/-/superagent-intercept-0.1.2.tgz#a6269dfb4bd86d51b8d99a55c12b0604685bd54b" + integrity sha1-piad+0vYbVG42ZpVwSsGBGhb1Us= + +superagent@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-6.1.0.tgz#09f08807bc41108ef164cfb4be293cebd480f4a6" + integrity sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg== + dependencies: + component-emitter "^1.3.0" + cookiejar "^2.1.2" + debug "^4.1.1" + fast-safe-stringify "^2.0.7" + form-data "^3.0.0" + formidable "^1.2.2" + methods "^1.1.2" + mime "^2.4.6" + qs "^6.9.4" + readable-stream "^3.6.0" + semver "^7.3.2" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^6.0.9: + version "6.7.5" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.5.tgz#f04478c351ef3d8c7904f0e8be90a1b62417d238" + integrity sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^6.0.2: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempy@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2, terser@^4.6.2, terser@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^5.3.4: + version "5.10.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-invariant@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" + integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== + +tiny-warning@^1.0.0, tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-pnp@1.2.0, ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tsconfig-paths@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" + integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.10.0, tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + +tsutils@^3.17.1, tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0, universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +url-parse@^1.4.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" + integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8-to-istanbul@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" + integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +warning@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-vitals@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-1.1.2.tgz#06535308168986096239aa84716e68b4c6ae6d1c" + integrity sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.44.2: + version "4.44.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" + integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.4.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" + integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== + dependencies: + workbox-core "^5.1.4" + +workbox-broadcast-update@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" + integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== + dependencies: + workbox-core "^5.1.4" + +workbox-build@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" + integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== + dependencies: + "@babel/core" "^7.8.4" + "@babel/preset-env" "^7.8.4" + "@babel/runtime" "^7.8.4" + "@hapi/joi" "^15.1.0" + "@rollup/plugin-node-resolve" "^7.1.1" + "@rollup/plugin-replace" "^2.3.1" + "@surma/rollup-plugin-off-main-thread" "^1.1.1" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^8.1.0" + glob "^7.1.6" + lodash.template "^4.5.0" + pretty-bytes "^5.3.0" + rollup "^1.31.1" + rollup-plugin-babel "^4.3.3" + rollup-plugin-terser "^5.3.1" + source-map "^0.7.3" + source-map-url "^0.4.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + tempy "^0.3.0" + upath "^1.2.0" + workbox-background-sync "^5.1.4" + workbox-broadcast-update "^5.1.4" + workbox-cacheable-response "^5.1.4" + workbox-core "^5.1.4" + workbox-expiration "^5.1.4" + workbox-google-analytics "^5.1.4" + workbox-navigation-preload "^5.1.4" + workbox-precaching "^5.1.4" + workbox-range-requests "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + workbox-streams "^5.1.4" + workbox-sw "^5.1.4" + workbox-window "^5.1.4" + +workbox-cacheable-response@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" + integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== + dependencies: + workbox-core "^5.1.4" + +workbox-core@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" + integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== + +workbox-expiration@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" + integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== + dependencies: + workbox-core "^5.1.4" + +workbox-google-analytics@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" + integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== + dependencies: + workbox-background-sync "^5.1.4" + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + +workbox-navigation-preload@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" + integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== + dependencies: + workbox-core "^5.1.4" + +workbox-precaching@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" + integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== + dependencies: + workbox-core "^5.1.4" + +workbox-range-requests@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" + integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== + dependencies: + workbox-core "^5.1.4" + +workbox-routing@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" + integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== + dependencies: + workbox-core "^5.1.4" + +workbox-strategies@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" + integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-streams@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" + integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-sw@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" + integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== + +workbox-webpack-plugin@5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz#7bfe8c16e40fe9ed8937080ac7ae9c8bde01e79c" + integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ== + dependencies: + "@babel/runtime" "^7.5.5" + fast-json-stable-stringify "^2.0.0" + source-map-url "^0.4.0" + upath "^1.1.2" + webpack-sources "^1.3.0" + workbox-build "^5.1.4" + +workbox-window@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" + integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== + dependencies: + workbox-core "^5.1.4" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +ws@^7.4.6: + version "7.5.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" + integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 4c8452b8bf2f1fe6b77b4c6963d1f95e1af6bdb3 Mon Sep 17 00:00:00 2001 From: Rido Akbar Ibrahim Date: Mon, 20 Dec 2021 15:18:56 +0700 Subject: [PATCH 105/324] add ci/cd script --- k8s/staging/deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/staging/deployment.yaml b/k8s/staging/deployment.yaml index 550cbb8..6294e28 100644 --- a/k8s/staging/deployment.yaml +++ b/k8s/staging/deployment.yaml @@ -15,7 +15,7 @@ spec: spec: containers: - name: ppob-frontend - image: registry-harbor.app.bangun-kreatif.com/empatnusabangsa/ppob-frontend:1 + image: registry-harbor.app.bangun-kreatif.com/empatnusabangsa/ppob-frontend: ports: - containerPort: 80 imagePullSecrets: From dc31406375231371146622bff53dac9ad7c3caea Mon Sep 17 00:00:00 2001 From: ilham Date: Mon, 20 Dec 2021 15:22:53 +0700 Subject: [PATCH 106/324] fix: get membership --- src/pages/Membership/Membership.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index ecc7eb9..f87e89c 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -117,16 +117,16 @@ export const Membership = observer(() => { key: "name", render: (text, record) => record?.name ?? record?.username, }, - { - title: "Username", - dataIndex: "username", - key: "username", - }, { title: "Role", dataIndex: "roleName", key: "role", }, + { + title: "Saldo", + dataIndex: ["coa","amount"], + key: ["coa","amount"], + }, { title: "Status", dataIndex: "isActive", From 78fb6f3cf02d39221508c7693843b5def6abdc05 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 20 Dec 2021 16:19:27 +0700 Subject: [PATCH 107/324] Pages Payback --- src/pages/App/DesktopLayout.js | 26 +++++++--- src/pages/App/MenuList.js | 10 ++-- src/pages/Membership/Membership.js | 2 +- src/pages/Payback/Payback.js | 8 +-- src/pages/Payback/PaybackFromUser.js | 74 +++++++++++++++++++--------- src/pages/Payback/PaybackModal.js | 10 ++-- src/store/payback.js | 26 +++++----- 7 files changed, 101 insertions(+), 55 deletions(-) diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 6172ca9..cf007ab 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -12,6 +12,8 @@ import { FileSyncOutlined, FileProtectOutlined, ShoppingCartOutlined, + AlipayOutlined, + PayCircleOutlined } from "@ant-design/icons"; import { AppRoute, LINKS } from "../../routes/app"; import { useStore } from "../../utils/useStore"; @@ -202,12 +204,24 @@ export const DesktopLayout = observer(() => { )} - - - - Payback - - + } + title="Payback" + > + + + + Payback To + + + + + + Payback + + + {store.authentication.userData.role !== "Admin" && ( diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index a099c3b..56137bb 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -14,6 +14,8 @@ import { ProjectOutlined, ShoppingCartOutlined, UserOutlined, + AlipayOutlined, + PayCircleOutlined } from "@ant-design/icons"; import { observer } from "mobx-react-lite"; import { useStore } from "../../utils/useStore"; @@ -127,14 +129,14 @@ export const MenuList = observer((props) => { } title="Payback"> - - Payback + + Payback To - - Payback User + + Payback diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index ecc7eb9..f98f51f 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -47,7 +47,7 @@ export const Membership = observer(() => { await getData(); await store.role.getData(isAdmin); - if (isAdmin) await store.supplier.getData(); + await store.supplier.getData(); setIsLoading(false); } catch (e) { setIsLoading(false); diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 34f9b4c..7f8296b 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -162,7 +162,7 @@ export const Payback = observer(() => { marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0, }} /> - {store.authentication.userData.role !== "Admin" && ( + {/* {store.authentication.userData.role !== "Admin" && ( - )} + )} */} {store.ui.mediaQuery.isDesktop && ( @@ -260,7 +260,7 @@ export const Payback = observer(() => { - { setInitialData({}); setVisibleModal(false); }} - /> + /> */} ); }); diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js index 94077a1..8d518da 100644 --- a/src/pages/Payback/PaybackFromUser.js +++ b/src/pages/Payback/PaybackFromUser.js @@ -52,18 +52,13 @@ export const PaybackFromUser = observer(() => { const columns = [ - // { - // title: "Name", - // dataIndex: "name", - // key: "name", - // }, { title: "Picture", dataIndex: "image_prove", key: "image_prove", render: (text, record) => ( { dataIndex: "amount", key: "amount", }, + { + title: "Action", + dataIndex: "amount", + key: "action", + render: (text, record) => ( + + + + + ), + }, // { // title: "Action", // key: "action", @@ -181,21 +211,21 @@ export const PaybackFromUser = observer(() => { columns={columns} dataSource={store.payback.data} bordered - // pagination={{ - // pageSize: store.membership.pageSize, - // total: store.membership.total_data, - // current: store.membership.page + 1, - // showSizeChanger: true, - // simple: false - // }} - // onChange={async (page) => { - // let pageNumber = page.current; - // store.membership.pageSize = page.pageSize; - // store.membership.page = pageNumber - 1; - // // store.membership.isLoading = true; - // await store.membership.getData(); - // // store.membership.isLoading = false; - // }} + pagination={{ + pageSize: store.payback.pageSize, + total: store.payback.total_data, + current: store.payback.page + 1, + showSizeChanger: true, + simple: false + }} + onChange={async (page) => { + let pageNumber = page.current; + store.payback.pageSize = page.pageSize; + store.payback.page = pageNumber - 1; + // store.membership.isLoading = true; + await store.payback.getData(); + // store.membership.isLoading = false; + }} /> )} @@ -236,7 +266,7 @@ export const PaybackFromUser = observer(() => { title={item.name} description={
- +
} /> diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index dc87207..a559aeb 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -22,6 +22,7 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => { const [fileUrl, setFileUrl] = useState(""); const firstIndexFileList = fileList[0]; const [isLoading, setIsLoading] = useState(false); + useEffect(() => { const init = async () => { @@ -93,13 +94,14 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => { console.log(data, "isi data2"); try { await store.payback.create(data); - message.success("Success Add New Member"); + message.success("Success Add Payback"); + await store.payback.getData(); } catch (e) { console.log(e, "apa errornya"); message.error("Failed Add Member"); } - - store.payback.visibleModalPayback = false; + + //store.payback.visibleModalPayback = false; form.resetFields(); }; @@ -143,7 +145,6 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
{ beforeUpload={beforeUpload} onPreview={handlePreview} onChange={handleChange} - defaultValue={"tes"} > {!firstIndexFileList ? uploadButton : null} diff --git a/src/store/payback.js b/src/store/payback.js index 1c36900..a0c580a 100644 --- a/src/store/payback.js +++ b/src/store/payback.js @@ -9,15 +9,15 @@ export class Payback { filterCategory = null; visibleModalPayback = false; - pageCategories = 0; - pageSizeCategories = 10; - dataCategories = []; - total_dataCategories = 0; + pagePayback = 0; + pageSizePayback = 10; + dataPayback = []; + total_dataPayback = 0; - pageSubCategories = 0; - pageSizeSubCategories = 10; - dataSubCategories = []; - total_dataSubCategories = 0; + pageSubPayback = 0; + pageSizeSubPayback = 10; + dataSubPayback = []; + total_dataPayback = 0; constructor(ctx) { this.ctx = ctx; @@ -29,14 +29,14 @@ export class Payback { const response = await http.get( `/transaction/deposit-return?page=${this.page}&pageSize=${this.pageSize}` ); - //console.log(response) + console.log(response) this.data = - response.body[0].map((item, idx) => { + response.body.data.map((item, idx) => { item.key = idx; return item; }) ?? []; - this.total_data = response.body.total_data ?? 0; + this.total_data = response.body.count ?? 0; } catch (e) { console.error(e); } @@ -49,12 +49,12 @@ export class Payback { ); console.log(response); this.data = - response.body[0].map((item, idx) => { + response.body.data.map((item, idx) => { item.key = idx; return item; }) ?? []; - this.total_data = response.body.total_data ?? 0; + this.total_data = response.body.count ?? 0; } catch (e) { console.error(e); } From cdaa4738b077d9da18d85bd6f9a3607b05001b4a Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 20 Dec 2021 16:37:34 +0700 Subject: [PATCH 108/324] pages payback --- src/component/SupplierComponent.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index b28fdf3..09e680d 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -69,7 +69,7 @@ export const SupplierComponent = observer((props) => { new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", - }).format(text), + }).format(text) }, { title: "Status", From edc61712ef126ca41a0fb8ff7c67ca45b631e48b Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 20 Dec 2021 17:13:56 +0700 Subject: [PATCH 109/324] pages transaction --- src/pages/Transaction/Product.js | 8 ++++---- src/store/authentication.js | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 7e7884d..9136263 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -50,11 +50,11 @@ export const Product = observer(() => { const handleBuyProduct = async (data) => { try { const response = await store.transaction.buyProduct({productCode: data}); - if (response.status === 200) { + // if (response.status === 200) { message.success("Success Buy Product"); - } else { - message.error("Failed Buy Product"); - } + // } else { + //message.error("Failed Buy Product"); + //} } catch (e) { console.log(e, "apa errornya"); message.error("Failed Buy Product"); diff --git a/src/store/authentication.js b/src/store/authentication.js index 9a98b01..0edda9e 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -34,7 +34,7 @@ export class Authentication { try { const result = await http.post('/auth/login').send({username, password}); - + TokenUtil.setAccessToken(result.body.access_token); TokenUtil.persistToken(); runInAction(() => { From 45eead9e5dd6475b1125eec150367ed8239a0233 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 20 Dec 2021 17:19:03 +0700 Subject: [PATCH 110/324] Pages Payback --- src/store/payback.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/store/payback.js b/src/store/payback.js index 41b98d5..adbc4f4 100644 --- a/src/store/payback.js +++ b/src/store/payback.js @@ -29,7 +29,7 @@ export class Payback { const response = await http.get( `/transaction/deposit-return?page=${this.page}&pageSize=${this.pageSize}` ); - console.log(response) + //console.log(response) this.data = response.body.data.map((item, idx) => { item.key = idx; @@ -47,7 +47,7 @@ export class Payback { const response = await http.get( `/transaction/deposit-return/confirmation?page=${this.page}&pageSize=${this.pageSize}` ); - console.log(response); + //console.log(response); this.data = response.body.data.map((item, idx) => { item.key = idx; From 178d52f5ccfa090c4401c6d7c20984d05c73fc34 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 20 Dec 2021 17:28:03 +0700 Subject: [PATCH 111/324] Pages Paybcak --- src/pages/Payback/PaybackFromUser.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js index 8d518da..bb16791 100644 --- a/src/pages/Payback/PaybackFromUser.js +++ b/src/pages/Payback/PaybackFromUser.js @@ -142,8 +142,6 @@ export const PaybackFromUser = observer(() => { // }, ]; - if(store.authentication.userData.role === "Retail") columns.pop(); - const routeData = [ { route: LINKS.HOME, From 47578366a8f570b5d7f5e800ea3da431c19310f8 Mon Sep 17 00:00:00 2001 From: Hasta Ragil Saputra Date: Tue, 21 Dec 2021 09:00:31 +0700 Subject: [PATCH 112/324] feat: add modal loader for each API request --- src/component/CategoryComponent.js | 31 +- src/component/CommissionComponent.js | 87 ++-- src/component/PartnerComponent.js | 98 ++-- src/component/ProductComponent.js | 652 ++++++++++++------------ src/component/Subcategory.js | 35 +- src/component/SupplierComponent.js | 43 +- src/component/TopupsaldoModal.js | 29 +- src/pages/Config/Commission.js | 13 +- src/pages/Config/Partner.js | 110 ++-- src/pages/Config/Supplier.js | 16 +- src/pages/Login/Login.js | 155 +++--- src/pages/Membership/Membership.js | 120 +++-- src/pages/Membership/MembershipModal.js | 1 - src/pages/Payback/Payback.js | 79 ++- src/pages/Payback/PaybackFromUser.js | 124 ++--- src/pages/Payback/PaybackModal.js | 52 +- src/pages/Product/Category.js | 11 +- src/pages/Product/Subcategory.js | 25 +- src/pages/Profile/Profile.js | 257 +++++----- src/pages/Transaction/Product.js | 221 ++++---- src/pages/Transaction/Transaction.js | 45 +- 21 files changed, 1094 insertions(+), 1110 deletions(-) diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index 98a8239..753342e 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -1,18 +1,17 @@ -import React, {useState} from "react"; +import React, {useContext, useState} from "react"; import {Button, Form, Input, message, Modal, Select, Space, Table,} from "antd"; import {observer} from "mobx-react-lite"; import {useHistory} from "react-router-dom"; import {useStore} from "../utils/useStore"; import {LINKS} from "../routes/app"; +import {ModalLoaderContext} from "../utils/modal"; export const CategoryComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const {Option} = Select; const history = useHistory(); const [idData, setIdData] = useState(""); - const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); + const modalLoader = useContext(ModalLoaderContext); const handleEditButton = (data) => { console.log(data, "isi data"); @@ -75,7 +74,9 @@ export const CategoryComponent = observer((props) => { const deleteData = async (id) => { try { console.log(id); + modalLoader.setLoading(true); await store.category.delete(id); + modalLoader.setLoading(true); message.success("Data Berhasil Dihapus"); history.push(LINKS.PRODUCT); } catch (err) { @@ -92,19 +93,19 @@ export const CategoryComponent = observer((props) => { const handleSubmit = async (data) => { console.log(data, "isi data2"); if (idData !== "") { - setConfirmLoading(true); + modalLoader.setLoading(true); try { await store.category.update(idData, data); message.success("Success Update Data Category"); } catch (e) { message.error("Failed Update Data Category"); } - setConfirmLoading(false); + modalLoader.setLoading(false); store.category.visibleModalCategory = false; setIdData(""); form.resetFields(); } else { - setConfirmLoading(true); + modalLoader.setLoading(true); try { await store.category.create(data); message.success("Success Add New Category"); @@ -112,7 +113,7 @@ export const CategoryComponent = observer((props) => { console.log(e, "apa errornya"); message.error("Failed Add Category"); } - setConfirmLoading(false); + modalLoader.setLoading(false); store.category.visibleModalCategory = false; setIdData(""); form.resetFields(); @@ -122,7 +123,7 @@ export const CategoryComponent = observer((props) => { return (
{ let pageNumber = page.current; store.category.pageSize = page.pageSize; store.category.page = pageNumber - 1; - // store.membership.isLoading = true; + modalLoader.setLoading(true); await store.category.getData(); - // store.membership.isLoading = false; + modalLoader.setLoading(false); }} /> @@ -169,16 +170,16 @@ export const CategoryComponent = observer((props) => { - + - + diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js index 031ae59..ae730ca 100644 --- a/src/component/CommissionComponent.js +++ b/src/component/CommissionComponent.js @@ -1,32 +1,17 @@ -import React, {useEffect, useState} from "react"; +import React, {useContext, useEffect, useState} from "react"; import {Button, Form, Input, message, Modal, Select, Space, Table,} from "antd"; import {observer} from "mobx-react-lite"; import {useHistory} from "react-router-dom"; import {useStore} from "../utils/useStore"; import {LINKS} from "../routes/app"; +import {ModalLoaderContext} from "../utils/modal"; export const CommissionComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const {Option} = Select; const history = useHistory(); const [idData, setIdData] = useState(""); - const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); - - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - //await store.product.getDataSubCategories(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); - }, []); + const modalLoader = useContext(ModalLoaderContext); const handleEditButton = (data) => { console.log(data, "isi data"); @@ -59,32 +44,20 @@ export const CommissionComponent = observer((props) => { }, ]; - const deleteData = async (id) => { - try { - console.log(id); - await store.commission.delete(id); - message.success("Data Berhasil Dihapus"); - history.push(LINKS.PRODUCT); - } catch (err) { - console.log("error", err); - message.error("Gagal menghapus"); - } - }; - const handleCancel = () => { setIdData(""); store.commission.visibleModalCommission = false; }; const handleSubmit = async (data) => { - setConfirmLoading(true); + modalLoader.setLoading(true); try { await store.commission.update(idData, data); message.success("Success Update Data Member"); } catch (e) { message.error("Failed Update Data Member"); } - setConfirmLoading(false); + modalLoader.setLoading(false); store.commission.visibleModalCommission = false; setIdData(""); form.resetFields(); @@ -93,7 +66,7 @@ export const CommissionComponent = observer((props) => { return (
{ let pageNumber = page.current; store.commission.pageSize = page.pageSize; store.commission.page = pageNumber - 1; - // store.membership.isLoading = true; + modalLoader.setLoading(true); await store.commission.getData(); - // store.membership.isLoading = false; + modalLoader.setLoading(false); }} /> { - form.resetFields(); - handleCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form"); - handleSubmit(values); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} + visible={store.commission.visibleModalCommission} + title={"Edit Commission"} + okText={"Edit"} + cancelText="Cancel" + onCancel={() => { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmit(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} >
- +
diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index b200a82..bd4c46a 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -1,41 +1,27 @@ -import React, {useEffect, useState} from "react"; +import React, {useContext, useEffect, useState} from "react"; import {Button, Form, Input, message, Modal, Select, Space, Table, Tag,} from "antd"; import {observer} from "mobx-react-lite"; import {ExclamationCircleOutlined} from "@ant-design/icons"; import {useHistory} from "react-router-dom"; import {useStore} from "../utils/useStore"; import {LINKS} from "../routes/app"; +import {ModalLoaderContext} from "../utils/modal"; export const PartnerComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const {Option} = Select; const history = useHistory(); const [idData, setIdData] = useState(""); const [isChangePassword, setIsChangePassword] = useState(false); - const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); - - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - await store.partner.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); - }, []); + const modalLoader = useContext(ModalLoaderContext); const changeStatus = async (id, isActive) => { const status = isActive ? "inactive" : "active"; const status2 = isActive ? "Inactivating" : "Activating"; + modalLoader.setLoading(true); try { const response = await store.partner.changeStatus(id, status); - + modalLoader.setLoading(false); response?.body?.statusCode === 201 ? message.success(`Success ${status2} Partner`) : message.error(`Failed ${status2} Partner`); @@ -92,7 +78,7 @@ export const PartnerComponent = observer((props) => { render: (text, record) => ( {record?.status === true ? " ACTIVE" : "INACTIVE"} @@ -121,8 +107,9 @@ export const PartnerComponent = observer((props) => { const deleteData = async (id) => { try { - console.log(id); + modalLoader.setLoading(true); await store.partner.delete(id); + modalLoader.setLoading(false); message.success("Data Berhasil Dihapus"); history.push(LINKS.PARTNER); } catch (err) { @@ -134,7 +121,7 @@ export const PartnerComponent = observer((props) => { const handleDelete = (id) => { Modal.confirm({ title: "Are you sure delete this record?", - icon: , + icon: , okText: "Yes", okType: "primary", cancelText: "Cancel", @@ -155,9 +142,10 @@ export const PartnerComponent = observer((props) => { const handleSubmit = async (data) => { console.log(data, "isi data2"); if (idData !== "") { - setConfirmLoading(true); + modalLoader.setLoading(true); try { await store.partner.update(idData, data); + modalLoader.setLoading(false); message.success( isChangePassword ? "Failed Change Partner Password" @@ -165,27 +153,27 @@ export const PartnerComponent = observer((props) => { ); //await store.partner.getData() } catch (e) { + modalLoader.setLoading(true); message.error( isChangePassword ? "Failed Change Partner Password" : "Failed Update Data Partner" ); } - setConfirmLoading(false); store.partner.visibleModalPartner = false; setIdData(""); form.resetFields(); } else { - setConfirmLoading(true); + modalLoader.setLoading(true); try { await store.partner.create(data); message.success("Success Add New Partner"); - //await store.partner.getData() + modalLoader.setLoading(false); } catch (e) { console.log(e, "apa errornya"); message.error("Failed Add Partner"); } - setConfirmLoading(false); + modalLoader.setLoading(false); store.partner.visibleModalPartner = false; setIdData(""); form.resetFields(); @@ -194,7 +182,7 @@ export const PartnerComponent = observer((props) => { return (
{ let pageNumber = page.current; store.partner.pageSize = page.pageSize; store.partner.page = pageNumber - 1; - //store.membership.isLoading = true; + modalLoader.setLoading(true); await store.partner.getData(); - // store.membership.isLoading = false; + modalLoader.setLoading(false); }} /> @@ -221,8 +209,8 @@ export const PartnerComponent = observer((props) => { isChangePassword ? "Change Member Password" : idData - ? "Edit Partner" - : "Create a new partner" + ? "Edit Partner" + : "Create a new partner" } okText={idData ? "Edit" : "Create"} cancelText="Cancel" @@ -250,11 +238,11 @@ export const PartnerComponent = observer((props) => { label="Name" rules={[ idData - ? { required: false } - : { required: true, message: "Please input password name!" }, + ? {required: false} + : {required: true, message: "Please input password name!"}, ]} > - + )} {!idData && ( @@ -263,11 +251,11 @@ export const PartnerComponent = observer((props) => { label="Owner" rules={[ idData - ? { required: false } - : { required: true, message: "Please input password owner!" }, + ? {required: false} + : {required: true, message: "Please input password owner!"}, ]} > - + )} {((idData && isChangePassword) || !idData) && ( @@ -276,27 +264,27 @@ export const PartnerComponent = observer((props) => { label="Password Account" rules={[ idData - ? { required: false } + ? {required: false} : { - required: true, - message: "Please input password account!", - }, + required: true, + message: "Please input password account!", + }, ]} > - + )} -{!idData && ( + {!idData && ( - + )} {!isChangePassword && ( @@ -306,25 +294,25 @@ export const PartnerComponent = observer((props) => { label="Npwp" rules={[ idData - ? { required: false } - : { required: true, message: "Please input npwp!" }, + ? {required: false} + : {required: true, message: "Please input npwp!"}, ]} > - + - + )} diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index ef52e21..9d62954 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -1,4 +1,4 @@ -import React, {useState} from "react"; +import React, {useContext, useState} from "react"; import {Button, Col, Form, Input, message, Modal, Row, Select, Table, Tag, Typography} from "antd"; import {observer} from "mobx-react-lite"; import {ExclamationCircleOutlined} from "@ant-design/icons"; @@ -6,346 +6,348 @@ import {useHistory} from "react-router-dom"; import {capitalize} from "lodash"; import {useStore} from "../utils/useStore"; import {LINKS} from "../routes/app"; +import {ModalLoaderContext} from "../utils/modal"; const {Title, Text} = Typography; export const ProductComponent = observer((props) => { - const store = useStore(); - const [form] = Form.useForm(); - const {Option} = Select; - const history = useHistory(); - const [idData, setIdData] = useState(''); - const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); - const [filterSupplier, setFilterSupplier] = useState(null); - const [filterCategories, setFilterCategories] = useState(null); - const [filterSubCategories, setFilterSubCategories] = useState(null); + const store = useStore(); + const [form] = Form.useForm(); + const {Option} = Select; + const history = useHistory(); + const [idData, setIdData] = useState(''); + const [filterSupplier, setFilterSupplier] = useState(null); + const [filterCategories, setFilterCategories] = useState(null); + const [filterSubCategories, setFilterSubCategories] = useState(null); + const modalLoader = useContext(ModalLoaderContext); - const handleEditButton = (data) => { - console.log(data, "isi data") - form.setFieldsValue({ - name: data.name, - price: data.price, - markUpPrice: data.basePrice, - code: data.code, - status: data.status, - subCategoriesId: data.sub_categories.id, - }); - store.product.visibleModalProduct = true; - setIdData(data.id); + const handleEditButton = (data) => { + console.log(data, "isi data") + form.setFieldsValue({ + name: data.name, + price: data.price, + markUpPrice: data.basePrice, + code: data.code, + status: data.status, + subCategoriesId: data.sub_categories.id, + }); + store.product.visibleModalProduct = true; + setIdData(data.id); + } + + const columns = [ + { + title: "Kode", + dataIndex: "code", + key: "code", + }, + { + title: "Produk", + dataIndex: ["name"], + key: "name", + }, + { + title: "Harga Beli", + dataIndex: ["currentPrice", "price"], + key: ["currentPrice", "price"], + }, + { + title: "Harga Jual", + dataIndex: ["currentPrice", "mark_up_price"], + key: ["currentPrice", "mark_up_price"], + }, + // { + // title: "Gangguan", + // dataIndex: "status", + // key: "status", + // render: (text, record) => ( + // + // {capitalize(record?.status)} + // + // ), + // }, + { + title: "Tersedia", + dataIndex: "tersedia", + key: "tersedia", + render: (text, record) => ( + + {record?.status === "ACTIVE" ? " Tersedia" : "Tidak"} + + ), } + ]; - const columns = [ - { - title: "Kode", - dataIndex: "code", - key: "code", - }, - { - title: "Produk", - dataIndex: ["name"], - key: "name", - }, - { - title: "Harga Beli", - dataIndex: ["currentPrice","price"], - key: ["currentPrice","price"], - }, - { - title: "Harga Jual", - dataIndex: ["currentPrice","mark_up_price"], - key: ["currentPrice","mark_up_price"], - }, - // { - // title: "Gangguan", - // dataIndex: "status", - // key: "status", - // render: (text, record) => ( - // - // {capitalize(record?.status)} - // - // ), - // }, - { - title: "Tersedia", - dataIndex: "tersedia", - key: "tersedia", - render: (text, record) => ( - - {record?.status === "ACTIVE" ? " Tersedia" : "Tidak"} - - ), - } - ]; - - const deleteData = async (id) => { - try { - console.log(id); - await store.product.delete(id); - message.success("Data Berhasil Dihapus"); - history.push(LINKS.PRODUCT); - } catch (err) { - console.log("error", err); - message.error("Gagal menghapus"); - } - }; - - const handleDelete = (id) => { - Modal.confirm({ - title: "Are you sure delete this record?", - icon: , - okText: "Yes", - okType: "primary", - cancelText: "Cancel", - onOk() { - return deleteData(id); - }, - onCancel() { - console.log("Cancel"); - }, - }); - }; - - const handleCancel = () => { - setIdData('') - store.product.visibleModalProduct = false; + const deleteData = async (id) => { + try { + console.log(id); + await store.product.delete(id); + message.success("Data Berhasil Dihapus"); + history.push(LINKS.PRODUCT); + } catch (err) { + console.log("error", err); + message.error("Gagal menghapus"); } + }; - const handleSubmit = async (data) => { - console.log(data, "isi data2") - if (idData !== '') { - setConfirmLoading(true); - try { - await store.product.update(idData, data) - message.success("Success Update Data Member") - } catch (e) { - message.error("Failed Update Data Member") - } - setConfirmLoading(false); - store.product.visibleModalProduct = false; - setIdData(''); - form.resetFields(); - } else { - setConfirmLoading(true); - try { - await store.product.create(data) - message.success("Success Add New Member") - } catch (e) { - console.log(e, "apa errornya") - message.error("Failed Add Member") - } - setConfirmLoading(false); - store.product.visibleModalProduct = false; - setIdData(''); - form.resetFields(); - } + const handleDelete = (id) => { + Modal.confirm({ + title: "Are you sure delete this record?", + icon: , + okText: "Yes", + okType: "primary", + cancelText: "Cancel", + onOk() { + return deleteData(id); + }, + onCancel() { + console.log("Cancel"); + }, + }); + }; + + const handleCancel = () => { + setIdData('') + store.product.visibleModalProduct = false; + } + + const handleSubmit = async (data) => { + console.log(data, "isi data2") + if (idData !== '') { + modalLoader.setLoading(true); + try { + await store.product.update(idData, data) + message.success("Success Update Data Member") + } catch (e) { + message.error("Failed Update Data Member") + } + modalLoader.setLoading(false); + store.product.visibleModalProduct = false; + setIdData(''); + form.resetFields(); + } else { + modalLoader.setLoading(true); + try { + await store.product.create(data) + message.success("Success Add New Member") + } catch (e) { + console.log(e, "apa errornya") + message.error("Failed Add Member") + } + modalLoader.setLoading(false); + store.product.visibleModalProduct = false; + setIdData(''); + form.resetFields(); } + } - const handleRemoveFilter = async () => { - store.product.filterSupplier = null; - store.product.filterSubCategory = null; - setFilterSupplier(null); - setFilterCategories(null); - setFilterSubCategories(null); - await store.product.getData(); - store.product.visibleModalFilterProduct = false; - }; + const handleRemoveFilter = async () => { + store.product.filterSupplier = null; + store.product.filterSubCategory = null; + setFilterSupplier(null); + setFilterCategories(null); + setFilterSubCategories(null); + await store.product.getData(); + store.product.visibleModalFilterProduct = false; + }; - const handleCancelFilter = () => { - setFilterSupplier(null); - setFilterCategories(null); - setFilterSubCategories(null); - store.product.visibleModalFilterProduct = false; - }; + const handleCancelFilter = () => { + setFilterSupplier(null); + setFilterCategories(null); + setFilterSubCategories(null); + store.product.visibleModalFilterProduct = false; + }; - const handleSubmitFilter = async () => { - store.product.filterSupplier = filterSupplier; - store.product.filterSubCategory = filterSubCategories; - await store.product.getData(); - store.product.visibleModalFilterProduct = false; - }; + const handleSubmitFilter = async () => { + store.product.filterSupplier = filterSupplier; + store.product.filterSubCategory = filterSubCategories; + modalLoader.setLoading(true); + await store.product.getData(); + modalLoader.setLoading(false); + store.product.visibleModalFilterProduct = false; + }; - const footerLayoutFilter = [ - , - , - - ] + const footerLayoutFilter = [ + , + , + + ] - return ( -
-
{ - let pageNumber = page.current; - store.product.pageSize = page.pageSize; - store.product.page = pageNumber - 1; - // store.membership.isLoading = true; - await store.product.getData(); - // store.membership.isLoading = false; - }} - /> + return ( +
+
{ + let pageNumber = page.current; + store.product.pageSize = page.pageSize; + store.product.page = pageNumber - 1; + modalLoader.setLoading(true); + await store.product.getData(); + modalLoader.setLoading(false); + }} + /> - { - form.resetFields(); - handleCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form") - handleSubmit(values); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} + { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form") + handleSubmit(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + + + + + + + + + + + + + + + + +
+ + + +
+ Filter Supplier + - - - - - - - - - - - - - - - - - - - - ( + + ))} + + + + Filter Categories + { - setFilterSupplier(val); - }} - style={{marginBottom: "20px", width: "100%"}} - > - {store.supplier.data.map((item) => ( - - ))} - - - - Filter Categories - - - - Filter Sub-Categories - - - - - - ); + {store.category.data.map((item) => ( + + ))} + + + + Filter Sub-Categories + + + + + + ); }); diff --git a/src/component/Subcategory.js b/src/component/Subcategory.js index 45d80ff..d044c33 100644 --- a/src/component/Subcategory.js +++ b/src/component/Subcategory.js @@ -1,17 +1,16 @@ -import React, {useState} from "react"; +import React, {useContext, useState} from "react"; import {Button, Form, Input, message, Modal, Select, Space, Table,} from "antd"; import {observer} from "mobx-react-lite"; import {useHistory} from "react-router-dom"; import {useStore} from "../utils/useStore"; +import {ModalLoaderContext} from "../utils/modal"; export const SubcategoryComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); const {Option} = Select; - const history = useHistory(); const [idData, setIdData] = useState(""); - const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); + const modalLoader = useContext(ModalLoaderContext); const getData = async () => { await store.category.getData(); @@ -64,7 +63,7 @@ export const SubcategoryComponent = observer((props) => { const handleSubmit = async (data) => { console.log(data, "isi data2"); if (idData !== "") { - setConfirmLoading(true); + modalLoader.setLoading(true); try { await store.subcategory.update(idData, data); await getData(); @@ -72,12 +71,12 @@ export const SubcategoryComponent = observer((props) => { } catch (e) { message.error("Failed Update Data Category"); } - setConfirmLoading(false); + modalLoader.setLoading(false); store.subcategory.visibleModalSubcategory = false; setIdData(""); form.resetFields(); } else { - setConfirmLoading(true); + modalLoader.setLoading(true); try { await store.subcategory.create(data); await getData(); @@ -86,7 +85,7 @@ export const SubcategoryComponent = observer((props) => { console.log(e, "apa errornya"); message.error("Failed Add Category"); } - setConfirmLoading(false); + modalLoader.setLoading(false); store.subcategory.visibleModalSubcategory = false; setIdData(""); form.resetFields(); @@ -96,7 +95,7 @@ export const SubcategoryComponent = observer((props) => { return (
{ showSizeChanger: true, simple: false, }} - onChange={(page) => { + onChange={async (page) => { let pageNumber = page.current; store.subcategory.pageSize = page.pageSize; store.subcategory.page = pageNumber - 1; - // store.membership.isLoading = true; - getData(); - // store.membership.isLoading = false; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); }} /> @@ -145,24 +144,24 @@ export const SubcategoryComponent = observer((props) => { name="code" label="Code" rules={[ - { required: true, message: "Please input code category!" }, + {required: true, message: "Please input code category!"}, ]} > - + )} - + {!idData && (
{ let pageNumber = page.current; store.supplier.pageSize = page.pageSize; store.supplier.page = pageNumber - 1; + modalLoader.setLoading(true); await store.supplier.getData(); + modalLoader.setLoading(false); }} /> { - + {!idData && ( - + )} - + ); }); diff --git a/src/component/TopupsaldoModal.js b/src/component/TopupsaldoModal.js index 28c6237..376869e 100644 --- a/src/component/TopupsaldoModal.js +++ b/src/component/TopupsaldoModal.js @@ -1,20 +1,21 @@ -import React from "react"; +import React, {useContext} from "react"; import {Form, Input, message, Modal} from "antd"; import {observer} from "mobx-react-lite"; import {useStore} from "../utils/useStore"; +import {ModalLoaderContext} from "../utils/modal"; export const TopupsaldoModal = observer((props) => { const store = useStore(); const [form] = Form.useForm(); + const modalLoader = useContext(ModalLoaderContext); const handleCancelTransaction = () => { store.supplier.visibleModalTransaction = false; }; const handleSubmitTransaction = async (data) => { - console.log(data, "isi data2"); - try { + modalLoader.setLoading(true); await store.supplier.createTransaction(data); message.success("Success Top Up"); } catch (e) { @@ -22,9 +23,11 @@ export const TopupsaldoModal = observer((props) => { message.error("Failed Top Up"); } + modalLoader.setLoading(false); store.supplier.visibleModalTransaction = false; form.resetFields(); }; + return (
{ }} >
- + - +
diff --git a/src/pages/Config/Commission.js b/src/pages/Config/Commission.js index 8a00f05..b7388bc 100644 --- a/src/pages/Config/Commission.js +++ b/src/pages/Config/Commission.js @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import React, {useContext, useEffect, useState} from "react"; import { Button, Card, Col, Input, Row, Tabs } from "antd"; import { FilterOutlined, PlusSquareOutlined } from "@ant-design/icons"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; @@ -6,23 +6,24 @@ import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; import { CommissionComponent } from "../../component/CommissionComponent"; import { LINKS } from "../../routes/app"; +import {ModalLoaderContext} from "../../utils/modal"; const { TabPane } = Tabs; const { Search } = Input; export const Commission = observer(() => { - const [isLoading, setIsLoading] = useState(false); const store = useStore(); + const modalLoader = useContext(ModalLoaderContext); useEffect(() => { const init = async () => { try { - setIsLoading(true); + modalLoader.setLoading(true); //await store.commission.getDataCategories(); await store.commission.getData(); - setIsLoading(false); + modalLoader.setLoading(false); } catch (e) { - setIsLoading(false); + modalLoader.setLoading(false); } }; @@ -66,7 +67,7 @@ export const Commission = observer(() => { */}
- +
); diff --git a/src/pages/Config/Partner.js b/src/pages/Config/Partner.js index 0fb2f57..6b5e6c4 100644 --- a/src/pages/Config/Partner.js +++ b/src/pages/Config/Partner.js @@ -1,4 +1,4 @@ -import React, {useEffect, useState} from "react"; +import React, {useContext, useEffect, useState} from "react"; import {Button, Card, Col, Input, Row, Tabs} from "antd"; import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; @@ -6,72 +6,66 @@ import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; import {PartnerComponent} from "../../component/PartnerComponent"; import {LINKS} from "../../routes/app"; +import {ModalLoaderContext} from "../../utils/modal"; -const {TabPane} = Tabs; const {Search} = Input; export const Partner = observer(() => { - const [isLoading, setIsLoading] = useState(false); - const store = useStore(); + const store = useStore(); + const modalLoader = useContext(ModalLoaderContext); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - //await store.partner.getDataCategories(); - await store.partner.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; + useEffect(() => { + const init = async () => { + try { + modalLoader.setLoading(true); + await store.partner.getData(); + modalLoader.setLoading(false); + } catch (e) { + modalLoader.setLoading(false); + } + }; - init(); - }, []); + init(); + }, []); - // const handleChangeTabPane = async (key) => { - // store.partner.filterCategory = key; - // console.log(key); - // }; + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.PARTNER, + name: Partner, + }, + ]; - const routeData = [ - { - route: LINKS.HOME, - name: "Home", - }, - { - route: LINKS.PARTNER, - name: Partner, - }, - ]; - - return ( -
- - - -
- {/* + {/* */} - - - - - - - - - - ); + + + + + + + + + + ); }); diff --git a/src/pages/Config/Supplier.js b/src/pages/Config/Supplier.js index 1f66dbb..9c42792 100644 --- a/src/pages/Config/Supplier.js +++ b/src/pages/Config/Supplier.js @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import React, {useContext, useEffect, useState} from "react"; import { Button, Card, @@ -21,26 +21,22 @@ import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; import { SupplierComponent } from "../../component/SupplierComponent"; import { LINKS } from "../../routes/app"; +import {ModalLoaderContext} from "../../utils/modal"; -const { TabPane } = Tabs; const { Search } = Input; -const { Option } = Select; export const Supplier = observer(() => { - const [isLoading, setIsLoading] = useState(false); - const [confirmLoading, setConfirmLoading] = useState(false); - const [form] = Form.useForm(); const store = useStore(); + const modalLoader = useContext(ModalLoaderContext); useEffect(() => { const init = async () => { try { - setIsLoading(true); - //await store.supplier.getDataCategories(); + modalLoader.setLoading(true); await store.supplier.getData(); - setIsLoading(false); + modalLoader.setLoading(false); } catch (e) { - setIsLoading(false); + modalLoader.setLoading(false); } }; diff --git a/src/pages/Login/Login.js b/src/pages/Login/Login.js index a55531b..b71b999 100644 --- a/src/pages/Login/Login.js +++ b/src/pages/Login/Login.js @@ -1,86 +1,91 @@ -import React from "react"; +import React, {useContext} from "react"; import {observer} from 'mobx-react-lite'; import {useStore} from "../../utils/useStore"; import {Button, Card, Col, Form, Input, message, Row, Typography} from 'antd'; import {useHistory} from "react-router-dom"; import {LINKS} from "../../routes/app"; +import {ModalLoaderContext} from "../../utils/modal"; export const Login = observer(() => { - const store = useStore(); - let history = useHistory(); - const [form] = Form.useForm(); + const store = useStore(); + let history = useHistory(); + const [form] = Form.useForm(); + const modalLoader = useContext(ModalLoaderContext); - const handleLogin = async (params) => { - try { - await store.authentication.login({ - username: params.username, - password: params.password, - }); - history.push(LINKS.HOME); - } catch (e) { - if (e.response?.body?.message) { - message.error(e.response.body.message); - return; - } - message.error(e.message); - } + const handleLogin = async (params) => { + try { + modalLoader.setLoading(true); + await store.authentication.login({ + username: params.username, + password: params.password, + }); + modalLoader.setLoading(false); + history.push(LINKS.HOME); + } catch (e) { + modalLoader.setLoading(true); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } + } - return ( -
- -
-
-
- - Boilerplate - -
- -
- - - - - - -
- -
- -
-
- - - - ); + return ( +
+ +
+
+
+ + Boilerplate + +
+ +
+ + + + + + +
+ +
+ +
+
+ + + + ); }); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index ece8384..0908976 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import React, {useContext, useEffect, useState} from "react"; import { Button, Card, @@ -15,20 +15,21 @@ import { Form, Select, } from "antd"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; import { ExclamationCircleOutlined, FilterOutlined, PlusSquareOutlined, DownloadOutlined, } from "@ant-design/icons"; -import { MembershipModal } from "./MembershipModal"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { LINKS } from "../../routes/app"; +import {MembershipModal} from "./MembershipModal"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {LINKS} from "../../routes/app"; +import {ModalLoaderContext} from "../../utils/modal"; -const { Search } = Input; -const { Option } = Select; +const {Search} = Input; +const {Option} = Select; export const Membership = observer(() => { const [form] = Form.useForm(); const store = useStore(); @@ -37,55 +38,57 @@ export const Membership = observer(() => { const [destination, setDestination] = useState(null); const [initialData, setInitialData] = useState({}); const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); + const modalLoader = useContext(ModalLoaderContext); useEffect(() => { const init = async () => { try { - setIsLoading(true); + modalLoader.setLoading(true); const isAdmin = store.authentication.userData.role === "Admin"; await getData(); await store.role.getData(isAdmin); await store.supplier.getData(); - setIsLoading(false); + modalLoader.setLoading(false); } catch (e) { - setIsLoading(false); + console.error(e); + modalLoader.setLoading(false); } }; init(); }, []); - const getData = () => { + const getData = async () => { store.authentication.userData.role === "Admin" - ? store.membership.getData() - : store.membership.getDataBySuperior(); + ? await store.membership.getData() + : await store.membership.getDataBySuperior(); }; const changeStatus = async (id, isActive) => { const status = isActive ? "inactive" : "active"; const status2 = isActive ? "Inactivating" : "Activating"; - - console.log(status); - try { + modalLoader.setLoading(true); const response = await store.membership.changeStatus(id, status); + modalLoader.setLoading(false); response?.body?.statusCode === 201 ? message.success(`Success ${status2} Membership`) : message.error(`Failed ${status2} Membership`); } catch (err) { - console.log("error", err); + modalLoader.setLoading(false); message.error(`Failed ${status2} Membership`); } }; + const handleCancelTransaction = () => { setIsVisibleTopUpModal(false); setDestination(null); }; + const handleSubmitTransaction = async (data) => { - setConfirmLoading(true); + modalLoader.setLoading(true); try { data.destination = destination; if (data.amount) { @@ -99,9 +102,11 @@ export const Membership = observer(() => { ? store.transaction.distributeAdmin(data) : store.transaction.distribute(data); message.success("Success Top Up"); + modalLoader.setLoading(false); //await store.supplier.getData() } catch (e) { console.log(e, "apa errornya"); + modalLoader.setLoading(false); message.error("Failed Top Up"); } setConfirmLoading(false); @@ -124,8 +129,8 @@ export const Membership = observer(() => { }, { title: "Saldo", - dataIndex: ["coa","amount"], - key: ["coa","amount"], + dataIndex: ["coa", "amount"], + key: ["coa", "amount"], }, { title: "Status", @@ -134,7 +139,7 @@ export const Membership = observer(() => { render: (text, record) => ( {record?.isActive === true ? " ACTIVE" : "INACTIVE"} @@ -158,7 +163,7 @@ export const Membership = observer(() => { setIsVisibleTopUpModal(true); }} > - Top Up Saldo + Top Up Saldo {/* */} - + { setVisibleModal(true); }} > - New + New @@ -323,9 +333,9 @@ export const Membership = observer(() => { let pageNumber = page.current; store.membership.pageSize = page.pageSize; store.membership.page = pageNumber - 1; - // store.membership.isLoading = true; + modalLoader.setLoading(true); await getData(); - // store.membership.isLoading = false; + modalLoader.setLoading(false); }} /> )} @@ -335,18 +345,20 @@ export const Membership = observer(() => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: (page) => { + onChange: async (page) => { store.membership.pageSize = page.pageSize; store.membership.page = page.current; - getData(); + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); }, pageSize: store.membership.pageSize, total: store.membership.total_data, current: store.membership.page, - style: { marginBottom: "1rem", marginRight: "1rem" }, + style: {marginBottom: "1rem", marginRight: "1rem"}, }} dataSource={store.membership.data} - style={{ padding: 0 }} + style={{padding: 0}} renderItem={(item) => { return (
@@ -368,12 +380,12 @@ export const Membership = observer(() => { description={

- Username : {item.username}
+ Username : {item.username}

} /> -
+

{

- +
); }} @@ -415,25 +427,25 @@ export const Membership = observer(() => { }} >
- - - + + + - + diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index df67074..92faaef 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -11,7 +11,6 @@ export const MembershipModal = ({ }) => { const [form] = Form.useForm(); const { Option } = Select; - const dataStatus = ["true", "false"]; const store = useStore(); return ( diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 7f8296b..ba1a29f 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -1,4 +1,4 @@ -import React, { useState ,useEffect} from "react"; +import React, {useState, useEffect, useContext} from "react"; import { Button, Card, @@ -12,42 +12,37 @@ import { Space, Table, } from "antd"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; import { CheckCircleOutlined, CloseOutlined, FilterOutlined, PlusSquareOutlined, } from "@ant-design/icons"; -import { PaybackModal } from "./PaybackModal"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { LINKS } from "../../routes/app"; +import {PaybackModal} from "./PaybackModal"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {LINKS} from "../../routes/app"; +import {ModalLoaderContext} from "../../utils/modal"; -const { Search } = Input; +const {Search} = Input; export const Payback = observer(() => { const store = useStore(); - const [visibleModal, setVisibleModal] = useState(false); - const [confirmLoading, setConfirmLoading] = useState(false); - const [initialData, setInitialData] = useState({}); - //const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); - + const modalLoader = useContext(ModalLoaderContext); useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - await store.payback.getDataUser(); - //await store.role.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); + const init = async () => { + try { + modalLoader.setLoading(true); + await store.payback.getDataUser(); + modalLoader.setLoading(false); + } catch (e) { + modalLoader.setLoading(false); + } + }; + + init(); }, []); @@ -64,7 +59,7 @@ export const Payback = observer(() => { render: (text, record) => ( @@ -85,7 +80,7 @@ export const Payback = observer(() => { onClick={async () => { await handleAction(record, "accept"); }} - icon={} + icon={} style={{ backgroundColor: "#1bb91d", color: "#fff", @@ -98,7 +93,7 @@ export const Payback = observer(() => { onClick={async () => { await handleAction(record, "reject"); }} - icon={} + icon={} style={{ backgroundColor: "#ff1c1c", color: "#fff", @@ -112,7 +107,7 @@ export const Payback = observer(() => { }, ]; - if(store.authentication.userData.role === "Retail") columns.pop(); + if (store.authentication.userData.role === "Retail") columns.pop(); const routeData = [ { @@ -121,12 +116,12 @@ export const Payback = observer(() => { }, { route: LINKS.PAYBACK, - name: Payback, + name: Payback, }, ]; const onSubmit = async (data) => { - setConfirmLoading(true); + modalLoader.setLoading(true); try { // await store.membership.create(data); // message.success("Success Add New Member"); @@ -135,25 +130,25 @@ export const Payback = observer(() => { console.error(e, "apa errornya"); message.error("Failed Add Member"); } - setConfirmLoading(false); - setVisibleModal(false); + modalLoader.setLoading(false); }; - const handleAction = async (record, type) => {}; + const handleAction = async (record, type) => { + }; return (
- +
- +
- + { // style: {marginBottom: "1rem", marginRight: "1rem"}, // }} dataSource={store.payback.data} - style={{ padding: 0 }} + style={{padding: 0}} renderItem={(item) => { return (
@@ -236,11 +231,11 @@ export const Payback = observer(() => { title={item.name} description={
- +
} /> -
+

{

- +
); }} diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js index bb16791..1e66284 100644 --- a/src/pages/Payback/PaybackFromUser.js +++ b/src/pages/Payback/PaybackFromUser.js @@ -1,4 +1,4 @@ -import React, { useState ,useEffect} from "react"; +import React, {useState, useEffect, useContext} from "react"; import { Button, Card, @@ -12,42 +12,40 @@ import { Space, Table, } from "antd"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; import { CheckCircleOutlined, CloseOutlined, FilterOutlined, PlusSquareOutlined, } from "@ant-design/icons"; -import { PaybackModal } from "./PaybackModal"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { LINKS } from "../../routes/app"; +import {PaybackModal} from "./PaybackModal"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {LINKS} from "../../routes/app"; +import {ModalLoaderContext} from "../../utils/modal"; -const { Search } = Input; +const {Search} = Input; export const PaybackFromUser = observer(() => { const store = useStore(); const [visibleModal, setVisibleModal] = useState(false); - const [confirmLoading, setConfirmLoading] = useState(false); const [initialData, setInitialData] = useState({}); - //const [confirmLoading, setConfirmLoading] = useState(false); - const [isLoading, setIsLoading] = useState(false); - + const modalLoader = useContext(ModalLoaderContext); useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - await store.payback.getData(); - //await store.role.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); + const init = async () => { + try { + modalLoader.setLoading(true); + await store.payback.getData(); + await store.authentication.getProfile(); + modalLoader.setLoading(false); + } catch (e) { + modalLoader.setLoading(false); + } + }; + + init(); }, []); @@ -59,7 +57,7 @@ export const PaybackFromUser = observer(() => { render: (text, record) => ( @@ -80,7 +78,7 @@ export const PaybackFromUser = observer(() => { onClick={async () => { await handleAction(record, "accept"); }} - icon={} + icon={} style={{ backgroundColor: "#1bb91d", color: "#fff", @@ -93,7 +91,7 @@ export const PaybackFromUser = observer(() => { onClick={async () => { await handleAction(record, "reject"); }} - icon={} + icon={} style={{ backgroundColor: "#ff1c1c", color: "#fff", @@ -149,12 +147,12 @@ export const PaybackFromUser = observer(() => { }, { route: LINKS.PAYBACKFROMUSER, - name: Payback User, + name: Payback User, }, ]; const onSubmit = async (data) => { - setConfirmLoading(true); + modalLoader.setLoading(true); try { // await store.membership.create(data); // message.success("Success Add New Member"); @@ -163,25 +161,26 @@ export const PaybackFromUser = observer(() => { console.error(e, "apa errornya"); message.error("Failed Add Member"); } - setConfirmLoading(false); + modalLoader.setLoading(false); setVisibleModal(false); }; - const handleAction = async (record, type) => {}; + const handleAction = async (record, type) => { + }; return (
- +
- +
- + { setVisibleModal(true); }} > - New + New )} @@ -210,19 +209,19 @@ export const PaybackFromUser = observer(() => { dataSource={store.payback.data} bordered pagination={{ - pageSize: store.payback.pageSize, - total: store.payback.total_data, - current: store.payback.page + 1, - showSizeChanger: true, - simple: false + pageSize: store.payback.pageSize, + total: store.payback.total_data, + current: store.payback.page + 1, + showSizeChanger: true, + simple: false }} onChange={async (page) => { - let pageNumber = page.current; - store.payback.pageSize = page.pageSize; - store.payback.page = pageNumber - 1; - // store.membership.isLoading = true; - await store.payback.getData(); - // store.membership.isLoading = false; + let pageNumber = page.current; + store.payback.pageSize = page.pageSize; + store.payback.page = pageNumber - 1; + modalLoader.setLoading(true); + await store.payback.getData(); + modalLoader.setLoading(false); }} /> )} @@ -231,19 +230,21 @@ export const PaybackFromUser = observer(() => { { - // store.membership.pageSize = page.pageSize; - // store.membership.page = page.current; - // store.membership.getData(); - // }, - // pageSize: store.membership.pageSize, - // total: store.membership.total_data, - // current: store.membership.page, - // style: {marginBottom: "1rem", marginRight: "1rem"}, - // }} + pagination={{ + onChange: async (page) => { + store.payback.pageSize = page.pageSize; + store.payback.page = page.current; + modalLoader.setLoading(true); + await store.payback.getData(); + modalLoader.setLoading(false); + }, + pageSize: store.payback.pageSize, + total: store.payback.total_data, + current: store.payback.page, + style: {marginBottom: "1rem", marginRight: "1rem"}, + }} dataSource={store.payback.data} - style={{ padding: 0 }} + style={{padding: 0}} renderItem={(item) => { return (
@@ -264,11 +265,11 @@ export const PaybackFromUser = observer(() => { title={item.name} description={
- +
} /> -
+

{

- +
); }} @@ -290,7 +291,6 @@ export const PaybackFromUser = observer(() => { { await onSubmit(data); diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index a559aeb..e87f74d 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from "react"; +import React, {useState, useEffect, useContext} from "react"; import { Button, Form, @@ -8,37 +8,22 @@ import { Modal, Upload, } from "antd"; -import { useStore } from "../../utils/useStore"; -import { appConfig } from "../../config/app"; -import { LoadingOutlined, UploadOutlined } from "@ant-design/icons"; +import {useStore} from "../../utils/useStore"; +import {appConfig} from "../../config/app"; +import {LoadingOutlined, UploadOutlined} from "@ant-design/icons"; +import {ModalLoaderContext} from "../../utils/modal"; -export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => { +export const PaybackModal = ({visible, onCreate, onCancel, initialData}) => { const [form] = Form.useForm(); const store = useStore(); const [fileList, setFileList] = useState([]); const [previewTitle, setPreviewTitle] = useState(""); const [previewImage, setPreviewImage] = useState(""); - const [loading, setLoading] = useState(false); const [fileUrl, setFileUrl] = useState(""); const firstIndexFileList = fileList[0]; - const [isLoading, setIsLoading] = useState(false); - + const [loading, setLoading] = useState(false); + const modalLoader = useContext(ModalLoaderContext); - useEffect(() => { - const init = async () => { - try { - setIsLoading(true); - //await store.membership.getData(); - //await store.role.getData(); - await store.authentication.getProfile(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; - - init(); - }, []); const beforeUpload = (file) => { let isPdf, isLt2M; let allowedFile = ["image/jpeg", "image/png", "application/pdf"]; @@ -59,7 +44,7 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => { setPreviewTitle(file.url?.substring(file.url?.lastIndexOf("/") + 1)); }; - const handleChange = ({ fileList }) => { + const handleChange = ({fileList}) => { setFileList(fileList); if (fileList.length && fileList[0].status === "done") { form.setFieldsValue({ @@ -75,9 +60,9 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => { const uploadButton = (
{loading ? ( - + ) : ( - + )}
); @@ -93,15 +78,16 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => { const handleSubmit = async (data) => { console.log(data, "isi data2"); try { + modalLoader.setLoading(true); await store.payback.create(data); + modalLoader.setLoading(false); message.success("Success Add Payback"); await store.payback.getData(); } catch (e) { + modalLoader.setLoading(false); console.log(e, "apa errornya"); message.error("Failed Add Member"); } - - //store.payback.visibleModalPayback = false; form.resetFields(); }; @@ -137,10 +123,10 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => { - + { preview
{previewTitle}
@@ -196,9 +182,9 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => { - + diff --git a/src/pages/Product/Category.js b/src/pages/Product/Category.js index e3271e0..fee1dba 100644 --- a/src/pages/Product/Category.js +++ b/src/pages/Product/Category.js @@ -1,4 +1,4 @@ -import React, {useEffect, useState} from "react"; +import React, {useContext, useEffect, useState} from "react"; import {Button, Card, Col, Input, Row, Tabs} from "antd"; import {FilterOutlined, PlusSquareOutlined} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; @@ -6,22 +6,23 @@ import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; import {LINKS} from "../../routes/app"; import {CategoryComponent} from "../../component/CategoryComponent"; +import {ModalLoaderContext} from "../../utils/modal"; const {TabPane} = Tabs; const {Search} = Input; export const Category = observer(() => { - const [isLoading, setIsLoading] = useState(false); const store = useStore(); + const modalLoader = useContext(ModalLoaderContext); useEffect(() => { const init = async () => { try { - setIsLoading(true); + modalLoader.setLoading(true); await store.category.getData(); - setIsLoading(false); + modalLoader.setLoading(false); } catch (e) { - setIsLoading(false); + modalLoader.setLoading(false); } }; diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js index 663e4ac..edfa0ae 100644 --- a/src/pages/Product/Subcategory.js +++ b/src/pages/Product/Subcategory.js @@ -1,4 +1,4 @@ -import React, {useEffect, useState} from "react"; +import React, {useContext, useEffect, useState} from "react"; import {Button, Card, Col, Input, Row} from "antd"; import {PlusSquareOutlined} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; @@ -6,21 +6,22 @@ import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; import {LINKS} from "../../routes/app"; import {SubcategoryComponent} from "../../component/Subcategory"; +import {ModalLoaderContext} from "../../utils/modal"; const {Search} = Input; export const Subcategory = observer(() => { - const [isLoading, setIsLoading] = useState(false); const store = useStore(); + const modalLoader = useContext(ModalLoaderContext); useEffect(() => { const init = async () => { try { - setIsLoading(true); - getData(); - setIsLoading(false); + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); } catch (e) { - setIsLoading(false); + modalLoader.setLoading(false); } }; @@ -39,22 +40,22 @@ export const Subcategory = observer(() => { }, { route: LINKS.SUBCATEGORY, - name: Sub Category, + name: Sub Category, }, ]; return (
- + - +
{/* */} - + { - + ); diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index a0aa58e..1096b36 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -1,4 +1,4 @@ -import React, {useEffect} from "react"; +import React, {useContext, useEffect} from "react"; import {Button, Card, Col, Row, Table, Typography} from "antd"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {LINKS} from "../../routes/app"; @@ -6,138 +6,143 @@ import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; import {FilterOutlined} from "@ant-design/icons"; import {format, parseISO} from "date-fns"; +import {ModalLoaderContext} from "../../utils/modal"; const {Title, Text} = Typography; export const Profile = observer(() => { - const store = useStore(); - const routeData = [ - { - route: LINKS.HOME, - name: "Home", - }, - { - route: LINKS.PROFILE, - name: Profile, - }, - ]; + const store = useStore(); + const modalLoader = useContext(ModalLoaderContext); - useEffect(() => { - (async () => { - await Promise.allSettled([ - store.authentication.getProfile(), - store.transaction.getDataHistoryTransaction(), - ]); - })() - }, []); + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.PROFILE, + name: Profile, + }, + ]; - const columns = [ - { - title: 'Markup Price', - dataIndex: 'mark_up_price', - key: 'mark_up_price', - width: '20%', - }, - { - title: 'Name', - dataIndex: 'name', - key: 'name', - width: '50%', - }, - { - title: 'Transaction Date', - dataIndex: 'created_at', - key: 'created_at', - render: (text, record) => { - return ( - {format(parseISO(record.created_at), 'dd MMMM yyyy HH:mm')} - ) - }, - }, - ] + useEffect(() => { + (async () => { + modalLoader.setLoading(true); + await Promise.allSettled([ + store.authentication.getProfile(), + store.transaction.getDataHistoryTransaction(), + ]); + modalLoader.setLoading(false); + })() + }, []); - const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? { - display: "flex", - justifyContent: "center" - } : {fontSize: "0.75rem"}; - const styleSaldoContent = store.ui.mediaQuery.isDesktop ? { - fontSize: '1.25rem', - display: "flex", - justifyContent: "center" - } : null; + const columns = [ + { + title: 'Markup Price', + dataIndex: 'mark_up_price', + key: 'mark_up_price', + width: '20%', + }, + { + title: 'Name', + dataIndex: 'name', + key: 'name', + width: '50%', + }, + { + title: 'Transaction Date', + dataIndex: 'created_at', + key: 'created_at', + render: (text, record) => { + return ( + {format(parseISO(record.created_at), 'dd MMMM yyyy HH:mm')} + ) + }, + }, + ] - return ( -
- - - Profile - -
- - - Name - - - {store.authentication.profileData?.userDetail?.name} - - - Phone Number - - - {store.authentication.profileData?.userDetail?.phone_number} - - - Username - - - {store.authentication.profileData?.username} - - - Role - - - {store.authentication.profileData.roles?.name} - - - Superior - - - {store.authentication.profileData.superior?.username} - - - - - - - Saldo - - - {store.authentication.profileData?.wallet} - - - - - - -
- History User Transaction + const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? { + display: "flex", + justifyContent: "center" + } : {fontSize: "0.75rem"}; + const styleSaldoContent = store.ui.mediaQuery.isDesktop ? { + fontSize: '1.25rem', + display: "flex", + justifyContent: "center" + } : null; - -
- - - -
- -
- ) + return ( +
+ + + Profile + +
+ + + Name + + + {store.authentication.profileData?.userDetail?.name} + + + Phone Number + + + {store.authentication.profileData?.userDetail?.phone_number} + + + Username + + + {store.authentication.profileData?.username} + + + Role + + + {store.authentication.profileData.roles?.name} + + + Superior + + + {store.authentication.profileData.superior?.username} + + + + + + + Saldo + + + {store.authentication.profileData?.wallet} + + + + + + +
+ History User Transaction + + +
+ + + +
+ +
+ ) }); diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 9136263..6e5f103 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -1,8 +1,9 @@ -import React, {useEffect, useState} from "react"; +import React, {useContext, useEffect, useState} from "react"; import {useStore} from "../../utils/useStore"; import {Button, Card, Col, Input, message, Modal, Row, Select} from "antd"; import {observer} from "mobx-react-lite"; import {MoneyCollectOutlined} from "@ant-design/icons"; +import {ModalLoaderContext} from "../../utils/modal"; const {Search} = Input; const {Option} = Select; @@ -10,133 +11,139 @@ const {Option} = Select; export const Product = observer(() => { const store = useStore(); - const [isLoading, setIsLoading] = useState(false); const [productData, setProductData] = useState([]); + const modalLoader = useContext(ModalLoaderContext); useEffect(() => { const init = async () => { try { - setIsLoading(true); - await store.transaction.getDataSubCategories(); - await store.transaction.getDataCategories(); - setIsLoading(false); + modalLoader.setLoading(true); + await Promise.allSettled([ + store.transaction.getDataSubCategories(), + store.transaction.getDataCategories() + ]) + modalLoader.setLoading(false); } catch (e) { - setIsLoading(false); + modalLoader.setLoading(false); } }; - init(); + init(); }, []); - // data - useEffect(() => { - console.log("âš¡ transaction data store", store.transaction.data); - setProductData(store.transaction.data); - }, [store.transaction.data]); + // data + useEffect(() => { + console.log("âš¡ transaction data store", store.transaction.data); + setProductData(store.transaction.data); + }, [store.transaction.data]); - // Subcategory - useEffect(() => { - console.log( - "âš¡ transaction subcategory store", - store.transaction.dataSubCategories - ); - }, [store.transaction.dataSubCategories]); + // Subcategory + useEffect(() => { + console.log( + "âš¡ transaction subcategory store", + store.transaction.dataSubCategories + ); + }, [store.transaction.dataSubCategories]); - const handleChangeSubcategory = async (item) => { - store.transaction.filterSubCategory = item; - await store.transaction.getData(); - }; + const handleChangeSubcategory = async (item) => { + store.transaction.filterSubCategory = item; + modalLoader.setLoading(true); + await store.transaction.getData(); + modalLoader.setLoading(false); + }; - const handleBuyProduct = async (data) => { - try { - const response = await store.transaction.buyProduct({productCode: data}); - // if (response.status === 200) { - message.success("Success Buy Product"); - // } else { - //message.error("Failed Buy Product"); - //} - } catch (e) { - console.log(e, "apa errornya"); - message.error("Failed Buy Product"); - } - }; + const handleBuyProduct = async (data) => { + modalLoader.setLoading(true); + try { + const response = await store.transaction.buyProduct({productCode: data}); + // if (response.status === 200) { + message.success("Success Buy Product"); + // } else { + //message.error("Failed Buy Product"); + //} + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Buy Product"); + } + modalLoader.setLoading(false); + }; - return ( -
- - Sub Category - - -
- - - - - - Produk & Nominal - - - - - - {productData.length != 0 && ( - - {productData.map((item, index) => ( - - { - Modal.confirm({ - title: `Are you sure buy ${item.name}?`, - icon: , - okText: "Confirm", - cancelText: "Cancel", - okType: "primary", - onOk() { - handleBuyProduct(item.code) - }, - onCancel() { - console.log("Cancel"); - }, - }); - }} - style={{cursor: "pointer"}} - > - {item.name} -
- + return ( +
+ + Sub Category + + +
+ + + + + + Produk & Nominal + + + + + + {productData.length != 0 && ( + + {productData.map((item, index) => ( + + { + Modal.confirm({ + title: `Are you sure buy ${item.name}?`, + icon: , + okText: "Confirm", + cancelText: "Cancel", + okType: "primary", + onOk() { + handleBuyProduct(item.code) + }, + onCancel() { + console.log("Cancel"); + }, + }); + }} + style={{cursor: "pointer"}} + > + {item.name} +
+ {new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", + style: "currency", + currency: "IDR", }).format(item?.currentPrice?.mark_up_price)} -
- - ))} + + + ))} )} {productData.length !== 0 && ( - + diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js index 1b0d0ec..978d6b9 100644 --- a/src/pages/Transaction/Transaction.js +++ b/src/pages/Transaction/Transaction.js @@ -1,27 +1,28 @@ -import React, {useEffect, useState} from "react"; +import React, {useContext, useEffect, useState} from "react"; import {useStore} from "../../utils/useStore"; import {Card, Tabs} from "antd"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {Product} from "./Product"; import {LINKS} from "../../routes/app"; import {observer} from "mobx-react-lite"; +import {ModalLoaderContext} from "../../utils/modal"; const {TabPane} = Tabs; export const Transaction = observer(() => { const store = useStore(); - const [isLoading, setIsLoading] = useState(false); + const modalLoader = useContext(ModalLoaderContext); // Init useEffect(() => { const init = async () => { try { - setIsLoading(true); + modalLoader.setLoading(true); await store.transaction.getDataCategories(); - setIsLoading(false); + modalLoader.setLoading(false); } catch (e) { - setIsLoading(false); + modalLoader.setLoading(false); } }; @@ -35,7 +36,9 @@ export const Transaction = observer(() => { const handleChangeTabs = async (key) => { store.transaction.filterCategory = key; + modalLoader.setLoading(true); await store.transaction.getDataSubCategories(); + modalLoader.setLoading(false); }; const routeData = [ @@ -50,22 +53,22 @@ export const Transaction = observer(() => { ]; return ( -
- - - - {store.transaction.dataCategories.map((item, index) => ( - - - - ))} +
+ + + + {store.transaction.dataCategories.map((item, index) => ( + + + + ))} - - -
+
+
+
); }); From 94a4f598337015c24073ff5d25666785c2dcc17d Mon Sep 17 00:00:00 2001 From: caturbgs Date: Tue, 21 Dec 2021 11:38:47 +0700 Subject: [PATCH 113/324] feat: fix login modal loader --- src/pages/Login/Login.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/pages/Login/Login.js b/src/pages/Login/Login.js index b71b999..9e34298 100644 --- a/src/pages/Login/Login.js +++ b/src/pages/Login/Login.js @@ -1,34 +1,29 @@ -import React, {useContext} from "react"; +import React from "react"; import {observer} from 'mobx-react-lite'; import {useStore} from "../../utils/useStore"; import {Button, Card, Col, Form, Input, message, Row, Typography} from 'antd'; import {useHistory} from "react-router-dom"; import {LINKS} from "../../routes/app"; -import {ModalLoaderContext} from "../../utils/modal"; export const Login = observer(() => { const store = useStore(); let history = useHistory(); const [form] = Form.useForm(); - const modalLoader = useContext(ModalLoaderContext); const handleLogin = async (params) => { try { - modalLoader.setLoading(true); await store.authentication.login({ username: params.username, password: params.password, }); - modalLoader.setLoading(false); - history.push(LINKS.HOME); } catch (e) { - modalLoader.setLoading(true); if (e.response?.body?.message) { message.error(e.response.body.message); return; } message.error(e.message); } + history.push(LINKS.HOME); } return ( From 3884967dee65f6a08e962044fedd9bc8e40c2b7f Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 21 Dec 2021 11:43:20 +0700 Subject: [PATCH 114/324] handling error --- src/pages/Config/Commission.js | 7 ++++++- src/pages/Config/Partner.js | 7 ++++++- src/pages/Config/Supplier.js | 5 +++++ src/pages/Login/Login.js | 4 ++-- src/pages/Membership/Membership.js | 5 +++++ src/pages/Payback/Payback.js | 5 +++++ src/pages/Payback/PaybackFromUser.js | 5 +++++ src/pages/Payback/PaybackModal.js | 7 +++++-- src/pages/Product/Category.js | 7 ++++++- src/pages/Product/Product.js | 7 ++++++- src/pages/Product/Subcategory.js | 7 ++++++- src/pages/Transaction/Product.js | 5 +++++ src/pages/Transaction/Transaction.js | 7 ++++++- 13 files changed, 68 insertions(+), 10 deletions(-) diff --git a/src/pages/Config/Commission.js b/src/pages/Config/Commission.js index b7388bc..baa91c9 100644 --- a/src/pages/Config/Commission.js +++ b/src/pages/Config/Commission.js @@ -1,5 +1,5 @@ import React, {useContext, useEffect, useState} from "react"; -import { Button, Card, Col, Input, Row, Tabs } from "antd"; +import { Button, Card, Col, Input, Row, Tabs ,message} from "antd"; import { FilterOutlined, PlusSquareOutlined } from "@ant-design/icons"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { useStore } from "../../utils/useStore"; @@ -24,6 +24,11 @@ export const Commission = observer(() => { modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } }; diff --git a/src/pages/Config/Partner.js b/src/pages/Config/Partner.js index 6b5e6c4..e1e8b41 100644 --- a/src/pages/Config/Partner.js +++ b/src/pages/Config/Partner.js @@ -1,5 +1,5 @@ import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, Input, Row, Tabs} from "antd"; +import {Button, Card, Col, Input, Row, Tabs,message} from "antd"; import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {useStore} from "../../utils/useStore"; @@ -22,6 +22,11 @@ export const Partner = observer(() => { modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } }; diff --git a/src/pages/Config/Supplier.js b/src/pages/Config/Supplier.js index 9c42792..5c6d60a 100644 --- a/src/pages/Config/Supplier.js +++ b/src/pages/Config/Supplier.js @@ -37,6 +37,11 @@ export const Supplier = observer(() => { modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } }; diff --git a/src/pages/Login/Login.js b/src/pages/Login/Login.js index b71b999..6ec5bc9 100644 --- a/src/pages/Login/Login.js +++ b/src/pages/Login/Login.js @@ -14,12 +14,12 @@ export const Login = observer(() => { const handleLogin = async (params) => { try { - modalLoader.setLoading(true); + //modalLoader.setLoading(true); await store.authentication.login({ username: params.username, password: params.password, }); - modalLoader.setLoading(false); + //modalLoader.setLoading(false); history.push(LINKS.HOME); } catch (e) { modalLoader.setLoading(true); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 0908976..93d6d33 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -53,6 +53,11 @@ export const Membership = observer(() => { } catch (e) { console.error(e); modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } }; diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index ba1a29f..8ade44a 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -39,6 +39,11 @@ export const Payback = observer(() => { modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } }; diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js index 1e66284..8f359f4 100644 --- a/src/pages/Payback/PaybackFromUser.js +++ b/src/pages/Payback/PaybackFromUser.js @@ -42,6 +42,11 @@ export const PaybackFromUser = observer(() => { modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } }; diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index e87f74d..a6bf6de 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -85,8 +85,11 @@ export const PaybackModal = ({visible, onCreate, onCancel, initialData}) => { await store.payback.getData(); } catch (e) { modalLoader.setLoading(false); - console.log(e, "apa errornya"); - message.error("Failed Add Member"); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } form.resetFields(); }; diff --git a/src/pages/Product/Category.js b/src/pages/Product/Category.js index fee1dba..67728e8 100644 --- a/src/pages/Product/Category.js +++ b/src/pages/Product/Category.js @@ -1,5 +1,5 @@ import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, Input, Row, Tabs} from "antd"; +import {Button, Card, Col, Input, Row, Tabs,message} from "antd"; import {FilterOutlined, PlusSquareOutlined} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {useStore} from "../../utils/useStore"; @@ -23,6 +23,11 @@ export const Category = observer(() => { modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } }; diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 1c5dc03..c4806ff 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,5 +1,5 @@ import React, {useContext, useEffect} from "react"; -import {Button, Card, Col, Input, Row, Upload} from "antd"; +import {Button, Card, Col, Input, Row, Upload,message} from "antd"; import {FilterOutlined, PlusSquareOutlined, UploadOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {useStore} from "../../utils/useStore"; @@ -27,6 +27,11 @@ export const Product = observer(() => { modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } }; diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js index edfa0ae..402ab7f 100644 --- a/src/pages/Product/Subcategory.js +++ b/src/pages/Product/Subcategory.js @@ -1,5 +1,5 @@ import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, Input, Row} from "antd"; +import {Button, Card, Col, Input, Row,message} from "antd"; import {PlusSquareOutlined} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {useStore} from "../../utils/useStore"; @@ -22,6 +22,11 @@ export const Subcategory = observer(() => { modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } }; diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 6e5f103..5e23868 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -25,6 +25,11 @@ export const Product = observer(() => { modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } }; diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js index 978d6b9..441a30a 100644 --- a/src/pages/Transaction/Transaction.js +++ b/src/pages/Transaction/Transaction.js @@ -1,4 +1,4 @@ -import React, {useContext, useEffect, useState} from "react"; +import React, {useContext, useEffect, useState,message} from "react"; import {useStore} from "../../utils/useStore"; import {Card, Tabs} from "antd"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; @@ -23,6 +23,11 @@ export const Transaction = observer(() => { modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); } }; From 89b890c8882e29d903840112a449a1d8dbdcc54c Mon Sep 17 00:00:00 2001 From: caturbgs Date: Tue, 21 Dec 2021 12:03:15 +0700 Subject: [PATCH 115/324] feat: change payback data page --- src/pages/Payback/Payback.js | 256 ++++++++++++--------------- src/pages/Payback/PaybackFromUser.js | 149 ++++------------ src/store/payback.js | 40 ++--- 3 files changed, 158 insertions(+), 287 deletions(-) diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 8ade44a..a87baff 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -1,26 +1,8 @@ -import React, {useState, useEffect, useContext} from "react"; -import { - Button, - Card, - Col, - Divider, - Image, - Input, - List, - message, - Row, - Space, - Table, -} from "antd"; +import React, {useContext, useEffect} from "react"; +import {Button, Card, Col, Divider, Image, Input, List, message, Row, Space, Table,} from "antd"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; -import { - CheckCircleOutlined, - CloseOutlined, - FilterOutlined, - PlusSquareOutlined, -} from "@ant-design/icons"; -import {PaybackModal} from "./PaybackModal"; +import {CheckCircleOutlined, CloseOutlined, FilterOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {LINKS} from "../../routes/app"; import {ModalLoaderContext} from "../../utils/modal"; @@ -35,7 +17,7 @@ export const Payback = observer(() => { const init = async () => { try { modalLoader.setLoading(true); - await store.payback.getDataUser(); + await store.payback.getData(); modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); @@ -52,11 +34,6 @@ export const Payback = observer(() => { const columns = [ - { - title: "Name", - dataIndex: "name", - key: "name", - }, { title: "Picture", dataIndex: "image_prove", @@ -77,37 +54,37 @@ export const Payback = observer(() => { }, { title: "Action", + dataIndex: "amount", key: "action", - width: 100, render: (text, record) => ( - - - - + + + + ), }, ]; @@ -128,9 +105,9 @@ export const Payback = observer(() => { const onSubmit = async (data) => { modalLoader.setLoading(true); try { - // await store.membership.create(data); + // await store.payback.create(data); // message.success("Success Add New Member"); - // await store.membership.getData(); + // await store.payback.getData(); } catch (e) { console.error(e, "apa errornya"); message.error("Failed Add Member"); @@ -175,83 +152,85 @@ export const Payback = observer(() => { {store.ui.mediaQuery.isDesktop && ( -
{ - // let pageNumber = page.current; - // store.membership.pageSize = page.pageSize; - // store.membership.page = pageNumber - 1; - // // store.membership.isLoading = true; - // await store.membership.getData(); - // // store.membership.isLoading = false; - // }} - /> +
{ + let pageNumber = page.current; + store.payback.pageSize = page.pageSize; + store.payback.page = pageNumber - 1; + modalLoader.setLoading(true); + await store.payback.getData(); + modalLoader.setLoading(false); + }} + /> )} {store.ui.mediaQuery.isMobile && ( - { - // store.membership.pageSize = page.pageSize; - // store.membership.page = page.current; - // store.membership.getData(); - // }, - // pageSize: store.membership.pageSize, - // total: store.membership.total_data, - // current: store.membership.page, - // style: {marginBottom: "1rem", marginRight: "1rem"}, - // }} - dataSource={store.payback.data} - style={{padding: 0}} - renderItem={(item) => { - return ( -
- - - -
- } - /> -
-

- {item.amount} -

-
- - + { + store.payback.pageSize = page.pageSize; + store.payback.page = page.current; + modalLoader.setLoading(true); + await store.payback.getData(); + modalLoader.setLoading(false); + }, + pageSize: store.payback.pageSize, + total: store.payback.total_data, + current: store.payback.page, + style: {marginBottom: "1rem", marginRight: "1rem"}, + }} + dataSource={store.payback.data} + style={{padding: 0}} + renderItem={(item) => { + return ( +
+ + + +
+ } + /> +
+

+ {item.amount} +

+
+ + ); }} @@ -259,19 +238,6 @@ export const Payback = observer(() => { )} - - {/* { - await onSubmit(data); - }} - onCancel={() => { - setInitialData({}); - setVisibleModal(false); - }} - /> */} ); }); diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js index 8f359f4..3df9981 100644 --- a/src/pages/Payback/PaybackFromUser.js +++ b/src/pages/Payback/PaybackFromUser.js @@ -1,25 +1,8 @@ -import React, {useState, useEffect, useContext} from "react"; -import { - Button, - Card, - Col, - Divider, - Image, - Input, - List, - message, - Row, - Space, - Table, -} from "antd"; +import React, {useContext, useEffect, useState} from "react"; +import {Button, Card, Col, Divider, Image, Input, List, message, Row, Table,} from "antd"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; -import { - CheckCircleOutlined, - CloseOutlined, - FilterOutlined, - PlusSquareOutlined, -} from "@ant-design/icons"; +import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; import {PaybackModal} from "./PaybackModal"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {LINKS} from "../../routes/app"; @@ -37,7 +20,7 @@ export const PaybackFromUser = observer(() => { const init = async () => { try { modalLoader.setLoading(true); - await store.payback.getData(); + await store.payback.getDataUser(); await store.authentication.getProfile(); modalLoader.setLoading(false); } catch (e) { @@ -73,76 +56,6 @@ export const PaybackFromUser = observer(() => { dataIndex: "amount", key: "amount", }, - { - title: "Action", - dataIndex: "amount", - key: "action", - render: (text, record) => ( - - - - - ), - }, - // { - // title: "Action", - // key: "action", - // width: 100, - // render: (text, record) => ( - // - // - // - // - // ), - // }, ]; const routeData = [ @@ -208,26 +121,26 @@ export const PaybackFromUser = observer(() => { {store.ui.mediaQuery.isDesktop && (
{ - let pageNumber = page.current; - store.payback.pageSize = page.pageSize; - store.payback.page = pageNumber - 1; - modalLoader.setLoading(true); - await store.payback.getData(); - modalLoader.setLoading(false); - }} + key="1" + hasEmpty + columns={columns} + dataSource={store.payback.dataPaybackUser} + bordered + pagination={{ + pageSize: store.payback.pageSizePaybackUser, + total: store.payback.total_dataPaybackUser, + current: store.payback.pageSizePaybackUser + 1, + showSizeChanger: true, + simple: false + }} + onChange={async (page) => { + let pageNumber = page.current; + store.payback.pageSizePaybackUser = page.pageSize; + store.payback.pageSizePaybackUser = pageNumber - 1; + modalLoader.setLoading(true); + await store.payback.getDataUser(); + modalLoader.setLoading(false); + }} /> )} @@ -237,18 +150,18 @@ export const PaybackFromUser = observer(() => { position={"top"} pagination={{ onChange: async (page) => { - store.payback.pageSize = page.pageSize; - store.payback.page = page.current; + store.payback.pageSizePaybackUser = page.pageSize; + store.payback.pageSizePaybackUser = page.current; modalLoader.setLoading(true); - await store.payback.getData(); + await store.payback.getDataUser(); modalLoader.setLoading(false); }, - pageSize: store.payback.pageSize, - total: store.payback.total_data, - current: store.payback.page, + pageSize: store.payback.pageSizePaybackUser, + total: store.payback.total_dataPaybackUser, + current: store.payback.pageSizePaybackUser, style: {marginBottom: "1rem", marginRight: "1rem"}, }} - dataSource={store.payback.data} + dataSource={store.payback.dataPaybackUser} style={{padding: 0}} renderItem={(item) => { return ( diff --git a/src/store/payback.js b/src/store/payback.js index adbc4f4..e11861d 100644 --- a/src/store/payback.js +++ b/src/store/payback.js @@ -9,15 +9,10 @@ export class Payback { filterCategory = null; visibleModalPayback = false; - pagePayback = 0; - pageSizePayback = 10; - dataPayback = []; - total_dataPayback = 0; - - pageSubPayback = 0; - pageSizeSubPayback = 10; - dataSubPayback = []; - total_dataPayback = 0; + pagePaybackUser = 0; + pageSizePaybackUser = 10; + dataPaybackUser = []; + total_dataPaybackUser = 0; constructor(ctx) { this.ctx = ctx; @@ -27,14 +22,12 @@ export class Payback { async getData() { try { const response = await http.get( - `/transaction/deposit-return?page=${this.page}&pageSize=${this.pageSize}` + `/transaction/deposit-return?page=${this.page}&pageSize=${this.pageSize}` ); - //console.log(response) - this.data = - response.body.data.map((item, idx) => { - item.key = idx; - return item; - }) ?? []; + this.data = response.body.data.map((item, idx) => { + item.key = idx; + return item; + }) ?? []; this.total_data = response.body.count ?? 0; } catch (e) { @@ -45,16 +38,14 @@ export class Payback { async getDataUser() { try { const response = await http.get( - `/transaction/deposit-return/confirmation?page=${this.page}&pageSize=${this.pageSize}` + `/transaction/deposit-return/confirmation?page=${this.pagePaybackUser}&pageSize=${this.pageSizePaybackUser}` ); - //console.log(response); - this.data = - response.body.data.map((item, idx) => { - item.key = idx; - return item; - }) ?? []; + this.dataPaybackUser = response.body.data.map((item, idx) => { + item.key = idx; + return item; + }) ?? []; - this.total_data = response.body.count ?? 0; + this.total_dataPaybackUser = response.body.count ?? 0; } catch (e) { console.error(e); } @@ -79,6 +70,7 @@ export class Payback { console.error(e); } } + async create(data) { try { console.log(data) From a4ba756dbce32278ae2dc866909447956d69ca75 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Tue, 21 Dec 2021 14:42:53 +0700 Subject: [PATCH 116/324] feat: add upload image payback --- src/pages/Payback/PaybackFromUser.js | 6 +- src/pages/Payback/PaybackModal.js | 226 ++++++++++++--------------- src/utils/http.js | 9 +- 3 files changed, 106 insertions(+), 135 deletions(-) diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js index 3df9981..cc258f2 100644 --- a/src/pages/Payback/PaybackFromUser.js +++ b/src/pages/Payback/PaybackFromUser.js @@ -20,8 +20,10 @@ export const PaybackFromUser = observer(() => { const init = async () => { try { modalLoader.setLoading(true); - await store.payback.getDataUser(); - await store.authentication.getProfile(); + await Promise.allSettled([ + store.payback.getDataUser(), + store.authentication.getProfile() + ]); modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index a6bf6de..9079ad9 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -1,37 +1,28 @@ -import React, {useState, useEffect, useContext} from "react"; -import { - Button, - Form, - Image, - Input, - message, - Modal, - Upload, -} from "antd"; +import React, {useContext, useState} from "react"; +import {Form, Input, message, Modal, Upload,} from "antd"; import {useStore} from "../../utils/useStore"; -import {appConfig} from "../../config/app"; -import {LoadingOutlined, UploadOutlined} from "@ant-design/icons"; +import {LoadingOutlined, PlusOutlined} from "@ant-design/icons"; import {ModalLoaderContext} from "../../utils/modal"; +import {http} from "../../utils/http"; +import {appConfig} from "../../config/app"; export const PaybackModal = ({visible, onCreate, onCancel, initialData}) => { const [form] = Form.useForm(); const store = useStore(); + const [image, setImage] = useState(""); const [fileList, setFileList] = useState([]); - const [previewTitle, setPreviewTitle] = useState(""); const [previewImage, setPreviewImage] = useState(""); - const [fileUrl, setFileUrl] = useState(""); - const firstIndexFileList = fileList[0]; + const [previewVisible, setPreviewVisible] = useState(false); const [loading, setLoading] = useState(false); const modalLoader = useContext(ModalLoaderContext); const beforeUpload = (file) => { - let isPdf, isLt2M; - let allowedFile = ["image/jpeg", "image/png", "application/pdf"]; + let isLt2M; + let allowedFile = ["image/jpeg", "image/png"]; let isValid = allowedFile.includes(file.type); if (!isValid) { - message.error("You can only upload PDF or Image file!"); + message.error("You can only upload Image file!"); } - // return file.type === 'application/pdf' ? true : Upload.LIST_IGNORE; isLt2M = file.size / 1024 / 1024 < 2; if (!isLt2M) { message.error("File must smaller than 2MB!"); @@ -39,40 +30,31 @@ export const PaybackModal = ({visible, onCreate, onCancel, initialData}) => { return isValid && isLt2M ? true : Upload.LIST_IGNORE; }; - const handlePreview = async (file) => { - const fileUrl = appConfig.apiUrl + file.response.path; - setPreviewTitle(file.url?.substring(file.url?.lastIndexOf("/") + 1)); + const uploadHandler = async (args) => { + const file = args.file; + const res = await http.upload(file); + setImage(`${appConfig.apiUrl}/config/image/${res.body.filename}`); + setFileList([{ + uid: '-1', + name: 'image', + status: 'done', + url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, + }]); }; - const handleChange = ({fileList}) => { - setFileList(fileList); - if (fileList.length && fileList[0].status === "done") { - form.setFieldsValue({ - file_url: fileList[0].response.path, - }); - console.log(fileList, "apaaaaaa"); - setFileUrl(fileList[0].response.path); - setPreviewImage(fileList[0].response.path); - setPreviewTitle(fileList[0].name); + const handleChange = (info) => { + if (info.file.status === 'uploading') { + setLoading(true); + return; } + setLoading(false) }; const uploadButton = ( -
- {loading ? ( - - ) : ( - - )} -
- ); - - const previewUpload = ( - +
+ {loading ? : } +
Click to Upload
+
); const handleSubmit = async (data) => { @@ -95,101 +77,85 @@ export const PaybackModal = ({visible, onCreate, onCancel, initialData}) => { }; return ( - { - form.resetFields(); - onCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - handleSubmit(values); - console.log(values); + { form.resetFields(); - }) - .catch((info) => { - console.log("Validate Failed:", info); - }); - }} - > -
{ + form + .validateFields() + .then((values) => { + handleSubmit(values); + console.log(values); + form.resetFields(); + }) + .catch((info) => { + console.log("Validate Failed:", info); + }); + }} > - - - - -
+ + +
{ + setPreviewImage(file.url || file.filename); + setPreviewVisible(file.url || file.filename); + }} + showUploadList={true} + onChange={handleChange} + beforeUpload={(file) => beforeUpload(file)} + customRequest={(args) => uploadHandler(args)} + onRemove={(file) => { + setImage(''); + setLoading(false); + setFileList([]); + }} > - {!firstIndexFileList ? uploadButton : null} + + {image === "" ? uploadButton : null}
Max size of file 2 mb
-
-
Preview
-
- preview -
-
{previewTitle}
-
- {previewUpload} - {previewTitle && {`${previewTitle ?? ""}`}} -
-
-
-
- - - - -
+ + + + + +
); }; diff --git a/src/utils/http.js b/src/utils/http.js index a752a36..4bb2fe8 100644 --- a/src/utils/http.js +++ b/src/utils/http.js @@ -50,13 +50,16 @@ export const http = { return req; }, upload: (file) => { - const request = superagent - .post(appConfig.apiUrl + '/files') + let req = superagent + .post(appConfig.apiUrl + '/config/upload-files') .attach('file', file) .use(authIntercept) .use(attachSuperagentLogger); + if (TokenUtil.accessToken) { + req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken); + } - return request; + return req; }, uploadAntd: (args) => { const file = args.file; From 2d87c65bbc1ca8d3d769c27670557d577ca7cb31 Mon Sep 17 00:00:00 2001 From: ilham Date: Tue, 21 Dec 2021 15:07:49 +0700 Subject: [PATCH 117/324] fix: get membership --- src/component/SupplierComponent.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index 8071879..29b1298 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -65,15 +65,26 @@ export const SupplierComponent = observer((props) => { width: "5%", }, { - title: "Saldo", + title: "Saldo di Supplier", dataIndex: ["coa", "amount"], key: ["coa", "amount"], width: "20%", render: (text, record) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text) + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text) + }, + { + title: "Saldo di System", + dataIndex: ["coa_undistribute", "amount"], + key: ["coa_undistribute", "amount"], + width: "20%", + render: (text, record) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text) }, { title: "Status", From f91cbd02b2350d38151a820683e27bd44bcc1d34 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 21 Dec 2021 15:21:58 +0700 Subject: [PATCH 118/324] Mobile Responsive --- src/component/PartnerComponent.js | 217 +++++++++++++++++------ src/component/ProductComponent.js | 276 +++++++++++++++++++++--------- src/component/Subcategory.js | 148 ++++++++++++---- src/pages/App/DesktopLayout.js | 2 +- src/pages/Product/Product.js | 2 +- 5 files changed, 471 insertions(+), 174 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index bd4c46a..7a3afd0 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -1,11 +1,23 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Button, Form, Input, message, Modal, Select, Space, Table, Tag,} from "antd"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined} from "@ant-design/icons"; -import {useHistory} from "react-router-dom"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; -import {ModalLoaderContext} from "../utils/modal"; +import React, { useContext, useEffect, useState } from "react"; +import { + Button, + Form, + Input, + message, + Modal, + Select, + Space, + Table, + Tag, + List, + Divider, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { useHistory } from "react-router-dom"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; +import { ModalLoaderContext } from "../utils/modal"; export const PartnerComponent = observer((props) => { const store = useStore(); @@ -78,7 +90,7 @@ export const PartnerComponent = observer((props) => { render: (text, record) => ( {record?.status === true ? " ACTIVE" : "INACTIVE"} @@ -121,7 +133,7 @@ export const PartnerComponent = observer((props) => { const handleDelete = (id) => { Modal.confirm({ title: "Are you sure delete this record?", - icon: , + icon: , okText: "Yes", okType: "primary", cancelText: "Cancel", @@ -181,36 +193,126 @@ export const PartnerComponent = observer((props) => { }; return (
-
{ - let pageNumber = page.current; - store.partner.pageSize = page.pageSize; - store.partner.page = pageNumber - 1; - modalLoader.setLoading(true); - await store.partner.getData(); - modalLoader.setLoading(false); - }} - /> - + {store.ui.mediaQuery.isDesktop && ( +
{ + let pageNumber = page.current; + store.partner.pageSize = page.pageSize; + store.partner.page = pageNumber - 1; + modalLoader.setLoading(true); + await store.partner.getData(); + modalLoader.setLoading(false); + }} + /> + )} + {store.ui.mediaQuery.isMobile && ( + { + store.partner.pageSize = page.pageSize; + store.partner.page = page.current; + modalLoader.setLoading(true); + await store.partner.getData(); + modalLoader.setLoading(false); + }, + pageSize: store.partner.pageSize, + total: store.partner.total_data, + current: store.partner.page, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.partner.data} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + +

+ Nama : {item.name}
+ Npwp : {item.npwp}
+ Address : {item.address} + + + + {/* */} + + +

+

+
+ } + /> +
+

+ + {item?.status === true ? " ACTIVE" : "INACTIVE"} + +

+
+ + + + ); + }} + /> + )} { label="Name" rules={[ idData - ? {required: false} - : {required: true, message: "Please input password name!"}, + ? { required: false } + : { required: true, message: "Please input password name!" }, ]} > - + )} {!idData && ( @@ -251,11 +353,11 @@ export const PartnerComponent = observer((props) => { label="Owner" rules={[ idData - ? {required: false} - : {required: true, message: "Please input password owner!"}, + ? { required: false } + : { required: true, message: "Please input password owner!" }, ]} > - + )} {((idData && isChangePassword) || !idData) && ( @@ -264,14 +366,14 @@ export const PartnerComponent = observer((props) => { label="Password Account" rules={[ idData - ? {required: false} + ? { required: false } : { - required: true, - message: "Please input password account!", - }, + required: true, + message: "Please input password account!", + }, ]} > - + )} {!idData && ( @@ -280,11 +382,14 @@ export const PartnerComponent = observer((props) => { label="Phone Number" rules={[ idData - ? {required: false} - : {required: true, message: "Please input password phone number!"}, + ? { required: false } + : { + required: true, + message: "Please input password phone number!", + }, ]} > - + )} {!isChangePassword && ( @@ -294,25 +399,25 @@ export const PartnerComponent = observer((props) => { label="Npwp" rules={[ idData - ? {required: false} - : {required: true, message: "Please input npwp!"}, + ? { required: false } + : { required: true, message: "Please input npwp!" }, ]} > - + - + )} diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 9d62954..4b0b143 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -1,28 +1,42 @@ -import React, {useContext, useState} from "react"; -import {Button, Col, Form, Input, message, Modal, Row, Select, Table, Tag, Typography} from "antd"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined} from "@ant-design/icons"; -import {useHistory} from "react-router-dom"; -import {capitalize} from "lodash"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; -import {ModalLoaderContext} from "../utils/modal"; +import React, { useContext, useState } from "react"; +import { + Button, + Col, + Form, + Input, + message, + Modal, + Row, + Select, + Table, + Divider, + Tag, + Typography, + List, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { useHistory } from "react-router-dom"; +import { capitalize } from "lodash"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; +import { ModalLoaderContext } from "../utils/modal"; -const {Title, Text} = Typography; +const { Title, Text } = Typography; export const ProductComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const {Option} = Select; + const { Option } = Select; const history = useHistory(); - const [idData, setIdData] = useState(''); + const [idData, setIdData] = useState(""); const [filterSupplier, setFilterSupplier] = useState(null); const [filterCategories, setFilterCategories] = useState(null); const [filterSubCategories, setFilterSubCategories] = useState(null); const modalLoader = useContext(ModalLoaderContext); const handleEditButton = (data) => { - console.log(data, "isi data") + console.log(data, "isi data"); form.setFieldsValue({ name: data.name, price: data.price, @@ -33,7 +47,7 @@ export const ProductComponent = observer((props) => { }); store.product.visibleModalProduct = true; setIdData(data.id); - } + }; const columns = [ { @@ -76,12 +90,12 @@ export const ProductComponent = observer((props) => { render: (text, record) => ( {record?.status === "ACTIVE" ? " Tersedia" : "Tidak"} ), - } + }, ]; const deleteData = async (id) => { @@ -99,7 +113,7 @@ export const ProductComponent = observer((props) => { const handleDelete = (id) => { Modal.confirm({ title: "Are you sure delete this record?", - icon: , + icon: , okText: "Yes", okType: "primary", cancelText: "Cancel", @@ -113,39 +127,39 @@ export const ProductComponent = observer((props) => { }; const handleCancel = () => { - setIdData('') + setIdData(""); store.product.visibleModalProduct = false; - } + }; const handleSubmit = async (data) => { - console.log(data, "isi data2") - if (idData !== '') { + console.log(data, "isi data2"); + if (idData !== "") { modalLoader.setLoading(true); try { - await store.product.update(idData, data) - message.success("Success Update Data Member") + await store.product.update(idData, data); + message.success("Success Update Data Member"); } catch (e) { - message.error("Failed Update Data Member") + message.error("Failed Update Data Member"); } modalLoader.setLoading(false); store.product.visibleModalProduct = false; - setIdData(''); + setIdData(""); form.resetFields(); } else { modalLoader.setLoading(true); try { - await store.product.create(data) - message.success("Success Add New Member") + await store.product.create(data); + message.success("Success Add New Member"); } catch (e) { - console.log(e, "apa errornya") - message.error("Failed Add Member") + console.log(e, "apa errornya"); + message.error("Failed Add Member"); } modalLoader.setLoading(false); store.product.visibleModalProduct = false; - setIdData(''); + setIdData(""); form.resetFields(); } - } + }; const handleRemoveFilter = async () => { store.product.filterSupplier = null; @@ -174,39 +188,132 @@ export const ProductComponent = observer((props) => { }; const footerLayoutFilter = [ - , - , - - ] + , + , + , + ]; return (
-
{ - let pageNumber = page.current; - store.product.pageSize = page.pageSize; - store.product.page = pageNumber - 1; - modalLoader.setLoading(true); - await store.product.getData(); - modalLoader.setLoading(false); - }} - /> - + {store.ui.mediaQuery.isDesktop && ( +
{ + let pageNumber = page.current; + store.product.pageSize = page.pageSize; + store.product.page = pageNumber - 1; + modalLoader.setLoading(true); + await store.product.getData(); + modalLoader.setLoading(false); + }} + /> + )} + {store.ui.mediaQuery.isMobile && ( + { + store.product.pageSize = page.pageSize; + store.product.page = page.current; + modalLoader.setLoading(true); + await store.product.getData(); + modalLoader.setLoading(false); + }, + pageSize: store.product.pageSize, + total: store.product.total_data, + current: store.product.page, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.product.data} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + +

+ Nama Produk : {item.name}
+ Harga Beli : {item.currentPrice.price} +
+ + Harga Jual : {item.currentPrice.mark_up_price} + +

+

+
+ } + /> +
+

+ + {item?.status === "ACTIVE" ? " Tersedia" : "Tidak"} + +

+
+ + + + ); + }} + /> + )} { form .validateFields() .then((values) => { - console.log(values, "isi form") + console.log(values, "isi form"); handleSubmit(values); form.resetFields(); }) @@ -229,42 +336,39 @@ export const ProductComponent = observer((props) => { }); }} > -
+ - + - + - + - + {store.product.dataSubCategories.map((item) => ( @@ -294,14 +400,16 @@ export const ProductComponent = observer((props) => { >
- Filter Supplier + + Filter Supplier + - Filter Categories + + Filter Categories + - Filter Sub-Categories + + Filter Sub-Categories +
{ - let pageNumber = page.current; - store.subcategory.pageSize = page.pageSize; - store.subcategory.page = pageNumber - 1; - modalLoader.setLoading(true); - await getData(); - modalLoader.setLoading(false); - }} - /> - + {store.ui.mediaQuery.isDesktop && ( +
{ + let pageNumber = page.current; + store.subcategory.pageSize = page.pageSize; + store.subcategory.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + )} + {store.ui.mediaQuery.isMobile && ( + { + store.subcategory.pageSize = page.pageSize; + store.subcategory.page = page.current; + modalLoader.setLoading(true); + await store.subcategory.getData(); + modalLoader.setLoading(false); + }, + pageSize: store.subcategory.pageSize, + total: store.subcategory.total_data, + current: store.subcategory.page, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.subcategory.data} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + +

+ Sub Category : {item.name}
+ Category : {item.categoryName} +
+

+

+
+ } + /> +
+

+ +

+
+ + + + ); + }} + /> + )} { name="code" label="Code" rules={[ - {required: true, message: "Please input code category!"}, + { required: true, message: "Please input code category!" }, ]} > - + )} - + {!idData && ( + )} {((initialData.id && !initialData.isChangePassword) || From 95abdb5c97cad12f396bf11f6cc31e946dfc8ba7 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Tue, 21 Dec 2021 15:38:36 +0700 Subject: [PATCH 120/324] feat: revert saldo columns in membership --- src/pages/Membership/Membership.js | 57 +++++++++++++++--------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 93d6d33..a972dbd 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,28 +1,8 @@ import React, {useContext, useEffect, useState} from "react"; -import { - Button, - Card, - Col, - Divider, - Input, - List, - message, - Modal, - Row, - Space, - Table, - Tag, - Form, - Select, -} from "antd"; +import {Button, Card, Col, Divider, Form, Input, List, message, Modal, Row, Select, Space, Table, Tag,} from "antd"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; -import { - ExclamationCircleOutlined, - FilterOutlined, - PlusSquareOutlined, - DownloadOutlined, -} from "@ant-design/icons"; +import {DownloadOutlined, ExclamationCircleOutlined, PlusSquareOutlined,} from "@ant-design/icons"; import {MembershipModal} from "./MembershipModal"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {LINKS} from "../../routes/app"; @@ -133,21 +113,40 @@ export const Membership = observer(() => { key: "role", }, { - title: "Saldo", + title: "Saldo di Supplier", dataIndex: ["coa", "amount"], key: ["coa", "amount"], + width: "20%", + render: (text) => ( + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text) + ) + }, + { + title: "Saldo di System", + dataIndex: ["coa_undistribute", "amount"], + key: ["coa_undistribute", "amount"], + width: "20%", + render: (text) => ( + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text) + ) }, { title: "Status", dataIndex: "isActive", key: "isActive", render: (text, record) => ( - - {record?.isActive === true ? " ACTIVE" : "INACTIVE"} - + + {record?.isActive === true ? " ACTIVE" : "INACTIVE"} + ), }, { From 70bb64803c30410958bde5982140b294a482ecea Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 21 Dec 2021 15:41:38 +0700 Subject: [PATCH 121/324] No resfresh pages --- src/component/Subcategory.js | 1 - src/pages/App/MenuList.js | 16 +++++++++------- src/pages/Membership/Membership.js | 1 - 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/component/Subcategory.js b/src/component/Subcategory.js index 332552d..22c072d 100644 --- a/src/component/Subcategory.js +++ b/src/component/Subcategory.js @@ -91,7 +91,6 @@ export const SubcategoryComponent = observer((props) => { modalLoader.setLoading(true); try { await store.subcategory.create(data); - await getData(); message.success("Success Add New Category"); } catch (e) { console.log(e, "apa errornya"); diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 56137bb..138e616 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -15,7 +15,7 @@ import { ShoppingCartOutlined, UserOutlined, AlipayOutlined, - PayCircleOutlined + PayCircleOutlined, } from "@ant-design/icons"; import { observer } from "mobx-react-lite"; import { useStore } from "../../utils/useStore"; @@ -133,12 +133,14 @@ export const MenuList = observer((props) => { Payback To - - - - Payback - - + {store.authentication.userData.role !== "Admin" && ( + + + + Payback + + + )} {store.authentication.userData.role !== "Admin" && ( diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 93d6d33..4d22c75 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -254,7 +254,6 @@ export const Membership = observer(() => { try { await store.membership.create(data); message.success("Success Add New Member"); - await getData(); } catch (e) { console.log(e, "apa errornya"); message.error("Failed Add Member"); From 056248a65194724cb0ee0085506679449780fb4c Mon Sep 17 00:00:00 2001 From: caturbgs Date: Tue, 21 Dec 2021 16:04:01 +0700 Subject: [PATCH 122/324] feat: handler modal payback after create and fix payback paging --- src/pages/Payback/Payback.js | 56 ++++++++++++++-------------- src/pages/Payback/PaybackFromUser.js | 28 +------------- src/pages/Payback/PaybackModal.js | 45 +++++++++++----------- src/store/payback.js | 6 +-- 4 files changed, 56 insertions(+), 79 deletions(-) diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index a87baff..729ccb7 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -158,21 +158,21 @@ export const Payback = observer(() => { columns={columns} dataSource={store.payback.data} bordered - pagination={{ - pageSize: store.payback.page, - total: store.payback.total_data, - current: store.payback.pageSize + 1, - showSizeChanger: true, - simple: false - }} - onChange={async (page) => { - let pageNumber = page.current; - store.payback.pageSize = page.pageSize; - store.payback.page = pageNumber - 1; - modalLoader.setLoading(true); - await store.payback.getData(); - modalLoader.setLoading(false); - }} + // pagination={{ + // pageSize: store.payback.page, + // total: store.payback.total_data, + // current: store.payback.pageSize + 1, + // showSizeChanger: true, + // simple: false + // }} + // onChange={async (page) => { + // let pageNumber = page.current; + // store.payback.pageSize = page.pageSize; + // store.payback.page = pageNumber - 1; + // modalLoader.setLoading(true); + // await store.payback.getData(); + // modalLoader.setLoading(false); + // }} /> )} @@ -180,19 +180,19 @@ export const Payback = observer(() => { { - store.payback.pageSize = page.pageSize; - store.payback.page = page.current; - modalLoader.setLoading(true); - await store.payback.getData(); - modalLoader.setLoading(false); - }, - pageSize: store.payback.pageSize, - total: store.payback.total_data, - current: store.payback.page, - style: {marginBottom: "1rem", marginRight: "1rem"}, - }} + // pagination={{ + // onChange: async (page) => { + // store.payback.pageSize = page.pageSize; + // store.payback.page = page.current; + // modalLoader.setLoading(true); + // await store.payback.getData(); + // modalLoader.setLoading(false); + // }, + // pageSize: store.payback.pageSize, + // total: store.payback.total_data, + // current: store.payback.page, + // style: {marginBottom: "1rem", marginRight: "1rem"}, + // }} dataSource={store.payback.data} style={{padding: 0}} renderItem={(item) => { diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js index cc258f2..e2a5e1a 100644 --- a/src/pages/Payback/PaybackFromUser.js +++ b/src/pages/Payback/PaybackFromUser.js @@ -12,7 +12,6 @@ const {Search} = Input; export const PaybackFromUser = observer(() => { const store = useStore(); - const [visibleModal, setVisibleModal] = useState(false); const [initialData, setInitialData] = useState({}); const modalLoader = useContext(ModalLoaderContext); @@ -71,23 +70,6 @@ export const PaybackFromUser = observer(() => { }, ]; - const onSubmit = async (data) => { - modalLoader.setLoading(true); - try { - // await store.membership.create(data); - // message.success("Success Add New Member"); - // await store.membership.getData(); - } catch (e) { - console.error(e, "apa errornya"); - message.error("Failed Add Member"); - } - modalLoader.setLoading(false); - setVisibleModal(false); - }; - - const handleAction = async (record, type) => { - }; - return (
@@ -113,7 +95,7 @@ export const PaybackFromUser = observer(() => {
); diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index 9079ad9..e792c3e 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -6,7 +6,7 @@ import {ModalLoaderContext} from "../../utils/modal"; import {http} from "../../utils/http"; import {appConfig} from "../../config/app"; -export const PaybackModal = ({visible, onCreate, onCancel, initialData}) => { +export const PaybackModal = ({initialData}) => { const [form] = Form.useForm(); const store = useStore(); const [image, setImage] = useState(""); @@ -58,40 +58,51 @@ export const PaybackModal = ({visible, onCreate, onCancel, initialData}) => { ); const handleSubmit = async (data) => { - console.log(data, "isi data2"); + modalLoader.setLoading(true); try { - modalLoader.setLoading(true); - await store.payback.create(data); - modalLoader.setLoading(false); + const request = { + ...data, + destination: store.authentication.profileData.superior?.id + } + await store.payback.create(request); message.success("Success Add Payback"); - await store.payback.getData(); } catch (e) { - modalLoader.setLoading(false); if (e.response?.body?.message) { message.error(e.response.body.message); return; } message.error(e.message); } + modalLoader.setLoading(false); form.resetFields(); + store.payback.visibleModalPayback = false; + setImage(""); + setFileList([]); + setPreviewImage(""); + setPreviewVisible(false); }; + const handleCancel = () => { + form.resetFields(); + store.payback.visibleModalPayback = false; + setImage(""); + setFileList([]); + setPreviewImage(""); + setPreviewVisible(false); + } + return ( { - form.resetFields(); - onCancel(); - }} + onCancel={handleCancel} onOk={() => { form .validateFields() .then((values) => { handleSubmit(values); - console.log(values); form.resetFields(); }) .catch((info) => { @@ -105,14 +116,6 @@ export const PaybackModal = ({visible, onCreate, onCancel, initialData}) => { name="form_in_modal" initialValues={initialData} > - - - Date: Tue, 21 Dec 2021 16:07:47 +0700 Subject: [PATCH 123/324] style: change color tab pane active --- src/index.css | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/index.css b/src/index.css index 8911c18..3c1a8ed 100644 --- a/src/index.css +++ b/src/index.css @@ -63,6 +63,11 @@ code { .ant-menu-submenu-arrow{ padding-right: 40px !important; } -.ant-breadcrumb{ +.ant-breadcrumb { margin-bottom: 10px !important; +} + +.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn { + color: #ed1f24 !important; + border-color: #ed1f24 !important; } \ No newline at end of file From 88260e97b2221c610f7dd324b0df5a13db4660c4 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Tue, 21 Dec 2021 16:16:27 +0700 Subject: [PATCH 124/324] fix: handler error buy producy --- src/pages/Transaction/Product.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 5e23868..ed47dd3 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -61,12 +61,16 @@ export const Product = observer(() => { modalLoader.setLoading(true); try { const response = await store.transaction.buyProduct({productCode: data}); - // if (response.status === 200) { - message.success("Success Buy Product"); - // } else { - //message.error("Failed Buy Product"); - //} + if (response.status === 200) { + message.success("Success Buy Product"); + } else { + message.error("Failed Buy Product", 3); + } } catch (e) { + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } console.log(e, "apa errornya"); message.error("Failed Buy Product"); } @@ -148,11 +152,11 @@ export const Product = observer(() => { )} {productData.length !== 0 && ( -
- - + + + )} ); From 90d862a47d5a42602af5ab0e71744e76afeb5150 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Tue, 21 Dec 2021 16:17:09 +0700 Subject: [PATCH 125/324] fix: handler error buy producy --- src/pages/Transaction/Product.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index ed47dd3..eadaa80 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -61,7 +61,7 @@ export const Product = observer(() => { modalLoader.setLoading(true); try { const response = await store.transaction.buyProduct({productCode: data}); - if (response.status === 200) { + if (response.status === 201) { message.success("Success Buy Product"); } else { message.error("Failed Buy Product", 3); From 69efeca588fde50abfe9549347053740f83046a8 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Tue, 21 Dec 2021 16:28:09 +0700 Subject: [PATCH 126/324] fix: product page --- src/pages/Transaction/Product.js | 82 +++++++++++----------------- src/pages/Transaction/Transaction.js | 12 ++-- 2 files changed, 37 insertions(+), 57 deletions(-) diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index eadaa80..1bc7a67 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -1,4 +1,4 @@ -import React, {useContext, useEffect, useState} from "react"; +import React, {useContext, useEffect} from "react"; import {useStore} from "../../utils/useStore"; import {Button, Card, Col, Input, message, Modal, Row, Select} from "antd"; import {observer} from "mobx-react-lite"; @@ -10,8 +10,6 @@ const {Option} = Select; export const Product = observer(() => { const store = useStore(); - - const [productData, setProductData] = useState([]); const modalLoader = useContext(ModalLoaderContext); useEffect(() => { @@ -36,20 +34,6 @@ export const Product = observer(() => { init(); }, []); - // data - useEffect(() => { - console.log("âš¡ transaction data store", store.transaction.data); - setProductData(store.transaction.data); - }, [store.transaction.data]); - - // Subcategory - useEffect(() => { - console.log( - "âš¡ transaction subcategory store", - store.transaction.dataSubCategories - ); - }, [store.transaction.dataSubCategories]); - const handleChangeSubcategory = async (item) => { store.transaction.filterSubCategory = item; modalLoader.setLoading(true); @@ -111,47 +95,47 @@ export const Product = observer(() => { - {productData.length != 0 && ( - - {productData.map((item, index) => ( - - { - Modal.confirm({ - title: `Are you sure buy ${item.name}?`, - icon: , - okText: "Confirm", - cancelText: "Cancel", - okType: "primary", - onOk() { - handleBuyProduct(item.code) - }, - onCancel() { - console.log("Cancel"); - }, - }); - }} - style={{cursor: "pointer"}} - > - {item.name} -
- + {store.transaction.data.length != 0 && ( + + {store.transaction.data.map((item, index) => ( +
+ { + Modal.confirm({ + title: `Are you sure buy ${item.name}?`, + icon: , + okText: "Confirm", + cancelText: "Cancel", + okType: "primary", + onOk() { + handleBuyProduct(item.code) + }, + onCancel() { + console.log("Cancel"); + }, + }); + }} + style={{cursor: "pointer"}} + > + {item.name} +
+ {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(item?.currentPrice?.mark_up_price)} -
- - ))} - + + + ))} + )} - {productData.length !== 0 && ( + {store.transaction.data.length !== 0 && ( + ), + }, ]; const deleteData = async (id) => { diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 0651668..6e2c27a 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -215,12 +215,14 @@ export const DesktopLayout = observer(() => { Payback To + {store.authentication.userData.role !== "Admin" && ( Payback + )} {store.authentication.userData.role !== "Admin" && ( diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js new file mode 100644 index 0000000..c1eac3e --- /dev/null +++ b/src/pages/Membership/DetailUser.js @@ -0,0 +1,148 @@ +import React, {useContext, useEffect} from "react"; +import {Button, Card, Col, Row, Table, Typography} from "antd"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {LINKS} from "../../routes/app"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {FilterOutlined} from "@ant-design/icons"; +import {format, parseISO} from "date-fns"; +import {ModalLoaderContext} from "../../utils/modal"; + +const {Title, Text} = Typography; + +export const DetailUser = observer(() => { + const store = useStore(); + const modalLoader = useContext(ModalLoaderContext); + + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.DETAILUSER, + name: Detail User, + }, + ]; + + useEffect(() => { + (async () => { + modalLoader.setLoading(true); + await Promise.allSettled([ + store.authentication.getProfile(), + store.transaction.getDataHistoryTransaction(), + ]); + modalLoader.setLoading(false); + })() + }, []); + + const columns = [ + { + title: 'Markup Price', + dataIndex: 'mark_up_price', + key: 'mark_up_price', + width: '20%', + }, + { + title: 'Name', + dataIndex: 'name', + key: 'name', + width: '50%', + }, + { + title: 'Transaction Date', + dataIndex: 'created_at', + key: 'created_at', + render: (text, record) => { + return ( + {format(parseISO(record.created_at), 'dd MMMM yyyy HH:mm')} + ) + }, + }, + ] + + const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? { + display: "flex", + justifyContent: "center" + } : {fontSize: "0.75rem"}; + const styleSaldoContent = store.ui.mediaQuery.isDesktop ? { + fontSize: '1.25rem', + display: "flex", + justifyContent: "center" + } : null; + + return ( +
+ + + Detail User + +
+ + + Name + + + {store.authentication.profileData?.userDetail?.name} + + + Role + + + {store.authentication.profileData?.userDetail?.phone_number} + + + Saldo Supplier + + + {store.authentication.profileData?.username} + + + Saldo System + + + {store.authentication.profileData.roles?.name} + + + Status + + + {store.authentication.profileData.superior?.username} + + + + \ + + + Saldo + + + {store.authentication.profileData?.wallet} + + + + + + +
+ History User Transaction + + +
+ + + +
+ +
+ ) +}); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index f241859..8a4cd62 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,16 +1,37 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, Divider, Form, Input, List, message, Modal, Row, Select, Space, Table, Tag,} from "antd"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {DownloadOutlined, ExclamationCircleOutlined, PlusSquareOutlined,} from "@ant-design/icons"; -import {MembershipModal} from "./MembershipModal"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {LINKS} from "../../routes/app"; -import {ModalLoaderContext} from "../../utils/modal"; +import React, { useContext, useEffect, useState } from "react"; +import { + Button, + Card, + Col, + Divider, + Form, + Input, + List, + message, + Modal, + Row, + Select, + Space, + Table, + Tag, +} from "antd"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { + DownloadOutlined, + ExclamationCircleOutlined, + PlusSquareOutlined, +} from "@ant-design/icons"; +import { MembershipModal } from "./MembershipModal"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { LINKS } from "../../routes/app"; +import { Link,useHistory } from "react-router-dom"; +import { ModalLoaderContext } from "../../utils/modal"; -const {Search} = Input; -const {Option} = Select; +const { Search } = Input; +const { Option } = Select; export const Membership = observer(() => { + const history = useHistory(); const [form] = Form.useForm(); const store = useStore(); const [visibleModal, setVisibleModal] = useState(false); @@ -117,36 +138,34 @@ export const Membership = observer(() => { dataIndex: ["coa", "amount"], key: ["coa", "amount"], width: "20%", - render: (text) => ( - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text) - ) + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { title: "Saldo di System", dataIndex: ["coa_undistribute", "amount"], key: ["coa_undistribute", "amount"], width: "20%", - render: (text) => ( - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text) - ) + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { title: "Status", dataIndex: "isActive", key: "isActive", render: (text, record) => ( - - {record?.isActive === true ? " ACTIVE" : "INACTIVE"} - + + {record?.isActive === true ? " ACTIVE" : "INACTIVE"} + ), }, { @@ -167,7 +186,7 @@ export const Membership = observer(() => { setIsVisibleTopUpModal(true); }} > - Top Up Saldo + Top Up Saldo - {/* */} + > + Detail + ), }, @@ -218,7 +238,7 @@ export const Membership = observer(() => { }, { route: "/app/membership", - name: Membership, + name: Membership, }, ]; @@ -264,42 +284,42 @@ export const Membership = observer(() => { } }; - const handleDelete = (record) => { - Modal.confirm({ - title: "Are you sure delete this record?", - icon: , - okText: "Yes", - okType: "primary", - cancelText: "Cancel", - async onOk() { - try { - //TODO: minta apinya ke ka ilham ya, jangan di uncomment kalo pake api reconcile, nanti beneran ke apus datanya - await store.membership.delete(record); - message.success("Success Delete Data"); - await getData(); - } catch (e) { - message.error("Failed Delete Data"); - } - }, - onCancel() { - console.log("Cancel"); - }, - }); + const handleDetail = (record) => { + // Modal.confirm({ + // title: "Are you sure delete this record?", + // icon: , + // okText: "Yes", + // okType: "primary", + // cancelText: "Cancel", + // async onOk() { + // try { + // //TODO: minta apinya ke ka ilham ya, jangan di uncomment kalo pake api reconcile, nanti beneran ke apus datanya + // await store.membership.delete(record); + // message.success("Success Delete Data"); + // await getData(); + // } catch (e) { + // message.error("Failed Delete Data"); + // } + // }, + // onCancel() { + // console.log("Cancel"); + // }, + // }); }; return (
- +
- +
{/* */} - + { setVisibleModal(true); }} > - New + New @@ -358,10 +378,10 @@ export const Membership = observer(() => { pageSize: store.membership.pageSize, total: store.membership.total_data, current: store.membership.page, - style: {marginBottom: "1rem", marginRight: "1rem"}, + style: { marginBottom: "1rem", marginRight: "1rem" }, }} dataSource={store.membership.data} - style={{padding: 0}} + style={{ padding: 0 }} renderItem={(item) => { return (
@@ -383,12 +403,12 @@ export const Membership = observer(() => { description={

- Username : {item.username}
+ Username : {item.username}

} /> -
+

{

- +
); }} @@ -433,7 +453,7 @@ export const Membership = observer(() => { + diff --git a/src/pages/Product/DetailProduct.js b/src/pages/Product/DetailProduct.js new file mode 100644 index 0000000..40640e4 --- /dev/null +++ b/src/pages/Product/DetailProduct.js @@ -0,0 +1,148 @@ +import React, {useContext, useEffect} from "react"; +import {Button, Card, Col, Row, Table, Typography} from "antd"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {LINKS} from "../../routes/app"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {FilterOutlined} from "@ant-design/icons"; +import {format, parseISO} from "date-fns"; +import {ModalLoaderContext} from "../../utils/modal"; + +const {Title, Text} = Typography; + +export const DetailProduct = observer(() => { + const store = useStore(); + const modalLoader = useContext(ModalLoaderContext); + + const routeData = [ + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.DETAILPRODUCT, + name: Detail Product, + }, + ]; + + useEffect(() => { + (async () => { + modalLoader.setLoading(true); + await Promise.allSettled([ + store.authentication.getProfile(), + store.transaction.getDataHistoryTransaction(), + ]); + modalLoader.setLoading(false); + })() + }, []); + + const columns = [ + { + title: 'Markup Price', + dataIndex: 'mark_up_price', + key: 'mark_up_price', + width: '20%', + }, + { + title: 'Name', + dataIndex: 'name', + key: 'name', + width: '50%', + }, + { + title: 'Transaction Date', + dataIndex: 'created_at', + key: 'created_at', + render: (text, record) => { + return ( + {format(parseISO(record.created_at), 'dd MMMM yyyy HH:mm')} + ) + }, + }, + ] + + const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? { + display: "flex", + justifyContent: "center" + } : {fontSize: "0.75rem"}; + const styleSaldoContent = store.ui.mediaQuery.isDesktop ? { + fontSize: '1.25rem', + display: "flex", + justifyContent: "center" + } : null; + + return ( +
+ + + Detail Product + +
+ + + Kode + + + {store.authentication.profileData?.userDetail?.name} + + + Produk + + + {store.authentication.profileData?.userDetail?.phone_number} + + + Harga Beli + + + {store.authentication.profileData?.username} + + + Harga Jual + + + {store.authentication.profileData.roles?.name} + + + Status + + + {store.authentication.profileData.superior?.username} + + + + + + + Saldo + + + {store.authentication.profileData?.wallet} + + + + + + +
+ History User Transaction + + +
+ + + +
+ +
+ ) +}); diff --git a/src/routes/app.js b/src/routes/app.js index 1667fd2..04bc5ab 100644 --- a/src/routes/app.js +++ b/src/routes/app.js @@ -2,7 +2,9 @@ import {Redirect, Route, Switch} from "react-router-dom"; import {Home} from "../pages/Home/Home"; import {About} from "../pages/About/About"; import {Membership} from "../pages/Membership/Membership"; +import {DetailUser} from "../pages/Membership/DetailUser"; import {Product} from "../pages/Product/Product"; +import {DetailProduct} from "../pages/Product/DetailProduct"; import {Transaction} from "../pages/Transaction/Transaction"; import {Profile} from "../pages/Profile/Profile"; import {Commission} from "../pages/Config/Commission"; @@ -27,7 +29,8 @@ export const LINKS = { PAYBACK: "/app/payback", PAYBACKFROMUSER: "/app/payback-from-user", SUBCATEGORY: "/app/subcategory", - + DETAILUSER: "/app/detail-user", + DETAILPRODUCT: "/app/detail-product", }; export const AppRoute = () => { @@ -35,6 +38,12 @@ export const AppRoute = () => { + + + + + + From 06c2ac159383e2c2215f65c704b2a16459e96281 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 21 Dec 2021 17:41:08 +0700 Subject: [PATCH 129/324] Detail Product --- src/pages/App/DesktopLayout.js | 2 ++ src/pages/App/MenuList.js | 14 ++++++++------ src/pages/Membership/Membership.js | 26 +++++++++++++++++++------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 6e2c27a..ffe6524 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -209,12 +209,14 @@ export const DesktopLayout = observer(() => { icon={} title="Payback" > + {store.authentication.userData.role !== "Retail" && ( Payback To + )} {store.authentication.userData.role !== "Admin" && ( diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 138e616..8f744c3 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -127,12 +127,14 @@ export const MenuList = observer((props) => { )} } title="Payback"> - - - - Payback To - - + {store.authentication.userData.role !== "Retail" && ( + + + + Payback To + + + )} {store.authentication.userData.role !== "Admin" && ( diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 8a4cd62..821332f 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -25,7 +25,7 @@ import { import { MembershipModal } from "./MembershipModal"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { LINKS } from "../../routes/app"; -import { Link,useHistory } from "react-router-dom"; +import { Link, useHistory } from "react-router-dom"; import { ModalLoaderContext } from "../../utils/modal"; const { Search } = Input; @@ -223,9 +223,9 @@ export const Membership = observer(() => { history.push(LINKS.DETAILUSER.replace(":id", record.id)); //console.log(record.id) }} - > - Detail - + > + Detail + ), }, @@ -399,11 +399,14 @@ export const Membership = observer(() => { >

- Username : {item.username}
+ Role : {item.roleName}
+ Saldo Supplier : {item.amount}{" "} +
+ Saldo System : {item.amount}

} @@ -415,7 +418,16 @@ export const Membership = observer(() => { margin: 0, }} > - {item.username} +

From fc6b61e21c6d2ffa774327dc667e6e0d26d34441 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 21 Dec 2021 17:46:44 +0700 Subject: [PATCH 130/324] Pages Detail Product --- src/pages/Membership/DetailUser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index c1eac3e..fe5bfdc 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -111,7 +111,7 @@ export const DetailUser = observer(() => { -
\ + Saldo From 9cefac57aeb6b590f07ecdace3e5eb033e3c21ad Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 21 Dec 2021 19:24:08 +0700 Subject: [PATCH 131/324] Refresh Page --- src/component/CategoryComponent.js | 2 +- src/component/CommissionComponent.js | 2 +- src/component/PartnerComponent.js | 2 +- src/component/ProductComponent.js | 2 +- src/component/Subcategory.js | 11 +++++++---- src/component/SupplierComponent.js | 2 +- src/pages/Membership/Membership.js | 2 +- src/pages/Payback/PaybackFromUser.js | 2 +- src/store/subcategory.js | 4 ++-- 9 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index 753342e..9005485 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -139,7 +139,7 @@ export const CategoryComponent = observer((props) => { store.category.pageSize = page.pageSize; store.category.page = pageNumber - 1; modalLoader.setLoading(true); - await store.category.getData(); + //await store.category.getData(); modalLoader.setLoading(false); }} /> diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js index ae730ca..0cf36e8 100644 --- a/src/component/CommissionComponent.js +++ b/src/component/CommissionComponent.js @@ -82,7 +82,7 @@ export const CommissionComponent = observer((props) => { store.commission.pageSize = page.pageSize; store.commission.page = pageNumber - 1; modalLoader.setLoading(true); - await store.commission.getData(); + //await store.commission.getData(); modalLoader.setLoading(false); }} /> diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 7a3afd0..5e49029 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -211,7 +211,7 @@ export const PartnerComponent = observer((props) => { store.partner.pageSize = page.pageSize; store.partner.page = pageNumber - 1; modalLoader.setLoading(true); - await store.partner.getData(); + //await store.partner.getData(); modalLoader.setLoading(false); }} /> diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index cff586e..53da930 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -250,7 +250,7 @@ export const ProductComponent = observer((props) => { store.product.pageSize = page.pageSize; store.product.page = pageNumber - 1; modalLoader.setLoading(true); - await store.product.getData(); + //await store.product.getData(); modalLoader.setLoading(false); }} /> diff --git a/src/component/Subcategory.js b/src/component/Subcategory.js index 22c072d..283aedc 100644 --- a/src/component/Subcategory.js +++ b/src/component/Subcategory.js @@ -1,4 +1,4 @@ -import React, { useContext, useState } from "react"; +import React, { useContext, useState,useEffect } from "react"; import { Button, Form, @@ -23,7 +23,10 @@ export const SubcategoryComponent = observer((props) => { const { Option } = Select; const [idData, setIdData] = useState(""); const modalLoader = useContext(ModalLoaderContext); - + useEffect(() => { + + getData() + }, []) const getData = async () => { await store.category.getData(); await store.subcategory.getData(); @@ -78,7 +81,7 @@ export const SubcategoryComponent = observer((props) => { modalLoader.setLoading(true); try { await store.subcategory.update(idData, data); - await getData(); + //await getData(); message.success("Success Update Data Category"); } catch (e) { message.error("Failed Update Data Category"); @@ -123,7 +126,7 @@ export const SubcategoryComponent = observer((props) => { store.subcategory.pageSize = page.pageSize; store.subcategory.page = pageNumber - 1; modalLoader.setLoading(true); - await getData(); + // await getData(); modalLoader.setLoading(false); }} /> diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index 29b1298..3bf915d 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -207,7 +207,7 @@ export const SupplierComponent = observer((props) => { store.supplier.pageSize = page.pageSize; store.supplier.page = pageNumber - 1; modalLoader.setLoading(true); - await store.supplier.getData(); + //await store.supplier.getData(); modalLoader.setLoading(false); }} /> diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 821332f..9126636 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -357,7 +357,7 @@ export const Membership = observer(() => { store.membership.pageSize = page.pageSize; store.membership.page = pageNumber - 1; modalLoader.setLoading(true); - await getData(); + //await getData(); modalLoader.setLoading(false); }} /> diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js index e2a5e1a..6db5368 100644 --- a/src/pages/Payback/PaybackFromUser.js +++ b/src/pages/Payback/PaybackFromUser.js @@ -122,7 +122,7 @@ export const PaybackFromUser = observer(() => { store.payback.pageSizePaybackUser = page.pageSize; store.payback.pageSizePaybackUser = pageNumber - 1; modalLoader.setLoading(true); - await store.payback.getDataUser(); + //await store.payback.getDataUser(); modalLoader.setLoading(false); }} /> diff --git a/src/store/subcategory.js b/src/store/subcategory.js index 0ffb7c0..e27fa3a 100644 --- a/src/store/subcategory.js +++ b/src/store/subcategory.js @@ -56,7 +56,7 @@ export class Subcategory { async create(data) { try { const response = await http.post('/product/sub-categories').send(data); - await this.getData(); + //await this.getData(); return response; } catch (e) { console.error(e); @@ -66,7 +66,7 @@ export class Subcategory { async update(id, data) { try { const response = await http.put(`/product/sub-categories/${id}`).send(data); - await this.getData(); + //await this.getData(); return response; } catch (e) { console.error(e); From a89566adc17bb651dfd3fa5aa3bd6fda5df25dca Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 11:01:48 +0700 Subject: [PATCH 132/324] fix: change category not default select sub categories --- src/pages/Transaction/Product.js | 13 +++++-------- src/pages/Transaction/Transaction.js | 3 ++- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 1bc7a67..b2c59b2 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -69,14 +69,11 @@ export const Product = observer(() => {
{ - let pageNumber = page.current; - store.supplier.pageSize = page.pageSize; - store.supplier.page = pageNumber - 1; - modalLoader.setLoading(true); - //await store.supplier.getData(); - modalLoader.setLoading(false); - }} - /> + {store.ui.mediaQuery.isDesktop && ( +
{ + let pageNumber = page.current; + store.supplier.pageSize = page.pageSize; + store.supplier.page = pageNumber - 1; + modalLoader.setLoading(true); + //await store.supplier.getData(); + modalLoader.setLoading(false); + }} + /> + )} + {store.ui.mediaQuery.isMobile && ( + { + store.supplier.pageSize = page.pageSize; + store.supplier.page = page.current; + modalLoader.setLoading(true); + await store.supplier.getData(); + modalLoader.setLoading(false); + }, + pageSize: store.supplier.pageSize, + total: store.supplier.total_data, + current: store.supplier.page, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.supplier.data} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + +

+ Name : {item.name}
+ Saldo Supplier : {item.coa.amount} +
+ + Saldo System : {item.coa_undistribute.amount} + +
+ + + + + {item?.status === true ? " ACTIVE" : "INACTIVE"} + +

+

+
+ } + /> + + + + ); + }} + /> + )} { - + {!idData && ( - + )} - + ); }); diff --git a/src/pages/Config/Supplier.js b/src/pages/Config/Supplier.js index 5c6d60a..fc088b5 100644 --- a/src/pages/Config/Supplier.js +++ b/src/pages/Config/Supplier.js @@ -75,7 +75,7 @@ export const Supplier = observer(() => { placeholder="input search text" style={{ width: store.ui.mediaQuery.isMobile ? 160 : 200, - marginRight: store.ui.mediaQuery.isMobile ? 0 : 10, + marginRight: store.ui.mediaQuery.isMobile ? 10 : 10, marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0, }} onSearch={(value) => console.log(value)} From 81fffe45286a53fa5e34e05581c43c05caca9953 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 11:09:21 +0700 Subject: [PATCH 134/324] fix: get data sub category on modal product --- src/component/ProductComponent.js | 43 ++++++++++--------------------- src/pages/Product/Product.js | 4 +-- 2 files changed, 16 insertions(+), 31 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 53da930..40a6a34 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -1,33 +1,18 @@ -import React, { useContext, useState } from "react"; -import { - Button, - Col, - Form, - Input, - message, - Modal, - Row, - Select, - Table, - Divider, - Tag, - Typography, - List, -} from "antd"; -import { observer } from "mobx-react-lite"; -import { ExclamationCircleOutlined } from "@ant-design/icons"; -import { useHistory } from "react-router-dom"; -import { capitalize } from "lodash"; -import { useStore } from "../utils/useStore"; -import { LINKS } from "../routes/app"; -import { ModalLoaderContext } from "../utils/modal"; +import React, {useContext, useState} from "react"; +import {Button, Col, Divider, Form, Input, List, message, Modal, Row, Select, Table, Tag, Typography,} from "antd"; +import {observer} from "mobx-react-lite"; +import {ExclamationCircleOutlined} from "@ant-design/icons"; +import {useHistory} from "react-router-dom"; +import {useStore} from "../utils/useStore"; +import {LINKS} from "../routes/app"; +import {ModalLoaderContext} from "../utils/modal"; -const { Title, Text } = Typography; +const {Title, Text} = Typography; export const ProductComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const { Option } = Select; + const {Option} = Select; const history = useHistory(); const [idData, setIdData] = useState(""); const [filterSupplier, setFilterSupplier] = useState(null); @@ -397,10 +382,10 @@ export const ProductComponent = observer((props) => { ]} > diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 95750f5..21539e1 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,5 +1,5 @@ import React, {useContext, useEffect} from "react"; -import {Button, Card, Col, Input, Row, Upload,message} from "antd"; +import {Button, Card, Col, Input, message, Row, Upload} from "antd"; import {FilterOutlined, PlusSquareOutlined, UploadOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {useStore} from "../../utils/useStore"; @@ -20,8 +20,8 @@ export const Product = observer(() => { modalLoader.setLoading(true); await Promise.allSettled([ store.supplier.getData(), - store.product.getDataCategories(), store.category.getData(), + store.category.getDataSubCategories(), ]); await store.product.getData(); modalLoader.setLoading(false); From 7cf403f19d82fd3adfdefcee181b1a7477efc1e5 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 14:43:04 +0700 Subject: [PATCH 135/324] feat: handler modal dynamic --- src/component/ProductComponent.js | 96 +++++++++++++++++-------------- src/pages/Product/Product.js | 2 +- src/store/product.js | 4 +- 3 files changed, 55 insertions(+), 47 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 40a6a34..0f12656 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -15,9 +15,8 @@ export const ProductComponent = observer((props) => { const {Option} = Select; const history = useHistory(); const [idData, setIdData] = useState(""); - const [filterSupplier, setFilterSupplier] = useState(null); - const [filterCategories, setFilterCategories] = useState(null); - const [filterSubCategories, setFilterSubCategories] = useState(null); + const [filterSupplier, setFilterSupplier] = useState([]); + const [filterSubCategories, setFilterSubCategories] = useState([]); const modalLoader = useContext(ModalLoaderContext); const handleEditButton = (data) => { @@ -163,17 +162,17 @@ export const ProductComponent = observer((props) => { const handleRemoveFilter = async () => { store.product.filterSupplier = null; store.product.filterSubCategory = null; - setFilterSupplier(null); - setFilterCategories(null); - setFilterSubCategories(null); + setFilterSupplier([]); + store.product.filterCategory = null; + setFilterSubCategories([]); await store.product.getData(); store.product.visibleModalFilterProduct = false; }; const handleCancelFilter = () => { - setFilterSupplier(null); - setFilterCategories(null); - setFilterSubCategories(null); + setFilterSupplier([]); + store.product.filterCategory = null; + setFilterSubCategories([]); store.product.visibleModalFilterProduct = false; }; @@ -186,14 +185,24 @@ export const ProductComponent = observer((props) => { store.product.visibleModalFilterProduct = false; }; + const handleFilterCategory = async (value) => { + if (value) { + store.product.filterCategory = value; + await store.product.getDataSubCategories(); + } else { + store.product.filterCategory = null; + await store.product.getDataSubCategories(); + } + }; + const footerLayoutFilter = [ , @@ -403,17 +412,18 @@ export const ProductComponent = observer((props) => { Filter Supplier @@ -422,19 +432,16 @@ export const ProductComponent = observer((props) => { Filter Categories @@ -443,17 +450,18 @@ export const ProductComponent = observer((props) => { Filter Sub-Categories diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 21539e1..95f4c34 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -21,7 +21,7 @@ export const Product = observer(() => { await Promise.allSettled([ store.supplier.getData(), store.category.getData(), - store.category.getDataSubCategories(), + store.product.getDataSubCategories(), ]); await store.product.getData(); modalLoader.setLoading(false); diff --git a/src/store/product.js b/src/store/product.js index e03b223..7c893de 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -21,7 +21,7 @@ export class Product { pageSizeSubCategories = 10 dataSubCategories = []; total_dataSubCategories = 0; - filterByCategory = null; + filterCategory = null; constructor(ctx) { this.ctx = ctx; @@ -44,7 +44,7 @@ export class Product { async getDataSubCategories() { try { - const response = await http.get(`/product/sub-categories?category=${this.filterByCategory}&page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); + const response = await http.get(`/product/sub-categories?category=${this.filterCategory}&page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); this.dataSubCategories = response.body.data.map((item, idx) => { item.key = idx; return item From 5039fa736a656da662732348f13a97d5702586a1 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 14:48:50 +0700 Subject: [PATCH 136/324] fix: column product --- src/component/ProductComponent.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 0f12656..96d0668 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -36,23 +36,23 @@ export const ProductComponent = observer((props) => { const columns = [ { title: "Kode", - dataIndex: "code", - key: "code", + dataIndex: "product_code", + key: "product_code", }, { title: "Produk", - dataIndex: ["name"], - key: "name", + dataIndex: "product_name", + key: "product_name", }, { title: "Harga Beli", - dataIndex: ["currentPrice", "price"], - key: ["currentPrice", "price"], + dataIndex: "current_price_price", + key: "current_price_price", }, { title: "Harga Jual", - dataIndex: ["currentPrice", "mark_up_price"], - key: ["currentPrice", "mark_up_price"], + dataIndex: "mark_up_price", + key: "mark_up_price", }, // { // title: "Gangguan", @@ -244,7 +244,7 @@ export const ProductComponent = observer((props) => { store.product.pageSize = page.pageSize; store.product.page = pageNumber - 1; modalLoader.setLoading(true); - //await store.product.getData(); + await store.product.getData(); modalLoader.setLoading(false); }} /> From 84ff8c12f8f6c5b90b575a7829f57061cbed3106 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 15:46:41 +0700 Subject: [PATCH 137/324] fix: roles api not fetch --- src/pages/Membership/Membership.js | 45 +++++++++--------------------- src/store/role.js | 4 +-- 2 files changed, 15 insertions(+), 34 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 9126636..88194bf 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,35 +1,16 @@ -import React, { useContext, useEffect, useState } from "react"; -import { - Button, - Card, - Col, - Divider, - Form, - Input, - List, - message, - Modal, - Row, - Select, - Space, - Table, - Tag, -} from "antd"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; -import { - DownloadOutlined, - ExclamationCircleOutlined, - PlusSquareOutlined, -} from "@ant-design/icons"; -import { MembershipModal } from "./MembershipModal"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { LINKS } from "../../routes/app"; -import { Link, useHistory } from "react-router-dom"; -import { ModalLoaderContext } from "../../utils/modal"; +import React, {useContext, useEffect, useState} from "react"; +import {Button, Card, Col, Divider, Form, Input, List, message, Modal, Row, Select, Space, Table, Tag,} from "antd"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {DownloadOutlined, PlusSquareOutlined,} from "@ant-design/icons"; +import {MembershipModal} from "./MembershipModal"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {LINKS} from "../../routes/app"; +import {useHistory} from "react-router-dom"; +import {ModalLoaderContext} from "../../utils/modal"; -const { Search } = Input; -const { Option } = Select; +const {Search} = Input; +const {Option} = Select; export const Membership = observer(() => { const history = useHistory(); const [form] = Form.useForm(); @@ -357,7 +338,7 @@ export const Membership = observer(() => { store.membership.pageSize = page.pageSize; store.membership.page = pageNumber - 1; modalLoader.setLoading(true); - //await getData(); + await getData(); modalLoader.setLoading(false); }} /> diff --git a/src/store/role.js b/src/store/role.js index f5607f0..da6f11e 100644 --- a/src/store/role.js +++ b/src/store/role.js @@ -2,8 +2,8 @@ import {makeAutoObservable} from "mobx"; import {http} from "../utils/http"; export class Role { - page = null; - pageSize = null; + page = 0; + pageSize = 10; data = []; total_data = 0; From 73d23b8958b48ae3460a71c7f207a4a8ea8087f6 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 16:06:18 +0700 Subject: [PATCH 138/324] fix: create payback fix image --- src/pages/Payback/PaybackModal.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index f5229ef..6420dae 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -12,7 +12,7 @@ export const PaybackModal = ({initialData}) => { const [image, setImage] = useState(""); const [fileList, setFileList] = useState([]); const [previewImage, setPreviewImage] = useState(""); - const [previewVisible, setPreviewVisible] = useState(false); + const [responseFilename, setResponseFilename] = useState(""); const [loading, setLoading] = useState(false); const modalLoader = useContext(ModalLoaderContext); @@ -34,6 +34,7 @@ export const PaybackModal = ({initialData}) => { const file = args.file; const res = await http.upload(file); setImage(`${appConfig.apiUrl}/config/image/${res.body.filename}`); + setResponseFilename(res.body.filename); setFileList([{ uid: '-1', name: 'image', @@ -62,7 +63,8 @@ export const PaybackModal = ({initialData}) => { try { const request = { ...data, - destination: store.authentication.profileData.superior?.id + destination: store.authentication.profileData.superior?.id, + image_prove: responseFilename } await store.payback.create(request); message.success("Success Add Payback"); @@ -75,20 +77,20 @@ export const PaybackModal = ({initialData}) => { } modalLoader.setLoading(false); form.resetFields(); - store.payback.visibleModalPayback = false; setImage(""); setFileList([]); setPreviewImage(""); - setPreviewVisible(false); + setResponseFilename(""); + store.payback.visibleModalPayback = false; }; const handleCancel = () => { form.resetFields(); - store.payback.visibleModalPayback = false; setImage(""); setFileList([]); setPreviewImage(""); - setPreviewVisible(false); + setResponseFilename(""); + store.payback.visibleModalPayback = false; } return ( @@ -126,7 +128,6 @@ export const PaybackModal = ({initialData}) => { fileList={fileList} onPreview={(file) => { setPreviewImage(file.url || file.filename); - setPreviewVisible(file.url || file.filename); }} showUploadList={true} onChange={handleChange} From 81d6407367edbcff811ebac40e33a63f46af3bb6 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 16:19:45 +0700 Subject: [PATCH 139/324] fix: dsplay image in payback --- src/pages/Payback/Payback.js | 12 ++++++------ src/pages/Payback/PaybackModal.js | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 729ccb7..521f9e0 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -6,6 +6,7 @@ import {CheckCircleOutlined, CloseOutlined, FilterOutlined,} from "@ant-design/i import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {LINKS} from "../../routes/app"; import {ModalLoaderContext} from "../../utils/modal"; +import {appConfig} from "../../config/app"; const {Search} = Input; @@ -39,12 +40,11 @@ export const Payback = observer(() => { dataIndex: "image_prove", key: "image_prove", render: (text, record) => ( - + ), }, { diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index 6420dae..144ee42 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -76,12 +76,12 @@ export const PaybackModal = ({initialData}) => { message.error(e.message); } modalLoader.setLoading(false); + store.payback.visibleModalPayback = false; form.resetFields(); setImage(""); setFileList([]); setPreviewImage(""); setResponseFilename(""); - store.payback.visibleModalPayback = false; }; const handleCancel = () => { From 9a596abeca83e1ed0ad93d0e3d7f4b04e9cc0b63 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Wed, 22 Dec 2021 16:45:20 +0700 Subject: [PATCH 140/324] Edit Menu Product --- src/component/CategoryComponent.js | 2 +- src/component/CommissionComponent.js | 2 +- src/component/PartnerComponent.js | 2 +- src/component/ProductComponent.js | 34 ++++++++++++++-------------- src/component/Subcategory.js | 2 +- src/component/SupplierComponent.js | 2 +- src/pages/Membership/Membership.js | 4 ++-- src/store/product.js | 1 + 8 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index 9005485..753342e 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -139,7 +139,7 @@ export const CategoryComponent = observer((props) => { store.category.pageSize = page.pageSize; store.category.page = pageNumber - 1; modalLoader.setLoading(true); - //await store.category.getData(); + await store.category.getData(); modalLoader.setLoading(false); }} /> diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js index 0cf36e8..ae730ca 100644 --- a/src/component/CommissionComponent.js +++ b/src/component/CommissionComponent.js @@ -82,7 +82,7 @@ export const CommissionComponent = observer((props) => { store.commission.pageSize = page.pageSize; store.commission.page = pageNumber - 1; modalLoader.setLoading(true); - //await store.commission.getData(); + await store.commission.getData(); modalLoader.setLoading(false); }} /> diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 5e49029..7a3afd0 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -211,7 +211,7 @@ export const PartnerComponent = observer((props) => { store.partner.pageSize = page.pageSize; store.partner.page = pageNumber - 1; modalLoader.setLoading(true); - //await store.partner.getData(); + await store.partner.getData(); modalLoader.setLoading(false); }} /> diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 40a6a34..31c5663 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -37,23 +37,23 @@ export const ProductComponent = observer((props) => { const columns = [ { title: "Kode", - dataIndex: "code", - key: "code", + dataIndex: "product_code", + key: "product_code", }, { title: "Produk", - dataIndex: ["name"], - key: "name", + dataIndex: ["product_name"], + key: "product_name", }, { title: "Harga Beli", - dataIndex: ["currentPrice", "price"], - key: ["currentPrice", "price"], + dataIndex: ["current_price_price"], + key: ["current_price_price"], }, { title: "Harga Jual", - dataIndex: ["currentPrice", "mark_up_price"], - key: ["currentPrice", "mark_up_price"], + dataIndex: ["mark_up_price"], + key: ["mark_up_price"], }, // { // title: "Gangguan", @@ -74,10 +74,10 @@ export const ProductComponent = observer((props) => { key: "tersedia", render: (text, record) => ( - {record?.status === "ACTIVE" ? " Tersedia" : "Tidak"} + {record?.product_status === "ACTIVE" ? " Tersedia" : "Tidak"} ), }, @@ -235,7 +235,7 @@ export const ProductComponent = observer((props) => { store.product.pageSize = page.pageSize; store.product.page = pageNumber - 1; modalLoader.setLoading(true); - //await store.product.getData(); + await store.product.getData(); modalLoader.setLoading(false); }} /> @@ -276,15 +276,15 @@ export const ProductComponent = observer((props) => { >

- Nama Produk : {item.name}
- Harga Beli : {item.currentPrice.price} + {item.product_name}
+ Harga Beli : {item.current_price_price}
- Harga Jual : {item.currentPrice.mark_up_price} + Harga Jual : {item.mark_up_price}

@@ -299,10 +299,10 @@ export const ProductComponent = observer((props) => { }} > - {item?.status === "ACTIVE" ? " Tersedia" : "Tidak"} + {item?.product_status === "ACTIVE" ? " Tersedia" : "Tidak"}

diff --git a/src/component/Subcategory.js b/src/component/Subcategory.js index 283aedc..f3f442b 100644 --- a/src/component/Subcategory.js +++ b/src/component/Subcategory.js @@ -126,7 +126,7 @@ export const SubcategoryComponent = observer((props) => { store.subcategory.pageSize = page.pageSize; store.subcategory.page = pageNumber - 1; modalLoader.setLoading(true); - // await getData(); + await getData(); modalLoader.setLoading(false); }} /> diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index dce358e..af6b6e4 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -219,7 +219,7 @@ export const SupplierComponent = observer((props) => { store.supplier.pageSize = page.pageSize; store.supplier.page = pageNumber - 1; modalLoader.setLoading(true); - //await store.supplier.getData(); + await store.supplier.getData(); modalLoader.setLoading(false); }} /> diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 9126636..83c9402 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -404,9 +404,9 @@ export const Membership = observer(() => {

Role : {item.roleName}
- Saldo Supplier : {item.amount}{" "} + Saldo Supplier : {item.coa.amount}{" "}
- Saldo System : {item.amount}
+ Saldo System : {item.coa.amount}

} diff --git a/src/store/product.js b/src/store/product.js index e03b223..e71957a 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -31,6 +31,7 @@ export class Product { async getData() { try { const response = await http.get(`/product/all?supplier=${this.filterSupplier}&sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); + //console.log(response) this.data = response.body.data.map((item, idx) => { item.key = idx; return item From 119fa6d0bd2b363892613b6b9794bc50bb85ddec Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 16:57:42 +0700 Subject: [PATCH 141/324] style: adjust number to currency format --- src/component/CommissionComponent.js | 6 ++--- src/component/ProductComponent.js | 10 +++++++ ...Subcategory.js => SubcategoryComponent.js} | 27 +++++-------------- src/pages/Payback/Payback.js | 11 +++++--- src/pages/Payback/PaybackFromUser.js | 5 ++++ src/pages/Product/Subcategory.js | 6 ++--- src/pages/Profile/Profile.js | 5 ++++ 7 files changed, 41 insertions(+), 29 deletions(-) rename src/component/{Subcategory.js => SubcategoryComponent.js} (94%) diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js index ae730ca..f6bbdfc 100644 --- a/src/component/CommissionComponent.js +++ b/src/component/CommissionComponent.js @@ -1,9 +1,8 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Button, Form, Input, message, Modal, Select, Space, Table,} from "antd"; +import React, {useContext, useState} from "react"; +import {Button, Form, Input, message, Modal, Space, Table,} from "antd"; import {observer} from "mobx-react-lite"; import {useHistory} from "react-router-dom"; import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; import {ModalLoaderContext} from "../utils/modal"; export const CommissionComponent = observer((props) => { @@ -32,6 +31,7 @@ export const CommissionComponent = observer((props) => { title: "Amount", dataIndex: "commission", key: "commission", + render: (text) => {text}%, }, { title: "Action", diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index c10741a..fcd3c2f 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -48,11 +48,21 @@ export const ProductComponent = observer((props) => { title: "Harga Beli", dataIndex: "current_price_price", key: "current_price_price", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { title: "Harga Jual", dataIndex: "mark_up_price", key: "mark_up_price", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, // { // title: "Gangguan", diff --git a/src/component/Subcategory.js b/src/component/SubcategoryComponent.js similarity index 94% rename from src/component/Subcategory.js rename to src/component/SubcategoryComponent.js index f3f442b..0b01a76 100644 --- a/src/component/Subcategory.js +++ b/src/component/SubcategoryComponent.js @@ -1,30 +1,17 @@ -import React, { useContext, useState,useEffect } from "react"; -import { - Button, - Form, - Input, - message, - Modal, - Select, - Space, - Table, - List, - Tag, - Divider, -} from "antd"; -import { observer } from "mobx-react-lite"; -import { useHistory } from "react-router-dom"; -import { useStore } from "../utils/useStore"; -import { ModalLoaderContext } from "../utils/modal"; +import React, {useContext, useEffect, useState} from "react"; +import {Button, Divider, Form, Input, List, message, Modal, Select, Space, Table,} from "antd"; +import {observer} from "mobx-react-lite"; +import {useStore} from "../utils/useStore"; +import {ModalLoaderContext} from "../utils/modal"; export const SubcategoryComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const { Option } = Select; + const {Option} = Select; const [idData, setIdData] = useState(""); const modalLoader = useContext(ModalLoaderContext); useEffect(() => { - + getData() }, []) const getData = async () => { diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 521f9e0..a4036b9 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -48,9 +48,14 @@ export const Payback = observer(() => { ), }, { - title: "Amount", - dataIndex: "amount", - key: "amount", + title: "Amount", + dataIndex: "amount", + key: "amount", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { title: "Action", diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js index 6db5368..680b064 100644 --- a/src/pages/Payback/PaybackFromUser.js +++ b/src/pages/Payback/PaybackFromUser.js @@ -56,6 +56,11 @@ export const PaybackFromUser = observer(() => { title: "Amount", dataIndex: "amount", key: "amount", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, ]; diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js index 402ab7f..0ffa767 100644 --- a/src/pages/Product/Subcategory.js +++ b/src/pages/Product/Subcategory.js @@ -1,11 +1,11 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, Input, Row,message} from "antd"; +import React, {useContext, useEffect} from "react"; +import {Button, Card, Col, Input, message, Row} from "antd"; import {PlusSquareOutlined} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; import {LINKS} from "../../routes/app"; -import {SubcategoryComponent} from "../../component/Subcategory"; +import {SubcategoryComponent} from "../../component/SubcategoryComponent"; import {ModalLoaderContext} from "../../utils/modal"; const {Search} = Input; diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 1096b36..f6ec408 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -42,6 +42,11 @@ export const Profile = observer(() => { dataIndex: 'mark_up_price', key: 'mark_up_price', width: '20%', + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { title: 'Name', From 9460935e0a56126deeb8a8613274064bd282f439 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 16:58:24 +0700 Subject: [PATCH 142/324] style: add margin into profile popover --- src/index.css | 7 +- src/pages/App/DesktopLayout.js | 173 +++++++++++++++++---------------- 2 files changed, 94 insertions(+), 86 deletions(-) diff --git a/src/index.css b/src/index.css index 3c1a8ed..18d9f14 100644 --- a/src/index.css +++ b/src/index.css @@ -61,8 +61,9 @@ code { background-color: #e3e8ee !important; } .ant-menu-submenu-arrow{ - padding-right: 40px !important; + padding-right: 40px !important; } + .ant-breadcrumb { margin-bottom: 10px !important; } @@ -70,4 +71,8 @@ code { .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn { color: #ed1f24 !important; border-color: #ed1f24 !important; +} + +.profile-container .ant-popover-inner-content { + padding: 0 !important; } \ No newline at end of file diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index ffe6524..047bd99 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -1,64 +1,64 @@ -import React, { useState } from "react"; -import { Button, Drawer, Layout, Menu, Popover, Typography } from "antd"; -import { MenuList } from "./MenuList"; -import { Link, useHistory } from "react-router-dom"; +import React, {useState} from "react"; +import {Button, Drawer, Layout, Menu, Popover, Typography} from "antd"; +import {MenuList} from "./MenuList"; +import {Link, useHistory} from "react-router-dom"; import { - HomeOutlined, - MenuOutlined, - UserOutlined, - ProfileOutlined, - DatabaseOutlined, - FileAddOutlined, - FileSyncOutlined, - FileProtectOutlined, - ShoppingCartOutlined, - AlipayOutlined, - PayCircleOutlined + AlipayOutlined, + DatabaseOutlined, + FileAddOutlined, + FileProtectOutlined, + FileSyncOutlined, + HomeOutlined, + MenuOutlined, + PayCircleOutlined, + ProfileOutlined, + ShoppingCartOutlined, + UserOutlined } from "@ant-design/icons"; -import { AppRoute, LINKS } from "../../routes/app"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; -import { useMediaQuery } from "react-responsive"; +import {AppRoute, LINKS} from "../../routes/app"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {useMediaQuery} from "react-responsive"; -const { Text, Paragraph } = Typography; -const { Header, Content, Sider } = Layout; -const { SubMenu } = Menu; +const {Text, Paragraph} = Typography; +const {Header, Content, Sider} = Layout; +const {SubMenu} = Menu; export const DesktopLayout = observer(() => { - let history = useHistory(); - const xl = useMediaQuery({ minWidth: 1024 }); - const store = useStore(); - const [clicked, setClicked] = useState(false); + let history = useHistory(); + const xl = useMediaQuery({minWidth: 1024}); + const store = useStore(); + const [clicked, setClicked] = useState(false); - return ( - - {store.ui.mediaQuery.isDesktop && ( - + {store.ui.mediaQuery.isDesktop && ( +
{ autoAdjustOverflow={true} placement="bottomRight" content={ - - - - Profile - - - { - store.authentication.logout(); - history.push("/login"); - }} + - Sign out - - + {store.authentication.userData.role !== "Admin" && ( + + + + Profile + + + )} + { + store.authentication.logout(); + history.push("/login"); + }} + > + Sign out + + } title={ - {store.user.data.email}{" "} - - {store.authentication.userData.username} - + + {store.authentication.userData.username} + } trigger="click" From 78626fd6e949e30fa329585debf80d26187791e2 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Wed, 22 Dec 2021 17:52:05 +0700 Subject: [PATCH 143/324] Role Access --- src/component/ProductComponent.js | 169 +++++++++++++++++------------ src/pages/Membership/DetailUser.js | 2 +- src/pages/Membership/Membership.js | 58 +++++++--- src/pages/Product/Product.js | 89 +++++++++------ 4 files changed, 199 insertions(+), 119 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index fcd3c2f..36f9042 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -1,18 +1,33 @@ -import React, {useContext, useState} from "react"; -import {Button, Col, Divider, Form, Input, List, message, Modal, Row, Select, Table, Tag, Typography,} from "antd"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined} from "@ant-design/icons"; -import {useHistory} from "react-router-dom"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; -import {ModalLoaderContext} from "../utils/modal"; +import React, { useContext, useState } from "react"; +import { + Button, + Col, + Divider, + Form, + Input, + InputNumber, + List, + message, + Modal, + Row, + Select, + Table, + Tag, + Typography, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { useHistory } from "react-router-dom"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; +import { ModalLoaderContext } from "../utils/modal"; -const {Title, Text} = Typography; +const { Title, Text } = Typography; export const ProductComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const {Option} = Select; + const { Option } = Select; const history = useHistory(); const [idData, setIdData] = useState(""); const [filterSupplier, setFilterSupplier] = useState([]); @@ -49,20 +64,20 @@ export const ProductComponent = observer((props) => { dataIndex: "current_price_price", key: "current_price_price", render: (text) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text), + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { title: "Harga Jual", dataIndex: "mark_up_price", key: "mark_up_price", render: (text) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text), + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, // { // title: "Gangguan", @@ -94,14 +109,14 @@ export const ProductComponent = observer((props) => { title: "Action", key: "action", render: (text, record) => ( - + ), }, ]; @@ -207,12 +222,12 @@ export const ProductComponent = observer((props) => { const footerLayoutFilter = [ , @@ -302,9 +317,7 @@ export const ProductComponent = observer((props) => { {item.product_name}
Harga Beli : {item.current_price_price}
- - Harga Jual : {item.mark_up_price} - + Harga Jual : {item.mark_up_price}

@@ -318,10 +331,14 @@ export const ProductComponent = observer((props) => { }} > - {item?.product_status === "ACTIVE" ? " Tersedia" : "Tidak"} + {item?.product_status === "ACTIVE" + ? " Tersedia" + : "Tidak"}

@@ -367,14 +384,26 @@ export const ProductComponent = observer((props) => { label="Price" rules={[{ required: true, message: "Please input price!" }]} > - + + `Rp. ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + } + parser={(value) => value.replace(/\Rp.\s?|(,*)/g, "")} + /> - + + `Rp. ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + } + parser={(value) => value.replace(/\Rp.\s?|(,*)/g, "")} + /> { > @@ -422,18 +451,18 @@ export const ProductComponent = observer((props) => { Filter Supplier @@ -442,16 +471,16 @@ export const ProductComponent = observer((props) => { Filter Categories @@ -460,18 +489,18 @@ export const ProductComponent = observer((props) => { Filter Sub-Categories diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index fe5bfdc..d2649d0 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -125,7 +125,7 @@ export const DetailUser = observer(() => {
- History User Transaction + History Top Up
- -
+
- - - - + }} + /> + {store.authentication.userData.role === "Admin" && ( +
+ + + + +
+ )}
- +
); From 7928df9fc657368dd6f9052c9df3f21ab8ed909f Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Wed, 22 Dec 2021 18:01:11 +0700 Subject: [PATCH 144/324] Role Access --- src/pages/Product/Product.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 6b58872..72a9940 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -74,7 +74,6 @@ export const Product = observer(() => { display: store.ui.mediaQuery.isMobile ? "" : "flex", justifyContent: "flex-end", textAlign: "right", - //width:store.authentication.userData.role === "Admin" ? 100 : '' }} > { }} /> {store.authentication.userData.role === "Admin" && ( -
+
- {store.authentication.profileData?.userDetail?.name} + {store.transaction.data.name}Role diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 887861b..811b9fc 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -14,7 +14,7 @@ import { Space, Table, Tag, - InputNumber + InputNumber, } from "antd"; import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; @@ -101,10 +101,16 @@ export const Membership = observer(() => { }; } + let response = null; + (await store.authentication.userData.role) === "Admin" - ? store.transaction.distributeAdmin(data) - : store.transaction.distribute(data); - message.success("Success Top Up"); + ? (response = await store.transaction.distributeAdmin(data)) + : (response = await store.transaction.distribute(data)); + + response?.body?.statusCode === 200 + ? message.success("Success Top Up") + : message.error("Failed Top Up"); + modalLoader.setLoading(false); //await store.supplier.getData() } catch (e) { @@ -217,8 +223,9 @@ export const Membership = observer(() => { - + diff --git a/src/routes/app.js b/src/routes/app.js index 04bc5ab..9f2d29c 100644 --- a/src/routes/app.js +++ b/src/routes/app.js @@ -4,7 +4,7 @@ import {About} from "../pages/About/About"; import {Membership} from "../pages/Membership/Membership"; import {DetailUser} from "../pages/Membership/DetailUser"; import {Product} from "../pages/Product/Product"; -import {DetailProduct} from "../pages/Product/DetailProduct"; +import {ProductDetail} from "../pages/Product/ProductDetail"; import {Transaction} from "../pages/Transaction/Transaction"; import {Profile} from "../pages/Profile/Profile"; import {Commission} from "../pages/Config/Commission"; @@ -27,10 +27,10 @@ export const LINKS = { SUPPLIER: "/app/supplier", CATEGORY: "/app/category", PAYBACK: "/app/payback", - PAYBACKFROMUSER: "/app/payback-from-user", + PAYBACK_FROM_USER: "/app/payback-from-user", SUBCATEGORY: "/app/subcategory", - DETAILUSER: "/app/detail-user", - DETAILPRODUCT: "/app/detail-product", + USER_DETAIL: "/app/user-detail", + PRODUCT_DETAIL: "/app/product-detail", }; export const AppRoute = () => { @@ -38,16 +38,16 @@ export const AppRoute = () => { - + - - + + - + From 6c5891d4079a7f707ec51f93217772290d921d71 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 21:07:30 +0700 Subject: [PATCH 150/324] fix: upload button still loading --- src/pages/Payback/PaybackModal.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index 144ee42..34683ec 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -37,18 +37,20 @@ export const PaybackModal = ({initialData}) => { setResponseFilename(res.body.filename); setFileList([{ uid: '-1', - name: 'image', + name: res.body.filename, status: 'done', url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, }]); + setLoading(false); }; const handleChange = (info) => { + console.log(info, "apa isi onchange") if (info.file.status === 'uploading') { setLoading(true); - return; + } else { + setLoading(false) } - setLoading(false) }; const uploadButton = ( From b1d35e2df66f689e0a8e02ab419a5f9be384e797 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 21:21:17 +0700 Subject: [PATCH 151/324] fix: amount in profile --- src/pages/Payback/PaybackModal.js | 1 - src/pages/Profile/Profile.js | 8 +++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index 34683ec..63bdc77 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -45,7 +45,6 @@ export const PaybackModal = ({initialData}) => { }; const handleChange = (info) => { - console.log(info, "apa isi onchange") if (info.file.status === 'uploading') { setLoading(true); } else { diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index f6ec408..1e40082 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -122,7 +122,13 @@ export const Profile = observer(() => { Saldo - {store.authentication.profileData?.wallet} + { + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR" + }) + .format(store.authentication.profileData?.wallet || 0)} + From 8f6620e7aa5d235d2e39f0a69976da48bbd05463 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 21:40:07 +0700 Subject: [PATCH 152/324] fix: change wording menu payback --- src/pages/App/DesktopLayout.js | 18 +++++++++--------- src/pages/App/MenuList.js | 8 ++++---- src/pages/Payback/Payback.js | 1 - .../{PaybackFromUser.js => PaybackCreated.js} | 5 ++--- src/pages/Payback/PaybackModal.js | 4 ++-- src/routes/app.js | 8 ++++---- 6 files changed, 21 insertions(+), 23 deletions(-) rename src/pages/Payback/{PaybackFromUser.js => PaybackCreated.js} (98%) diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 0769e58..8e1edd0 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -206,24 +206,24 @@ export const DesktopLayout = observer(() => { )} } - title="Payback" + key="payback-main" + icon={} + title="Created" > {store.authentication.userData.role !== "Retail" && ( - - Payback To + + Confirmation )} {store.authentication.userData.role !== "Admin" && ( - - - Payback - + + + Created + )} diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 5ece71d..6bd6c96 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -131,16 +131,16 @@ export const MenuList = observer((props) => { {store.authentication.userData.role !== "Retail" && ( - - Payback To + + Confirmation )} {store.authentication.userData.role !== "Admin" && ( - + - Payback + Created )} diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 3423829..c1ff5b4 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -33,7 +33,6 @@ export const Payback = observer(() => { init(); }, []); - const columns = [ { title: "Picture", diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackCreated.js similarity index 98% rename from src/pages/Payback/PaybackFromUser.js rename to src/pages/Payback/PaybackCreated.js index 3cca08e..d990149 100644 --- a/src/pages/Payback/PaybackFromUser.js +++ b/src/pages/Payback/PaybackCreated.js @@ -10,7 +10,7 @@ import {ModalLoaderContext} from "../../utils/modal"; const {Search} = Input; -export const PaybackFromUser = observer(() => { +export const PaybackCreated = observer(() => { const store = useStore(); const [initialData, setInitialData] = useState({}); const modalLoader = useContext(ModalLoaderContext); @@ -37,7 +37,6 @@ export const PaybackFromUser = observer(() => { init(); }, []); - const columns = [ { title: "Picture", @@ -70,7 +69,7 @@ export const PaybackFromUser = observer(() => { name: "Home", }, { - route: LINKS.PAYBACK_FROM_USER, + route: LINKS.PAYBACK_CREATED, name: Payback User, }, ]; diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index 63bdc77..39ae6b9 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -68,7 +68,7 @@ export const PaybackModal = ({initialData}) => { image_prove: responseFilename } await store.payback.create(request); - message.success("Success Add Payback"); + message.success("Success Add Created"); } catch (e) { if (e.response?.body?.message) { message.error(e.response.body.message); @@ -97,7 +97,7 @@ export const PaybackModal = ({initialData}) => { return ( { - - + + From 3bce86ea5fabe2c22a6428196da79a48ac9db900 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 22:06:37 +0700 Subject: [PATCH 153/324] fix: payback menu swap API --- src/pages/Payback/Payback.js | 104 ++++++++++++++-------------- src/pages/Payback/PaybackCreated.js | 44 ++++++------ src/store/payback.js | 38 +++++----- 3 files changed, 93 insertions(+), 93 deletions(-) diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index c1ff5b4..96768ba 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -17,9 +17,9 @@ export const Payback = observer(() => { useEffect(() => { const init = async () => { try { - modalLoader.setLoading(true); - await store.payback.getData(); - modalLoader.setLoading(false); + modalLoader.setLoading(true); + await store.payback.getDataConfirmation(); + modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); if (e.response?.body?.message) { @@ -82,17 +82,17 @@ export const Payback = observer(() => { await handleAction(record, "reject"); }} icon={} - style={{ - backgroundColor: "#ff1c1c", - color: "#fff", - borderColor: "#ff1c1c", - }} - > - Reject - - - ), - }, + style={{ + backgroundColor: "#ff1c1c", + color: "#fff", + borderColor: "#ff1c1c", + }} + > + Reject + + + ), + }, ]; if (store.authentication.userData.role === "Retail") columns.pop(); @@ -162,23 +162,23 @@ export const Payback = observer(() => { key="1" hasEmpty columns={columns} - dataSource={store.payback.data} + dataSource={store.payback.dataConfirmation} bordered - // pagination={{ - // pageSize: store.payback.page, - // total: store.payback.total_data, - // current: store.payback.pageSize + 1, - // showSizeChanger: true, - // simple: false - // }} - // onChange={async (page) => { - // let pageNumber = page.current; - // store.payback.pageSize = page.pageSize; - // store.payback.page = pageNumber - 1; - // modalLoader.setLoading(true); - // await store.payback.getData(); - // modalLoader.setLoading(false); - // }} + pagination={{ + pageSize: store.payback.pageSizeConfirmation, + total: store.payback.totalDataConfirmation, + current: store.payback.pageSizeConfirmation + 1, + showSizeChanger: true, + simple: false + }} + onChange={async (page) => { + let pageNumber = page.current; + store.payback.pageSizeConfirmation = page.pageSize; + store.payback.pageConfirmation = pageNumber - 1; + modalLoader.setLoading(true); + await store.payback.getDataConfirmation(); + modalLoader.setLoading(false); + }} /> )} @@ -186,30 +186,30 @@ export const Payback = observer(() => { { - // store.payback.pageSize = page.pageSize; - // store.payback.page = page.current; - // modalLoader.setLoading(true); - // await store.payback.getData(); - // modalLoader.setLoading(false); - // }, - // pageSize: store.payback.pageSize, - // total: store.payback.total_data, - // current: store.payback.page, - // style: {marginBottom: "1rem", marginRight: "1rem"}, - // }} - dataSource={store.payback.data} + pagination={{ + onChange: async (page) => { + store.payback.pageSizeConfirmation = page.pageSize; + store.payback.pageConfirmation = page.current - 1; + modalLoader.setLoading(true); + await store.payback.getDataConfirmation(); + modalLoader.setLoading(false); + }, + pageSize: store.payback.pageSizeConfirmation, + total: store.payback.totalDataConfirmation, + current: store.payback.pageConfirmation + 1, + style: {marginBottom: "1rem", marginRight: "1rem"}, + }} + dataSource={store.payback.dataConfirmation} style={{padding: 0}} renderItem={(item) => { - return ( -
- + { try { modalLoader.setLoading(true); await Promise.allSettled([ - store.payback.getDataUser(), - store.authentication.getProfile() + store.payback.getDataCreated(), + store.authentication.getProfile(), ]); modalLoader.setLoading(false); } catch (e) { @@ -43,12 +44,11 @@ export const PaybackCreated = observer(() => { dataIndex: "image_prove", key: "image_prove", render: (text, record) => ( - + ), }, { @@ -112,21 +112,21 @@ export const PaybackCreated = observer(() => { key="1" hasEmpty columns={columns} - dataSource={store.payback.dataPaybackUser} + dataSource={store.payback.dataCreated} bordered pagination={{ - pageSize: store.payback.pageSizePaybackUser, - total: store.payback.total_dataPaybackUser, - current: store.payback.pageSizePaybackUser + 1, + pageSize: store.payback.pageSizeCreated, + total: store.payback.totalDataCreated, + current: store.payback.pageCreated + 1, showSizeChanger: true, simple: false }} onChange={async (page) => { let pageNumber = page.current; - store.payback.pageSizePaybackUser = page.pageSize; - store.payback.pageSizePaybackUser = pageNumber - 1; + store.payback.pageSizeCreated = page.pageSize; + store.payback.pageCreated = pageNumber - 1; modalLoader.setLoading(true); - //await store.payback.getDataUser(); + await store.payback.getDataCreated(); modalLoader.setLoading(false); }} /> @@ -138,18 +138,18 @@ export const PaybackCreated = observer(() => { position={"top"} pagination={{ onChange: async (page) => { - store.payback.pageSizePaybackUser = page.pageSize; - store.payback.pageSizePaybackUser = page.current; + store.payback.pageSizeCreated = page.pageSize; + store.payback.pageCreated = page.current - 1; modalLoader.setLoading(true); - await store.payback.getDataUser(); + await store.payback.getDataCreated(); modalLoader.setLoading(false); }, - pageSize: store.payback.pageSizePaybackUser, - total: store.payback.total_dataPaybackUser, - current: store.payback.pageSizePaybackUser, + pageSize: store.payback.pageSizeCreated, + total: store.payback.totalDataCreated, + current: store.payback.pageCreated + 1, style: {marginBottom: "1rem", marginRight: "1rem"}, }} - dataSource={store.payback.dataPaybackUser} + dataSource={store.payback.dataCreated} style={{padding: 0}} renderItem={(item) => { return ( diff --git a/src/store/payback.js b/src/store/payback.js index 366f530..104c406 100644 --- a/src/store/payback.js +++ b/src/store/payback.js @@ -2,50 +2,50 @@ import {makeAutoObservable} from "mobx"; import {http} from "../utils/http"; export class Payback { - page = 0; - pageSize = 10; - data = []; - total_data = 0; + pageCreated = 0; + pageSizeCreated = 10; + dataCreated = []; + totalDataCreated = 0; filterCategory = null; visibleModalPayback = false; - pagePaybackUser = 0; - pageSizePaybackUser = 10; - dataPaybackUser = []; - total_dataPaybackUser = 0; + pageConfirmation = 0; + pageSizeConfirmation = 10; + dataConfirmation = []; + totalDataConfirmation = 0; constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); } - async getData() { + async getDataCreated() { try { const response = await http.get( - `/transaction/deposit-return?page=${this.page}&pageSize=${this.pageSize}` + `/transaction/deposit-return?page=${this.pageCreated}&pageSize=${this.pageSizeCreated}` ); - this.data = response.body.data.map((item, idx) => { + this.dataCreated = response.body.data.map((item, idx) => { item.key = idx; return item; }) ?? []; - this.total_data = response.body.count ?? 0; + this.totalDataCreated = response.body.count ?? 0; } catch (e) { console.error(e); } } - async getDataUser() { + async getDataConfirmation() { try { const response = await http.get( - `/transaction/deposit-return/confirmation?page=${this.pagePaybackUser}&pageSize=${this.pageSizePaybackUser}` + `/transaction/deposit-return/confirmation?page=${this.pageConfirmation}&pageSize=${this.pageSizeConfirmation}` ); - this.dataPaybackUser = response.body.data.map((item, idx) => { + this.dataConfirmation = response.body.data.map((item, idx) => { item.key = idx; return item; }) ?? []; - this.total_dataPaybackUser = response.body.count ?? 0; + this.totalDataConfirmation = response.body.count ?? 0; } catch (e) { console.error(e); } @@ -54,7 +54,7 @@ export class Payback { async update(id, data) { try { const response = await http.put(`/config/commission/${id}`).send(data); - await this.getData(); + await this.getDataCreated(); return response; } catch (e) { console.error(e); @@ -64,7 +64,7 @@ export class Payback { async delete(id) { try { const response = await http.del(`/product/${id}`); - await this.getData(); + await this.getDataCreated(); return response; } catch (e) { console.error(e); @@ -74,7 +74,7 @@ export class Payback { async create(data) { try { const response = await http.post("/transaction/deposit-return").send(data); - await this.getData(); + await this.getDataCreated(); return response; } catch (e) { console.error(e); From 1e92eee5b5679ba0bfb37fe2097dbfb593f9d77b Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 22:15:04 +0700 Subject: [PATCH 154/324] fix: pagination on all page --- src/component/PartnerComponent.js | 34 +++++++++----------------- src/component/ProductComponent.js | 6 ++--- src/component/SubcategoryComponent.js | 6 ++--- src/component/SupplierComponent.js | 35 +++++++++------------------ src/pages/Membership/Membership.js | 22 ++++++++--------- src/pages/Profile/Profile.js | 21 +++++++++++++--- src/store/transaction.js | 4 +-- 7 files changed, 60 insertions(+), 68 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 7a3afd0..cc2e6b6 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -1,23 +1,11 @@ -import React, { useContext, useEffect, useState } from "react"; -import { - Button, - Form, - Input, - message, - Modal, - Select, - Space, - Table, - Tag, - List, - Divider, -} from "antd"; -import { observer } from "mobx-react-lite"; -import { ExclamationCircleOutlined } from "@ant-design/icons"; -import { useHistory } from "react-router-dom"; -import { useStore } from "../utils/useStore"; -import { LINKS } from "../routes/app"; -import { ModalLoaderContext } from "../utils/modal"; +import React, {useContext, useState} from "react"; +import {Button, Divider, Form, Input, List, message, Modal, Space, Table, Tag,} from "antd"; +import {observer} from "mobx-react-lite"; +import {ExclamationCircleOutlined} from "@ant-design/icons"; +import {useHistory} from "react-router-dom"; +import {useStore} from "../utils/useStore"; +import {LINKS} from "../routes/app"; +import {ModalLoaderContext} from "../utils/modal"; export const PartnerComponent = observer((props) => { const store = useStore(); @@ -223,15 +211,15 @@ export const PartnerComponent = observer((props) => { pagination={{ onChange: async (page) => { store.partner.pageSize = page.pageSize; - store.partner.page = page.current; + store.partner.page = page.current - 1; modalLoader.setLoading(true); await store.partner.getData(); modalLoader.setLoading(false); }, pageSize: store.partner.pageSize, total: store.partner.total_data, - current: store.partner.page, - style: { marginBottom: "1rem", marginRight: "1rem" }, + current: store.partner.page + 1, + style: {marginBottom: "1rem", marginRight: "1rem"}, }} dataSource={store.partner.data} style={{ padding: 0 }} diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 47aadb3..990b7d8 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -281,15 +281,15 @@ export const ProductComponent = observer((props) => { pagination={{ onChange: async (page) => { store.product.pageSize = page.pageSize; - store.product.page = page.current; + store.product.page = page.current - 1; modalLoader.setLoading(true); await store.product.getData(); modalLoader.setLoading(false); }, pageSize: store.product.pageSize, total: store.product.total_data, - current: store.product.page, - style: { marginBottom: "1rem", marginRight: "1rem" }, + current: store.product.page + 1, + style: {marginBottom: "1rem", marginRight: "1rem"}, }} dataSource={store.product.data} style={{ padding: 0 }} diff --git a/src/component/SubcategoryComponent.js b/src/component/SubcategoryComponent.js index 0b01a76..db1a7e5 100644 --- a/src/component/SubcategoryComponent.js +++ b/src/component/SubcategoryComponent.js @@ -125,15 +125,15 @@ export const SubcategoryComponent = observer((props) => { pagination={{ onChange: async (page) => { store.subcategory.pageSize = page.pageSize; - store.subcategory.page = page.current; + store.subcategory.page = page.current - 1; modalLoader.setLoading(true); await store.subcategory.getData(); modalLoader.setLoading(false); }, pageSize: store.subcategory.pageSize, total: store.subcategory.total_data, - current: store.subcategory.page, - style: { marginBottom: "1rem", marginRight: "1rem" }, + current: store.subcategory.page + 1, + style: {marginBottom: "1rem", marginRight: "1rem"}, }} dataSource={store.subcategory.data} style={{ padding: 0 }} diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index af6b6e4..7efd50e 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -1,23 +1,12 @@ -import React, { useContext, useState } from "react"; -import { - Button, - Form, - Input, - message, - Modal, - Space, - Table, - Tag, - List, - Divider, -} from "antd"; -import { observer } from "mobx-react-lite"; -import { ExclamationCircleOutlined } from "@ant-design/icons"; -import { useHistory } from "react-router-dom"; -import { useStore } from "../utils/useStore"; -import { LINKS } from "../routes/app"; -import { TopupsaldoModal } from "./TopupsaldoModal"; -import { ModalLoaderContext } from "../utils/modal"; +import React, {useContext, useState} from "react"; +import {Button, Divider, Form, Input, List, message, Modal, Space, Table, Tag,} from "antd"; +import {observer} from "mobx-react-lite"; +import {ExclamationCircleOutlined} from "@ant-design/icons"; +import {useHistory} from "react-router-dom"; +import {useStore} from "../utils/useStore"; +import {LINKS} from "../routes/app"; +import {TopupsaldoModal} from "./TopupsaldoModal"; +import {ModalLoaderContext} from "../utils/modal"; export const SupplierComponent = observer((props) => { const store = useStore(); @@ -231,15 +220,15 @@ export const SupplierComponent = observer((props) => { pagination={{ onChange: async (page) => { store.supplier.pageSize = page.pageSize; - store.supplier.page = page.current; + store.supplier.page = page.current - 1; modalLoader.setLoading(true); await store.supplier.getData(); modalLoader.setLoading(false); }, pageSize: store.supplier.pageSize, total: store.supplier.total_data, - current: store.supplier.page, - style: { marginBottom: "1rem", marginRight: "1rem" }, + current: store.supplier.page + 1, + style: {marginBottom: "1rem", marginRight: "1rem"}, }} dataSource={store.supplier.data} style={{ padding: 0 }} diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index b7fd1e5..28a278b 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -338,17 +338,17 @@ export const Membership = observer(() => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page) => { - store.membership.pageSize = page.pageSize; - store.membership.page = page.current; - modalLoader.setLoading(true); - await getData(); - modalLoader.setLoading(false); - }, - pageSize: store.membership.pageSize, - total: store.membership.total_data, - current: store.membership.page, - style: { marginBottom: "1rem", marginRight: "1rem" }, + onChange: async (page) => { + store.membership.pageSize = page.pageSize; + store.membership.page = page.current - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }, + pageSize: store.membership.pageSize, + total: store.membership.total_data, + current: store.membership.page + 1, + style: {marginBottom: "1rem", marginRight: "1rem"}, }} dataSource={store.membership.data} style={{ padding: 0 }} diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 1e40082..450afb1 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -145,9 +145,24 @@ export const Profile = observer(() => { Filter
{ + let pageNumber = page.current; + store.transaction.pageSizeHistoryTransaction = page.pageSize; + store.transaction.pageHistoryTransaction = pageNumber - 1; + modalLoader.setLoading(true); + await store.transaction.getDataHistoryTransaction(); + modalLoader.setLoading(false); + }} /> diff --git a/src/store/transaction.js b/src/store/transaction.js index cad1219..307f4bd 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -23,7 +23,7 @@ export class Transaction { pageHistoryTransaction = 0; pageHistoryTopUp = 0; - // pageSizeHistoryTransaction = 10 + pageSizeHistoryTransaction = 10 dataHistoryTransaction = []; total_dataHistoryTransaction = 0; @@ -71,7 +71,7 @@ export class Transaction { async getDataHistoryTransaction() { try { - const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}`); + const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}&pageSize=${this.pageSizeHistoryTransaction}`); this.dataHistoryTransaction = response.body.data ?? [] this.total_dataHistoryTransaction = response?.body?.count ?? 0 From 7b07d1a1d87c16e72e3bb64d5646a1bfc97e355a Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 22:48:34 +0700 Subject: [PATCH 155/324] fix: add API payback confirmation --- src/pages/Payback/Payback.js | 175 +++++++++++++++------------- src/pages/Payback/PaybackCreated.js | 2 +- src/store/payback.js | 13 +++ 3 files changed, 109 insertions(+), 81 deletions(-) diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 96768ba..2b77216 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -1,44 +1,45 @@ import React, {useContext, useEffect} from "react"; -import {Button, Card, Col, Divider, Image, Input, List, message, Row, Space, Table,} from "antd"; +import {Button, Card, Col, Divider, Image, Input, List, message, Modal, Row, Space, Table,} from "antd"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; -import {CheckCircleOutlined, CloseOutlined, FilterOutlined,} from "@ant-design/icons"; +import {CheckCircleOutlined, CheckOutlined, CloseOutlined, FilterOutlined, StopOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {LINKS} from "../../routes/app"; import {ModalLoaderContext} from "../../utils/modal"; import {appConfig} from "../../config/app"; +import {capitalize} from "lodash"; const {Search} = Input; export const Payback = observer(() => { - const store = useStore(); - const modalLoader = useContext(ModalLoaderContext); + const store = useStore(); + const modalLoader = useContext(ModalLoaderContext); - useEffect(() => { - const init = async () => { - try { - modalLoader.setLoading(true); - await store.payback.getDataConfirmation(); - modalLoader.setLoading(false); - } catch (e) { - modalLoader.setLoading(false); - if (e.response?.body?.message) { - message.error(e.response.body.message); - return; - } - message.error(e.message); - } - }; + useEffect(() => { + const init = async () => { + try { + modalLoader.setLoading(true); + await store.payback.getDataConfirmation(); + modalLoader.setLoading(false); + } catch (e) { + modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); + } + }; - init(); - }, []); + init(); + }, []); - const columns = [ - { - title: "Picture", - dataIndex: "image_prove", - key: "image_prove", - render: (text, record) => ( + const columns = [ + { + title: "Picture", + dataIndex: "image_prove", + key: "image_prove", + render: (text, record) => ( { - - - - + + +
+ +
+ + + + - {/* {store.authentication.userData.role !== "Admin" && ( - - )} */} {store.ui.mediaQuery.isDesktop && ( diff --git a/src/pages/Payback/PaybackCreated.js b/src/pages/Payback/PaybackCreated.js index 7a0984e..70dd3e6 100644 --- a/src/pages/Payback/PaybackCreated.js +++ b/src/pages/Payback/PaybackCreated.js @@ -70,7 +70,7 @@ export const PaybackCreated = observer(() => { }, { route: LINKS.PAYBACK_CREATED, - name: Payback User, + name: Payback Created, }, ]; diff --git a/src/store/payback.js b/src/store/payback.js index 104c406..592c673 100644 --- a/src/store/payback.js +++ b/src/store/payback.js @@ -80,4 +80,17 @@ export class Payback { console.error(e); } } + + async confirmPayback(id, data) { + try { + const response = await http.put(`/transaction/deposit-return/confirmation/${id}`).send(data); + await Promise.all([ + this.getDataConfirmation(), + this.getDataCreated() + ]) + return response; + } catch (e) { + console.error(e); + } + } } From 9be9287fb247bc60adc2d7d465f459b448a33ae1 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 23:20:54 +0700 Subject: [PATCH 156/324] fix: change handler topup membership --- src/pages/Membership/Membership.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 28a278b..541fb69 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -106,7 +106,7 @@ export const Membership = observer(() => { ? (response = await store.transaction.distributeAdmin(data)) : (response = await store.transaction.distribute(data)); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 ? message.success("Success Top Up") : message.error("Failed Top Up"); From 38c4aca9be6a9d165051d7c48dcf79898fd46348 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 23:37:06 +0700 Subject: [PATCH 157/324] fix: add refresh after crd operation in membership --- src/store/membership.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/store/membership.js b/src/store/membership.js index 0afded7..af33099 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -48,7 +48,11 @@ export class Membership { async create(data) { try { - return await http.post('/users').send(data) + const response = await http.post('/users').send(data); + this.ctx.authentication.userData.role === "Admin" + ? await this.ctx.membership.getData() + : await this.ctx.membership.getDataBySuperior(); + return response; } catch (e) { console.error(e); } @@ -57,8 +61,10 @@ export class Membership { async update(id, data) { try { const response = await http.put('/users/' + id).send(data); - console.log(response, 'Data user') - console.log(JSON.stringify(response.body.data), 'Data') + this.ctx.authentication.userData.role === "Admin" + ? await this.ctx.membership.getData() + : await this.ctx.membership.getDataBySuperior(); + return response; } catch (e) { console.error(e); } @@ -66,11 +72,14 @@ export class Membership { async delete(id) { try { - return await http.del('/users/' + id); + const response = await http.del('/users/' + id); + this.ctx.authentication.userData.role === "Admin" + ? await this.ctx.membership.getData() + : await this.ctx.membership.getDataBySuperior(); + return response; } catch (e) { console.error(e); } - } async changeStatus(id, status) { From 7e356d01781f18176901d46cad314b5fee78ba83 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 23:43:45 +0700 Subject: [PATCH 158/324] fix: add refresh after crd operation in membership contd --- src/pages/Membership/Membership.js | 50 ++++++++++++++++-------------- src/store/membership.js | 9 ------ 2 files changed, 26 insertions(+), 33 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 541fb69..2628ec4 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -71,13 +71,14 @@ export const Membership = observer(() => { const status = isActive ? "inactive" : "active"; const status2 = isActive ? "Inactivating" : "Activating"; try { - modalLoader.setLoading(true); - const response = await store.membership.changeStatus(id, status); - modalLoader.setLoading(false); + modalLoader.setLoading(true); + const response = await store.membership.changeStatus(id, status); + modalLoader.setLoading(false); - response?.body?.statusCode === 201 - ? message.success(`Success ${status2} Membership`) - : message.error(`Failed ${status2} Membership`); + response?.body?.statusCode === 201 + ? message.success(`Success ${status2} Membership`) + : message.error(`Failed ${status2} Membership`); + await getData(); } catch (err) { modalLoader.setLoading(false); message.error(`Failed ${status2} Membership`); @@ -92,26 +93,26 @@ export const Membership = observer(() => { const handleSubmitTransaction = async (data) => { modalLoader.setLoading(true); try { - data.destination = destination; - if (data.amount) { - data = { - ...data, - amount: Number(data.amount), - }; - } + data.destination = destination; + if (data.amount) { + data = { + ...data, + amount: Number(data.amount), + }; + } - let response = null; + let response = null; - (await store.authentication.userData.role) === "Admin" - ? (response = await store.transaction.distributeAdmin(data)) - : (response = await store.transaction.distribute(data)); + (await store.authentication.userData.role) === "Admin" + ? (response = await store.transaction.distributeAdmin(data)) + : (response = await store.transaction.distribute(data)); - response?.body?.statusCode === 201 - ? message.success("Success Top Up") - : message.error("Failed Top Up"); + response?.body?.statusCode === 201 + ? message.success("Success Top Up") + : message.error("Failed Top Up"); - modalLoader.setLoading(false); - //await store.supplier.getData() + modalLoader.setLoading(false); + await getData(); } catch (e) { console.log(e, "apa errornya"); modalLoader.setLoading(false); @@ -264,8 +265,9 @@ export const Membership = observer(() => { setConfirmLoading(true); modalLoader.setLoading(true); try { - await store.membership.create(data); - message.success("Success Add New Member"); + await store.membership.create(data); + message.success("Success Add New Member"); + await getData(); } catch (e) { console.log(e, "apa errornya"); message.error("Failed Add Member"); diff --git a/src/store/membership.js b/src/store/membership.js index af33099..7b2d44b 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -49,9 +49,6 @@ export class Membership { async create(data) { try { const response = await http.post('/users').send(data); - this.ctx.authentication.userData.role === "Admin" - ? await this.ctx.membership.getData() - : await this.ctx.membership.getDataBySuperior(); return response; } catch (e) { console.error(e); @@ -61,9 +58,6 @@ export class Membership { async update(id, data) { try { const response = await http.put('/users/' + id).send(data); - this.ctx.authentication.userData.role === "Admin" - ? await this.ctx.membership.getData() - : await this.ctx.membership.getDataBySuperior(); return response; } catch (e) { console.error(e); @@ -73,9 +67,6 @@ export class Membership { async delete(id) { try { const response = await http.del('/users/' + id); - this.ctx.authentication.userData.role === "Admin" - ? await this.ctx.membership.getData() - : await this.ctx.membership.getDataBySuperior(); return response; } catch (e) { console.error(e); From 28e959c26d84e373ec86aca987039ae817391dbf Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 23:54:43 +0700 Subject: [PATCH 159/324] fix: change hide action column on admin and supervisor --- src/pages/Membership/Membership.js | 51 +++++++++++++++--------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 2628ec4..de76c4a 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -164,32 +164,32 @@ export const Membership = observer(() => { title: "Action", key: "action", render: (text, record) => ( - - - - + {store.authentication.userData.role === ('Admin' && 'Supervisor') && } + - {store.authentication.userData.role === ('Admin' && 'Supervisor') && } - - } + {store.authentication.userData.role === "Admin" && + setInitialData({ + ...record2, + // roleId: record.roles.id, + }); + setVisibleModal(true); + }} + > + Ganti Password + } - + - + }} + icon={} + style={{ + backgroundColor: "#ff1c1c", + color: "#fff", + borderColor: "#ff1c1c", + }} + > + Reject + + : + + {PAYBACK_STATUS[record.status]} + ), }, ]; diff --git a/src/pages/Payback/PaybackCreated.js b/src/pages/Payback/PaybackCreated.js index 70dd3e6..54005ef 100644 --- a/src/pages/Payback/PaybackCreated.js +++ b/src/pages/Payback/PaybackCreated.js @@ -1,5 +1,5 @@ import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, Divider, Image, Input, List, message, Row, Table,} from "antd"; +import {Button, Card, Col, Divider, Image, Input, List, message, Row, Table, Tag,} from "antd"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; @@ -8,6 +8,7 @@ import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {LINKS} from "../../routes/app"; import {ModalLoaderContext} from "../../utils/modal"; import {appConfig} from "../../config/app"; +import {PAYBACK_STATUS} from "../../constants/payback"; const {Search} = Input; @@ -61,6 +62,19 @@ export const PaybackCreated = observer(() => { currency: "IDR", }).format(text), }, + { + title: "Status", + dataIndex: "status", + key: "status", + width: '10%', + render: (text) => + + {PAYBACK_STATUS[text]} + + }, ]; const routeData = [ From 6b22d2e264372c3c1e98d09cc5bc9bcdf1e83744 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 23 Dec 2021 01:24:03 +0700 Subject: [PATCH 165/324] feat: handler dynamic action columnin payback confirmation, and add column name --- src/constants/payback.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/constants/payback.js diff --git a/src/constants/payback.js b/src/constants/payback.js new file mode 100644 index 0000000..a72024e --- /dev/null +++ b/src/constants/payback.js @@ -0,0 +1,7 @@ +export const PAYBACK_STATUS = { + 0: 'Pending', + 1: 'Success', + 2: 'Failed', + 3: 'Approved', + 4: 'Rejected', +} \ No newline at end of file From ce2d2e1072b848d9764091ff8b29c3f151824c5b Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 23 Dec 2021 11:53:07 +0700 Subject: [PATCH 166/324] Config Menu --- src/component/ProductComponent.js | 27 +- src/pages/App/MenuList.js | 28 +- src/pages/Config/Partner.js | 4 +- src/pages/Config/Supplier.js | 4 +- src/pages/Membership/DetailUser.js | 184 +++++----- src/pages/Membership/Membership.js | 181 +++++----- src/pages/Payback/Payback.js | 518 +++++++++++++++------------- src/pages/Payback/PaybackCreated.js | 4 +- src/pages/Product/Category.js | 4 +- src/pages/Product/Product.js | 99 +++--- src/pages/Product/Subcategory.js | 4 +- src/pages/Profile/Profile.js | 2 +- src/pages/Transaction/Product.js | 6 +- src/routes/app.js | 2 +- src/store/membership.js | 10 + src/store/transaction.js | 2 +- 16 files changed, 572 insertions(+), 507 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 990b7d8..5490a1d 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -1,4 +1,4 @@ -import React, {useContext, useState} from "react"; +import React, { useContext, useState } from "react"; import { Button, Col, @@ -15,19 +15,19 @@ import { Tag, Typography, } from "antd"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined} from "@ant-design/icons"; -import {useHistory} from "react-router-dom"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; -import {ModalLoaderContext} from "../utils/modal"; +import { observer } from "mobx-react-lite"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { useHistory } from "react-router-dom"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; +import { ModalLoaderContext } from "../utils/modal"; -const {Title, Text} = Typography; +const { Title, Text } = Typography; export const ProductComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const {Option} = Select; + const { Option } = Select; const history = useHistory(); const [idData, setIdData] = useState(""); const [filterSupplier, setFilterSupplier] = useState([]); @@ -92,6 +92,11 @@ export const ProductComponent = observer((props) => { // // ), // }, + { + title: "Supplier", + dataIndex: "supplier", + key: "supplier", + }, { title: "Tersedia", dataIndex: "tersedia", @@ -120,7 +125,7 @@ export const ProductComponent = observer((props) => { ), }, ]; - + if (store.authentication.userData.role !== "Admin") columns.pop(); const deleteData = async (id) => { try { console.log(id); @@ -289,7 +294,7 @@ export const ProductComponent = observer((props) => { pageSize: store.product.pageSize, total: store.product.total_data, current: store.product.page + 1, - style: {marginBottom: "1rem", marginRight: "1rem"}, + style: { marginBottom: "1rem", marginRight: "1rem" }, }} dataSource={store.product.data} style={{ padding: 0 }} diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 6bd6c96..ce7bf9f 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -52,14 +52,14 @@ export const MenuList = observer((props) => { - Home + Beranda {store.authentication.userData.role !== "Retail" && ( - Membership + Keanggotaan )} @@ -68,13 +68,13 @@ export const MenuList = observer((props) => { - Partner + Rekanan - Commission + Komisi @@ -90,14 +90,14 @@ export const MenuList = observer((props) => { - Product + Produk {store.authentication.userData.role === "Admin" && ( - Category + Kategori )} @@ -105,7 +105,7 @@ export const MenuList = observer((props) => { - Sub Category + Sub Kategori )} @@ -115,7 +115,7 @@ export const MenuList = observer((props) => { - Product + Produk )} @@ -123,24 +123,24 @@ export const MenuList = observer((props) => { - Transaction + Transaksi )} - } title="Payback"> + } title="Pembayaran"> {store.authentication.userData.role !== "Retail" && ( - - Confirmation + + konfirmasi )} {store.authentication.userData.role !== "Admin" && ( - - Created + + Buat Pembayaran )} diff --git a/src/pages/Config/Partner.js b/src/pages/Config/Partner.js index e1e8b41..4b5f5ce 100644 --- a/src/pages/Config/Partner.js +++ b/src/pages/Config/Partner.js @@ -56,14 +56,14 @@ export const Partner = observer(() => { */} - + /> */} diff --git a/src/pages/Config/Supplier.js b/src/pages/Config/Supplier.js index fc088b5..e009362 100644 --- a/src/pages/Config/Supplier.js +++ b/src/pages/Config/Supplier.js @@ -71,7 +71,7 @@ export const Supplier = observer(() => { */} - { marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0, }} onSearch={(value) => console.log(value)} - /> + /> */} Name- {store.transaction.data.name} + {store.membership.data.userDetail?.name} + + + Username + + + + {store.membership.data.superior?.username} + Role- {store.authentication.profileData?.userDetail?.phone_number} + + {store.membership.data.roles?.name} + - Saldo Supplier + Phone Number- {store.authentication.profileData?.username} - - - Saldo System - - - {store.authentication.profileData.roles?.name} + {store.membership.data.userDetail?.phone_number}Status- {store.authentication.profileData.superior?.username} + + {store.authentication.profileData.superior?.isActive === true ? "Inaktif": "Aktif"} + - + {/* - Saldo + + Saldo + - {store.authentication.profileData?.wallet} + + {store.transaction?.data.amount} + - + */}
- History Top Up + + History Top Up + -
-
+
- ) + ); }); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 526f41e..83de9c3 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,32 +1,32 @@ -import React, {useContext, useEffect, useState} from "react"; +import React, { useContext, useEffect, useState } from "react"; import { - Button, - Card, - Col, - Divider, - Form, - Input, - InputNumber, - List, - message, - Modal, - Row, - Select, - Space, - Table, - Tag, + Button, + Card, + Col, + Divider, + Form, + Input, + InputNumber, + List, + message, + Modal, + Row, + Select, + Space, + Table, + Tag, } from "antd"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {DownloadOutlined, PlusSquareOutlined} from "@ant-design/icons"; -import {MembershipModal} from "./MembershipModal"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {LINKS} from "../../routes/app"; -import {useHistory} from "react-router-dom"; -import {ModalLoaderContext} from "../../utils/modal"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { DownloadOutlined, PlusSquareOutlined } from "@ant-design/icons"; +import { MembershipModal } from "./MembershipModal"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { LINKS } from "../../routes/app"; +import { useHistory } from "react-router-dom"; +import { ModalLoaderContext } from "../../utils/modal"; -const {Search} = Input; -const {Option} = Select; +const { Search } = Input; +const { Option } = Select; export const Membership = observer(() => { const history = useHistory(); const [form] = Form.useForm(); @@ -71,14 +71,14 @@ export const Membership = observer(() => { const status = isActive ? "inactive" : "active"; const status2 = isActive ? "Inactivating" : "Activating"; try { - modalLoader.setLoading(true); - const response = await store.membership.changeStatus(id, status); - modalLoader.setLoading(false); + modalLoader.setLoading(true); + const response = await store.membership.changeStatus(id, status); + modalLoader.setLoading(false); - response?.body?.statusCode === 201 - ? message.success(`Success ${status2} Membership`) - : message.error(`Failed ${status2} Membership`); - await getData(); + response?.body?.statusCode === 201 + ? message.success(`Success ${status2} Membership`) + : message.error(`Failed ${status2} Membership`); + await getData(); } catch (err) { modalLoader.setLoading(false); message.error(`Failed ${status2} Membership`); @@ -93,26 +93,26 @@ export const Membership = observer(() => { const handleSubmitTransaction = async (data) => { modalLoader.setLoading(true); try { - data.destination = destination; - if (data.amount) { - data = { - ...data, - amount: Number(data.amount), - }; - } + data.destination = destination; + if (data.amount) { + data = { + ...data, + amount: Number(data.amount), + }; + } - let response = null; + let response = null; - (await store.authentication.userData.role) === "Admin" - ? (response = await store.transaction.distributeAdmin(data)) - : (response = await store.transaction.distribute(data)); + (await store.authentication.userData.role) === "Admin" + ? (response = await store.transaction.distributeAdmin(data)) + : (response = await store.transaction.distribute(data)); - response?.body?.statusCode === 201 - ? message.success("Success Top Up") - : message.error("Failed Top Up"); + response?.body?.statusCode === 201 + ? message.success("Success Top Up") + : message.error("Failed Top Up"); - modalLoader.setLoading(false); - await getData(); + modalLoader.setLoading(false); + await getData(); } catch (e) { console.log(e, "apa errornya"); modalLoader.setLoading(false); @@ -142,30 +142,30 @@ export const Membership = observer(() => { key: ["coa", "amount"], width: "20%", render: (text) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text), - }, - { - title: "Status", - dataIndex: "isActive", - key: "isActive", - render: (text, record) => ( - - {record?.isActive === true ? " ACTIVE" : "INACTIVE"} - - ), + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, + // { + // title: "Status", + // dataIndex: "isActive", + // key: "isActive", + // render: (text, record) => ( + // + // {record?.isActive === true ? " ACTIVE" : "INACTIVE"} + // + // ), + // }, { title: "Action", key: "action", render: (text, record) => ( - - {store.authentication.userData.role === "Admin" && } + } */} + + + + ) : ( + ( - - ), - }, - { - title: "Amount", - dataIndex: "amount", - key: "amount", - width: '20%', - render: (text) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text), - }, - { - title: "Action", - dataIndex: "amount", - key: "action", - width: '10%', - render: (text, record) => ( - PAYBACK_STATUS[record.status] === PAYBACK_STATUS[0] ? - - - - : - - {PAYBACK_STATUS[record.status]} - - ), - }, + style={{ color: "#4F566B" }} + > + {PAYBACK_STATUS[record.status]} + + ), + }, ]; if (store.authentication.userData.role === "Retail") columns.pop(); const routeData = [ - { - route: LINKS.HOME, - name: "Home", - }, - { - route: LINKS.PAYBACK, - name: Payback Confirmation, - }, + { + route: LINKS.HOME, + name: "Home", + }, + { + route: LINKS.PAYBACK, + name: Payback Confirmation, + }, ]; - const handleAction = async (id, type) => { - modalLoader.setLoading(true); - try { - const response = await store.payback.confirmPayback(id, type); - if (response.body.status !== 201) { - message.error(`Failed ${capitalize(type)} Payback`); - } else { - message.success(`Success ${capitalize(type)} Payback`); - } - } catch (e) { - console.error(e, "apa errornya"); - message.error("Failed Handler Action Payback"); - } - modalLoader.setLoading(false); - }; + const handleAction = async (id, type) => { + modalLoader.setLoading(true); + try { + const response = await store.payback.confirmPayback(id, type); + if (response.body.status !== 201) { + message.error(`Failed ${capitalize(type)} Payback`); + } else { + message.success(`Success ${capitalize(type)} Payback`); + } + } catch (e) { + console.error(e, "apa errornya"); + message.error("Failed Handler Action Payback"); + } + modalLoader.setLoading(false); + }; - return ( -
- - -
- -
- - - - + + +
+ +
+ + + + {/* + /> */} {store.ui.mediaQuery.isDesktop && ( -
{ - let pageNumber = page.current; - store.payback.pageSizeConfirmation = page.pageSize; - store.payback.pageConfirmation = pageNumber - 1; - modalLoader.setLoading(true); - await store.payback.getDataConfirmation(); - modalLoader.setLoading(false); - }} - /> +
{ + let pageNumber = page.current; + store.payback.pageSizeConfirmation = page.pageSize; + store.payback.pageConfirmation = pageNumber - 1; + modalLoader.setLoading(true); + await store.payback.getDataConfirmation(); + modalLoader.setLoading(false); + }} + /> )} {store.ui.mediaQuery.isMobile && ( - { - store.payback.pageSizeConfirmation = page.pageSize; - store.payback.pageConfirmation = page.current - 1; - modalLoader.setLoading(true); - await store.payback.getDataConfirmation(); - modalLoader.setLoading(false); - }, - pageSize: store.payback.pageSizeConfirmation, - total: store.payback.totalDataConfirmation, - current: store.payback.pageConfirmation + 1, - style: {marginBottom: "1rem", marginRight: "1rem"}, - }} - dataSource={store.payback.dataConfirmation} - style={{padding: 0}} - renderItem={(item) => { - return ( -
- - - -
- } - /> -
-

- {item.amount} -

-
- - + { + store.payback.pageSizeConfirmation = page.pageSize; + store.payback.pageConfirmation = page.current - 1; + modalLoader.setLoading(true); + await store.payback.getDataConfirmation(); + modalLoader.setLoading(false); + }, + pageSize: store.payback.pageSizeConfirmation, + total: store.payback.totalDataConfirmation, + current: store.payback.pageConfirmation + 1, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.payback.dataConfirmation} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + + +
+ } + /> +
+

+ {item.amount} +

+
+ + ); }} diff --git a/src/pages/Payback/PaybackCreated.js b/src/pages/Payback/PaybackCreated.js index 54005ef..ee53c93 100644 --- a/src/pages/Payback/PaybackCreated.js +++ b/src/pages/Payback/PaybackCreated.js @@ -101,14 +101,14 @@ export const PaybackCreated = observer(() => {
- + /> */} {store.authentication.userData.role !== "Admin" && ( - + /> */} - - - -
- - {store.authentication.userData.role === "Admin" && ( + {store.authentication.userData.role !== "Admin" && ( +
+ +
+ + +
{ textAlign: "right", }} > - - - - + + + + {/* */} +
- )} - - - + + + + )} diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js index 0ffa767..cc99349 100644 --- a/src/pages/Product/Subcategory.js +++ b/src/pages/Product/Subcategory.js @@ -61,14 +61,14 @@ export const Subcategory = observer(() => { */} - + /> */} - )} + )} */} ); }); diff --git a/src/routes/app.js b/src/routes/app.js index 00ee1cf..9bc009f 100644 --- a/src/routes/app.js +++ b/src/routes/app.js @@ -29,7 +29,7 @@ export const LINKS = { PAYBACK: "/app/payback", PAYBACK_CREATED: "/app/payback-created", SUBCATEGORY: "/app/subcategory", - USER_DETAIL: "/app/user-detail", + USER_DETAIL: "/app/user-detail/:id", PRODUCT_DETAIL: "/app/product-detail", }; diff --git a/src/store/membership.js b/src/store/membership.js index 7b2d44b..8edbee2 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -28,6 +28,16 @@ export class Membership { console.error(e); } } + async getDetail(id) { + try { + const response = await http.get(`/users/`+id); + console.log(response,'Data Detail') + this.data = response.body.data + this.total_data = response?.body?.count ?? 0 + } catch (e) { + console.error(e); + } + } async getDataBySuperior() { try { diff --git a/src/store/transaction.js b/src/store/transaction.js index 307f4bd..390b91d 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -84,7 +84,7 @@ export class Transaction { try { console.log("Top up") const response = await http.get(`/transaction/history-deposit?page=${this.pageHistoryTopUp}&user-destination=${id}`); - + console.log(response,"data") this.dataHistoryTopUp = response.body.data ?? [] this.total_dataHistoryTopUp = response?.body?.count ?? 0 } catch (e) { From 4ba8f07f93431e3f753b027a31061259d4e7e0ec Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 23 Dec 2021 12:05:30 +0700 Subject: [PATCH 167/324] Config Page --- src/pages/Membership/DetailUser.js | 10 +++++----- src/store/membership.js | 3 ++- src/store/transaction.js | 6 ++---- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index d4e84bc..deffce8 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -85,14 +85,14 @@ export const DetailUser = observer(() => { Name - {store.membership.data.userDetail?.name} + {store.membership.dataDetail.userDetail?.name}Username - {store.membership.data.superior?.username} + {store.membership.dataDetail.superior?.username} @@ -100,21 +100,21 @@ export const DetailUser = observer(() => { - {store.membership.data.roles?.name} + {store.membership.dataDetail.roles?.name} Phone Number- {store.membership.data.userDetail?.phone_number} + {store.membership.dataDetail.userDetail?.phone_number}Status - {store.authentication.profileData.superior?.isActive === true ? "Inaktif": "Aktif"} + {store.membership.dataDetail.isActive === true ? "Aktif": "Inaktif"} diff --git a/src/store/membership.js b/src/store/membership.js index 8edbee2..01bdd34 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -6,6 +6,7 @@ export class Membership { pageSize = 10 data = []; total_data = 0 + dataDetail=[] constructor(ctx) { this.ctx = ctx; @@ -32,7 +33,7 @@ export class Membership { try { const response = await http.get(`/users/`+id); console.log(response,'Data Detail') - this.data = response.body.data + this.dataDetail = response.body.data this.total_data = response?.body?.count ?? 0 } catch (e) { console.error(e); diff --git a/src/store/transaction.js b/src/store/transaction.js index 390b91d..a7032d1 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -58,7 +58,6 @@ export class Transaction { async getDataCategories() { try { const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); - this.dataCategories = response.body.data ?? [] this.total_dataCategories = response?.body?.count ?? 0 if (this.dataCategories.length > 0) { @@ -72,7 +71,6 @@ export class Transaction { async getDataHistoryTransaction() { try { const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}&pageSize=${this.pageSizeHistoryTransaction}`); - this.dataHistoryTransaction = response.body.data ?? [] this.total_dataHistoryTransaction = response?.body?.count ?? 0 } catch (e) { @@ -82,9 +80,9 @@ export class Transaction { async getDataHistoryTopUp(id) { try { - console.log("Top up") + //console.log("Top up") const response = await http.get(`/transaction/history-deposit?page=${this.pageHistoryTopUp}&user-destination=${id}`); - console.log(response,"data") + //console.log(response,"data") this.dataHistoryTopUp = response.body.data ?? [] this.total_dataHistoryTopUp = response?.body?.count ?? 0 } catch (e) { From a16f42145b7bb3739a5f346665505beb11ceefd9 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 23 Dec 2021 12:06:38 +0700 Subject: [PATCH 168/324] fix: detail product --- src/pages/Membership/DetailUser.js | 43 +++++++++++++----------------- src/pages/Membership/Membership.js | 25 ++++++++--------- src/store/transaction.js | 11 ++++---- 3 files changed, 34 insertions(+), 45 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index deffce8..d98c6d4 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -1,37 +1,26 @@ -import React, { useContext, useEffect, useState } from "react"; -import { - Button, - Card, - Col, - Row, - Table, - Typography, - Tag, - Space, - message, -} from "antd"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { LINKS } from "../../routes/app"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; -import { FilterOutlined, DownloadOutlined } from "@ant-design/icons"; -import { format, parseISO } from "date-fns"; -import { ModalLoaderContext } from "../../utils/modal"; -import { useParams } from "react-router-dom"; +import React, {useContext, useEffect, useState} from "react"; +import {Button, Card, Col, Row, Table, Typography,} from "antd"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {LINKS} from "../../routes/app"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {FilterOutlined} from "@ant-design/icons"; +import {format, parseISO} from "date-fns"; +import {ModalLoaderContext} from "../../utils/modal"; +import {useParams} from "react-router-dom"; -const { Title, Text } = Typography; +const {Title, Text} = Typography; export const DetailUser = observer(() => { const store = useStore(); const modalLoader = useContext(ModalLoaderContext); - const { id } = useParams(); + const {id} = useParams(); const [visibleModal, setVisibleModal] = useState(false); const [isVisibleTopUpModal, setIsVisibleTopUpModal] = useState(false); const [destination, setDestination] = useState(null); const [initialData, setInitialData] = useState({}); const [confirmLoading, setConfirmLoading] = useState(false); - //console.log(id) useEffect(() => { (async () => { modalLoader.setLoading(true); @@ -69,8 +58,12 @@ export const DetailUser = observer(() => { name: "Home", }, { - route: LINKS.USER_DETAIL, - name: Detail User, + route: "/app/membership", + name: Membership, + }, + { + route: LINKS.USER_DETAIL.replace(":id", id), + name: Detail User, }, ]; return ( diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 83de9c3..007210a 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,4 +1,4 @@ -import React, { useContext, useEffect, useState } from "react"; +import React, {useContext, useEffect, useState} from "react"; import { Button, Card, @@ -14,19 +14,18 @@ import { Select, Space, Table, - Tag, } from "antd"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; -import { DownloadOutlined, PlusSquareOutlined } from "@ant-design/icons"; -import { MembershipModal } from "./MembershipModal"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { LINKS } from "../../routes/app"; -import { useHistory } from "react-router-dom"; -import { ModalLoaderContext } from "../../utils/modal"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {DownloadOutlined, PlusSquareOutlined} from "@ant-design/icons"; +import {MembershipModal} from "./MembershipModal"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {LINKS} from "../../routes/app"; +import {useHistory} from "react-router-dom"; +import {ModalLoaderContext} from "../../utils/modal"; -const { Search } = Input; -const { Option } = Select; +const {Search} = Input; +const {Option} = Select; export const Membership = observer(() => { const history = useHistory(); const [form] = Form.useForm(); @@ -221,9 +220,7 @@ export const Membership = observer(() => { - - - -
- {/* + + + {store.authentication.userData.role !== "Admin" && ( +
+ +
+ + + +
+ {/* { }} /> */} -
- - - - {/* */} -
-
+ beforeUpload(file)} + customRequest={(args) => uploadHandler(args)} + onRemove={(file) => { + setLoading(false); + }} + > + + + {loadingState} + + diff --git a/src/store/product.js b/src/store/product.js index 5881c38..af5f1d9 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -107,6 +107,24 @@ export class Product { console.error(e); } } + + async uploadExcel(data) { + try { + const response = await http.upload(data); + return response; + } catch (e) { + console.error(e); + } + } + + async uploadProduct(data) { + try { + const response = await http.post('/product/upload-product').send(data); + return response; + } catch (e) { + console.error(e); + } + } } From 91ecdfb5415864f4acef41f66dddc3f0619ebc45 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 23 Dec 2021 13:51:05 +0700 Subject: [PATCH 171/324] chore: rewrite function for upload images in payback --- src/pages/Payback/PaybackModal.js | 3 +-- src/store/payback.js | 9 +++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index 39ae6b9..1cc8127 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -3,7 +3,6 @@ import {Form, InputNumber, message, Modal, Upload,} from "antd"; import {useStore} from "../../utils/useStore"; import {LoadingOutlined, PlusOutlined} from "@ant-design/icons"; import {ModalLoaderContext} from "../../utils/modal"; -import {http} from "../../utils/http"; import {appConfig} from "../../config/app"; export const PaybackModal = ({initialData}) => { @@ -32,7 +31,7 @@ export const PaybackModal = ({initialData}) => { const uploadHandler = async (args) => { const file = args.file; - const res = await http.upload(file); + const res = await store.payback.uploadImages(file); setImage(`${appConfig.apiUrl}/config/image/${res.body.filename}`); setResponseFilename(res.body.filename); setFileList([{ diff --git a/src/store/payback.js b/src/store/payback.js index d0a5c83..279d56f 100644 --- a/src/store/payback.js +++ b/src/store/payback.js @@ -93,4 +93,13 @@ export class Payback { console.error(e); } } + + async uploadImages(data) { + try { + const response = await http.upload(data); + return response; + } catch (e) { + console.error(e); + } + } } From 8ead48ad2ae9c328de23d6ca7e2c1bb9dd62c915 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 23 Dec 2021 15:06:46 +0700 Subject: [PATCH 172/324] Config Page --- src/component/PartnerComponent.js | 36 +++-- src/component/ProductComponent.js | 16 ++- src/pages/Config/Partner.js | 10 +- src/pages/Membership/DetailUser.js | 204 +++++++++++++++++++++++++++-- src/pages/Membership/Membership.js | 77 ++++++----- src/pages/Product/Category.js | 6 +- src/pages/Product/ProductDetail.js | 146 +++++++++++++-------- src/pages/Product/Subcategory.js | 10 +- src/pages/Transaction/Product.js | 111 +++++++++------- src/routes/app.js | 2 +- src/store/product.js | 27 +++- 11 files changed, 463 insertions(+), 182 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index cc2e6b6..b5c7da1 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -1,11 +1,22 @@ -import React, {useContext, useState} from "react"; -import {Button, Divider, Form, Input, List, message, Modal, Space, Table, Tag,} from "antd"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined} from "@ant-design/icons"; -import {useHistory} from "react-router-dom"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; -import {ModalLoaderContext} from "../utils/modal"; +import React, { useContext, useState } from "react"; +import { + Button, + Divider, + Form, + Input, + List, + message, + Modal, + Space, + Table, + Tag, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { useHistory } from "react-router-dom"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; +import { ModalLoaderContext } from "../utils/modal"; export const PartnerComponent = observer((props) => { const store = useStore(); @@ -151,6 +162,7 @@ export const PartnerComponent = observer((props) => { ? "Failed Change Partner Password" : "Success Update Data Partner" ); + //await store.partner.getData() } catch (e) { modalLoader.setLoading(true); @@ -166,9 +178,11 @@ export const PartnerComponent = observer((props) => { } else { modalLoader.setLoading(true); try { - await store.partner.create(data); - message.success("Success Add New Partner"); + const response = await store.partner.create(data); modalLoader.setLoading(false); + response?.body?.statusCode === 200 + ? message.success("Success Add New Partner") + : message.error("Failed Add Partner"); } catch (e) { console.log(e, "apa errornya"); message.error("Failed Add Partner"); @@ -219,7 +233,7 @@ export const PartnerComponent = observer((props) => { pageSize: store.partner.pageSize, total: store.partner.total_data, current: store.partner.page + 1, - style: {marginBottom: "1rem", marginRight: "1rem"}, + style: { marginBottom: "1rem", marginRight: "1rem" }, }} dataSource={store.partner.data} style={{ padding: 0 }} diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 5490a1d..1162005 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -115,13 +115,15 @@ export const ProductComponent = observer((props) => { key: "action", render: (text, record) => ( + onClick={async () => { + await store.product.getDetail(record.product_id); + await store.product.getDetailProduct(record.product_id); + history.push(LINKS.PRODUCT_DETAIL.replace(":id", record.product_id)); + //console.log(record.product_id); + }} + > + Detail + ), }, ]; diff --git a/src/pages/Config/Partner.js b/src/pages/Config/Partner.js index 4b5f5ce..d7226e9 100644 --- a/src/pages/Config/Partner.js +++ b/src/pages/Config/Partner.js @@ -49,13 +49,13 @@ export const Partner = observer(() => { - - {/* + */} - - + + */} + {/* { useEffect(() => { (async () => { modalLoader.setLoading(true); + await getData(); await Promise.allSettled([ store.transaction.getDataHistoryTopUp(id), store.membership.getDetail(id), @@ -43,6 +45,71 @@ export const DetailUser = observer(() => { })(); }, []); + const getData = async () => { + store.authentication.userData.role === "Admin" + ? await store.membership.getData() + : await store.membership.getDataBySuperior(); + }; + const changeStatus = async (id, isActive) => { + const status = isActive ? "inactive" : "active"; + const status2 = isActive ? "Inactivating" : "Activating"; + try { + modalLoader.setLoading(true); + const response = await store.membership.changeStatus(id, status); + modalLoader.setLoading(false); + + response?.body?.statusCode === 201 + ? message.success(`Success ${status2} Membership`) + : message.error(`Failed ${status2} Membership`); + await getData(); + } catch (err) { + modalLoader.setLoading(false); + message.error(`Failed ${status2} Membership`); + } + }; + + const onSubmit = async (data) => { + data.superior = true; + + if (initialData.id) { + setConfirmLoading(true); + modalLoader.setLoading(true); + try { + await store.membership.update(initialData.id, data); + message.success( + initialData.isChangePassword + ? "Success Change Member Password" + : "Success Update Data Member" + ); + await getData(); + modalLoader.setLoading(false); + } catch (e) { + modalLoader.setLoading(true); + message.error( + initialData.isChangePassword + ? "Failed Update Member Password" + : "Failed Update Data Member" + ); + } + setConfirmLoading(false); + setVisibleModal(false); + } else { + setConfirmLoading(true); + modalLoader.setLoading(true); + try { + await store.membership.create(data); + message.success("Success Add New Member"); + await getData(); + } catch (e) { + console.log(e, "apa errornya"); + message.error("Failed Add Member"); + } + modalLoader.setLoading(false); + setConfirmLoading(false); + setVisibleModal(false); + setInitialData({}); + } + }; const columns = [ { title: "Amount", @@ -61,6 +128,69 @@ export const DetailUser = observer(() => { ); }, }, + { + title: "Status", + dataIndex: "isActive", + key: "isActive", + render: (text, record) => ( + + {record?.isActive === true ? " ACTIVE" : "INACTIVE"} + + ), + }, + { + title: "Action", + key: "action", + render: (text, record) => ( + + {/* {store.authentication.userData.role === "Admin" && */} + + {/* } */} + {/* {store.authentication.userData.role === "Admin" && */} + + {/* } + {store.authentication.userData.role === "Admin" && */} + + {/* } */} + + ), + }, ]; const routeData = [ @@ -68,6 +198,10 @@ export const DetailUser = observer(() => { route: LINKS.HOME, name: "Home", }, + { + route: LINKS.MEMBERSHIP, + name: Keanggotaan, + }, { route: LINKS.USER_DETAIL, name: Detail User, @@ -91,30 +225,30 @@ export const DetailUser = observer(() => { Username - - {store.membership.dataDetail.superior?.username} - + {store.membership.dataDetail.superior?.username}Role- - {store.membership.dataDetail.roles?.name} - + {store.membership.dataDetail.roles?.name}Phone Number- {store.membership.dataDetail.userDetail?.phone_number} + + {store.membership.dataDetail.userDetail?.phone_number} + Status - {store.membership.dataDetail.isActive === true ? "Aktif": "Inaktif"} + {store.membership.dataDetail.isActive === true + ? "Aktif" + : "Inaktif"} @@ -141,7 +275,7 @@ export const DetailUser = observer(() => { History Top Up - + */}
{
+ {/* { + form.resetFields(); + handleCancelTransaction(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmitTransaction(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > + + + + `Rp. ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + } + parser={(value) => value.replace(/\Rp.\s?|(,*)/g, "")} + /> + + + */} + { + onSubmit(data); + }} + onCancel={() => { + setInitialData({}); + setVisibleModal(false); + }} + />
); }); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 83de9c3..9eb9a91 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -147,31 +147,33 @@ export const Membership = observer(() => { currency: "IDR", }).format(text), }, - // { - // title: "Status", - // dataIndex: "isActive", - // key: "isActive", - // render: (text, record) => ( - // - // {record?.isActive === true ? " ACTIVE" : "INACTIVE"} - // - // ), - // }, + { + title: "Status", + dataIndex: "isActive", + key: "isActive", + render: (text, record) => ( + + {record?.isActive === true ? " ACTIVE" : "INACTIVE"} + + ), + }, { title: "Action", key: "action", render: (text, record) => ( - {/* {store.authentication.userData.role === "Admin" && } - - {store.authentication.userData.role === "Admin" && } - {store.authentication.userData.role === "Admin" && } */} + + {/* } */} - + {/* {store.authentication.userData.role === "Admin" && ( */} + + {/* ) */} + {/* } */} ), }, @@ -239,8 +248,8 @@ export const Membership = observer(() => { name: "Home", }, { - route: "/app/membership", - name: Membership, + route: LINKS.MEMBERSHIP, + name: Keanggotaan, }, ]; @@ -300,14 +309,14 @@ export const Membership = observer(() => { */} - + /> */} + {/* - - + */} + {/* { const store = useStore(); + const { id } = useParams(); const modalLoader = useContext(ModalLoaderContext); const routeData = [ @@ -21,11 +23,11 @@ export const ProductDetail = observer(() => { }, { route: LINKS.PRODUCT, - name: Product, + name: Product, }, { route: LINKS.PRODUCT_DETAIL, - name: Product Detail, + name: Product Detail, }, ]; @@ -33,89 +35,121 @@ export const ProductDetail = observer(() => { (async () => { modalLoader.setLoading(true); await Promise.allSettled([ - store.authentication.getProfile(), - store.transaction.getDataHistoryTransaction(), + //store.authentication.getProfile(), + store.product.getDetail(id), + store.product.getDetailProduct(id), ]); modalLoader.setLoading(false); - })() + })(); }, []); + //console.log(id) const columns = [ { - title: 'Markup Price', - dataIndex: 'mark_up_price', - key: 'mark_up_price', - width: '20%', + title: "Markup Price", + dataIndex: "mark_up_price", + key: "mark_up_price", + width: "20%", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { - title: 'Name', - dataIndex: 'name', - key: 'name', - width: '50%', + title: "Price", + dataIndex: "price", + key: "price", + width: "50%", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { - title: 'Transaction Date', - dataIndex: 'created_at', - key: 'created_at', + title: "Transaction Date", + dataIndex: "startDate", + key: "startDate", render: (text, record) => { return ( - {format(parseISO(record.created_at), 'dd MMMM yyyy HH:mm')} - ) + {format(parseISO(record.startDate), "dd MMMM yyyy")} + ); }, }, - ] + ]; - const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? { - display: "flex", - justifyContent: "center" - } : {fontSize: "0.75rem"}; - const styleSaldoContent = store.ui.mediaQuery.isDesktop ? { - fontSize: '1.25rem', - display: "flex", - justifyContent: "center" - } : null; + const styleSaldoTitle = store.ui.mediaQuery.isDesktop + ? { + display: "flex", + justifyContent: "center", + } + : { fontSize: "0.75rem" }; + const styleSaldoContent = store.ui.mediaQuery.isDesktop + ? { + fontSize: "1.25rem", + display: "flex", + justifyContent: "center", + } + : null; return (
- + Product Detail - +
Kode- {store.authentication.profileData?.userDetail?.name} + {store.product.dataDetailProduct.code}- Produk + Nama Produk - - {store.authentication.profileData?.userDetail?.phone_number} + + {store.product.dataDetailProduct.name}Harga Beli- {store.authentication.profileData?.username} + + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.product.dataDetailProduct.basePrice)} + Harga Jual- {store.authentication.profileData.roles?.name} + + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.product.dataDetailProduct.price)} + + + + Supplier + + + {store.product.dataDetailProduct.supplier.name}Status- {store.authentication.profileData.superior?.username} + {store.product.dataDetailProduct.status} - + {/* Saldo @@ -124,29 +158,31 @@ export const ProductDetail = observer(() => { {store.authentication.profileData?.wallet} - + */}
- History User Transaction + + Product Price History + - + */}
-
+
- ) + ); }); diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js index cc99349..a2c0292 100644 --- a/src/pages/Product/Subcategory.js +++ b/src/pages/Product/Subcategory.js @@ -54,13 +54,13 @@ export const Subcategory = observer(() => { -
- {/* + */} - - + + */} + {/* { const store = useStore(); @@ -18,8 +18,8 @@ export const Product = observer(() => { modalLoader.setLoading(true); await Promise.allSettled([ store.transaction.getDataSubCategories(), - store.transaction.getDataCategories() - ]) + store.transaction.getDataCategories(), + ]); modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); @@ -44,7 +44,9 @@ export const Product = observer(() => { const handleBuyProduct = async (data) => { modalLoader.setLoading(true); try { - const response = await store.transaction.buyProduct({productCode: data}); + const response = await store.transaction.buyProduct({ + productCode: data, + }); if (response.status === 201) { message.success("Success Buy Product"); } else { @@ -64,16 +66,18 @@ export const Product = observer(() => { return (
- Sub Category + + Sub Category +
- + Produk & Nominal - + {store.transaction.data.length != 0 && ( - - {store.transaction.data.map((item, index) => ( - - { - Modal.confirm({ - title: `Are you sure buy ${item.product_name}?`, - icon: , - okText: "Confirm", - cancelText: "Cancel", - okType: "primary", - onOk() { - handleBuyProduct(item.product_code) - }, - onCancel() { - console.log("Cancel"); - }, - }); - }} - style={{cursor: "pointer",marginLeft:10}} - > - {item.product_name} -
- + + {store.transaction.data.map((item, index) => ( +
+ { + Modal.confirm({ + title: `Are you sure buy ${item.product_name}?`, + icon: , + okText: "Confirm", + cancelText: "Cancel", + okType: "primary", + onOk() { + handleBuyProduct(item.product_code); + }, + onCancel() { + console.log("Cancel"); + }, + }); + }} + hoverable + style={{ + cursor: "pointer", + marginLeft: 10, + borderColor: "salmon", + height: 100, + marginBottom: 10, + }} + > + {item.product_name} +
+ {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(item?.price)} -
- - ))} - + + + ))} + )} {/* {store.transaction.data.length !== 0 && ( diff --git a/src/routes/app.js b/src/routes/app.js index 9bc009f..8df28d0 100644 --- a/src/routes/app.js +++ b/src/routes/app.js @@ -30,7 +30,7 @@ export const LINKS = { PAYBACK_CREATED: "/app/payback-created", SUBCATEGORY: "/app/subcategory", USER_DETAIL: "/app/user-detail/:id", - PRODUCT_DETAIL: "/app/product-detail", + PRODUCT_DETAIL: "/app/product-detail/:id", }; export const AppRoute = () => { diff --git a/src/store/product.js b/src/store/product.js index 5881c38..24fd675 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -22,6 +22,11 @@ export class Product { dataSubCategories = []; total_dataSubCategories = 0; filterCategory = null; + dataDetail=[] + dataDetailProduct=[] + + pageGetDetail=0 + supplier=null constructor(ctx) { this.ctx = ctx; @@ -31,7 +36,7 @@ export class Product { async getData() { try { const response = await http.get(`/product/all?supplier=${this.filterSupplier}&sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); - //console.log(response) + console.log(response) this.data = response.body.data.map((item, idx) => { item.key = idx; return item @@ -67,6 +72,26 @@ export class Product { console.error(e); } } + async getDetail(id) { + try { + const response = await http.get(`/product/price-history/${id}?page=${this.pageGetDetail}&supplier=${this.supplier}`); + //console.log(response,' Detail') + this.dataDetail = response.body.data + this.total_data = response?.body?.count ?? 0 + } catch (e) { + console.error(e); + } + } + async getDetailProduct(id) { + try { + const response = await http.get(`/product/${id}`); + //console.log(response,' Detail Product') + this.dataDetailProduct = response.body.data + this.total_data = response?.body?.count ?? 0 + } catch (e) { + console.error(e); + } + } async create(data) { try { From d221a3987d24611f00c87559283c60d891fd065e Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 23 Dec 2021 15:38:15 +0700 Subject: [PATCH 173/324] Repairing Menu --- src/component/CategoryComponent.js | 16 ++++++++++------ src/component/CommissionComponent.js | 8 +++++--- src/component/PartnerComponent.js | 6 +++--- src/component/ProductComponent.js | 16 ++++++++++------ src/component/SubcategoryComponent.js | 16 ++++++++++------ src/component/SupplierComponent.js | 16 ++++++++++------ src/pages/Membership/Membership.js | 8 +++++--- src/pages/Transaction/Product.js | 6 +++--- 8 files changed, 56 insertions(+), 36 deletions(-) diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index 753342e..c0f973c 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -95,10 +95,12 @@ export const CategoryComponent = observer((props) => { if (idData !== "") { modalLoader.setLoading(true); try { - await store.category.update(idData, data); - message.success("Success Update Data Category"); + const response =await store.category.update(idData, data); + response?.body?.statusCode === 200 + ? message.success("Berhasil Ubah Kategori") + : message.error("Gagal Ubah Kategori"); } catch (e) { - message.error("Failed Update Data Category"); + message.error("Gagal Ubah Data Kategori"); } modalLoader.setLoading(false); store.category.visibleModalCategory = false; @@ -107,11 +109,13 @@ export const CategoryComponent = observer((props) => { } else { modalLoader.setLoading(true); try { - await store.category.create(data); - message.success("Success Add New Category"); + const response=await store.category.create(data); + response?.body?.statusCode === 200 + ? message.success("Berhasil Tambah Kategori") + : message.error("Gagal Tambah Kategori"); } catch (e) { console.log(e, "apa errornya"); - message.error("Failed Add Category"); + message.error("Gagal Tambah Kategori"); } modalLoader.setLoading(false); store.category.visibleModalCategory = false; diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js index f6bbdfc..1342ac8 100644 --- a/src/component/CommissionComponent.js +++ b/src/component/CommissionComponent.js @@ -52,10 +52,12 @@ export const CommissionComponent = observer((props) => { const handleSubmit = async (data) => { modalLoader.setLoading(true); try { - await store.commission.update(idData, data); - message.success("Success Update Data Member"); + const response=await store.commission.update(idData, data); + response?.body?.statusCode === 200 + ? message.success("Berhasil Ubah Komisi") + : message.error("Gagal Ubah Komisi"); } catch (e) { - message.error("Failed Update Data Member"); + message.error("Gagal Ubah Komisi"); } modalLoader.setLoading(false); store.commission.visibleModalCommission = false; diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index b5c7da1..a36c5b3 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -181,11 +181,11 @@ export const PartnerComponent = observer((props) => { const response = await store.partner.create(data); modalLoader.setLoading(false); response?.body?.statusCode === 200 - ? message.success("Success Add New Partner") - : message.error("Failed Add Partner"); + ? message.success("Berhasil Tambah Partner") + : message.error("Gagal Tambah Partner"); } catch (e) { console.log(e, "apa errornya"); - message.error("Failed Add Partner"); + message.error("Gagal Tambah Partner"); } modalLoader.setLoading(false); store.partner.visibleModalPartner = false; diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 1162005..2e293f1 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -166,10 +166,12 @@ export const ProductComponent = observer((props) => { if (idData !== "") { modalLoader.setLoading(true); try { - await store.product.update(idData, data); - message.success("Success Update Data Member"); + const response=await store.product.update(idData, data); + response?.body?.statusCode === 200 + ? message.success("Berhasil Ubah Data Produk") + : message.error("Gagal Ubah Data Produk"); } catch (e) { - message.error("Failed Update Data Member"); + message.error("Gagal Ubah Data Produk"); } modalLoader.setLoading(false); store.product.visibleModalProduct = false; @@ -178,11 +180,13 @@ export const ProductComponent = observer((props) => { } else { modalLoader.setLoading(true); try { - await store.product.create(data); - message.success("Success Add New Member"); + const response=await store.product.create(data); + response?.body?.statusCode === 200 + ? message.success("Berhasil Tambah Produk") + : message.error("Gagal Tambah Produk"); } catch (e) { console.log(e, "apa errornya"); - message.error("Failed Add Member"); + message.error("Gagal Tambah Produk"); } modalLoader.setLoading(false); store.product.visibleModalProduct = false; diff --git a/src/component/SubcategoryComponent.js b/src/component/SubcategoryComponent.js index db1a7e5..ca27993 100644 --- a/src/component/SubcategoryComponent.js +++ b/src/component/SubcategoryComponent.js @@ -67,11 +67,13 @@ export const SubcategoryComponent = observer((props) => { if (idData !== "") { modalLoader.setLoading(true); try { - await store.subcategory.update(idData, data); + const response=await store.subcategory.update(idData, data); + response?.body?.statusCode === 200 + ? message.success("Berhasil Ubah Data Sub Kategori") + : message.error("Gagal Ubah Data Sub Kategori"); //await getData(); - message.success("Success Update Data Category"); } catch (e) { - message.error("Failed Update Data Category"); + message.error("Gagal Ubah Data Sub Kategori"); } modalLoader.setLoading(false); store.subcategory.visibleModalSubcategory = false; @@ -80,11 +82,13 @@ export const SubcategoryComponent = observer((props) => { } else { modalLoader.setLoading(true); try { - await store.subcategory.create(data); - message.success("Success Add New Category"); + const response =await store.subcategory.create(data); + response?.body?.statusCode === 200 + ? message.success("Berhasil Tambah Sub Kategori") + : message.error("Gagal Tambah Sub Kategori"); } catch (e) { console.log(e, "apa errornya"); - message.error("Failed Add Category"); + message.error("Gagal Tambah Sub Kategori"); } modalLoader.setLoading(false); store.subcategory.visibleModalSubcategory = false; diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index 7efd50e..40f1422 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -160,11 +160,13 @@ export const SupplierComponent = observer((props) => { if (idData !== "") { try { modalLoader.setLoading(true); - await store.supplier.update(idData, data); - message.success("Success Update Data Member"); + const response=await store.supplier.update(idData, data); + response?.body?.statusCode === 200 + ? message.success("Berhasil Ubah Data Supplier") + : message.error("Gagal Ubah Data Supplier"); } catch (e) { modalLoader.setLoading(false); - message.error("Failed Update Data Member"); + message.error("Gagal Ubah Data Supplie"); } modalLoader.setLoading(false); @@ -174,11 +176,13 @@ export const SupplierComponent = observer((props) => { } else { try { modalLoader.setLoading(true); - await store.supplier.create(data); - message.success("Success Add New Member"); + const response=await store.supplier.create(data); + response?.body?.statusCode === 200 + ? message.success("Berhasil Tambah Supplier Baru") + : message.error("Gagal Tambah Supplier Baru"); } catch (e) { console.log(e, "apa errornya"); - message.error("Failed Add Member"); + message.error("Gagal Tambah Supplier Baru"); } modalLoader.setLoading(false); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 9f5ddd1..8b443ca 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -282,12 +282,14 @@ export const Membership = observer(() => { setConfirmLoading(true); modalLoader.setLoading(true); try { - await store.membership.create(data); - message.success("Success Add New Member"); + const response=await store.membership.create(data); + response?.body?.statusCode === 200 + ? message.success("Berhasil Tambah Member Baru") + : message.error("Gagal Tambah Member Baru"); await getData(); } catch (e) { console.log(e, "apa errornya"); - message.error("Failed Add Member"); + message.error("Gagal Tambah Member Baru"); } modalLoader.setLoading(false); setConfirmLoading(false); diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index b3e3d16..2ac762c 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -48,9 +48,9 @@ export const Product = observer(() => { productCode: data, }); if (response.status === 201) { - message.success("Success Buy Product"); + message.success("Berhasil Beli Produk"); } else { - message.error("Failed Buy Product", 3); + message.error("Gagal Beli Produk", 3); } } catch (e) { if (e.response?.body?.message) { @@ -58,7 +58,7 @@ export const Product = observer(() => { return; } console.log(e, "apa errornya"); - message.error("Failed Buy Product"); + message.error("Gagal Beli Product"); } modalLoader.setLoading(false); }; From 4e2480dc63c395e030fd03b06c2ef58b499f48fd Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 23 Dec 2021 16:03:57 +0700 Subject: [PATCH 174/324] Repair Menu --- src/component/CategoryComponent.js | 4 ++-- src/component/CommissionComponent.js | 2 +- src/component/PartnerComponent.js | 2 +- src/component/ProductComponent.js | 2 +- src/component/SubcategoryComponent.js | 4 ++-- src/component/SupplierComponent.js | 4 ++-- src/pages/App/DesktopLayout.js | 2 +- src/pages/Membership/Membership.js | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index c0f973c..07d9b55 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -96,7 +96,7 @@ export const CategoryComponent = observer((props) => { modalLoader.setLoading(true); try { const response =await store.category.update(idData, data); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 ? message.success("Berhasil Ubah Kategori") : message.error("Gagal Ubah Kategori"); } catch (e) { @@ -110,7 +110,7 @@ export const CategoryComponent = observer((props) => { modalLoader.setLoading(true); try { const response=await store.category.create(data); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 ? message.success("Berhasil Tambah Kategori") : message.error("Gagal Tambah Kategori"); } catch (e) { diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js index 1342ac8..e9ceec3 100644 --- a/src/component/CommissionComponent.js +++ b/src/component/CommissionComponent.js @@ -53,7 +53,7 @@ export const CommissionComponent = observer((props) => { modalLoader.setLoading(true); try { const response=await store.commission.update(idData, data); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 ? message.success("Berhasil Ubah Komisi") : message.error("Gagal Ubah Komisi"); } catch (e) { diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index a36c5b3..583f5f8 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -180,7 +180,7 @@ export const PartnerComponent = observer((props) => { try { const response = await store.partner.create(data); modalLoader.setLoading(false); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 ? message.success("Berhasil Tambah Partner") : message.error("Gagal Tambah Partner"); } catch (e) { diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 2e293f1..db78249 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -181,7 +181,7 @@ export const ProductComponent = observer((props) => { modalLoader.setLoading(true); try { const response=await store.product.create(data); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 ? message.success("Berhasil Tambah Produk") : message.error("Gagal Tambah Produk"); } catch (e) { diff --git a/src/component/SubcategoryComponent.js b/src/component/SubcategoryComponent.js index ca27993..8be86fb 100644 --- a/src/component/SubcategoryComponent.js +++ b/src/component/SubcategoryComponent.js @@ -68,7 +68,7 @@ export const SubcategoryComponent = observer((props) => { modalLoader.setLoading(true); try { const response=await store.subcategory.update(idData, data); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 ? message.success("Berhasil Ubah Data Sub Kategori") : message.error("Gagal Ubah Data Sub Kategori"); //await getData(); @@ -83,7 +83,7 @@ export const SubcategoryComponent = observer((props) => { modalLoader.setLoading(true); try { const response =await store.subcategory.create(data); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 ? message.success("Berhasil Tambah Sub Kategori") : message.error("Gagal Tambah Sub Kategori"); } catch (e) { diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index 40f1422..2a30c07 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -161,7 +161,7 @@ export const SupplierComponent = observer((props) => { try { modalLoader.setLoading(true); const response=await store.supplier.update(idData, data); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 ? message.success("Berhasil Ubah Data Supplier") : message.error("Gagal Ubah Data Supplier"); } catch (e) { @@ -177,7 +177,7 @@ export const SupplierComponent = observer((props) => { try { modalLoader.setLoading(true); const response=await store.supplier.create(data); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 ? message.success("Berhasil Tambah Supplier Baru") : message.error("Gagal Tambah Supplier Baru"); } catch (e) { diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 5d77d6b..23c2b32 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -208,7 +208,7 @@ export const DesktopLayout = observer(() => { } - title="Created" + title="Pembayaran" > {store.authentication.userData.role !== "Retail" && ( diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 8b443ca..e1d90b9 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -283,7 +283,7 @@ export const Membership = observer(() => { modalLoader.setLoading(true); try { const response=await store.membership.create(data); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 ? message.success("Berhasil Tambah Member Baru") : message.error("Gagal Tambah Member Baru"); await getData(); From db6287ca2c5a4f8faa5f89af1dced7350cf9f09c Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 23 Dec 2021 16:22:23 +0700 Subject: [PATCH 175/324] Reparing Menu --- src/component/CategoryComponent.js | 4 ++-- src/component/CommissionComponent.js | 2 +- src/component/PartnerComponent.js | 2 +- src/component/ProductComponent.js | 4 ++-- src/component/SubcategoryComponent.js | 4 ++-- src/component/SupplierComponent.js | 4 ++-- src/pages/Membership/DetailUser.js | 2 +- src/pages/Membership/Membership.js | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index 07d9b55..3a5610f 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -96,7 +96,7 @@ export const CategoryComponent = observer((props) => { modalLoader.setLoading(true); try { const response =await store.category.update(idData, data); - response?.body?.statusCode === 201 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Ubah Kategori") : message.error("Gagal Ubah Kategori"); } catch (e) { @@ -110,7 +110,7 @@ export const CategoryComponent = observer((props) => { modalLoader.setLoading(true); try { const response=await store.category.create(data); - response?.body?.statusCode === 201 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Tambah Kategori") : message.error("Gagal Tambah Kategori"); } catch (e) { diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js index e9ceec3..97c7e69 100644 --- a/src/component/CommissionComponent.js +++ b/src/component/CommissionComponent.js @@ -53,7 +53,7 @@ export const CommissionComponent = observer((props) => { modalLoader.setLoading(true); try { const response=await store.commission.update(idData, data); - response?.body?.statusCode === 201 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Ubah Komisi") : message.error("Gagal Ubah Komisi"); } catch (e) { diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 583f5f8..7ed747c 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -180,7 +180,7 @@ export const PartnerComponent = observer((props) => { try { const response = await store.partner.create(data); modalLoader.setLoading(false); - response?.body?.statusCode === 201 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Tambah Partner") : message.error("Gagal Tambah Partner"); } catch (e) { diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index db78249..a942cb0 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -167,7 +167,7 @@ export const ProductComponent = observer((props) => { modalLoader.setLoading(true); try { const response=await store.product.update(idData, data); - response?.body?.statusCode === 200 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Ubah Data Produk") : message.error("Gagal Ubah Data Produk"); } catch (e) { @@ -181,7 +181,7 @@ export const ProductComponent = observer((props) => { modalLoader.setLoading(true); try { const response=await store.product.create(data); - response?.body?.statusCode === 201 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Tambah Produk") : message.error("Gagal Tambah Produk"); } catch (e) { diff --git a/src/component/SubcategoryComponent.js b/src/component/SubcategoryComponent.js index 8be86fb..cec4f97 100644 --- a/src/component/SubcategoryComponent.js +++ b/src/component/SubcategoryComponent.js @@ -68,7 +68,7 @@ export const SubcategoryComponent = observer((props) => { modalLoader.setLoading(true); try { const response=await store.subcategory.update(idData, data); - response?.body?.statusCode === 201 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Ubah Data Sub Kategori") : message.error("Gagal Ubah Data Sub Kategori"); //await getData(); @@ -83,7 +83,7 @@ export const SubcategoryComponent = observer((props) => { modalLoader.setLoading(true); try { const response =await store.subcategory.create(data); - response?.body?.statusCode === 201 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Tambah Sub Kategori") : message.error("Gagal Tambah Sub Kategori"); } catch (e) { diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index 2a30c07..331f028 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -161,7 +161,7 @@ export const SupplierComponent = observer((props) => { try { modalLoader.setLoading(true); const response=await store.supplier.update(idData, data); - response?.body?.statusCode === 201 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Ubah Data Supplier") : message.error("Gagal Ubah Data Supplier"); } catch (e) { @@ -177,7 +177,7 @@ export const SupplierComponent = observer((props) => { try { modalLoader.setLoading(true); const response=await store.supplier.create(data); - response?.body?.statusCode === 201 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Tambah Supplier Baru") : message.error("Gagal Tambah Supplier Baru"); } catch (e) { diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 7f6f2a7..ad6fb29 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -57,7 +57,7 @@ export const DetailUser = observer(() => { const response = await store.membership.changeStatus(id, status); modalLoader.setLoading(false); - response?.body?.statusCode === 201 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success(`Success ${status2} Membership`) : message.error(`Failed ${status2} Membership`); await getData(); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index e1d90b9..cbfa175 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -283,7 +283,7 @@ export const Membership = observer(() => { modalLoader.setLoading(true); try { const response=await store.membership.create(data); - response?.body?.statusCode === 201 + response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Tambah Member Baru") : message.error("Gagal Tambah Member Baru"); await getData(); From 1a0a1756b0496d6b554238d73cc69ffacffd40b6 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 23 Dec 2021 16:30:03 +0700 Subject: [PATCH 176/324] chore: move action button into detail user --- src/pages/Membership/DetailUser.js | 299 +++++++++--------------- src/pages/Membership/Membership.js | 52 ++--- src/pages/Membership/MembershipModal.js | 190 +++++++-------- src/store/membership.js | 26 ++- 4 files changed, 246 insertions(+), 321 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index ad6fb29..9607112 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -1,24 +1,13 @@ -import React, { useContext, useEffect, useState } from "react"; -import { - Button, - Card, - Col, - Row, - Table, - Typography, - Tag, - Space, - message, -} from "antd"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { LINKS } from "../../routes/app"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; -import { FilterOutlined, DownloadOutlined } from "@ant-design/icons"; -import { format, parseISO } from "date-fns"; -import { ModalLoaderContext } from "../../utils/modal"; -import { useParams } from "react-router-dom"; -import { MembershipModal } from "./MembershipModal"; +import React, {useContext, useEffect, useState} from "react"; +import {Button, Card, Col, message, Row, Space, Table, Tag, Typography,} from "antd"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; +import {LINKS} from "../../routes/app"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {format, parseISO} from "date-fns"; +import {ModalLoaderContext} from "../../utils/modal"; +import {useParams} from "react-router-dom"; +import {MembershipModal} from "./MembershipModal"; const {Title, Text} = Typography; @@ -36,19 +25,24 @@ export const DetailUser = observer(() => { (async () => { modalLoader.setLoading(true); await getData(); - await Promise.allSettled([ - store.transaction.getDataHistoryTopUp(id), - store.membership.getDetail(id), - ]); modalLoader.setLoading(false); })(); + + return () => { + store.membership.dataDetail = {}; + store.transaction.dataHistoryTopUp = []; + }; }, []); const getData = async () => { - store.authentication.userData.role === "Admin" - ? await store.membership.getData() - : await store.membership.getDataBySuperior(); + const isAdmin = store.authentication.userData.role === "Admin"; + await Promise.allSettled([ + store.transaction.getDataHistoryTopUp(id), + store.membership.getDetail(id), + store.role.getData(isAdmin) + ]); }; + const changeStatus = async (id, isActive) => { const status = isActive ? "inactive" : "active"; const status2 = isActive ? "Inactivating" : "Activating"; @@ -69,46 +63,42 @@ export const DetailUser = observer(() => { const onSubmit = async (data) => { data.superior = true; + setConfirmLoading(true); + modalLoader.setLoading(true); + try { + let response; + if (initialData.isChangePassword) { + response = await store.membership.changePassword(initialData.id, data); + } else { + response = await store.membership.update(initialData.id, data); + } - if (initialData.id) { - setConfirmLoading(true); - modalLoader.setLoading(true); - try { - await store.membership.update(initialData.id, data); + setVisibleModal(false); + + if (response?.body?.statusCode === 200) { message.success( - initialData.isChangePassword - ? "Success Change Member Password" - : "Success Update Data Member" - ); - await getData(); - modalLoader.setLoading(false); - } catch (e) { - modalLoader.setLoading(true); + initialData.isChangePassword + ? "Success Change Member Password" + : "Success Update Data Member"); + } else { message.error( - initialData.isChangePassword - ? "Failed Update Member Password" - : "Failed Update Data Member" - ); - } - setConfirmLoading(false); - setVisibleModal(false); - } else { - setConfirmLoading(true); - modalLoader.setLoading(true); - try { - await store.membership.create(data); - message.success("Success Add New Member"); - await getData(); - } catch (e) { - console.log(e, "apa errornya"); - message.error("Failed Add Member"); + initialData.isChangePassword + ? "Failed Change Member Password" + : "Failed Update Data Member"); } + await getData(); + } catch (e) { modalLoader.setLoading(false); - setConfirmLoading(false); - setVisibleModal(false); - setInitialData({}); + message.error( + initialData.isChangePassword + ? "Failed Update Member Password" + : "Failed Update Data Member" + ); } + modalLoader.setLoading(false); + setConfirmLoading(false); }; + const columns = [ { title: "Amount", @@ -132,62 +122,12 @@ export const DetailUser = observer(() => { dataIndex: "isActive", key: "isActive", render: (text, record) => ( - - {record?.isActive === true ? " ACTIVE" : "INACTIVE"} - - ), - }, - { - title: "Action", - key: "action", - render: (text, record) => ( - - {/* {store.authentication.userData.role === "Admin" && */} - - {/* } */} - {/* {store.authentication.userData.role === "Admin" && */} - - {/* } - {store.authentication.userData.role === "Admin" && */} - - {/* } */} - + {store.membership.dataDetail.isActive === true ? " ACTIVE" : "INACTIVE"} + ), }, ]; @@ -206,6 +146,7 @@ export const DetailUser = observer(() => { name: Detail User, }, ]; + return (
@@ -224,7 +165,7 @@ export const DetailUser = observer(() => { Username
- {store.membership.dataDetail.superior?.username} + {store.membership.dataDetail.username}Role @@ -246,26 +187,64 @@ export const DetailUser = observer(() => { {store.membership.dataDetail.isActive === true - ? "Aktif" - : "Inaktif"} + ? "Aktif" + : "Inaktif"} - {/* - - - - Saldo - - - - - {store.transaction?.data.amount} - - - - */} + + Action User Detail + + {store.authentication.userData.role === "Admin" && + + } + {store.authentication.userData.role === "Admin" && + + } + {store.authentication.userData.role === "Admin" && + + } + + @@ -273,64 +252,16 @@ export const DetailUser = observer(() => { History Top Up - - {/* */}
- {/* { - form.resetFields(); - handleCancelTransaction(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form"); - handleSubmitTransaction(values); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} - > -
- - - `Rp. ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",") - } - parser={(value) => value.replace(/\Rp.\s?|(,*)/g, "")} - /> - - -
*/} { const history = useHistory(); const [form] = Form.useForm(); @@ -337,11 +319,11 @@ export const Membership = observer(() => { dataSource={store.membership.data} bordered pagination={{ - pageSize: store.membership.pageSize, - total: store.membership.total_data, - current: store.membership.page + 1, - showSizeChanger: true, - simple: false, + pageSize: store.membership.pageSize, + total: store.membership.totalData, + current: store.membership.page + 1, + showSizeChanger: true, + simple: false, }} onChange={async (page) => { let pageNumber = page.current; @@ -359,17 +341,17 @@ export const Membership = observer(() => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page) => { - store.membership.pageSize = page.pageSize; - store.membership.page = page.current - 1; - modalLoader.setLoading(true); - await getData(); - modalLoader.setLoading(false); - }, - pageSize: store.membership.pageSize, - total: store.membership.total_data, - current: store.membership.page + 1, - style: { marginBottom: "1rem", marginRight: "1rem" }, + onChange: async (page) => { + store.membership.pageSize = page.pageSize; + store.membership.page = page.current - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }, + pageSize: store.membership.pageSize, + total: store.membership.totalData, + current: store.membership.page + 1, + style: {marginBottom: "1rem", marginRight: "1rem"}, }} dataSource={store.membership.data} style={{ padding: 0 }} diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index 4a21904..f506db8 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -12,100 +12,100 @@ export const MembershipModal = ({ const {Option} = Select; const store = useStore(); - return ( - { - form.resetFields(); - onCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - let input = values; - if (initialData.id) - input.username = initialData.username; + return ( + { + form.resetFields(); + onCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + let input = values; + if (initialData.id) + input.username = initialData.username; - onCreate(input); - form.resetFields(); - }) - .catch((info) => { - console.log("Validate Failed:", info); - }); - }} - > -
- {((initialData.id && !initialData.isChangePassword) || - !initialData.id) && ( - - - - )} - {!initialData.id && ( - - - - )} - {((initialData.id && initialData.isChangePassword) || - !initialData.id) && ( - - - - )} - {((initialData.id && !initialData.isChangePassword) || - !initialData.id) && ( - - - - )} - {((initialData.id && !initialData.isChangePassword) || - !initialData.id) && ( - - - - )} - -
- ); + onCreate(input); + form.resetFields(); + }) + .catch((info) => { + console.log("Validate Failed:", info); + }); + }} + > +
+ {((initialData.id && !initialData.isChangePassword) || + !initialData.id) && ( + + + + )} + {!initialData.id && ( + + + + )} + {((initialData.id && initialData.isChangePassword) || + !initialData.id) && ( + + + + )} + {((initialData.id && !initialData.isChangePassword) || + !initialData.id) && ( + + + + )} + {((initialData.id && !initialData.isChangePassword) || + !initialData.id) && ( + + + + )} + +
+ ); }; diff --git a/src/store/membership.js b/src/store/membership.js index 01bdd34..5fb1f9d 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -5,8 +5,9 @@ export class Membership { page = 0; pageSize = 10 data = []; - total_data = 0 - dataDetail=[] + totalData = 0; + + dataDetail = {}; constructor(ctx) { this.ctx = ctx; @@ -19,22 +20,23 @@ export class Membership { this.data = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; - item.phone_number = item?.user_detail?.phone_number;item.roleId = item?.roles.id; + item.phone_number = item?.user_detail?.phone_number; + item.roleId = item?.roles.id; item.roleName = item?.roles.name; return item }) ?? [] - this.total_data = response?.body?.count ?? 0 + this.totalData = response?.body?.count ?? 0 } catch (e) { console.error(e); } } + async getDetail(id) { try { const response = await http.get(`/users/`+id); console.log(response,'Data Detail') this.dataDetail = response.body.data - this.total_data = response?.body?.count ?? 0 } catch (e) { console.error(e); } @@ -46,12 +48,13 @@ export class Membership { this.data = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; - item.phone_number = item?.user_detail?.phone_number;item.roleId = item?.roles.id; + item.phone_number = item?.user_detail?.phone_number; + item.roleId = item?.roles.id; item.roleName = item?.roles?.name; return item }) ?? [] - this.total_data = response?.body?.count ?? 0 + this.totalData = response?.body?.count ?? 0 } catch (e) { console.error(e); } @@ -75,6 +78,15 @@ export class Membership { } } + async changePassword(id, data) { + try { + const response = await http.put('/users/change-password/' + id).send(data); + return response; + } catch (e) { + console.error(e); + } + } + async delete(id) { try { const response = await http.del('/users/' + id); From 78d00da35d1654e54db09e6410cd75ad47802f72 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 23 Dec 2021 16:35:56 +0700 Subject: [PATCH 177/324] chore: remove ununsed code to update user --- src/pages/Membership/MembershipModal.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index f506db8..169850f 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -32,11 +32,7 @@ export const MembershipModal = ({ form .validateFields() .then((values) => { - let input = values; - if (initialData.id) - input.username = initialData.username; - - onCreate(input); + onCreate(values); form.resetFields(); }) .catch((info) => { From 3be7561c3c51fcb5ef82dbc14525347e6bdeac06 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 23 Dec 2021 16:48:52 +0700 Subject: [PATCH 178/324] chore: handler errors upload excel product --- src/pages/Product/Product.js | 38 +++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index ee4fd07..8b05cc7 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -72,17 +72,21 @@ export const Product = observer(() => { const uploadHandler = async (args) => { const file = args.file; - const responseUpload = await store.product.uploadExcel(file); + try { + const responseUpload = await store.product.uploadExcel(file); + + if (responseUpload.status === 201) { + message.success("Success upload excel!"); + } else { + message.error("Failed upload excel!"); + } - if (responseUpload.status === 201) { - message.success("Success upload excel!"); - } else { - message.error("Failed upload excel!"); setLoading(false); + const responseUploadProduct = await handleUploadProduct(responseUpload); + } catch (e) { + setLoading(false); + message.error("Failed upload excel!"); } - - const responseUploadProduct = await handleUploadProduct(responseUpload); - setLoading(false); }; const handleChange = (info) => { @@ -94,15 +98,21 @@ export const Product = observer(() => { }; const handleUploadProduct = async (data) => { - const response = await store.product.uploadProduct({fileName: data.body.filename}); + try { + const response = await store.product.uploadProduct({fileName: data.body.filename}); - if (response.status === 201) { - message.success("Success Create Product by Excel!"); - } else { - message.error("Failed Create Product by Excel!"); + if (response.status === 201) { + message.success("Success Create Product by Excel!"); + } else { + message.error("Failed Create Product by Excel!"); + } setLoading(false); + await store.product.getData(); + return response; + } catch (e) { + setLoading(false); + message.error("Failed Create Product by Excel!"); } - return response; } const loadingState = ( From 4d40a6f475ed2b310bd460312b2fe2fb8517c4ef Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 23 Dec 2021 16:50:34 +0700 Subject: [PATCH 179/324] feat: force reload if logout --- src/store/authentication.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/store/authentication.js b/src/store/authentication.js index 0edda9e..2d2ee4d 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -63,5 +63,6 @@ export class Authentication { TokenUtil.clearAccessToken(); TokenUtil.persistToken(); this.isLoggedIn = false; + window.location.reload(); } } From bd2696efca820114a59a363898178bdf705335f3 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 23 Dec 2021 17:05:03 +0700 Subject: [PATCH 180/324] Reparing Menu --- src/component/CategoryComponent.js | 26 ----- src/component/ProductComponent.js | 25 ++--- src/pages/Membership/DetailUser.js | 2 +- src/pages/Membership/Membership.js | 153 ++++++++++------------------- 4 files changed, 61 insertions(+), 145 deletions(-) diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index 3a5610f..ffeda10 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -34,32 +34,6 @@ export const CategoryComponent = observer((props) => { dataIndex: "name", key: "name", }, - // { - // title: "Gangguan", - // dataIndex: "status", - // key: "status", - // render: (text, record) => ( - // - // {capitalize(record?.status)} - // - // ), - // }, - // { - // title: "Tersedia", - // dataIndex: "tersedia", - // key: "tersedia", - // render: (text, record) => ( - // - // {record?.status === "ACTIVE" ? " Ya" : "Tidak"} - // - // ), - // }, { title: "Action", key: "action", diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index a942cb0..5af5ac9 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -79,23 +79,16 @@ export const ProductComponent = observer((props) => { currency: "IDR", }).format(text), }, - // { - // title: "Gangguan", - // dataIndex: "status", - // key: "status", - // render: (text, record) => ( - // - // {capitalize(record?.status)} - // - // ), - // }, { title: "Supplier", - dataIndex: "supplier", - key: "supplier", + dataIndex: "supplier_name", + key: "supplier_name", + + }, + { + title: "Sub Category", + dataIndex: "sub_categories_name", + key: "sub_categories_name", }, { title: "Tersedia", @@ -128,6 +121,8 @@ export const ProductComponent = observer((props) => { }, ]; if (store.authentication.userData.role !== "Admin") columns.pop(); + //if (store.authentication.userData.role !== "Admin") columns.shift(); + if (store.authentication.userData.role !== "Admin") delete columns[4]; const deleteData = async (id) => { try { console.log(id); diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 9607112..c0afcee 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -143,7 +143,7 @@ export const DetailUser = observer(() => { }, { route: LINKS.USER_DETAIL, - name: Detail User, + name: Detail Anggota, }, ]; diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index e0db3b2..1b8b73e 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,13 +1,27 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, Divider, Form, InputNumber, List, message, Modal, Row, Space, Table, Tag} from "antd"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {DownloadOutlined, PlusSquareOutlined} from "@ant-design/icons"; -import {MembershipModal} from "./MembershipModal"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {LINKS} from "../../routes/app"; -import {useHistory} from "react-router-dom"; -import {ModalLoaderContext} from "../../utils/modal"; +import React, { useContext, useEffect, useState } from "react"; +import { + Button, + Card, + Col, + Divider, + Form, + InputNumber, + List, + message, + Modal, + Row, + Space, + Table, + Tag, +} from "antd"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { DownloadOutlined, PlusSquareOutlined } from "@ant-design/icons"; +import { MembershipModal } from "./MembershipModal"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { LINKS } from "../../routes/app"; +import { useHistory } from "react-router-dom"; +import { ModalLoaderContext } from "../../utils/modal"; export const Membership = observer(() => { const history = useHistory(); @@ -129,75 +143,11 @@ export const Membership = observer(() => { currency: "IDR", }).format(text), }, - { - title: "Status", - dataIndex: "isActive", - key: "isActive", - render: (text, record) => ( - - {record?.isActive === true ? " ACTIVE" : "INACTIVE"} - - ), - }, { title: "Action", key: "action", render: (text, record) => ( - {/* {store.authentication.userData.role === "Admin" && */} - - {/* } */} - {/* */} - {/* {store.authentication.userData.role === "Admin" && */} - - {/* } - {store.authentication.userData.role === "Admin" && */} - - {/* } */} - {/* {store.authentication.userData.role === "Admin" && ( */} - - {/* ) */} - {/* } */} + ), }, @@ -264,7 +211,7 @@ export const Membership = observer(() => { setConfirmLoading(true); modalLoader.setLoading(true); try { - const response=await store.membership.create(data); + const response = await store.membership.create(data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success("Berhasil Tambah Member Baru") : message.error("Gagal Tambah Member Baru"); @@ -319,11 +266,11 @@ export const Membership = observer(() => { dataSource={store.membership.data} bordered pagination={{ - pageSize: store.membership.pageSize, - total: store.membership.totalData, - current: store.membership.page + 1, - showSizeChanger: true, - simple: false, + pageSize: store.membership.pageSize, + total: store.membership.totalData, + current: store.membership.page + 1, + showSizeChanger: true, + simple: false, }} onChange={async (page) => { let pageNumber = page.current; @@ -341,17 +288,17 @@ export const Membership = observer(() => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page) => { - store.membership.pageSize = page.pageSize; - store.membership.page = page.current - 1; - modalLoader.setLoading(true); - await getData(); - modalLoader.setLoading(false); - }, - pageSize: store.membership.pageSize, - total: store.membership.totalData, - current: store.membership.page + 1, - style: {marginBottom: "1rem", marginRight: "1rem"}, + onChange: async (page) => { + store.membership.pageSize = page.pageSize; + store.membership.page = page.current - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }, + pageSize: store.membership.pageSize, + total: store.membership.totalData, + current: store.membership.page + 1, + style: { marginBottom: "1rem", marginRight: "1rem" }, }} dataSource={store.membership.data} style={{ padding: 0 }} From 2349912c7376f4e46caa64ed7775d6a2144e324e Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 23 Dec 2021 17:06:49 +0700 Subject: [PATCH 181/324] Repair Menu --- src/component/ProductComponent.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 5af5ac9..0087f07 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -121,7 +121,6 @@ export const ProductComponent = observer((props) => { }, ]; if (store.authentication.userData.role !== "Admin") columns.pop(); - //if (store.authentication.userData.role !== "Admin") columns.shift(); if (store.authentication.userData.role !== "Admin") delete columns[4]; const deleteData = async (id) => { try { From 71e6f00fcd8da6f140368b376665fd677e331da7 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 23 Dec 2021 17:46:22 +0700 Subject: [PATCH 182/324] Repair Menu --- src/pages/Transaction/Product.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 2ac762c..dffb907 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -95,10 +95,10 @@ export const Product = observer(() => { Produk & Nominal
- + /> */} {store.transaction.data.length != 0 && ( From 5229359425dad31416ded99a7d00f6487510813b Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 23 Dec 2021 19:18:27 +0700 Subject: [PATCH 183/324] Repair Menu --- src/pages/Membership/Membership.js | 27 +++++++++++++++++++++++++-- src/store/product.js | 2 +- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 1b8b73e..fb81a4b 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -332,6 +332,29 @@ export const Membership = observer(() => { Saldo System : {item.coa.amount} {" "}
+ +

} @@ -343,7 +366,7 @@ export const Membership = observer(() => { margin: 0, }} > - + */}

diff --git a/src/store/product.js b/src/store/product.js index 1ccd96a..65b51f2 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -36,7 +36,7 @@ export class Product { async getData() { try { const response = await http.get(`/product/all?supplier=${this.filterSupplier}&sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); - console.log(response) + //console.log(response) this.data = response.body.data.map((item, idx) => { item.key = idx; return item From 884a23ae80754279eac5ec002be8f97b3aca14b0 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 23 Dec 2021 19:32:29 +0700 Subject: [PATCH 184/324] Repair Menu --- src/pages/Config/Partner.js | 2 +- src/pages/Payback/Payback.js | 2 +- src/pages/Payback/PaybackCreated.js | 2 +- src/pages/Product/Category.js | 2 +- src/pages/Product/Product.js | 2 +- src/pages/Product/ProductDetail.js | 4 ++-- src/pages/Product/Subcategory.js | 2 +- src/pages/Profile/Profile.js | 2 +- src/pages/Transaction/Transaction.js | 2 +- src/store/product.js | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/pages/Config/Partner.js b/src/pages/Config/Partner.js index d7226e9..c43e6b6 100644 --- a/src/pages/Config/Partner.js +++ b/src/pages/Config/Partner.js @@ -40,7 +40,7 @@ export const Partner = observer(() => { }, { route: LINKS.PARTNER, - name: Partner, + name: Rekanan, }, ]; diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 79ec6c0..80c0c48 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -167,7 +167,7 @@ export const Payback = observer(() => { }, { route: LINKS.PAYBACK, - name: Payback Confirmation, + name: Konfirmasi Pembayaran, }, ]; diff --git a/src/pages/Payback/PaybackCreated.js b/src/pages/Payback/PaybackCreated.js index ee53c93..8420b1a 100644 --- a/src/pages/Payback/PaybackCreated.js +++ b/src/pages/Payback/PaybackCreated.js @@ -84,7 +84,7 @@ export const PaybackCreated = observer(() => { }, { route: LINKS.PAYBACK_CREATED, - name: Payback Created, + name: Buat Pembayaran, }, ]; diff --git a/src/pages/Product/Category.js b/src/pages/Product/Category.js index c6142ec..c2dd230 100644 --- a/src/pages/Product/Category.js +++ b/src/pages/Product/Category.js @@ -41,7 +41,7 @@ export const Category = observer(() => { }, { route: LINKS.CATEGORY, - name: Category, + name: Kategori, }, ]; diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 8b05cc7..3f87bcd 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -46,7 +46,7 @@ export const Product = observer(() => { }, { route: LINKS.PRODUCT, - name: Product, + name: Produk, }, ]; diff --git a/src/pages/Product/ProductDetail.js b/src/pages/Product/ProductDetail.js index c04179e..cbe2111 100644 --- a/src/pages/Product/ProductDetail.js +++ b/src/pages/Product/ProductDetail.js @@ -23,11 +23,11 @@ export const ProductDetail = observer(() => { }, { route: LINKS.PRODUCT, - name: Product, + name: Produk, }, { route: LINKS.PRODUCT_DETAIL, - name: Product Detail, + name: Detail Produk, }, ]; diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js index a2c0292..08e26cb 100644 --- a/src/pages/Product/Subcategory.js +++ b/src/pages/Product/Subcategory.js @@ -45,7 +45,7 @@ export const Subcategory = observer(() => { }, { route: LINKS.SUBCATEGORY, - name: Sub Category, + name: Sub Kategori, }, ]; diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 8147a9f..def501f 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -21,7 +21,7 @@ export const Profile = observer(() => { }, { route: LINKS.PROFILE, - name: Profile, + name: Profil, }, ]; diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js index 4d7a9cc..a71111e 100644 --- a/src/pages/Transaction/Transaction.js +++ b/src/pages/Transaction/Transaction.js @@ -50,7 +50,7 @@ export const Transaction = observer(() => { }, { route: LINKS.TRANSACTION, - name: Transaction, + name: Transaksi, }, ]; diff --git a/src/store/product.js b/src/store/product.js index 65b51f2..1ccd96a 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -36,7 +36,7 @@ export class Product { async getData() { try { const response = await http.get(`/product/all?supplier=${this.filterSupplier}&sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); - //console.log(response) + console.log(response) this.data = response.body.data.map((item, idx) => { item.key = idx; return item From 52a75ff081226c487b0e7f0bb977b936c2d68026 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 23 Dec 2021 21:31:37 +0700 Subject: [PATCH 185/324] feat: move upload into modal --- src/pages/Product/Product.js | 175 +++++++++++++++++++++++++++-------- 1 file changed, 134 insertions(+), 41 deletions(-) diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 3f87bcd..6e77e97 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,6 +1,6 @@ import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, Input, message, Row, Upload} from "antd"; -import {FilterOutlined, LoadingOutlined, UploadOutlined,} from "@ant-design/icons"; +import {Button, Card, Col, Form, Input, message, Modal, Row, Select, Upload} from "antd"; +import {FilterOutlined, PlusOutlined, UploadOutlined,} from "@ant-design/icons"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {useStore} from "../../utils/useStore"; import {observer} from "mobx-react-lite"; @@ -9,15 +9,22 @@ import {LINKS} from "../../routes/app"; import {ModalLoaderContext} from "../../utils/modal"; const {Search} = Input; +const {Option} = Select; export const Product = observer(() => { const store = useStore(); const modalLoader = useContext(ModalLoaderContext); const [loading, setLoading] = useState(false); + const [visibleModalUpload, setVisibleModalUpload] = useState(false); + const [excel, setExcel] = useState(""); + const [fileList, setFileList] = useState([]); + const [form] = Form.useForm(); useEffect(() => { const init = async () => { try { + store.supplier.page = 0; + store.supplier.pageSize = 1000; modalLoader.setLoading(true); await Promise.allSettled([ store.supplier.getData(), @@ -37,6 +44,10 @@ export const Product = observer(() => { }; init(); + + return () => { + store.supplier.pageSize = 10; + }; }, []); const routeData = [ @@ -73,16 +84,21 @@ export const Product = observer(() => { const uploadHandler = async (args) => { const file = args.file; try { - const responseUpload = await store.product.uploadExcel(file); + const response = await store.product.uploadExcel(file); - if (responseUpload.status === 201) { + if (response.status === 201) { message.success("Success upload excel!"); } else { message.error("Failed upload excel!"); } - setLoading(false); - const responseUploadProduct = await handleUploadProduct(responseUpload); + setFileList([{ + uid: '-1', + name: response.body.filename, + status: 'done', + url: '', + }]); + setExcel(response.body.filename); } catch (e) { setLoading(false); message.error("Failed upload excel!"); @@ -99,27 +115,40 @@ export const Product = observer(() => { const handleUploadProduct = async (data) => { try { - const response = await store.product.uploadProduct({fileName: data.body.filename}); + const response = await store.product.uploadProduct(data); if (response.status === 201) { message.success("Success Create Product by Excel!"); } else { message.error("Failed Create Product by Excel!"); } - setLoading(false); - await store.product.getData(); return response; } catch (e) { setLoading(false); message.error("Failed Create Product by Excel!"); } - } + }; - const loadingState = ( -
- {loading ? : null} -
- ); + const handleCancel = () => { + form.resetFields(); + setFileList([]); + setExcel(""); + setVisibleModalUpload(false); + }; + + const handleSubmit = async (data) => { + const request = { + fileName: excel, + supplierCode: data.supplierCode + }; + const responseUploadProduct = await handleUploadProduct(request); + + await store.product.getData(); + setLoading(false); + setFileList([]); + setExcel(""); + setVisibleModalUpload(false); + }; return (
@@ -162,35 +191,99 @@ export const Product = observer(() => { textAlign: "right", }} > - beforeUpload(file)} - customRequest={(args) => uploadHandler(args)} - onRemove={(file) => { - setLoading(false); + - - {loadingState} + Tambah Produk +
- - - - )} - - - + + + + )} + + + + { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmit(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + beforeUpload(file)} + customRequest={(args) => uploadHandler(args)} + onRemove={(file) => { + setLoading(false); + setFileList([]); + setExcel(""); + }} + > +
+ +
+
+
+ + + + +
+ ); }); From 097782d791d00401a7a8cd8a01c310975f38ea68 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 23 Dec 2021 21:51:37 +0700 Subject: [PATCH 186/324] fix: role button new product admin --- src/pages/Product/Product.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 6e77e97..7cdd86e 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -154,7 +154,6 @@ export const Product = observer(() => {
- {store.authentication.userData.role !== "Admin" && (
@@ -184,7 +183,7 @@ export const Product = observer(() => { }} /> */} -
{ > Tambah Produk -
+ } - )} From 98e7827247bf7d0e13cb4d017590e15c136f0c43 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 23 Dec 2021 23:16:47 +0700 Subject: [PATCH 187/324] feat: add separated column in date and add pagination on price history on product detail --- src/component/ProductComponent.js | 21 +++---- src/pages/Product/ProductDetail.js | 96 +++++++++++++++--------------- src/store/product.js | 25 ++++---- 3 files changed, 69 insertions(+), 73 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 0087f07..293fffa 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -1,4 +1,4 @@ -import React, { useContext, useState } from "react"; +import React, {useContext, useState} from "react"; import { Button, Col, @@ -15,19 +15,19 @@ import { Tag, Typography, } from "antd"; -import { observer } from "mobx-react-lite"; -import { ExclamationCircleOutlined } from "@ant-design/icons"; -import { useHistory } from "react-router-dom"; -import { useStore } from "../utils/useStore"; -import { LINKS } from "../routes/app"; -import { ModalLoaderContext } from "../utils/modal"; +import {observer} from "mobx-react-lite"; +import {ExclamationCircleOutlined} from "@ant-design/icons"; +import {useHistory} from "react-router-dom"; +import {useStore} from "../utils/useStore"; +import {LINKS} from "../routes/app"; +import {ModalLoaderContext} from "../utils/modal"; -const { Title, Text } = Typography; +const {Title, Text} = Typography; export const ProductComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const { Option } = Select; + const {Option} = Select; const history = useHistory(); const [idData, setIdData] = useState(""); const [filterSupplier, setFilterSupplier] = useState([]); @@ -109,10 +109,7 @@ export const ProductComponent = observer((props) => { render: (text, record) => ( - {store.product.dataDetailProduct.code} + {store.product?.dataDetailProduct?.code}Nama Produk- {store.product.dataDetailProduct.name} - - - Harga Beli - - - - {new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.product.dataDetailProduct.basePrice)} - - - - Harga Jual - - - - {new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.product.dataDetailProduct.price)} - + {store.product?.dataDetailProduct?.name}Supplier- {store.product.dataDetailProduct.supplier.name} + {store.product?.dataDetailProduct?.supplier?.name}Status- {store.product.dataDetailProduct.status} + {store.product?.dataDetailProduct?.status} @@ -174,9 +157,24 @@ export const ProductDetail = observer(() => { Filter */}
{ + let pageNumber = page.current; + store.product.pageSizePriceHistory = page.pageSize; + store.product.pagePriceHistory = pageNumber - 1; + modalLoader.setLoading(true); + await store.product.getPriceHistoryByProduct(id); + modalLoader.setLoading(false); + }} /> diff --git a/src/store/product.js b/src/store/product.js index 1ccd96a..36a8295 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -13,7 +13,7 @@ export class Product { uploadBtnProduct = false; pageCategories = 0; - pageSizeCategories = 10 + pageSizeCategories = 100; dataCategories = []; total_dataCategories = 0; @@ -22,11 +22,13 @@ export class Product { dataSubCategories = []; total_dataSubCategories = 0; filterCategory = null; - dataDetail=[] - dataDetailProduct=[] - pageGetDetail=0 - supplier=null + dataPriceHistory = []; + totalDataPriceHistory = 0; + pagePriceHistory = 0; + pageSizePriceHistory = 10 + + dataDetailProduct = {}; constructor(ctx) { this.ctx = ctx; @@ -72,22 +74,21 @@ export class Product { console.error(e); } } - async getDetail(id) { + + async getPriceHistoryByProduct(id) { try { - const response = await http.get(`/product/price-history/${id}?page=${this.pageGetDetail}&supplier=${this.supplier}`); - //console.log(response,' Detail') - this.dataDetail = response.body.data - this.total_data = response?.body?.count ?? 0 + const response = await http.get(`/product/price-history/${id}?page=${this.pagePriceHistory}&pageSize${this.pageSizePriceHistory}`); + this.dataPriceHistory = response.body.data + this.totalDataPriceHistory = response?.body?.count ?? 0 } catch (e) { console.error(e); } } + async getDetailProduct(id) { try { const response = await http.get(`/product/${id}`); - //console.log(response,' Detail Product') this.dataDetailProduct = response.body.data - this.total_data = response?.body?.count ?? 0 } catch (e) { console.error(e); } From 258dd4af34e4679b7f885484f94a59f14cdaebc7 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Thu, 23 Dec 2021 23:21:12 +0700 Subject: [PATCH 188/324] feat: link detail url --- src/pages/Product/ProductDetail.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/Product/ProductDetail.js b/src/pages/Product/ProductDetail.js index a62d047..e30aa91 100644 --- a/src/pages/Product/ProductDetail.js +++ b/src/pages/Product/ProductDetail.js @@ -25,8 +25,8 @@ export const ProductDetail = observer(() => { name: Produk, }, { - route: LINKS.PRODUCT_DETAIL, - name: Detail Produk, + route: LINKS.PRODUCT_DETAIL.replace(':id', `${id}`), + name: Detail Produk, }, ]; From 7c38f65ba973772583fb86524d8766450191e0a6 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 24 Dec 2021 00:54:29 +0700 Subject: [PATCH 189/324] feat: ajust detail user --- src/pages/Membership/DetailUser.js | 108 +++++++++++++---------------- 1 file changed, 47 insertions(+), 61 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index c0afcee..a7b5249 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -1,5 +1,5 @@ import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, message, Row, Space, Table, Tag, Typography,} from "antd"; +import {Button, Card, Col, message, Row, Space, Table, Typography,} from "antd"; import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {LINKS} from "../../routes/app"; import {useStore} from "../../utils/useStore"; @@ -104,6 +104,11 @@ export const DetailUser = observer(() => { title: "Amount", dataIndex: "amount", key: "amount", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { title: "Transaction Date", @@ -117,19 +122,6 @@ export const DetailUser = observer(() => { ); }, }, - { - title: "Status", - dataIndex: "isActive", - key: "isActive", - render: (text, record) => ( - - {store.membership.dataDetail.isActive === true ? " ACTIVE" : "INACTIVE"} - - ), - }, ]; const routeData = [ @@ -142,8 +134,8 @@ export const DetailUser = observer(() => { name: Keanggotaan, }, { - route: LINKS.USER_DETAIL, - name: Detail Anggota, + route: LINKS.USER_DETAIL.replace(":id", id), + name: Detail User, }, ]; @@ -194,56 +186,50 @@ export const DetailUser = observer(() => { - Action User Detail - Action User Detail} + {store.authentication.userData.role === "Admin" && - {store.authentication.userData.role === "Admin" && - - } - {store.authentication.userData.role === "Admin" && - - } - {store.authentication.userData.role === "Admin" && - - } - + + + + } From c68d8105e32709725eff85bb66d250c164ce4fbf Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 24 Dec 2021 00:57:42 +0700 Subject: [PATCH 190/324] feat: remove extra whitespace --- src/pages/Membership/DetailUser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index a7b5249..1301340 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -117,7 +117,7 @@ export const DetailUser = observer(() => { render: (text, record) => { return ( - {format(parseISO(record.transaction_date), "dd MMMM yyyy ")} + {format(parseISO(record.transaction_date), "dd MMMM yyyy")} ); }, From 5ac16feb6bac8d959e7cb7132af8de477d38fa86 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 24 Dec 2021 01:29:59 +0700 Subject: [PATCH 191/324] fix: format date on profile --- src/pages/Profile/Profile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index def501f..c346341 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -60,7 +60,7 @@ export const Profile = observer(() => { key: 'created_at', render: (text, record) => { return ( - {format(parseISO(record.created_at), 'mm:HH dd MM YYYY')} + {format(parseISO(record.created_at), 'mm:HH dd-MM-yyyy')} ) }, }, From fbad2d68e870f8dbdee3077918099fe22a090de4 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 24 Dec 2021 01:44:55 +0700 Subject: [PATCH 192/324] feat: add phone number on buy product --- src/pages/Transaction/Product.js | 138 ++++++++++++++++++------------- 1 file changed, 80 insertions(+), 58 deletions(-) diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index dffb907..25e68a9 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -1,16 +1,17 @@ -import React, { useContext, useEffect } from "react"; -import { useStore } from "../../utils/useStore"; -import { Button, Card, Col, Input, message, Modal, Row, Select } from "antd"; -import { observer } from "mobx-react-lite"; -import { MoneyCollectOutlined } from "@ant-design/icons"; -import { ModalLoaderContext } from "../../utils/modal"; +import React, {useContext, useEffect, useState} from "react"; +import {useStore} from "../../utils/useStore"; +import {Card, Col, Form, Input, message, Modal, Row, Select} from "antd"; +import {observer} from "mobx-react-lite"; +import {ModalLoaderContext} from "../../utils/modal"; -const { Search } = Input; -const { Option } = Select; +const {Search} = Input; +const {Option} = Select; export const Product = observer(() => { const store = useStore(); const modalLoader = useContext(ModalLoaderContext); + const [form] = Form.useForm(); + const [visibleModalBuy, setVisibleModalBuy] = useState(false); useEffect(() => { const init = async () => { @@ -41,11 +42,12 @@ export const Product = observer(() => { modalLoader.setLoading(false); }; - const handleBuyProduct = async (data) => { + const handleBuyProduct = async (data, productCode) => { modalLoader.setLoading(true); try { const response = await store.transaction.buyProduct({ - productCode: data, + ...data, + productCode: productCode, }); if (response.status === 201) { message.success("Berhasil Beli Produk"); @@ -60,38 +62,44 @@ export const Product = observer(() => { console.log(e, "apa errornya"); message.error("Gagal Beli Product"); } + setVisibleModalBuy(false); modalLoader.setLoading(false); }; + const handleCancel = () => { + form.resetFields(); + setVisibleModalBuy(false); + }; + return ( -
- - +
+ + Sub Category - - -
- handleChangeSubcategory(val)} + style={{marginBottom: "10px", width: "100%"}} + value={store.transaction.filterSubCategory} + > + {store.transaction.dataSubCategories.map((item, index) => ( + + ))} + + + + + - {store.transaction.dataSubCategories.map((item, index) => ( - - ))} - - - - - Produk & Nominal @@ -107,19 +115,7 @@ export const Product = observer(() => { { - Modal.confirm({ - title: `Are you sure buy ${item.product_name}?`, - icon: , - okText: "Confirm", - cancelText: "Cancel", - okType: "primary", - onOk() { - handleBuyProduct(item.product_code); - }, - onCancel() { - console.log("Cancel"); - }, - }); + setVisibleModalBuy(true) }} hoverable style={{ @@ -130,26 +126,52 @@ export const Product = observer(() => { marginBottom: 10, }} > - {item.product_name} -
- + {item.product_name} +
+ {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(item?.price)}
+ + { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleBuyProduct(values, item.product_code); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > +
+ + + + +
))} )} - {/* {store.transaction.data.length !== 0 && ( - - - - )} */} ); }); From c371a727b100305fa60f29459352dd145952c72a Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 24 Dec 2021 10:48:06 +0700 Subject: [PATCH 193/324] Repair Menu --- src/component/CategoryComponent.js | 55 +++++--- src/component/CommissionComponent.js | 26 ++-- src/component/PartnerComponent.js | 8 +- src/component/ProductComponent.js | 39 +++--- src/component/SubcategoryComponent.js | 56 +++++--- src/component/SupplierComponent.js | 57 +++++--- src/component/TopupsaldoModal.js | 6 +- src/pages/Membership/Membership.js | 12 +- src/pages/Payback/Payback.js | 12 +- src/pages/Payback/PaybackModal.js | 182 +++++++++++++------------- src/pages/Transaction/Product.js | 4 +- src/store/category.js | 1 + src/store/product.js | 2 +- 13 files changed, 267 insertions(+), 193 deletions(-) diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index ffeda10..42adce7 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -1,10 +1,19 @@ -import React, {useContext, useState} from "react"; -import {Button, Form, Input, message, Modal, Select, Space, Table,} from "antd"; -import {observer} from "mobx-react-lite"; -import {useHistory} from "react-router-dom"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; -import {ModalLoaderContext} from "../utils/modal"; +import React, { useContext, useState } from "react"; +import { + Button, + Form, + Input, + message, + Modal, + Select, + Space, + Table, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { useHistory } from "react-router-dom"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; +import { ModalLoaderContext } from "../utils/modal"; export const CategoryComponent = observer((props) => { const store = useStore(); @@ -69,12 +78,16 @@ export const CategoryComponent = observer((props) => { if (idData !== "") { modalLoader.setLoading(true); try { - const response =await store.category.update(idData, data); + const response = await store.category.update(idData, data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success("Berhasil Ubah Kategori") - : message.error("Gagal Ubah Kategori"); + ? message.success( + response?.body?.message || "Berhasil Ubah Data Kategori" + ) + : message.error( + response?.body?.message || "Gagal Ubah Data Kategori" + ); } catch (e) { - message.error("Gagal Ubah Data Kategori"); + message.error(e.response?.body?.message || "Gagal Ubah Data Kategori"); } modalLoader.setLoading(false); store.category.visibleModalCategory = false; @@ -83,13 +96,15 @@ export const CategoryComponent = observer((props) => { } else { modalLoader.setLoading(true); try { - const response=await store.category.create(data); + const response = await store.category.create(data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success("Berhasil Tambah Kategori") - : message.error("Gagal Tambah Kategori"); + ? message.success( + response?.body?.message || "Berhasil Tambah Kategori" + ) + : message.error(response?.body?.message || "Gagal Tambah Kategori"); } catch (e) { console.log(e, "apa errornya"); - message.error("Gagal Tambah Kategori"); + message.error(e.response?.body?.message || "Gagal Tambah Kategori"); } modalLoader.setLoading(false); store.category.visibleModalCategory = false; @@ -101,7 +116,7 @@ export const CategoryComponent = observer((props) => { return (
{ - + - + diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js index 97c7e69..f63f249 100644 --- a/src/component/CommissionComponent.js +++ b/src/component/CommissionComponent.js @@ -1,9 +1,9 @@ -import React, {useContext, useState} from "react"; -import {Button, Form, Input, message, Modal, Space, Table,} from "antd"; -import {observer} from "mobx-react-lite"; -import {useHistory} from "react-router-dom"; -import {useStore} from "../utils/useStore"; -import {ModalLoaderContext} from "../utils/modal"; +import React, { useContext, useState } from "react"; +import { Button, Form, Input, message, Modal, Space, Table } from "antd"; +import { observer } from "mobx-react-lite"; +import { useHistory } from "react-router-dom"; +import { useStore } from "../utils/useStore"; +import { ModalLoaderContext } from "../utils/modal"; export const CommissionComponent = observer((props) => { const store = useStore(); @@ -52,12 +52,12 @@ export const CommissionComponent = observer((props) => { const handleSubmit = async (data) => { modalLoader.setLoading(true); try { - const response=await store.commission.update(idData, data); + const response = await store.commission.update(idData, data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success("Berhasil Ubah Komisi") - : message.error("Gagal Ubah Komisi"); + ? message.success(response?.body?.message || "Berhasil Ubah Komisi") + : message.error(response?.body?.message || "Gagal Ubah Komisi"); } catch (e) { - message.error("Gagal Ubah Komisi"); + message.error(e.response?.body?.message || "Gagal Ubah Komisi"); } modalLoader.setLoading(false); store.commission.visibleModalCommission = false; @@ -68,7 +68,7 @@ export const CommissionComponent = observer((props) => { return (
{ - + diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 7ed747c..73b6491 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -181,11 +181,13 @@ export const PartnerComponent = observer((props) => { const response = await store.partner.create(data); modalLoader.setLoading(false); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success("Berhasil Tambah Partner") - : message.error("Gagal Tambah Partner"); + ? message.success( + response?.body?.message || "Berhasil Tambah Partner" + ) + : message.error(response?.body?.message || "Gagal Tambah Partner"); } catch (e) { console.log(e, "apa errornya"); - message.error("Gagal Tambah Partner"); + message.error(e.response?.body?.message || "Gagal Tambah Partner"); } modalLoader.setLoading(false); store.partner.visibleModalPartner = false; diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 0087f07..1ddb46a 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -83,7 +83,6 @@ export const ProductComponent = observer((props) => { title: "Supplier", dataIndex: "supplier_name", key: "supplier_name", - }, { title: "Sub Category", @@ -108,15 +107,17 @@ export const ProductComponent = observer((props) => { key: "action", render: (text, record) => ( + onClick={async () => { + await store.product.getDetail(record.product_id); + await store.product.getDetailProduct(record.product_id); + history.push( + LINKS.PRODUCT_DETAIL.replace(":id", record.product_id) + ); + //console.log(record.product_id); + }} + > + Detail + ), }, ]; @@ -160,12 +161,14 @@ export const ProductComponent = observer((props) => { if (idData !== "") { modalLoader.setLoading(true); try { - const response=await store.product.update(idData, data); + const response = await store.product.update(idData, data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success("Berhasil Ubah Data Produk") - : message.error("Gagal Ubah Data Produk"); + ? message.success( + response?.body?.message || "Berhasil Ubah Data Produk" + ) + : message.error(response?.body?.message || "Gagal Ubah Data Produk"); } catch (e) { - message.error("Gagal Ubah Data Produk"); + message.error(e.response?.body?.message || "Gagal Ubah Data Produk"); } modalLoader.setLoading(false); store.product.visibleModalProduct = false; @@ -174,13 +177,13 @@ export const ProductComponent = observer((props) => { } else { modalLoader.setLoading(true); try { - const response=await store.product.create(data); + const response = await store.product.create(data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success("Berhasil Tambah Produk") - : message.error("Gagal Tambah Produk"); + ? message.success(response?.body?.message || "Berhasil Tambah Produk") + : message.error(response?.body?.message || "Gagal Tambah Produk"); } catch (e) { console.log(e, "apa errornya"); - message.error("Gagal Tambah Produk"); + message.error(e.response?.body?.message || "Gagal Tambah Produk"); } modalLoader.setLoading(false); store.product.visibleModalProduct = false; diff --git a/src/component/SubcategoryComponent.js b/src/component/SubcategoryComponent.js index cec4f97..3cbeb2a 100644 --- a/src/component/SubcategoryComponent.js +++ b/src/component/SubcategoryComponent.js @@ -1,19 +1,29 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Button, Divider, Form, Input, List, message, Modal, Select, Space, Table,} from "antd"; -import {observer} from "mobx-react-lite"; -import {useStore} from "../utils/useStore"; -import {ModalLoaderContext} from "../utils/modal"; +import React, { useContext, useEffect, useState } from "react"; +import { + Button, + Divider, + Form, + Input, + List, + message, + Modal, + Select, + Space, + Table, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { useStore } from "../utils/useStore"; +import { ModalLoaderContext } from "../utils/modal"; export const SubcategoryComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const {Option} = Select; + const { Option } = Select; const [idData, setIdData] = useState(""); const modalLoader = useContext(ModalLoaderContext); useEffect(() => { - - getData() - }, []) + getData(); + }, []); const getData = async () => { await store.category.getData(); await store.subcategory.getData(); @@ -67,13 +77,19 @@ export const SubcategoryComponent = observer((props) => { if (idData !== "") { modalLoader.setLoading(true); try { - const response=await store.subcategory.update(idData, data); + const response = await store.subcategory.update(idData, data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success("Berhasil Ubah Data Sub Kategori") - : message.error("Gagal Ubah Data Sub Kategori"); + ? message.success( + response?.body?.message || "Berhasil Ubah Data Sub Kategori" + ) + : message.error( + response?.body?.message || "Gagal Ubah Data Sub Kategori" + ); //await getData(); } catch (e) { - message.error("Gagal Ubah Data Sub Kategori"); + message.error( + e.response?.body?.message || "Gagal Ubah Data Sub Kategori" + ); } modalLoader.setLoading(false); store.subcategory.visibleModalSubcategory = false; @@ -82,13 +98,17 @@ export const SubcategoryComponent = observer((props) => { } else { modalLoader.setLoading(true); try { - const response =await store.subcategory.create(data); + const response = await store.subcategory.create(data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success("Berhasil Tambah Sub Kategori") - : message.error("Gagal Tambah Sub Kategori"); + ? message.success( + response?.body?.message || "Berhasil Tambah Sub Kategori" + ) + : message.error( + response?.body?.message || "Gagal Tambah Sub Kategori" + ); } catch (e) { console.log(e, "apa errornya"); - message.error("Gagal Tambah Sub Kategori"); + message.error(e.response?.body?.message || "Gagal Tambah Sub Kategori"); } modalLoader.setLoading(false); store.subcategory.visibleModalSubcategory = false; @@ -137,7 +157,7 @@ export const SubcategoryComponent = observer((props) => { pageSize: store.subcategory.pageSize, total: store.subcategory.total_data, current: store.subcategory.page + 1, - style: {marginBottom: "1rem", marginRight: "1rem"}, + style: { marginBottom: "1rem", marginRight: "1rem" }, }} dataSource={store.subcategory.data} style={{ padding: 0 }} diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index 331f028..49d2182 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -1,12 +1,23 @@ -import React, {useContext, useState} from "react"; -import {Button, Divider, Form, Input, List, message, Modal, Space, Table, Tag,} from "antd"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined} from "@ant-design/icons"; -import {useHistory} from "react-router-dom"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; -import {TopupsaldoModal} from "./TopupsaldoModal"; -import {ModalLoaderContext} from "../utils/modal"; +import React, { useContext, useState } from "react"; +import { + Button, + Divider, + Form, + Input, + List, + message, + Modal, + Space, + Table, + Tag, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { useHistory } from "react-router-dom"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; +import { TopupsaldoModal } from "./TopupsaldoModal"; +import { ModalLoaderContext } from "../utils/modal"; export const SupplierComponent = observer((props) => { const store = useStore(); @@ -160,13 +171,17 @@ export const SupplierComponent = observer((props) => { if (idData !== "") { try { modalLoader.setLoading(true); - const response=await store.supplier.update(idData, data); + const response = await store.supplier.update(idData, data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success("Berhasil Ubah Data Supplier") - : message.error("Gagal Ubah Data Supplier"); + ? message.success( + response?.body?.message || "Berhasil Ubah Data Supplier" + ) + : message.error( + response?.body?.message || "Gagal Ubah Data Supplier" + ); } catch (e) { modalLoader.setLoading(false); - message.error("Gagal Ubah Data Supplie"); + message.error(e.response?.body?.message || "Gagal Ubah Data Supplie"); } modalLoader.setLoading(false); @@ -176,13 +191,19 @@ export const SupplierComponent = observer((props) => { } else { try { modalLoader.setLoading(true); - const response=await store.supplier.create(data); + const response = await store.supplier.create(data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success("Berhasil Tambah Supplier Baru") - : message.error("Gagal Tambah Supplier Baru"); + ? message.success( + response?.body?.message || "Berhasil Tambah Supplier Baru" + ) + : message.error( + response?.body?.message || "Gagal Tambah Supplier Baru" + ); } catch (e) { console.log(e, "apa errornya"); - message.error("Gagal Tambah Supplier Baru"); + message.error( + e.response?.body?.message || "Gagal Tambah Supplier Baru" + ); } modalLoader.setLoading(false); @@ -232,7 +253,7 @@ export const SupplierComponent = observer((props) => { pageSize: store.supplier.pageSize, total: store.supplier.total_data, current: store.supplier.page + 1, - style: {marginBottom: "1rem", marginRight: "1rem"}, + style: { marginBottom: "1rem", marginRight: "1rem" }, }} dataSource={store.supplier.data} style={{ padding: 0 }} diff --git a/src/component/TopupsaldoModal.js b/src/component/TopupsaldoModal.js index cd9ff86..f2abe07 100644 --- a/src/component/TopupsaldoModal.js +++ b/src/component/TopupsaldoModal.js @@ -16,11 +16,11 @@ export const TopupsaldoModal = observer((props) => { const handleSubmitTransaction = async (data) => { try { modalLoader.setLoading(true); - await store.supplier.createTransaction(data); - message.success("Success Top Up"); + const response = await store.supplier.createTransaction(data); + message.success(response?.body?.message || "Success Top Up"); } catch (e) { console.log(e, "apa errornya"); - message.error("Failed Top Up"); + message.error(e.response?.body?.message || "Failed Top Up"); } modalLoader.setLoading(false); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index fb81a4b..2e3ea61 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -213,12 +213,16 @@ export const Membership = observer(() => { try { const response = await store.membership.create(data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success("Berhasil Tambah Member Baru") - : message.error("Gagal Tambah Member Baru"); + ? message.success( + response?.body?.message || "Berhasil Tambah Member Baru" + ) + : message.error( + response?.body?.message || "Gagal Tambah Member Baru" + ); await getData(); } catch (e) { console.log(e, "apa errornya"); - message.error("Gagal Tambah Member Baru"); + message.error(e.response?.body?.message || "Gagal Tambah Member Baru"); } modalLoader.setLoading(false); setConfirmLoading(false); @@ -333,7 +337,7 @@ export const Membership = observer(() => { {" "}
- {/* */} @@ -351,6 +357,19 @@ export const PartnerComponent = observer((props) => { )} + {!idData && ( + + + + )} {!idData && ( { rules={[ idData ? { required: false } - : { required: true, message: "Please input password owner!" }, + : { required: true, message: "Please input owner name!" }, ]} > diff --git a/src/config/app.js b/src/config/app.js index ffdd851..de2c9a2 100644 --- a/src/config/app.js +++ b/src/config/app.js @@ -1,5 +1,6 @@ export const appConfig = { - apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' + // apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' + apiUrl: 'http://localhost:3222/v1' // apiUrl: 'http://localhost:3222/v1' }; From 83e68567aadd053aaa8956a4eed3593eea62152a Mon Sep 17 00:00:00 2001 From: ajat sudrajat Date: Mon, 27 Dec 2021 05:28:01 +0000 Subject: [PATCH 198/324] Update app.js --- src/config/app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/app.js b/src/config/app.js index de2c9a2..4bf4b05 100644 --- a/src/config/app.js +++ b/src/config/app.js @@ -1,6 +1,6 @@ export const appConfig = { - // apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' - apiUrl: 'http://localhost:3222/v1' + apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' + //apiUrl: 'http://localhost:3222/v1' // apiUrl: 'http://localhost:3222/v1' }; From 0c7e2724db2fdf4fbda9e4356bed2ada799b2e53 Mon Sep 17 00:00:00 2001 From: ajat sudrajat Date: Mon, 27 Dec 2021 05:28:50 +0000 Subject: [PATCH 199/324] Update app.js --- src/config/app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/app.js b/src/config/app.js index 4bf4b05..f35ecbe 100644 --- a/src/config/app.js +++ b/src/config/app.js @@ -1,6 +1,6 @@ export const appConfig = { - apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' - //apiUrl: 'http://localhost:3222/v1' + //apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' + apiUrl: 'http://localhost:3222/v1' // apiUrl: 'http://localhost:3222/v1' }; From 0f2e3ff3fa02e4202d43e55ff421f19dadfdf976 Mon Sep 17 00:00:00 2001 From: ajat sudrajat Date: Mon, 27 Dec 2021 05:29:15 +0000 Subject: [PATCH 200/324] Update app.js --- src/config/app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/app.js b/src/config/app.js index f35ecbe..4bf4b05 100644 --- a/src/config/app.js +++ b/src/config/app.js @@ -1,6 +1,6 @@ export const appConfig = { - //apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' - apiUrl: 'http://localhost:3222/v1' + apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' + //apiUrl: 'http://localhost:3222/v1' // apiUrl: 'http://localhost:3222/v1' }; From 8a2bde5ba83b184c2c8c2f280ec0ccf37871158d Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 27 Dec 2021 15:55:34 +0700 Subject: [PATCH 201/324] Perbaikan Project PPOB --- src/component/PartnerComponent.js | 37 +-- src/component/ProductComponent.js | 38 +-- src/component/SupplierComponent.js | 8 +- src/config/app.js | 4 +- src/pages/App/DesktopLayout.js | 363 ++++++++++++++------------- src/pages/App/MenuList.js | 136 +++++----- src/pages/Config/Commission.js | 2 +- src/pages/Config/Partner.js | 2 +- src/pages/Config/Supplier.js | 2 +- src/pages/Home/Home.js | 136 ++++++++-- src/pages/Membership/Membership.js | 2 +- src/pages/Payback/Payback.js | 32 ++- src/pages/Payback/PaybackCreated.js | 2 +- src/pages/Product/Category.js | 2 +- src/pages/Product/Product.js | 3 +- src/pages/Product/ProductDetail.js | 2 +- src/pages/Product/Subcategory.js | 2 +- src/pages/Profile/Profile.js | 4 +- src/pages/Transaction/Transaction.js | 2 +- src/store/partner.js | 13 +- src/store/product.js | 12 + 21 files changed, 482 insertions(+), 322 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 99bdbb4..d75496b 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -65,6 +65,7 @@ export const PartnerComponent = observer((props) => { setIsChangePassword(true); store.partner.visibleModalPartner = true; setIdData(data.id); + console.log(data.id); }; const columns = [ @@ -161,20 +162,22 @@ export const PartnerComponent = observer((props) => { if (idData !== "") { modalLoader.setLoading(true); try { - await store.partner.update(idData, data); + isChangePassword + ? await store.partner.updatePassword(idData, data) + : await store.partner.update(idData, data); modalLoader.setLoading(false); message.success( isChangePassword - ? "Failed Change Partner Password" + ? "Success Change Password" : "Success Update Data Partner" ); //await store.partner.getData() } catch (e) { - modalLoader.setLoading(true); + modalLoader.setLoading(false); message.error( isChangePassword - ? "Failed Change Partner Password" + ? "Failed Change Password" : "Failed Update Data Partner" ); } @@ -280,7 +283,9 @@ export const PartnerComponent = observer((props) => { > {item?.status === true ? "Inactive" : "Active"} - {/* */} @@ -358,17 +363,17 @@ export const PartnerComponent = observer((props) => { )} {!idData && ( - - - + + + )} {!idData && ( { const store = useStore(); const [form] = Form.useForm(); - const {Option} = Select; + const { Option } = Select; const history = useHistory(); const [idData, setIdData] = useState(""); const [filterSupplier, setFilterSupplier] = useState([]); @@ -107,12 +107,14 @@ export const ProductComponent = observer((props) => { key: "action", render: (text, record) => ( + onClick={async () => { + history.push( + LINKS.PRODUCT_DETAIL.replace(":id", record.product_id) + ); + }} + > + Detail + ), }, ]; @@ -258,7 +260,11 @@ export const ProductComponent = observer((props) => { width: store.ui.mediaQuery.isMobile ? 250 : "", }} columns={columns} - dataSource={store.product.data} + dataSource={ + store.authentication.userData.role === "Admin Partner" + ? store.product.dataProductPartner + : store.product.data + } bordered pagination={{ pageSize: store.product.pageSize, diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index b7f3d3e..b5542c1 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -192,14 +192,18 @@ export const SupplierComponent = observer((props) => { try { modalLoader.setLoading(true); const response = await store.supplier.create(data); - response?.body?.statusCode === 201 || response?.body?.statusCode === 200 + console.log(response) + response?.body?.statusCode === 201 && response?.body?.statusCode === 200 ? message.success( response?.body?.message || "Berhasil Tambah Supplier Baru" ) : message.error( - response?.body?.statusCode === 406 + response?.body?.error ? response?.body?.error || "Supplier Sudah Ada" : response?.body?.message || "Gagal Tambah Supplier Baru" + // response?.body?.statusCode === 406 + // ? response?.body?.error || "Supplier Sudah Ada" + // : response?.body?.message || "Gagal Tambah Supplier Baru" //response?.body?.message || "Gagal Tambah Supplier Baru" ); } catch (e) { diff --git a/src/config/app.js b/src/config/app.js index de2c9a2..b6c3d6a 100644 --- a/src/config/app.js +++ b/src/config/app.js @@ -1,6 +1,6 @@ export const appConfig = { - // apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' - apiUrl: 'http://localhost:3222/v1' + apiUrl: 'https://ppob-backend.k3s.bangun-kreatif.com/v1' + //apiUrl: 'http://localhost:3222/v1' // apiUrl: 'http://localhost:3222/v1' }; diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 23c2b32..cc46bbf 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -1,65 +1,65 @@ -import React, {useState} from "react"; -import {Button, Drawer, Layout, Menu, Popover, Typography} from "antd"; -import {MenuList} from "./MenuList"; -import {Link, useHistory} from "react-router-dom"; +import React, { useState } from "react"; +import { Button, Drawer, Layout, Menu, Popover, Typography } from "antd"; +import { MenuList } from "./MenuList"; +import { Link, useHistory } from "react-router-dom"; import { - AlipayOutlined, - DatabaseOutlined, - FileAddOutlined, - FileProtectOutlined, - FileSyncOutlined, - HomeOutlined, - LogoutOutlined, - MenuOutlined, - PayCircleOutlined, - ProfileOutlined, - ShoppingCartOutlined, - UserOutlined + AlipayOutlined, + DatabaseOutlined, + FileAddOutlined, + FileProtectOutlined, + FileSyncOutlined, + HomeOutlined, + LogoutOutlined, + MenuOutlined, + PayCircleOutlined, + ProfileOutlined, + ShoppingCartOutlined, + UserOutlined, } from "@ant-design/icons"; -import {AppRoute, LINKS} from "../../routes/app"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {useMediaQuery} from "react-responsive"; +import { AppRoute, LINKS } from "../../routes/app"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { useMediaQuery } from "react-responsive"; -const {Text, Paragraph} = Typography; -const {Header, Content, Sider} = Layout; -const {SubMenu} = Menu; +const { Text, Paragraph } = Typography; +const { Header, Content, Sider } = Layout; +const { SubMenu } = Menu; export const DesktopLayout = observer(() => { - let history = useHistory(); - const xl = useMediaQuery({minWidth: 1024}); - const store = useStore(); - const [clicked, setClicked] = useState(false); + let history = useHistory(); + const xl = useMediaQuery({ minWidth: 1024 }); + const store = useStore(); + const [clicked, setClicked] = useState(false); - return ( - + {store.ui.mediaQuery.isDesktop && ( + - {store.ui.mediaQuery.isDesktop && ( -
{ }} > - - - + {store.authentication.userData.role !== "Admin Partner" && ( + + + Beranda - - - {store.authentication.userData.role !== "Retail" && ( - - - - Keanggotaan )} + {store.authentication.userData.role !== "Retail" || + (store.authentication.userData.role !== "Admin Partner" && ( + + + + Keanggotaan + + + ))} {store.authentication.userData.role === "Admin" && ( { > - - Rekanan + + Rekanan - - Komisi + + Komisi @@ -167,23 +170,23 @@ export const DesktopLayout = observer(() => { > - - Produk + + Produk {store.authentication.userData.role === "Admin" && ( - - Kategori + + Kategori )} {store.authentication.userData.role === "Admin" && ( - - Sub Kategori + + Sub Kategori )} @@ -192,46 +195,49 @@ export const DesktopLayout = observer(() => { {store.authentication.userData.role !== "Admin" && ( - - Produk + + Produk )} - {store.authentication.userData.role === "Retail" && ( - - - + {store.authentication.userData.role === "Retail" || + (store.authentication.userData.role === "Admin Partner" && ( + + + Transaksi - - - )} - } - title="Pembayaran" - > - {store.authentication.userData.role !== "Retail" && ( - - - - Konfirmasi - - - )} - {store.authentication.userData.role !== "Admin" && ( - - - - Dibuat oleh Saya - - )} - + + ))} + {store.authentication.userData.role !== "Admin Partner" && ( + } + title="Pembayaran" + > + {store.authentication.userData.role !== "Retail" && ( + + + + Konfirmasi + + + )} + {store.authentication.userData.role !== "Admin" && ( + + + + Dibuat oleh Saya + + + )} + + )} {store.authentication.userData.role !== "Admin" && ( - - Profil + + Profil )} @@ -354,45 +360,46 @@ export const DesktopLayout = observer(() => { autoAdjustOverflow={true} placement="bottomRight" content={ - + {store.authentication.userData.role !== "Admin" && ( + + + + Profile + + + )} + { + store.authentication.logout(); + history.push("/login"); + }} > - {store.authentication.userData.role !== "Admin" && - - - Profile - - - } - { - store.authentication.logout(); - history.push("/login"); - }} - > - - Sign out - - + + Sign out + + } title={ - - {store.user.data.username} - - {store.authentication.userData.username} - - + + {store.user.data.username} + + {store.authentication.userData.username} + + } trigger="click" visible={clicked} @@ -455,45 +462,45 @@ export const DesktopLayout = observer(() => { autoAdjustOverflow={true} placement="bottomRight" content={ - + {store.authentication.userData.role !== "Admin" && ( + + + + Profile + + + )} + { + store.authentication.logout(); + history.push("/login"); + }} > - {store.authentication.userData.role !== "Admin" && ( - - - - Profile - - - )} - { - store.authentication.logout(); - history.push("/login"); - }} - > - - Sign out - - + + Sign out + + } title={ - - {store.authentication.userData.username} - + + {store.authentication.userData.username} + } trigger="click" diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index db26d51..b0aac5b 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -1,34 +1,33 @@ -import React, {useEffect, useState} from "react"; -import {Menu} from "antd"; -import {Link} from "react-router-dom"; +import React, { useEffect, useState } from "react"; +import { Menu } from "antd"; +import { Link } from "react-router-dom"; import { - AppstoreOutlined, - DatabaseOutlined, - FileAddOutlined, - FileProtectOutlined, - FileSyncOutlined, - HomeOutlined, - MenuUnfoldOutlined, - MoneyCollectOutlined, - ProfileOutlined, - ProjectOutlined, - ShoppingCartOutlined, - UserOutlined, + AppstoreOutlined, + DatabaseOutlined, + FileAddOutlined, + FileProtectOutlined, + FileSyncOutlined, + HomeOutlined, + MenuUnfoldOutlined, + MoneyCollectOutlined, + ProfileOutlined, + ProjectOutlined, + ShoppingCartOutlined, + UserOutlined, } from "@ant-design/icons"; -import {observer} from "mobx-react-lite"; -import {useStore} from "../../utils/useStore"; -import {LINKS} from "../../routes/app"; +import { observer } from "mobx-react-lite"; +import { useStore } from "../../utils/useStore"; +import { LINKS } from "../../routes/app"; -const {SubMenu} = Menu; +const { SubMenu } = Menu; export const MenuList = observer((props) => { - const store = useStore(); - useEffect(() => { - }, []); + const store = useStore(); + useEffect(() => {}, []); - const [setKeys, setSetKeys] = useState(["dashboard"]); + const [setKeys, setSetKeys] = useState(["dashboard"]); - return ( + return ( { overflowedIndicator={0} forceSubMenuRender={true} > - - - - Beranda - - - {store.authentication.userData.role !== "Retail" && ( - - - - Keanggotaan + {store.authentication.userData.role === "Admin" && ( + + + + Beranda )} + {store.authentication.userData.role !== "Retail" && + store.authentication.userData.role !== "Admin Partner" && ( + + + + Keanggotaan + + + )} {store.authentication.userData.role === "Admin" && ( } title="Config"> @@ -109,6 +111,14 @@ export const MenuList = observer((props) => { )} )} + {store.authentication.userData.role === "Admin Partner" && ( + + + + Produk + + + )} {store.authentication.userData.role === "Supervisor" && ( @@ -117,37 +127,45 @@ export const MenuList = observer((props) => { )} - {store.authentication.userData.role === "Retail" && ( - - - - Transaksi - - - )} - } title="Pembayaran"> - {store.authentication.userData.role !== "Retail" && ( - - - - Konfirmasi + {store.authentication.userData.role === "Retail" || + (store.authentication.userData.role === "Admin Partner" && ( + + + + Transaksi - )} - {store.authentication.userData.role !== "Admin" && ( - - - + ))} + {store.authentication.userData.role !== "Retail" && + store.authentication.userData.role !== "Admin Partner" && ( + } + title="Pembayaran" + > + {store.authentication.userData.role !== "Retail" && ( + + + + Konfirmasi + + + )} + {store.authentication.userData.role !== "Admin" && ( + + + Dibuat oleh Saya - - + + + )} + )} - {store.authentication.userData.role !== "Admin" && ( - - Profil + + Profil )} diff --git a/src/pages/Config/Commission.js b/src/pages/Config/Commission.js index baa91c9..ea51153 100644 --- a/src/pages/Config/Commission.js +++ b/src/pages/Config/Commission.js @@ -38,7 +38,7 @@ export const Commission = observer(() => { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.COMMISSION, diff --git a/src/pages/Config/Partner.js b/src/pages/Config/Partner.js index c43e6b6..9e85a1d 100644 --- a/src/pages/Config/Partner.js +++ b/src/pages/Config/Partner.js @@ -36,7 +36,7 @@ export const Partner = observer(() => { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.PARTNER, diff --git a/src/pages/Config/Supplier.js b/src/pages/Config/Supplier.js index e009362..3cd403b 100644 --- a/src/pages/Config/Supplier.js +++ b/src/pages/Config/Supplier.js @@ -51,7 +51,7 @@ export const Supplier = observer(() => { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.SUPPLIER, diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index 5a96c09..c8f2718 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -1,25 +1,123 @@ import React from "react"; -import {Button, PageHeader} from "antd"; -import {store} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; +import { Button, PageHeader, Card, Row, Col, List } from "antd"; +import { store } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { FilterOutlined, TransactionOutlined } from "@ant-design/icons"; export const Home = observer(() => { - return
- + {store.ui.mediaQuery.isDesktop && ( + - - - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus aut recusandae velit! Consequatur corporis, - eum fuga, harum incidunt laboriosam minus necessitatibus neque non nostrum pariatur tempore. Dignissimos impedit - rem tempora! + + Total Transaksi}> + Total Transaksi : 25 Transaksi + + + + Total Keuntungan}> + Rp.30.000.000 + + + + Saldo}> + Rp.200.000.000 + + + + )} + {store.ui.mediaQuery.isMobile && ( +
+ + Total Transaksi}> + Total Transaksi : + + + + Total Keuntungan}> + Rp.30.000.000 + + + + Saldo}> + Rp.200.000.000 + + +
+ )}
+ ); + // return
+ // + // + // + // Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus aut recusandae velit! Consequatur corporis, + // eum fuga, harum incidunt laboriosam minus necessitatibus neque non nostrum pariatur tempore. Dignissimos impedit + // rem tempora! + //
}); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 2e3ea61..5c0ad17 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -174,7 +174,7 @@ export const Membership = observer(() => { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.MEMBERSHIP, diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index e7b716d..cffe75b 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -163,7 +163,7 @@ export const Payback = observer(() => { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.PAYBACK, @@ -175,15 +175,23 @@ export const Payback = observer(() => { modalLoader.setLoading(true); try { const response = await store.payback.confirmPayback(id, type); - if (response.body.status !== 201) { - message.error( - response?.body?.message || `Failed ${capitalize(type)} Payback` - ); - } else { - message.success( - response?.body?.message || `Success ${capitalize(type)} Payback` - ); - } + console.log(response) + response.body.statusCode !== 201 && response.body.statusCode !== 200 + ? message.error( + response?.body?.message || `Failed ${capitalize(type)} Payback` + ) + : message.success( + response?.body?.message || `Success ${capitalize(type)} Payback` + ); + // if (response.body.status !== 201 ) { + // message.error( + // response?.body?.message || `Failed ${capitalize(type)} Payback` + // ); + // } else { + // message.success( + // response?.body?.message || `Success ${capitalize(type)} Payback` + // ); + // } } catch (e) { console.error(e, "apa errornya"); message.error( @@ -200,10 +208,10 @@ export const Payback = observer(() => {
- + */} {/* { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.PAYBACK_CREATED, diff --git a/src/pages/Product/Category.js b/src/pages/Product/Category.js index c2dd230..ca64fd7 100644 --- a/src/pages/Product/Category.js +++ b/src/pages/Product/Category.js @@ -37,7 +37,7 @@ export const Category = observer(() => { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.CATEGORY, diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 7cdd86e..d9bb8d5 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -30,6 +30,7 @@ export const Product = observer(() => { store.supplier.getData(), store.category.getData(), store.product.getDataSubCategories(), + store.product.getProductPartner() ]); await store.product.getData(); modalLoader.setLoading(false); @@ -53,7 +54,7 @@ export const Product = observer(() => { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.PRODUCT, diff --git a/src/pages/Product/ProductDetail.js b/src/pages/Product/ProductDetail.js index e30aa91..0d6e884 100644 --- a/src/pages/Product/ProductDetail.js +++ b/src/pages/Product/ProductDetail.js @@ -18,7 +18,7 @@ export const ProductDetail = observer(() => { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.PRODUCT, diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js index 08e26cb..0594a68 100644 --- a/src/pages/Product/Subcategory.js +++ b/src/pages/Product/Subcategory.js @@ -41,7 +41,7 @@ export const Subcategory = observer(() => { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.SUBCATEGORY, diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index c346341..7bbab08 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -138,12 +138,12 @@ export const Profile = observer(() => {
History User Transaction - + */}
{ const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.TRANSACTION, diff --git a/src/store/partner.js b/src/store/partner.js index f804b6e..95ddcda 100644 --- a/src/store/partner.js +++ b/src/store/partner.js @@ -27,7 +27,7 @@ export class Partner { async getData() { try { const response = await http.get(`/users/partner?page=${this.page}&pageSize=${this.pageSize}`); - + //console.log(response) this.data = response.body.data.map((item, idx) => { item.key = idx; return item @@ -59,11 +59,12 @@ export class Partner { } } - // async updateStatus(id, data) { - // const response = await http.put(`/users/partner/${id}`).send(data); - // await this.getData(); - // return response; - // } + async updatePassword(id, data) { + const response = await http.put(`/users/change-password-partner/${id}`).send(data); + console.log(response) + await this.getData(); + return response; + } async delete(id) { try { diff --git a/src/store/product.js b/src/store/product.js index 5697d10..b7d6e7c 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -26,9 +26,11 @@ export class Product { dataPriceHistory = []; totalDataPriceHistory = 0; pagePriceHistory = 0; + pageProductPartner = 0; pageSizePriceHistory = 10 dataDetailProduct = {}; + dataProductPartner=[] constructor(ctx) { this.ctx = ctx; @@ -94,6 +96,16 @@ export class Product { } } + async getProductPartner(id) { + try { + const response = await http.get(`/product/by-categories?page=${this.pageProductPartner}&sub-category=${id}`); + console.log(response) + this.dataProductPartner = response.body.data + } catch (e) { + console.error(e); + } + } + async create(data) { try { const response = await http.post('/product').send(data); From d590b94a6c102a62e7fbbe1317d0211a3079a265 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 27 Dec 2021 17:50:24 +0700 Subject: [PATCH 202/324] Perbaikan Project PPOB --- src/pages/Home/Home.js | 130 ++++++++++++++++------------- src/pages/Membership/DetailUser.js | 2 +- 2 files changed, 73 insertions(+), 59 deletions(-) diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index c8f2718..9d08cfa 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -1,8 +1,12 @@ import React from "react"; -import { Button, PageHeader, Card, Row, Col, List } from "antd"; +import { Button, PageHeader, Card, Row, Col } from "antd"; import { store } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; -import { FilterOutlined, TransactionOutlined } from "@ant-design/icons"; +import { + DropboxOutlined, + DollarCircleOutlined, + BarChartOutlined, +} from "@ant-design/icons"; export const Home = observer(() => { return ( @@ -16,29 +20,21 @@ export const Home = observer(() => { > - Total Transaksi}> - Total Transaksi : 25 Transaksi - - - - Total Keuntungan}> - Rp.30.000.000 - + + + Total Transaksi}> + Total Transaksi : 25 Transaksi + + { marginLeft: 20, height: 200, marginBottom: 10, + borderColor: "salmon", width: "30%", }} > - Saldo}> - Rp.200.000.000 - + + + Total Keuntungan}> + Rp.30.000.000 + + + + + + + Saldo}> + Rp.200.000.000 + + )} @@ -60,29 +78,21 @@ export const Home = observer(() => {
- Total Transaksi}> - Total Transaksi : - - - - Total Keuntungan}> - Rp.30.000.000 - + + + Total Transaksi}> + Total Transaksi : 25 Transaksi + + { height: 200, marginBottom: 10, marginRight: 20, + borderColor: "salmon", }} > - Saldo}> - Rp.200.000.000 - + + + Total Keuntungan}> + Rp.30.000.000 + + + + + + + Saldo}> + Rp.200.000.000 + +
)} ); - // return
- // - // - // - // Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus aut recusandae velit! Consequatur corporis, - // eum fuga, harum incidunt laboriosam minus necessitatibus neque non nostrum pariatur tempore. Dignissimos impedit - // rem tempora! - //
}); diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 1301340..e3567f5 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -127,7 +127,7 @@ export const DetailUser = observer(() => { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.MEMBERSHIP, From 4d0c37ec9ba59f6a42d9e2fb600d1e7f6fb16d3d Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 27 Dec 2021 18:52:54 +0700 Subject: [PATCH 203/324] Perbaikan Project PPOB --- src/pages/App/MenuList.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index b0aac5b..6b8fde2 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -14,6 +14,10 @@ import { ProjectOutlined, ShoppingCartOutlined, UserOutlined, + SlackOutlined, + CodepenOutlined, + WindowsOutlined, + AliyunOutlined } from "@ant-design/icons"; import { observer } from "mobx-react-lite"; import { useStore } from "../../utils/useStore"; @@ -67,13 +71,13 @@ export const MenuList = observer((props) => { } title="Config"> - + Rekanan - + Komisi @@ -87,9 +91,9 @@ export const MenuList = observer((props) => { )} {store.authentication.userData.role === "Admin" && ( } title="Product"> - + - + Produk @@ -140,7 +144,7 @@ export const MenuList = observer((props) => { store.authentication.userData.role !== "Admin Partner" && ( } + icon={} title="Pembayaran" > {store.authentication.userData.role !== "Retail" && ( From bf0e28c4f340585f2a561ff7080cce8693e8edae Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 27 Dec 2021 18:58:51 +0700 Subject: [PATCH 204/324] Perbaikan Projek PPOB --- src/pages/App/MenuList.js | 4 +--- src/pages/Home/Home.js | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 6b8fde2..e66c3e0 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -9,9 +9,7 @@ import { FileSyncOutlined, HomeOutlined, MenuUnfoldOutlined, - MoneyCollectOutlined, ProfileOutlined, - ProjectOutlined, ShoppingCartOutlined, UserOutlined, SlackOutlined, @@ -90,7 +88,7 @@ export const MenuList = observer((props) => { )} {store.authentication.userData.role === "Admin" && ( - } title="Product"> + } title="Produk"> diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index 9d08cfa..7c02c2e 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -84,7 +84,7 @@ export const Home = observer(() => { height: 200, marginBottom: 10, marginRight: 20, - borderColor: "salmon", + borderColor: "salmon" }} > From 7ad15665cc8403be4bf9874dc81ebf82fa6b42d1 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 28 Dec 2021 13:46:52 +0700 Subject: [PATCH 205/324] Perbaikan Project PPOB --- src/component/PartnerComponent.js | 15 +- src/pages/App/DesktopLayout.js | 116 ++++++++----- src/pages/App/MenuList.js | 60 ++++--- src/pages/Membership/Membership.js | 6 +- src/pages/Membership/MembershipModal.js | 221 +++++++++++++----------- src/pages/Payback/Payback.js | 81 ++++++++- 6 files changed, 319 insertions(+), 180 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index d75496b..7dd2f90 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -20,6 +20,7 @@ import { ModalLoaderContext } from "../utils/modal"; export const PartnerComponent = observer((props) => { const store = useStore(); + const [value, setValue] = useState(); const [form] = Form.useForm(); const history = useHistory(); const [idData, setIdData] = useState(""); @@ -415,9 +416,21 @@ export const PartnerComponent = observer((props) => { required: true, message: "Please input password phone number!", }, + { + pattern: /^(?:\d*)$/, + message: "Value should contain just number", + }, + { + pattern: /^[\d]{0,12}$/, + message: "Value should be less than 12 character", + }, ]} > - + { + setValue(value); + }} + /> )} {!isChangePassword && ( diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index cc46bbf..1921f50 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -118,23 +118,30 @@ export const DesktopLayout = observer(() => { }} > - {store.authentication.userData.role !== "Admin Partner" && ( - - - - Beranda + {/* {store.authentication.userData.role !== "Admin Partner" && ( */} + + + + Beranda + + + {/* )} */} + {store.authentication.userData.role === "Admin" && ( + + + + Keanggotaan + + + )} + {store.authentication.userData.role === "Supervisor" && ( + + + + Keanggotaan )} - {store.authentication.userData.role !== "Retail" || - (store.authentication.userData.role !== "Admin Partner" && ( - - - - Keanggotaan - - - ))} {store.authentication.userData.role === "Admin" && ( { )} )} - {store.authentication.userData.role !== "Admin" && ( + {store.authentication.userData.role === "Supervisor" && ( @@ -200,39 +207,54 @@ export const DesktopLayout = observer(() => { )} - {store.authentication.userData.role === "Retail" || - (store.authentication.userData.role === "Admin Partner" && ( - - - - Transaksi - - - ))} - {store.authentication.userData.role !== "Admin Partner" && ( - } - title="Pembayaran" - > - {store.authentication.userData.role !== "Retail" && ( - - - - Konfirmasi - - - )} - {store.authentication.userData.role !== "Admin" && ( - - - - Dibuat oleh Saya - - - )} - + {store.authentication.userData.role === "Admin Partner" && ( + + + + Produk + + )} + {store.authentication.userData.role === "Admin Partner" && ( + + + + Transaksi + + + )} + {store.authentication.userData.role === "Retail" && ( + + + + Transaksi + + + )} + {store.authentication.userData.role !== "Admin Partner" && store.authentication.userData.role !== "Retail" && ( + } + title="Pembayaran" + > + {store.authentication.userData.role !== "Retail" && ( + + + + Konfirmasi + + + )} + {store.authentication.userData.role !== "Admin" && ( + + + + Dibuat oleh Saya + + + )} + + )} {store.authentication.userData.role !== "Admin" && ( diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index e66c3e0..126c7f3 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -15,7 +15,7 @@ import { SlackOutlined, CodepenOutlined, WindowsOutlined, - AliyunOutlined + AliyunOutlined, } from "@ant-design/icons"; import { observer } from "mobx-react-lite"; import { useStore } from "../../utils/useStore"; @@ -48,23 +48,30 @@ export const MenuList = observer((props) => { overflowedIndicator={0} forceSubMenuRender={true} > + {/* {store.authentication.userData.role === "Admin" && ( */} + + + + Beranda + + + {/* )} */} {store.authentication.userData.role === "Admin" && ( - - - - Beranda + + + + Keanggotaan + + + )} + {store.authentication.userData.role === "Supervisor" && ( + + + + Keanggotaan )} - {store.authentication.userData.role !== "Retail" && - store.authentication.userData.role !== "Admin Partner" && ( - - - - Keanggotaan - - - )} {store.authentication.userData.role === "Admin" && ( } title="Config"> @@ -129,15 +136,22 @@ export const MenuList = observer((props) => { )} - {store.authentication.userData.role === "Retail" || - (store.authentication.userData.role === "Admin Partner" && ( - - - - Transaksi - - - ))} + {store.authentication.userData.role === "Admin Partner" && ( + + + + Transaksi + + + )} + {store.authentication.userData.role === "Retail" && ( + + + + Transaksi + + + )} {store.authentication.userData.role !== "Retail" && store.authentication.userData.role !== "Admin Partner" && ( { : (response = await store.transaction.distribute(data)); response?.body?.statusCode === 201 - ? message.success("Success Top Up") - : message.error("Failed Top Up"); + ? message.success("Sukses Top Up") + : message.error("Saldo Tidak Mencukupi"); modalLoader.setLoading(false); await getData(); } catch (e) { console.log(e, "apa errornya"); modalLoader.setLoading(false); - message.error("Failed Top Up"); + message.error("Gagal Top Up"); } setConfirmLoading(false); setIsVisibleTopUpModal(false); diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index 169850f..273c6cc 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -1,107 +1,122 @@ -import React from "react"; -import {Form, Input, Modal, Select} from "antd"; -import {useStore} from "../../utils/useStore"; +import React, { useState } from "react"; +import { Form, Input, Modal, Select, InputNumber } from "antd"; +import { useStore } from "../../utils/useStore"; export const MembershipModal = ({ - visible, - onCreate, - onCancel, - initialData, - }) => { - const [form] = Form.useForm(); - const {Option} = Select; - const store = useStore(); + visible, + onCreate, + onCancel, + initialData, +}) => { + const [form] = Form.useForm(); + const { Option } = Select; + const store = useStore(); + const [value, setValue] = useState(); - return ( - { - form.resetFields(); - onCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - onCreate(values); - form.resetFields(); - }) - .catch((info) => { - console.log("Validate Failed:", info); - }); - }} - > -
- {((initialData.id && !initialData.isChangePassword) || - !initialData.id) && ( - - - - )} - {!initialData.id && ( - - - - )} - {((initialData.id && initialData.isChangePassword) || - !initialData.id) && ( - - - - )} - {((initialData.id && !initialData.isChangePassword) || - !initialData.id) && ( - - - - )} - {((initialData.id && !initialData.isChangePassword) || - !initialData.id) && ( - - - - )} - -
- ); + return ( + { + form.resetFields(); + onCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + onCreate(values); + form.resetFields(); + }) + .catch((info) => { + console.log("Validate Failed:", info); + }); + }} + > +
+ {((initialData.id && !initialData.isChangePassword) || + !initialData.id) && ( + + + + )} + {!initialData.id && ( + + + + )} + {((initialData.id && initialData.isChangePassword) || + !initialData.id) && ( + + + + )} + {((initialData.id && !initialData.isChangePassword) || + !initialData.id) && ( + + { + setValue(value); + }} + /> + + )} + {((initialData.id && !initialData.isChangePassword) || + !initialData.id) && ( + + + + )} + +
+ ); }; diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index cffe75b..7ffebc2 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -175,7 +175,7 @@ export const Payback = observer(() => { modalLoader.setLoading(true); try { const response = await store.payback.confirmPayback(id, type); - console.log(response) + console.log(response); response.body.statusCode !== 201 && response.body.statusCode !== 200 ? message.error( response?.body?.message || `Failed ${capitalize(type)} Payback` @@ -288,7 +288,79 @@ export const Payback = observer(() => { title={item.name} description={
- +

+ {item.userData_name} +
+ Amount: {item.amount} +
+ {PAYBACK_STATUS[item.status] === + PAYBACK_STATUS[0] ? ( + + + + + ) : ( + + {PAYBACK_STATUS[item.status]} + + )} +

} /> @@ -299,7 +371,10 @@ export const Payback = observer(() => { margin: 0, }} > - {item.amount} +

From beb3cdf6d13d65c724c3b20f6cff1c9bf1c5ae9d Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 28 Dec 2021 15:58:29 +0700 Subject: [PATCH 206/324] Perbaikan Project PPOB --- src/pages/App/MenuList.js | 3 ++- src/pages/Home/Home.js | 16 +++++++++++++--- src/pages/Membership/MembershipModal.js | 6 +++++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 126c7f3..d918d5e 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -16,6 +16,7 @@ import { CodepenOutlined, WindowsOutlined, AliyunOutlined, + SettingOutlined } from "@ant-design/icons"; import { observer } from "mobx-react-lite"; import { useStore } from "../../utils/useStore"; @@ -73,7 +74,7 @@ export const MenuList = observer((props) => {
)} {store.authentication.userData.role === "Admin" && ( - } title="Config"> + } title="Config"> diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index 7c02c2e..ed52837 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -50,7 +50,12 @@ export const Home = observer(() => { Total Keuntungan}> - Rp.30.000.000 + + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.authentication.profileData?.wallet || 0)} + @@ -68,7 +73,12 @@ export const Home = observer(() => { Saldo}> - Rp.200.000.000 + + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.authentication.profileData?.wallet || 0)} + @@ -84,7 +94,7 @@ export const Home = observer(() => { height: 200, marginBottom: 10, marginRight: 20, - borderColor: "salmon" + borderColor: "salmon", }} > diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index 273c6cc..b7b1ade 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -82,12 +82,16 @@ export const MembershipModal = ({ name="phone_number" label="Phone Number" rules={[ - { required: true, message: "Please input Phone Number!" }, + { + required: true, + message: "Please input Phone Number!", + }, { pattern: /^(?:\d*)$/, message: "Value should contain just number", }, { + //pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/, pattern: /^[\d]{0,12}$/, message: "Value should be less than 12 character", }, From c7d3012bb1fe107763f8e4d1fc0102b3f80e8e83 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 28 Dec 2021 16:21:45 +0700 Subject: [PATCH 207/324] Perbaikan Project PPOB --- src/pages/App/DesktopLayout.js | 27 +++++++++++++++++---------- src/pages/App/MenuList.js | 18 ++++++++++++------ src/pages/Home/Home.js | 14 ++++++++++++-- 3 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 1921f50..2a51446 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -15,6 +15,12 @@ import { ProfileOutlined, ShoppingCartOutlined, UserOutlined, + IdcardOutlined, + SettingOutlined, + WindowsOutlined, + SlackOutlined, + AppstoreAddOutlined, + AppstoreOutlined, } from "@ant-design/icons"; import { AppRoute, LINKS } from "../../routes/app"; import { useStore } from "../../utils/useStore"; @@ -129,7 +135,7 @@ export const DesktopLayout = observer(() => { {store.authentication.userData.role === "Admin" && ( - + Keanggotaan @@ -137,7 +143,7 @@ export const DesktopLayout = observer(() => { {store.authentication.userData.role === "Supervisor" && ( - + Keanggotaan @@ -145,25 +151,25 @@ export const DesktopLayout = observer(() => { {store.authentication.userData.role === "Admin" && ( } + icon={} title="Config" style={{ backgroundColor: "#e3e8ee" }} > - + Rekanan - + Komisi - + Supplier @@ -172,7 +178,7 @@ export const DesktopLayout = observer(() => { {store.authentication.userData.role === "Admin" && ( } + icon={} title="Product" > @@ -202,7 +208,7 @@ export const DesktopLayout = observer(() => { {store.authentication.userData.role === "Supervisor" && ( - + Produk @@ -210,7 +216,7 @@ export const DesktopLayout = observer(() => { {store.authentication.userData.role === "Admin Partner" && ( - + Produk @@ -231,7 +237,8 @@ export const DesktopLayout = observer(() => { )} - {store.authentication.userData.role !== "Admin Partner" && store.authentication.userData.role !== "Retail" && ( + {store.authentication.userData.role !== "Admin Partner" && + store.authentication.userData.role !== "Retail" && ( } diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index d918d5e..a3dac73 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -16,7 +16,9 @@ import { CodepenOutlined, WindowsOutlined, AliyunOutlined, - SettingOutlined + SettingOutlined, + IdcardOutlined, + AppstoreAddOutlined, } from "@ant-design/icons"; import { observer } from "mobx-react-lite"; import { useStore } from "../../utils/useStore"; @@ -60,7 +62,7 @@ export const MenuList = observer((props) => { {store.authentication.userData.role === "Admin" && ( - + Keanggotaan @@ -68,7 +70,7 @@ export const MenuList = observer((props) => { {store.authentication.userData.role === "Supervisor" && ( - + Keanggotaan @@ -96,7 +98,11 @@ export const MenuList = observer((props) => { )} {store.authentication.userData.role === "Admin" && ( - } title="Produk"> + } + title="Produk" + > @@ -124,7 +130,7 @@ export const MenuList = observer((props) => { {store.authentication.userData.role === "Admin Partner" && ( - + Produk @@ -132,7 +138,7 @@ export const MenuList = observer((props) => { {store.authentication.userData.role === "Supervisor" && ( - + Produk diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index ed52837..b3b80d6 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -118,7 +118,12 @@ export const Home = observer(() => { Total Keuntungan}> - Rp.30.000.000 + + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.authentication.profileData?.wallet || 0)} + @@ -136,7 +141,12 @@ export const Home = observer(() => { Saldo}> - Rp.200.000.000 + + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.authentication.profileData?.wallet || 0)} + From 41e99814b8d51b06b075dd005568efb810087ca5 Mon Sep 17 00:00:00 2001 From: ilham Date: Tue, 28 Dec 2021 18:36:26 +0700 Subject: [PATCH 208/324] fix: remove menu --- src/pages/App/MenuList.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index a3dac73..f5ee614 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -143,14 +143,6 @@ export const MenuList = observer((props) => { )} - {store.authentication.userData.role === "Admin Partner" && ( - - - - Transaksi - - - )} {store.authentication.userData.role === "Retail" && ( From 6d751f02b650c01220c23fc4aa1aaec4c8203a40 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 28 Dec 2021 19:00:50 +0700 Subject: [PATCH 209/324] Config Menu Product Partner --- src/component/ProductComponent.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 4902208..5038449 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -120,6 +120,9 @@ export const ProductComponent = observer((props) => { ]; if (store.authentication.userData.role !== "Admin") columns.pop(); if (store.authentication.userData.role !== "Admin") delete columns[4]; + if (store.authentication.userData.role !== "Admin") delete columns[2]; + if (store.authentication.userData.role !== "Admin") delete columns[6]; + const deleteData = async (id) => { try { console.log(id); From 2960264b1680419f09528d432f22fe9326ad5547 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 28 Dec 2021 19:33:23 +0700 Subject: [PATCH 210/324] Config Menu Partner --- src/component/ProductComponent.js | 24 ++++++++++++++++++++++++ src/store/product.js | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 5038449..1e79010 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -79,6 +79,26 @@ export const ProductComponent = observer((props) => { currency: "IDR", }).format(text), }, + { + title: "Harga Jual", + dataIndex: "mark_up_price", + key: "mark_up_price", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), + }, + { + title: "Harga", + dataIndex: "price", + key: "price", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), + }, { title: "Supplier", dataIndex: "supplier_name", @@ -121,7 +141,11 @@ export const ProductComponent = observer((props) => { if (store.authentication.userData.role !== "Admin") columns.pop(); if (store.authentication.userData.role !== "Admin") delete columns[4]; if (store.authentication.userData.role !== "Admin") delete columns[2]; + if (store.authentication.userData.role !== "Admin") delete columns[3]; if (store.authentication.userData.role !== "Admin") delete columns[6]; + if (store.authentication.userData.role === "Admin") delete columns[3]; + if (store.authentication.userData.role === "Admin") delete columns[5]; + if (store.authentication.userData.role !== "Admin") delete columns[8]; const deleteData = async (id) => { try { diff --git a/src/store/product.js b/src/store/product.js index b7d6e7c..8bd3c91 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -40,7 +40,7 @@ export class Product { async getData() { try { const response = await http.get(`/product/all?supplier=${this.filterSupplier}&sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); - //console.log(response) + console.log(response) this.data = response.body.data.map((item, idx) => { item.key = idx; return item From ee6a2273529755a429ee76143ca4e587ee335ec5 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 28 Dec 2021 19:41:29 +0700 Subject: [PATCH 211/324] Perbaikan Menu Partner --- src/component/ProductComponent.js | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 1e79010..8df78c0 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -79,16 +79,6 @@ export const ProductComponent = observer((props) => { currency: "IDR", }).format(text), }, - { - title: "Harga Jual", - dataIndex: "mark_up_price", - key: "mark_up_price", - render: (text) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text), - }, { title: "Harga", dataIndex: "price", @@ -139,13 +129,13 @@ export const ProductComponent = observer((props) => { }, ]; if (store.authentication.userData.role !== "Admin") columns.pop(); - if (store.authentication.userData.role !== "Admin") delete columns[4]; if (store.authentication.userData.role !== "Admin") delete columns[2]; - if (store.authentication.userData.role !== "Admin") delete columns[3]; + if (store.authentication.userData.role === "Admin Partner") delete columns[3]; if (store.authentication.userData.role !== "Admin") delete columns[6]; - if (store.authentication.userData.role === "Admin") delete columns[3]; - if (store.authentication.userData.role === "Admin") delete columns[5]; + if (store.authentication.userData.role === "Admin Partner") delete columns[7]; + if (store.authentication.userData.role === "Admin") delete columns[4]; if (store.authentication.userData.role !== "Admin") delete columns[8]; + if (store.authentication.userData.role === "Admin Partner") delete columns[5]; const deleteData = async (id) => { try { From ba5eef89fb7e3ada920434859d280791b9d8a30f Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Wed, 29 Dec 2021 12:18:02 +0700 Subject: [PATCH 212/324] Fixing Menu --- src/component/SubcategoryComponent.js | 3 +- src/pages/App/DesktopLayout.js | 19 ++++++- src/pages/App/MenuList.js | 81 ++++++++++++++++----------- src/pages/Login/Login.js | 81 ++++++++++++++++++--------- src/pages/Membership/Membership.js | 7 +-- src/store/category.js | 2 +- src/store/membership.js | 3 +- src/store/subcategory.js | 1 + src/store/ui.js | 2 +- 9 files changed, 127 insertions(+), 72 deletions(-) diff --git a/src/component/SubcategoryComponent.js b/src/component/SubcategoryComponent.js index 3cbeb2a..fd742f2 100644 --- a/src/component/SubcategoryComponent.js +++ b/src/component/SubcategoryComponent.js @@ -85,7 +85,7 @@ export const SubcategoryComponent = observer((props) => { : message.error( response?.body?.message || "Gagal Ubah Data Sub Kategori" ); - //await getData(); + await getData(); } catch (e) { message.error( e.response?.body?.message || "Gagal Ubah Data Sub Kategori" @@ -106,6 +106,7 @@ export const SubcategoryComponent = observer((props) => { : message.error( response?.body?.message || "Gagal Tambah Sub Kategori" ); + await getData(); } catch (e) { console.log(e, "apa errornya"); message.error(e.response?.body?.message || "Gagal Tambah Sub Kategori"); diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 2a51446..b4399bf 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -140,6 +140,14 @@ export const DesktopLayout = observer(() => { )} + {store.authentication.userData.role === "Sales" && ( + + + + Keanggotaan + + + )} {store.authentication.userData.role === "Supervisor" && ( @@ -221,6 +229,14 @@ export const DesktopLayout = observer(() => { )} + {store.authentication.userData.role === "Sales" && ( + + + + Produk + + + )} {store.authentication.userData.role === "Admin Partner" && ( @@ -237,8 +253,7 @@ export const DesktopLayout = observer(() => { )} - {store.authentication.userData.role !== "Admin Partner" && - store.authentication.userData.role !== "Retail" && ( + {store.authentication.userData.role !== "Admin Partner" && ( } diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index f5ee614..607b3ae 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -51,14 +51,14 @@ export const MenuList = observer((props) => { overflowedIndicator={0} forceSubMenuRender={true} > - {/* {store.authentication.userData.role === "Admin" && ( */} - - - - Beranda - - - {/* )} */} + {store.authentication.userData.role !== "Retail" && ( + + + + Beranda + + + )} {store.authentication.userData.role === "Admin" && ( @@ -75,6 +75,14 @@ export const MenuList = observer((props) => { )} + {store.authentication.userData.role === "Sales" && ( + + + + Keanggotaan + + + )} {store.authentication.userData.role === "Admin" && ( } title="Config"> @@ -135,6 +143,14 @@ export const MenuList = observer((props) => { )} + {store.authentication.userData.role === "Sales" && ( + + + + Produk + + + )} {store.authentication.userData.role === "Supervisor" && ( @@ -151,31 +167,30 @@ export const MenuList = observer((props) => { )} - {store.authentication.userData.role !== "Retail" && - store.authentication.userData.role !== "Admin Partner" && ( - } - title="Pembayaran" - > - {store.authentication.userData.role !== "Retail" && ( - - - - Konfirmasi - - - )} - {store.authentication.userData.role !== "Admin" && ( - - - - Dibuat oleh Saya - - - )} - - )} + {store.authentication.userData.role !== "Admin Partner" && ( + } + title="Pembayaran" + > + {store.authentication.userData.role !== "Retail" && ( + + + + Konfirmasi + + + )} + {store.authentication.userData.role !== "Admin" && ( + + + + Dibuat oleh Saya + + + )} + + )} {store.authentication.userData.role !== "Admin" && ( diff --git a/src/pages/Login/Login.js b/src/pages/Login/Login.js index 7a46f2e..a0df820 100644 --- a/src/pages/Login/Login.js +++ b/src/pages/Login/Login.js @@ -1,9 +1,9 @@ import React from "react"; -import {observer} from 'mobx-react-lite'; -import {useStore} from "../../utils/useStore"; -import {Button, Card, Col, Form, Input, message, Row, Typography} from 'antd'; -import {useHistory} from "react-router-dom"; -import {LINKS} from "../../routes/app"; +import { observer } from "mobx-react-lite"; +import { useStore } from "../../utils/useStore"; +import { Button, Card, Col, Form, Input, message, Row, Typography } from "antd"; +import { useHistory } from "react-router-dom"; +import { LINKS } from "../../routes/app"; export const Login = observer(() => { const store = useStore(); @@ -23,21 +23,31 @@ export const Login = observer(() => { } message.error(e.message); } - history.push(LINKS.HOME); - } + store.authentication.userData.role === "Retail" + ? history.push(LINKS.TRANSACTION) + : history.push(LINKS.HOME); + }; return ( -
- +
+
-
-
+
+
{
{ onFinish={handleLogin} className={"w-9/12"} > - - + + - - + +
- +
diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index fd5fe25..1c12ed3 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -327,13 +327,10 @@ export const Membership = observer(() => { description={

+ Saldo System : {item.name}
Role : {item.roleName}
- Saldo Supplier : {item.coa.amount} - {" "} -
- - Saldo System : {item.coa.amount} + Saldo Supplier : {item.coa?.amount} {" "}

+ {/* Filter Categories @@ -509,7 +509,7 @@ export const ProductComponent = observer((props) => { ))} - + */} Filter Sub-Categories diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index b4399bf..6eec7f0 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -103,7 +103,7 @@ export const DesktopLayout = observer(() => { {store.ui.mediaQuery.isMobile && ( <Drawer - title="Navigation" + title={`PPOB ${store.authentication.userData.role}`} placement={"left"} closable={false} width={"50%"} @@ -124,14 +124,14 @@ export const DesktopLayout = observer(() => { }} > <Menu> - {/* {store.authentication.userData.role !== "Admin Partner" && ( */} - <Menu.Item key="home"> - <Link to={LINKS.HOME}> - <HomeOutlined /> - <span>Beranda</span> - </Link> - </Menu.Item> - {/* )} */} + {store.authentication.userData.role !== "Retail" && ( + <Menu.Item key="home"> + <Link to={LINKS.HOME}> + <HomeOutlined /> + <span>Beranda</span> + </Link> + </Menu.Item> + )} {store.authentication.userData.role === "Admin" && ( <Menu.Item key="membership"> <Link to={LINKS.MEMBERSHIP}> @@ -237,14 +237,14 @@ export const DesktopLayout = observer(() => { </Link> </Menu.Item> )} - {store.authentication.userData.role === "Admin Partner" && ( + {/* {store.authentication.userData.role === "Admin Partner" && ( <Menu.Item key="transaction"> <Link to={LINKS.TRANSACTION}> <ShoppingCartOutlined /> <span>Transaksi</span> </Link> </Menu.Item> - )} + )} */} {store.authentication.userData.role === "Retail" && ( <Menu.Item key="transaction"> <Link to={LINKS.TRANSACTION}> @@ -254,29 +254,29 @@ export const DesktopLayout = observer(() => { </Menu.Item> )} {store.authentication.userData.role !== "Admin Partner" && ( - <SubMenu - key="payback-main" - icon={<ProfileOutlined />} - title="Pembayaran" - > - {store.authentication.userData.role !== "Retail" && ( - <Menu.Item key="payback-to-user"> - <Link to={LINKS.PAYBACK}> - <PayCircleOutlined /> - <span>Konfirmasi</span> - </Link> - </Menu.Item> - )} - {store.authentication.userData.role !== "Admin" && ( - <Menu.Item key="payback-from-user"> - <Link to={LINKS.PAYBACK_CREATED}> - <AlipayOutlined /> - <span>Dibuat oleh Saya</span> - </Link> - </Menu.Item> - )} - </SubMenu> - )} + <SubMenu + key="payback-main" + icon={<ProfileOutlined />} + title="Pembayaran" + > + {store.authentication.userData.role !== "Retail" && ( + <Menu.Item key="payback-to-user"> + <Link to={LINKS.PAYBACK}> + <PayCircleOutlined /> + <span>Konfirmasi</span> + </Link> + </Menu.Item> + )} + {store.authentication.userData.role !== "Admin" && ( + <Menu.Item key="payback-from-user"> + <Link to={LINKS.PAYBACK_CREATED}> + <AlipayOutlined /> + <span>Dibuat oleh Saya</span> + </Link> + </Menu.Item> + )} + </SubMenu> + )} {store.authentication.userData.role !== "Admin" && ( <Menu.Item key="profile"> <Link to={LINKS.PROFILE}> diff --git a/src/pages/Membership/FilterUser.js b/src/pages/Membership/FilterUser.js new file mode 100644 index 0000000..814d3c6 --- /dev/null +++ b/src/pages/Membership/FilterUser.js @@ -0,0 +1,82 @@ +import React, { useState } from "react"; +import { Form, Input, Modal, Select, InputNumber,Row,Title,Col,Option } from "antd"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; + + +export const FilterUser = observer(() => { + const store = useStore(); +// const [form] = Form.useForm(); +// const { Option } = Select; +// const store = useStore(); +// const [value, setValue] = useState(); + + return ( + <Modal + visible={store.membership.visibleModalFilterMembership} + title={"Filter"} + //footer={footerLayoutFilter} + > + <Row> + <Col span={24}> + <Title level={5} type={"secondary"} strong> + Filter Supplier + + + + + + Filter Categories + + + + + + Filter Sub-Categories + + + + + + ); +}); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 1c12ed3..ae1cd98 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -13,10 +13,17 @@ import { Space, Table, Tag, + Select, + Option, + Typography, } from "antd"; import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; -import { DownloadOutlined, PlusSquareOutlined } from "@ant-design/icons"; +import { + DownloadOutlined, + PlusSquareOutlined, + FilterOutlined, +} from "@ant-design/icons"; import { MembershipModal } from "./MembershipModal"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { LINKS } from "../../routes/app"; @@ -25,6 +32,8 @@ import { ModalLoaderContext } from "../../utils/modal"; export const Membership = observer(() => { const history = useHistory(); + const { Option } = Select; + const { Title } = Typography; const [form] = Form.useForm(); const store = useStore(); const [visibleModal, setVisibleModal] = useState(false); @@ -33,14 +42,17 @@ export const Membership = observer(() => { const [initialData, setInitialData] = useState({}); const [confirmLoading, setConfirmLoading] = useState(false); const modalLoader = useContext(ModalLoaderContext); + const [filterMembership, setFilterMembership] = useState([]); + const [filterPartner, setFilterPartner] = useState([]); useEffect(() => { const init = async () => { try { modalLoader.setLoading(true); const isAdmin = store.authentication.userData.role === "Admin"; - await getData(); + await store.membership.getDataBySuperior(); + await store.partner.getData(); await store.role.getData(isAdmin); modalLoader.setLoading(false); } catch (e) { @@ -81,6 +93,59 @@ export const Membership = observer(() => { } }; + const handleRemoveFilter = async () => { + store.membership.filterMembership = null; + store.membership.filterPartner = null; + setFilterMembership([]); + setFilterPartner([]); + //store.product.filterCategory = null; + //setFilterSubCategories([]); + await store.membership.getData(); + store.membership.visibleModalFiltermembership = false; + }; + const handleCancelFilter = () => { + setFilterMembership([]); + setFilterPartner([]); + //store.product.filterCategory = null; + //setFilterSubCategories([]); + store.membership.visibleModalFilterMembership = false; + }; + + const handleSubmitFilter = async () => { + store.membership.filterMembership = filterMembership; + store.membership.filterPartner = filterPartner; + modalLoader.setLoading(true); + await store.membership.getData(); + //await store.product.getData(); + modalLoader.setLoading(false); + store.membership.visibleModalFilterMembership = false; + }; + + const footerLayoutFilter = [ + , + , + , + ]; const handleCancelTransaction = () => { setIsVisibleTopUpModal(false); setDestination(null); @@ -238,10 +303,16 @@ export const Membership = observer(() => {
- {/* */} + {store.authentication.userData.role === "Admin" && ( + + )} {/* { setVisibleModal(false); }} /> + + + + + Atasan/Superior + + + + + + Type + + + + + ); }); diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index b7b1ade..c58d4e8 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -1,7 +1,17 @@ import React, { useState } from "react"; -import { Form, Input, Modal, Select, InputNumber } from "antd"; +import { + Form, + Input, + Modal, + Select, + InputNumber, + Row, + Col, + Typography, +} from "antd"; import { useStore } from "../../utils/useStore"; +const { Title, Text } = Typography; export const MembershipModal = ({ visible, onCreate, diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 7ffebc2..7a3e6a8 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -1,4 +1,4 @@ -import React, { useContext, useEffect } from "react"; +import React, { useContext, useEffect, useState } from "react"; import { Button, Card, @@ -13,6 +13,9 @@ import { Space, Table, Tag, + Select, + Typography, + DatePicker, } from "antd"; import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; @@ -31,10 +34,14 @@ import { capitalize } from "lodash"; import { PAYBACK_STATUS } from "../../constants/payback"; const { Search } = Input; - +const { RangePicker } = DatePicker; export const Payback = observer(() => { + const { Option } = Select; + const { Title } = Typography; const store = useStore(); const modalLoader = useContext(ModalLoaderContext); + const [filterSupplier, setFilterSupplier] = useState([]); + const [filterSubCategories, setFilterSubCategories] = useState([]); useEffect(() => { const init = async () => { @@ -201,6 +208,67 @@ export const Payback = observer(() => { modalLoader.setLoading(false); }; + const handleRemoveFilter = async () => { + store.product.filterSupplier = null; + store.product.filterSubCategory = null; + setFilterSupplier([]); + store.product.filterCategory = null; + setFilterSubCategories([]); + await store.product.getData(); + store.product.visibleModalFilterProduct = false; + }; + + const handleCancelFilter = () => { + setFilterSupplier([]); + store.product.filterCategory = null; + setFilterSubCategories([]); + store.payback.visibleModalFilterPayback = false; + }; + + const handleSubmitFilter = async () => { + store.product.filterSupplier = filterSupplier; + store.product.filterSubCategory = filterSubCategories; + modalLoader.setLoading(true); + await store.product.getData(); + modalLoader.setLoading(false); + store.product.visibleModalFilterProduct = false; + }; + + const handleFilterCategory = async (value) => { + if (value) { + store.product.filterCategory = value; + await store.product.getDataSubCategories(); + } else { + store.product.filterCategory = null; + await store.product.getDataSubCategories(); + } + }; + + const footerLayoutFilter = [ + , + , + , + ]; return (
@@ -208,10 +276,14 @@ export const Payback = observer(() => {
- {/* */} + {/* { )} + + + + + From + + + + + + Date + + + {/* */} + + {/* + + Filter Sub-Categories + + + */} + + ); }); diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 7bbab08..58017d7 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -1,18 +1,32 @@ -import React, {useContext, useEffect} from "react"; -import {Button, Card, Col, Row, Table, Typography} from "antd"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {LINKS} from "../../routes/app"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {FilterOutlined} from "@ant-design/icons"; -import {format, parseISO} from "date-fns"; -import {ModalLoaderContext} from "../../utils/modal"; - -const {Title, Text} = Typography; +import React, { useContext, useEffect, useState } from "react"; +import { + Button, + Card, + Col, + Row, + Table, + Typography, + DatePicker, + Modal, + Form, +} from "antd"; +import moment from "moment"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { LINKS } from "../../routes/app"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { FilterOutlined } from "@ant-design/icons"; +import { format, parseISO } from "date-fns"; +import { ModalLoaderContext } from "../../utils/modal"; +const { Title, Text } = Typography; +const { RangePicker } = DatePicker; export const Profile = observer(() => { const store = useStore(); + const [form] = Form.useForm(); const modalLoader = useContext(ModalLoaderContext); + const [filterStart, setFilterStart] = useState([]); + const [filterEnd, setFilterEnd] = useState([]); const routeData = [ { @@ -21,7 +35,7 @@ export const Profile = observer(() => { }, { route: LINKS.PROFILE, - name: Profil, + name: Profil, }, ]; @@ -33,68 +47,144 @@ export const Profile = observer(() => { store.transaction.getDataHistoryTransaction(), ]); modalLoader.setLoading(false); - })() + })(); }, []); + const handleRemoveFilter = async () => { + store.transaction.filterStart = null; + store.transaction.filterEnd = null; + setFilterStart([]); + setFilterEnd([]); + await store.transaction.getDataHistoryTransaction(); + store.product.visibleModalFilterProduct = false; + }; + + const handleCancelFilter = () => { + store.transaction.filterStart = null; + store.transaction.filterEnd = null; + store.transaction.visibleModalFilterTransaction = false; + }; + + const handleSubmitFilter = async () => { + // store.product.filterSupplier = filterSupplier; + // store.product.filterSubCategory = filterSubCategories; + // modalLoader.setLoading(true); + // await store.product.getData(); + // modalLoader.setLoading(false); + // store.transaction.visibleModalFilterTransaction = false; + + console.log(form.getFieldsValue(), "Tes"); + const data = form.getFieldsValue(); + store.transaction.filterStart = data.start_date; + store.transaction.filterEnd = data.end_date; + modalLoader.setLoading(true); + await store.transaction.getDataHistoryTransaction(); + modalLoader.setLoading(false); + store.transaction.visibleModalFilterTransaction = false; + }; + + // const handleFilterCategory = async (value) => { + // if (value) { + // store.product.filterCategory = value; + // await store.product.getDataSubCategories(); + // } else { + // store.product.filterCategory = null; + // await store.product.getDataSubCategories(); + // } + // }; + + const footerLayoutFilter = [ + , + , + , + ]; const columns = [ { - title: 'Markup Price', - dataIndex: 'mark_up_price', - key: 'mark_up_price', - width: '20%', + title: "Markup Price", + dataIndex: "mark_up_price", + key: "mark_up_price", + width: "20%", render: (text) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text), + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { - title: 'Name', - dataIndex: 'name', - key: 'name', - width: '50%', + title: "Name", + dataIndex: "name", + key: "name", + width: "50%", }, { - title: 'Transaction Date', - dataIndex: 'created_at', - key: 'created_at', + title: "Transaction Date", + dataIndex: "created_at", + key: "created_at", render: (text, record) => { return ( - {format(parseISO(record.created_at), 'mm:HH dd-MM-yyyy')} - ) + {format(parseISO(record.created_at), "mm:HH dd-MM-yyyy")} + ); }, }, - ] + ]; - const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? { - display: "flex", - justifyContent: "center" - } : {fontSize: "0.75rem"}; - const styleSaldoContent = store.ui.mediaQuery.isDesktop ? { - fontSize: '1.25rem', - display: "flex", - justifyContent: "center" - } : null; + const styleSaldoTitle = store.ui.mediaQuery.isDesktop + ? { + display: "flex", + justifyContent: "center", + } + : { fontSize: "0.75rem" }; + const styleSaldoContent = store.ui.mediaQuery.isDesktop + ? { + fontSize: "1.25rem", + display: "flex", + justifyContent: "center", + } + : null; return (
- + Profile - +
Name- {store.authentication.profileData?.userDetail?.name} + + {store.authentication.profileData?.userDetail?.name} + Phone Number- {store.authentication.profileData?.userDetail?.phone_number} + + {store.authentication.profileData?.userDetail?.phone_number} + Username @@ -112,63 +202,175 @@ export const Profile = observer(() => { Superior- {store.authentication.profileData.superior?.username} + + {store.authentication.profileData.superior?.username} + - + - - Saldo + + + Saldo + - { - new Intl.NumberFormat("id-ID", { + + {new Intl.NumberFormat("id-ID", { style: "currency", - currency: "IDR" - }) - .format(store.authentication.profileData?.wallet || 0)} + currency: "IDR", + }).format(store.authentication.profileData?.wallet || 0)} + + + + + + + + Profit + + + + + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.authentication.profileData?.wallet || 0)} + + +
- History User Transaction - - {/* */} +
{ - let pageNumber = page.current; - store.transaction.pageSizeHistoryTransaction = page.pageSize; - store.transaction.pageHistoryTransaction = pageNumber - 1; - modalLoader.setLoading(true); - await store.transaction.getDataHistoryTransaction(); - modalLoader.setLoading(false); - }} + columns={columns} + bordered + dataSource={store.transaction.dataHistoryTransaction} + pagination={{ + pageSize: store.transaction.pageSizeHistoryTransaction, + total: store.transaction.total_dataHistoryTransaction, + current: store.transaction.pageHistoryTransaction + 1, + showSizeChanger: true, + simple: false, + }} + onChange={async (page) => { + let pageNumber = page.current; + store.transaction.pageSizeHistoryTransaction = page.pageSize; + store.transaction.pageHistoryTransaction = pageNumber - 1; + modalLoader.setLoading(true); + await store.transaction.getDataHistoryTransaction(); + modalLoader.setLoading(false); + }} /> -
+
+ + +
+ + + + + + + + + {/* */} + + {/* + + Filter Categories + + + + + + Filter Sub-Categories + + + */} + + - ) + ); }); diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index d79abf5..c4558ed 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -160,9 +160,9 @@ export const Product = observer(() => { > diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js index 7c4b7a3..7984069 100644 --- a/src/pages/Transaction/Transaction.js +++ b/src/pages/Transaction/Transaction.js @@ -1,17 +1,28 @@ -import React, {message, useContext, useEffect} from "react"; -import {useStore} from "../../utils/useStore"; -import {Card, Tabs} from "antd"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {Product} from "./Product"; -import {LINKS} from "../../routes/app"; -import {observer} from "mobx-react-lite"; -import {ModalLoaderContext} from "../../utils/modal"; - -const {TabPane} = Tabs; +import React, { message, useContext, useEffect, useState } from "react"; +import { useStore } from "../../utils/useStore"; +import { + Card, + Tabs, + Col, + Button, + Typography, + Select, + Modal, + Row, + DatePicker, +} from "antd"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { Product } from "./Product"; +import { LINKS } from "../../routes/app"; +import { observer } from "mobx-react-lite"; +import { ModalLoaderContext } from "../../utils/modal"; +import { FilterOutlined } from "@ant-design/icons"; +const { TabPane } = Tabs; export const Transaction = observer(() => { const store = useStore(); - + const { Title } = Typography; + const { Option } = Select; const modalLoader = useContext(ModalLoaderContext); useEffect(() => { @@ -50,25 +61,30 @@ export const Transaction = observer(() => { }, { route: LINKS.TRANSACTION, - name: Transaksi, + name: Transaksi, }, ]; return (
- + - +
+ {/* */} + + {store.transaction.dataCategories.map((item, index) => ( - + ))} - diff --git a/src/store/membership.js b/src/store/membership.js index f9cd8d4..197eb89 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -9,6 +9,11 @@ export class Membership { dataDetail = {}; + + //filter + visibleModalFilterMembership = false; + filterMembership = null; + filterPartner = null; constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); @@ -16,8 +21,10 @@ export class Membership { async getData() { try { - const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}`); - //console.log(response) + const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}&superrior=${this.filterMembership}&type=${this.filterPartner}`); + // console.log(this.filterMembership) + // console.log(this.filterPartner) + // console.log(response) this.data = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; diff --git a/src/store/payback.js b/src/store/payback.js index 279d56f..3ef65d0 100644 --- a/src/store/payback.js +++ b/src/store/payback.js @@ -13,7 +13,10 @@ export class Payback { pageSizeConfirmation = 10; dataConfirmation = []; totalDataConfirmation = 0; + //data=[] + //filter + visibleModalFilterPayback = false; constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); @@ -21,8 +24,7 @@ export class Payback { async getDataCreated() { try { - const response = await http.get( - `/transaction/deposit-return?page=${this.pageCreated}&pageSize=${this.pageSizeCreated}` + const response = await http.get(`/transaction/deposit-return?page=${this.pageCreated}&pageSize=${this.pageSizeCreated}` ); this.dataCreated = response.body.data.map((item, idx) => { item.key = idx; @@ -40,6 +42,7 @@ export class Payback { const response = await http.get( `/transaction/deposit-return/confirmation?page=${this.pageConfirmation}&pageSize=${this.pageSizeConfirmation}` ); + console.log(response) this.dataConfirmation = response.body.data.map((item, idx) => { item.key = idx; return item; @@ -84,6 +87,8 @@ export class Payback { async confirmPayback(id, data) { try { const response = await http.put(`/transaction/deposit-return/confirmation/${id}/${data}`); + // console.log(response) + // this.data=response.body.data await Promise.all([ this.getDataConfirmation(), this.getDataCreated() diff --git a/src/store/transaction.js b/src/store/transaction.js index 951c4d8..47cba84 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -1,150 +1,165 @@ -import {makeAutoObservable} from "mobx"; -import {http} from "../utils/http"; +import { makeAutoObservable } from "mobx"; +import { http } from "../utils/http"; export class Transaction { - page = 0; - pageSize = 10 - data = []; - total_data = 0; - filterSubCategory = null; - visibleModalProduct = false; - visibleModalTransaction = false; + page = 0; + pageSize = 10; + data = []; + total_data = 0; + filterSubCategory = null; + visibleModalProduct = false; + visibleModalTransaction = false; - pageCategories = 0; - pageSizeCategories = 10 - dataCategories = []; - total_dataCategories = 0; + pageCategories = 0; + pageSizeCategories = 10; + dataCategories = []; + total_dataCategories = 0; - pageSubCategories = 0; - pageSizeSubCategories = 10 - dataSubCategories = []; - total_dataSubCategories = 0; - filterSubCategory = null; + pageSubCategories = 0; + pageSizeSubCategories = 10; + dataSubCategories = []; + total_dataSubCategories = 0; + filterSubCategory = null; - pageHistoryTransaction = 0; - pageSizeHistoryTransaction = 10 - dataHistoryTransaction = []; - total_dataHistoryTransaction = 0; + pageHistoryTransaction = 0; + pageSizeHistoryTransaction = 10; + dataHistoryTransaction = []; + total_dataHistoryTransaction = 0; - pageHistoryTopUp = 0; - pageSizeHistoryTopUp = 10; - dataHistoryTopUp = []; - total_dataHistoryTopUp = 0; + pageHistoryTopUp = 0; + pageSizeHistoryTopUp = 10; + dataHistoryTopUp = []; + total_dataHistoryTopUp = 0; - constructor(ctx) { - this.ctx = ctx; - makeAutoObservable(this); + //filter + visibleModalFilterTransaction = false; + filterStart = null; + filterEnd = null; + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } + + async getData() { + try { + const response = await http.get( + `/product/by-categories-all?sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}` + ); + this.data = response.body.data ?? []; + this.total_data = response?.body?.count ?? 0; + } catch (e) { + console.error(e); } + } - async getData() { - try { - const response = await http.get(`/product/by-categories-all?sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`); - this.data = response.body.data ?? [] - this.total_data = response?.body?.count ?? 0 - } catch (e) { - console.error(e); - } + async getDataSubCategories() { + try { + const response = await http.get( + `/product/sub-categories?category=${this.filterCategory}&page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}` + ); + this.dataSubCategories = response.body.data ?? []; + this.total_dataSubCategories = response.body.count ?? 0; + } catch (e) { + console.error(e); } + } - async getDataSubCategories() { - try { - const response = await http.get(`/product/sub-categories?category=${this.filterCategory}&page=${this.pageSubCategories}&pageSize=${this.pageSizeSubCategories}`); - this.dataSubCategories = response.body.data ?? [] - this.total_dataSubCategories = response.body.count ?? 0 - } catch (e) { - console.error(e); - } + async getDataCategories() { + try { + const response = await http.get( + `/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}` + ); + this.dataCategories = response.body.data ?? []; + this.total_dataCategories = response?.body?.count ?? 0; + if (this.dataCategories.length > 0) { + this.filterCategory = this.dataCategories[0].id; + } + } catch (e) { + console.error(e); } + } - async getDataCategories() { - try { - const response = await http.get(`/product/categories?page=${this.pageCategories}&pageSize=${this.pageSizeCategories}`); - this.dataCategories = response.body.data ?? [] - this.total_dataCategories = response?.body?.count ?? 0 - if (this.dataCategories.length > 0) { - this.filterCategory = this.dataCategories[0].id - } - } catch (e) { - console.error(e); - } + async getDataHistoryTransaction() { + try { + const response = await http.get( + `/transaction/history?page=${this.pageHistoryTransaction}&pageSize=${this.pageSizeHistoryTransaction}&start=${this.filterStart}&end=${this.filterEnd}` + ); + console.log(response); + this.dataHistoryTransaction = response.body.data ?? []; + this.total_dataHistoryTransaction = response?.body?.count ?? 0; + } catch (e) { + console.error(e); } + } - async getDataHistoryTransaction() { - try { - const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}&pageSize=${this.pageSizeHistoryTransaction}`); - this.dataHistoryTransaction = response.body.data ?? [] - this.total_dataHistoryTransaction = response?.body?.count ?? 0 - } catch (e) { - console.error(e); - } + async getDataHistoryTopUp(id) { + try { + const response = await http.get( + `/transaction/history-deposit?page=${this.pageHistoryTopUp}&pageSize=${this.pageSizeHistoryTopUp}&user-destination=${id}` + ); + this.dataHistoryTopUp = response.body.data ?? []; + this.total_dataHistoryTopUp = response?.body?.count ?? 0; + } catch (e) { + console.error(e); } + } - async getDataHistoryTopUp(id) { - try { - const response = await http.get(`/transaction/history-deposit?page=${this.pageHistoryTopUp}&pageSize=${this.pageSizeHistoryTopUp}&user-destination=${id}`); - this.dataHistoryTopUp = response.body.data ?? [] - this.total_dataHistoryTopUp = response?.body?.count ?? 0 - } catch (e) { - console.error(e); - } + async create(data) { + try { + const response = await http.post("/product").send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); } + } - async create(data) { - try { - const response = await http.post('/product').send(data); - await this.getData(); - return response; - } catch (e) { - console.error(e); - } + async buyProduct(data) { + try { + const response = await http.post("/transaction/order").send(data); + return response; + } catch (e) { + console.error(e); } + } - async buyProduct(data) { - try { - const response = await http.post('/transaction/order').send(data); - return response; - } catch (e) { - console.error(e); - } + async update(id, data) { + try { + const response = await http.put(`/product/${id}`).send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); } + } - async update(id, data) { - try { - const response = await http.put(`/product/${id}`).send(data); - await this.getData(); - return response; - } catch (e) { - console.error(e); - } + async delete(id) { + try { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); } + } - async delete(id) { - try { - const response = await http.del(`/product/${id}`); - await this.getData(); - return response; - } catch (e) { - console.error(e); - } + async distribute(data) { + try { + const response = await http.post("/transaction/distribute").send(data); + return response; + } catch (e) { + console.error(e); } + } - async distribute(data) { - try { - const response = await http.post('/transaction/distribute').send(data); - return response; - } catch (e) { - console.error(e); - } - } - - async distributeAdmin(data) { - try { - const response = await http.post('/transaction/distribute-admin').send(data); - return response; - } catch (e) { - console.error(e); - } + async distributeAdmin(data) { + try { + const response = await http + .post("/transaction/distribute-admin") + .send(data); + return response; + } catch (e) { + console.error(e); } + } } - - From bf3e66b5b57d46e1ff599ccee5191438ed2100e4 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 30 Dec 2021 12:28:53 +0700 Subject: [PATCH 214/324] Hit Api Total Transaksi --- src/pages/Home/Home.js | 237 ++++++++++++++++++++++++++++++++++- src/pages/Profile/Profile.js | 28 ++--- src/store/authentication.js | 2 + src/store/transaction.js | 14 +++ 4 files changed, 259 insertions(+), 22 deletions(-) diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index b3b80d6..696969b 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -1,14 +1,96 @@ -import React from "react"; -import { Button, PageHeader, Card, Row, Col } from "antd"; -import { store } from "../../utils/useStore"; +import React, { useContext, useEffect } from "react"; +import { Button, PageHeader, Card, Row, Col, message, Table } from "antd"; +import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; import { DropboxOutlined, DollarCircleOutlined, BarChartOutlined, } from "@ant-design/icons"; +import { ModalLoaderContext } from "../../utils/modal"; export const Home = observer(() => { + const modalLoader = useContext(ModalLoaderContext); + const store = useStore(); + useEffect(() => { + const init = async () => { + try { + modalLoader.setLoading(true); + const isAdmin = store.authentication.userData.role === "Admin"; + await getData(); + await store.membership.getDataBySuperior(); + await store.partner.getData(); + await store.transaction.getDataTransaction(); + await store.role.getData(isAdmin); + modalLoader.setLoading(false); + } catch (e) { + console.error(e); + modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); + } + }; + + init(); + }, []); + const getData = async () => { + store.authentication.userData.role === "Admin" + ? await store.membership.getData() + : await store.membership.getDataBySuperior(); + }; + const columns = [ + { + title: "Name", + dataIndex: "name", + key: "name", + render: (text, record) => record?.name ?? record?.username, + }, + { + title: "Role", + dataIndex: "roleName", + key: "role", + }, + { + title: "Saldo", + dataIndex: ["coa", "amount"], + key: ["coa", "amount"], + width: "20%", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), + }, + // { + // title: "Action", + // key: "action", + // render: (text, record) => ( + // + // + // + // + // ), + // }, + ]; return (
{store.ui.mediaQuery.isDesktop && ( @@ -32,7 +114,9 @@ export const Home = observer(() => { Total Transaksi}> - Total Transaksi : 25 Transaksi +

+

{store.transaction.dataTransaction} Transaksi

+

@@ -84,6 +168,78 @@ export const Home = observer(() => { )} + {store.authentication.userData.role === "Admin" && + store.ui.mediaQuery.isDesktop && ( + + +
{ + let pageNumber = page.current; + store.membership.pageSize = page.pageSize; + store.membership.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + + +
{ + let pageNumber = page.current; + store.membership.pageSize = page.pageSize; + store.membership.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + + + )} {store.ui.mediaQuery.isMobile && (
{ Total Transaksi}> - Total Transaksi : 25 Transaksi +

+

{store.transaction.dataTransaction} Transaksi

+

@@ -152,6 +310,75 @@ export const Home = observer(() => {
)} + {store.authentication.userData.role === "Admin" && + store.ui.mediaQuery.isMobile && ( + + +
{ + let pageNumber = page.current; + store.membership.pageSize = page.pageSize; + store.membership.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + + +
{ + let pageNumber = page.current; + store.membership.pageSize = page.pageSize; + store.membership.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + + + )} ); }); diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 58017d7..f079a0b 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -120,9 +120,9 @@ export const Profile = observer(() => { ]; const columns = [ { - title: "Markup Price", - dataIndex: "mark_up_price", - key: "mark_up_price", + title: "Price", + dataIndex: "price", + key: "price", width: "20%", render: (text) => new Intl.NumberFormat("id-ID", { @@ -131,9 +131,9 @@ export const Profile = observer(() => { }).format(text), }, { - title: "Name", - dataIndex: "name", - key: "name", + title: "Buyer", + dataIndex: "buyer", + key: "buyer", width: "50%", }, { @@ -141,9 +141,7 @@ export const Profile = observer(() => { dataIndex: "created_at", key: "created_at", render: (text, record) => { - return ( - {format(parseISO(record.created_at), "mm:HH dd-MM-yyyy")} - ); + return {format(parseISO(record.created_at), "dd-MM-yyyy")}; }, }, ]; @@ -208,7 +206,7 @@ export const Profile = observer(() => { - + @@ -226,7 +224,7 @@ export const Profile = observer(() => { <Col></Col> </Row> </Col> - <Col> + <Col span={store.ui.mediaQuery.isMobile ? 8 : 5}> <Row justify={"center"}> <Col lg={12} xs={12}> <Title strong level={3} style={styleSaldoTitle}> @@ -292,17 +290,13 @@ export const Profile = observer(() => { > <Row> <Col span={24}> - <Form - layout="vertical" - name="filter" - form={form} - > + <Form layout="vertical" name="filter" form={form}> <Form.Item name="start_date" label="Dari" rules={[{ required: true, message: "Please input Date!" }]} > - <DatePicker style={{ width: "100%" }}/> + <DatePicker style={{ width: "100%" }} /> </Form.Item> <Form.Item name="end_date" diff --git a/src/store/authentication.js b/src/store/authentication.js index 2d2ee4d..6cde95a 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -2,6 +2,7 @@ import {makeAutoObservable, runInAction} from "mobx"; import {TokenUtil} from "../utils/token"; import {http} from "../utils/http"; + export class Authentication { isLoggedIn = false; isLoginLoading = false; @@ -53,6 +54,7 @@ export class Authentication { async getProfile() { try { const response = await http.get('/auth/profile'); + console.log(response) this.profileData = response.body; } catch (e) { console.error(e); diff --git a/src/store/transaction.js b/src/store/transaction.js index 47cba84..32be61d 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -30,6 +30,7 @@ export class Transaction { pageSizeHistoryTopUp = 10; dataHistoryTopUp = []; total_dataHistoryTopUp = 0; + dataTransaction=[] //filter visibleModalFilterTransaction = false; @@ -52,6 +53,19 @@ export class Transaction { } } + async getDataTransaction() { + try { + const response = await http.get( + `/transaction/total-order` + ); + //console.log(response) + this.dataTransaction = response.body.data ?? []; + this.total_data = response?.body?.count ?? 0; + } catch (e) { + console.error(e); + } + } + async getDataSubCategories() { try { const response = await http.get( From 467d67089f61f69a8054c706b4c18709ff520890 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Thu, 30 Dec 2021 15:23:20 +0700 Subject: [PATCH 215/324] Tambah Fitur --- src/component/PartnerComponent.js | 6 +- src/pages/Membership/MembershipModal.js | 6 +- src/pages/Profile/Profile.js | 76 +------------------------ 3 files changed, 7 insertions(+), 81 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 7dd2f90..9f95638 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -418,11 +418,11 @@ export const PartnerComponent = observer((props) => { }, { pattern: /^(?:\d*)$/, - message: "Value should contain just number", + message: "Phone number should contain just number", }, { - pattern: /^[\d]{0,12}$/, - message: "Value should be less than 12 character", + pattern: /^[\d]{2,12}$/, + message: "Phone number should be 12 character", }, ]} > diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index c58d4e8..52fe0d7 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -98,12 +98,12 @@ export const MembershipModal = ({ }, { pattern: /^(?:\d*)$/, - message: "Value should contain just number", + message: "Phone number should contain just number", }, { //pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/, - pattern: /^[\d]{0,12}$/, - message: "Value should be less than 12 character", + pattern: /^[\d]{2,12}$/, + message: "Phone number should be 12 character", }, ]} > diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index f079a0b..42f0f04 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -66,14 +66,6 @@ export const Profile = observer(() => { }; const handleSubmitFilter = async () => { - // store.product.filterSupplier = filterSupplier; - // store.product.filterSubCategory = filterSubCategories; - // modalLoader.setLoading(true); - // await store.product.getData(); - // modalLoader.setLoading(false); - // store.transaction.visibleModalFilterTransaction = false; - - console.log(form.getFieldsValue(), "Tes"); const data = form.getFieldsValue(); store.transaction.filterStart = data.start_date; store.transaction.filterEnd = data.end_date; @@ -83,16 +75,6 @@ export const Profile = observer(() => { store.transaction.visibleModalFilterTransaction = false; }; - // const handleFilterCategory = async (value) => { - // if (value) { - // store.product.filterCategory = value; - // await store.product.getDataSubCategories(); - // } else { - // store.product.filterCategory = null; - // await store.product.getDataSubCategories(); - // } - // }; - const footerLayoutFilter = [ <Button key={"remove"} @@ -303,66 +285,10 @@ export const Profile = observer(() => { label="Sampai" rules={[{ required: true, message: "Please input Date!" }]} > - <DatePicker - style={{ width: "100%" }} - // defaultValue={moment("YYYY-MM-DD")} - /> + <DatePicker style={{ width: "100%" }} /> </Form.Item> </Form> - {/* <Select - mode={"multiple"} - placeholder="Choose Supplier" - onChange={(val) => { - setFilterSupplier(val); - }} - style={{ marginBottom: "20px", width: "100%" }} - value={filterSupplier} - > - {store.supplier.data.map((item) => ( - <Option value={item.id} key={item.id}> - {item.name} - </Option> - ))} - </Select> */} </Col> - {/* <Col span={24}> - <Title level={5} type={"secondary"} strong> - Filter Categories - - - - - - Filter Sub-Categories - - - */} From 07c08472b39b0800206d3a84752615865b3fa677 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 30 Dec 2021 17:38:34 +0700 Subject: [PATCH 216/324] Perbaikan Menu Profil --- src/pages/Profile/Profile.js | 69 +++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 42f0f04..ac999c2 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -105,7 +105,7 @@ export const Profile = observer(() => { title: "Price", dataIndex: "price", key: "price", - width: "20%", + render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", @@ -113,10 +113,34 @@ export const Profile = observer(() => { }).format(text), }, { - title: "Buyer", + title: "Pembeli", dataIndex: "buyer", key: "buyer", - width: "50%", + }, + { + title: "Tujuan", + dataIndex: "tujuan", + key: "tujuan", + }, + { + title: "ID Transaksi", + dataIndex: "id_transaksi", + key: "id_transaksi", + }, + { + title: "Status", + dataIndex: "status", + key: "status", + }, + { + title: "No Seri", + dataIndex: "no_seri", + key: "no_seri", + }, + { + title: "IDTrx Mitra", + dataIndex: "idtrx_mitra", + key: "idtrx_mitra", }, { title: "Transaction Date", @@ -206,30 +230,33 @@ export const Profile = observer(() => { - - - - - Profit - + {store.authentication.userData.role === "Admin" || + (store.authentication.userData.role === "Supervisor" && ( + + + + + Profit + + + + + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.authentication.profileData?.wallet || 0)} + + + + - - - {new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.authentication.profileData?.wallet || 0)} - - - - - + ))}
- History User Transaction + History Transaction
- - - - - + + + + + + + Produk & Nominal @@ -115,7 +115,7 @@ export const Product = observer(() => { { - setVisibleModalBuy(true) + setVisibleModalBuy(true); }} hoverable style={{ @@ -123,12 +123,12 @@ export const Product = observer(() => { marginLeft: 10, borderColor: "salmon", height: 100, - marginBottom: 10 + marginBottom: 10, }} > - {item.product_name} -
- + {item.product_name} +
+ {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", @@ -137,34 +137,47 @@ export const Product = observer(() => {
{ - form.resetFields(); - handleCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form"); - handleBuyProduct(values, item.product_code); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} + visible={visibleModalBuy} + title={`Are you sure buy ${item.product_name}?`} + okText={"Confirm"} + cancelText="Cancel" + onCancel={() => { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleBuyProduct(values, item.product_code); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} > - + From bf332f9494f657aebc38a391fe51fe1c31ab4159 Mon Sep 17 00:00:00 2001 From: ilham Date: Thu, 30 Dec 2021 22:21:32 +0700 Subject: [PATCH 218/324] fix: profile --- src/pages/Profile/Profile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index ac999c2..c9c4144 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -224,7 +224,7 @@ export const Profile = observer(() => { {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", - }).format(store.authentication.profileData?.wallet || 0)} + }).format(store.authentication.profileData?.profit || 0)} From 0e12a22be38997466ca9cb34da813d69a382525f Mon Sep 17 00:00:00 2001 From: ilham Date: Thu, 30 Dec 2021 22:31:34 +0700 Subject: [PATCH 219/324] fix: get product --- src/component/ProductComponent.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 0ffcece..a5f6f93 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -129,11 +129,11 @@ export const ProductComponent = observer((props) => { }, ]; if (store.authentication.userData.role !== "Admin") columns.pop(); - if (store.authentication.userData.role !== "Admin") delete columns[2]; + if (store.authentication.userData.role === "Admin Partner") delete columns[2]; if (store.authentication.userData.role === "Admin Partner") delete columns[3]; + if (store.authentication.userData.role != "Admin Partner") delete columns[4]; if (store.authentication.userData.role !== "Admin") delete columns[6]; if (store.authentication.userData.role === "Admin Partner") delete columns[7]; - if (store.authentication.userData.role === "Admin") delete columns[4]; if (store.authentication.userData.role !== "Admin") delete columns[8]; if (store.authentication.userData.role === "Admin Partner") delete columns[5]; From a444623d0dfc58e2b82ad0035ad564688db06269 Mon Sep 17 00:00:00 2001 From: ilham Date: Fri, 31 Dec 2021 00:18:52 +0700 Subject: [PATCH 220/324] fix: membership and config partner --- src/component/PartnerComponent.js | 2 +- src/pages/Membership/Membership.js | 2 +- src/store/membership.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index cfddd6f..29c3a46 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -391,7 +391,7 @@ export const PartnerComponent = observer((props) => { )} {((idData && isChangePassword) || !idData) && ( { value={filterMembership} > {store.membership.data.map((item) => ( - ))} diff --git a/src/store/membership.js b/src/store/membership.js index 197eb89..a9f78cb 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -21,7 +21,7 @@ export class Membership { async getData() { try { - const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}&superrior=${this.filterMembership}&type=${this.filterPartner}`); + const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}&superior=${this.filterMembership}&type=${this.filterPartner}`); // console.log(this.filterMembership) // console.log(this.filterPartner) // console.log(response) From 71840f249702a2145e5a03eee164fa0c2889ca17 Mon Sep 17 00:00:00 2001 From: ilham Date: Fri, 31 Dec 2021 00:25:04 +0700 Subject: [PATCH 221/324] add: profit in profile --- src/pages/Profile/Profile.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index c9c4144..d073070 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -224,7 +224,7 @@ export const Profile = observer(() => { {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", - }).format(store.authentication.profileData?.profit || 0)} + }).format(store.authentication.profileData?.wallet || 0)} @@ -244,7 +244,7 @@ export const Profile = observer(() => { {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", - }).format(store.authentication.profileData?.wallet || 0)} + }).format(store.authentication.profileData?.profit || 0)} From fb0ccd0509c5f5682ddb246d49279ecc59a4f130 Mon Sep 17 00:00:00 2001 From: ilham Date: Fri, 31 Dec 2021 01:11:13 +0700 Subject: [PATCH 222/324] fix: profile --- src/pages/Profile/Profile.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index d073070..724c17d 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -119,13 +119,13 @@ export const Profile = observer(() => { }, { title: "Tujuan", - dataIndex: "tujuan", - key: "tujuan", + dataIndex: "transaction_destination", + key: "transaction_destination", }, { - title: "ID Transaksi", - dataIndex: "id_transaksi", - key: "id_transaksi", + title: "Kode Transaksi", + dataIndex: "transaction_code", + key: "transaction_code", }, { title: "Status", @@ -134,13 +134,13 @@ export const Profile = observer(() => { }, { title: "No Seri", - dataIndex: "no_seri", - key: "no_seri", + dataIndex: "seri_number", + key: "seri_number", }, { title: "IDTrx Mitra", - dataIndex: "idtrx_mitra", - key: "idtrx_mitra", + dataIndex: "partner_transaction_code", + key: "partner_transaction_code", }, { title: "Transaction Date", From 47b8f1fc84346a07c0cabba8f828cf3d564e0845 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 31 Dec 2021 07:32:39 +0700 Subject: [PATCH 223/324] bug fixing --- src/pages/Membership/Membership.js | 18 ++++++++--- src/pages/Profile/Profile.js | 50 ++++++++++++++++++++++++++++-- 2 files changed, 61 insertions(+), 7 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index ae1cd98..e3c60fa 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -94,14 +94,19 @@ export const Membership = observer(() => { }; const handleRemoveFilter = async () => { - store.membership.filterMembership = null; - store.membership.filterPartner = null; setFilterMembership([]); setFilterPartner([]); - //store.product.filterCategory = null; - //setFilterSubCategories([]); + store.membership.visibleModalFilterMembership = false; await store.membership.getData(); - store.membership.visibleModalFiltermembership = false; + + + // store.transaction.filterStart = null; + // store.transaction.filterEnd = null; + // form.resetFields(); + // setFilterStart([]); + // setFilterEnd([]); + // await store.transaction.getDataHistoryTransaction(); + // store.transaction.visibleModalFilterTransaction = false; }; const handleCancelFilter = () => { setFilterMembership([]); @@ -513,6 +518,9 @@ export const Membership = observer(() => { visible={store.membership.visibleModalFilterMembership} title={"Filter"} footer={footerLayoutFilter} + onCancel={() => { + store.membership.visibleModalFilterMembership = false; + }} > diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index ac999c2..9cd63ba 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -53,14 +53,16 @@ export const Profile = observer(() => { const handleRemoveFilter = async () => { store.transaction.filterStart = null; store.transaction.filterEnd = null; + form.resetFields(); setFilterStart([]); setFilterEnd([]); await store.transaction.getDataHistoryTransaction(); - store.product.visibleModalFilterProduct = false; + store.transaction.visibleModalFilterTransaction = false; }; const handleCancelFilter = () => { store.transaction.filterStart = null; + form.resetFields(); store.transaction.filterEnd = null; store.transaction.visibleModalFilterTransaction = false; }; @@ -79,6 +81,10 @@ export const Profile = observer(() => { , - , + + + + + + + + + + + */} { + form.resetFields(); + store.transaction.visibleModalFilterTransaction=false + }} > From 42795d9ca40f80134d75efdd2b5883a6e41d7a3b Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 31 Dec 2021 07:39:56 +0700 Subject: [PATCH 224/324] Bug Fixing --- src/pages/Membership/Membership.js | 12 ---------- src/pages/Profile/Profile.js | 38 ------------------------------ 2 files changed, 50 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index da92fe1..b664d30 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -98,21 +98,10 @@ export const Membership = observer(() => { setFilterPartner([]); store.membership.visibleModalFilterMembership = false; await store.membership.getData(); - - - // store.transaction.filterStart = null; - // store.transaction.filterEnd = null; - // form.resetFields(); - // setFilterStart([]); - // setFilterEnd([]); - // await store.transaction.getDataHistoryTransaction(); - // store.transaction.visibleModalFilterTransaction = false; }; const handleCancelFilter = () => { setFilterMembership([]); setFilterPartner([]); - //store.product.filterCategory = null; - //setFilterSubCategories([]); store.membership.visibleModalFilterMembership = false; }; @@ -121,7 +110,6 @@ export const Membership = observer(() => { store.membership.filterPartner = filterPartner; modalLoader.setLoading(true); await store.membership.getData(); - //await store.product.getData(); modalLoader.setLoading(false); store.membership.visibleModalFilterMembership = false; }; diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 9837f2d..1fb1a08 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -81,10 +81,6 @@ export const Profile = observer(() => { , , @@ -304,36 +296,6 @@ export const Profile = observer(() => {
- {/* { - form.resetFields(); - store.membership.visibleModalFilterTransaction=false - }} - > - -
- - - - - - - - - - - */} Date: Fri, 31 Dec 2021 09:23:24 +0700 Subject: [PATCH 225/324] Perbaikan Modal --- src/component/ProductComponent.js | 50 ++++++-------- src/pages/Membership/Membership.js | 1 + src/pages/Payback/Payback.js | 102 +++++++++++++++++++---------- src/pages/Profile/Profile.js | 1 + src/store/membership.js | 3 +- src/store/payback.js | 3 + 6 files changed, 93 insertions(+), 67 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index a5f6f93..f2daca7 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -210,16 +210,16 @@ export const ProductComponent = observer((props) => { store.product.filterSupplier = null; store.product.filterSubCategory = null; setFilterSupplier([]); - store.product.filterCategory = null; setFilterSubCategories([]); await store.product.getData(); store.product.visibleModalFilterProduct = false; }; const handleCancelFilter = () => { - setFilterSupplier([]); - store.product.filterCategory = null; + store.product.filterSubCategory = null; + store.product.filterSupplier = null; setFilterSubCategories([]); + setFilterSupplier([]); store.product.visibleModalFilterProduct = false; }; @@ -229,18 +229,20 @@ export const ProductComponent = observer((props) => { modalLoader.setLoading(true); await store.product.getData(); modalLoader.setLoading(false); + setFilterSupplier([]); + setFilterSubCategories([]); store.product.visibleModalFilterProduct = false; }; - const handleFilterCategory = async (value) => { - if (value) { - store.product.filterCategory = value; - await store.product.getDataSubCategories(); - } else { - store.product.filterCategory = null; - await store.product.getDataSubCategories(); - } - }; + // const handleFilterCategory = async (value) => { + // if (value) { + // store.product.filterCategory = value; + // await store.product.getDataSubCategories(); + // } else { + // store.product.filterCategory = null; + // await store.product.getDataSubCategories(); + // } + // }; const footerLayoutFilter = [ @@ -492,24 +498,6 @@ export const ProductComponent = observer((props) => { ))} - {/* - - Filter Categories - - - */} Filter Sub-Categories diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index b664d30..2fa7696 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -507,6 +507,7 @@ export const Membership = observer(() => { title={"Filter"} footer={footerLayoutFilter} onCancel={() => { + form.resetFields(); store.membership.visibleModalFilterMembership = false; }} > diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 7a3e6a8..0269547 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -16,6 +16,7 @@ import { Select, Typography, DatePicker, + Form, } from "antd"; import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; @@ -38,15 +39,17 @@ const { RangePicker } = DatePicker; export const Payback = observer(() => { const { Option } = Select; const { Title } = Typography; + const [form] = Form.useForm(); const store = useStore(); const modalLoader = useContext(ModalLoaderContext); - const [filterSupplier, setFilterSupplier] = useState([]); + const [filterMembership, setFilterMembership] = useState([]); const [filterSubCategories, setFilterSubCategories] = useState([]); useEffect(() => { const init = async () => { try { modalLoader.setLoading(true); + await store.membership.getData(); await store.payback.getDataConfirmation(); modalLoader.setLoading(false); } catch (e) { @@ -209,29 +212,36 @@ export const Payback = observer(() => { }; const handleRemoveFilter = async () => { - store.product.filterSupplier = null; - store.product.filterSubCategory = null; - setFilterSupplier([]); - store.product.filterCategory = null; - setFilterSubCategories([]); - await store.product.getData(); - store.product.visibleModalFilterProduct = false; + store.payback.filterMembership = null; + store.payback.filterStart = null; + store.payback.filterEnd = null; + setFilterMembership([]); + form.resetFields(); + await store.payback.getDataConfirmation(); + store.payback.visibleModalFilterPayback = false; }; const handleCancelFilter = () => { - setFilterSupplier([]); - store.product.filterCategory = null; - setFilterSubCategories([]); + setFilterMembership([]); + form.resetFields(); + store.payback.filterMembership = null; + store.payback.filterStart = null; + store.payback.filterEnd = null; store.payback.visibleModalFilterPayback = false; }; const handleSubmitFilter = async () => { - store.product.filterSupplier = filterSupplier; - store.product.filterSubCategory = filterSubCategories; + const data = form.getFieldsValue(); + //console.log(data); + store.transaction.filterMembership = filterMembership; + store.transaction.filterStart = data.start_date; + store.transaction.filterEnd = data.end_date; modalLoader.setLoading(true); - await store.product.getData(); + await store.payback.getDataConfirmation(); modalLoader.setLoading(false); - store.product.visibleModalFilterProduct = false; + form.resetFields(); + setFilterMembership([]); + store.payback.visibleModalFilterPayback = false; }; const handleFilterCategory = async (value) => { @@ -462,34 +472,56 @@ export const Payback = observer(() => { visible={store.payback.visibleModalFilterPayback} title={"Filter"} footer={footerLayoutFilter} + onCancel={() => { + form.resetFields(); + setFilterMembership([]); + store.payback.visibleModalFilterPayback = false; + }} > <Row> <Col span={24}> <Title level={5} type={"secondary"} strong> From - + + + + + + + + + - - + {/* <Col span={24}> */} + + {/* <Title level={5} type={"secondary"} strong> Date - - {/* handleFilterCategory(val)} @@ -502,7 +534,7 @@ export const Payback = observer(() => { ))} */} - + {/* */} {/* Filter Sub-Categories diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 1fb1a08..3f93e1a 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -74,6 +74,7 @@ export const Profile = observer(() => { modalLoader.setLoading(true); await store.transaction.getDataHistoryTransaction(); modalLoader.setLoading(false); + form.resetFields(); store.transaction.visibleModalFilterTransaction = false; }; diff --git a/src/store/membership.js b/src/store/membership.js index a9f78cb..2c86220 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -24,7 +24,7 @@ export class Membership { const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}&superior=${this.filterMembership}&type=${this.filterPartner}`); // console.log(this.filterMembership) // console.log(this.filterPartner) - // console.log(response) + console.log(response) this.data = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; @@ -53,6 +53,7 @@ export class Membership { async getDataBySuperior() { try { const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); + //console.log(response) this.data = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; diff --git a/src/store/payback.js b/src/store/payback.js index 3ef65d0..74b0624 100644 --- a/src/store/payback.js +++ b/src/store/payback.js @@ -17,6 +17,9 @@ export class Payback { //filter visibleModalFilterPayback = false; + filterMembership=null; + filterStart=null; + filterEnd=null; constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); From 7d3da6809534dfbaa5006eefed0248513654b5ee Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Fri, 31 Dec 2021 11:40:38 +0700 Subject: [PATCH 226/324] Perbaikan Menu --- src/pages/Home/Home.js | 29 +-- src/pages/Membership/DetailUser.js | 375 ++++++++++++++++++++++++----- src/pages/Membership/Membership.js | 7 +- src/store/transaction.js | 20 +- 4 files changed, 355 insertions(+), 76 deletions(-) diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index 696969b..3c61c29 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -112,7 +112,8 @@ export const Home = observer(() => { }} > <Row> - <BarChartOutlined style={{ fontSize: 30 }} /> + <BarChartOutlined style={{ fontSize: 25 ,marginRight:80}} /> + <PageHeader title={<span>Total Transaksi</span>}> <p> <h4>{store.transaction.dataTransaction} Transaksi</h4> @@ -132,8 +133,8 @@ export const Home = observer(() => { }} > <Row> - <DropboxOutlined style={{ fontSize: 30 }} /> - <PageHeader title={<span>Total Keuntungan</span>}> + <DropboxOutlined style={{ fontSize: 25 }} /> + <PageHeader title={<span>Total Keuntungan B2B</span>}> <span> {new Intl.NumberFormat("id-ID", { style: "currency", @@ -155,8 +156,8 @@ export const Home = observer(() => { }} > <Row> - <DollarCircleOutlined style={{ fontSize: 30 }} /> - <PageHeader title={<span>Saldo</span>}> + <DollarCircleOutlined style={{ fontSize: 25 }} /> + <PageHeader title={<span>Total Keuntungan B2C</span>}> <span> {new Intl.NumberFormat("id-ID", { style: "currency", @@ -173,7 +174,7 @@ export const Home = observer(() => { <Row style={{ marginLeft: 50, marginTop: 10 }}> <Card className={"shadow"} - title="Card title" + title="List Transaksi B2B" style={{ marginBottom: 30, marginRight: 20, @@ -207,7 +208,7 @@ export const Home = observer(() => { </Card> <Card className={"shadow"} - title="Card title" + title="List Transaksi B2C" style={{ marginBottom: 30, borderColor: "salmon", @@ -254,7 +255,7 @@ export const Home = observer(() => { }} > <Row> - <BarChartOutlined style={{ fontSize: 30 }} /> + <BarChartOutlined style={{ fontSize: 25,marginRight:80 }} /> <PageHeader title={<span>Total Transaksi</span>}> <p> <h4>{store.transaction.dataTransaction} Transaksi</h4> @@ -274,8 +275,8 @@ export const Home = observer(() => { }} > <Row> - <DropboxOutlined style={{ fontSize: 30 }} /> - <PageHeader title={<span>Total Keuntungan</span>}> + <DropboxOutlined style={{ fontSize: 25 }} /> + <PageHeader title={<span>Total Keuntungan B2B</span>}> <span> {new Intl.NumberFormat("id-ID", { style: "currency", @@ -297,8 +298,8 @@ export const Home = observer(() => { }} > <Row> - <DollarCircleOutlined style={{ fontSize: 30 }} /> - <PageHeader title={<span>Saldo</span>}> + <DollarCircleOutlined style={{ fontSize: 25 }} /> + <PageHeader title={<span>Total Keuntungan B2C</span>}> <span> {new Intl.NumberFormat("id-ID", { style: "currency", @@ -315,7 +316,7 @@ export const Home = observer(() => { <Row style={{ marginLeft: 20, marginRight: 20, marginTop: 10 }}> <Card className={"shadow"} - title="Card title" + title="List Transaksi B2B" style={{ marginBottom: 10, borderColor: "salmon", @@ -347,7 +348,7 @@ export const Home = observer(() => { </Card> <Card className={"shadow"} - title="Card title" + title="List Transaksi B2C" style={{ marginBottom: 30, borderColor: "salmon", diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index e3567f5..82e2aee 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -1,20 +1,32 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, message, Row, Space, Table, Typography,} from "antd"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {LINKS} from "../../routes/app"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {format, parseISO} from "date-fns"; -import {ModalLoaderContext} from "../../utils/modal"; -import {useParams} from "react-router-dom"; -import {MembershipModal} from "./MembershipModal"; - -const {Title, Text} = Typography; +import React, { useContext, useEffect, useState } from "react"; +import { + Button, + Card, + Col, + message, + Row, + Space, + Table, + Typography, + Tabs, + List, + Divider +} from "antd"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { LINKS } from "../../routes/app"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { format, parseISO } from "date-fns"; +import { ModalLoaderContext } from "../../utils/modal"; +import { useParams } from "react-router-dom"; +import { MembershipModal } from "./MembershipModal"; +const { Title, Text } = Typography; +const { TabPane } = Tabs; export const DetailUser = observer(() => { const store = useStore(); const modalLoader = useContext(ModalLoaderContext); - const {id} = useParams(); + const { id } = useParams(); const [visibleModal, setVisibleModal] = useState(false); const [isVisibleTopUpModal, setIsVisibleTopUpModal] = useState(false); const [destination, setDestination] = useState(null); @@ -24,6 +36,8 @@ export const DetailUser = observer(() => { useEffect(() => { (async () => { modalLoader.setLoading(true); + store.transaction.getDataHistoryTransaction(); + store.transaction.getDetailHistoryTransaction(); await getData(); modalLoader.setLoading(false); })(); @@ -31,6 +45,7 @@ export const DetailUser = observer(() => { return () => { store.membership.dataDetail = {}; store.transaction.dataHistoryTopUp = []; + store.transaction.dataDetailHistoryTransaction = []; }; }, []); @@ -38,8 +53,9 @@ export const DetailUser = observer(() => { const isAdmin = store.authentication.userData.role === "Admin"; await Promise.allSettled([ store.transaction.getDataHistoryTopUp(id), + store.transaction.getDetailHistoryTransaction(id), store.membership.getDetail(id), - store.role.getData(isAdmin) + store.role.getData(isAdmin), ]); }; @@ -77,22 +93,24 @@ export const DetailUser = observer(() => { if (response?.body?.statusCode === 200) { message.success( - initialData.isChangePassword - ? "Success Change Member Password" - : "Success Update Data Member"); + initialData.isChangePassword + ? "Success Change Member Password" + : "Success Update Data Member" + ); } else { message.error( - initialData.isChangePassword - ? "Failed Change Member Password" - : "Failed Update Data Member"); + initialData.isChangePassword + ? "Failed Change Member Password" + : "Failed Update Data Member" + ); } await getData(); } catch (e) { modalLoader.setLoading(false); message.error( - initialData.isChangePassword - ? "Failed Update Member Password" - : "Failed Update Data Member" + initialData.isChangePassword + ? "Failed Update Member Password" + : "Failed Update Data Member" ); } modalLoader.setLoading(false); @@ -105,10 +123,10 @@ export const DetailUser = observer(() => { dataIndex: "amount", key: "amount", render: (text) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text), + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { title: "Transaction Date", @@ -124,6 +142,57 @@ export const DetailUser = observer(() => { }, ]; + const column = [ + { + title: "Price", + dataIndex: "price", + key: "price", + + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), + }, + { + title: "Pembeli", + dataIndex: "buyer", + key: "buyer", + }, + { + title: "Tujuan", + dataIndex: "transaction_destination", + key: "transaction_destination", + }, + { + title: "Kode Transaksi", + dataIndex: "transaction_code", + key: "transaction_code", + }, + { + title: "Status", + dataIndex: "status", + key: "status", + }, + { + title: "No Seri", + dataIndex: "seri_number", + key: "seri_number", + }, + { + title: "IDTrx Mitra", + dataIndex: "partner_transaction_code", + key: "partner_transaction_code", + }, + { + title: "Transaction Date", + dataIndex: "created_at", + key: "created_at", + render: (text, record) => { + return <Text>{format(parseISO(record.created_at), "dd-MM-yyyy")}</Text>; + }, + }, + ]; const routeData = [ { route: LINKS.HOME, @@ -135,7 +204,7 @@ export const DetailUser = observer(() => { }, { route: LINKS.USER_DETAIL.replace(":id", id), - name: <span style={{fontWeight: "bold"}}>Detail User</span>, + name: <span style={{ fontWeight: "bold" }}>Detail User</span>, }, ]; @@ -179,71 +248,263 @@ export const DetailUser = observer(() => { <Col span={12}> <Text> {store.membership.dataDetail.isActive === true - ? "Aktif" - : "Inaktif"} + ? "Aktif" + : "Inaktif"} </Text> </Col> </Row> </Col> <Col lg={12} xs={24}> - {store.authentication.userData.role === "Admin" && <Title strong level={3}>Action User Detail} - {store.authentication.userData.role === "Admin" && + Action User Detail + + )} + {store.authentication.userData.role === "Admin" && ( + - - + - + - } + > + Ganti Password + + + + )} -
- - History Top Up - -
+ + {/* {store.ui.mediaQuery.isDesktop && ( */} +
- + pagination={{ + pageSize: store.transaction.pageSize, + total: store.transaction.total_data, + current: store.transaction.page + 1, + showSizeChanger: true, + simple: false, + }} + onChange={async (page) => { + let pageNumber = page.current; + store.transaction.pageSize = page.pageSize; + store.transaction.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + {/* )} */} + {/*
*/} + + + {store.ui.mediaQuery.isDesktop && ( +
{ + let pageNumber = page.current; + store.transaction.pageSize = page.pageSize; + store.transaction.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + )} + + {store.ui.mediaQuery.isMobile && ( + { + store.transaction.pageSize = page.pageSize; + store.transaction.page = page.current - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }, + pageSize: store.transaction.pageSize, + total: store.transaction.totalData, + current: store.transaction.page + 1, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.membership.data} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + +

+ Saldo System : {item.name}{" "} +
+ Role : {item.roleName}
+ + Saldo Supplier : {item.coa?.amount} + {" "} +
+ {/* + */} +

+
+ } + /> +
+

+ {/* */} +

+
+ + + + ); + }} + /> + )} + {/*
*/} + +
diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 2fa7696..48da62c 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -111,6 +111,8 @@ export const Membership = observer(() => { modalLoader.setLoading(true); await store.membership.getData(); modalLoader.setLoading(false); + setFilterMembership([]); + setFilterPartner([]); store.membership.visibleModalFilterMembership = false; }; @@ -218,6 +220,8 @@ export const Membership = observer(() => { , - ,
{ - let pageNumber = page.current; - store.membership.pageSize = page.pageSize; - store.membership.page = pageNumber - 1; - modalLoader.setLoading(true); - await getData(); - modalLoader.setLoading(false); - }} - /> + + Total Transaksi}> +

+

{store.transaction.dataTransactionPartner.total_transaction}

+

+
+
-
{ - let pageNumber = page.current; - store.membership.pageSize = page.pageSize; - store.membership.page = pageNumber - 1; - modalLoader.setLoading(true); - await getData(); - modalLoader.setLoading(false); - }} - /> + + Total Penjualan}> +

+

{ new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.transaction.dataTransactionPartner.total_amount)}

+

+
+
+ {/**/} + {/* */} + {/* Total Keuntungan B2C}>*/} + {/* */} + {/* {new Intl.NumberFormat("id-ID", {*/} + {/* style: "currency",*/} + {/* currency: "IDR",*/} + {/* }).format(store.authentication.profileData?.wallet || 0)}*/} + {/* */} + {/* */} + {/* */} + {/**/} - )} - {store.ui.mediaQuery.isMobile && ( -
- - - - Total Transaksi}> -

-

{store.transaction.dataTransaction} Transaksi

-

-
-
-
- - - - Total Keuntungan B2B}> - - {new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.authentication.profileData?.wallet || 0)} - - - - - - - - Total Keuntungan B2C}> - - {new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.authentication.profileData?.wallet || 0)} - - - - -
)} - {store.authentication.userData.role === "Admin" && - store.ui.mediaQuery.isMobile && ( - - -
{ - let pageNumber = page.current; - store.membership.pageSize = page.pageSize; - store.membership.page = pageNumber - 1; - modalLoader.setLoading(true); - await getData(); - modalLoader.setLoading(false); - }} - /> - - -
{ - let pageNumber = page.current; - store.membership.pageSize = page.pageSize; - store.membership.page = pageNumber - 1; - modalLoader.setLoading(true); - await getData(); - modalLoader.setLoading(false); - }} - /> - - - )} + {/*{store.authentication.userData.role === "Admin" &&*/} + {/* store.ui.mediaQuery.isDesktop && (*/} + {/* */} + {/* */} + {/* {*/} + {/* let pageNumber = page.current;*/} + {/* store.membership.pageSize = page.pageSize;*/} + {/* store.membership.page = pageNumber - 1;*/} + {/* modalLoader.setLoading(true);*/} + {/* await getData();*/} + {/* modalLoader.setLoading(false);*/} + {/* }}*/} + {/* />*/} + {/* */} + {/* */} + {/* {*/} + {/* let pageNumber = page.current;*/} + {/* store.membership.pageSize = page.pageSize;*/} + {/* store.membership.page = pageNumber - 1;*/} + {/* modalLoader.setLoading(true);*/} + {/* await getData();*/} + {/* modalLoader.setLoading(false);*/} + {/* }}*/} + {/* />*/} + {/* */} + {/* */} + {/* )}*/} + {/*{store.ui.mediaQuery.isMobile && (*/} + {/*
*/} + {/* */} + {/* */} + {/* */} + {/* Total Transaksi}>*/} + {/*

*/} + {/*

{store.transaction.dataTransaction} Transaksi

*/} + {/*

*/} + {/*
*/} + {/*
*/} + {/* */} + {/* */} + {/* */} + {/* */} + {/* Total Keuntungan B2B}>*/} + {/* */} + {/* {new Intl.NumberFormat("id-ID", {*/} + {/* style: "currency",*/} + {/* currency: "IDR",*/} + {/* }).format(store.authentication.profileData?.wallet || 0)}*/} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/* Total Keuntungan B2C}>*/} + {/* */} + {/* {new Intl.NumberFormat("id-ID", {*/} + {/* style: "currency",*/} + {/* currency: "IDR",*/} + {/* }).format(store.authentication.profileData?.wallet || 0)}*/} + {/* */} + {/* */} + {/* */} + {/* */} + {/*
*/} + {/*)}*/} + {/*{store.authentication.userData.role === "Admin" &&*/} + {/* store.ui.mediaQuery.isMobile && (*/} + {/* */} + {/* */} + {/* {*/} + {/* let pageNumber = page.current;*/} + {/* store.membership.pageSize = page.pageSize;*/} + {/* store.membership.page = pageNumber - 1;*/} + {/* modalLoader.setLoading(true);*/} + {/* await getData();*/} + {/* modalLoader.setLoading(false);*/} + {/* }}*/} + {/* />*/} + {/* */} + {/* */} + {/* {*/} + {/* let pageNumber = page.current;*/} + {/* store.membership.pageSize = page.pageSize;*/} + {/* store.membership.page = pageNumber - 1;*/} + {/* modalLoader.setLoading(true);*/} + {/* await getData();*/} + {/* modalLoader.setLoading(false);*/} + {/* }}*/} + {/* />*/} + {/* */} + {/* */} + {/* )}*/} ); }); diff --git a/src/store/transaction.js b/src/store/transaction.js index 8ae9455..50d8274 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -31,6 +31,8 @@ export class Transaction { dataHistoryTopUp = []; total_dataHistoryTopUp = 0; dataTransaction = []; + dataTransactionB2B = []; + dataTransactionPartner = []; dataDetailHistoryTransaction = []; total_dataDetailHistoryTransaction=0; @@ -59,8 +61,27 @@ export class Transaction { try { const response = await http.get(`/transaction/total-order`); //console.log(response) - this.dataTransaction = response.body.data ?? []; - this.total_data = response?.body?.count ?? 0; + this.dataTransaction = response.body.data; + } catch (e) { + console.error(e); + } + } + + async getDataTransactionB2B() { + try { + const response = await http.get(`/transaction/total-order-b2b`); + //console.log(response) + this.dataTransactionB2B = response.body.data; + } catch (e) { + console.error(e); + } + } + + async getDataTransactionPartner() { + try { + const response = await http.get(`/transaction/total-order-partner`); + //console.log(response) + this.dataTransactionPartner = response.body.data; } catch (e) { console.error(e); } From abb67b8c654304a124a99f3e0a5b5568d42c7533 Mon Sep 17 00:00:00 2001 From: ilham Date: Sun, 2 Jan 2022 23:34:43 +0700 Subject: [PATCH 230/324] fix: menu list --- src/pages/App/MenuList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 607b3ae..1a8d7ff 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -51,7 +51,7 @@ export const MenuList = observer((props) => { overflowedIndicator={0} forceSubMenuRender={true} > - {store.authentication.userData.role !== "Retail" && ( + {store.authentication.userData.role === "Admin" || store.authentication.userData.role === "Admin Partner" && ( From b34d89763ee4e3ba8467785ca6e5887ede7e0c79 Mon Sep 17 00:00:00 2001 From: ilham Date: Sun, 2 Jan 2022 23:48:16 +0700 Subject: [PATCH 231/324] fix: menu list --- src/pages/App/MenuList.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 1a8d7ff..62b9b43 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -51,7 +51,7 @@ export const MenuList = observer((props) => { overflowedIndicator={0} forceSubMenuRender={true} > - {store.authentication.userData.role === "Admin" || store.authentication.userData.role === "Admin Partner" && ( + {store.authentication.userData.role === "Admin" && ( @@ -59,6 +59,14 @@ export const MenuList = observer((props) => { )} + {store.authentication.userData.role === "Admin Partner" && ( + + + + Beranda + + + )} {store.authentication.userData.role === "Admin" && ( From 02612da62cd47e3da239111a99fe0afb8583cb59 Mon Sep 17 00:00:00 2001 From: ilham Date: Sun, 2 Jan 2022 23:53:32 +0700 Subject: [PATCH 232/324] fix: create partner --- src/component/PartnerComponent.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 29c3a46..cfddd6f 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -391,7 +391,7 @@ export const PartnerComponent = observer((props) => { )} {((idData && isChangePassword) || !idData) && ( Date: Mon, 3 Jan 2022 00:15:51 +0700 Subject: [PATCH 233/324] fix: dashboard --- src/pages/Home/Home.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index a11c45c..0e7134d 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -157,7 +157,7 @@ export const Home = observer(() => { }} > - {store.transaction.dataTransaction.total_transaction} Transaksi B2B}> + {store.transaction.dataTransactionB2B.total_transaction} Transaksi B2B}>

Total Penjualan : { new Intl.NumberFormat("id-ID", { style: "currency", From b712f2ce44b4ff3770d055c497c01ff77c3546b7 Mon Sep 17 00:00:00 2001 From: ilham Date: Mon, 3 Jan 2022 00:45:00 +0700 Subject: [PATCH 234/324] fix: history transaction --- src/pages/Membership/DetailUser.js | 18 +++++++----------- src/store/transaction.js | 16 +++++++++++----- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 82e2aee..14eb0b4 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -28,16 +28,12 @@ export const DetailUser = observer(() => { const modalLoader = useContext(ModalLoaderContext); const { id } = useParams(); const [visibleModal, setVisibleModal] = useState(false); - const [isVisibleTopUpModal, setIsVisibleTopUpModal] = useState(false); - const [destination, setDestination] = useState(null); const [initialData, setInitialData] = useState({}); const [confirmLoading, setConfirmLoading] = useState(false); useEffect(() => { (async () => { modalLoader.setLoading(true); - store.transaction.getDataHistoryTransaction(); - store.transaction.getDetailHistoryTransaction(); await getData(); modalLoader.setLoading(false); })(); @@ -347,9 +343,9 @@ export const DetailUser = observer(() => { dataSource={store.transaction.dataHistoryTopUp} bordered pagination={{ - pageSize: store.transaction.pageSize, - total: store.transaction.total_data, - current: store.transaction.page + 1, + pageSize: store.transaction.pageSizeHistoryTransaction, + total: store.transaction.total_dataHistoryTransaction, + current: store.transaction.pageHistoryTransaction + 1, showSizeChanger: true, simple: false, }} @@ -375,12 +371,12 @@ export const DetailUser = observer(() => { key="1" hasEmpty columns={column} - dataSource={store.transaction.dataDetailHistoryTransaction} + dataSource={store.transaction.dataDetailHistoryTransactionDetailUser} bordered pagination={{ - pageSize: store.transaction.pageSize, - total: store.transaction.total_data, - current: store.transaction.page + 1, + pageSize: store.transaction.pageSizeHistoryTransactionDetailUser, + total: store.transaction.total_dataDetailHistoryTransactionDetailUser, + current: store.transaction.pageHistoryTransactionDetailUser + 1, showSizeChanger: true, simple: false, }} diff --git a/src/store/transaction.js b/src/store/transaction.js index 50d8274..8cddde4 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -26,20 +26,26 @@ export class Transaction { dataHistoryTransaction = []; total_dataHistoryTransaction = 0; + pageHistoryTransactionDetailUser = 0; + pageSizeHistoryTransactionDetailUser = 10; + dataHistoryTransactionDetailUser = []; + total_dataHistoryTransactionDetailUser = 0; + pageHistoryTopUp = 0; pageSizeHistoryTopUp = 10; dataHistoryTopUp = []; total_dataHistoryTopUp = 0; + dataTransaction = []; dataTransactionB2B = []; dataTransactionPartner = []; - dataDetailHistoryTransaction = []; - total_dataDetailHistoryTransaction=0; //filter visibleModalFilterTransaction = false; filterStart = null; filterEnd = null; + filterStartDetailUser = null; + filterEndDetailUser = null; constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); @@ -129,10 +135,10 @@ export class Transaction { async getDetailHistoryTransaction(id) { try { - const response = await http.get(`/transaction/history-user/${id}`); + const response = await http.get(`/transaction/history-user/${id}?page=${this.pageHistoryTransactionDetailUser}&pageSize=${this.pageSizeHistoryTransactionDetailUser}&start=${this.filterStartDetailUser}&end=${this.filterEndDetailUser}`); console.log(response,'Data Trans'); - this.dataDetailHistoryTransaction = response.body.data ?? []; - this.total_dataDetailHistoryTransaction = response?.body?.count ?? 0; + this.dataDetailHistoryTransactionDetailUser = response.body.data ?? []; + this.total_dataDetailHistoryTransactionDetailUser = response?.body?.count ?? 0; } catch (e) { console.error(e); } From 08dd698402382bc074fccfe0ee957e9874ef90e5 Mon Sep 17 00:00:00 2001 From: ilham Date: Mon, 3 Jan 2022 00:54:26 +0700 Subject: [PATCH 235/324] fix: profit in profil --- src/pages/Profile/Profile.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index c390507..5fa9a55 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -234,8 +234,8 @@ export const Profile = observer(() => {

- {store.authentication.userData.role === "Admin" || - (store.authentication.userData.role === "Supervisor" && ( + {store.authentication.userData.role != "Admin Partner" && + (store.authentication.userData.role != "Retail" && ( From 2fedb5fa6eb21acd257771f8424164164233a61a Mon Sep 17 00:00:00 2001 From: ilham Date: Mon, 3 Jan 2022 01:05:31 +0700 Subject: [PATCH 236/324] fix: fix detail user --- src/pages/Membership/DetailUser.js | 214 ++++++++++++++++++----------- 1 file changed, 136 insertions(+), 78 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 14eb0b4..159bc47 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -189,6 +189,7 @@ export const DetailUser = observer(() => { }, }, ]; + const routeData = [ { route: LINKS.HOME, @@ -204,6 +205,19 @@ export const DetailUser = observer(() => { }, ]; + const styleSaldoTitle = store.ui.mediaQuery.isDesktop + ? { + display: "flex", + justifyContent: "center", + } + : { fontSize: "0.75rem" }; + const styleSaldoContent = store.ui.mediaQuery.isDesktop + ? { + fontSize: "1.25rem", + display: "flex", + justifyContent: "center", + } + : null; return (
@@ -251,84 +265,128 @@ export const DetailUser = observer(() => {
- {store.authentication.userData.role === "Admin" && ( - - Action User Detail - - )} - {store.authentication.userData.role === "Admin" && ( - - - - - - - )} + + + {store.authentication.userData.role === "Admin" && ( + + Action User Detail + + )} + {store.authentication.userData.role === "Admin" && ( + + + + + + + )} + + + + + + + + Saldo + + + + + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.authentication.profileData?.wallet || 0)} + + + + + + + + + + Profit + + + + + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.authentication.profileData?.profit || 0)} + + + + + + + + From 2a42e49a00f53ee92238dfa0531fc03693a3a737 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 3 Jan 2022 10:56:29 +0700 Subject: [PATCH 237/324] Perbaikan Project PPOB --- src/component/PartnerComponent.js | 2 +- src/pages/Login/Login.js | 14 ++- src/pages/Membership/DetailUser.js | 192 +++++++++++++++-------------- src/pages/Membership/Membership.js | 9 +- src/pages/Transaction/Product.js | 159 ++++++++++++++++-------- src/store/membership.js | 5 +- src/store/transaction.js | 9 ++ 7 files changed, 241 insertions(+), 149 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index cfddd6f..7e3adf0 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -402,7 +402,7 @@ export const PartnerComponent = observer((props) => { }, ]} > - + )} {!idData && ( diff --git a/src/pages/Login/Login.js b/src/pages/Login/Login.js index a0df820..7e406ac 100644 --- a/src/pages/Login/Login.js +++ b/src/pages/Login/Login.js @@ -23,9 +23,17 @@ export const Login = observer(() => { } message.error(e.message); } - store.authentication.userData.role === "Retail" - ? history.push(LINKS.TRANSACTION) - : history.push(LINKS.HOME); + + if ( + store.authentication.userData.role === "Sales" || + store.authentication.userData.role === "Supervisor" + ) { + history.push(LINKS.MEMBERSHIP); + } else if (store.authentication.userData.role === "Retail") { + history.push(LINKS.TRANSACTION); + } else { + history.push(LINKS.HOME); + } }; return ( diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 159bc47..9f4fb16 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -10,7 +10,7 @@ import { Typography, Tabs, List, - Divider + Divider, } from "antd"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { LINKS } from "../../routes/app"; @@ -206,23 +206,101 @@ export const DetailUser = observer(() => { ]; const styleSaldoTitle = store.ui.mediaQuery.isDesktop - ? { + ? { display: "flex", justifyContent: "center", } - : { fontSize: "0.75rem" }; + : { fontSize: "0.75rem" }; const styleSaldoContent = store.ui.mediaQuery.isDesktop - ? { + ? { fontSize: "1.25rem", display: "flex", justifyContent: "center", } - : null; + : null; return (
- Detail User + + Detail User +
+ {store.authentication.userData.role === "Admin" && ( + + + + + + + )} + + + @@ -266,86 +344,6 @@ export const DetailUser = observer(() => { - - {store.authentication.userData.role === "Admin" && ( - - Action User Detail - - )} - {store.authentication.userData.role === "Admin" && ( - - - - - - - )} - @@ -360,7 +358,9 @@ export const DetailUser = observer(() => { {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", - }).format(store.authentication.profileData?.wallet || 0)} + }).format( + store.authentication.profileData?.wallet || 0 + )} @@ -378,7 +378,9 @@ export const DetailUser = observer(() => { {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", - }).format(store.authentication.profileData?.profit || 0)} + }).format( + store.authentication.profileData?.profit || 0 + )} @@ -429,12 +431,18 @@ export const DetailUser = observer(() => { key="1" hasEmpty columns={column} - dataSource={store.transaction.dataDetailHistoryTransactionDetailUser} + dataSource={ + store.transaction.dataDetailHistoryTransactionDetailUser + } bordered pagination={{ - pageSize: store.transaction.pageSizeHistoryTransactionDetailUser, - total: store.transaction.total_dataDetailHistoryTransactionDetailUser, - current: store.transaction.pageHistoryTransactionDetailUser + 1, + pageSize: + store.transaction.pageSizeHistoryTransactionDetailUser, + total: + store.transaction + .total_dataDetailHistoryTransactionDetailUser, + current: + store.transaction.pageHistoryTransactionDetailUser + 1, showSizeChanger: true, simple: false, }} diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 48da62c..f147f7e 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -51,6 +51,7 @@ export const Membership = observer(() => { modalLoader.setLoading(true); const isAdmin = store.authentication.userData.role === "Admin"; await getData(); + await store.membership.getData(); await store.membership.getDataBySuperior(); await store.partner.getData(); await store.role.getData(isAdmin); @@ -220,7 +221,7 @@ export const Membership = observer(() => { , + , + , + ]} + // cancelText="Cancel" + // onCancel={() => { + // form.resetFields(); + // handleCancel(); + // }} + // onOk={() => { + // form + // .validateFields() + // .then((values) => { + // console.log(values, "isi form"); + // handleBuyProduct(values, item.product_code); + // form.resetFields(); + // }) + // .catch((info) => { + // console.error("Validate Failed:", info); + // }); + // }} + > + + + + + + ); }); diff --git a/src/store/membership.js b/src/store/membership.js index 2c86220..435138f 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -8,6 +8,7 @@ export class Membership { totalData = 0; dataDetail = {}; + dataMember=[]; //filter @@ -22,10 +23,10 @@ export class Membership { async getData() { try { const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}&superior=${this.filterMembership}&type=${this.filterPartner}`); - // console.log(this.filterMembership) + console.log(this.filterMembership) // console.log(this.filterPartner) console.log(response) - this.data = response.body.data.map((item, idx) => { + this.dataMember = response.body.data.map((item, idx) => { item.key = idx; item.name = item?.user_detail?.name; item.phone_number = item?.user_detail?.phone_number; diff --git a/src/store/transaction.js b/src/store/transaction.js index 8cddde4..d540353 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -176,6 +176,15 @@ export class Transaction { } } + async buyProd(data) { + try { + const response = await http.post("//transaction/order-prod").send(data); + return response; + } catch (e) { + console.error(e); + } + } + async update(id, data) { try { const response = await http.put(`/product/${id}`).send(data); From a851ce019e65e41b6122142df489d42402f39504 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 3 Jan 2022 11:11:25 +0700 Subject: [PATCH 238/324] Perbaikan Project PPOB --- src/pages/Transaction/Product.js | 1 + src/store/transaction.js | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 1077e5c..d753985 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -54,6 +54,7 @@ export const Product = observer(() => { }; const handleBuyProduct = async (data, productCode) => { + //console.log(data) modalLoader.setLoading(true); try { const response = await store.transaction.buyProd({ diff --git a/src/store/transaction.js b/src/store/transaction.js index d540353..c74cafb 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -178,7 +178,8 @@ export class Transaction { async buyProd(data) { try { - const response = await http.post("//transaction/order-prod").send(data); + const response = await http.post("/transaction/order-prod").send(data); + console.log(response) return response; } catch (e) { console.error(e); From c19d1386f3b202bfd365965b285499bb76ab9fa9 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 3 Jan 2022 12:15:08 +0700 Subject: [PATCH 239/324] Perbaikan Project PPOB --- src/index.css | 4 + src/pages/Home/Home.js | 594 ++++++++++++++++++++++------- src/pages/Membership/DetailUser.js | 2 +- src/pages/Membership/Membership.js | 6 +- 4 files changed, 472 insertions(+), 134 deletions(-) diff --git a/src/index.css b/src/index.css index 18d9f14..daea40c 100644 --- a/src/index.css +++ b/src/index.css @@ -75,4 +75,8 @@ code { .profile-container .ant-popover-inner-content { padding: 0 !important; +} + +.ant-menu-item-divider{ + border-style: transparent !important; } \ No newline at end of file diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index 0e7134d..a42cd97 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -8,6 +8,7 @@ import { BarChartOutlined, } from "@ant-design/icons"; import { ModalLoaderContext } from "../../utils/modal"; +import Title from "antd/lib/skeleton/Title"; export const Home = observer(() => { const modalLoader = useContext(ModalLoaderContext); @@ -20,7 +21,7 @@ export const Home = observer(() => { await getData(); await store.membership.getDataBySuperior(); await store.partner.getData(); - if(isAdmin){ + if (isAdmin) { await store.transaction.getDataTransaction(); await store.transaction.getDataTransactionB2B(); } else { @@ -99,152 +100,230 @@ export const Home = observer(() => { ]; return (
- {store.ui.mediaQuery.isDesktop && store.authentication.userData.role === "Admin" && ( - - - - {/**/} - - {store.transaction.dataTransaction.total_transaction} Transaksi B2C}> -

-

Total Penjualan : { new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.transaction.dataTransaction.total_amount)}

- -

Total Modal : { new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.transaction.dataTransaction.total_modal)}

- -

Total Profit : { new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.transaction.dataTransaction.total_profit)}

- -

Total Komisi : { new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.transaction.dataTransaction.total_commission)}

-

-
-
-
- - - {store.transaction.dataTransactionB2B.total_transaction} Transaksi B2B}> -

-

Total Penjualan : { new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.transaction.dataTransactionB2B.total_amount)}

- -

Total Modal : { new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.transaction.dataTransactionB2B.total_modal)}

- -

Total Profit : { new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.transaction.dataTransactionB2B.total_profit)}

-

-
-
-
- {/**/} - {/* */} - {/* Total Keuntungan B2C}>*/} - {/* */} - {/* {new Intl.NumberFormat("id-ID", {*/} - {/* style: "currency",*/} - {/* currency: "IDR",*/} - {/* }).format(store.authentication.profileData?.wallet || 0)}*/} - {/* */} - {/* */} - {/* */} - {/**/} -
- )} - {store.ui.mediaQuery.isDesktop && store.authentication.userData.role === "Admin Partner" && ( + {store.ui.mediaQuery.isDesktop && + store.authentication.userData.role === "Admin" && ( + {store.transaction.dataTransaction.total_transaction}{" "} + Transaksi B2C + + } + style={{ + marginLeft: 20, + height: 200, + marginBottom: 10, + borderColor: "salmon", + width: "45%", + }} + > + + +
+

+

+ Total Penjualan :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransaction.total_amount + )} +

+ +

+ Total Modal :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransaction.total_modal + )} +

+

+ + +

+

+ Total Profit :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransaction.total_profit + )} +

+ +

+ Total Komisi :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransaction.total_commission + )} +

+

+ + + + + + {store.transaction.dataTransactionB2B.total_transaction}{" "} + Transaksi B2B + + } + style={{ + marginLeft: 20, + height: 200, + marginBottom: 10, + borderColor: "salmon", + width: "45%", + }} + > + + + +

+

+ Total Penjualan :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransactionB2B.total_amount + )} +

+ +

+ Total Modal :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransactionB2B.total_modal + )} +

+

+ + +

+

+ Total Profit :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransactionB2B.total_profit + )} +

+

+ + + + + {/**/} + {/* */} + {/* Total Keuntungan B2C}>*/} + {/* */} + {/* {new Intl.NumberFormat("id-ID", {*/} + {/* style: "currency",*/} + {/* currency: "IDR",*/} + {/* }).format(store.authentication.profileData?.wallet || 0)}*/} + {/* */} + {/* */} + {/* */} + {/**/} + + )} + {store.ui.mediaQuery.isDesktop && + store.authentication.userData.role === "Admin Partner" && ( + + Total Transaksi}>

-

{store.transaction.dataTransactionPartner.total_transaction}

+

+ { + store.transaction.dataTransactionPartner + .total_transaction + } +

Total Penjualan}>

-

{ new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.transaction.dataTransactionPartner.total_amount)}

+

+ {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransactionPartner.total_amount + )} +

@@ -272,7 +351,258 @@ export const Home = observer(() => { {/*
*/} {/**/} - )} + )} + {store.ui.mediaQuery.isMobile && + store.authentication.userData.role === "Admin" && ( + + + {store.transaction.dataTransaction.total_transaction}{" "} + Transaksi B2C + + } + style={{ + marginLeft: 10, + height: 220, + marginBottom: 10, + borderColor: "salmon", + width: "90%", + }} + > + + +
+

+

+ Total Penjualan :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransaction.total_amount + )} +

+ +

+ Total Modal :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransaction.total_modal + )} +

+

+ + +

+

+ Total Profit :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransaction.total_profit + )} +

+ +

+ Total Komisi :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransaction.total_commission + )} +

+

+ + + + + + {store.transaction.dataTransactionB2B.total_transaction}{" "} + Transaksi B2B + + } + style={{ + marginLeft: 10, + height: 200, + borderColor: "salmon", + width: "90%", + }} + > + + + +

+

+ Total Penjualan :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransactionB2B.total_amount + )} +

+ +

+ Total Modal :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransactionB2B.total_modal + )} +

+

+ + +

+

+ Total Profit :{" "} + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransactionB2B.total_profit + )} +

+

+ + + + + {/**/} + {/* */} + {/* Total Keuntungan B2C}>*/} + {/* */} + {/* {new Intl.NumberFormat("id-ID", {*/} + {/* style: "currency",*/} + {/* currency: "IDR",*/} + {/* }).format(store.authentication.profileData?.wallet || 0)}*/} + {/* */} + {/* */} + {/* */} + {/**/} + + )} + {store.ui.mediaQuery.isMobile && + store.authentication.userData.role === "Admin Partner" && ( + + + + Total Transaksi}> +

+

+ { + store.transaction.dataTransactionPartner + .total_transaction + } +

+

+
+
+
+ + + Total Penjualan}> +

+

+ {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format( + store.transaction.dataTransactionPartner.total_amount + )} +

+

+
+
+
+ {/**/} + {/* */} + {/* Total Keuntungan B2C}>*/} + {/* */} + {/* {new Intl.NumberFormat("id-ID", {*/} + {/* style: "currency",*/} + {/* currency: "IDR",*/} + {/* }).format(store.authentication.profileData?.wallet || 0)}*/} + {/* */} + {/* */} + {/* */} + {/**/} +
+ )} {/*{store.authentication.userData.role === "Admin" &&*/} {/* store.ui.mediaQuery.isDesktop && (*/} {/* */} diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 9f4fb16..b250765 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -224,7 +224,7 @@ export const DetailUser = observer(() => { Detail User -
+ {store.authentication.userData.role === "Admin" && ( { current: store.membership.page + 1, style: { marginBottom: "1rem", marginRight: "1rem" }, }} - dataSource={store.membership.data} + dataSource={ + store.authentication.userData.role === "Admin" + ? store.membership.dataMember + : store.membership.data + } style={{ padding: 0 }} renderItem={(item) => { return ( From 6201ce4ad0988542ab25868697951568ce737c96 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 3 Jan 2022 13:00:06 +0700 Subject: [PATCH 240/324] Perbaikan Project PPOB --- src/pages/Membership/DetailUser.js | 15 ++-- src/pages/Profile/Profile.js | 117 +++++++++++++++++++++++------ 2 files changed, 103 insertions(+), 29 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index b250765..47c6662 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -169,6 +169,9 @@ export const DetailUser = observer(() => { title: "Status", dataIndex: "status", key: "status", + render: (text, record) => { + return {record.status === 1 ? "Success" : "Pending"}; + }, }, { title: "No Seri", @@ -222,9 +225,11 @@ export const DetailUser = observer(() => {
- - Detail User -
+ + + Detail User + + {store.authentication.userData.role === "Admin" && ( { - + @@ -366,7 +371,7 @@ export const DetailUser = observer(() => { <Col></Col> </Row> </Col> - <Col lg={12} xs={12}> + <Col span={store.ui.mediaQuery.isMobile ? 24 : 10}> <Row justify={"center"}> <Col lg={12} xs={12}> <Title strong level={3} style={styleSaldoTitle}> diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 5fa9a55..a368fff 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -10,6 +10,8 @@ import { Modal, Form, Input, + Divider, + List } from "antd"; import moment from "moment"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; @@ -135,6 +137,9 @@ export const Profile = observer(() => { title: "Status", dataIndex: "status", key: "status", + render: (text, record) => { + return <Text>{record.status === 1 ? "Success" : "Pending"}</Text>; + }, }, { title: "No Seri", @@ -216,7 +221,7 @@ export const Profile = observer(() => { </Col> </Row> </Col> - <Col span={store.ui.mediaQuery.isMobile ? 10 : 5}> + <Col span={store.ui.mediaQuery.isMobile ? 24 : 5}> <Row justify={"center"}> <Col lg={12} xs={12}> <Title strong level={3} style={styleSaldoTitle}> @@ -235,8 +240,8 @@ export const Profile = observer(() => { </Row> </Col> {store.authentication.userData.role != "Admin Partner" && - (store.authentication.userData.role != "Retail" && ( - <Col span={store.ui.mediaQuery.isMobile ? 8 : 5}> + store.authentication.userData.role != "Retail" && ( + <Col span={store.ui.mediaQuery.isMobile ? 24 : 5}> <Row justify={"center"}> <Col lg={12} xs={12}> <Title strong level={3} style={styleSaldoTitle}> @@ -254,7 +259,7 @@ export const Profile = observer(() => { <Col></Col> </Row> </Col> - ))} + )} </Row> <Row> <Col span={24}> @@ -271,26 +276,90 @@ export const Profile = observer(() => { <FilterOutlined /> Filter </Button> - <Table - columns={columns} - bordered - dataSource={store.transaction.dataHistoryTransaction} - pagination={{ - pageSize: store.transaction.pageSizeHistoryTransaction, - total: store.transaction.total_dataHistoryTransaction, - current: store.transaction.pageHistoryTransaction + 1, - showSizeChanger: true, - simple: false, - }} - onChange={async (page) => { - let pageNumber = page.current; - store.transaction.pageSizeHistoryTransaction = page.pageSize; - store.transaction.pageHistoryTransaction = pageNumber - 1; - modalLoader.setLoading(true); - await store.transaction.getDataHistoryTransaction(); - modalLoader.setLoading(false); - }} - /> + {store.ui.mediaQuery.isDesktop && ( + <Table + columns={columns} + bordered + dataSource={store.transaction.dataHistoryTransaction} + pagination={{ + pageSize: store.transaction.pageSizeHistoryTransaction, + total: store.transaction.total_dataHistoryTransaction, + current: store.transaction.pageHistoryTransaction + 1, + showSizeChanger: true, + simple: false, + }} + onChange={async (page) => { + let pageNumber = page.current; + store.transaction.pageSizeHistoryTransaction = + page.pageSize; + store.transaction.pageHistoryTransaction = pageNumber - 1; + modalLoader.setLoading(true); + await store.transaction.getDataHistoryTransaction(); + modalLoader.setLoading(false); + }} + /> + )} + {store.ui.mediaQuery.isMobile && ( + <List + itemLayout="horizontal" + position={"top"} + dataSource={store.transaction.dataHistoryTransaction} + pagination={{ + pageSize: store.transaction.pageSizeHistoryTransaction, + total: store.transaction.total_dataHistoryTransaction, + current: store.transaction.pageHistoryTransaction + 1, + showSizeChanger: true, + simple: false, + }} + onChange={async (page) => { + let pageNumber = page.current; + store.transaction.pageSizeHistoryTransaction = + page.pageSize; + store.transaction.pageHistoryTransaction = pageNumber - 1; + modalLoader.setLoading(true); + await store.transaction.getDataHistoryTransaction(); + modalLoader.setLoading(false); + }} + style={{ padding: 0 }} + renderItem={(item) => { + return ( + <div> + <List.Item + key={item.id} + style={{ + backgroundColor: "#ffffff", + paddingTop: 0, + paddingBottom: 0, + display: "flex", + flexDirection: "row", + alignItems: "center", + justifyContent: "center", + }} + > + <List.Item.Meta + className={["cariparkir-container"].join(" ")} + title={item.buyer} + description={ + <div style={{}}> + <p> + <small>Price : {item.price}</small> <br /> + <small>Tujuan : {item.transaction_destination}</small> <br /> + <small>Kode Transaksi : {item.transaction_code}</small> <br /> + <small>Status : {item.status === 1 ? "Success" : "Pending"}</small> <br /> + <small>No.Seri : {item.seri_number}</small> <br /> + <small>IDTrx Mitra : {item.partner_transaction_code}</small> <br /> + <small>Transaction Date : {format(parseISO(item.created_at), "dd-MM-yyyy")}</small> <br /> + </p> + </div> + } + /> + </List.Item> + <Divider plain style={{ margin: 0 }} /> + </div> + ); + }} + /> + )} </div> </Col> </Row> From c95bd3eca3b144fcc3ffe914f6cbe7eed81bf4ca Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Mon, 3 Jan 2022 13:44:11 +0700 Subject: [PATCH 241/324] Perbaikan Project PPOB --- src/pages/Membership/DetailUser.js | 14 ++++++++------ src/pages/Membership/Membership.js | 1 + src/store/authentication.js | 12 ++++++++++++ src/store/transaction.js | 2 ++ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 47c6662..58b9970 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -41,6 +41,7 @@ export const DetailUser = observer(() => { return () => { store.membership.dataDetail = {}; store.transaction.dataHistoryTopUp = []; + store.authentication.dataProfit = []; store.transaction.dataDetailHistoryTransaction = []; }; }, []); @@ -49,6 +50,7 @@ export const DetailUser = observer(() => { const isAdmin = store.authentication.userData.role === "Admin"; await Promise.allSettled([ store.transaction.getDataHistoryTopUp(id), + store.authentication.getProfit(id), store.transaction.getDetailHistoryTransaction(id), store.membership.getDetail(id), store.role.getData(isAdmin), @@ -313,26 +315,26 @@ export const DetailUser = observer(() => { <Text strong>Name</Text> </Col> <Col span={12}> - <Text>{store.membership.dataDetail.userDetail?.name}</Text> + <Text>{store.authentication.dataProfit.userDetail?.name}</Text> </Col> <Col span={12}> <Text strong>Username</Text> </Col> <Col span={12}> - <Text>{store.membership.dataDetail.username}</Text> + <Text>{store.authentication.dataProfit.username}</Text> </Col> <Col span={12}> <Text strong>Role</Text> </Col> <Col span={12}> - <Text>{store.membership.dataDetail.roles?.name}</Text> + <Text>{store.authentication.dataProfit.roles?.name}</Text> </Col> <Col span={12}> <Text strong>Phone Number</Text> </Col> <Col span={12}> <Text> - {store.membership.dataDetail.userDetail?.phone_number} + {store.authentication.dataProfit.userDetail?.phone_number} </Text> </Col> <Col span={12}> @@ -340,7 +342,7 @@ export const DetailUser = observer(() => { </Col> <Col span={12}> <Text> - {store.membership.dataDetail.isActive === true + {store.authentication.dataProfit.isActive === true ? "Aktif" : "Inaktif"} </Text> @@ -364,7 +366,7 @@ export const DetailUser = observer(() => { style: "currency", currency: "IDR", }).format( - store.authentication.profileData?.wallet || 0 + store.authentication.dataProfit.wallet || 0 )} </Text> </Col> diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 90cbd55..28b5b77 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -222,6 +222,7 @@ export const Membership = observer(() => { onClick={async () => { await store.transaction.getDataHistoryTopUp(record.id); await store.transaction.getDetailHistoryTransaction(record.id); + await store.authentication.getProfit(record.id); //await store.transaction.getDataHistoryTransaction() history.push(LINKS.USER_DETAIL.replace(":id", record.id)); console.log(record.id); diff --git a/src/store/authentication.js b/src/store/authentication.js index 6cde95a..f6eee2e 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -8,6 +8,7 @@ export class Authentication { isLoginLoading = false; ctx; profileData = {}; + dataProfit=[] constructor(ctx) { this.ctx = ctx; @@ -51,6 +52,17 @@ export class Authentication { } } + async getProfit(id) { + try { + const response = await http.get(`/auth/profile/${id}`); + console.log(response) + this.dataProfit = response.body ?? []; + this.total_data = response?.body?.count ?? 0; + } catch (e) { + console.error(e); + } + } + async getProfile() { try { const response = await http.get('/auth/profile'); diff --git a/src/store/transaction.js b/src/store/transaction.js index c74cafb..d3095cd 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -40,6 +40,7 @@ export class Transaction { dataTransactionB2B = []; dataTransactionPartner = []; + //filter visibleModalFilterTransaction = false; filterStart = null; @@ -51,6 +52,7 @@ export class Transaction { makeAutoObservable(this); } + async getData() { try { const response = await http.get( From 2f755d2d795b92d3cc2dc3ca71b2dab86eec159a Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Mon, 3 Jan 2022 15:18:52 +0700 Subject: [PATCH 242/324] Perbaikan Project PPOB --- src/pages/Membership/DetailUser.js | 151 ++++++++++++++---------- src/pages/Profile/Profile.js | 181 +++++++++++++++++++---------- src/store/transaction.js | 9 +- 3 files changed, 217 insertions(+), 124 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 58b9970..fee5ac2 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -10,6 +10,7 @@ import { Typography, Tabs, List, + Tag, Divider, } from "antd"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; @@ -172,7 +173,23 @@ export const DetailUser = observer(() => { dataIndex: "status", key: "status", render: (text, record) => { - return <Text>{record.status === 1 ? "Success" : "Pending"}</Text>; + return ( + <Tag + color={ + record.status === 1 + ? "success" + : record.status === 0 + ? "warning" + : "processing" + } + > + {record.status === 1 + ? "Success" + : record.status === 0 + ? "Pending" + : "Failed"} + </Tag> + ); }, }, { @@ -434,6 +451,27 @@ export const DetailUser = observer(() => { </TabPane> <TabPane tab="History Transaction" key="2"> {store.ui.mediaQuery.isDesktop && ( + // <Table + // columns={columns} + // bordered + // dataSource={store.transaction.dataHistoryTransaction} + // pagination={{ + // pageSize: store.transaction.pageSizeHistoryTransaction, + // total: store.transaction.total_dataHistoryTransaction, + // current: store.transaction.pageHistoryTransaction + 1, + // showSizeChanger: true, + // simple: false, + // }} + // onChange={async (page) => { + // let pageNumber = page.current; + // store.transaction.pageSizeHistoryTransaction = + // page.pageSize; + // store.transaction.pageHistoryTransaction = pageNumber - 1; + // modalLoader.setLoading(true); + // await store.transaction.getDataHistoryTransaction(); + // modalLoader.setLoading(false); + // }} + // /> <Table key="1" hasEmpty @@ -443,13 +481,9 @@ export const DetailUser = observer(() => { } bordered pagination={{ - pageSize: - store.transaction.pageSizeHistoryTransactionDetailUser, - total: - store.transaction - .total_dataDetailHistoryTransactionDetailUser, - current: - store.transaction.pageHistoryTransactionDetailUser + 1, + pageSize: store.transaction.pageSize, + total: store.transaction.total_data, + current: store.transaction.page + 1, showSizeChanger: true, simple: false, }} @@ -477,11 +511,13 @@ export const DetailUser = observer(() => { modalLoader.setLoading(false); }, pageSize: store.transaction.pageSize, - total: store.transaction.totalData, + total: store.transaction.total_data, current: store.transaction.page + 1, style: { marginBottom: "1rem", marginRight: "1rem" }, }} - dataSource={store.membership.data} + dataSource={ + store.transaction.dataDetailHistoryTransactionDetailUser + } style={{ padding: 0 }} renderItem={(item) => { return ( @@ -500,66 +536,61 @@ export const DetailUser = observer(() => { > <List.Item.Meta className={["cariparkir-container"].join(" ")} - title={item.name} + title={item.buyer} description={ <div style={{}}> <p> - <small>Saldo System : {item.name}</small>{" "} - <br /> - <small>Role : {item.roleName}</small> <br /> + <small>Price : {item.price}</small> <br /> <small> - Saldo Supplier : {item.coa?.amount} + Tujuan : {item.transaction_destination} + </small>{" "} + <br /> + <small> + Kode Transaksi : {item.transaction_code} + </small>{" "} + <br /> + <small> + Status :{" "} + { + <Tag + color={ + item.status === 1 + ? "success" + : item.status === 0 + ? "warning" + : "processing" + } + > + {item.status === 1 + ? "Success" + : item.status === 0 + ? "Pending" + : "Failed"} + </Tag> + } + </small>{" "} + <br /> + <small> + No.Seri : {item.seri_number} + </small>{" "} + <br /> + <small> + IDTrx Mitra :{" "} + {item.partner_transaction_code} + </small>{" "} + <br /> + <small> + Transaction Date :{" "} + {format( + parseISO(item.created_at), + "dd-MM-yyyy" + )} </small>{" "} <br /> - {/* <Button - style={{ marginRight: 10 }} - onClick={() => { - setDestination(item?.id); - console.log(item?.id); - setIsVisibleTopUpModal(true); - }} - > - <DownloadOutlined /> Top Up Saldo - </Button> - <Button - onClick={async () => { - await store.transaction.getDataHistoryTopUp( - item.id - ); - history.push( - LINKS.USER_DETAIL.replace( - ":id", - item.id - ) - ); - console.log(item.id); - }} - > - Detail - </Button> */} </p> </div> } /> - <div style={{ marginRight: 16 }}> - <p - style={{ - fontSize: 9, - margin: 0, - }} - > - {/* <Button - type={ - item?.isActive === true ? "danger" : "primary" - } - onClick={() => - changeStatus(item?.id, item?.isActive) - } - > - {item?.isActive === true ? "Inactive" : "Active"} - </Button> */} - </p> - </div> </List.Item> <Divider plain style={{ margin: 0 }} /> </div> diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index a368fff..8c9f3fa 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -11,7 +11,8 @@ import { Form, Input, Divider, - List + List, + Tag, } from "antd"; import moment from "moment"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; @@ -138,7 +139,23 @@ export const Profile = observer(() => { dataIndex: "status", key: "status", render: (text, record) => { - return <Text>{record.status === 1 ? "Success" : "Pending"}</Text>; + return ( + <Tag + color={ + record.status === 1 + ? "success" + : record.status === 0 + ? "warning" + : "processing" + } + > + {record.status === 1 + ? "Success" + : record.status === 0 + ? "Pending" + : "Failed"} + </Tag> + ); }, }, { @@ -300,66 +317,106 @@ export const Profile = observer(() => { /> )} {store.ui.mediaQuery.isMobile && ( - <List - itemLayout="horizontal" - position={"top"} - dataSource={store.transaction.dataHistoryTransaction} - pagination={{ - pageSize: store.transaction.pageSizeHistoryTransaction, - total: store.transaction.total_dataHistoryTransaction, - current: store.transaction.pageHistoryTransaction + 1, - showSizeChanger: true, - simple: false, - }} - onChange={async (page) => { - let pageNumber = page.current; - store.transaction.pageSizeHistoryTransaction = - page.pageSize; - store.transaction.pageHistoryTransaction = pageNumber - 1; - modalLoader.setLoading(true); - await store.transaction.getDataHistoryTransaction(); - modalLoader.setLoading(false); - }} - style={{ padding: 0 }} - renderItem={(item) => { - return ( - <div> - <List.Item - key={item.id} - style={{ - backgroundColor: "#ffffff", - paddingTop: 0, - paddingBottom: 0, - display: "flex", - flexDirection: "row", - alignItems: "center", - justifyContent: "center", - }} - > - <List.Item.Meta - className={["cariparkir-container"].join(" ")} - title={item.buyer} - description={ - <div style={{}}> - <p> - <small>Price : {item.price}</small> <br /> - <small>Tujuan : {item.transaction_destination}</small> <br /> - <small>Kode Transaksi : {item.transaction_code}</small> <br /> - <small>Status : {item.status === 1 ? "Success" : "Pending"}</small> <br /> - <small>No.Seri : {item.seri_number}</small> <br /> - <small>IDTrx Mitra : {item.partner_transaction_code}</small> <br /> - <small>Transaction Date : {format(parseISO(item.created_at), "dd-MM-yyyy")}</small> <br /> - </p> - </div> - } - /> - </List.Item> - <Divider plain style={{ margin: 0 }} /> - </div> - ); - }} - /> - )} + <List + itemLayout="horizontal" + position={"top"} + dataSource={store.transaction.dataHistoryTransaction} + pagination={{ + pageSize: store.transaction.pageSizeHistoryTransaction, + total: store.transaction.total_dataHistoryTransaction, + current: store.transaction.pageHistoryTransaction + 1, + showSizeChanger: true, + simple: false, + }} + onChange={async (page) => { + let pageNumber = page.current; + store.transaction.pageSizeHistoryTransaction = + page.pageSize; + store.transaction.pageHistoryTransaction = pageNumber - 1; + modalLoader.setLoading(true); + await store.transaction.getDataHistoryTransaction(); + modalLoader.setLoading(false); + }} + style={{ padding: 0 }} + renderItem={(item) => { + return ( + <div> + <List.Item + key={item.id} + style={{ + backgroundColor: "#ffffff", + paddingTop: 0, + paddingBottom: 0, + display: "flex", + flexDirection: "row", + alignItems: "center", + justifyContent: "center", + }} + > + <List.Item.Meta + className={["cariparkir-container"].join(" ")} + title={item.buyer} + description={ + <div style={{}}> + <p> + <small>Price : {item.price}</small> <br /> + <small> + Tujuan : {item.transaction_destination} + </small>{" "} + <br /> + <small> + Kode Transaksi : {item.transaction_code} + </small>{" "} + <br /> + <small> + Status :{" "} + { + <Tag + color={ + item.status === 1 + ? "success" + : item.status === 0 + ? "warning" + : "processing" + } + > + {item.status === 1 + ? "Success" + : item.status === 0 + ? "Pending" + : "Failed"} + </Tag> + } + </small>{" "} + <br /> + <small> + No.Seri : {item.seri_number} + </small>{" "} + <br /> + <small> + IDTrx Mitra :{" "} + {item.partner_transaction_code} + </small>{" "} + <br /> + <small> + Transaction Date :{" "} + {format( + parseISO(item.created_at), + "dd-MM-yyyy" + )} + </small>{" "} + <br /> + </p> + </div> + } + /> + </List.Item> + <Divider plain style={{ margin: 0 }} /> + </div> + ); + }} + /> + )} </div> </Col> </Row> diff --git a/src/store/transaction.js b/src/store/transaction.js index d3095cd..343dfb3 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -6,9 +6,13 @@ export class Transaction { pageSize = 10; data = []; total_data = 0; + + filterSubCategory = null; visibleModalProduct = false; visibleModalTransaction = false; + pageSizeDetail=10; + pageDetail=0 pageCategories = 0; pageSizeCategories = 10; @@ -39,6 +43,7 @@ export class Transaction { dataTransaction = []; dataTransactionB2B = []; dataTransactionPartner = []; + total_dataDetailHistoryTransactionDetailUser=0; //filter @@ -137,10 +142,10 @@ export class Transaction { async getDetailHistoryTransaction(id) { try { - const response = await http.get(`/transaction/history-user/${id}?page=${this.pageHistoryTransactionDetailUser}&pageSize=${this.pageSizeHistoryTransactionDetailUser}&start=${this.filterStartDetailUser}&end=${this.filterEndDetailUser}`); + const response = await http.get(`/transaction/history-user/${id}?page=${this.page}&pageSize=${this.pageSize}&start=${this.filterStartDetailUser}&end=${this.filterEndDetailUser}`); console.log(response,'Data Trans'); this.dataDetailHistoryTransactionDetailUser = response.body.data ?? []; - this.total_dataDetailHistoryTransactionDetailUser = response?.body?.count ?? 0; + this.total_data = response?.body?.count ?? 0; } catch (e) { console.error(e); } From 88a51ec3f05df151ad52be09952e7633eeae3aff Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Mon, 3 Jan 2022 16:56:24 +0700 Subject: [PATCH 243/324] perbaikan Project PPOB --- src/pages/App/DesktopLayout.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 6eec7f0..fbcdfbe 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -124,14 +124,15 @@ export const DesktopLayout = observer(() => { }} > <Menu> - {store.authentication.userData.role !== "Retail" && ( - <Menu.Item key="home"> - <Link to={LINKS.HOME}> - <HomeOutlined /> - <span>Beranda</span> - </Link> - </Menu.Item> - )} + {store.authentication.userData.role === "Admin" || + (store.authentication.userData.role === "Admin Partner" && ( + <Menu.Item key="home"> + <Link to={LINKS.HOME}> + <HomeOutlined /> + <span>Beranda</span> + </Link> + </Menu.Item> + ))} {store.authentication.userData.role === "Admin" && ( <Menu.Item key="membership"> <Link to={LINKS.MEMBERSHIP}> From acc5bae23c486f755710e1415a916b9bb7a02947 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Mon, 3 Jan 2022 18:39:22 +0700 Subject: [PATCH 244/324] Perbaikan Project PPOB --- src/component/ProductComponent.js | 16 ++++++++++------ src/pages/Membership/Membership.js | 25 ++++++++++++++++++------- src/pages/Profile/Profile.js | 12 ++++++++---- 3 files changed, 36 insertions(+), 17 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index f2daca7..d83631e 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -215,12 +215,13 @@ export const ProductComponent = observer((props) => { store.product.visibleModalFilterProduct = false; }; - const handleCancelFilter = () => { + const handleCancelFilter = async () => { store.product.filterSubCategory = null; store.product.filterSupplier = null; - setFilterSubCategories([]); - setFilterSupplier([]); + // setFilterSubCategories([]); + // setFilterSupplier([]); store.product.visibleModalFilterProduct = false; + await store.product.getData(); }; const handleSubmitFilter = async () => { @@ -471,10 +472,13 @@ export const ProductComponent = observer((props) => { visible={store.product.visibleModalFilterProduct} title={"Filter"} footer={footerLayoutFilter} - onCancel={() => { - setFilterSupplier([]); - setFilterSubCategories([]); + onCancel={async () => { + // setFilterSupplier([]); + // setFilterSubCategories([]); + store.product.filterSupplier = null; + store.product.filterSubCategory = null; store.product.visibleModalFilterProduct = false; + await store.product.getData(); }} > <Row> diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 28b5b77..d1bcb5f 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -95,15 +95,22 @@ export const Membership = observer(() => { }; const handleRemoveFilter = async () => { + store.membership.filterMembership = null; + store.membership.filterPartner = null; setFilterMembership([]); setFilterPartner([]); store.membership.visibleModalFilterMembership = false; + //await getData(); await store.membership.getData(); }; - const handleCancelFilter = () => { - setFilterMembership([]); - setFilterPartner([]); + const handleCancelFilter = async () => { + store.membership.filterMembership = null; + store.membership.filterPartner = null; + // setFilterMembership([]); + // setFilterPartner([]); store.membership.visibleModalFilterMembership = false; + //await getData(); + await store.membership.getData(); }; const handleSubmitFilter = async () => { @@ -511,19 +518,23 @@ export const Membership = observer(() => { onCreate={async (data) => { onSubmit(data); }} - onCancel={() => { + onCancel={async () => { setInitialData({}); setVisibleModal(false); + await store.membership.getData(); }} /> <Modal visible={store.membership.visibleModalFilterMembership} title={"Filter"} footer={footerLayoutFilter} - onCancel={() => { - setFilterMembership([]); - setFilterPartner([]); + onCancel={async() => { + // setFilterMembership([]); + // setFilterPartner([]); + store.membership.filterMembership = null; + store.membership.filterPartner = null; store.membership.visibleModalFilterMembership = false; + await store.membership.getData(); }} > <Row> diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 8c9f3fa..6fd9e47 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -64,11 +64,12 @@ export const Profile = observer(() => { store.transaction.visibleModalFilterTransaction = false; }; - const handleCancelFilter = () => { + const handleCancelFilter = async() => { store.transaction.filterStart = null; - form.resetFields(); + //form.resetFields(); store.transaction.filterEnd = null; store.transaction.visibleModalFilterTransaction = false; + await store.transaction.getDataHistoryTransaction(); }; const handleSubmitFilter = async () => { @@ -426,9 +427,12 @@ export const Profile = observer(() => { visible={store.transaction.visibleModalFilterTransaction} title={"Filter"} footer={footerLayoutFilter} - onCancel={() => { - form.resetFields(); + onCancel={async() => { + //form.resetFields(); + store.transaction.filterStart = null; + store.transaction.filterEnd = null; store.transaction.visibleModalFilterTransaction = false; + await store.transaction.getDataHistoryTransaction(); }} > <Row> From 718134dc27368f819eee14dcc75248d1b7dda25a Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Mon, 3 Jan 2022 19:01:30 +0700 Subject: [PATCH 245/324] Perbaikan Project PPOB --- src/pages/Payback/Payback.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 0269547..bdf6545 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -221,13 +221,14 @@ export const Payback = observer(() => { store.payback.visibleModalFilterPayback = false; }; - const handleCancelFilter = () => { - setFilterMembership([]); - form.resetFields(); + const handleCancelFilter = async() => { + //setFilterMembership([]); + //form.resetFields(); store.payback.filterMembership = null; store.payback.filterStart = null; store.payback.filterEnd = null; store.payback.visibleModalFilterPayback = false; + await store.payback.getDataConfirmation(); }; const handleSubmitFilter = async () => { @@ -472,10 +473,14 @@ export const Payback = observer(() => { visible={store.payback.visibleModalFilterPayback} title={"Filter"} footer={footerLayoutFilter} - onCancel={() => { - form.resetFields(); - setFilterMembership([]); + onCancel={async() => { + //form.resetFields(); + //setFilterMembership([]); + store.payback.filterMembership = null; + store.payback.filterStart = null; + store.payback.filterEnd = null; store.payback.visibleModalFilterPayback = false; + await store.payback.getDataConfirmation(); }} > <Row> From 9b8cae7297a4fab48b482d9d65e1d9e99856795b Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Tue, 4 Jan 2022 13:10:50 +0700 Subject: [PATCH 246/324] Perbaikan Project PPOB --- kern.log | 0 src/pages/Transaction/Product.js | 12 +++++++----- src/store/transaction.js | 10 +++------- 3 files changed, 10 insertions(+), 12 deletions(-) create mode 100644 kern.log diff --git a/kern.log b/kern.log new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index d753985..266dddc 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -64,11 +64,13 @@ export const Product = observer(() => { if (response.status === 201) { message.success(response?.body?.message || "Berhasil Beli Produk"); } else { - message.error(response?.body?.message || "Gagal Beli Produk", 3); + message.error(response?.body?.error || "Gagal Beli Produk", 3); } } catch (e) { - if (e.response?.body?.message) { - message.error(e.response.body.message); + if (e.response?.body?.error) { + message.error(e.response.body.error); + setVisibleModalBuy(false); + modalLoader.setLoading(false); return; } console.log(e, "apa errornya"); @@ -238,8 +240,8 @@ export const Product = observer(() => { message: "Value should contain just number", }, { - pattern: /^[\d]{2,12}$/, - message: "Value should be less than 12 character", + pattern: /^[\d]{10,12}$/, + message: "Value should be 10 - 12 character", }, ]} > diff --git a/src/store/transaction.js b/src/store/transaction.js index 343dfb3..4c58346 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -184,13 +184,9 @@ export class Transaction { } async buyProd(data) { - try { - const response = await http.post("/transaction/order-prod").send(data); - console.log(response) - return response; - } catch (e) { - console.error(e); - } + const response = await http.post("/transaction/order-prod").send(data); + console.log(response) + return response; } async update(id, data) { From cc930cd195b22dae1c000a8c7706c0180a195bfb Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Tue, 4 Jan 2022 16:53:52 +0700 Subject: [PATCH 247/324] Hit Api Buy Stagging --- src/pages/Transaction/Product.js | 54 ++++++++++++++++++++++++++++---- src/store/transaction.js | 5 +-- 2 files changed, 49 insertions(+), 10 deletions(-) diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index 266dddc..742f674 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -54,19 +54,22 @@ export const Product = observer(() => { }; const handleBuyProduct = async (data, productCode) => { - //console.log(data) modalLoader.setLoading(true); try { const response = await store.transaction.buyProd({ ...data, productCode: productCode, }); + if (response.status === 201) { message.success(response?.body?.message || "Berhasil Beli Produk"); } else { message.error(response?.body?.error || "Gagal Beli Produk", 3); } } catch (e) { + console.log("testingan"); + console.log(e.response, "testingan"); + console.log(e.result, "testingan1"); if (e.response?.body?.error) { message.error(e.response.body.error); setVisibleModalBuy(false); @@ -80,6 +83,36 @@ export const Product = observer(() => { modalLoader.setLoading(false); }; + const handleBuyStag = async (data, productCode) => { + modalLoader.setLoading(true); + try { + const response = await store.transaction.buyProduct({ + ...data, + productCode: productCode, + }); + if (response.status === 201) { + message.success(response?.body?.message || "Berhasil Beli Produk"); + } else { + message.error(response?.body?.error || "Gagal Beli Produk", 3); + } + } catch (e) { + console.log("testingan"); + console.log(e.response, "testingan"); + console.log(e.result, "testingan1"); + if (e.response?.body?.error) { + message.error(e.response.body.error); + setVisibleModalBuy(false); + modalLoader.setLoading(false); + return; + } + console.log(e, "apa errornya"); + message.error("Gagal Beli Product"); + } + // setDataProd(false); + // setDataStag(false); + setVisibleModalBuy(false); + modalLoader.setLoading(false); + }; const handleCancel = () => { form.resetFields(); setVisibleModalBuy(false); @@ -178,7 +211,7 @@ export const Product = observer(() => { Cancel </Button>, <Button - key="submit" + key="Buy Prod" style={{ backgroundColor: "#4e79e7", color: "#fff", @@ -199,11 +232,20 @@ export const Product = observer(() => { Buy Prod </Button>, <Button - key="link" - href="https://google.com" + key="Buy Stag" type="primary" - // loading={loading} - // onClick={this.handleOk} + onClick={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleBuyStag(values, barang.product_code); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} > Buy Staging </Button>, diff --git a/src/store/transaction.js b/src/store/transaction.js index 4c58346..3fb6cca 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -175,12 +175,9 @@ export class Transaction { } async buyProduct(data) { - try { const response = await http.post("/transaction/order").send(data); + console.log(response,'dari store') return response; - } catch (e) { - console.error(e); - } } async buyProd(data) { From 211e6b401cac2050dad6ed7b7d7907ac81485318 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Tue, 4 Jan 2022 18:15:48 +0700 Subject: [PATCH 248/324] Bug Fixing Create New Supplier Menu Supplier --- src/component/SupplierComponent.js | 35 ++++++++++++++++-------------- src/store/supplier.js | 10 ++++----- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index b5542c1..847e909 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -190,31 +190,34 @@ export const SupplierComponent = observer((props) => { form.resetFields(); } else { try { - modalLoader.setLoading(true); const response = await store.supplier.create(data); - console.log(response) - response?.body?.statusCode === 201 && response?.body?.statusCode === 200 - ? message.success( - response?.body?.message || "Berhasil Tambah Supplier Baru" - ) - : message.error( - response?.body?.error - ? response?.body?.error || "Supplier Sudah Ada" - : response?.body?.message || "Gagal Tambah Supplier Baru" - // response?.body?.statusCode === 406 - // ? response?.body?.error || "Supplier Sudah Ada" - // : response?.body?.message || "Gagal Tambah Supplier Baru" - //response?.body?.message || "Gagal Tambah Supplier Baru" - ); + if (response.status === 201) { + message.success( + response?.body?.message || "Berhasil Tambah Supplier" + ); + await store.supplier.getData(); + } else { + message.error(response?.body?.error || "Gagal Tambah Supplier", 3); + } } catch (e) { + console.log("testingan"); + console.log(e.response, "testingan"); + console.log(e.result, "testingan1"); + if (e.response?.body?.error) { + message.error(e.response.body.error); + modalLoader.setLoading(false); + store.supplier.visibleModalSupplier = false; + return; + } console.log(e, "apa errornya"); - message.error(e.response?.body?.message || "Gagal Tambah Supplier"); + message.error("Gagal Beli Product"); } modalLoader.setLoading(false); store.supplier.visibleModalSupplier = false; setIdData(""); form.resetFields(); + await store.supplier.getData(); } }; diff --git a/src/store/supplier.js b/src/store/supplier.js index b7d6e4c..ecc81e1 100644 --- a/src/store/supplier.js +++ b/src/store/supplier.js @@ -38,13 +38,13 @@ export class Supplier { } async create(data) { - try { + // try { const response = await http.post('/users/supplier').send(data); - await this.getData(); + //await this.getData(); return response; - } catch (e) { - console.error(e); - } + // } catch (e) { + // console.error(e); + // } } async createTransaction(data) { try { From 2cb4f9319ce89bbb9db0577e1f413f7c65911ab1 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Tue, 4 Jan 2022 18:17:55 +0700 Subject: [PATCH 249/324] Bug Fixing Menu Membership Ganti Passowrd --- src/component/SupplierComponent.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index 847e909..add9957 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -210,7 +210,7 @@ export const SupplierComponent = observer((props) => { return; } console.log(e, "apa errornya"); - message.error("Gagal Beli Product"); + message.error("Gagal Tambah Supplier"); } modalLoader.setLoading(false); From d47f838dc1dbbfeeb970c0642ef27265789221b2 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Wed, 5 Jan 2022 11:35:26 +0700 Subject: [PATCH 250/324] fixing Bug --- src/pages/Membership/MembershipModal.js | 4 +- src/pages/Payback/Payback.js | 6 +- src/pages/Payback/PaybackCreated.js | 250 ++++++++++++++++++------ src/store/payback.js | 3 + 4 files changed, 193 insertions(+), 70 deletions(-) diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index 77e3550..752cbe0 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -102,8 +102,8 @@ export const MembershipModal = ({ }, { //pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/, - pattern: /^[\d]{2,12}$/, - message: "Phone number should be less than 12 character", + pattern: /^[\d]{10,12}$/, + message: "Phone number should be 10 - 12 character", }, ]} > diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index bdf6545..0f85258 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -234,9 +234,9 @@ export const Payback = observer(() => { const handleSubmitFilter = async () => { const data = form.getFieldsValue(); //console.log(data); - store.transaction.filterMembership = filterMembership; - store.transaction.filterStart = data.start_date; - store.transaction.filterEnd = data.end_date; + store.payback.filterMembership = filterMembership; + store.payback.filterStart = data.start_date; + store.payback.filterEnd = data.end_date; modalLoader.setLoading(true); await store.payback.getDataConfirmation(); modalLoader.setLoading(false); diff --git a/src/pages/Payback/PaybackCreated.js b/src/pages/Payback/PaybackCreated.js index 1ba7bbe..c189717 100644 --- a/src/pages/Payback/PaybackCreated.js +++ b/src/pages/Payback/PaybackCreated.js @@ -1,19 +1,40 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Button, Card, Col, Divider, Image, Input, List, message, Row, Table, Tag,} from "antd"; -import {useStore} from "../../utils/useStore"; -import {observer} from "mobx-react-lite"; -import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; -import {PaybackModal} from "./PaybackModal"; -import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -import {LINKS} from "../../routes/app"; -import {ModalLoaderContext} from "../../utils/modal"; -import {appConfig} from "../../config/app"; -import {PAYBACK_STATUS} from "../../constants/payback"; +import React, { useContext, useEffect, useState } from "react"; +import { + Button, + Card, + Col, + Divider, + Image, + Input, + List, + message, + DatePicker, + Row, + Table, + Tag, + Typography, + Select, + Form, + Modal, +} from "antd"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { FilterOutlined, PlusSquareOutlined } from "@ant-design/icons"; +import { PaybackModal } from "./PaybackModal"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { LINKS } from "../../routes/app"; +import { ModalLoaderContext } from "../../utils/modal"; +import { appConfig } from "../../config/app"; +import { PAYBACK_STATUS } from "../../constants/payback"; -const {Search} = Input; +const { Search } = Input; export const PaybackCreated = observer(() => { + const { Option } = Select; + const { Title } = Typography; + const [form] = Form.useForm(); const store = useStore(); + const [filterMembership, setFilterMembership] = useState([]); const [initialData, setInitialData] = useState({}); const modalLoader = useContext(ModalLoaderContext); @@ -45,11 +66,11 @@ export const PaybackCreated = observer(() => { dataIndex: "image_prove", key: "image_prove", render: (text, record) => ( - <Image - src={`${appConfig.apiUrl}/config/image/${text}`} - style={{width: '5vw'}} - alt={record.id} - /> + <Image + src={`${appConfig.apiUrl}/config/image/${text}`} + style={{ width: "5vw" }} + alt={record.id} + /> ), }, { @@ -57,23 +78,24 @@ export const PaybackCreated = observer(() => { dataIndex: "amount", key: "amount", render: (text) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text), + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), }, { title: "Status", dataIndex: "status", key: "status", - width: '10%', - render: (text) => - <Tag - color={PAYBACK_STATUS[text] === PAYBACK_STATUS[3] ? "cyan" : "red"} - style={{color: "#4F566B"}} - > - {PAYBACK_STATUS[text]} - </Tag> + width: "10%", + render: (text) => ( + <Tag + color={PAYBACK_STATUS[text] === PAYBACK_STATUS[3] ? "cyan" : "red"} + style={{ color: "#4F566B" }} + > + {PAYBACK_STATUS[text]} + </Tag> + ), }, ]; @@ -84,23 +106,91 @@ export const PaybackCreated = observer(() => { }, { route: LINKS.PAYBACK_CREATED, - name: <span style={{fontWeight: "bold"}}>Buat Pembayaran</span>, + name: <span style={{ fontWeight: "bold" }}>Buat Pembayaran</span>, }, ]; + const handleRemoveFilter = async () => { + store.payback.filterStart = null; + store.payback.filterEnd = null; + form.resetFields(); + await store.payback.getDataCreated(); + store.payback.visibleModalFilterCreate = false; + }; + + const handleCancelFilter = async () => { + store.payback.filterStart = null; + store.payback.filterEnd = null; + store.payback.visibleModalFilterCreate = false; + await store.payback.getDataCreated(); + }; + + const handleSubmitFilter = async () => { + const data = form.getFieldsValue(); + //console.log(data); + //store.payback.filterMembership = filterMembership; + store.payback.filterStart = data.start_date; + store.payback.filterEnd = data.end_date; + modalLoader.setLoading(true); + await store.payback.getDataCreated(); + modalLoader.setLoading(false); + // form.resetFields(); + // setFilterMembership([]); + store.payback.visibleModalFilterCreate = false; + }; + + // const handleFilterCategory = async (value) => { + // if (value) { + // store.product.filterCategory = value; + // await store.product.getDataSubCategories(); + // } else { + // store.product.filterCategory = null; + // await store.product.getDataSubCategories(); + // } + // }; + + const footerLayoutFilter = [ + <Button + key={"remove"} + onClick={handleRemoveFilter} + style={{ + backgroundColor: "#e74e5e", + color: "#fff", + }} + > + Remove Filter + </Button>, + <Button key={"cancel"} onClick={handleCancelFilter}> + Cancel + </Button>, + <Button + key={"submit"} + onClick={handleSubmitFilter} + style={{ + backgroundColor: "#4e79e7", + color: "#fff", + }} + > + Apply + </Button>, + ]; return ( <div className={["ppob-container"].join(" ")}> - <BreadcumbComponent data={routeData}/> + <BreadcumbComponent data={routeData} /> <Card> <div> - <Row style={{marginBottom: 20}}> + <Row style={{ marginBottom: 20 }}> <Col span={12}> - <Button> - <FilterOutlined/> + <Button + onClick={() => { + store.payback.visibleModalFilterCreate = true; + }} + > + <FilterOutlined /> Filter </Button> </Col> - <Col span={12} style={{textAlign: "right"}}> + <Col span={12} style={{ textAlign: "right" }}> {/* <Search placeholder="input search text" style={{ @@ -116,33 +206,33 @@ export const PaybackCreated = observer(() => { store.payback.visibleModalPayback = true; }} > - <PlusSquareOutlined/> New + <PlusSquareOutlined /> New </Button> )} </Col> </Row> {store.ui.mediaQuery.isDesktop && ( <Table - key="1" - hasEmpty - columns={columns} - dataSource={store.payback.dataCreated} - bordered - pagination={{ - pageSize: store.payback.pageSizeCreated, - total: store.payback.totalDataCreated, - current: store.payback.pageCreated + 1, - showSizeChanger: true, - simple: false - }} - onChange={async (page) => { - let pageNumber = page.current; - store.payback.pageSizeCreated = page.pageSize; - store.payback.pageCreated = pageNumber - 1; - modalLoader.setLoading(true); - await store.payback.getDataCreated(); - modalLoader.setLoading(false); - }} + key="1" + hasEmpty + columns={columns} + dataSource={store.payback.dataCreated} + bordered + pagination={{ + pageSize: store.payback.pageSizeCreated, + total: store.payback.totalDataCreated, + current: store.payback.pageCreated + 1, + showSizeChanger: true, + simple: false, + }} + onChange={async (page) => { + let pageNumber = page.current; + store.payback.pageSizeCreated = page.pageSize; + store.payback.pageCreated = pageNumber - 1; + modalLoader.setLoading(true); + await store.payback.getDataCreated(); + modalLoader.setLoading(false); + }} /> )} @@ -161,10 +251,10 @@ export const PaybackCreated = observer(() => { pageSize: store.payback.pageSizeCreated, total: store.payback.totalDataCreated, current: store.payback.pageCreated + 1, - style: {marginBottom: "1rem", marginRight: "1rem"}, + style: { marginBottom: "1rem", marginRight: "1rem" }, }} dataSource={store.payback.dataCreated} - style={{padding: 0}} + style={{ padding: 0 }} renderItem={(item) => { return ( <div> @@ -185,11 +275,11 @@ export const PaybackCreated = observer(() => { title={item.name} description={ <div style={{}}> - <Image src={item.image_prove} preview={false}/> + <Image src={item.image_prove} preview={false} /> </div> } /> - <div style={{marginRight: 16}}> + <div style={{ marginRight: 16 }}> <p style={{ fontSize: 9, @@ -200,7 +290,7 @@ export const PaybackCreated = observer(() => { </p> </div> </List.Item> - <Divider plain style={{margin: 0}}/> + <Divider plain style={{ margin: 0 }} /> </div> ); }} @@ -208,10 +298,40 @@ export const PaybackCreated = observer(() => { )} </div> </Card> - - <PaybackModal - initialData={initialData} - /> + <Modal + visible={store.payback.visibleModalFilterCreate} + title={"Filter"} + footer={footerLayoutFilter} + onCancel={async() => { + //form.resetFields(); + store.payback.filterStart = null; + store.payback.filterEnd = null; + store.payback.visibleModalFilterCreate = false; + await store.payback.getDataCreated(); + }} + > + <Row> + <Col span={24}> + <Form layout="vertical" name="filter" form={form}> + <Form.Item + name="start_date" + label="Dari" + rules={[{ required: true, message: "Please input Date!" }]} + > + <DatePicker style={{ width: "100%" }} /> + </Form.Item> + <Form.Item + name="end_date" + label="Sampai" + rules={[{ required: true, message: "Please input Date!" }]} + > + <DatePicker style={{ width: "100%" }} /> + </Form.Item> + </Form> + </Col> + </Row> + </Modal> + <PaybackModal initialData={initialData} /> </div> ); }); diff --git a/src/store/payback.js b/src/store/payback.js index 74b0624..a3399b2 100644 --- a/src/store/payback.js +++ b/src/store/payback.js @@ -20,6 +20,9 @@ export class Payback { filterMembership=null; filterStart=null; filterEnd=null; + + //filter created + visibleModalFilterCreate=false constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); From f2f47fbfa851522f1fe9b27a31fbbb0ff7571762 Mon Sep 17 00:00:00 2001 From: ilham <ilhamdwips@gmail.com> Date: Wed, 5 Jan 2022 13:18:58 +0700 Subject: [PATCH 251/324] fix: profit in detail member --- src/pages/Membership/DetailUser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index fee5ac2..958b403 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -403,7 +403,7 @@ export const DetailUser = observer(() => { style: "currency", currency: "IDR", }).format( - store.authentication.profileData?.profit || 0 + store.authentication.dataProfit?.profit || 0 )} </Text> </Col> From b5797e26157fd756e4e2e5f95b751102e60e6d85 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Wed, 5 Jan 2022 13:38:48 +0700 Subject: [PATCH 252/324] Fixing Bug --- src/pages/Membership/DetailUser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index fee5ac2..2cd43de 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -403,7 +403,7 @@ export const DetailUser = observer(() => { style: "currency", currency: "IDR", }).format( - store.authentication.profileData?.profit || 0 + store.authentication.dataProfit?.profit || 0 )} </Text> </Col> From 532277791aad43f13a7c6dd4d4006fcf2f468de7 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Wed, 5 Jan 2022 14:58:06 +0700 Subject: [PATCH 253/324] Bug Fixing Pagination --- src/pages/Membership/Membership.js | 5 +-- src/pages/Payback/Payback.js | 4 +-- src/pages/Payback/PaybackCreated.js | 4 ++- src/store/membership.js | 24 +++++++------ src/store/payback.js | 56 +++++++++++++++-------------- 5 files changed, 51 insertions(+), 42 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index d1bcb5f..5e6f930 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -352,7 +352,7 @@ export const Membership = observer(() => { bordered pagination={{ pageSize: store.membership.pageSize, - total: store.membership.totalData, + total: store.membership.total_data, current: store.membership.page + 1, showSizeChanger: true, simple: false, @@ -362,6 +362,7 @@ export const Membership = observer(() => { store.membership.pageSize = page.pageSize; store.membership.page = pageNumber - 1; modalLoader.setLoading(true); + await store.membership.getData(); await getData(); modalLoader.setLoading(false); }} @@ -528,7 +529,7 @@ export const Membership = observer(() => { visible={store.membership.visibleModalFilterMembership} title={"Filter"} footer={footerLayoutFilter} - onCancel={async() => { + onCancel={async () => { // setFilterMembership([]); // setFilterPartner([]); store.membership.filterMembership = null; diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 0f85258..7573c46 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -486,12 +486,12 @@ export const Payback = observer(() => { <Row> <Col span={24}> <Title level={5} type={"secondary"} strong> - From + Sender - {!idData && ( + {/* {!idData && ( */} { > - )} + {/* )} */} diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index fbcdfbe..909921e 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -196,14 +196,6 @@ export const DesktopLayout = observer(() => { Produk - {store.authentication.userData.role === "Admin" && ( - - - - Kategori - - - )} {store.authentication.userData.role === "Admin" && ( @@ -214,6 +206,14 @@ export const DesktopLayout = observer(() => { )} )} + {store.authentication.userData.role === "Admin" && ( + + + + Kategori + + + )} {store.authentication.userData.role === "Supervisor" && ( diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 62b9b43..3126d42 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -60,12 +60,12 @@ export const MenuList = observer((props) => { )} {store.authentication.userData.role === "Admin Partner" && ( - - - - Beranda - - + + + + Beranda + + )} {store.authentication.userData.role === "Admin" && ( @@ -125,14 +125,6 @@ export const MenuList = observer((props) => { Produk - {store.authentication.userData.role === "Admin" && ( - - - - Kategori - - - )} {store.authentication.userData.role === "Admin" && ( @@ -141,6 +133,14 @@ export const MenuList = observer((props) => { )} + {store.authentication.userData.role === "Admin" && ( + + + + Kategori + + + )} )} {store.authentication.userData.role === "Admin Partner" && ( diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 275bd15..9f38c91 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -197,7 +197,7 @@ export const Membership = observer(() => { }, { title: "Role", - dataIndex: "roleName", + dataIndex: ["roles","name"], key: "role", }, { diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 7573c46..869d550 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -240,8 +240,8 @@ export const Payback = observer(() => { modalLoader.setLoading(true); await store.payback.getDataConfirmation(); modalLoader.setLoading(false); - form.resetFields(); - setFilterMembership([]); + // form.resetFields(); + // setFilterMembership([]); store.payback.visibleModalFilterPayback = false; }; diff --git a/src/pages/Payback/PaybackCreated.js b/src/pages/Payback/PaybackCreated.js index 193f9da..d181347 100644 --- a/src/pages/Payback/PaybackCreated.js +++ b/src/pages/Payback/PaybackCreated.js @@ -26,7 +26,7 @@ import { LINKS } from "../../routes/app"; import { ModalLoaderContext } from "../../utils/modal"; import { appConfig } from "../../config/app"; import { PAYBACK_STATUS } from "../../constants/payback"; -import moment from 'moment'; +import moment from "moment"; const { Search } = Input; @@ -38,7 +38,6 @@ export const PaybackCreated = observer(() => { const [filterMembership, setFilterMembership] = useState([]); const [initialData, setInitialData] = useState({}); const modalLoader = useContext(ModalLoaderContext); - useEffect(() => { const init = async () => { @@ -90,12 +89,35 @@ export const PaybackCreated = observer(() => { dataIndex: "status", key: "status", width: "10%", - render: (text) => ( + render: (text, record) => ( + // + // {PAYBACK_STATUS[text]} + // - {PAYBACK_STATUS[text]} + {record.status === 0 + ? "Pending" + : record.status === 1 + ? "Success" + : record.status === 2 + ? "Failed" + : record.status === 3 + ? "Approved" + : "Rejected"} ), }, @@ -133,10 +155,14 @@ export const PaybackCreated = observer(() => { // const awal = format(parseISO(data.start_date), "dd-MM-yyyy") // const akhir = format(parseISO(data.start_date), "dd-MM-yyyy") //const awal= format(startOfDay(date.start_date()), 'yyyy-MM-dd 00:00') - const awal=store.payback.filterStart = moment(data.start_date).format('YYYY-MM-DD HH:mm:ss'); - const akhir=store.payback.filterEnd = moment(data.end_date).format('YYYY-MM-DD HH:mm:ss'); - console.log(awal) - console.log(akhir) + const awal = (store.payback.filterStart = moment(data.start_date).format( + "YYYY-MM-DD 00:00:00" + )); + const akhir = (store.payback.filterEnd = moment(data.end_date).format( + "YYYY-MM-DD HH:mm:ss" + )); + console.log(awal); + console.log(akhir); modalLoader.setLoading(true); await store.payback.getDataCreated(); modalLoader.setLoading(false); @@ -189,9 +215,9 @@ export const PaybackCreated = observer(() => { */} + +
+ { + setPreviewImage(file.url || file.filename); + }} + showUploadList={true} + onChange={handleChange} + beforeUpload={(file) => beforeUpload(file)} + customRequest={(args) => uploadHandler(args)} + onRemove={(file) => { + setImage(""); + setLoading(false); + setFileList([]); + }} + > + {image === "" ? uploadButton : null} + +
+ Max size of file 2 MB +
+
+
+ +
+ { + setPreviewImageStore(file.url || file.filename); + }} + showUploadList={true} + onChange={handleChangeStore} + beforeUpload={(file) => beforeUploadStore(file)} + customRequest={(args) => uploadHandlerStore(args)} + onRemove={(file) => { + setImageStore(""); + setLoadingStore(false); + setFileStore([]); + }} + > + {imageStore === "" ? uploadButtonStore : null} + +
+ Max size of file 2 MB +
+
+
+ + + + + )} ); From 3d14111d6c22c16e4452c978f5dfb347afec34d3 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 7 Jan 2022 14:39:30 +0700 Subject: [PATCH 266/324] Config Menu Membership --- src/pages/Membership/Membership.js | 1 + src/pages/Membership/MembershipModal.js | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 9f38c91..b0bd509 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -282,6 +282,7 @@ export const Membership = observer(() => { setConfirmLoading(true); modalLoader.setLoading(true); try { + console.log(data,"data member") const response = await store.membership.create(data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success( diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index f0e257d..a49f0da 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -68,6 +68,7 @@ export const MembershipModal = ({ const uploadHandler = async (args) => { const file = args.file; const res = await store.payback.uploadImages(file); + console.log(res, "ini respon 1"); setImage(`${appConfig.apiUrl}/config/image/${res.body.filename}`); setResponseFilename(res.body.filename); setFileList([ @@ -84,6 +85,7 @@ export const MembershipModal = ({ const uploadHandlerStore = async (args) => { const file = args.file; const res = await store.payback.uploadImages(file); + console.log(res, "ini respon 2"); setImageStore(`${appConfig.apiUrl}/config/image/${res.body.filename}`); setResponseFilenameStore(res.body.filename); setFileStore([ @@ -142,6 +144,14 @@ export const MembershipModal = ({ onCancel={() => { form.resetFields(); onCancel(); + setImage(""); + setFileList([]); + setPreviewImage(""); + setResponseFilename(""); + setImageStore(""); + setFileStore([]); + setPreviewImageStore(""); + setResponseFilenameStore(""); }} onOk={() => { form @@ -305,7 +315,6 @@ export const MembershipModal = ({ Sales - {/* */} )} From d5f7abd3454dffd4dd4dabed70ad76aacd561be5 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 7 Jan 2022 15:15:02 +0700 Subject: [PATCH 267/324] Bug Fixing --- src/pages/Membership/Membership.js | 11 ++++------- src/pages/Membership/MembershipModal.js | 6 +++--- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index b0bd509..f0c3ce4 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -197,7 +197,7 @@ export const Membership = observer(() => { }, { title: "Role", - dataIndex: ["roles","name"], + dataIndex: ["roles", "name"], key: "role", }, { @@ -282,14 +282,14 @@ export const Membership = observer(() => { setConfirmLoading(true); modalLoader.setLoading(true); try { - console.log(data,"data member") + console.log(data, "data member"); const response = await store.membership.create(data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success( response?.body?.message || "Berhasil Tambah Member Baru" ) : message.error( - response?.body?.message || "Gagal Tambah Member Baru" + response?.body?.error || "Gagal Tambah Member Baru" ); await getData(); } catch (e) { @@ -421,10 +421,7 @@ export const Membership = observer(() => {

Role : {item.roles?.name}
- - Saldo : {item.coa?.amount} - {" "} -
+ Saldo : {item.coa?.amount}

*/}
@@ -377,7 +377,7 @@ export const MembershipModal = ({
- +
Date: Fri, 7 Jan 2022 16:46:12 +0700 Subject: [PATCH 268/324] Bug Fixing --- src/pages/Membership/DetailUser.js | 62 ++++++++++++----- src/pages/Membership/Membership.js | 19 +++--- src/pages/Membership/MembershipModal.js | 90 +++++++++++++++++++------ 3 files changed, 122 insertions(+), 49 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 86aaca8..3d080ef 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -12,6 +12,7 @@ import { List, Tag, Divider, + Image, } from "antd"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { LINKS } from "../../routes/app"; @@ -20,6 +21,7 @@ import { observer } from "mobx-react-lite"; import { format, parseISO } from "date-fns"; import { ModalLoaderContext } from "../../utils/modal"; import { useParams } from "react-router-dom"; +import { appConfig } from "../../config/app"; import { MembershipModal } from "./MembershipModal"; const { Title, Text } = Typography; @@ -83,8 +85,8 @@ export const DetailUser = observer(() => { modalLoader.setLoading(false); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 - ? message.success(`Success Withdraw Profit`) - : message.error(`Failed Withdraw Profit`); + ? message.success(`Success Withdraw Profit`) + : message.error(`Failed Withdraw Profit`); await getData(); } catch (err) { modalLoader.setLoading(false); @@ -327,11 +329,7 @@ export const DetailUser = observer(() => { ? "danger" : "primary" } - onClick={() => - withdrawProfit( - store.membership.dataDetail.id, - ) - } + onClick={() => withdrawProfit(store.membership.dataDetail.id)} > Withdraw Profit @@ -343,42 +341,70 @@ export const DetailUser = observer(() => {
- + Name - + {store.authentication.dataProfit.userDetail?.name} - + Username - + {store.authentication.dataProfit.username} - + Role - + {store.authentication.dataProfit.roles?.name} - + Phone Number - + {store.authentication.dataProfit.userDetail?.phone_number} - + + Id Number + + + + {store.authentication.dataProfit.userDetail?.identity_number} + + + Status - + {store.authentication.dataProfit.isActive === true ? "Aktif" : "Inaktif"} + + Image identity + + + Image Store + + + + + + + @@ -418,7 +444,7 @@ export const DetailUser = observer(() => { style: "currency", currency: "IDR", }).format( - store.authentication.dataProfit?.profit || 0 + store.authentication.dataProfit?.profit || 0 )} diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index f0c3ce4..4892e97 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -252,8 +252,7 @@ export const Membership = observer(() => { name: Keanggotaan, }, ]; - - const onSubmit = async (data) => { + const onSubmit = async (data, image, imageStore) => { data.superior = true; if (initialData.id) { @@ -283,14 +282,17 @@ export const Membership = observer(() => { modalLoader.setLoading(true); try { console.log(data, "data member"); - const response = await store.membership.create(data); + const request = { + ...data, + image_identity: image, + image_store: imageStore, + }; + const response = await store.membership.create(request); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success( response?.body?.message || "Berhasil Tambah Member Baru" ) - : message.error( - response?.body?.error || "Gagal Tambah Member Baru" - ); + : message.error(response?.body?.error || "Gagal Tambah Member Baru"); await getData(); } catch (e) { console.log(e, "apa errornya"); @@ -302,7 +304,6 @@ export const Membership = observer(() => { setInitialData({}); } }; - return (
@@ -519,8 +520,8 @@ export const Membership = observer(() => { visible={visibleModal} confirmLoading={confirmLoading} initialData={initialData} - onCreate={async (data) => { - onSubmit(data); + onCreate={async (data,image,imageStore) => { + onSubmit(data,image,imageStore); }} onCancel={async () => { setInitialData({}); diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index b475231..b1c3176 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -157,7 +157,7 @@ export const MembershipModal = ({ form .validateFields() .then((values) => { - onCreate(values); + onCreate(values,responseFilename,responseFilenameStore); form.resetFields(); }) .catch((info) => { @@ -231,19 +231,71 @@ export const MembershipModal = ({ {((initialData.id && !initialData.isChangePassword) || !initialData.id) && store.authentication.userData.role === "Admin" && ( - - - +
+ + { + setValue(value); + }} + /> + + +
+ { + setPreviewImage(file.url || file.filename); + }} + showUploadList={true} + onChange={handleChange} + beforeUpload={(file) => beforeUpload(file)} + customRequest={(args) => uploadHandler(args)} + onRemove={(file) => { + setImage(""); + setLoading(false); + setFileList([]); + }} + > + {image === "" ? uploadButton : null} + +
+ Max size of file 2 MB +
+
+
+ + + +
)} {((initialData.id && !initialData.isChangePassword) || !initialData.id) && @@ -269,10 +321,7 @@ export const MembershipModal = ({ }} /> - +
{/*
*/} - +
Date: Fri, 7 Jan 2022 17:09:16 +0700 Subject: [PATCH 269/324] fix: failed reason --- src/pages/Membership/DetailUser.js | 7 ++++++- src/pages/Profile/Profile.js | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 3d080ef..3097534 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -221,13 +221,18 @@ export const DetailUser = observer(() => { key: "partner_transaction_code", }, { - title: "Transaction Date", + title: "Tanggal Transaksi", dataIndex: "created_at", key: "created_at", render: (text, record) => { return {format(parseISO(record.created_at), "dd-MM-yyyy")}; }, }, + { + title: "Alasan Gagal", + dataIndex: "failed_reason", + key: "failed_reason", + }, ]; const routeData = [ diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 564651c..eb02367 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -177,13 +177,18 @@ export const Profile = observer(() => { key: "partner_transaction_code", }, { - title: "Transaction Date", + title: "Tanggal Transaksi", dataIndex: "created_at", key: "created_at", render: (text, record) => { return {format(parseISO(record.created_at), "dd-MM-yyyy")}; }, }, + { + title: "Alasan Gagal", + dataIndex: "failed_reason", + key: "failed_reason", + }, ]; const styleSaldoTitle = store.ui.mediaQuery.isDesktop From f7f2b9c282b6561f080a554d4fd1fc7801ae289e Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 7 Jan 2022 17:25:17 +0700 Subject: [PATCH 270/324] Image --- src/pages/Membership/DetailUser.js | 82 ++++++++++++++++++------------ 1 file changed, 50 insertions(+), 32 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 3d080ef..a2eac50 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -13,7 +13,9 @@ import { Tag, Divider, Image, + Avatar, } from "antd"; +import { UserOutlined } from "@ant-design/icons"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { LINKS } from "../../routes/app"; import { useStore } from "../../utils/useStore"; @@ -341,74 +343,90 @@ export const DetailUser = observer(() => {
- + Name - + {store.authentication.dataProfit.userDetail?.name} - + Username - + {store.authentication.dataProfit.username} - + Role - + {store.authentication.dataProfit.roles?.name} - + Phone Number - + {store.authentication.dataProfit.userDetail?.phone_number} - + Id Number - + {store.authentication.dataProfit.userDetail?.identity_number} - + Status - + {store.authentication.dataProfit.isActive === true ? "Aktif" : "Inaktif"} - - Image identity - - - Image Store - - - - - - - + + + + + + + Foto Identitas + + + + + + + + + + + + + Foto Toko + + + + + + + + + + From 3c80dcedf66d216aa11d8bc7baf1c046b5aa75db Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 7 Jan 2022 17:58:01 +0700 Subject: [PATCH 271/324] Perbaikan PPOB --- src/pages/Membership/DetailUser.js | 58 +++++++++++---------------- src/pages/Profile/Profile.js | 63 +++++++++++++++++++++--------- 2 files changed, 67 insertions(+), 54 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index dc7c59b..ce05945 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -392,46 +392,32 @@ export const DetailUser = observer(() => { : "Inaktif"} + + Foto Identitas + + + Foto Toko + + + + + + + + + + + - - - - - - - Foto Identitas - - - - - - - - - - - - - Foto Toko - - - - - - - - - - diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index eb02367..47a2556 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -12,6 +12,7 @@ import { Input, Divider, List, + Image, Tag, } from "antd"; import moment from "moment"; @@ -21,6 +22,8 @@ import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; import { FilterOutlined } from "@ant-design/icons"; import { format, parseISO } from "date-fns"; +import { appConfig } from "../../config/app"; + import { ModalLoaderContext } from "../../utils/modal"; const { Title, Text } = Typography; @@ -64,7 +67,7 @@ export const Profile = observer(() => { store.transaction.visibleModalFilterTransaction = false; }; - const handleCancelFilter = async() => { + const handleCancelFilter = async () => { store.transaction.filterStart = null; //form.resetFields(); store.transaction.filterEnd = null; @@ -74,13 +77,17 @@ export const Profile = observer(() => { const handleSubmitFilter = async () => { const data = form.getFieldsValue(); - console.log(data.start_date) - console.log(data.end_date) - - const awal=store.transaction.filterStart = moment(data.start_date).format('YYYY-MM-DD HH:mm:ss'); - const akhir=store.transaction.filterEnd = moment(data.end_date).format('YYYY-MM-DD HH:mm:ss'); - console.log(awal) - console.log(akhir) + console.log(data.start_date); + console.log(data.end_date); + + const awal = (store.transaction.filterStart = moment( + data.start_date + ).format("YYYY-MM-DD HH:mm:ss")); + const akhir = (store.transaction.filterEnd = moment(data.end_date).format( + "YYYY-MM-DD HH:mm:ss" + )); + console.log(awal); + console.log(akhir); // store.transaction.filterStart = data.start_date; // store.transaction.filterEnd = data.end_date; modalLoader.setLoading(true); @@ -120,7 +127,6 @@ export const Profile = observer(() => { title: "Price", dataIndex: "price", key: "price", - render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", @@ -176,19 +182,20 @@ export const Profile = observer(() => { dataIndex: "partner_transaction_code", key: "partner_transaction_code", }, - { - title: "Tanggal Transaksi", - dataIndex: "created_at", - key: "created_at", - render: (text, record) => { - return {format(parseISO(record.created_at), "dd-MM-yyyy")}; - }, - }, { title: "Alasan Gagal", dataIndex: "failed_reason", key: "failed_reason", }, + { + title: "Tanggal Transaksi", + dataIndex: "created_at", + key: "created_at", + + render: (text, record) => { + return {format(parseISO(record.created_at), "dd-MM-yyyy")}; + }, + }, ]; const styleSaldoTitle = store.ui.mediaQuery.isDesktop @@ -249,6 +256,24 @@ export const Profile = observer(() => { {store.authentication.profileData.superior?.username} + + Foto Identitas + + + Foto Toko + + + + + + + @@ -310,6 +335,8 @@ export const Profile = observer(() => {
{ visible={store.transaction.visibleModalFilterTransaction} title={"Filter"} footer={footerLayoutFilter} - onCancel={async() => { + onCancel={async () => { //form.resetFields(); store.transaction.filterStart = null; store.transaction.filterEnd = null; From 2f48d7490547092c84fd88495438c66915eedd78 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 7 Jan 2022 18:26:45 +0700 Subject: [PATCH 272/324] Perbaikan PPOB --- src/pages/Membership/DetailUser.js | 24 ++++++++++++++++-------- src/pages/Profile/Profile.js | 2 ++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index ce05945..2c20247 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -400,18 +400,26 @@ export const DetailUser = observer(() => { - + - + diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 47a2556..f45e3eb 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -266,12 +266,14 @@ export const Profile = observer(() => { From 475768f07493e294918218d2070d3440fdc4e3d5 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 7 Jan 2022 18:29:14 +0700 Subject: [PATCH 273/324] Perbaikan PPOB --- src/pages/Profile/Profile.js | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index f45e3eb..e4dd463 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -263,18 +263,29 @@ export const Profile = observer(() => { Foto Toko - + + + - + + + From b85af8fca6d832535e46086885692e77f3e85624 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 7 Jan 2022 18:54:59 +0700 Subject: [PATCH 274/324] Perbaikan PPOB --- src/pages/Profile/Profile.js | 103 ++++++++++++++++++++++++----------- 1 file changed, 72 insertions(+), 31 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index e4dd463..69a1806 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -256,37 +256,78 @@ export const Profile = observer(() => { {store.authentication.profileData.superior?.username} - - Foto Identitas - - - Foto Toko - - - - - - - - - - - + {store.authentication.userData.role === "Sales" && ( + + + Foto Identitas + + + Foto Toko + + + + + + + + + + + + + )} + {store.authentication.userData.role === "Supervisor" && ( + + + Foto Identitas + + + Foto Toko + + + + + + + + + + + + + )} From 0a6fabc7d2e3327ccb988a6152b791ba8314ce31 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 7 Jan 2022 19:55:37 +0700 Subject: [PATCH 275/324] Perbaikan PPOB --- src/pages/Membership/DetailUser.js | 87 +++++++++++++++++++----------- src/pages/Profile/Profile.js | 17 +----- 2 files changed, 58 insertions(+), 46 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 2c20247..5cf5a5d 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -392,36 +392,63 @@ export const DetailUser = observer(() => { : "Inaktif"} - - Foto Identitas - - - Foto Toko - - - - - - - - - - - + {store.authentication.userData.role === "Sales" && ( + + + Foto Identitas + + + Foto Toko + + + + + + + + + + + + + )} + {store.authentication.userData.role === "Supervisor" && ( + + + Foto Identitas + + + + + + + + + )} diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 69a1806..11c64cb 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -297,9 +297,7 @@ export const Profile = observer(() => { Foto Identitas - - Foto Toko - + { /> - - - - - )} From e2f5cc91a08500f4a622b8b5cb3b34055e252b0e Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 10 Jan 2022 11:06:15 +0700 Subject: [PATCH 276/324] Fixing PPOB --- src/pages/Membership/DetailUser.js | 33 ++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 5cf5a5d..9d82233 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -428,6 +428,39 @@ export const DetailUser = observer(() => { )} + {store.authentication.userData.role === "Admin" && ( + + + Foto Identitas + + + Foto Toko + + + + + + + + + + + + + )} {store.authentication.userData.role === "Supervisor" && ( From b24ea23e3dbe47c553630d30c37fd18bf9e25e5b Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 10 Jan 2022 18:17:35 +0700 Subject: [PATCH 277/324] Bug Fixing Project PPOB --- src/component/ProductComponent.js | 42 ++++++++++++++++-------------- src/pages/App/DesktopLayout.js | 25 +++++++++++------- src/pages/Membership/DetailUser.js | 8 ++++++ src/pages/Membership/Membership.js | 12 ++++++--- src/pages/Profile/Profile.js | 6 ++--- src/store/membership.js | 1 + 6 files changed, 59 insertions(+), 35 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 83ba644..2a41284 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -487,26 +487,28 @@ export const ProductComponent = observer((props) => { }} > - - - Filter Supplier - - - + {store.authentication.userData.role === "Admin" && ( + + + Filter Supplier + + + + )} Filter Sub-Categories diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 1c42c2e..50fffbd 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -126,15 +126,22 @@ export const DesktopLayout = observer(() => { }} > <Menu> - {store.authentication.userData.role === "Admin" || - (store.authentication.userData.role === "Admin Partner" && ( - <Menu.Item key="home"> - <Link to={LINKS.HOME}> - <HomeOutlined /> - <span>Beranda</span> - </Link> - </Menu.Item> - ))} + {store.authentication.userData.role === "Admin" && ( + <Menu.Item key="home"> + <Link to={LINKS.HOME}> + <HomeOutlined /> + <span>Beranda</span> + </Link> + </Menu.Item> + )} + {store.authentication.userData.role === "Admin Partner" && ( + <Menu.Item key="home"> + <Link to={LINKS.HOME}> + <HomeOutlined /> + <span>Beranda</span> + </Link> + </Menu.Item> + )} {store.authentication.userData.role === "Admin" && ( <Menu.Item key="membership"> <Link to={LINKS.MEMBERSHIP}> diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 9d82233..2df1e6e 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -304,11 +304,19 @@ export const DetailUser = observer(() => { id: store.membership.dataDetail.id, name: store.membership.dataDetail.userDetail.name, username: store.membership.dataDetail.username, + identity_number: store.membership.dataDetail.userDetail.identity_number, + image_identity: store.membership.dataDetail?.userDetail.image_identity, + image_store: store.membership.dataDetail?.userDetail.image_store, phone_number: store.membership.dataDetail.userDetail.phone_number, roleId: store.membership.dataDetail.roles.id, isChangePassword: false, + }); + console.log(store.membership.dataDetail.userDetail.identity_number) + console.log(store.membership.dataDetail.userDetail.id) + console.log(store.membership.dataDetail.userDetail.image_identity) + console.log(store.membership.dataDetail.username) setVisibleModal(true); }} > diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 4892e97..b8c1cfd 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -259,7 +259,13 @@ export const Membership = observer(() => { setConfirmLoading(true); modalLoader.setLoading(true); try { - await store.membership.update(initialData.id, data); + console.log(data, "edit data"); + const request = { + ...data, + image_identity: image, + image_store: imageStore, + }; + await store.membership.update(initialData.id, request); message.success( initialData.isChangePassword ? "Success Change Member Password" @@ -520,8 +526,8 @@ export const Membership = observer(() => { visible={visibleModal} confirmLoading={confirmLoading} initialData={initialData} - onCreate={async (data,image,imageStore) => { - onSubmit(data,image,imageStore); + onCreate={async (data, image, imageStore) => { + onSubmit(data, image, imageStore); }} onCancel={async () => { setInitialData({}); diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 11c64cb..ca45c15 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -256,7 +256,7 @@ export const Profile = observer(() => { {store.authentication.profileData.superior?.username} </Text> </Col> - {store.authentication.userData.role === "Sales" && ( + {store.authentication.userData.role === "Retail" && ( <Row> <Col span={12}> <Text strong>Foto Identitas</Text> @@ -292,7 +292,7 @@ export const Profile = observer(() => { </Col> </Row> )} - {store.authentication.userData.role === "Supervisor" && ( + {/* {store.authentication.userData.role === "Supervisor" && ( <Row> <Col span={12}> <Text strong>Foto Identitas</Text> @@ -312,7 +312,7 @@ export const Profile = observer(() => { </Text> </Col> </Row> - )} + )} */} </Row> </Col> <Col span={store.ui.mediaQuery.isMobile ? 24 : 5}> diff --git a/src/store/membership.js b/src/store/membership.js index e1fd2a3..1f7f1f4 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -86,6 +86,7 @@ export class Membership { async update(id, data) { try { const response = await http.put('/users/' + id).send(data); + console.log(data,"data dari store") return response; } catch (e) { console.error(e); From a9d0d199d1e45800d60d7fb2fa3b3f65a24f8450 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Tue, 11 Jan 2022 14:33:09 +0700 Subject: [PATCH 278/324] Perbaikan PPOB --- src/component/CategoryComponent.js | 113 +++++++++++++++---- src/component/PartnerComponent.js | 16 +-- src/component/ProductComponent.js | 6 +- src/component/SubcategoryComponent.js | 6 +- src/component/SupplierComponent.js | 6 +- src/pages/App/DesktopLayout.js | 28 ++--- src/pages/Membership/DetailUser.js | 46 +++++--- src/pages/Membership/Membership.js | 10 +- src/pages/Membership/MembershipModal.js | 31 ++++-- src/pages/Membership/Picture.js | 141 ++++++++++++++++++++++++ src/pages/Payback/Payback.js | 4 +- src/pages/Payback/PaybackCreated.js | 15 ++- src/pages/Profile/Profile.js | 27 +++-- src/store/product.js | 1 + src/store/transaction.js | 1 + 15 files changed, 344 insertions(+), 107 deletions(-) create mode 100644 src/pages/Membership/Picture.js diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index 42adce7..627881e 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -8,6 +8,8 @@ import { Select, Space, Table, + List, + Divider } from "antd"; import { observer } from "mobx-react-lite"; import { useHistory } from "react-router-dom"; @@ -115,28 +117,95 @@ export const CategoryComponent = observer((props) => { return ( <div> - <Table - style={{ textAlign: "center" }} - columns={columns} - dataSource={store.category.data} - bordered - pagination={{ - pageSize: store.category.pageSize, - total: store.category.total_data, - current: store.category.page + 1, - showSizeChanger: true, - simple: false, - }} - onChange={async (page) => { - let pageNumber = page.current; - store.category.pageSize = page.pageSize; - store.category.page = pageNumber - 1; - modalLoader.setLoading(true); - await store.category.getData(); - modalLoader.setLoading(false); - }} - /> - + {store.ui.mediaQuery.isDesktop && ( + <Table + style={{ textAlign: "center" }} + columns={columns} + dataSource={store.category.data} + bordered + pagination={{ + pageSize: store.category.pageSize, + total: store.category.total_data, + current: store.category.page + 1, + showSizeChanger: true, + simple: false, + }} + onChange={async (page) => { + let pageNumber = page.current; + store.category.pageSize = page.pageSize; + store.category.page = pageNumber - 1; + modalLoader.setLoading(true); + await store.category.getData(); + modalLoader.setLoading(false); + }} + /> + )} + {store.ui.mediaQuery.isMobile && ( + <List + itemLayout="horizontal" + position={"top"} + pagination={{ + onChange: async (page, pageSize) => { + store.category.pageSize = pageSize; + store.category.page = page - 1; + modalLoader.setLoading(true); + await store.category.getData(); + modalLoader.setLoading(false); + }, + pageSize: store.category.pageSize, + total: store.category.total_data, + current: store.category.page + 1, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.category.data} + style={{ padding: 0 }} + renderItem={(item) => { + return ( + <div> + <List.Item + key={item.id} + style={{ + backgroundColor: "#ffffff", + paddingTop: 0, + paddingBottom: 0, + display: "flex", + flexDirection: "row", + alignItems: "center", + justifyContent: "center", + }} + > + <List.Item.Meta + className={["cariparkir-container"].join(" ")} + title={item.code} + description={ + <div style={{}}> + <p> + <small>Category : {item.name}</small> + <br /> + </p> + <p></p> + </div> + } + /> + <div style={{ marginRight: 16 }}> + <p + style={{ + fontSize: 9, + margin: 0, + }} + > + <Button onClick={() => handleEditButton(item)}> + Edit + </Button> + </p> + </div> + </List.Item> + <Divider plain style={{ margin: 0 }} /> + </div> + ); + }} + /> + )} <Modal visible={store.category.visibleModalCategory} title={idData ? "Edit Category" : "Create a new Category"} diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index bae4786..afeec2e 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -235,9 +235,9 @@ export const PartnerComponent = observer((props) => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page) => { - store.partner.pageSize = page.pageSize; - store.partner.page = page.current - 1; + onChange: async (page, pageSize) => { + store.partner.pageSize = pageSize; + store.partner.page = page - 1; modalLoader.setLoading(true); await store.partner.getData(); modalLoader.setLoading(false); @@ -270,9 +270,11 @@ export const PartnerComponent = observer((props) => { description={ <div style={{}}> <p> - <small>Nama : {item.name}</small> <br /> - <small>Npwp : {item.npwp}</small> <br /> - <small>Address : {item.address}</small> + <div style={{ marginBottom: 10 }}> + <small>Nama : {item.name}</small> <br /> + <small>Npwp : {item.npwp}</small> <br /> + <small>Address : {item.address}</small> + </div> <Space size="middle"> <Button type={ @@ -402,7 +404,7 @@ export const PartnerComponent = observer((props) => { }, ]} > - <Input.Password /> + <Input.Password /> </Form.Item> )} {!idData && ( diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 2a41284..ec75eb0 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -313,9 +313,9 @@ export const ProductComponent = observer((props) => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page) => { - store.product.pageSize = page.pageSize; - store.product.page = page.current - 1; + onChange: async (page,pageSize) => { + store.product.pageSize = pageSize; + store.product.page = page - 1; modalLoader.setLoading(true); await store.product.getData(); modalLoader.setLoading(false); diff --git a/src/component/SubcategoryComponent.js b/src/component/SubcategoryComponent.js index 751318c..e7ae6eb 100644 --- a/src/component/SubcategoryComponent.js +++ b/src/component/SubcategoryComponent.js @@ -148,9 +148,9 @@ export const SubcategoryComponent = observer((props) => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page) => { - store.subcategory.pageSize = page.pageSize; - store.subcategory.page = page.current - 1; + onChange: async (page,pageSize) => { + store.subcategory.pageSize = pageSize; + store.subcategory.page = page - 1; modalLoader.setLoading(true); await store.subcategory.getData(); modalLoader.setLoading(false); diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js index add9957..194b3a8 100644 --- a/src/component/SupplierComponent.js +++ b/src/component/SupplierComponent.js @@ -251,9 +251,9 @@ export const SupplierComponent = observer((props) => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page) => { - store.supplier.pageSize = page.pageSize; - store.supplier.page = page.current - 1; + onChange: async (page,pageSize) => { + store.supplier.pageSize = pageSize; + store.supplier.page = page - 1; modalLoader.setLoading(true); await store.supplier.getData(); modalLoader.setLoading(false); diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 50fffbd..224c1aa 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -205,24 +205,20 @@ export const DesktopLayout = observer(() => { <span>Produk</span> </Link> </Menu.Item> - {store.authentication.userData.role === "Admin" && ( - <Menu.Item key="sub-category"> - <Link to={LINKS.SUBCATEGORY}> - <FileSyncOutlined /> - <span>Sub Kategori</span> - </Link> - </Menu.Item> - )} + <Menu.Item key="sub-category"> + <Link to={LINKS.SUBCATEGORY}> + <FileSyncOutlined /> + <span>Sub Kategori</span> + </Link> + </Menu.Item> + <Menu.Item key="category"> + <Link to={LINKS.CATEGORY}> + <FileAddOutlined /> + <span>Kategori</span> + </Link> + </Menu.Item> </SubMenu> )} - {store.authentication.userData.role === "Admin" && ( - <Menu.Item key="category"> - <Link to={LINKS.CATEGORY}> - <FileAddOutlined /> - <span>Kategori</span> - </Link> - </Menu.Item> - )} {store.authentication.userData.role === "Supervisor" && ( <Menu.Item key="product"> <Link to={LINKS.PRODUCT}> diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 2df1e6e..c85f3c0 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -43,6 +43,7 @@ export const DetailUser = observer(() => { modalLoader.setLoading(false); })(); + return () => { store.membership.dataDetail = {}; store.transaction.dataHistoryTopUp = []; @@ -265,6 +266,9 @@ export const DetailUser = observer(() => { justifyContent: "center", } : null; + console.log(JSON.parse(store.authentication.dataProfit.userDetail?.image_store)," ini dia") + const data = JSON.parse(store.authentication.dataProfit.userDetail?.image_store) + console.log(data,"ini data") return ( <div className={["ppob-container"].join(" ")}> <BreadcumbComponent data={routeData} /> @@ -412,7 +416,7 @@ export const DetailUser = observer(() => { <Text> <Image src={ - store.authentication.dataProfit.profileData + store.authentication.dataProfit.userDetail ?.image_identity ? `${appConfig.apiUrl}/config/image/${store.authentication.dataProfit.userDetail?.image_identity}` : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" @@ -421,19 +425,25 @@ export const DetailUser = observer(() => { /> </Text> </Col> + <Col span={12}> - <Text> - <Image - src={ - store.authentication.dataProfit.profileData - ?.image_store - ? `${appConfig.apiUrl}/config/image/${store.authentication.dataProfit.userDetail?.image_store}` - : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" - } - style={{ width: "10vw" }} - /> - </Text> + + <Text> + {data.map((item)=>{ + <Image + src={ + store.authentication.dataProfit.userDetail + ?.image_store + ? `${appConfig.apiUrl}/config/image/${item}` + : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" + } + style={{ width: "10vw" }} + /> + })} + </Text> + </Col> + </Row> )} {store.authentication.userData.role === "Admin" && ( @@ -448,7 +458,7 @@ export const DetailUser = observer(() => { <Text> <Image src={ - store.authentication.dataProfit.profileData?.image_identity + store.authentication.dataProfit.userDetail?.image_identity ? "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" : `${appConfig.apiUrl}/config/image/${store.authentication.dataProfit.userDetail?.image_identity}`} style={{ width: "10vw" }} @@ -459,7 +469,7 @@ export const DetailUser = observer(() => { <Text> <Image src={ - store.authentication.dataProfit.profileData + store.authentication.dataProfit.userDetail ?.image_store ?"https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" : `${appConfig.apiUrl}/config/image/${store.authentication.dataProfit.userDetail?.image_store}` } @@ -479,7 +489,7 @@ export const DetailUser = observer(() => { <Text> <Image src={ - store.authentication.dataProfit.profileData + store.authentication.dataProfit.userDetail ?.image_identity ? `${appConfig.apiUrl}/config/image/${store.authentication.profileData.userDetail?.image_identity}` : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" @@ -629,9 +639,9 @@ export const DetailUser = observer(() => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page) => { - store.transaction.pageSize = page.pageSize; - store.transaction.page = page.current - 1; + onChange: async (page,pageSize) => { + store.transaction.pageSize = pageSize; + store.transaction.page = page - 1; modalLoader.setLoading(true); await getData(); modalLoader.setLoading(false); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index b8c1cfd..99f4899 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -30,6 +30,7 @@ import { LINKS } from "../../routes/app"; import { useHistory } from "react-router-dom"; import { ModalLoaderContext } from "../../utils/modal"; + export const Membership = observer(() => { const history = useHistory(); const { Option } = Select; @@ -291,7 +292,7 @@ export const Membership = observer(() => { const request = { ...data, image_identity: image, - image_store: imageStore, + image_store: JSON.stringify(imageStore), }; const response = await store.membership.create(request); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 @@ -308,6 +309,7 @@ export const Membership = observer(() => { setConfirmLoading(false); setVisibleModal(false); setInitialData({}); + form.resetFields(); } }; return ( @@ -385,9 +387,9 @@ export const Membership = observer(() => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page) => { - store.membership.pageSize = page.pageSize; - store.membership.page = page.current - 1; + onChange: async (page, pageSize) => { + store.membership.pageSize = pageSize; + store.membership.page = page -1; modalLoader.setLoading(true); await getData(); modalLoader.setLoading(false); diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index b1c3176..4981af4 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -36,7 +36,7 @@ export const MembershipModal = ({ const [responseFilenameStore, setResponseFilenameStore] = useState(""); const [loading, setLoading] = useState(false); const [loadingStore, setLoadingStore] = useState(false); - + const beforeUpload = (file) => { let isLt2M; let allowedFile = ["image/jpeg", "image/png"]; @@ -87,15 +87,14 @@ export const MembershipModal = ({ const res = await store.payback.uploadImages(file); console.log(res, "ini respon 2"); setImageStore(`${appConfig.apiUrl}/config/image/${res.body.filename}`); - setResponseFilenameStore(res.body.filename); - setFileStore([ - { - uid: "-1", - name: res.body.filename, - status: "done", - url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, - }, - ]); + setResponseFilenameStore([...responseFilenameStore, res.body.filename]); + setFileStore([...fileStore, { + uid: "-1", + name: res.body.filename, + status: "done", + url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, + } ]); + setLoadingStore(false); }; @@ -159,6 +158,15 @@ export const MembershipModal = ({ .then((values) => { onCreate(values,responseFilename,responseFilenameStore); form.resetFields(); + setFileStore([]) + setImage(""); + setFileList([]); + setPreviewImage(""); + setResponseFilename(""); + setImageStore(""); + setFileStore([]); + setPreviewImageStore(""); + setResponseFilenameStore(""); }) .catch((info) => { console.log("Validate Failed:", info); @@ -435,13 +443,14 @@ export const MembershipModal = ({ onChange={handleChangeStore} beforeUpload={(file) => beforeUploadStore(file)} customRequest={(args) => uploadHandlerStore(args)} + maxCount={3} onRemove={(file) => { setImageStore(""); setLoadingStore(false); setFileStore([]); }} > - {imageStore === "" ? uploadButtonStore : null} + {fileStore.length >= 3 ? null:uploadButtonStore } </Upload> <h5 style={{ diff --git a/src/pages/Membership/Picture.js b/src/pages/Membership/Picture.js new file mode 100644 index 0000000..c959da7 --- /dev/null +++ b/src/pages/Membership/Picture.js @@ -0,0 +1,141 @@ +import React from 'react'; +import { Image, Modal, Upload, message } from 'antd'; +import { PlusOutlined } from '@ant-design/icons'; +import { http } from "../utils/http"; + +function getBase64(file) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = () => resolve(reader.result); + reader.onerror = error => reject(error); + }); +} + +export class PicturesWall extends React.Component { + state = { + previewVisible: false, + previewImage: '', + previewTitle: '', + fileList: [], + }; + + handleCancel = () => this.setState({ previewVisible: false }); + + handlePreview = async file => { + if (!file.url && !file.preview) { + file.preview = await getBase64(file.originFileObj); + } + + this.setState({ + previewImage: file.url || file.preview, + previewTitle: file.name || file.url.substring(file.url.lastIndexOf('/') + 1), + previewVisible: true, + }); + }; + + handlePreviewCancel = () => { + this.setState({ + previewVisible: false, + }); + }; + + handleChange = ({ fileList }, info) => { + + // if (this.props.maxUpload) { + // if (fileList.length > this.props.maxUpload) { + // fileList.splice(0, 1) + // } + // } + + // if (info.file.status !== 'uploading') { + // console.log(info.file, info.fileList); + // } + // if (info.file.status === 'done') { + // message.success(`${info.file.name} file uploaded successfully`); + // } else if (info.file.status === 'error') { + // message.error(`${info.file.name} file upload failed.`); + // } + + this.setState({ fileList }) + }; + + render() { + const { previewVisible, previewImage, fileList, previewTitle, handlePreviewCancel } = this.state; + const uploadButton = ( + <div> + <PlusOutlined /> + <div style={{ marginTop: 8 }}>Upload</div> + </div> + ); + + return ( + <> + <Upload + action="https://www.mocky.io/v2/5cc8019d300000980a055e76" + listType="picture-card" + fileList={fileList} + accept={'.png, .jpg, .jpeg, .PNG, .JPG, .JPEG'} + onPreview={this.handlePreview} + onChange={this.handleChange} + beforeUpload={(file) => { + console.log({ file }) + http.uploadAntd({ + file, + onError() { + + }, + onProgress(event) { + console.log({ event }) + }, + onSuccess: (res) => { + if (this.props.onUpload) { + const { fileList } = this.state + const index = fileList.findIndex(d => d.uid === file.uid) + + if (fileList.length > this.props.maxUpload) { + this.setState({ + fileList: [] + }) && this.props.onUpload() + message.error('Upload foto tidak boleh melebihi batas maksimal!'); + } else { + fileList[index].path = res.body.path + this.setState({ + ...fileList + }) + this.props.onUpload(fileList) + + } + } + } + }) + return false; + }} + {...(this.props.uploadProps || {})} + > + {/* {fileList.length > this.props.maxUpload ? + this.setState({ + fileList: [] + }) && this.props.onUpload() && null + : + ''} */} + {fileList.length >= this.props.maxUpload ? '' : uploadButton} + </Upload> + + <Modal + visible={previewVisible} + title={previewTitle} + footer={null} + onCancel={this.handleCancel} + > + <Image + onClick={this.handleCancel} + src={previewImage} + /> + </Modal> + </> + ); + } +} + +export default PicturesWall; diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 11dd20a..7575b04 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -367,12 +367,10 @@ export const Payback = observer(() => { > <List.Item.Meta className={["cariparkir-container"].join(" ")} - title={item.name} + title={item.userData_name} description={ <div style={{}}> <p> - <span>{item.userData_name}</span> - <br /> <small>Amount: {item.amount}</small> <br /> {PAYBACK_STATUS[item.status] === diff --git a/src/pages/Payback/PaybackCreated.js b/src/pages/Payback/PaybackCreated.js index 084bd04..bdc2aa8 100644 --- a/src/pages/Payback/PaybackCreated.js +++ b/src/pages/Payback/PaybackCreated.js @@ -274,9 +274,9 @@ export const PaybackCreated = observer(() => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page) => { - store.payback.pageSizeCreated = page.pageSize; - store.payback.pageCreated = page.current - 1; + onChange: async (page, pageSize) => { + store.payback.pageSizeCreated = pageSize; + store.payback.pageCreated = page - 1; modalLoader.setLoading(true); await store.payback.getDataCreated(); modalLoader.setLoading(false); @@ -308,7 +308,7 @@ export const PaybackCreated = observer(() => { title={item.name} description={ <div style={{}}> - <Image src={item.image_prove} preview={false} /> + <small>Amount: {item.amount}</small> </div> } /> @@ -319,7 +319,12 @@ export const PaybackCreated = observer(() => { margin: 0, }} > - {item.amount} + {" "} + <Image + src={`${appConfig.apiUrl}/config/image/${item.image_prove}`} + style={{ width: "20vw" }} + preview={true} + /> </p> </div> </List.Item> diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index ca45c15..3e91a33 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -401,20 +401,19 @@ export const Profile = observer(() => { position={"top"} dataSource={store.transaction.dataHistoryTransaction} pagination={{ + onChange: async (page, pageSize) => { + console.log(page,'Page') + console.log(pageSize,'Page size') + store.transaction.pageSizeHistoryTransaction = pageSize; + store.transaction.pageHistoryTransaction = page -1; + modalLoader.setLoading(true); + await store.transaction.getDataHistoryTransaction(); + modalLoader.setLoading(false); + }, pageSize: store.transaction.pageSizeHistoryTransaction, - total: store.transaction.total_dataHistoryTransaction, + total:store.transaction.total_dataHistoryTransaction, current: store.transaction.pageHistoryTransaction + 1, - showSizeChanger: true, - simple: false, - }} - onChange={async (page) => { - let pageNumber = page.current; - store.transaction.pageSizeHistoryTransaction = - page.pageSize; - store.transaction.pageHistoryTransaction = pageNumber - 1; - modalLoader.setLoading(true); - await store.transaction.getDataHistoryTransaction(); - modalLoader.setLoading(false); + style: { marginBottom: "1rem", marginRight: "1rem" }, }} style={{ padding: 0 }} renderItem={(item) => { @@ -472,6 +471,10 @@ export const Profile = observer(() => { No.Seri : {item.seri_number} </small>{" "} <br /> + <small> + Alasan Gagal : {item.failed_reason} + </small>{" "} + <br /> <small> IDTrx Mitra :{" "} {item.partner_transaction_code} diff --git a/src/store/product.js b/src/store/product.js index 6a0713d..903ed5b 100644 --- a/src/store/product.js +++ b/src/store/product.js @@ -48,6 +48,7 @@ export class Product { }) ?? [] this.total_data = response?.body?.count ?? 0 + //console.log(this.total_data) } catch (e) { console.error(e); } diff --git a/src/store/transaction.js b/src/store/transaction.js index 3fb6cca..f10cb9e 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -135,6 +135,7 @@ export class Transaction { console.log(response); this.dataHistoryTransaction = response.body.data ?? []; this.total_dataHistoryTransaction = response?.body?.count ?? 0; + console.log(this.total_dataHistoryTransaction) } catch (e) { console.error(e); } From 64b33c2d6be945f6b5cf6b963ce31eebaf507adc Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Tue, 11 Jan 2022 17:57:01 +0700 Subject: [PATCH 279/324] Perbaikan Project PPOB --- src/pages/Membership/DetailUser.js | 142 ++++++++++++++++------------- src/pages/Membership/Membership.js | 1 - src/pages/Profile/Profile.js | 52 ++++++++++- src/store/authentication.js | 4 +- 4 files changed, 129 insertions(+), 70 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index c85f3c0..38f178f 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -43,7 +43,6 @@ export const DetailUser = observer(() => { modalLoader.setLoading(false); })(); - return () => { store.membership.dataDetail = {}; store.transaction.dataHistoryTopUp = []; @@ -266,9 +265,16 @@ export const DetailUser = observer(() => { justifyContent: "center", } : null; - console.log(JSON.parse(store.authentication.dataProfit.userDetail?.image_store)," ini dia") - const data = JSON.parse(store.authentication.dataProfit.userDetail?.image_store) - console.log(data,"ini data") + // console.log( + // JSON.parse(store.authentication.dataProfit.userDetail?.image_store), + // " ini dia" + // ); + const data = store.authentication.listImage; + console.log(data, "ini data"); + console.log( + store.authentication.dataProfit.userDetail?.image_identity, + "detail" + ); return ( <div className={["ppob-container"].join(" ")}> <BreadcumbComponent data={routeData} /> @@ -308,19 +314,25 @@ export const DetailUser = observer(() => { id: store.membership.dataDetail.id, name: store.membership.dataDetail.userDetail.name, username: store.membership.dataDetail.username, - identity_number: store.membership.dataDetail.userDetail.identity_number, - image_identity: store.membership.dataDetail?.userDetail.image_identity, - image_store: store.membership.dataDetail?.userDetail.image_store, + identity_number: + store.membership.dataDetail.userDetail.identity_number, + image_identity: + store.membership.dataDetail?.userDetail.image_identity, + image_store: + store.membership.dataDetail?.userDetail.image_store, phone_number: store.membership.dataDetail.userDetail.phone_number, roleId: store.membership.dataDetail.roles.id, isChangePassword: false, - }); - console.log(store.membership.dataDetail.userDetail.identity_number) - console.log(store.membership.dataDetail.userDetail.id) - console.log(store.membership.dataDetail.userDetail.image_identity) - console.log(store.membership.dataDetail.username) + console.log( + store.membership.dataDetail.userDetail.identity_number + ); + console.log(store.membership.dataDetail.userDetail.id); + console.log( + store.membership.dataDetail.userDetail.image_identity + ); + console.log(store.membership.dataDetail.username); setVisibleModal(true); }} > @@ -409,9 +421,46 @@ export const DetailUser = observer(() => { <Col span={12}> <Text strong>Foto Identitas</Text> </Col> + <Col span={12}></Col> <Col span={12}> - <Text strong>Foto Toko</Text> + <Text> + <Image + src={ + store.authentication.dataProfit.userDetail + ?.image_identity + ? `${appConfig.apiUrl}/config/image/${store.authentication.dataProfit.userDetail?.image_identity}` + : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" + } + style={{ width: "10vw",marginLeft:10 }} + /> + </Text> </Col> + <Col span={24}> + <Text strong>Foto Toko</Text> + <Text> + <Row> + {data.map((item) => ( + <Image + src={ + store.authentication.dataProfit.userDetail + ?.image_store + ? `${appConfig.apiUrl}/config/image/${item}` + : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" + } + style={{ width: "10vw",marginRight:15 }} + /> + ))} + </Row> + </Text> + </Col> + </Row> + )} + {store.authentication.userData.role === "Admin" && ( + <Row> + <Col span={12}> + <Text strong>Foto Identitas</Text> + </Col> + <Col span={12}></Col> <Col span={12}> <Text> <Image @@ -425,60 +474,27 @@ export const DetailUser = observer(() => { /> </Text> </Col> - - <Col span={12}> - - <Text> - {data.map((item)=>{ - <Image - src={ - store.authentication.dataProfit.userDetail - ?.image_store - ? `${appConfig.apiUrl}/config/image/${item}` - : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" - } - style={{ width: "10vw" }} - /> - })} - </Text> - - </Col> - - </Row> - )} - {store.authentication.userData.role === "Admin" && ( - <Row> - <Col span={12}> - <Text strong>Foto Identitas</Text> - </Col> - <Col span={12}> + <Col span={24}> <Text strong>Foto Toko</Text> - </Col> - <Col span={12}> <Text> - <Image - src={ - store.authentication.dataProfit.userDetail?.image_identity - ? "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" - : `${appConfig.apiUrl}/config/image/${store.authentication.dataProfit.userDetail?.image_identity}`} - style={{ width: "10vw" }} - /> - </Text> - </Col> - <Col span={12}> - <Text> - <Image - src={ - store.authentication.dataProfit.userDetail - ?.image_store - ?"https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" - : `${appConfig.apiUrl}/config/image/${store.authentication.dataProfit.userDetail?.image_store}` } - style={{ width: "10vw" }} - /> + <Row> + {data.map((item) => ( + <Image + src={ + store.authentication.dataProfit.userDetail + ?.image_store + ? `${appConfig.apiUrl}/config/image/${item}` + : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" + } + style={{ width: "10vw",marginRight:15 }} + /> + ))} + </Row> </Text> </Col> </Row> )} + {store.authentication.userData.role === "Supervisor" && ( <Row> <Col span={12}> @@ -491,7 +507,7 @@ export const DetailUser = observer(() => { src={ store.authentication.dataProfit.userDetail ?.image_identity - ? `${appConfig.apiUrl}/config/image/${store.authentication.profileData.userDetail?.image_identity}` + ? `${appConfig.apiUrl}/config/image/${store.authentication.dataProfit.userDetail?.image_identity}` : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" } style={{ width: "10vw" }} @@ -639,7 +655,7 @@ export const DetailUser = observer(() => { itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page,pageSize) => { + onChange: async (page, pageSize) => { store.transaction.pageSize = pageSize; store.transaction.page = page - 1; modalLoader.setLoading(true); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 99f4899..2b69f45 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -359,7 +359,6 @@ export const Membership = observer(() => { ? store.membership.dataMember : store.membership.data } - bordered pagination={{ pageSize: store.membership.pageSize, total: diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 3e91a33..e5bc13c 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -256,7 +256,7 @@ export const Profile = observer(() => { {store.authentication.profileData.superior?.username} </Text> </Col> - {store.authentication.userData.role === "Retail" && ( + {/* {store.authentication.userData.role === "Retail" && ( <Row> <Col span={12}> <Text strong>Foto Identitas</Text> @@ -291,6 +291,48 @@ export const Profile = observer(() => { </Text> </Col> </Row> + )} */} + {store.authentication.userData.role === "Retail" && ( + <Row> + <Col span={12}> + <Text strong>Foto Identitas</Text> + </Col> + <Col span={12}></Col> + <Col span={12}> + <Text> + <Image + src={ + store.authentication.profileData.userDetail + ?.image_identity + ? `${appConfig.apiUrl}/config/image/${store.authentication.profileData.userDetail?.image_identity}` + : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" + } + style={{ width: "10vw" }} + /> + </Text> + </Col> + <Col span={24}> + <Text strong>Foto Toko</Text> + <Text> + <Row> + {JSON.parse( + store.authentication.profileData.userDetail + ?.image_store + ).map((item) => ( + <Image + src={ + store.authentication.profileData.userDetail + ?.image_store + ? `${appConfig.apiUrl}/config/image/${item}` + : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" + } + style={{ width: "10vw", marginRight: 15 }} + /> + ))} + </Row> + </Text> + </Col> + </Row> )} {/* {store.authentication.userData.role === "Supervisor" && ( <Row> @@ -402,16 +444,16 @@ export const Profile = observer(() => { dataSource={store.transaction.dataHistoryTransaction} pagination={{ onChange: async (page, pageSize) => { - console.log(page,'Page') - console.log(pageSize,'Page size') + console.log(page, "Page"); + console.log(pageSize, "Page size"); store.transaction.pageSizeHistoryTransaction = pageSize; - store.transaction.pageHistoryTransaction = page -1; + store.transaction.pageHistoryTransaction = page - 1; modalLoader.setLoading(true); await store.transaction.getDataHistoryTransaction(); modalLoader.setLoading(false); }, pageSize: store.transaction.pageSizeHistoryTransaction, - total:store.transaction.total_dataHistoryTransaction, + total: store.transaction.total_dataHistoryTransaction, current: store.transaction.pageHistoryTransaction + 1, style: { marginBottom: "1rem", marginRight: "1rem" }, }} diff --git a/src/store/authentication.js b/src/store/authentication.js index f6eee2e..eb4121e 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -8,7 +8,8 @@ export class Authentication { isLoginLoading = false; ctx; profileData = {}; - dataProfit=[] + dataProfit=[]; + listImage=[]; constructor(ctx) { this.ctx = ctx; @@ -57,6 +58,7 @@ export class Authentication { const response = await http.get(`/auth/profile/${id}`); console.log(response) this.dataProfit = response.body ?? []; + this.listImage = this.dataProfit.userDetail ? JSON.parse(this.dataProfit.userDetail?.image_store) : []; this.total_data = response?.body?.count ?? 0; } catch (e) { console.error(e); From c95d0c3f469996822adc209ddd4dbe2831ee6860 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Wed, 12 Jan 2022 15:22:11 +0700 Subject: [PATCH 280/324] Perbaikan Project PPOB --- src/pages/Membership/DetailUser.js | 208 ++++++++++++++++++++++-- src/pages/Membership/Membership.js | 1 + src/pages/Membership/MembershipModal.js | 19 ++- src/pages/Profile/Profile.js | 50 +++++- src/store/authentication.js | 4 +- 5 files changed, 262 insertions(+), 20 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 38f178f..ce7ea45 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -283,8 +283,9 @@ export const DetailUser = observer(() => { <Title strong level={2}> Detail User - + {store.authentication.userData.role === "Admin" && ( + { Withdraw Profit + )} - + {store.authentication.userData.role === "Supervisor" && ( + + + + + + + + )} + {store.authentication.userData.role === "Sales" && ( + + + + + + + + )} + @@ -416,7 +566,7 @@ export const DetailUser = observer(() => { : "Inaktif"} - {store.authentication.userData.role === "Sales" && ( + {/* {store.authentication.userData.role === "Sales" && ( Foto Identitas @@ -438,12 +588,11 @@ export const DetailUser = observer(() => { Foto Toko - - {data.map((item) => ( + + {store.authentication.listImage.map((item) => ( { - )} + )} */} {store.authentication.userData.role === "Admin" && ( @@ -478,11 +627,48 @@ export const DetailUser = observer(() => { Foto Toko - {data.map((item) => ( + {store.authentication.listImage.map((item) => ( + ))} + + + + + )} + {store.authentication.userData.role === "Sales" && ( + + + Foto Identitas + + + + + + + + + Foto Toko + + + {store.authentication.listImage.map((item) => ( + { image_store: imageStore, }; await store.membership.update(initialData.id, request); + console.log(data, "edit data"); message.success( initialData.isChangePassword ? "Success Change Member Password" diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index 4981af4..6288ffc 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useState, useEffect } from "react"; import { Form, Input, @@ -36,6 +36,20 @@ export const MembershipModal = ({ const [responseFilenameStore, setResponseFilenameStore] = useState(""); const [loading, setLoading] = useState(false); const [loadingStore, setLoadingStore] = useState(false); + + useEffect(() => { + setFileList([{ + url : `${appConfig.apiUrl}/config/image/${initialData.image_identity}` + }]) + setFileStore([{ + url : `${appConfig.apiUrl}/config/image/${initialData.image_store}` + }]) + setImage(`${appConfig.apiUrl}/config/image/${initialData.image_identity}`) + setImageStore(`${appConfig.apiUrl}/config/image/${initialData.image_store}`) + return () => { + + } + }, [initialData]) const beforeUpload = (file) => { let isLt2M; @@ -156,6 +170,8 @@ export const MembershipModal = ({ form .validateFields() .then((values) => { + values.image_identity = responseFilename + values.image_store = responseFilenameStore onCreate(values,responseFilename,responseFilenameStore); form.resetFields(); setFileStore([]) @@ -272,6 +288,7 @@ export const MembershipModal = ({ onChange={handleChange} beforeUpload={(file) => beforeUpload(file)} customRequest={(args) => uploadHandler(args)} + maxCount={1} onRemove={(file) => { setImage(""); setLoading(false); diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index e5bc13c..fdd510a 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -293,6 +293,46 @@ export const Profile = observer(() => { )} */} {store.authentication.userData.role === "Retail" && ( + // + // + // Foto Identitas + // + // + // + // + // + // + // + // + // Foto Toko + // + // + // {JSON.parse( + // store.authentication.profileData.userDetail + // ?.image_store + // ).map((item) => ( + // + // ))} + // + // + // + // Foto Identitas @@ -315,18 +355,14 @@ export const Profile = observer(() => { Foto Toko - {JSON.parse( - store.authentication.profileData.userDetail - ?.image_store - ).map((item) => ( + {store.authentication.imageProfil.map((item) => ( ))} diff --git a/src/store/authentication.js b/src/store/authentication.js index eb4121e..7b8a264 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -10,6 +10,7 @@ export class Authentication { profileData = {}; dataProfit=[]; listImage=[]; + imageProfil=[]; constructor(ctx) { this.ctx = ctx; @@ -58,7 +59,7 @@ export class Authentication { const response = await http.get(`/auth/profile/${id}`); console.log(response) this.dataProfit = response.body ?? []; - this.listImage = this.dataProfit.userDetail ? JSON.parse(this.dataProfit.userDetail?.image_store) : []; + this.listImage = this.dataProfit.userDetail?.image_store ? JSON.parse(this.dataProfit.userDetail?.image_store) : []; this.total_data = response?.body?.count ?? 0; } catch (e) { console.error(e); @@ -70,6 +71,7 @@ export class Authentication { const response = await http.get('/auth/profile'); console.log(response) this.profileData = response.body; + this.imageProfil = this.profileData.userDetail?.image_store ? JSON.parse(this.profileData.userDetail?.image_store) : []; } catch (e) { console.error(e); } From 248f8441157296b351d747264b54f7c3eb2eff95 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Wed, 12 Jan 2022 17:10:08 +0700 Subject: [PATCH 281/324] Perbaikan PPOB --- src/pages/Membership/DetailUser.js | 4 ++ src/pages/Membership/Membership.js | 10 +++++ src/pages/Membership/MembershipModal.js | 58 +++++++++++++++---------- src/store/authentication.js | 3 ++ 4 files changed, 52 insertions(+), 23 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index ce7ea45..aff0513 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -275,6 +275,10 @@ export const DetailUser = observer(() => { store.authentication.dataProfit.userDetail?.image_identity, "detail" ); + console.log( + store.authentication.listImage, + "detail gambar" + ); return (
diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index d04e6e3..d6fd602 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -255,6 +255,16 @@ export const Membership = observer(() => { ]; const onSubmit = async (data, image, imageStore) => { data.superior = true; + console.log(imageStore, "Apa imageStore") + + if(!imageStore){ + imageStore = [] + } + + if (initialData.id) { + data.image_identity = image; + data.image_store = imageStore; + } if (initialData.id) { setConfirmLoading(true); diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index 6288ffc..6595ee5 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -38,19 +38,27 @@ export const MembershipModal = ({ const [loadingStore, setLoadingStore] = useState(false); useEffect(() => { - setFileList([{ - url : `${appConfig.apiUrl}/config/image/${initialData.image_identity}` - }]) - setFileStore([{ - url : `${appConfig.apiUrl}/config/image/${initialData.image_store}` - }]) - setImage(`${appConfig.apiUrl}/config/image/${initialData.image_identity}`) - setImageStore(`${appConfig.apiUrl}/config/image/${initialData.image_store}`) - return () => { - + if (initialData.id) { + setFileList([ + { + url: `${appConfig.apiUrl}/config/image/${initialData.image_identity}`, + }, + ]); + setFileStore([ + { + url: `${appConfig.apiUrl}/config/image/${initialData.image_store}`, + }, + ]); + setImage( + `${appConfig.apiUrl}/config/image/${initialData.image_identity}` + ); + setImageStore( + `${appConfig.apiUrl}/config/image/${initialData.image_store}` + ); } - }, [initialData]) - + return () => {}; + }, [initialData]); + const beforeUpload = (file) => { let isLt2M; let allowedFile = ["image/jpeg", "image/png"]; @@ -102,12 +110,15 @@ export const MembershipModal = ({ console.log(res, "ini respon 2"); setImageStore(`${appConfig.apiUrl}/config/image/${res.body.filename}`); setResponseFilenameStore([...responseFilenameStore, res.body.filename]); - setFileStore([...fileStore, { - uid: "-1", - name: res.body.filename, - status: "done", - url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, - } ]); + setFileStore([ + ...fileStore, + { + uid: "-1", + name: res.body.filename, + status: "done", + url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, + }, + ]); setLoadingStore(false); }; @@ -170,11 +181,12 @@ export const MembershipModal = ({ form .validateFields() .then((values) => { - values.image_identity = responseFilename - values.image_store = responseFilenameStore - onCreate(values,responseFilename,responseFilenameStore); + console.log(values, "apa valuesanya"); + values.image_identity = responseFilename; + values.image_store = responseFilenameStore; + onCreate(values, responseFilename, responseFilenameStore); form.resetFields(); - setFileStore([]) + setFileStore([]); setImage(""); setFileList([]); setPreviewImage(""); @@ -467,7 +479,7 @@ export const MembershipModal = ({ setFileStore([]); }} > - {fileStore.length >= 3 ? null:uploadButtonStore } + {fileStore.length >= 3 ? null : uploadButtonStore}
Date: Thu, 13 Jan 2022 11:24:16 +0700 Subject: [PATCH 282/324] Perbaikan PPOB --- src/pages/Home/Home.js | 328 +---------------------------- src/pages/Membership/DetailUser.js | 3 + 2 files changed, 4 insertions(+), 327 deletions(-) diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index a42cd97..4d41f87 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -48,56 +48,7 @@ export const Home = observer(() => { ? await store.membership.getData() : await store.membership.getDataBySuperior(); }; - const columns = [ - { - title: "Name", - dataIndex: "name", - key: "name", - render: (text, record) => record?.name ?? record?.username, - }, - { - title: "Role", - dataIndex: "roleName", - key: "role", - }, - { - title: "Saldo", - dataIndex: ["coa", "amount"], - key: ["coa", "amount"], - width: "20%", - render: (text) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text), - }, - // { - // title: "Action", - // key: "action", - // render: (text, record) => ( - // - // - // - // - // ), - // }, - ]; + return (
{store.ui.mediaQuery.isDesktop && @@ -328,28 +279,6 @@ export const Home = observer(() => { - {/**/} - {/* */} - {/* Total Keuntungan B2C}>*/} - {/* */} - {/* {new Intl.NumberFormat("id-ID", {*/} - {/* style: "currency",*/} - {/* currency: "IDR",*/} - {/* }).format(store.authentication.profileData?.wallet || 0)}*/} - {/* */} - {/* */} - {/* */} - {/**/} )} {store.ui.mediaQuery.isMobile && @@ -497,28 +426,6 @@ export const Home = observer(() => { - {/**/} - {/* */} - {/* Total Keuntungan B2C}>*/} - {/* */} - {/* {new Intl.NumberFormat("id-ID", {*/} - {/* style: "currency",*/} - {/* currency: "IDR",*/} - {/* }).format(store.authentication.profileData?.wallet || 0)}*/} - {/* */} - {/* */} - {/* */} - {/**/} )} {store.ui.mediaQuery.isMobile && @@ -579,241 +486,8 @@ export const Home = observer(() => { - {/**/} - {/* */} - {/* Total Keuntungan B2C}>*/} - {/* */} - {/* {new Intl.NumberFormat("id-ID", {*/} - {/* style: "currency",*/} - {/* currency: "IDR",*/} - {/* }).format(store.authentication.profileData?.wallet || 0)}*/} - {/* */} - {/* */} - {/* */} - {/**/} )} - {/*{store.authentication.userData.role === "Admin" &&*/} - {/* store.ui.mediaQuery.isDesktop && (*/} - {/* */} - {/* */} - {/* {*/} - {/* let pageNumber = page.current;*/} - {/* store.membership.pageSize = page.pageSize;*/} - {/* store.membership.page = pageNumber - 1;*/} - {/* modalLoader.setLoading(true);*/} - {/* await getData();*/} - {/* modalLoader.setLoading(false);*/} - {/* }}*/} - {/* />*/} - {/* */} - {/* */} - {/* {*/} - {/* let pageNumber = page.current;*/} - {/* store.membership.pageSize = page.pageSize;*/} - {/* store.membership.page = pageNumber - 1;*/} - {/* modalLoader.setLoading(true);*/} - {/* await getData();*/} - {/* modalLoader.setLoading(false);*/} - {/* }}*/} - {/* />*/} - {/* */} - {/* */} - {/* )}*/} - {/*{store.ui.mediaQuery.isMobile && (*/} - {/*
*/} - {/* */} - {/* */} - {/* */} - {/* Total Transaksi}>*/} - {/*

*/} - {/*

{store.transaction.dataTransaction} Transaksi

*/} - {/*

*/} - {/*
*/} - {/*
*/} - {/* */} - {/* */} - {/* */} - {/* */} - {/* Total Keuntungan B2B}>*/} - {/* */} - {/* {new Intl.NumberFormat("id-ID", {*/} - {/* style: "currency",*/} - {/* currency: "IDR",*/} - {/* }).format(store.authentication.profileData?.wallet || 0)}*/} - {/* */} - {/* */} - {/* */} - {/* */} - {/* */} - {/* */} - {/* */} - {/* Total Keuntungan B2C}>*/} - {/* */} - {/* {new Intl.NumberFormat("id-ID", {*/} - {/* style: "currency",*/} - {/* currency: "IDR",*/} - {/* }).format(store.authentication.profileData?.wallet || 0)}*/} - {/* */} - {/* */} - {/* */} - {/* */} - {/*
*/} - {/*)}*/} - {/*{store.authentication.userData.role === "Admin" &&*/} - {/* store.ui.mediaQuery.isMobile && (*/} - {/* */} - {/* */} - {/* {*/} - {/* let pageNumber = page.current;*/} - {/* store.membership.pageSize = page.pageSize;*/} - {/* store.membership.page = pageNumber - 1;*/} - {/* modalLoader.setLoading(true);*/} - {/* await getData();*/} - {/* modalLoader.setLoading(false);*/} - {/* }}*/} - {/* />*/} - {/* */} - {/* */} - {/* {*/} - {/* let pageNumber = page.current;*/} - {/* store.membership.pageSize = page.pageSize;*/} - {/* store.membership.page = pageNumber - 1;*/} - {/* modalLoader.setLoading(true);*/} - {/* await getData();*/} - {/* modalLoader.setLoading(false);*/} - {/* }}*/} - {/* />*/} - {/* */} - {/* */} - {/* )}*/}
); }); diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index aff0513..9f7cf33 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -337,6 +337,9 @@ export const DetailUser = observer(() => { console.log( store.membership.dataDetail.userDetail.image_identity ); + console.log( + store.membership.dataDetail.userDetail.image_store,"ini store" + ); console.log(store.membership.dataDetail.username); setVisibleModal(true); }} From a346ffd8f1b7e76e6f6477234686678524c0d918 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 13 Jan 2022 12:16:22 +0700 Subject: [PATCH 283/324] Perbaikan PPOB --- src/pages/Membership/Membership.js | 2 +- src/pages/Membership/MembershipModal.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index d6fd602..b708b47 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -442,7 +442,7 @@ export const Membership = observer(() => { Role : {item.roles?.name}
Saldo : {item.coa?.amount}
- + */}
{ - let pageNumber = page.current; - store.product.pageSizePriceHistory = page.pageSize; - store.product.pagePriceHistory = pageNumber - 1; - modalLoader.setLoading(true); - await store.product.getPriceHistoryByProduct(id); - modalLoader.setLoading(false); - }} + columns={columns} + dataSource={store.product.dataPriceHistory} + bordered + pagination={{ + pageSize: store.product.pageSizePriceHistory, + total: store.product.totalDataPriceHistory, + current: store.product.pagePriceHistory + 1, + showSizeChanger: true, + simple: false, + }} + onChange={async (page) => { + let pageNumber = page.current; + store.product.pageSizePriceHistory = page.pageSize; + store.product.pagePriceHistory = pageNumber - 1; + modalLoader.setLoading(true); + await store.product.getPriceHistoryByProduct(id); + modalLoader.setLoading(false); + }} /> From 8857911dcdccd2394bd32803352ab7e04e4171ae Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 13 Jan 2022 14:18:34 +0700 Subject: [PATCH 285/324] Perbaikan Project PPOB --- src/pages/Payback/PaybackCreated.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Payback/PaybackCreated.js b/src/pages/Payback/PaybackCreated.js index 397b7d7..a4ef6cf 100644 --- a/src/pages/Payback/PaybackCreated.js +++ b/src/pages/Payback/PaybackCreated.js @@ -307,7 +307,7 @@ export const PaybackCreated = observer(() => { className={[""].join(" ")} title={item.name} description={ -
+
Amount: {item.amount}
From 38d744ce2f4a6c5c3ea50615cf4489dca314d1bb Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 13 Jan 2022 15:06:54 +0700 Subject: [PATCH 286/324] Perbaikan Project PPOB --- src/pages/Membership/DetailUser.js | 58 +++-- src/pages/Membership/Membership.js | 24 +- src/pages/Payback/Payback.js | 25 ++- src/pages/Payback/PaybackCreated.js | 63 +++--- src/pages/Product/Product.js | 320 +++++++++++++++------------ src/pages/Profile/Profile.js | 20 +- src/pages/Transaction/Transaction.js | 6 +- 7 files changed, 305 insertions(+), 211 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 749a86b..f570eca 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -252,6 +252,17 @@ export const DetailUser = observer(() => { }, ]; + const dataRoute = [ + { + route: LINKS.MEMBERSHIP, + name: "Keanggotaan" + }, + { + route: LINKS.USER_DETAIL.replace(":id", id), + name: Detail User, + }, + ]; + const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? { display: "flex", @@ -275,21 +286,22 @@ export const DetailUser = observer(() => { store.authentication.dataProfit.userDetail?.image_identity, "detail" ); - console.log( - store.authentication.listImage, - "detail gambar" - ); + console.log(store.authentication.listImage, "detail gambar"); return (
- + Detail User - - {store.authentication.userData.role === "Admin" && ( -
+ + {store.authentication.userData.role === "Admin" && ( + { store.membership.dataDetail.userDetail.image_identity ); console.log( - store.membership.dataDetail.userDetail.image_store,"ini store" + store.membership.dataDetail.userDetail.image_store, + "ini store" ); console.log(store.membership.dataDetail.username); setVisibleModal(true); @@ -373,10 +386,10 @@ export const DetailUser = observer(() => { Withdraw Profit - - )} - {store.authentication.userData.role === "Supervisor" && ( - + + )} + {store.authentication.userData.role === "Supervisor" && ( + { Ganti Password - - )} - {store.authentication.userData.role === "Sales" && ( - + + )} + {store.authentication.userData.role === "Sales" && ( + { Ganti Password - - )} - + + )} @@ -641,7 +653,7 @@ export const DetailUser = observer(() => { ? `${appConfig.apiUrl}/config/image/${item}` : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" } - style={{ width: "10vw",marginRight:15 }} + style={{ width: "10vw", marginRight: 15 }} /> ))} @@ -679,7 +691,7 @@ export const DetailUser = observer(() => { ? `${appConfig.apiUrl}/config/image/${item}` : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" } - style={{ width: "10vw",marginRight:15 }} + style={{ width: "10vw", marginRight: 15 }} /> ))} @@ -687,7 +699,7 @@ export const DetailUser = observer(() => { )} - + {store.authentication.userData.role === "Supervisor" && ( diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index b708b47..f62fca6 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -30,7 +30,6 @@ import { LINKS } from "../../routes/app"; import { useHistory } from "react-router-dom"; import { ModalLoaderContext } from "../../utils/modal"; - export const Membership = observer(() => { const history = useHistory(); const { Option } = Select; @@ -253,12 +252,19 @@ export const Membership = observer(() => { name: Keanggotaan, }, ]; + + const dataRoute = [ + { + route: LINKS.MEMBERSHIP, + name: "Keanggotaan" + }, + ]; const onSubmit = async (data, image, imageStore) => { data.superior = true; - console.log(imageStore, "Apa imageStore") + console.log(imageStore, "Apa imageStore"); - if(!imageStore){ - imageStore = [] + if (!imageStore) { + imageStore = []; } if (initialData.id) { @@ -325,7 +331,11 @@ export const Membership = observer(() => { }; return (
- +
@@ -399,7 +409,7 @@ export const Membership = observer(() => { pagination={{ onChange: async (page, pageSize) => { store.membership.pageSize = pageSize; - store.membership.page = page -1; + store.membership.page = page - 1; modalLoader.setLoading(true); await getData(); modalLoader.setLoading(false); @@ -442,7 +452,7 @@ export const Membership = observer(() => { Role : {item.roles?.name}
Saldo : {item.coa?.amount}
- - - -
- {/* + + +
+ +
+ + + +
+ {/* { }} /> */} - {store.authentication.userData.role == "Admin" &&
- -
} -
- - - - - - - { - form.resetFields(); - handleCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form"); - handleSubmit(values); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} - > -
- - beforeUpload(file)} - customRequest={(args) => uploadHandler(args)} - onRemove={(file) => { - setLoading(false); - setFileList([]); - setExcel(""); - }} - > -
- -
-
-
- } + onClick={() => setVisibleModalUpload(true)} + > + Tambah Produk + + + )} + + + + + + + + { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleSubmit(values); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} + > + + + beforeUpload(file)} + customRequest={(args) => uploadHandler(args)} + onRemove={(file) => { + setLoading(false); + setFileList([]); + setExcel(""); + }} > - - - - - +
+ +
+ +
+ + + + +
+ ); }); diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index fdd510a..7c6ce41 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -38,7 +38,7 @@ export const Profile = observer(() => { const routeData = [ { route: LINKS.HOME, - name: "Home", + name: "Beranda", }, { route: LINKS.PROFILE, @@ -46,6 +46,13 @@ export const Profile = observer(() => { }, ]; + const dataRoute = [ + { + route: LINKS.PROFILE, + name: "Profil", + }, + ]; + useEffect(() => { (async () => { modalLoader.setLoading(true); @@ -214,7 +221,14 @@ export const Profile = observer(() => { return (
- + Profile @@ -362,7 +376,7 @@ export const Profile = observer(() => { ? `${appConfig.apiUrl}/config/image/${item}` : "https://st4.depositphotos.com/14953852/24787/v/600/depositphotos_247872612-stock-illustration-no-image-available-icon-vector.jpg" } - style={{ width: "10vw",marginRight:15 }} + style={{ width: "10vw", marginRight: 15 }} /> ))} diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js index 7984069..cb902a5 100644 --- a/src/pages/Transaction/Transaction.js +++ b/src/pages/Transaction/Transaction.js @@ -55,13 +55,9 @@ export const Transaction = observer(() => { }; const routeData = [ - { - route: LINKS.HOME, - name: "Beranda", - }, { route: LINKS.TRANSACTION, - name: Transaksi, + name: "Transaksi" }, ]; From da7201ce734cc1ffab187d8e30fc0c9145a0aed0 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 13 Jan 2022 15:49:44 +0700 Subject: [PATCH 287/324] Perbaikan PPOB --- src/pages/Membership/Membership.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index f62fca6..3e014d0 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -444,7 +444,7 @@ export const Membership = observer(() => { }} > From cc1f90a65e5a5fd03c52eb9576445ad83e6245bd Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 13 Jan 2022 16:50:19 +0700 Subject: [PATCH 288/324] Bug Fixing PPOB --- src/pages/Membership/DetailUser.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index f570eca..1bfa117 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -69,7 +69,6 @@ export const DetailUser = observer(() => { modalLoader.setLoading(true); const response = await store.membership.changeStatus(id, status); modalLoader.setLoading(false); - response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success(`Success ${status2} Membership`) : message.error(`Failed ${status2} Membership`); @@ -391,7 +390,7 @@ export const DetailUser = observer(() => { {store.authentication.userData.role === "Supervisor" && (
Date: Thu, 13 Jan 2022 17:29:16 +0700 Subject: [PATCH 289/324] Fixing Preview Image --- src/pages/Membership/MembershipModal.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index f51c11b..b7fcdd8 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -296,6 +296,7 @@ export const MembershipModal = ({ setPreviewImage(file.url || file.filename); }} showUploadList={true} + onPreview={previewImage} onChange={handleChange} beforeUpload={(file) => beforeUpload(file)} customRequest={(args) => uploadHandler(args)} @@ -366,6 +367,7 @@ export const MembershipModal = ({ setPreviewImage(file.url || file.filename); }} showUploadList={true} + onPreview={previewImage} onChange={handleChange} beforeUpload={(file) => beforeUpload(file)} customRequest={(args) => uploadHandler(args)} @@ -438,6 +440,7 @@ export const MembershipModal = ({ setPreviewImage(file.url || file.filename); }} showUploadList={true} + onPreview={previewImage} onChange={handleChange} beforeUpload={(file) => beforeUpload(file)} customRequest={(args) => uploadHandler(args)} @@ -468,6 +471,7 @@ export const MembershipModal = ({ setPreviewImageStore(file.url || file.filename); }} showUploadList={true} + onPreview={previewImageStore} onChange={handleChangeStore} beforeUpload={(file) => beforeUploadStore(file)} customRequest={(args) => uploadHandlerStore(args)} From d8df8ee4ddb5a484fef99c85254bf619b54f24e3 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 13 Jan 2022 18:03:12 +0700 Subject: [PATCH 290/324] Fixing Preview Image --- src/pages/Membership/MembershipModal.js | 105 ++++++++++++++++++++---- 1 file changed, 89 insertions(+), 16 deletions(-) diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index b7fcdd8..7743fb4 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -35,6 +35,9 @@ export const MembershipModal = ({ const [responseFilenameStore, setResponseFilenameStore] = useState(""); const [loading, setLoading] = useState(false); const [loadingStore, setLoadingStore] = useState(false); + const [previewVisible, setPreviewVisible] = useState(false); + const [previewImage1, setPreviewImage1] = useState(""); + const [previewTitle, setPreviewTitle] = useState(""); useEffect(() => { if (initialData.id) { @@ -58,6 +61,28 @@ export const MembershipModal = ({ return () => {}; }, [initialData]); + const getBase64 = (file) => { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = () => resolve(reader.result); + reader.onerror = (error) => reject(error); + }); + }; + + const handlePreviewData = async (file) => { + if (!file.url && !file.preview) { + file.preview = await getBase64(file.originFileObj); + } + setPreviewImage1(file.url || file.preview); + setPreviewVisible(true); + setPreviewTitle( + file.name || file.url.substring(file.url.lastIndexOf("/") + 1) + ); + }; + + const handleCancel1 = () => { setPreviewVisible(false) }; + const beforeUpload = (file) => { let isLt2M; let allowedFile = ["image/jpeg", "image/png"]; @@ -292,11 +317,11 @@ export const MembershipModal = ({ { - setPreviewImage(file.url || file.filename); - }} + // onPreview={(file) => { + // setPreviewImage(file.url || file.filename); + // }} showUploadList={true} - onPreview={previewImage} + onPreview={handlePreviewData} onChange={handleChange} beforeUpload={(file) => beforeUpload(file)} customRequest={(args) => uploadHandler(args)} @@ -309,6 +334,18 @@ export const MembershipModal = ({ > {image === "" ? uploadButton : null} + + example +
{ - setPreviewImage(file.url || file.filename); - }} + // onPreview={(file) => { + // setPreviewImage(file.url || file.filename); + // }} showUploadList={true} - onPreview={previewImage} + onPreview={handlePreviewData} onChange={handleChange} beforeUpload={(file) => beforeUpload(file)} customRequest={(args) => uploadHandler(args)} @@ -379,6 +416,18 @@ export const MembershipModal = ({ > {image === "" ? uploadButton : null} + + example +
{ - setPreviewImage(file.url || file.filename); - }} + // onPreview={(file) => { + // setPreviewImage(file.url || file.filename); + // }} showUploadList={true} - onPreview={previewImage} + onPreview={handlePreviewData} onChange={handleChange} beforeUpload={(file) => beforeUpload(file)} customRequest={(args) => uploadHandler(args)} @@ -452,6 +501,18 @@ export const MembershipModal = ({ > {image === "" ? uploadButton : null} + + example +
{ - setPreviewImageStore(file.url || file.filename); - }} + // onPreview={(file) => { + // setPreviewImageStore(file.url || file.filename); + // }} showUploadList={true} - onPreview={previewImageStore} + onPreview={handlePreviewData} onChange={handleChangeStore} beforeUpload={(file) => beforeUploadStore(file)} customRequest={(args) => uploadHandlerStore(args)} @@ -484,6 +545,18 @@ export const MembershipModal = ({ > {fileStore.length >= 3 ? null : uploadButtonStore} + + example +
Date: Fri, 14 Jan 2022 14:01:42 +0700 Subject: [PATCH 291/324] Bug fixing PPOB --- src/pages/Payback/Payback.js | 51 +------------------ src/pages/Payback/PaybackCreated.js | 12 ----- src/pages/Product/ProductDetail.js | 17 ------- src/pages/Profile/Profile.js | 78 ----------------------------- 4 files changed, 1 insertion(+), 157 deletions(-) diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 13538c5..6194bc6 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -185,7 +185,7 @@ export const Payback = observer(() => { const dataRoute = [ { route: LINKS.PAYBACK, - name: "Konfirmasi Pembayaran" + name: "Konfirmasi Pembayaran", }, ]; @@ -201,15 +201,6 @@ export const Payback = observer(() => { : message.success( response?.body?.message || `Success ${capitalize(type)} Payback` ); - // if (response.body.status !== 201 ) { - // message.error( - // response?.body?.message || `Failed ${capitalize(type)} Payback` - // ); - // } else { - // message.success( - // response?.body?.message || `Success ${capitalize(type)} Payback` - // ); - // } } catch (e) { console.error(e, "apa errornya"); message.error( @@ -532,46 +523,6 @@ export const Payback = observer(() => { - {/*
*/} - - {/* - Date - - */} - {/* */} - {/* */} - {/* - - Filter Sub-Categories - - - */} diff --git a/src/pages/Payback/PaybackCreated.js b/src/pages/Payback/PaybackCreated.js index 9f3bda2..e55ba2e 100644 --- a/src/pages/Payback/PaybackCreated.js +++ b/src/pages/Payback/PaybackCreated.js @@ -90,12 +90,6 @@ export const PaybackCreated = observer(() => { key: "status", width: "10%", render: (text, record) => ( - // - // {PAYBACK_STATUS[text]} - // { const handleSubmitFilter = async () => { const data = form.getFieldsValue(); console.log(data); - //store.payback.filterMembership = filterMembership; - // const awal = format(parseISO(data.start_date), "dd-MM-yyyy") - // const akhir = format(parseISO(data.start_date), "dd-MM-yyyy") - //const awal= format(startOfDay(date.start_date()), 'yyyy-MM-dd 00:00') const awal = (store.payback.filterStart = moment(data.start_date).format( "YYYY-MM-DD 00:00:00" )); @@ -174,8 +164,6 @@ export const PaybackCreated = observer(() => { modalLoader.setLoading(true); await store.payback.getDataCreated(); modalLoader.setLoading(false); - // form.resetFields(); - // setFilterMembership([]); store.payback.visibleModalFilterCreate = false; }; diff --git a/src/pages/Product/ProductDetail.js b/src/pages/Product/ProductDetail.js index 22cb5f9..de8aa00 100644 --- a/src/pages/Product/ProductDetail.js +++ b/src/pages/Product/ProductDetail.js @@ -134,16 +134,6 @@ export const ProductDetail = observer(() => { - {/* - - - Saldo - - - {store.authentication.profileData?.wallet} - - - */} @@ -151,13 +141,6 @@ export const ProductDetail = observer(() => { Product Price History - - {/* */}
{ )); console.log(awal); console.log(akhir); - // store.transaction.filterStart = data.start_date; - // store.transaction.filterEnd = data.end_date; modalLoader.setLoading(true); await store.transaction.getDataHistoryTransaction(); modalLoader.setLoading(false); @@ -270,83 +268,7 @@ export const Profile = observer(() => { {store.authentication.profileData.superior?.username} - {/* {store.authentication.userData.role === "Retail" && ( - - - Foto Identitas - - - Foto Toko - - - - - - - - - - - - - )} */} {store.authentication.userData.role === "Retail" && ( - // - // - // Foto Identitas - // - // - // - // - // - // - // - // - // Foto Toko - // - // - // {JSON.parse( - // store.authentication.profileData.userDetail - // ?.image_store - // ).map((item) => ( - // - // ))} - // - // - // - // Foto Identitas From f33b0319323dac49c8bef9ec2c12163934867a65 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Mon, 17 Jan 2022 14:19:28 +0700 Subject: [PATCH 292/324] Bug Fixing PPOB --- src/pages/Membership/DetailUser.js | 1 + src/pages/Payback/Payback.js | 2 +- src/store/authentication.js | 7 +++---- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 1bfa117..c0fd5dd 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -56,6 +56,7 @@ export const DetailUser = observer(() => { await Promise.allSettled([ store.transaction.getDataHistoryTopUp(id), store.authentication.getProfit(id), + store.authentication.getProfile(), store.transaction.getDetailHistoryTransaction(id), store.membership.getDetail(id), store.role.getData(isAdmin), diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 6194bc6..618566d 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -512,7 +512,7 @@ export const Payback = observer(() => { label="Dari" rules={[{ required: true, message: "Please input Date!" }]} > - + Date: Mon, 17 Jan 2022 18:24:22 +0700 Subject: [PATCH 293/324] Bug Fixing PPOB --- src/pages/Membership/DetailUser.js | 8 +++++--- src/pages/Membership/Membership.js | 4 ++-- src/pages/Membership/MembershipModal.js | 5 +++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index c0fd5dd..76daf6a 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -255,7 +255,7 @@ export const DetailUser = observer(() => { const dataRoute = [ { route: LINKS.MEMBERSHIP, - name: "Keanggotaan" + name: "Keanggotaan", }, { route: LINKS.USER_DETAIL.replace(":id", id), @@ -646,8 +646,9 @@ export const DetailUser = observer(() => { Foto Toko - {store.authentication.listImage.map((item) => ( + {store.authentication.listImage.map((item, index) => ( { Foto Toko - {store.authentication.listImage.map((item) => ( + {store.authentication.listImage.map((item, index) => ( { if (initialData.id) { data.image_identity = image; - data.image_store = imageStore; + data.image_store = JSON.stringify(imageStore); } if (initialData.id) { @@ -280,7 +280,7 @@ export const Membership = observer(() => { const request = { ...data, image_identity: image, - image_store: imageStore, + image_store: JSON.stringify(imageStore), }; await store.membership.update(initialData.id, request); console.log(data, "edit data"); diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index 7743fb4..b10e4d3 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -141,7 +141,7 @@ export const MembershipModal = ({ name: res.body.filename, status: "done", url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, - }, + } ]); setLoadingStore(false); @@ -207,7 +207,8 @@ export const MembershipModal = ({ .then((values) => { console.log(values, "apa valuesanya"); values.image_identity = responseFilename; - values.image_store = responseFilenameStore; + const data = values.image_store = JSON.stringify(responseFilenameStore); + console.log(data,'dari modal') onCreate(values, responseFilename, responseFilenameStore); form.resetFields(); setFileStore([]); From 851f337c1a8f629ab31984b74c19d65a7dcda48a Mon Sep 17 00:00:00 2001 From: ajat91 Date: Tue, 18 Jan 2022 09:20:57 +0700 Subject: [PATCH 294/324] Bug Fixing --- src/pages/Membership/DetailUser.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 76daf6a..3f0fb4a 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -623,7 +623,7 @@ export const DetailUser = observer(() => { )} */} - {store.authentication.userData.role === "Admin" && ( + {store.authentication.userData.role === "Admin" && store.authentication.dataProfit.roles?.name !== "Admin Partner" && ( Foto Identitas @@ -642,7 +642,8 @@ export const DetailUser = observer(() => { /> - + {store.authentication.dataProfit.roles?.name === "Retail" && ( + Foto Toko @@ -660,6 +661,7 @@ export const DetailUser = observer(() => { + )} )} {store.authentication.userData.role === "Sales" && ( From 0ceac085f7456d10be1378e8c594b12dfe78606f Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 18 Jan 2022 17:22:29 +0700 Subject: [PATCH 295/324] Page Member --- src/pages/Membership/Membership.js | 4 ++-- src/pages/Membership/MembershipModal.js | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 1b8405a..3e014d0 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -269,7 +269,7 @@ export const Membership = observer(() => { if (initialData.id) { data.image_identity = image; - data.image_store = JSON.stringify(imageStore); + data.image_store = imageStore; } if (initialData.id) { @@ -280,7 +280,7 @@ export const Membership = observer(() => { const request = { ...data, image_identity: image, - image_store: JSON.stringify(imageStore), + image_store: imageStore, }; await store.membership.update(initialData.id, request); console.log(data, "edit data"); diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index b10e4d3..731976d 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -207,8 +207,7 @@ export const MembershipModal = ({ .then((values) => { console.log(values, "apa valuesanya"); values.image_identity = responseFilename; - const data = values.image_store = JSON.stringify(responseFilenameStore); - console.log(data,'dari modal') + values.image_store = JSON.stringify(responseFilenameStore); onCreate(values, responseFilename, responseFilenameStore); form.resetFields(); setFileStore([]); From 9720ed91ce9d77d7f637228d2acb1879bb84ddec Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 20 Jan 2022 11:20:31 +0700 Subject: [PATCH 296/324] Bug Fixing PPOB --- src/pages/App/DesktopLayout.js | 26 +- src/pages/App/MenuList.js | 28 +- src/pages/Membership/Konfirmasi.js | 528 +++++++++++++++++++++++++++++ src/routes/app.js | 6 + 4 files changed, 575 insertions(+), 13 deletions(-) create mode 100644 src/pages/Membership/Konfirmasi.js diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 224c1aa..610ad4c 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -23,6 +23,8 @@ import { PieChartOutlined, AppstoreOutlined, DollarCircleOutlined, + UsergroupAddOutlined, + UnorderedListOutlined } from "@ant-design/icons"; import { AppRoute, LINKS } from "../../routes/app"; import { useStore } from "../../utils/useStore"; @@ -143,12 +145,24 @@ export const DesktopLayout = observer(() => { )} {store.authentication.userData.role === "Admin" && ( - - - - Keanggotaan - - + } + title="Keanggotaan" + > + + + + List Anggota + + + + + + Konfirmasi Retail + + + )} {store.authentication.userData.role === "Sales" && ( diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index b6e21dd..beee72b 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -20,7 +20,9 @@ import { IdcardOutlined, AppstoreAddOutlined, DollarCircleOutlined, - PieChartOutlined + PieChartOutlined, + UsergroupAddOutlined, + UnorderedListOutlined, } from "@ant-design/icons"; import { observer } from "mobx-react-lite"; import { useStore } from "../../utils/useStore"; @@ -70,12 +72,24 @@ export const MenuList = observer((props) => { )} {store.authentication.userData.role === "Admin" && ( - - - - Keanggotaan - - + } + title="Keanggotaan" + > + + + + List Anggota + + + + + + Konfirm Retail + + + )} {store.authentication.userData.role === "Supervisor" && ( diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js new file mode 100644 index 0000000..528431a --- /dev/null +++ b/src/pages/Membership/Konfirmasi.js @@ -0,0 +1,528 @@ +import React, { useContext, useEffect, useState } from "react"; +import { + Button, + Card, + Col, + Divider, + Image, + Input, + List, + message, + Modal, + Row, + Space, + Table, + Tag, + Select, + Typography, + DatePicker, + Form, +} from "antd"; +import { useStore } from "../../utils/useStore"; +import { observer } from "mobx-react-lite"; +import { + CheckCircleOutlined, + CheckOutlined, + CloseOutlined, + FilterOutlined, + StopOutlined, +} from "@ant-design/icons"; +import { BreadcumbComponent } from "../../component/BreadcumbComponent"; +import { LINKS } from "../../routes/app"; +import { ModalLoaderContext } from "../../utils/modal"; +import { appConfig } from "../../config/app"; +import { capitalize } from "lodash"; +import { PAYBACK_STATUS } from "../../constants/payback"; +import moment from "moment"; + +export const Konfirmasi = observer(() => { + const { Option } = Select; + const { Title } = Typography; + const [form] = Form.useForm(); + const store = useStore(); + const modalLoader = useContext(ModalLoaderContext); + const [filterMembership, setFilterMembership] = useState([]); + const [filterSubCategories, setFilterSubCategories] = useState([]); + + useEffect(() => { + const init = async () => { + try { + modalLoader.setLoading(true); + await store.membership.getData(); + await store.payback.getDataConfirmation(); + modalLoader.setLoading(false); + } catch (e) { + modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); + } + }; + + init(); + }, []); + + const columns = [ + { + title: "Name", + dataIndex: "userData_name", + key: "userData_name", + }, + { + title: "Picture", + dataIndex: "image_prove", + key: "image_prove", + render: (text, record) => ( + + ), + }, + { + title: "Amount", + dataIndex: "amount", + key: "amount", + width: "20%", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), + }, + { + title: "Action", + dataIndex: "amount", + key: "action", + width: "10%", + render: (text, record) => + PAYBACK_STATUS[record.status] === PAYBACK_STATUS[0] ? ( + + + + + ) : ( + + {PAYBACK_STATUS[record.status]} + + ), + }, + ]; + + if (store.authentication.userData.role === "Retail") columns.pop(); + + const routeData = [ + { + route: LINKS.HOME, + name: "Beranda", + }, + { + route: LINKS.KONFIRMASI, + name: Konfirmasi Retail, + }, + ]; + + const dataRoute = [ + { + route: LINKS.PAYBACK, + name: "Konfirmasi Pembayaran", + }, + ]; + + const handleAction = async (id, type) => { + modalLoader.setLoading(true); + try { + const response = await store.payback.confirmPayback(id, type); + console.log(response); + response.body.statusCode !== 201 && response.body.statusCode !== 200 + ? message.error( + response?.body?.message || `Failed ${capitalize(type)} Payback` + ) + : message.success( + response?.body?.message || `Success ${capitalize(type)} Payback` + ); + } catch (e) { + console.error(e, "apa errornya"); + message.error( + e.response?.body?.message || "Failed Handler Action Payback" + ); + } + modalLoader.setLoading(false); + }; + + const handleRemoveFilter = async () => { + store.payback.filterMembership = null; + store.payback.filterStart = null; + store.payback.filterEnd = null; + setFilterMembership([]); + form.resetFields(); + await store.payback.getDataConfirmation(); + store.payback.visibleModalFilterPayback = false; + }; + + const handleCancelFilter = async () => { + //setFilterMembership([]); + //form.resetFields(); + store.payback.filterMembership = null; + store.payback.filterStart = null; + store.payback.filterEnd = null; + store.payback.visibleModalFilterPayback = false; + await store.payback.getDataConfirmation(); + }; + + const handleSubmitFilter = async () => { + const data = form.getFieldsValue(); + //console.log(data); + store.payback.filterMembership = filterMembership; + store.payback.filterStart = data.start_date + ? moment(data.start_date).format("YYYY-MM-DD") + " 00:00:00" + : null; + store.payback.filterEnd = data.end_date + ? moment(data.end_date).format("YYYY-MM-DD") + " 23:59:59" + : null; + modalLoader.setLoading(true); + await store.payback.getDataConfirmation(); + modalLoader.setLoading(false); + store.payback.visibleModalFilterPayback = false; + }; + + const handleFilterCategory = async (value) => { + if (value) { + store.product.filterCategory = value; + await store.product.getDataSubCategories(); + } else { + store.product.filterCategory = null; + await store.product.getDataSubCategories(); + } + }; + + const footerLayoutFilter = [ + , + , + , + ]; + return ( +
+ + +
+ +
+ + + + {/* */} + + + {store.ui.mediaQuery.isDesktop && ( +
{ + let pageNumber = page.current; + store.payback.pageSizeConfirmation = page.pageSize; + store.payback.pageConfirmation = pageNumber - 1; + modalLoader.setLoading(true); + await store.payback.getDataConfirmation(); + modalLoader.setLoading(false); + }} + /> + )} + + {store.ui.mediaQuery.isMobile && ( + { + store.payback.pageSizeConfirmation = page.pageSize; + store.payback.pageConfirmation = page.current - 1; + modalLoader.setLoading(true); + await store.payback.getDataConfirmation(); + modalLoader.setLoading(false); + }, + pageSize: store.payback.pageSizeConfirmation, + total: store.payback.totalDataConfirmation, + current: store.payback.pageConfirmation + 1, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.payback.dataConfirmation} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + +

+ Amount: {item.amount} +
+ {PAYBACK_STATUS[item.status] === + PAYBACK_STATUS[0] ? ( + + + + + ) : ( + + {PAYBACK_STATUS[item.status]} + + )} +

+
+ } + /> +
+

+ +

+
+ + + + ); + }} + /> + )} + + + { + //form.resetFields(); + //setFilterMembership([]); + store.payback.filterMembership = null; + store.payback.filterStart = null; + store.payback.filterEnd = null; + store.payback.visibleModalFilterPayback = false; + await store.payback.getDataConfirmation(); + }} + > + +
+ + Sender + + + + + + + + + + + + + + + ); +}); diff --git a/src/routes/app.js b/src/routes/app.js index 8df28d0..0b03e7e 100644 --- a/src/routes/app.js +++ b/src/routes/app.js @@ -14,6 +14,8 @@ import {Category} from "../pages/Product/Category"; import {Payback} from "../pages/Payback/Payback"; import {PaybackCreated} from "../pages/Payback/PaybackCreated"; import {Subcategory} from "../pages/Product/Subcategory"; +import {Konfirmasi} from "../pages/Membership/Konfirmasi"; + export const LINKS = { HOME: "/app/home", @@ -27,6 +29,7 @@ export const LINKS = { SUPPLIER: "/app/supplier", CATEGORY: "/app/category", PAYBACK: "/app/payback", + KONFIRMASI: "/app/konfirmasi", PAYBACK_CREATED: "/app/payback-created", SUBCATEGORY: "/app/subcategory", USER_DETAIL: "/app/user-detail/:id", @@ -41,6 +44,9 @@ export const AppRoute = () => { + + + From 0cd63db64ea457af66499c3395fefba5e0b9eda1 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 20 Jan 2022 16:34:45 +0700 Subject: [PATCH 297/324] Bug Fixing PPOB --- src/component/ProductComponent.js | 27 +++++++++++++++++++++------ src/index.css | 5 ++++- src/pages/Membership/Membership.js | 9 ++++++++- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index c654360..34e0041 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -273,21 +273,36 @@ export const ProductComponent = observer((props) => { , ]; + const handleClickRow = (record, index) => ({ + onClick: (event) => { + history.push(LINKS.PRODUCT_DETAIL.replace(":id", record.product_id)); + }, + }); return (
{store.ui.mediaQuery.isDesktop && (
{ itemLayout="horizontal" position={"top"} pagination={{ - onChange: async (page,pageSize) => { + onChange: async (page, pageSize) => { store.product.pageSize = pageSize; store.product.page = page - 1; modalLoader.setLoading(true); diff --git a/src/index.css b/src/index.css index daea40c..a7684d2 100644 --- a/src/index.css +++ b/src/index.css @@ -79,4 +79,7 @@ code { .ant-menu-item-divider{ border-style: transparent !important; -} \ No newline at end of file +} +.ant-table-tbody > tr.ant-table-row-level-0:hover > td { + background: #f0faf8 !important; + } \ No newline at end of file diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 3e014d0..631cff2 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -256,7 +256,7 @@ export const Membership = observer(() => { const dataRoute = [ { route: LINKS.MEMBERSHIP, - name: "Keanggotaan" + name: "Keanggotaan", }, ]; const onSubmit = async (data, image, imageStore) => { @@ -329,6 +329,11 @@ export const Membership = observer(() => { form.resetFields(); } }; + const handleClickRow = (record, index) => ({ + onClick: (event) => { + history.push(LINKS.USER_DETAIL.replace(":id", record.id)); + }, + }); return (
{
Date: Fri, 21 Jan 2022 14:30:11 +0700 Subject: [PATCH 298/324] Konfirm Retail Page --- src/pages/Membership/DetailUser.js | 2 +- src/pages/Membership/Konfirmasi.js | 229 ++++++++++++++++++++++-- src/pages/Membership/MembershipModal.js | 38 ++-- src/pages/Product/Category.js | 2 +- src/pages/Product/Product.js | 2 +- 5 files changed, 247 insertions(+), 26 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 3f0fb4a..621b4ba 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -509,7 +509,7 @@ export const DetailUser = observer(() => { ); console.log(store.membership.dataDetail.userDetail.id); console.log( - store.membership.dataDetail.userDetail.image_identity + store.membership.dataDetail.userDetail.image_identity,"gambar id" ); console.log(store.membership.dataDetail.username); setVisibleModal(true); diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index 528431a..a59cc57 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -17,6 +17,7 @@ import { Typography, DatePicker, Form, + Divinder, } from "antd"; import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; @@ -34,8 +35,10 @@ import { appConfig } from "../../config/app"; import { capitalize } from "lodash"; import { PAYBACK_STATUS } from "../../constants/payback"; import moment from "moment"; +import { useHistory } from "react-router-dom"; export const Konfirmasi = observer(() => { + const history = useHistory(); const { Option } = Select; const { Title } = Typography; const [form] = Form.useForm(); @@ -43,6 +46,10 @@ export const Konfirmasi = observer(() => { const modalLoader = useContext(ModalLoaderContext); const [filterMembership, setFilterMembership] = useState([]); const [filterSubCategories, setFilterSubCategories] = useState([]); + const [visibleModalToko, setVisibleModalToko] = useState(false); + const [VisibleModalIdentitas, setVisibleModalIdentitas] = useState(false); + const [toko, setToko] = useState({}); + const [identitas, setIdentitas] = useState({}); useEffect(() => { const init = async () => { @@ -71,7 +78,7 @@ export const Konfirmasi = observer(() => { key: "userData_name", }, { - title: "Picture", + title: "Foto Identitas", dataIndex: "image_prove", key: "image_prove", render: (text, record) => ( @@ -83,15 +90,30 @@ export const Konfirmasi = observer(() => { ), }, { - title: "Amount", - dataIndex: "amount", - key: "amount", - width: "20%", - render: (text) => - new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(text), + title: "Foto Toko", + dataIndex: "image_prove", + key: "image_prove", + render: (text, record) => ( + // + + ), }, { title: "Action", @@ -279,6 +301,20 @@ export const Konfirmasi = observer(() => { Apply , ]; + const gambar = [ + { + mobil: + "https://www.toyota.astra.co.id/sites/default/files/2021-11/4-avanza-silver-mica-metallic.png", + }, + { + mobil: + "https://foto.kontan.co.id/B0DdG0ycDkrB5FyHTkyjMhz4opk=/smart/2021/04/22/1618664119p.jpg", + }, + { + mobil: + "https://static.wixstatic.com/media/bce131_b85b43380cb44ad493776b810c0389ac~mv2.png/v1/fill/w_688,h_408,al_c/bce131_b85b43380cb44ad493776b810c0389ac~mv2.png", + }, + ]; return (
{ {PAYBACK_STATUS[item.status]} )} + +

} />
-

{ src={`${appConfig.apiUrl}/config/image/${item.image_prove}`} style={{ width: "10vw" }} /> -

+

*/}
@@ -471,6 +536,144 @@ export const Konfirmasi = observer(() => { { + form.resetFields(); + setVisibleModalToko(false); + setVisibleModalIdentitas(false); + }} + width={1000} + footer={false} + // footer={footerLayoutFilter} + // footer={[ + // , + // , + // , + // ]} + // cancelText="Cancel" + // onCancel={() => { + // form.resetFields(); + // handleCancel(); + // }} + // onOk={() => { + // form + // .validateFields() + // .then((values) => { + // console.log(values, "isi form"); + // handleBuyProduct(values, item.product_code); + // form.resetFields(); + // }) + // .catch((info) => { + // console.error("Validate Failed:", info); + // }); + // }} + > + {visibleModalToko === true ? ( + + {gambar.map((gmbr, idx) => ( + + + + ))} + + ) : ( + + )} + + {/*
+ + + + */} +
+ {/* { - + */} ); }); diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index 731976d..e309648 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -81,7 +81,9 @@ export const MembershipModal = ({ ); }; - const handleCancel1 = () => { setPreviewVisible(false) }; + const handleCancel1 = () => { + setPreviewVisible(false); + }; const beforeUpload = (file) => { let isLt2M; @@ -112,20 +114,36 @@ export const MembershipModal = ({ }; const uploadHandler = async (args) => { + // if (fileList === "") { const file = args.file; const res = await store.payback.uploadImages(file); console.log(res, "ini respon 1"); setImage(`${appConfig.apiUrl}/config/image/${res.body.filename}`); - setResponseFilename(res.body.filename); + //setResponseFilename(res.body.filename); + console.log(initialData.image_identity) + initialData.image_identity !== "" + ? file === "" + ? setResponseFilename(initialData.image_identity) + : setResponseFilename(res.body.filename) + : setResponseFilename(res.body.filename); setFileList([ - { - uid: "-1", - name: res.body.filename, - status: "done", - url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, - }, - ]); + { + uid: "-1", + name: res.body.filename, + status: "done", + url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, + }, + ]); setLoading(false); + // } else { + // const file = args.file; + // const res = await store.payback.uploadImages(file); + // console.log(res, "ini respon 1"); + // setImage(`${appConfig.apiUrl}/config/image/${initialData.image_identity}`); + // setResponseFilename(initialData.image_identity); + // setFileList([initialData.image_identity]); + // setLoading(false); + // } }; const uploadHandlerStore = async (args) => { @@ -141,7 +159,7 @@ export const MembershipModal = ({ name: res.body.filename, status: "done", url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, - } + }, ]); setLoadingStore(false); diff --git a/src/pages/Product/Category.js b/src/pages/Product/Category.js index 68fd2cd..ca64fd7 100644 --- a/src/pages/Product/Category.js +++ b/src/pages/Product/Category.js @@ -46,7 +46,7 @@ export const Category = observer(() => { ]; return ( -
+
diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 0645284..2b80bf6 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -177,7 +177,7 @@ export const Product = observer(() => { }; return ( -
+
Date: Fri, 21 Jan 2022 14:37:33 +0700 Subject: [PATCH 299/324] Konfig Menu Member --- src/pages/Membership/Konfirmasi.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index a59cc57..4a6ed8e 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -628,7 +628,7 @@ export const Konfirmasi = observer(() => { style={ store.ui.mediaQuery.isDesktop ? { - width: "29vw", + width: "22vw", borderColor: "salmon", marginLeft: "10px", } From 42e8b522ef86878bda2f345ea951e56ea333feeb Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 21 Jan 2022 14:44:28 +0700 Subject: [PATCH 300/324] Bug Fixing --- src/pages/Membership/Konfirmasi.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index 4a6ed8e..a59cc57 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -628,7 +628,7 @@ export const Konfirmasi = observer(() => { style={ store.ui.mediaQuery.isDesktop ? { - width: "22vw", + width: "29vw", borderColor: "salmon", marginLeft: "10px", } From 346b8133af9c9f40f9a0cd74cccd04b913c0a6f7 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 21 Jan 2022 15:31:58 +0700 Subject: [PATCH 301/324] Config Retail Page --- src/pages/Membership/Konfirmasi.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index a59cc57..5cc038e 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -110,6 +110,8 @@ export const Konfirmasi = observer(() => { setToko(record); setVisibleModalToko(true); }} + // style={{backgroundColor:"cyan",color:"white"}} + type="primary" > Lihat Foto From 87fdfeabff56d24a30677d8606e0eb10bcee603a Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 21 Jan 2022 16:33:11 +0700 Subject: [PATCH 302/324] Bug Fixing --- src/pages/App/DesktopLayout.js | 5 +++-- src/pages/App/MenuList.js | 3 ++- src/pages/Membership/Konfirmasi.js | 8 ++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 610ad4c..053cb44 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -24,7 +24,8 @@ import { AppstoreOutlined, DollarCircleOutlined, UsergroupAddOutlined, - UnorderedListOutlined + UnorderedListOutlined, + FormOutlined } from "@ant-design/icons"; import { AppRoute, LINKS } from "../../routes/app"; import { useStore } from "../../utils/useStore"; @@ -158,7 +159,7 @@ export const DesktopLayout = observer(() => { - + Konfirmasi Retail diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index beee72b..eeeb69b 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -23,6 +23,7 @@ import { PieChartOutlined, UsergroupAddOutlined, UnorderedListOutlined, + FormOutlined, } from "@ant-design/icons"; import { observer } from "mobx-react-lite"; import { useStore } from "../../utils/useStore"; @@ -85,7 +86,7 @@ export const MenuList = observer((props) => { - + Konfirm Retail diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index 5cc038e..96b264c 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -110,8 +110,8 @@ export const Konfirmasi = observer(() => { setToko(record); setVisibleModalToko(true); }} - // style={{backgroundColor:"cyan",color:"white"}} - type="primary" + style={{backgroundColor:"#7c3ea3",color:"white"}} + // type="primary" > Lihat Foto @@ -630,7 +630,7 @@ export const Konfirmasi = observer(() => { style={ store.ui.mediaQuery.isDesktop ? { - width: "29vw", + width: "22vw", borderColor: "salmon", marginLeft: "10px", } @@ -641,7 +641,7 @@ export const Konfirmasi = observer(() => { } } > - + ))} From f8cb9395836799fc9751cc2e06d0d08aee5ada75 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 21 Jan 2022 17:59:46 +0700 Subject: [PATCH 303/324] Bug Fixing PPOB --- src/pages/Membership/DetailUser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 621b4ba..2d5c20b 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -288,7 +288,7 @@ export const DetailUser = observer(() => { ); console.log(store.authentication.listImage, "detail gambar"); return ( -
+
Date: Mon, 24 Jan 2022 17:29:06 +0700 Subject: [PATCH 304/324] Bug Fixing PPOB --- src/pages/App/MenuList.js | 76 +++-- src/pages/Membership/DetailUser.js | 434 +++++++++++------------------ src/pages/Membership/Konfirmasi.js | 308 +++++--------------- src/pages/Membership/Membership.js | 7 +- src/store/approval.js | 67 +++++ src/store/index.js | 3 + src/store/membership.js | 3 +- 7 files changed, 363 insertions(+), 535 deletions(-) create mode 100644 src/store/approval.js diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index eeeb69b..770498b 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -73,33 +73,67 @@ export const MenuList = observer((props) => { )} {store.authentication.userData.role === "Admin" && ( - } - title="Keanggotaan" - > - - - - List Anggota - - - - - - Konfirm Retail - - - - )} - {store.authentication.userData.role === "Supervisor" && ( + } + title="Keanggotaan" + > + + + + List Anggota + + + + + + Konfirm Retail + + + + )} + {store.authentication.userData.role === "Supervisor" && ( + } + title="Keanggotaan" + > + + + + List Anggota + + + + + + Konfirm Retail + + + + )} + {/* {store.authentication.userData.role === "Sales" && ( + } + title="Keanggotaan" + > + + + + List Anggota + + + + )} */} + {/* {store.authentication.userData.role === "Supervisor" && ( Keanggotaan - )} + )} */} {store.authentication.userData.role === "Sales" && ( diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 2d5c20b..196645a 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -63,9 +63,10 @@ export const DetailUser = observer(() => { ]); }; - const changeStatus = async (id, isActive) => { - const status = isActive ? "inactive" : "active"; - const status2 = isActive ? "Inactivating" : "Activating"; + const changeStatus = async (id, is_active) => { + let status = is_active ? false : true; + let status2 = is_active ? "Inactivating" : "Activating"; + console.log(status, "status terbaru"); try { modalLoader.setLoading(true); const response = await store.membership.changeStatus(id, status); @@ -136,6 +137,20 @@ export const DetailUser = observer(() => { setConfirmLoading(false); }; + const handleResend = async (id) => { + modalLoader.setLoading(true); + try { + const response = await store.approval.resendUser(id); + console.log(response); + response.body.statusCode !== 201 && response.body.statusCode !== 200 + ? message.error(response?.body?.message || `Failed Approve`) + : message.success(response?.body?.message || `Success Approve`); + } catch (e) { + console.error(e, "apa errornya"); + message.error(e.response?.body?.message || "Fail Approve"); + } + modalLoader.setLoading(false); + }; const columns = [ { title: "Amount", @@ -299,85 +314,102 @@ export const DetailUser = observer(() => { Detail User - - {store.authentication.userData.role === "Admin" && ( -
- + + + + + {((store.authentication.userData.role === "Sales" && + store.membership.dataDetail.is_rejected === true) || + (store.authentication.userData.role === "Supervisor" && + store.membership.dataDetail.is_rejected === true)) && ( + + )} + {store.authentication.userData.role === "Admin" && ( - - - - - - )} - {store.authentication.userData.role === "Supervisor" && ( - - - - - - - - )} - {store.authentication.userData.role === "Sales" && ( - - - - - - - - )} + )} + + - @@ -580,7 +463,7 @@ export const DetailUser = observer(() => { - {store.authentication.dataProfit.isActive === true + {store.authentication.dataProfit.is_active === true ? "Aktif" : "Inaktif"} @@ -623,47 +506,52 @@ export const DetailUser = observer(() => { )} */} - {store.authentication.userData.role === "Admin" && store.authentication.dataProfit.roles?.name !== "Admin Partner" && ( - - - Foto Identitas - - - - - - - - {store.authentication.dataProfit.roles?.name === "Retail" && ( - - Foto Toko - - - {store.authentication.listImage.map((item, index) => ( - - ))} - - - - )} - - )} + {store.authentication.userData.role === "Admin" && + store.authentication.dataProfit.roles?.name !== + "Admin Partner" && ( + + + Foto Identitas + + + + + + + + {store.authentication.dataProfit.roles?.name === + "Retail" && ( + + Foto Toko + + + {store.authentication.listImage.map( + (item, index) => ( + + ) + )} + + + + )} + + )} {store.authentication.userData.role === "Sales" && ( diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index 96b264c..0012e04 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -55,8 +55,7 @@ export const Konfirmasi = observer(() => { const init = async () => { try { modalLoader.setLoading(true); - await store.membership.getData(); - await store.payback.getDataConfirmation(); + await store.approval.getData(); modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); @@ -74,18 +73,18 @@ export const Konfirmasi = observer(() => { const columns = [ { title: "Name", - dataIndex: "userData_name", - key: "userData_name", + dataIndex: "username", + key: "username", }, { title: "Foto Identitas", - dataIndex: "image_prove", - key: "image_prove", + dataIndex: ["user_detail", "image_identity"], + key: "user_detail.image_identity", render: (text, record) => ( ), }, @@ -110,7 +109,7 @@ export const Konfirmasi = observer(() => { setToko(record); setVisibleModalToko(true); }} - style={{backgroundColor:"#7c3ea3",color:"white"}} + style={{ backgroundColor: "#7c3ea3", color: "white" }} // type="primary" > Lihat Foto @@ -123,7 +122,7 @@ export const Konfirmasi = observer(() => { key: "action", width: "10%", render: (text, record) => - PAYBACK_STATUS[record.status] === PAYBACK_STATUS[0] ? ( + record.is_active === false ? ( , ]; - const gambar = [ - { - mobil: - "https://www.toyota.astra.co.id/sites/default/files/2021-11/4-avanza-silver-mica-metallic.png", - }, - { - mobil: - "https://foto.kontan.co.id/B0DdG0ycDkrB5FyHTkyjMhz4opk=/smart/2021/04/22/1618664119p.jpg", - }, - { - mobil: - "https://static.wixstatic.com/media/bce131_b85b43380cb44ad493776b810c0389ac~mv2.png/v1/fill/w_688,h_408,al_c/bce131_b85b43380cb44ad493776b810c0389ac~mv2.png", - }, - ]; + return (
{ store.authentication.userData.role === "Admin" ? routeData : dataRoute } /> - -
- -
+ +
+ {/* */} + {/*
- - + */} + {/* */} {/* { marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0, }} /> */} - - + {/* */} + {/* */} {store.ui.mediaQuery.isDesktop && (
{ let pageNumber = page.current; - store.payback.pageSizeConfirmation = page.pageSize; - store.payback.pageConfirmation = pageNumber - 1; + store.approval.pageSize = page.pageSize; + store.approval.page = pageNumber - 1; modalLoader.setLoading(true); - await store.payback.getDataConfirmation(); + await store.approval.getData(); modalLoader.setLoading(false); }} /> @@ -379,18 +370,18 @@ export const Konfirmasi = observer(() => { position={"top"} pagination={{ onChange: async (page) => { - store.payback.pageSizeConfirmation = page.pageSize; - store.payback.pageConfirmation = page.current - 1; + store.approval.pageSize = page.pageSize; + store.approval.page = page.current - 1; modalLoader.setLoading(true); - await store.payback.getDataConfirmation(); + await store.approval.getData(); modalLoader.setLoading(false); }, - pageSize: store.payback.pageSizeConfirmation, - total: store.payback.totalDataConfirmation, - current: store.payback.pageConfirmation + 1, + pageSize: store.approval.pageSize, + total: store.approval.total_data, + current: store.approval.page + 1, style: { marginBottom: "1rem", marginRight: "1rem" }, }} - dataSource={store.payback.dataConfirmation} + dataSource={store.approval.data} style={{ padding: 0 }} renderItem={(item) => { return ( @@ -413,10 +404,9 @@ export const Konfirmasi = observer(() => { description={

- Amount: {item.amount} + Username: {item.username}
- {PAYBACK_STATUS[item.status] === - PAYBACK_STATUS[0] ? ( + {item.is_active === false ? ( , - // , - // , - // ]} - // cancelText="Cancel" - // onCancel={() => { - // form.resetFields(); - // handleCancel(); - // }} - // onOk={() => { - // form - // .validateFields() - // .then((values) => { - // console.log(values, "isi form"); - // handleBuyProduct(values, item.product_code); - // form.resetFields(); - // }) - // .catch((info) => { - // console.error("Validate Failed:", info); - // }); - // }} > {visibleModalToko === true ? ( - {gambar.map((gmbr, idx) => ( + {JSON.parse(toko.user_detail.image_store).map((gmbr, idx) => ( { } } > - + ))} ) : ( )} - - {/*
- - - - */} - {/* { - //form.resetFields(); - //setFilterMembership([]); - store.payback.filterMembership = null; - store.payback.filterStart = null; - store.payback.filterEnd = null; - store.payback.visibleModalFilterPayback = false; - await store.payback.getDataConfirmation(); - }} - > - -

- - Sender - - - - - - - - - - - - - */} ); }); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 631cff2..ab72a73 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -329,11 +329,7 @@ export const Membership = observer(() => { form.resetFields(); } }; - const handleClickRow = (record, index) => ({ - onClick: (event) => { - history.push(LINKS.USER_DETAIL.replace(":id", record.id)); - }, - }); + return (
{
Date: Mon, 24 Jan 2022 18:00:03 +0700 Subject: [PATCH 305/324] Bug Fixing PPOB --- src/pages/App/DesktopLayout.js | 24 ++++++++++++++++++++-- src/pages/Membership/Konfirmasi.js | 33 +++++++++++++++++++++--------- 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index 053cb44..9dc5669 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -165,6 +165,26 @@ export const DesktopLayout = observer(() => { )} + {store.authentication.userData.role === "Supervisor" && ( + } + title="Keanggotaan" + > + + + + List Anggota + + + + + + Konfirmasi Retail + + + + )} {store.authentication.userData.role === "Sales" && ( @@ -173,14 +193,14 @@ export const DesktopLayout = observer(() => { )} - {store.authentication.userData.role === "Supervisor" && ( + {/* {store.authentication.userData.role === "Supervisor" && ( Keanggotaan - )} + )} */} {store.authentication.userData.role === "Admin" && ( { width: "10%", render: (text, record) => record.is_active === false ? ( - + + {/* */} - {/* */} - {/* */} + {/* { marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0, }} /> */} - {/* */} + {/* */} {/* */} {store.ui.mediaQuery.isDesktop && (
{ >

- Username: {item.username} + Username: {item.username}
{item.is_active === false ? ( - +

{store.authentication.dataProfit.is_active === true - ? "Aktif" - : "Inaktif"} + ? "Active" + : "Inactive"} {/* {store.authentication.userData.role === "Sales" && ( From 198063a7d9ff06148b1d5d3322e9eedcb1467933 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Tue, 25 Jan 2022 09:59:57 +0700 Subject: [PATCH 309/324] Bug Fixing --- src/component/ProductComponent.js | 14 --- src/pages/Membership/DetailUser.js | 76 ------------ src/pages/Membership/FilterUser.js | 141 +++++++++++----------- src/pages/Membership/Konfirmasi.js | 111 ++---------------- src/pages/Membership/Membership.js | 1 - src/pages/Membership/MembershipModal.js | 32 ++--- src/pages/Payback/Payback.js | 15 +-- src/pages/Payback/PaybackCreated.js | 13 --- src/pages/Product/Category.js | 14 --- src/pages/Product/Subcategory.js | 46 +++----- src/pages/Profile/Profile.js | 21 ---- src/store/supplier.js | 149 ++++++++++++------------ 12 files changed, 177 insertions(+), 456 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 34e0041..854f78d 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -220,8 +220,6 @@ export const ProductComponent = observer((props) => { const handleCancelFilter = async () => { store.product.filterSubCategory = null; store.product.filterSupplier = null; - // setFilterSubCategories([]); - // setFilterSupplier([]); store.product.visibleModalFilterProduct = false; await store.product.getData(); }; @@ -232,21 +230,9 @@ export const ProductComponent = observer((props) => { modalLoader.setLoading(true); await store.product.getData(); modalLoader.setLoading(false); - // setFilterSupplier([]); - // setFilterSubCategories([]); store.product.visibleModalFilterProduct = false; }; - // const handleFilterCategory = async (value) => { - // if (value) { - // store.product.filterCategory = value; - // await store.product.getDataSubCategories(); - // } else { - // store.product.filterCategory = null; - // await store.product.getDataSubCategories(); - // } - // }; - const footerLayoutFilter = [ - Foto Identitas - - - - - - - - - Foto Toko - - - {store.authentication.listImage.map((item) => ( - - ))} - - - - - )} */} {store.authentication.userData.role === "Admin" && store.authentication.dataProfit.roles?.name !== "Admin Partner" && ( @@ -587,7 +545,6 @@ export const DetailUser = observer(() => { )} - {store.authentication.userData.role === "Supervisor" && ( @@ -664,7 +621,6 @@ export const DetailUser = observer(() => { - {/* {store.ui.mediaQuery.isDesktop && ( */}
{ modalLoader.setLoading(false); }} /> - {/* )} */} - {/*
*/} {store.ui.mediaQuery.isDesktop && ( - //
{ - // let pageNumber = page.current; - // store.transaction.pageSizeHistoryTransaction = - // page.pageSize; - // store.transaction.pageHistoryTransaction = pageNumber - 1; - // modalLoader.setLoading(true); - // await store.transaction.getDataHistoryTransaction(); - // modalLoader.setLoading(false); - // }} - // />
{ }} /> )} - {/*
*/} diff --git a/src/pages/Membership/FilterUser.js b/src/pages/Membership/FilterUser.js index 814d3c6..5328009 100644 --- a/src/pages/Membership/FilterUser.js +++ b/src/pages/Membership/FilterUser.js @@ -1,82 +1,77 @@ import React, { useState } from "react"; -import { Form, Input, Modal, Select, InputNumber,Row,Title,Col,Option } from "antd"; +import { + Form, + Input, + Modal, + Select, + InputNumber, + Row, + Title, + Col, + Option, +} from "antd"; import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; - export const FilterUser = observer(() => { - const store = useStore(); -// const [form] = Form.useForm(); -// const { Option } = Select; -// const store = useStore(); -// const [value, setValue] = useState(); - + const store = useStore(); return ( - - - - Filter Supplier - - - - - - Filter Categories - - - - - - Filter Sub-Categories - - - - - + visible={store.membership.visibleModalFilterMembership} + title={"Filter"} + //footer={footerLayoutFilter} + > + + + + Filter Supplier + + + + + + Filter Categories + + + + + + Filter Sub-Categories + + + + + ); }); diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index d55bbab..d6c4f3f 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -93,24 +93,11 @@ export const Konfirmasi = observer(() => { dataIndex: "image_prove", key: "image_prove", render: (text, record) => ( - // @@ -272,42 +259,6 @@ export const Konfirmasi = observer(() => { store.payback.visibleModalFilterPayback = false; }; - const handleFilterCategory = async (value) => { - if (value) { - store.product.filterCategory = value; - await store.product.getDataSubCategories(); - } else { - store.product.filterCategory = null; - await store.product.getDataSubCategories(); - } - }; - - const footerLayoutFilter = [ - , - , - , - ]; - return (
{ />
- {/* */} - {/*
- - */} - {/* */} - {/* */} - {/* */} - {/* */} {store.ui.mediaQuery.isDesktop && (
{ >

@@ -418,7 +346,6 @@ export const Konfirmasi = observer(() => { okType: "primary", onOk() { handleApprove(item.id); - //console.log(record.id); }, onCancel() { console.log("Cancel"); @@ -473,20 +400,14 @@ export const Konfirmasi = observer(() => { )}

*/}
{ const { Option } = Select; const { Title } = Typography; @@ -245,17 +244,7 @@ export const Payback = observer(() => { modalLoader.setLoading(false); store.payback.visibleModalFilterPayback = false; }; - - const handleFilterCategory = async (value) => { - if (value) { - store.product.filterCategory = value; - await store.product.getDataSubCategories(); - } else { - store.product.filterCategory = null; - await store.product.getDataSubCategories(); - } - }; - + const footerLayoutFilter = [
- - */} - {/* */} - - */} - - {/* */} + + - + ); diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 846f497..11b10aa 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -306,27 +306,6 @@ export const Profile = observer(() => { )} - {/* {store.authentication.userData.role === "Supervisor" && ( - - - Foto Identitas - - - - - - - - - )} */} diff --git a/src/store/supplier.js b/src/store/supplier.js index ecc81e1..c3e0f74 100644 --- a/src/store/supplier.js +++ b/src/store/supplier.js @@ -1,90 +1,87 @@ -import {makeAutoObservable} from "mobx"; -import {http} from "../utils/http"; +import { makeAutoObservable } from "mobx"; +import { http } from "../utils/http"; export class Supplier { - page = 0; - pageSize = 10 - data = []; - total_data = 0; - filterCategory = null; - visibleModalSupplier = false; - visibleModalTransaction = false; - code = ""; + page = 0; + pageSize = 10; + data = []; + total_data = 0; + filterCategory = null; + visibleModalSupplier = false; + visibleModalTransaction = false; + code = ""; - pageCategories = 0; - pageSizeCategories = 10 - dataCategories = []; - total_dataCategories = 0; + pageCategories = 0; + pageSizeCategories = 10; + dataCategories = []; + total_dataCategories = 0; - pageSubCategories = 0; - pageSizeSubCategories = 10 - dataSubCategories = []; - total_dataSubCategories = 0; + pageSubCategories = 0; + pageSizeSubCategories = 10; + dataSubCategories = []; + total_dataSubCategories = 0; - constructor(ctx) { - this.ctx = ctx; - makeAutoObservable(this); - } + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } - async getData() { - try { - const response = await http.get(`/users/supplier?page=${this.page}&pageSize=${this.pageSize}`); - //console.log(response) - this.data = response.body.data ?? [] - this.total_data = response.body.count ?? 0 - } catch (e) { - console.error(e); - } - } - - async create(data) { - // try { - const response = await http.post('/users/supplier').send(data); - //await this.getData(); - return response; - // } catch (e) { - // console.error(e); - // } - } - async createTransaction(data) { - try { - const response = await http.post('/transaction/add-saldo-supplier').send(data); - await this.getData(); - return response; - } catch (e) { - console.error(e); - } + async getData() { + try { + const response = await http.get( + `/users/supplier?page=${this.page}&pageSize=${this.pageSize}` + ); + //console.log(response) + this.data = response.body.data ?? []; + this.total_data = response.body.count ?? 0; + } catch (e) { + console.error(e); } + } - async update(id, data) { - try { - const response = await http.put(`/users/supplier/${id}`).send(data); - await this.getData(); - return response; - } catch (e) { - console.error(e); - } + async create(data) { + const response = await http.post("/users/supplier").send(data); + return response; + } + async createTransaction(data) { + try { + const response = await http + .post("/transaction/add-saldo-supplier") + .send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); } + } - async delete(id) { - try { - const response = await http.del(`/product/${id}`); - await this.getData(); - return response; - } catch (e) { - console.error(e) - } + async update(id, data) { + try { + const response = await http.put(`/users/supplier/${id}`).send(data); + await this.getData(); + return response; + } catch (e) { + console.error(e); } + } - async changeStatus(id, status) { - try { - const response = await http.get(`/users/supplier/${id}/${status}`); - await this.getData(); - return response; - } catch (e) { - console.error(e); - } + async delete(id) { + try { + const response = await http.del(`/product/${id}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); } + } + + async changeStatus(id, status) { + try { + const response = await http.get(`/users/supplier/${id}/${status}`); + await this.getData(); + return response; + } catch (e) { + console.error(e); + } + } } - - From d287798e5f9ea68a6560f10742dbb528f5c10634 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Wed, 26 Jan 2022 11:41:38 +0700 Subject: [PATCH 310/324] Tambah Fitur --- src/pages/Membership/DetailUser.js | 191 ++++++++++++++++++++++++----- src/pages/Membership/Membership.js | 6 + src/pages/Profile/Profile.js | 14 ++- src/store/transaction.js | 2 +- 4 files changed, 181 insertions(+), 32 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 02a3d13..3d5f1cb 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -13,9 +13,11 @@ import { Tag, Divider, Image, - Avatar, + Modal, + Form, + DatePicker, } from "antd"; -import { UserOutlined } from "@ant-design/icons"; +import { UserOutlined, FilterOutlined } from "@ant-design/icons"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { LINKS } from "../../routes/app"; import { useStore } from "../../utils/useStore"; @@ -25,16 +27,21 @@ import { ModalLoaderContext } from "../../utils/modal"; import { useParams } from "react-router-dom"; import { appConfig } from "../../config/app"; import { MembershipModal } from "./MembershipModal"; +import moment from "moment"; const { Title, Text } = Typography; const { TabPane } = Tabs; export const DetailUser = observer(() => { const store = useStore(); + const [form] = Form.useForm(); const modalLoader = useContext(ModalLoaderContext); const { id } = useParams(); const [visibleModal, setVisibleModal] = useState(false); const [initialData, setInitialData] = useState({}); const [confirmLoading, setConfirmLoading] = useState(false); + const [filterStart, setFilterStart] = useState([]); + const [filterEnd, setFilterEnd] = useState([]); + const [visibleHis, setVisibleHis] = useState(true); useEffect(() => { (async () => { @@ -178,11 +185,15 @@ export const DetailUser = observer(() => { ]; const column = [ + { + title: "Nama Produk", + dataIndex: "name", + key: "name", + }, { title: "Price", dataIndex: "price", key: "price", - render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", @@ -242,8 +253,13 @@ export const DetailUser = observer(() => { title: "Tanggal Transaksi", dataIndex: "created_at", key: "created_at", + width: "15%", render: (text, record) => { - return {format(parseISO(record.created_at), "dd-MM-yyyy")}; + return ( + + {format(parseISO(record.created_at), "dd-MM-yyyy HH:mm:ss")} + + ); }, }, { @@ -298,7 +314,79 @@ export const DetailUser = observer(() => { store.authentication.dataProfit.userDetail?.image_identity, "detail" ); - console.log(store.authentication.listImage, "detail gambar"); + + const handleRemoveFilter = async () => { + store.transaction.filterStart = null; + store.transaction.filterEnd = null; + form.resetFields(); + setFilterStart([]); + setFilterEnd([]); + //await store.transaction.getDetailHistoryTransaction(); + await store.transaction.getDetailHistoryTransaction( + store.authentication.dataProfit.id + ); + store.transaction.visibleModalFilterTransaction = false; + }; + + const handleCancelFilter = async () => { + store.transaction.filterStart = null; + //form.resetFields(); + store.transaction.filterEnd = null; + store.transaction.visibleModalFilterTransaction = false; + //await store.transaction.getDetailHistoryTransaction(); + await store.transaction.getDetailHistoryTransaction( + store.authentication.dataProfit.id + ); + }; + + const handleSubmitFilter = async () => { + const data = form.getFieldsValue(); + console.log(data.start_date); + console.log(data.end_date); + + const awal = (store.transaction.filterStart = moment( + data.start_date + ).format("YYYY-MM-DD HH:mm:ss")); + const akhir = (store.transaction.filterEnd = moment(data.end_date).format( + "YYYY-MM-DD HH:mm:ss" + )); + console.log(awal); + console.log(akhir); + console.log(store.authentication.dataProfit.id, "id auth"); + console.log(store.membership.dataDetail.id, "id member"); + modalLoader.setLoading(true); + await store.transaction.getDetailHistoryTransaction( + store.authentication.dataProfit.id + ); + modalLoader.setLoading(false); + //form.resetFields(); + store.transaction.visibleModalFilterTransaction = false; + }; + const footerLayoutFilter = [ + , + , + , + ]; return (
{ {store.ui.mediaQuery.isDesktop && ( -
{ - let pageNumber = page.current; - store.transaction.pageSize = page.pageSize; - store.transaction.page = pageNumber - 1; - modalLoader.setLoading(true); - await getData(); - modalLoader.setLoading(false); - }} - /> +
+ +
{ + let pageNumber = page.current; + store.transaction.pageSize = page.pageSize; + store.transaction.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + )} {store.ui.mediaQuery.isMobile && ( @@ -790,6 +890,39 @@ export const DetailUser = observer(() => { setVisibleModal(false); }} /> + { + //form.resetFields(); + store.transaction.filterStart = null; + store.transaction.filterEnd = null; + store.transaction.visibleModalFilterTransaction = false; + await store.transaction.getDetailHistoryTransaction(); + }} + > + + + + + + + + + + + + + ); }); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 522fd45..48ed67e 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -195,6 +195,12 @@ export const Membership = observer(() => { key: "name", render: (text, record) => record?.name ?? record?.username, }, + { + title: "Username", + dataIndex: "username", + key: "username", + render: (text, record) => record?.name ?? record?.username, + }, { title: "Role", dataIndex: ["roles", "name"], diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 11b10aa..0eb67f6 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -128,6 +128,11 @@ export const Profile = observer(() => { , ]; const columns = [ + { + title: "Name Produk", + dataIndex: "name", + key: "name", + }, { title: "Price", dataIndex: "price", @@ -142,6 +147,7 @@ export const Profile = observer(() => { title: "Pembeli", dataIndex: "buyer", key: "buyer", + width: "10%", }, { title: "Tujuan", @@ -196,9 +202,13 @@ export const Profile = observer(() => { title: "Tanggal Transaksi", dataIndex: "created_at", key: "created_at", - + width: "15%", render: (text, record) => { - return {format(parseISO(record.created_at), "dd-MM-yyyy")}; + return ( + + {format(parseISO(record.created_at), "dd-MM-yyyy HH:mm:ss")} + + ); }, }, ]; diff --git a/src/store/transaction.js b/src/store/transaction.js index f10cb9e..d212316 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -143,7 +143,7 @@ export class Transaction { async getDetailHistoryTransaction(id) { try { - const response = await http.get(`/transaction/history-user/${id}?page=${this.page}&pageSize=${this.pageSize}&start=${this.filterStartDetailUser}&end=${this.filterEndDetailUser}`); + const response = await http.get(`/transaction/history-user/${id}?page=${this.page}&pageSize=${this.pageSize}&start=${this.filterStart}&end=${this.filterEnd}`); console.log(response,'Data Trans'); this.dataDetailHistoryTransactionDetailUser = response.body.data ?? []; this.total_data = response?.body?.count ?? 0; From 9144a9ff5648dac70fa33d6afa9ef184afe8cd68 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Wed, 26 Jan 2022 12:22:16 +0700 Subject: [PATCH 311/324] Tambah Fitur --- src/pages/Membership/DetailUser.js | 222 +++++++++++++++-------------- src/pages/Membership/Konfirmasi.js | 2 +- 2 files changed, 114 insertions(+), 110 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 3d5f1cb..3d3e488 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -341,19 +341,12 @@ export const DetailUser = observer(() => { const handleSubmitFilter = async () => { const data = form.getFieldsValue(); - console.log(data.start_date); - console.log(data.end_date); - - const awal = (store.transaction.filterStart = moment( - data.start_date - ).format("YYYY-MM-DD HH:mm:ss")); - const akhir = (store.transaction.filterEnd = moment(data.end_date).format( + store.transaction.filterStart = moment(data.start_date).format( "YYYY-MM-DD HH:mm:ss" - )); - console.log(awal); - console.log(akhir); - console.log(store.authentication.dataProfit.id, "id auth"); - console.log(store.membership.dataDetail.id, "id member"); + ); + store.transaction.filterEnd = moment(data.end_date).format( + "YYYY-MM-DD HH:mm:ss" + ); modalLoader.setLoading(true); await store.transaction.getDetailHistoryTransaction( store.authentication.dataProfit.id @@ -773,104 +766,115 @@ export const DetailUser = observer(() => { )} {store.ui.mediaQuery.isMobile && ( - { - store.transaction.pageSize = pageSize; - store.transaction.page = page - 1; - modalLoader.setLoading(true); - await getData(); - modalLoader.setLoading(false); - }, - pageSize: store.transaction.pageSize, - total: store.transaction.total_data, - current: store.transaction.page + 1, - style: { marginBottom: "1rem", marginRight: "1rem" }, - }} - dataSource={ - store.transaction.dataDetailHistoryTransactionDetailUser - } - style={{ padding: 0 }} - renderItem={(item) => { - return ( -
- - -

- Price : {item.price}
- - Tujuan : {item.transaction_destination} - {" "} -
- - Kode Transaksi : {item.transaction_code} - {" "} -
- - Status :{" "} - { - + + { + store.transaction.pageSize = pageSize; + store.transaction.page = page - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }, + pageSize: store.transaction.pageSize, + total: store.transaction.total_data, + current: store.transaction.page + 1, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={ + store.transaction.dataDetailHistoryTransactionDetailUser + } + style={{ padding: 0 }} + renderItem={(item) => { + return ( +

+ + +

+ Price : {item.price}
+ + Tujuan : {item.transaction_destination} + {" "} +
+ + Kode Transaksi : {item.transaction_code} + {" "} +
+ + Status :{" "} + { + + {item.status === 1 + ? "Success" : item.status === 0 - ? "warning" - : "processing" - } - > - {item.status === 1 - ? "Success" - : item.status === 0 - ? "Pending" - : "Failed"} - - } - {" "} -
- - No.Seri : {item.seri_number} - {" "} -
- - IDTrx Mitra :{" "} - {item.partner_transaction_code} - {" "} -
- - Transaction Date :{" "} - {format( - parseISO(item.created_at), - "dd-MM-yyyy" - )} - {" "} -
-

-
- } - /> -
- -
- ); - }} - /> + ? "Pending" + : "Failed"} + + } + {" "} +
+ + No.Seri : {item.seri_number} + {" "} +
+ + IDTrx Mitra :{" "} + {item.partner_transaction_code} + {" "} +
+ + Transaction Date :{" "} + {format( + parseISO(item.created_at), + "dd-MM-yyyy hh:mm:ss" + )} + {" "} +
+

+ + } + /> + + + + ); + }} + /> + )} diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index d6c4f3f..136ff16 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -463,7 +463,7 @@ export const Konfirmasi = observer(() => { style={ store.ui.mediaQuery.isDesktop ? { - width: "22vw", + width: "20vw", borderColor: "salmon", marginLeft: "10px", } From 3c244bf9ba4bf3a8666e8212b5e7de2494a9c79d Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Wed, 26 Jan 2022 16:10:46 +0700 Subject: [PATCH 312/324] Tambah Fitur --- src/pages/Membership/DetailUser.js | 4 ---- src/pages/Membership/Konfirmasi.js | 36 ------------------------------ src/pages/Membership/Membership.js | 29 ------------------------ src/pages/Transaction/Product.js | 17 -------------- 4 files changed, 86 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 3d3e488..da1aa55 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -321,7 +321,6 @@ export const DetailUser = observer(() => { form.resetFields(); setFilterStart([]); setFilterEnd([]); - //await store.transaction.getDetailHistoryTransaction(); await store.transaction.getDetailHistoryTransaction( store.authentication.dataProfit.id ); @@ -330,10 +329,8 @@ export const DetailUser = observer(() => { const handleCancelFilter = async () => { store.transaction.filterStart = null; - //form.resetFields(); store.transaction.filterEnd = null; store.transaction.visibleModalFilterTransaction = false; - //await store.transaction.getDetailHistoryTransaction(); await store.transaction.getDetailHistoryTransaction( store.authentication.dataProfit.id ); @@ -352,7 +349,6 @@ export const DetailUser = observer(() => { store.authentication.dataProfit.id ); modalLoader.setLoading(false); - //form.resetFields(); store.transaction.visibleModalFilterTransaction = false; }; const footerLayoutFilter = [ diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index 136ff16..6ffb3e3 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -223,42 +223,6 @@ export const Konfirmasi = observer(() => { modalLoader.setLoading(false); }; - const handleRemoveFilter = async () => { - store.payback.filterMembership = null; - store.payback.filterStart = null; - store.payback.filterEnd = null; - setFilterMembership([]); - form.resetFields(); - await store.payback.getDataConfirmation(); - store.payback.visibleModalFilterPayback = false; - }; - - const handleCancelFilter = async () => { - //setFilterMembership([]); - //form.resetFields(); - store.payback.filterMembership = null; - store.payback.filterStart = null; - store.payback.filterEnd = null; - store.payback.visibleModalFilterPayback = false; - await store.payback.getDataConfirmation(); - }; - - const handleSubmitFilter = async () => { - const data = form.getFieldsValue(); - //console.log(data); - store.payback.filterMembership = filterMembership; - store.payback.filterStart = data.start_date - ? moment(data.start_date).format("YYYY-MM-DD") + " 00:00:00" - : null; - store.payback.filterEnd = data.end_date - ? moment(data.end_date).format("YYYY-MM-DD") + " 23:59:59" - : null; - modalLoader.setLoading(true); - await store.payback.getDataConfirmation(); - modalLoader.setLoading(false); - store.payback.visibleModalFilterPayback = false; - }; - return (
{ : await store.membership.getDataBySuperior(); }; - const changeStatus = async (id, isActive) => { - const status = isActive ? "inactive" : "active"; - const status2 = isActive ? "Inactivating" : "Activating"; - try { - modalLoader.setLoading(true); - const response = await store.membership.changeStatus(id, status); - modalLoader.setLoading(false); - - response?.body?.statusCode === 201 - ? message.success(`Success ${status2} Membership`) - : message.error(`Failed ${status2} Membership`); - await getData(); - } catch (err) { - modalLoader.setLoading(false); - message.error(`Failed ${status2} Membership`); - } - }; - const handleRemoveFilter = async () => { store.membership.filterMembership = null; store.membership.filterPartner = null; setFilterMembership([]); setFilterPartner([]); store.membership.visibleModalFilterMembership = false; - //await getData(); await store.membership.getData(); }; const handleCancelFilter = async () => { store.membership.filterMembership = null; store.membership.filterPartner = null; - // setFilterMembership([]); - // setFilterPartner([]); store.membership.visibleModalFilterMembership = false; - //await getData(); await store.membership.getData(); }; @@ -605,21 +583,14 @@ export const Membership = observer(() => { diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js index cace10e..9c2933d 100644 --- a/src/pages/Transaction/Product.js +++ b/src/pages/Transaction/Product.js @@ -250,23 +250,6 @@ export const Product = observer(() => { Buy Staging , ]} - // cancelText="Cancel" - // onCancel={() => { - // form.resetFields(); - // handleCancel(); - // }} - // onOk={() => { - // form - // .validateFields() - // .then((values) => { - // console.log(values, "isi form"); - // handleBuyProduct(values, item.product_code); - // form.resetFields(); - // }) - // .catch((info) => { - // console.error("Validate Failed:", info); - // }); - // }} >
Date: Wed, 26 Jan 2022 16:37:04 +0700 Subject: [PATCH 313/324] Bug Fixing --- src/pages/Membership/DetailUser.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index da1aa55..6d275b4 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -349,6 +349,8 @@ export const DetailUser = observer(() => { store.authentication.dataProfit.id ); modalLoader.setLoading(false); + store.transaction.filterStart = null; + store.transaction.filterEnd = null; store.transaction.visibleModalFilterTransaction = false; }; const footerLayoutFilter = [ From e2205aa260a980be9379db6b07361b9a7bfe5ee5 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Wed, 26 Jan 2022 18:18:12 +0700 Subject: [PATCH 314/324] Perbaikan Page Konfirmasi --- src/pages/Membership/Konfirmasi.js | 26 +++++++++++++------------- src/pages/Profile/Profile.js | 19 ++++++++----------- src/store/approval.js | 2 +- 3 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index 6ffb3e3..ee76999 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -90,18 +90,19 @@ export const Konfirmasi = observer(() => { }, { title: "Foto Toko", - dataIndex: "image_prove", - key: "image_prove", - render: (text, record) => ( - - ), + render: (text, record) => + record.user_detail?.image_store !== "\"\"" ? ( + + ) : ( + "" + ), }, { title: "Action", @@ -173,7 +174,6 @@ export const Konfirmasi = observer(() => { ), }, ]; - if (store.authentication.userData.role === "Retail") columns.pop(); const routeData = [ { diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 0eb67f6..5096b0b 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -84,21 +84,18 @@ export const Profile = observer(() => { const handleSubmitFilter = async () => { const data = form.getFieldsValue(); - console.log(data.start_date); - console.log(data.end_date); - const awal = (store.transaction.filterStart = moment( data.start_date ).format("YYYY-MM-DD HH:mm:ss")); const akhir = (store.transaction.filterEnd = moment(data.end_date).format( "YYYY-MM-DD HH:mm:ss" )); - console.log(awal); - console.log(akhir); modalLoader.setLoading(true); await store.transaction.getDataHistoryTransaction(); modalLoader.setLoading(false); - form.resetFields(); + store.transaction.filterStart = null; + store.transaction.filterEnd = null; + //form.resetFields(); store.transaction.visibleModalFilterTransaction = false; }; @@ -193,11 +190,6 @@ export const Profile = observer(() => { dataIndex: "partner_transaction_code", key: "partner_transaction_code", }, - { - title: "Alasan Gagal", - dataIndex: "failed_reason", - key: "failed_reason", - }, { title: "Tanggal Transaksi", dataIndex: "created_at", @@ -211,6 +203,11 @@ export const Profile = observer(() => { ); }, }, + { + title: "Alasan Gagal", + dataIndex: "failed_reason", + key: "failed_reason", + }, ]; const styleSaldoTitle = store.ui.mediaQuery.isDesktop diff --git a/src/store/approval.js b/src/store/approval.js index 5192198..e8fefd2 100644 --- a/src/store/approval.js +++ b/src/store/approval.js @@ -16,7 +16,7 @@ export class Approval { async getData() { try { const response = await http.get(`/users/find-by-approval?page=${this.page}&pageSize=${this.pageSize}`); - console.log(response) + console.log(response,"data dari store") this.data = response.body.data ?? [] this.listImage= this.data.user_detail?.image_store ? JSON.parse(this.data.user_detail?.image_store) : [] this.total_data = response.body.count ?? 0 From 9fc1ee2fc43b911af781a4985a1cc35f10de97f7 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Wed, 26 Jan 2022 19:38:50 +0700 Subject: [PATCH 315/324] Develop Fitur --- src/pages/Membership/DetailUser.js | 11 ++++++----- src/pages/Membership/Membership.js | 1 + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index 6d275b4..ca191eb 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -566,7 +566,7 @@ export const DetailUser = observer(() => { Foto Toko - {store.authentication.listImage.map( + {store.authentication.listImage?store.authentication.listImage.map( (item, index) => ( { style={{ width: "10vw", marginRight: 15 }} /> ) - )} + ) : ""} @@ -608,7 +608,7 @@ export const DetailUser = observer(() => { Foto Toko - {store.authentication.listImage.map((item, index) => ( + {store.authentication.listImage?store.authentication.listImage.map((item, index) => ( { } style={{ width: "10vw", marginRight: 15 }} /> - ))} + )):""} @@ -811,10 +811,11 @@ export const DetailUser = observer(() => { >

+ Pembeli : {item.buyer}
Price : {item.price}
Tujuan : {item.transaction_destination} diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index e3af9d8..e51ffa5 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -434,6 +434,7 @@ export const Membership = observer(() => { description={

+ Username : {item.username}
Role : {item.roles?.name}
Saldo : {item.coa?.amount}
- + {item.user_detail?.image_store !== "\"\"" ? ( + + ) : ( + "" + )}

} From 859bf200cac43fed4ed8cf50240bc148125e8d8e Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 27 Jan 2022 12:12:27 +0700 Subject: [PATCH 319/324] Bug Fixing --- src/pages/Membership/DetailUser.js | 63 +++++++++++++++++------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index ca191eb..5e411a9 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -469,9 +469,11 @@ export const DetailUser = observer(() => { Ganti Password {((store.authentication.userData.role === "Sales" && - store.membership.dataDetail.is_rejected === true) || + store.membership.dataDetail.is_rejected === true && + store.membership.dataDetail.is_active === false) || (store.authentication.userData.role === "Supervisor" && - store.membership.dataDetail.is_rejected === true)) && ( + store.membership.dataDetail.is_rejected === true && + store.membership.dataDetail.is_active === false)) && ( - {item.user_detail?.image_store !== "\"\"" ? ( + {item.user_detail?.image_store !== '""' ? (
); From fd4090caaa00f1141409b537aa8e98e418d1eb37 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Fri, 28 Jan 2022 11:45:38 +0700 Subject: [PATCH 322/324] Bug Fixing --- src/pages/Membership/Konfirmasi.js | 3 ++- src/pages/Membership/Membership.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index 77376c5..6c685c3 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -97,7 +97,7 @@ export const Konfirmasi = observer(() => { { title: "Foto Toko", render: (text, record) => - record.user_detail?.image_store !== '""' ? ( + record.roles?.name !== "Sales" && record.user_detail?.image_store !== "[]" && record.user_detail?.image_store !== "\"\""? (