├── .gitignore ├── .prettierignore ├── .prettierrc.js ├── README.md ├── app ├── components │ ├── AddressView │ │ ├── AddressView.tsx │ │ └── index.ts │ ├── CartSummary │ │ ├── CartSummary.tsx │ │ └── index.ts │ ├── CartView │ │ ├── CartView.css │ │ ├── CartView.tsx │ │ └── index.ts │ ├── CatalogView │ │ ├── CatalogView.tsx │ │ └── index.ts │ ├── Containers │ │ ├── Containers.tsx │ │ └── index.ts │ ├── Form │ │ ├── ErrorMessage.tsx │ │ ├── TextField.tsx │ │ └── index.ts │ ├── Header │ │ ├── Header.tsx │ │ ├── Navbar.css │ │ ├── Navbar.tsx │ │ └── index.ts │ ├── OrderView │ │ ├── OrderItemList.css │ │ ├── OrderItemList.tsx │ │ ├── OrderView.css │ │ ├── OrderView.tsx │ │ └── index.tsx │ ├── ProductView │ │ ├── ProductView.css │ │ ├── ProductView.tsx │ │ └── index.ts │ └── index.ts ├── entry.client.tsx ├── entry.server.tsx ├── hooks │ ├── index.ts │ └── useReloadData.ts ├── models │ ├── Address.ts │ ├── Cart.tsx │ ├── CheckoutInfo.ts │ ├── Order.ts │ ├── OrderItem.ts │ ├── Product.ts │ ├── README.md │ └── index.ts ├── root.tsx ├── routes │ ├── checkout.tsx │ ├── index.tsx │ └── orders.tsx ├── styles │ └── global.css └── utils │ ├── Constants.ts │ ├── DateUtils.ts │ ├── FormUtils.ts │ ├── README.md │ ├── StringUtils.ts │ ├── index.ts │ └── yupLocale.ts ├── assets └── screenshot-home.png ├── package.json ├── public └── favicon.ico ├── remix.config.js ├── remix.env.d.ts ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | /.cache 4 | /build 5 | /public/build 6 | 7 | .idea 8 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | package.json 2 | package-lock.json 3 | *.snap 4 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | singleQuote: true, 3 | proseWrap: 'always' 4 | }; 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # React Test Shop Using Remix 2 | 3 | ![Home Page](assets/screenshot-home.png) 4 | 5 | ## Development Build 6 | 7 | React Test Shop makes API calls to an external server. First set up this server 8 | by cloning the 9 | [React Test Shop Server](https://github.com/nareshbhatia/react-test-shop-server) 10 | repository and following the instructions there to start the API server on 11 | port 8080. 12 | 13 | Now run this project from another shell: 14 | 15 | ```sh 16 | yarn dev 17 | ``` 18 | 19 | This starts your app in development mode, rebuilding assets on file changes. 20 | 21 | ## Production Build 22 | 23 | First, build your app for production: 24 | 25 | ```sh 26 | yarn build 27 | ``` 28 | 29 | Then run the app in production mode: 30 | 31 | ```sh 32 | yarn start 33 | ``` 34 | -------------------------------------------------------------------------------- /app/components/AddressView/AddressView.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Address } from '../../models'; 3 | 4 | export interface AddressViewProps { 5 | address: Address; 6 | } 7 | 8 | export const AddressView = ({ address }: AddressViewProps) => { 9 | const { 10 | firstName, 11 | lastName, 12 | company, 13 | address: street, 14 | city, 15 | state, 16 | zip, 17 | } = address; 18 | 19 | return ( 20 |
21 |

22 | {firstName} {lastName} 23 |

24 | {company !== undefined ?

{company}

: null} 25 |

{street}

26 |

27 | {city}, {state} {zip} 28 |

29 |
30 | ); 31 | }; 32 | -------------------------------------------------------------------------------- /app/components/AddressView/index.ts: -------------------------------------------------------------------------------- 1 | export * from './AddressView'; 2 | -------------------------------------------------------------------------------- /app/components/CartSummary/CartSummary.tsx: -------------------------------------------------------------------------------- 1 | import React, { Fragment } from 'react'; 2 | import { Cart } from '../../models'; 3 | import { OrderItemList } from '../OrderView'; 4 | 5 | export interface CartSummaryProps { 6 | cart: Cart; 7 | } 8 | 9 | export const CartSummary = ({ cart }: CartSummaryProps) => { 10 | return ( 11 | 12 |

Shopping Cart

13 | {cart.items.length === 0 ? ( 14 |

Your cart is empty.

15 | ) : ( 16 | 17 | )} 18 |
19 | ); 20 | }; 21 | -------------------------------------------------------------------------------- /app/components/CartSummary/index.ts: -------------------------------------------------------------------------------- 1 | export * from './CartSummary'; 2 | -------------------------------------------------------------------------------- /app/components/CartView/CartView.css: -------------------------------------------------------------------------------- 1 | .cart__qty { 2 | width: var(--sp-5); 3 | text-align: right; 4 | } 5 | 6 | .cart__qty-col { 7 | width: 36px; 8 | } 9 | 10 | .cart__price-col { 11 | width: 110px; 12 | } 13 | 14 | .cart__del-col { 15 | width: 30px; 16 | } 17 | -------------------------------------------------------------------------------- /app/components/CartView/CartView.tsx: -------------------------------------------------------------------------------- 1 | import React, { Fragment } from 'react'; 2 | import { NumberUtils } from '@react-force/number-utils'; 3 | import { AiTwotoneDelete } from 'react-icons/ai'; 4 | import { useNavigate } from 'remix'; 5 | import { useReloadData } from '../../hooks'; 6 | import { Cart, CartUtils } from '../../models'; 7 | import { API_URL } from '../../utils'; 8 | import { HorizontalContainer } from '../Containers'; 9 | 10 | export interface CartViewProps { 11 | cart: Cart; 12 | } 13 | 14 | export const CartView = ({ cart }: CartViewProps) => { 15 | const navigate = useNavigate(); 16 | const reloadData = useReloadData(); 17 | 18 | const handleQuantityChange = async (productId: string, quantity: string) => { 19 | await fetch(`${API_URL}/cart/items/${productId}`, { 20 | method: 'PATCH', 21 | headers: { 22 | 'Content-Type': 'application/json', 23 | }, 24 | body: JSON.stringify({ quantity }), 25 | }); 26 | reloadData(); 27 | }; 28 | 29 | const handleDelete = async (productId: string) => { 30 | await fetch(`${API_URL}/cart/items/${productId}`, { 31 | method: 'DELETE', 32 | headers: { 33 | 'Content-Type': 'application/json', 34 | }, 35 | }); 36 | reloadData(); 37 | }; 38 | 39 | const handleCheckout = () => { 40 | navigate('/checkout'); 41 | }; 42 | 43 | return ( 44 | 45 | 46 |

Shopping Cart

47 | {cart.items.length > 0 ? ( 48 | 51 | ) : null} 52 |
53 | {cart.items.length === 0 ? ( 54 |

Please click on a product to start your order.

55 | ) : ( 56 | 57 | 58 | {cart.items.map((item, index) => ( 59 | 60 | 61 | 73 | 79 | 86 | 87 | ))} 88 | 89 | 90 | 91 | 92 | 95 | 96 | 97 |
{item.productName} 62 | 69 | handleQuantityChange(item.productId, e.target.value) 70 | } 71 | /> 72 | 77 | {NumberUtils.formatAsMoney(item.price * item.quantity)} 78 | 80 | handleDelete(item.productId)} 84 | /> 85 |
Total 93 | {NumberUtils.formatAsMoney(CartUtils.total(cart))} 94 |
98 | )} 99 |
100 | ); 101 | }; 102 | -------------------------------------------------------------------------------- /app/components/CartView/index.ts: -------------------------------------------------------------------------------- 1 | export * from './CartView'; 2 | -------------------------------------------------------------------------------- /app/components/CatalogView/CatalogView.tsx: -------------------------------------------------------------------------------- 1 | import React, { Fragment } from 'react'; 2 | import { useReloadData } from '../../hooks'; 3 | import { Catalog } from '../../models'; 4 | import { API_URL } from '../../utils'; 5 | import { ProductView } from '../ProductView'; 6 | 7 | export interface CatalogViewProps { 8 | catalog: Catalog; 9 | } 10 | 11 | export const CatalogView = ({ catalog }: CatalogViewProps) => { 12 | const reloadData = useReloadData(); 13 | 14 | const handleProductClicked = async (productId: string) => { 15 | await fetch(`${API_URL}/cart/items`, { 16 | method: 'POST', 17 | headers: { 18 | 'Content-Type': 'application/json', 19 | }, 20 | body: JSON.stringify({ productId }), 21 | }); 22 | reloadData(); 23 | }; 24 | 25 | return ( 26 | 27 | {Object.values(catalog).map((product) => ( 28 | 33 | ))} 34 | 35 | ); 36 | }; 37 | -------------------------------------------------------------------------------- /app/components/CatalogView/index.ts: -------------------------------------------------------------------------------- 1 | export * from './CatalogView'; 2 | -------------------------------------------------------------------------------- /app/components/Containers/Containers.tsx: -------------------------------------------------------------------------------- 1 | import React, { MouseEventHandler } from 'react'; 2 | 3 | export interface ContainerProps { 4 | testId?: string; 5 | className?: string; 6 | children: React.ReactNode; 7 | onClick?: MouseEventHandler; 8 | } 9 | 10 | /** 11 | * HorizontalContainer 12 | * - flex: 1 13 | * - flexDirection: row 14 | */ 15 | export const HorizontalContainer = ({ 16 | testId = 'horizontal-container', 17 | className = '', 18 | children, 19 | onClick, 20 | }: ContainerProps) => { 21 | return ( 22 |
27 | {children} 28 |
29 | ); 30 | }; 31 | 32 | /** 33 | * ViewHorizontalContainer 34 | * - height: 100vh 35 | * - flexDirection: row 36 | */ 37 | export const ViewHorizontalContainer = ({ 38 | testId = 'view-horizontal-container', 39 | className = '', 40 | children, 41 | onClick, 42 | }: ContainerProps) => { 43 | return ( 44 |
49 | {children} 50 |
51 | ); 52 | }; 53 | 54 | /** 55 | * VerticalContainer 56 | * - flex: 1 57 | * - flexDirection: column 58 | */ 59 | export const VerticalContainer = ({ 60 | testId = 'vertical-container', 61 | className = '', 62 | children, 63 | onClick, 64 | }: ContainerProps) => { 65 | return ( 66 |
71 | {children} 72 |
73 | ); 74 | }; 75 | 76 | /** 77 | * ViewVerticalContainer 78 | * - height: 100vh 79 | * - flexDirection: column 80 | */ 81 | export const ViewVerticalContainer = ({ 82 | testId = 'view-vertical-container', 83 | className = '', 84 | children, 85 | onClick, 86 | }: ContainerProps) => { 87 | return ( 88 |
93 | {children} 94 |
95 | ); 96 | }; 97 | 98 | /** 99 | * CenteredContainer 100 | * - Centers content inside a flex container 101 | * - flex: 1 102 | */ 103 | export const CenteredContainer = ({ 104 | testId = 'centered-container', 105 | className = '', 106 | children, 107 | onClick, 108 | }: ContainerProps) => { 109 | return ( 110 |
115 | {children} 116 |
117 | ); 118 | }; 119 | 120 | /** 121 | * ViewCenteredContainer 122 | * - Centers content in the entire view 123 | * - height: 100vh 124 | */ 125 | export const ViewCenteredContainer = ({ 126 | testId = 'centered-container', 127 | className = '', 128 | children, 129 | onClick, 130 | }: ContainerProps) => { 131 | return ( 132 |
137 | {children} 138 |
139 | ); 140 | }; 141 | 142 | /** 143 | * ScrollingContainer 144 | * - overflow: 'auto' 145 | */ 146 | export const ScrollingContainer = ({ 147 | testId = 'scrolling-container', 148 | className = '', 149 | children, 150 | onClick, 151 | }: ContainerProps) => { 152 | return ( 153 |
158 | {children} 159 |
160 | ); 161 | }; 162 | -------------------------------------------------------------------------------- /app/components/Containers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Containers'; 2 | -------------------------------------------------------------------------------- /app/components/Form/ErrorMessage.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export interface ErrorMessageProps { 4 | error?: string; 5 | } 6 | 7 | export const ErrorMessage = ({ error }: ErrorMessageProps) => 8 | error !== undefined ?
{error}
: null; 9 | -------------------------------------------------------------------------------- /app/components/Form/TextField.tsx: -------------------------------------------------------------------------------- 1 | import React, { Fragment } from 'react'; 2 | import { ErrorMessage } from './ErrorMessage'; 3 | 4 | export interface TextFieldProps { 5 | /** used to make label and errorText accessible for screen readers */ 6 | id?: string; 7 | 8 | /** used to create data-testid property on element for testing */ 9 | testId?: string; 10 | 11 | /** passed directly to the input element */ 12 | name?: string; 13 | 14 | /** the label content */ 15 | label?: React.ReactNode; 16 | 17 | /** the input type (defaults to text) */ 18 | type?: string; 19 | 20 | /** error text */ 21 | error?: string; 22 | } 23 | 24 | export const TextField = ({ 25 | id, 26 | testId, 27 | name, 28 | label, 29 | type = 'text', 30 | error, 31 | }: TextFieldProps) => { 32 | return ( 33 | 34 | {label !== undefined ? : null} 35 | 36 | 37 | 38 | ); 39 | }; 40 | -------------------------------------------------------------------------------- /app/components/Form/index.ts: -------------------------------------------------------------------------------- 1 | export * from './TextField'; 2 | -------------------------------------------------------------------------------- /app/components/Header/Header.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Navbar } from './Navbar'; 3 | 4 | export const Header = () => { 5 | return ( 6 |
7 |
8 | 9 |
10 |
11 | ); 12 | }; 13 | -------------------------------------------------------------------------------- /app/components/Header/Navbar.css: -------------------------------------------------------------------------------- 1 | .navbar { 2 | display: flex; 3 | align-items: center; 4 | min-height: var(--px-56); 5 | } 6 | 7 | .navbar__brand { 8 | color: var(--text-primary-default); 9 | font-size: var(--font-size-xl); 10 | font-weight: 500; 11 | margin-right: var(--sp-2); 12 | } 13 | @media (min-width: 480px) { 14 | .navbar__brand { 15 | margin-right: var(--sp-3); 16 | } 17 | } 18 | 19 | .navbar ul { 20 | display: flex; 21 | list-style: none; 22 | margin: 0; 23 | padding: 0; 24 | } 25 | 26 | .navbar__link { 27 | color: var(--text-primary-muted); 28 | font-weight: 600; 29 | padding: var(--sp-1); 30 | } 31 | 32 | .navbar__link:hover { 33 | color: var(--neutral-100); 34 | text-decoration: none; 35 | } 36 | 37 | .navbar__link.active { 38 | color: var(--text-primary-default); 39 | } 40 | -------------------------------------------------------------------------------- /app/components/Header/Navbar.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { NavLink } from 'remix'; 3 | 4 | export const Navbar = () => { 5 | return ( 6 | 22 | ); 23 | }; 24 | -------------------------------------------------------------------------------- /app/components/Header/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Header'; 2 | -------------------------------------------------------------------------------- /app/components/OrderView/OrderItemList.css: -------------------------------------------------------------------------------- 1 | .order-items__quantity { 2 | width: 36px; 3 | } 4 | 5 | .order-items__price { 6 | width: 110px; 7 | } 8 | -------------------------------------------------------------------------------- /app/components/OrderView/OrderItemList.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { NumberUtils } from '@react-force/number-utils'; 3 | import { OrderItemUtils } from '../../models'; 4 | import { OrderItem } from '../../models'; 5 | import './OrderItemList.css'; 6 | 7 | export interface OrderItemListProps { 8 | items: Array; 9 | className?: string; 10 | } 11 | 12 | export const OrderItemList = ({ items, className }: OrderItemListProps) => { 13 | return ( 14 | 15 | 16 | {items.map((item, index) => ( 17 | 18 | 19 | 22 | 28 | 29 | ))} 30 | 31 | 32 | 33 | 34 | 37 | 38 | 39 |
{item.productName} 20 | {item.quantity} 21 | 26 | {NumberUtils.formatAsMoney(OrderItemUtils.totalItem(item))} 27 |
Total 35 | {NumberUtils.formatAsMoney(OrderItemUtils.totalItems(items))} 36 |
40 | ); 41 | }; 42 | -------------------------------------------------------------------------------- /app/components/OrderView/OrderView.css: -------------------------------------------------------------------------------- 1 | .order { 2 | margin-bottom: var(--sp-2); 3 | padding: var(--sp-2); 4 | border-radius: var(--px-4); 5 | cursor: pointer; 6 | user-select: none; 7 | } 8 | -------------------------------------------------------------------------------- /app/components/OrderView/OrderView.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Order } from '../../models'; 3 | import { DateUtils } from '../../utils'; 4 | import { AddressView } from '../AddressView'; 5 | import { HorizontalContainer } from '../Containers'; 6 | import { OrderItemList } from './OrderItemList'; 7 | import './OrderView.css'; 8 | 9 | export interface OrderViewProps { 10 | order: Order; 11 | } 12 | 13 | export const OrderView = ({ order }: OrderViewProps) => { 14 | const { createdAt, items, shippingAddress } = order; 15 | 16 | return ( 17 |
18 | 19 | 20 |

{DateUtils.formatISODate(createdAt)}

21 |
22 | 23 |
24 | ); 25 | }; 26 | -------------------------------------------------------------------------------- /app/components/OrderView/index.tsx: -------------------------------------------------------------------------------- 1 | export * from './OrderItemList'; 2 | export * from './OrderView'; 3 | -------------------------------------------------------------------------------- /app/components/ProductView/ProductView.css: -------------------------------------------------------------------------------- 1 | .product { 2 | margin-bottom: var(--sp-2); 3 | padding: var(--sp-2); 4 | border-radius: var(--px-4); 5 | cursor: pointer; 6 | user-select: none; 7 | } 8 | 9 | .product__photo { 10 | object-fit: cover; 11 | height: 100%; 12 | width: 10rem; 13 | } 14 | -------------------------------------------------------------------------------- /app/components/ProductView/ProductView.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { NumberUtils } from '@react-force/number-utils'; 3 | import { Product } from '../../models'; 4 | import { HorizontalContainer } from '../Containers'; 5 | 6 | export interface ProductViewProps { 7 | product: Product; 8 | onClick: (productId: string) => void; 9 | } 10 | 11 | export const ProductView = ({ product, onClick }: ProductViewProps) => { 12 | const { id, name, description, price, photo } = product; 13 | 14 | return ( 15 | onClick(id)} 19 | > 20 | {name} 21 |
22 |

{name}

23 |

{description}

24 |

${NumberUtils.formatAsMoney(price)}

25 |
26 |
27 | ); 28 | }; 29 | -------------------------------------------------------------------------------- /app/components/ProductView/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ProductView'; 2 | -------------------------------------------------------------------------------- /app/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './AddressView'; 2 | export * from './CartSummary'; 3 | export * from './CartView'; 4 | export * from './CatalogView'; 5 | export * from './Containers'; 6 | export * from './Form'; 7 | export * from './Header'; 8 | export * from './OrderView'; 9 | export * from './ProductView'; 10 | -------------------------------------------------------------------------------- /app/entry.client.tsx: -------------------------------------------------------------------------------- 1 | import { hydrate } from 'react-dom'; 2 | import { RemixBrowser } from 'remix'; 3 | 4 | hydrate(, document); 5 | -------------------------------------------------------------------------------- /app/entry.server.tsx: -------------------------------------------------------------------------------- 1 | import { renderToString } from 'react-dom/server'; 2 | import { RemixServer } from 'remix'; 3 | import type { EntryContext } from 'remix'; 4 | 5 | export default function handleRequest( 6 | request: Request, 7 | responseStatusCode: number, 8 | responseHeaders: Headers, 9 | remixContext: EntryContext 10 | ) { 11 | let markup = renderToString( 12 | 13 | ); 14 | 15 | responseHeaders.set('Content-Type', 'text/html'); 16 | 17 | return new Response('' + markup, { 18 | status: responseStatusCode, 19 | headers: responseHeaders, 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /app/hooks/index.ts: -------------------------------------------------------------------------------- 1 | export * from './useReloadData'; 2 | -------------------------------------------------------------------------------- /app/hooks/useReloadData.ts: -------------------------------------------------------------------------------- 1 | import { useCallback } from 'react'; 2 | import { useNavigate } from 'remix'; 3 | 4 | export function useReloadData() { 5 | const navigate = useNavigate(); 6 | 7 | // return a function which will navigate to `.` (same URL) and replace it 8 | // This will rerun the loader 9 | return useCallback( 10 | function revalidate() { 11 | navigate('.', { replace: true }); 12 | }, 13 | [navigate] 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /app/models/Address.ts: -------------------------------------------------------------------------------- 1 | export interface Address { 2 | firstName: string; 3 | lastName: string; 4 | company?: string; 5 | address: string; 6 | city: string; 7 | state: string; 8 | zip: string; 9 | } 10 | -------------------------------------------------------------------------------- /app/models/Cart.tsx: -------------------------------------------------------------------------------- 1 | import { OrderItem, OrderItemUtils } from './OrderItem'; 2 | import { Product } from './Product'; 3 | 4 | // ---------------------------------------------------------------------------- 5 | // Cart contains a list of OrderItems. 6 | // ---------------------------------------------------------------------------- 7 | export interface Cart { 8 | items: Array; 9 | } 10 | 11 | // ---------------------------------------------------------------------------- 12 | // Cart utility functions 13 | // These are pure functions with a deterministic output. 14 | // If the cart needs to be modified, a new instance is returned. 15 | // In other words, the Cart is immutable. 16 | // ---------------------------------------------------------------------------- 17 | function total(cart: Cart): number { 18 | return OrderItemUtils.totalItems(cart.items); 19 | } 20 | 21 | function findItem(cart: Cart, productId: string): OrderItem | undefined { 22 | return cart.items.find((item) => item.productId === productId); 23 | } 24 | 25 | function addItem(cart: Cart, item: OrderItem): Cart { 26 | // make a copy of items and add a new one 27 | let newItems = cart.items.slice(); 28 | newItems.push(item); 29 | return { ...cart, items: newItems }; 30 | } 31 | 32 | function deleteItem(cart: Cart, productId: string): Cart { 33 | let newItems = cart.items.filter((item) => item.productId !== productId); 34 | return { ...cart, items: newItems }; 35 | } 36 | 37 | function setItemQuantity(cart: Cart, productId: string, quantity: number) { 38 | let newItems = cart.items.map((item) => 39 | item.productId !== productId 40 | ? item 41 | : { 42 | productId: item.productId, 43 | productName: item.productName, 44 | price: item.price, 45 | quantity, 46 | } 47 | ); 48 | return { ...cart, items: newItems }; 49 | } 50 | 51 | /** 52 | * If the product already exists in the cart, simply increments the quantity 53 | */ 54 | function addProduct(cart: Cart, product: Product): Cart { 55 | const { id, name, price } = product; 56 | const existingItem = findItem(cart, id); 57 | return existingItem 58 | ? setItemQuantity(cart, id, existingItem.quantity + 1) 59 | : addItem(cart, { 60 | productId: id, 61 | productName: name, 62 | price: price, 63 | quantity: 1, 64 | }); 65 | } 66 | 67 | export const CartUtils = { 68 | total, 69 | addProduct, 70 | deleteItem, 71 | setItemQuantity, 72 | }; 73 | -------------------------------------------------------------------------------- /app/models/CheckoutInfo.ts: -------------------------------------------------------------------------------- 1 | import { Address } from './Address'; 2 | 3 | /** 4 | * Information necessary to checkout, for example: 5 | * shippingAddress 6 | * shippingOptions 7 | * paymentMethod 8 | * 9 | * For simplicity, we ask for shippingAddress only 10 | */ 11 | export interface CheckoutInfo { 12 | shippingAddress: Address; 13 | } 14 | -------------------------------------------------------------------------------- /app/models/Order.ts: -------------------------------------------------------------------------------- 1 | import { Address } from './Address'; 2 | import { OrderItem } from './OrderItem'; 3 | 4 | export interface Order { 5 | id: string; 6 | createdAt: string; // ISO 8601 formatted timestamp 7 | items: Array; 8 | shippingAddress: Address; 9 | } 10 | -------------------------------------------------------------------------------- /app/models/OrderItem.ts: -------------------------------------------------------------------------------- 1 | export interface OrderItem { 2 | productId: string; 3 | productName: string; 4 | price: number; 5 | quantity: number; 6 | } 7 | 8 | function totalItem(item: OrderItem): number { 9 | return item.price * item.quantity; 10 | } 11 | 12 | function totalItems(items: Array): number { 13 | return items.reduce((accumulator, item) => { 14 | return accumulator + totalItem(item); 15 | }, 0); 16 | } 17 | 18 | export const OrderItemUtils = { 19 | totalItem, 20 | totalItems, 21 | }; 22 | -------------------------------------------------------------------------------- /app/models/Product.ts: -------------------------------------------------------------------------------- 1 | export interface Product { 2 | id: string; 3 | name: string; 4 | manufacturer: string; 5 | description: string; 6 | price: number; 7 | photo: string; 8 | } 9 | 10 | export type Catalog = { [id: string]: Product }; 11 | -------------------------------------------------------------------------------- /app/models/README.md: -------------------------------------------------------------------------------- 1 | # models 2 | 3 | This folder contains models (data structures) that are reused across application 4 | features. 5 | -------------------------------------------------------------------------------- /app/models/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Address'; 2 | export * from './Cart'; 3 | export * from './CheckoutInfo'; 4 | export * from './Order'; 5 | export * from './OrderItem'; 6 | export * from './Product'; 7 | -------------------------------------------------------------------------------- /app/root.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { 3 | Links, 4 | LiveReload, 5 | Meta, 6 | Outlet, 7 | Scripts, 8 | ScrollRestoration, 9 | useCatch, 10 | useLocation, 11 | } from 'remix'; 12 | import type { LinksFunction } from 'remix'; 13 | 14 | // TODO: Replace with tailwind.css 15 | import globalStylesUrl from '~/styles/global.css'; 16 | import cartViewStylesUrl from '~/components/CartView/CartView.css'; 17 | import navbarStylesUrl from '~/components/Header/Navbar.css'; 18 | import orderItemListStylesUrl from '~/components/OrderView/OrderItemList.css'; 19 | import orderViewStylesUrl from '~/components/OrderView/OrderView.css'; 20 | import productViewStylesUrl from '~/components/ProductView/ProductView.css'; 21 | 22 | /** 23 | * The `links` export is a function that returns an array of objects that map to 24 | * the attributes for an HTML `` element. These will load `` tags on 25 | * every route in the app, but individual routes can include their own links 26 | * that are automatically unloaded when a user navigates away from the route. 27 | * 28 | * https://remix.run/api/app#links 29 | */ 30 | export let links: LinksFunction = () => { 31 | return [ 32 | { rel: 'stylesheet', href: globalStylesUrl }, 33 | { rel: 'stylesheet', href: cartViewStylesUrl }, 34 | { rel: 'stylesheet', href: navbarStylesUrl }, 35 | { rel: 'stylesheet', href: orderItemListStylesUrl }, 36 | { rel: 'stylesheet', href: orderViewStylesUrl }, 37 | { rel: 'stylesheet', href: productViewStylesUrl }, 38 | ]; 39 | }; 40 | 41 | /** 42 | * The root module's default export is a component that renders the current 43 | * route via the `` component. Think of this as the global layout 44 | * component for your app. 45 | */ 46 | export default function App() { 47 | return ( 48 | 49 | 50 | 51 | ); 52 | } 53 | 54 | function Document({ 55 | children, 56 | title, 57 | }: { 58 | children: React.ReactNode; 59 | title?: string; 60 | }) { 61 | return ( 62 | 63 | 64 | 65 | 66 | {title ? {title} : null} 67 | 68 | 69 | 70 | 71 | {children} 72 | 73 | 74 | 75 | {process.env.NODE_ENV === 'development' && } 76 | 77 | 78 | ); 79 | } 80 | 81 | function Layout({ children }: React.PropsWithChildren<{}>) { 82 | return ( 83 |
84 |
85 |
{children}
86 |
87 |
88 | ); 89 | } 90 | 91 | export function CatchBoundary() { 92 | let caught = useCatch(); 93 | 94 | let message; 95 | switch (caught.status) { 96 | case 401: 97 | message = ( 98 |

99 | Oops! Looks like you tried to visit a page that you do not have access 100 | to. 101 |

102 | ); 103 | break; 104 | case 404: 105 | message = ( 106 |

Oops! Looks like you tried to visit a page that does not exist.

107 | ); 108 | break; 109 | 110 | default: 111 | throw new Error(caught.data || caught.statusText); 112 | } 113 | 114 | return ( 115 | 116 | 117 |

118 | {caught.status}: {caught.statusText} 119 |

120 | {message} 121 |
122 |
123 | ); 124 | } 125 | 126 | export function ErrorBoundary({ error }: { error: Error }) { 127 | console.error(error); 128 | return ( 129 | 130 | 131 |
132 |

There was an error

133 |

{error.message}

134 |
135 |

136 | Hey, developer, you should replace this with what you want your 137 | users to see. 138 |

139 |
140 |
141 |
142 | ); 143 | } 144 | 145 | /** 146 | * Provides an alert for screen reader users when the route changes. 147 | */ 148 | const RouteChangeAnnouncement = React.memo(() => { 149 | let [hydrated, setHydrated] = React.useState(false); 150 | let [innerHtml, setInnerHtml] = React.useState(''); 151 | let location = useLocation(); 152 | 153 | React.useEffect(() => { 154 | setHydrated(true); 155 | }, []); 156 | 157 | let firstRenderRef = React.useRef(true); 158 | React.useEffect(() => { 159 | // Skip the first render because we don't want an announcement on the 160 | // initial page load. 161 | if (firstRenderRef.current) { 162 | firstRenderRef.current = false; 163 | return; 164 | } 165 | 166 | let pageTitle = location.pathname === '/' ? 'Home page' : document.title; 167 | setInnerHtml(`Navigated to ${pageTitle}`); 168 | }, [location.pathname]); 169 | 170 | // Render nothing on the server. The live region provides no value unless 171 | // scripts are loaded and the browser takes over normal routing. 172 | if (!hydrated) { 173 | return null; 174 | } 175 | 176 | return ( 177 |
195 | {innerHtml} 196 |
197 | ); 198 | }); 199 | -------------------------------------------------------------------------------- /app/routes/checkout.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | Form, 3 | json, 4 | redirect, 5 | useActionData, 6 | useLoaderData, 7 | useTransition, 8 | } from 'remix'; 9 | import type { ActionFunction, LoaderFunction, MetaFunction } from 'remix'; 10 | import * as yup from 'yup'; 11 | import { ValidationError } from 'yup'; 12 | import { 13 | CartSummary, 14 | Header, 15 | HorizontalContainer, 16 | ScrollingContainer, 17 | TextField, 18 | ViewVerticalContainer, 19 | } from '../components'; 20 | import { Cart, Catalog } from '../models'; 21 | import { API_URL, yupLocale, yupToFormErrors } from '../utils'; 22 | 23 | type CheckoutPageData = { 24 | cart: Cart; 25 | }; 26 | 27 | export let loader: LoaderFunction = async () => { 28 | const resCart = await fetch(`${API_URL}/cart`); 29 | const cart = await resCart.json(); 30 | 31 | let data: CheckoutPageData = { 32 | cart, 33 | }; 34 | 35 | return json(data); 36 | }; 37 | 38 | export let action: ActionFunction = async ({ request }) => { 39 | await new Promise((res) => setTimeout(res, 1000)); 40 | const formData = await request.formData(); 41 | 42 | // set up yup errors 43 | yup.setLocale(yupLocale); 44 | 45 | const addressSchema = yup.object().shape({ 46 | firstName: yup.string().required().min(2), 47 | lastName: yup.string().required().min(2), 48 | company: yup.string(), 49 | address: yup.string().required(), 50 | city: yup.string().required(), 51 | state: yup.string().required(), 52 | zip: yup.string().required(), 53 | }); 54 | 55 | const address = Object.fromEntries(await request.formData()); 56 | 57 | try { 58 | await addressSchema.validate(address, { abortEarly: false }); 59 | await fetch(`${API_URL}/orders`, { 60 | method: 'POST', 61 | headers: { 62 | 'Content-Type': 'application/json', 63 | }, 64 | body: JSON.stringify({ shippingAddress: address }), 65 | }); 66 | return redirect('/orders'); 67 | } catch (e) { 68 | const errors = yupToFormErrors(e as ValidationError); 69 | return errors; 70 | } 71 | }; 72 | 73 | export let meta: MetaFunction = () => { 74 | return { 75 | title: 'React Test Shop', 76 | description: 'Welcome to React Test Shop!', 77 | }; 78 | }; 79 | 80 | export default function CheckoutPage() { 81 | let { cart } = useLoaderData(); 82 | let errors = useActionData(); 83 | let transition = useTransition(); 84 | 85 | return ( 86 | 87 |
88 | 89 | 90 |
91 |

Checkout

92 | 93 |

Shipping Address

94 |
95 | 101 |
102 |
103 | 109 |
110 |
111 | 117 |
118 |
119 | 125 |
126 | 127 | 128 |
129 | 135 |
136 |
137 | 143 |
144 |
145 | 151 |
152 |
153 | 154 | 157 |
158 |
159 | 160 | 161 | 162 |
163 | 164 | ); 165 | } 166 | -------------------------------------------------------------------------------- /app/routes/index.tsx: -------------------------------------------------------------------------------- 1 | import type { MetaFunction, LoaderFunction } from 'remix'; 2 | import { useLoaderData, json } from 'remix'; 3 | import { 4 | CartView, 5 | CatalogView, 6 | Header, 7 | HorizontalContainer, 8 | ScrollingContainer, 9 | ViewVerticalContainer, 10 | } from '../components'; 11 | import { Cart, Catalog } from '../models'; 12 | import { API_URL } from '../utils'; 13 | 14 | type HomePageData = { 15 | catalog: Catalog; 16 | cart: Cart; 17 | }; 18 | 19 | export let loader: LoaderFunction = async () => { 20 | const resCatalog = await fetch(`${API_URL}/catalog`); 21 | const catalog = await resCatalog.json(); 22 | 23 | const resCart = await fetch(`${API_URL}/cart`); 24 | const cart = await resCart.json(); 25 | 26 | let data: HomePageData = { 27 | catalog, 28 | cart, 29 | }; 30 | 31 | return json(data); 32 | }; 33 | 34 | export let meta: MetaFunction = () => { 35 | return { 36 | title: 'React Test Shop', 37 | description: 'Welcome to React Test Shop!', 38 | }; 39 | }; 40 | 41 | export default function HomePage() { 42 | const { catalog, cart } = useLoaderData(); 43 | 44 | return ( 45 | 46 |
47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | ); 57 | } 58 | -------------------------------------------------------------------------------- /app/routes/orders.tsx: -------------------------------------------------------------------------------- 1 | import type { MetaFunction, LoaderFunction } from 'remix'; 2 | import { useLoaderData, json } from 'remix'; 3 | import { 4 | Header, 5 | OrderView, 6 | ScrollingContainer, 7 | ViewVerticalContainer, 8 | } from '../components'; 9 | import { Order } from '../models'; 10 | import { API_URL } from '../utils'; 11 | 12 | type OrdersPageData = { 13 | orders: Array; 14 | }; 15 | 16 | export let loader: LoaderFunction = async () => { 17 | const resOrders = await fetch(`${API_URL}/orders`); 18 | const orders = await resOrders.json(); 19 | 20 | const sortedOrders = orders.sort((order1: Order, order2: Order) => { 21 | const date1 = new Date(order1.createdAt); 22 | const date2 = new Date(order2.createdAt); 23 | if (date1 < date2) return 1; 24 | if (date1 > date2) return -1; 25 | return 0; 26 | }); 27 | 28 | let data: OrdersPageData = { 29 | orders: sortedOrders, 30 | }; 31 | 32 | return json(data); 33 | }; 34 | 35 | export let meta: MetaFunction = () => { 36 | return { 37 | title: 'React Test Shop', 38 | description: 'Welcome to React Test Shop!', 39 | }; 40 | }; 41 | 42 | export default function OrdersPage() { 43 | const { orders } = useLoaderData(); 44 | 45 | return ( 46 | 47 |
48 | 49 | {orders.length === 0 ? ( 50 |

Your have no orders.

51 | ) : ( 52 | orders.map((order) => ( 53 |
54 | 55 |
56 | )) 57 | )} 58 |
59 | 60 | ); 61 | } 62 | -------------------------------------------------------------------------------- /app/styles/global.css: -------------------------------------------------------------------------------- 1 | /* 2 | This is a simple stylesheet to style starter components with minimal fuss. 3 | Feel free to replace it with your choice of styling mechanism. 4 | */ 5 | 6 | html { 7 | box-sizing: border-box; 8 | } 9 | 10 | *, 11 | *:before, 12 | *:after { 13 | box-sizing: inherit; 14 | } 15 | 16 | body { 17 | color: var(--text-default); 18 | background-color: var(--bg-default); 19 | margin: 0; 20 | font-family: Inter, sans-serif; 21 | font-size: 1rem; 22 | font-weight: 400; 23 | line-height: 1.5; 24 | -webkit-font-smoothing: antialiased; 25 | -moz-osx-font-smoothing: grayscale; 26 | } 27 | 28 | h1 { 29 | font-size: var(--font-size-3xl); 30 | font-weight: 500; 31 | line-height: 1; 32 | margin: 0; 33 | text-transform: uppercase; 34 | } 35 | 36 | h2 { 37 | font-size: var(--font-size-xl); 38 | font-weight: 500; 39 | line-height: 1; 40 | margin: 0; 41 | text-transform: uppercase; 42 | } 43 | 44 | h3 { 45 | font-size: var(--font-size-lg); 46 | font-weight: 500; 47 | line-height: 1; 48 | margin: 0; 49 | } 50 | 51 | a { 52 | color: var(--primary-main); 53 | text-decoration: none; 54 | } 55 | 56 | table { 57 | width: 100%; 58 | border: none; 59 | border-collapse: collapse; 60 | border-spacing: 0; 61 | text-align: left; 62 | } 63 | 64 | table tr:nth-of-type(2n) { 65 | background-color: var(--grey-100); 66 | } 67 | 68 | td, 69 | th { 70 | vertical-align: middle; 71 | padding: var(--px-12) var(--px-4); 72 | } 73 | 74 | thead { 75 | border-bottom: var(--px-2) solid var(--grey-300); 76 | } 77 | 78 | tfoot { 79 | font-size: var(--font-size-lg); 80 | font-weight: 500; 81 | border-top: var(--px-2) solid var(--grey-300); 82 | } 83 | 84 | /* ----- Typography ----- */ 85 | .text-center { 86 | text-align: center; 87 | } 88 | 89 | .text-right { 90 | text-align: right; 91 | } 92 | 93 | .text-primary-500 { 94 | color: var(--primary-500); 95 | } 96 | 97 | .text-success { 98 | color: var(--success-main); 99 | } 100 | 101 | .text-info { 102 | color: var(--info-main); 103 | } 104 | 105 | .text-warning { 106 | color: var(--warning-main); 107 | } 108 | 109 | .text-error { 110 | color: var(--error-main); 111 | } 112 | 113 | /* ----- Interactivity ----- */ 114 | .cursor-pointer { 115 | cursor: pointer; 116 | } 117 | 118 | /* ----- container ----- */ 119 | .container { 120 | max-width: var(--grid-maxWidth); 121 | margin: 0 auto; 122 | padding: 0 var(--sp-3); 123 | width: 100%; 124 | } 125 | 126 | /* ----- Flexbox ----- */ 127 | .flex { 128 | display: flex; 129 | } 130 | 131 | .flex-row { 132 | flex-direction: row; 133 | } 134 | 135 | .flex-col { 136 | flex-direction: column; 137 | } 138 | 139 | .flex-1 { 140 | flex: 1; 141 | } 142 | 143 | .flex-2 { 144 | flex: 2; 145 | } 146 | 147 | .flex-grow-1 { 148 | flex-grow: 1; 149 | } 150 | 151 | .flex-grow-2 { 152 | flex-grow: 2; 153 | } 154 | 155 | .justify-start { 156 | justify-content: flex-start; 157 | } 158 | 159 | .justify-end { 160 | justify-content: flex-end; 161 | } 162 | 163 | .justify-center { 164 | justify-content: center; 165 | } 166 | 167 | .justify-between { 168 | justify-content: space-between; 169 | } 170 | 171 | .justify-around { 172 | justify-content: space-around; 173 | } 174 | 175 | .justify-evenly { 176 | justify-content: space-evenly; 177 | } 178 | 179 | .items-start { 180 | align-items: flex-start; 181 | } 182 | 183 | .items-end { 184 | align-items: flex-end; 185 | } 186 | 187 | .items-center { 188 | align-items: center; 189 | } 190 | 191 | .items-baseline { 192 | align-items: baseline; 193 | } 194 | 195 | .items-stretch { 196 | align-items: stretch; 197 | } 198 | 199 | /* ----- Sizing ----- */ 200 | .h-full { 201 | height: 100%; 202 | } 203 | 204 | .h-screen { 205 | height: 100vh; 206 | } 207 | 208 | .min-h-0 { 209 | min-height: 0; 210 | } 211 | 212 | .w-320 { 213 | width: var(--px-320); 214 | } 215 | 216 | .w-400 { 217 | width: var(--px-400); 218 | } 219 | 220 | .w-640 { 221 | width: 640px; 222 | } 223 | 224 | .w-full { 225 | width: 100%; 226 | } 227 | 228 | .w-screen { 229 | width: 100vh; 230 | } 231 | 232 | .max-w-400 { 233 | max-width: var(--px-400); 234 | } 235 | 236 | /* ----- Margin ----- */ 237 | .m-0 { 238 | margin: 0; 239 | } 240 | 241 | .m-1 { 242 | margin: var(--sp-1); 243 | } 244 | 245 | .m-2 { 246 | margin: var(--sp-2); 247 | } 248 | 249 | .m-3 { 250 | margin: var(--sp-3); 251 | } 252 | 253 | .mt-0 { 254 | margin-top: 0; 255 | } 256 | 257 | .mt-1 { 258 | margin-top: var(--sp-1); 259 | } 260 | 261 | .mt-2 { 262 | margin-top: var(--sp-2); 263 | } 264 | 265 | .mt-3 { 266 | margin-top: var(--sp-3); 267 | } 268 | 269 | .mt-4 { 270 | margin-top: var(--sp-4); 271 | } 272 | 273 | .mt-5 { 274 | margin-top: var(--sp-5); 275 | } 276 | 277 | .mb-0 { 278 | margin-bottom: 0; 279 | } 280 | 281 | .mb-1 { 282 | margin-bottom: var(--sp-1); 283 | } 284 | 285 | .mb-2 { 286 | margin-bottom: var(--sp-2); 287 | } 288 | 289 | .mb-3 { 290 | margin-bottom: var(--sp-3); 291 | } 292 | 293 | .mb-4 { 294 | margin-bottom: var(--sp-4); 295 | } 296 | 297 | .mb-5 { 298 | margin-bottom: var(--sp-5); 299 | } 300 | 301 | .ml-0 { 302 | left: 0; 303 | } 304 | 305 | .ml-1 { 306 | margin-left: var(--sp-1); 307 | } 308 | 309 | .ml-2 { 310 | margin-left: var(--sp-2); 311 | } 312 | 313 | .ml-3 { 314 | margin-left: var(--sp-3); 315 | } 316 | 317 | .ml-4 { 318 | margin-left: var(--sp-4); 319 | } 320 | 321 | .my-2 { 322 | margin-top: var(--sp-2); 323 | margin-bottom: var(--sp-2); 324 | } 325 | 326 | /* ----- Padding ----- */ 327 | .p-0 { 328 | padding: 0; 329 | } 330 | 331 | .p-1 { 332 | padding: var(--sp-1); 333 | } 334 | 335 | .p-2 { 336 | padding: var(--sp-2); 337 | } 338 | 339 | .p-3 { 340 | padding: var(--sp-3); 341 | } 342 | 343 | .px-1 { 344 | padding-left: var(--sp-1); 345 | padding-right: var(--sp-1); 346 | } 347 | 348 | .px-2 { 349 | padding-left: var(--sp-2); 350 | padding-right: var(--sp-2); 351 | } 352 | 353 | .px-3 { 354 | padding-left: var(--sp-3); 355 | padding-right: var(--sp-3); 356 | } 357 | 358 | .px-4 { 359 | padding-left: var(--sp-4); 360 | padding-right: var(--sp-4); 361 | } 362 | 363 | .py-1 { 364 | padding-top: var(--sp-1); 365 | padding-bottom: var(--sp-1); 366 | } 367 | 368 | .py-2 { 369 | padding-top: var(--sp-2); 370 | padding-bottom: var(--sp-2); 371 | } 372 | 373 | .py-3 { 374 | padding-top: var(--sp-3); 375 | padding-bottom: var(--sp-3); 376 | } 377 | 378 | .py-4 { 379 | padding-top: var(--sp-4); 380 | padding-bottom: var(--sp-4); 381 | } 382 | 383 | /* ----- Buttons ----- */ 384 | .btn { 385 | border: none; 386 | border-radius: var(--px-8); 387 | padding: var(--px-10) var(--px-40); 388 | font-size: var(--font-size-sm); 389 | font-weight: 600; 390 | } 391 | 392 | .btn-sm { 393 | padding: var(--px-6) var(--px-40); 394 | } 395 | 396 | .btn-lg { 397 | font-size: var(--font-size-xl); 398 | line-height: 1.5; 399 | } 400 | 401 | .btn-primary { 402 | background-color: var(--primary-main); 403 | color: var(--text-primary-default); 404 | } 405 | 406 | .btn-primary:hover { 407 | background-color: var(--primary-600); 408 | } 409 | 410 | .btn-secondary { 411 | background-color: var(--secondary-main); 412 | color: var(--text-secondary-default); 413 | } 414 | 415 | .btn-secondary:hover { 416 | background-color: var(--secondary-500); 417 | } 418 | 419 | .btn-outline-secondary { 420 | background-color: transparent; 421 | color: var(--text-secondary-default); 422 | border: 1px solid var(--text-secondary-default); 423 | } 424 | 425 | /* ----- Dividers ----- */ 426 | .divider-left { 427 | border-left: 1px solid var(--grey-300); 428 | } 429 | 430 | /* ----- Borders ----- */ 431 | .rounded { 432 | border-radius: var(--px-4); 433 | } 434 | 435 | /* ----- Overflow ----- */ 436 | .overflow-auto { 437 | overflow: auto; 438 | } 439 | 440 | /* ----- Backgrounds ----- */ 441 | .bg-primary-50 { 442 | background-color: var(--primary-50); 443 | } 444 | 445 | .bg-primary-main { 446 | background-color: var(--primary-main); 447 | } 448 | 449 | .bg-secondary-50 { 450 | background-color: var(--secondary-50); 451 | } 452 | 453 | .bg-secondary-main { 454 | background-color: var(--secondary-main); 455 | } 456 | 457 | /* ----- Paper ----- */ 458 | .paper { 459 | background-color: var(--bg-paper); 460 | } 461 | 462 | .border-paper { 463 | border: 1px solid var(--neutral-100); 464 | } 465 | 466 | /* ----- Forms ----- */ 467 | label { 468 | display: inline-block; 469 | margin-bottom: var(--sp-1); 470 | } 471 | 472 | input { 473 | display: block; 474 | width: 100%; 475 | padding: var(--px-8); 476 | font-size: var(--font-size-base); 477 | border-radius: var(--px-4); 478 | border: 1px solid var(--grey-300); 479 | transition: all 0.2s ease; 480 | } 481 | 482 | :root { 483 | /* ----- Color Palette ----- */ 484 | --black: #000000; 485 | --white: #ffffff; 486 | 487 | --grey-50: #fafafa; 488 | --grey-100: #f5f5f5; 489 | --grey-200: #eeeeee; 490 | --grey-300: #e0e0e0; 491 | --grey-400: #bdbdbd; 492 | --grey-500: #9e9e9e; 493 | --grey-600: #757575; 494 | --grey-700: #616161; 495 | --grey-800: #424242; 496 | --grey-900: #212121; 497 | 498 | --primary-50: #dceefb; 499 | --primary-100: #b6e0fe; 500 | --primary-200: #84c5f4; 501 | --primary-300: #62b0e8; 502 | --primary-400: #4098d7; 503 | --primary-500: #2680c2; 504 | --primary-600: #186faf; 505 | --primary-700: #0f609b; 506 | --primary-800: #0a558c; 507 | --primary-900: #003e6b; 508 | 509 | --secondary-50: #fffbea; 510 | --secondary-100: #fff3c4; 511 | --secondary-200: #fce588; 512 | --secondary-300: #fadb5f; 513 | --secondary-400: #f7c948; 514 | --secondary-500: #f0b429; 515 | --secondary-600: #de911d; 516 | --secondary-700: #cb6e17; 517 | --secondary-800: #b44d12; 518 | --secondary-900: #8d2b0b; 519 | 520 | --neutral-50: #f0f4f8; 521 | --neutral-100: #d9e2ec; 522 | --neutral-200: #bcccdc; 523 | --neutral-300: #9fb3c8; 524 | --neutral-400: #829ab1; 525 | --neutral-500: #627d98; 526 | --neutral-600: #486581; 527 | --neutral-700: #334e68; 528 | --neutral-800: #243b53; 529 | --neutral-900: #102a43; 530 | 531 | --success-light: #4caf50; 532 | --success-main: #2e7d32; 533 | --success-dark: #1b5e20; 534 | 535 | --info-light: #03a9f4; 536 | --info-main: #0288d1; 537 | --info-dark: #01579b; 538 | 539 | --warning-light: #ff9800; 540 | --warning-main: #ed6c02; 541 | --warning-dark: #e65100; 542 | 543 | --error-light: #ef5350; 544 | --error-main: #d32f2f; 545 | --error-dark: #c62828; 546 | 547 | --bg-default: var(--grey-50); 548 | --bg-paper: var(--white); 549 | 550 | --primary-light: var(--primary-500); 551 | --primary-main: var(--primary-800); 552 | --primary-dark: var(--primary-900); 553 | 554 | --secondary-light: var(--secondary-200); 555 | --secondary-main: var(--secondary-400); 556 | --secondary-dark: var(--secondary-800); 557 | 558 | --neutral-light: var(--neutral-50); 559 | --neutral-main: var(--neutral-600); 560 | --neutral-dark: var(--neutral-900); 561 | 562 | /* text colors on normal background */ 563 | --text-default: var(--neutral-900); 564 | --text-muted: var(--neutral-600); 565 | 566 | /* text colors on primary background */ 567 | --text-primary-default: var(--white); 568 | --text-primary-muted: var(--neutral-200); 569 | 570 | /* text colors on secondary background */ 571 | --text-secondary-default: var(--neutral-900); 572 | 573 | /* ----- pixel to rem conversion based on 16px browser default size ----- */ 574 | --px-2: 0.125rem; 575 | --px-4: 0.25rem; 576 | --px-6: 0.375rem; 577 | --px-8: 0.5rem; 578 | --px-10: 0.625rem; 579 | --px-12: 0.75rem; 580 | --px-14: 0.875rem; 581 | --px-16: 1rem; 582 | --px-18: 1.125rem; 583 | --px-20: 1.25rem; 584 | --px-22: 1.375rem; 585 | --px-24: 1.5rem; 586 | --px-32: 2rem; 587 | --px-40: 2.5rem; 588 | --px-48: 3rem; 589 | --px-56: 3.5rem; 590 | --px-320: 20rem; 591 | --px-400: 25rem; 592 | --px-1280: 80rem; 593 | 594 | /* ----- Spacing ----- */ 595 | --sp-1: var(--px-8); 596 | --sp-2: var(--px-16); 597 | --sp-3: var(--px-24); 598 | --sp-4: var(--px-32); 599 | --sp-5: var(--px-40); 600 | --sp-6: var(--px-48); 601 | 602 | /* ----- Font Size ----- */ 603 | --font-size-xs: var(--px-12); 604 | --font-size-sm: var(--px-14); 605 | --font-size-base: var(--px-16); 606 | --font-size-lg: var(--px-18); 607 | --font-size-xl: var(--px-20); 608 | --font-size-2xl: var(--px-24); 609 | --font-size-3xl: var(--px-32); 610 | 611 | --grid-maxWidth: var(--px-1280); 612 | --grid-gutter: var(--px-20); 613 | } 614 | -------------------------------------------------------------------------------- /app/utils/Constants.ts: -------------------------------------------------------------------------------- 1 | export const API_URL = 'http://localhost:8080'; 2 | -------------------------------------------------------------------------------- /app/utils/DateUtils.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * formats an ISO 8601 formatted date to local date and time 3 | * 4 | * Examples: 5 | * formatISODate('2021-01-01T14:00:00.000Z') => 6 | */ 7 | const formatISODate = (isoDate: string): string => { 8 | return new Date(isoDate).toLocaleDateString('en-US', { 9 | day: '2-digit', 10 | month: '2-digit', 11 | year: 'numeric', 12 | }); 13 | }; 14 | 15 | export const DateUtils = { 16 | formatISODate, 17 | }; 18 | -------------------------------------------------------------------------------- /app/utils/FormUtils.ts: -------------------------------------------------------------------------------- 1 | import { ValidationError } from 'yup'; 2 | 3 | export type FormErrors = { [path: string]: string }; 4 | 5 | export function yupToFormErrors(yupError: ValidationError): FormErrors { 6 | let errors: FormErrors = {}; 7 | 8 | for (let err of yupError?.inner) { 9 | // allow only the first error per path, ignore subsequent errors 10 | if (err.path && !errors.hasOwnProperty(err.path)) { 11 | errors[err.path] = err.message; 12 | } 13 | } 14 | 15 | return errors; 16 | } 17 | -------------------------------------------------------------------------------- /app/utils/README.md: -------------------------------------------------------------------------------- 1 | # utils 2 | 3 | This folder contains utilities and constants that are reused across application 4 | features. 5 | -------------------------------------------------------------------------------- /app/utils/StringUtils.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Based on https://github.com/nareshbhatia/react-force 3 | */ 4 | 5 | /** 6 | * Returns an error message from any passed object 7 | */ 8 | const errorToString = (error: any) => { 9 | let result = 'Something went wrong'; 10 | 11 | if (error instanceof Error) { 12 | result = error.message; 13 | } else if (typeof error === 'string') { 14 | result = error; 15 | } 16 | 17 | return result; 18 | }; 19 | 20 | /** 21 | * isBlank 22 | * ------- 23 | * Returns true if string is undefined or null or it's trimmed length is 0. 24 | * So whitespace-only strings will return true. 25 | * 26 | * Examples: 27 | * isBlank(undefined) // => true 28 | * isBlank(null) // => true 29 | * isBlank('') // => true 30 | * isBlank(' ') // => true 31 | * isBlank('bob') // => false 32 | * isBlank(' bob ') // => false 33 | */ 34 | const isBlank = (str: string | undefined | null): boolean => { 35 | return !str || str.trim().length === 0; 36 | }; 37 | 38 | /** 39 | * isEmpty 40 | * ------- 41 | * Returns true if string is undefined or null or it's length is 0 42 | * So whitespace-only strings will return false. 43 | * 44 | * Examples: 45 | * isEmpty(undefined) // => true 46 | * isEmpty(null) // => true 47 | * isEmpty('') // => true 48 | * isEmpty(' ') // => false 49 | * isEmpty('bob') // => false 50 | * isEmpty(' bob ') // => false 51 | */ 52 | const isEmpty = (str: string | undefined | null): boolean => { 53 | return !str || str.length === 0; 54 | }; 55 | 56 | export const StringUtils = { 57 | errorToString, 58 | isBlank, 59 | isEmpty, 60 | }; 61 | -------------------------------------------------------------------------------- /app/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Constants'; 2 | export * from './DateUtils'; 3 | export * from './FormUtils'; 4 | export * from './StringUtils'; 5 | export * from './yupLocale'; 6 | -------------------------------------------------------------------------------- /app/utils/yupLocale.ts: -------------------------------------------------------------------------------- 1 | // @ts-nocheck (to ignore typechecking on validation function parameters) 2 | /* eslint-disable no-template-curly-in-string */ 3 | export const yupLocale = { 4 | mixed: { 5 | default: 'Field is invalid', 6 | required: 'Field is required', 7 | notType: 'Must be a ${type}', 8 | }, 9 | string: { 10 | email: 'Email is invalid', 11 | min: 'Must be at least ${min} characters', 12 | max: 'Must be at least ${max} characters', 13 | }, 14 | number: {}, 15 | boolean: {}, 16 | }; 17 | -------------------------------------------------------------------------------- /assets/screenshot-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nareshbhatia/react-test-shop-remix/03f6cc3c76e57f2d5eb778e968b15bdf1f4e08d7/assets/screenshot-home.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "remix-app-template", 4 | "description": "", 5 | "license": "", 6 | "scripts": { 7 | "build": "remix build", 8 | "dev": "remix dev", 9 | "format": "prettier --write README.md 'app/**/{*.md,*.json,*.css,*.ts*}'", 10 | "postinstall": "remix setup node", 11 | "start": "remix-serve build" 12 | }, 13 | "dependencies": { 14 | "@react-force/number-utils": "^2.1.0", 15 | "@remix-run/react": "^1.0.4", 16 | "@remix-run/serve": "^1.0.4", 17 | "react": "^17.0.2", 18 | "react-dom": "^17.0.2", 19 | "react-icons": "^4.3.1", 20 | "remix": "^1.0.4", 21 | "yup": "^0.32.11" 22 | }, 23 | "devDependencies": { 24 | "@remix-run/dev": "^1.0.4", 25 | "@types/react": "^17.0.24", 26 | "@types/react-dom": "^17.0.9", 27 | "@types/yup": "^0.29.13", 28 | "prettier": "^2.4.1", 29 | "typescript": "^4.1.2" 30 | }, 31 | "engines": { 32 | "node": ">=14" 33 | }, 34 | "sideEffects": false 35 | } 36 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nareshbhatia/react-test-shop-remix/03f6cc3c76e57f2d5eb778e968b15bdf1f4e08d7/public/favicon.ico -------------------------------------------------------------------------------- /remix.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {import('@remix-run/dev/config').AppConfig} 3 | */ 4 | module.exports = { 5 | appDirectory: "app", 6 | browserBuildDirectory: "public/build", 7 | publicPath: "/build/", 8 | serverBuildDirectory: "build", 9 | devServerPort: 8002 10 | }; 11 | -------------------------------------------------------------------------------- /remix.env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["remix.env.d.ts", "**/*.ts", "**/*.tsx"], 3 | "compilerOptions": { 4 | "lib": ["DOM", "DOM.Iterable", "ES2019"], 5 | "esModuleInterop": true, 6 | "jsx": "react-jsx", 7 | "moduleResolution": "node", 8 | "resolveJsonModule": true, 9 | "target": "ES2019", 10 | "strict": true, 11 | "paths": { 12 | "~/*": ["./app/*"] 13 | }, 14 | 15 | // Remix takes care of building everything in `remix build`. 16 | "noEmit": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.16.0" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" 8 | integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== 9 | dependencies: 10 | "@babel/highlight" "^7.16.0" 11 | 12 | "@babel/helper-validator-identifier@^7.15.7": 13 | version "7.15.7" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" 15 | integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== 16 | 17 | "@babel/highlight@^7.16.0": 18 | version "7.16.0" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" 20 | integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.15.7" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@babel/runtime@^7.15.4", "@babel/runtime@^7.7.6": 27 | version "7.16.3" 28 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" 29 | integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== 30 | dependencies: 31 | regenerator-runtime "^0.13.4" 32 | 33 | "@gar/promisify@^1.0.1": 34 | version "1.1.2" 35 | resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" 36 | integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== 37 | 38 | "@npmcli/fs@^1.0.0": 39 | version "1.0.0" 40 | resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" 41 | integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== 42 | dependencies: 43 | "@gar/promisify" "^1.0.1" 44 | semver "^7.3.5" 45 | 46 | "@npmcli/move-file@^1.0.1": 47 | version "1.1.2" 48 | resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" 49 | integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== 50 | dependencies: 51 | mkdirp "^1.0.4" 52 | rimraf "^3.0.2" 53 | 54 | "@react-force/number-utils@^2.1.0": 55 | version "2.1.0" 56 | resolved "https://registry.yarnpkg.com/@react-force/number-utils/-/number-utils-2.1.0.tgz#a9b6e848917da9fffe943af548533909638661ab" 57 | integrity sha512-P4fcS9PowV+vCFkOse3cljWpzzc6wB23nZpwaqG21kQ2i3ESpMTWg8c/XEC1ma3I1d51trL8OM725FrYa1PSjA== 58 | dependencies: 59 | numeral "^2.0.6" 60 | tslib "^2.0.0" 61 | 62 | "@remix-run/dev@^1.0.4": 63 | version "1.0.6" 64 | resolved "https://registry.yarnpkg.com/@remix-run/dev/-/dev-1.0.6.tgz#7436c74dcfb51109fac5fc748671bc5608c7c918" 65 | integrity sha512-DlF8Km9V3jTsJwLPLIwf9Z49HycPBO1lHVHxPVpKH8XSXwg9r0y9IlLxjp7RhQ5aZQcaneva+tHdQ6ZOX4XqpQ== 66 | dependencies: 67 | cacache "^15.0.5" 68 | chokidar "^3.5.1" 69 | esbuild "0.13.14" 70 | fs-extra "^10.0.0" 71 | lodash.debounce "^4.0.8" 72 | meow "^7.1.1" 73 | pretty-ms "^7.0.1" 74 | read-package-json-fast "^2.0.2" 75 | remark-frontmatter "^4.0.0" 76 | remark-mdx-frontmatter "^1.0.1" 77 | signal-exit "^3.0.3" 78 | ws "^7.4.5" 79 | xdm "^2.0.0" 80 | 81 | "@remix-run/express@1.0.6": 82 | version "1.0.6" 83 | resolved "https://registry.yarnpkg.com/@remix-run/express/-/express-1.0.6.tgz#e96aaffb18be7ffa46cc92bfd06a690407ee0f04" 84 | integrity sha512-fAmjVDXyE01wnfSfOTWx6oNcKdY4GIykYIbdPvi4VZM0sxegK3Fxo6i8EFas5a7BRDYUhXpop0GFqhy3kZGlZQ== 85 | dependencies: 86 | "@remix-run/node" "1.0.6" 87 | 88 | "@remix-run/node@1.0.6": 89 | version "1.0.6" 90 | resolved "https://registry.yarnpkg.com/@remix-run/node/-/node-1.0.6.tgz#d3b158a4a2680895a101af014384caf2f3a94ba3" 91 | integrity sha512-27JrjqNFg8W6nlsWXtvBR15DyICpsgDqhCF+g3Sweb9Y1IIadhhdX1ijCGsXxuLelsS1IzZtwsTAS2G0XiXbuw== 92 | dependencies: 93 | "@remix-run/server-runtime" "1.0.6" 94 | "@types/node-fetch" "^2.5.12" 95 | cookie-signature "^1.1.0" 96 | node-fetch "^2.6.1" 97 | source-map "^0.7.3" 98 | 99 | "@remix-run/react@^1.0.4": 100 | version "1.0.6" 101 | resolved "https://registry.yarnpkg.com/@remix-run/react/-/react-1.0.6.tgz#80b133f4e0b2d0234e4296ea25ecf5bbd6a5e293" 102 | integrity sha512-PkFWmSZPB7fWyUPYo5SXIGVLgAcRsyIwv6Yu2rBejsSWFLgrpg6n+lmzroUynIA/wOOqj/3yVYHbUcmsTg0EiQ== 103 | dependencies: 104 | react-router-dom "^6.0.2" 105 | 106 | "@remix-run/serve@^1.0.4": 107 | version "1.0.6" 108 | resolved "https://registry.yarnpkg.com/@remix-run/serve/-/serve-1.0.6.tgz#dc0cd8680ab0af6d4d6df8fce1a37b8b5594df80" 109 | integrity sha512-whuAXVqUpzK+MNNyp6Ig/nvefy+ZfHv2VYvuPBLPHCKKNuRz1nKRspqIbdNoSpU34s7lbw1v5biNEapCuoKYTw== 110 | dependencies: 111 | "@remix-run/express" "1.0.6" 112 | compression "^1.7.4" 113 | express "^4.17.1" 114 | morgan "^1.10.0" 115 | 116 | "@remix-run/server-runtime@1.0.6": 117 | version "1.0.6" 118 | resolved "https://registry.yarnpkg.com/@remix-run/server-runtime/-/server-runtime-1.0.6.tgz#786ea793d6b3c8a13a37208eeba75dc9dbbb67c6" 119 | integrity sha512-dQBVxLriMY/2yDeVrb5N3ra//iaXSaN8Crg7ULtXYW+lPcvKOmjiL+k9QdpZOytsBQzpb1Vain3vrbPJbgmTag== 120 | dependencies: 121 | "@types/cookie" "^0.4.0" 122 | cookie "^0.4.1" 123 | jsesc "^3.0.1" 124 | react-router-dom "^6.0.2" 125 | set-cookie-parser "^2.4.8" 126 | source-map "^0.7.3" 127 | 128 | "@rollup/pluginutils@^4.0.0": 129 | version "4.1.1" 130 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" 131 | integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== 132 | dependencies: 133 | estree-walker "^2.0.1" 134 | picomatch "^2.2.2" 135 | 136 | "@sindresorhus/is@^4.0.0": 137 | version "4.2.0" 138 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.2.0.tgz#667bfc6186ae7c9e0b45a08960c551437176e1ca" 139 | integrity sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw== 140 | 141 | "@szmarczak/http-timer@^4.0.5": 142 | version "4.0.6" 143 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" 144 | integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== 145 | dependencies: 146 | defer-to-connect "^2.0.0" 147 | 148 | "@types/acorn@^4.0.0": 149 | version "4.0.6" 150 | resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22" 151 | integrity sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ== 152 | dependencies: 153 | "@types/estree" "*" 154 | 155 | "@types/cacheable-request@^6.0.1": 156 | version "6.0.2" 157 | resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" 158 | integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== 159 | dependencies: 160 | "@types/http-cache-semantics" "*" 161 | "@types/keyv" "*" 162 | "@types/node" "*" 163 | "@types/responselike" "*" 164 | 165 | "@types/cookie@^0.4.0": 166 | version "0.4.1" 167 | resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" 168 | integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== 169 | 170 | "@types/debug@^4.0.0": 171 | version "4.1.7" 172 | resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" 173 | integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== 174 | dependencies: 175 | "@types/ms" "*" 176 | 177 | "@types/estree-jsx@^0.0.1": 178 | version "0.0.1" 179 | resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-0.0.1.tgz#c36d7a1afeb47a95a8ee0b7bc8bc705db38f919d" 180 | integrity sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A== 181 | dependencies: 182 | "@types/estree" "*" 183 | 184 | "@types/estree@*", "@types/estree@^0.0.50": 185 | version "0.0.50" 186 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" 187 | integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== 188 | 189 | "@types/estree@^0.0.46": 190 | version "0.0.46" 191 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" 192 | integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== 193 | 194 | "@types/hast@^2.0.0": 195 | version "2.3.4" 196 | resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" 197 | integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== 198 | dependencies: 199 | "@types/unist" "*" 200 | 201 | "@types/http-cache-semantics@*": 202 | version "4.0.1" 203 | resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" 204 | integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== 205 | 206 | "@types/keyv@*": 207 | version "3.1.3" 208 | resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41" 209 | integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg== 210 | dependencies: 211 | "@types/node" "*" 212 | 213 | "@types/lodash@^4.14.175": 214 | version "4.14.177" 215 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.177.tgz#f70c0d19c30fab101cad46b52be60363c43c4578" 216 | integrity sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw== 217 | 218 | "@types/mdast@^3.0.0": 219 | version "3.0.10" 220 | resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" 221 | integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== 222 | dependencies: 223 | "@types/unist" "*" 224 | 225 | "@types/mdurl@^1.0.0": 226 | version "1.0.2" 227 | resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" 228 | integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== 229 | 230 | "@types/minimist@^1.2.0": 231 | version "1.2.2" 232 | resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" 233 | integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== 234 | 235 | "@types/ms@*": 236 | version "0.7.31" 237 | resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" 238 | integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== 239 | 240 | "@types/node-fetch@^2.5.12": 241 | version "2.5.12" 242 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" 243 | integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== 244 | dependencies: 245 | "@types/node" "*" 246 | form-data "^3.0.0" 247 | 248 | "@types/node@*": 249 | version "16.11.10" 250 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.10.tgz#2e3ad0a680d96367103d3e670d41c2fed3da61ae" 251 | integrity sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA== 252 | 253 | "@types/normalize-package-data@^2.4.0": 254 | version "2.4.1" 255 | resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" 256 | integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== 257 | 258 | "@types/prop-types@*": 259 | version "15.7.4" 260 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" 261 | integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== 262 | 263 | "@types/react-dom@^17.0.9": 264 | version "17.0.11" 265 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" 266 | integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q== 267 | dependencies: 268 | "@types/react" "*" 269 | 270 | "@types/react@*", "@types/react@^17.0.24": 271 | version "17.0.37" 272 | resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.37.tgz#6884d0aa402605935c397ae689deed115caad959" 273 | integrity sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg== 274 | dependencies: 275 | "@types/prop-types" "*" 276 | "@types/scheduler" "*" 277 | csstype "^3.0.2" 278 | 279 | "@types/responselike@*", "@types/responselike@^1.0.0": 280 | version "1.0.0" 281 | resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" 282 | integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== 283 | dependencies: 284 | "@types/node" "*" 285 | 286 | "@types/scheduler@*": 287 | version "0.16.2" 288 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" 289 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== 290 | 291 | "@types/unist@*", "@types/unist@^2.0.0": 292 | version "2.0.6" 293 | resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" 294 | integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== 295 | 296 | "@types/yup@^0.29.13": 297 | version "0.29.13" 298 | resolved "https://registry.yarnpkg.com/@types/yup/-/yup-0.29.13.tgz#21b137ba60841307a3c8a1050d3bf4e63ad561e9" 299 | integrity sha512-qRyuv+P/1t1JK1rA+elmK1MmCL1BapEzKKfbEhDBV/LMMse4lmhZ/XbgETI39JveDJRpLjmToOI6uFtMW/WR2g== 300 | 301 | accepts@~1.3.5, accepts@~1.3.7: 302 | version "1.3.7" 303 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 304 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 305 | dependencies: 306 | mime-types "~2.1.24" 307 | negotiator "0.6.2" 308 | 309 | acorn-jsx@^5.0.0: 310 | version "5.3.2" 311 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 312 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 313 | 314 | acorn@^8.0.0: 315 | version "8.6.0" 316 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" 317 | integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== 318 | 319 | aggregate-error@^3.0.0: 320 | version "3.1.0" 321 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" 322 | integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== 323 | dependencies: 324 | clean-stack "^2.0.0" 325 | indent-string "^4.0.0" 326 | 327 | ansi-styles@^3.2.1: 328 | version "3.2.1" 329 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 330 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 331 | dependencies: 332 | color-convert "^1.9.0" 333 | 334 | anymatch@~3.1.2: 335 | version "3.1.2" 336 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 337 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 338 | dependencies: 339 | normalize-path "^3.0.0" 340 | picomatch "^2.0.4" 341 | 342 | argparse@^2.0.1: 343 | version "2.0.1" 344 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 345 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 346 | 347 | array-flatten@1.1.1: 348 | version "1.1.1" 349 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 350 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 351 | 352 | arrify@^1.0.1: 353 | version "1.0.1" 354 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 355 | integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= 356 | 357 | astring@^1.6.0: 358 | version "1.8.1" 359 | resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.1.tgz#a91c4afd4af3523e11f31242a3d5d9af62bb6cc6" 360 | integrity sha512-Aj3mbwVzj7Vve4I/v2JYOPFkCGM2YS7OqQTNSxmUR+LECRpokuPgAYghePgr6SALDo5bD5DlfbSaYjOzGJZOLQ== 361 | 362 | asynckit@^0.4.0: 363 | version "0.4.0" 364 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 365 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 366 | 367 | bail@^2.0.0: 368 | version "2.0.2" 369 | resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" 370 | integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== 371 | 372 | balanced-match@^1.0.0: 373 | version "1.0.2" 374 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 375 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 376 | 377 | basic-auth@~2.0.1: 378 | version "2.0.1" 379 | resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" 380 | integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== 381 | dependencies: 382 | safe-buffer "5.1.2" 383 | 384 | big.js@^5.2.2: 385 | version "5.2.2" 386 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" 387 | integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== 388 | 389 | binary-extensions@^2.0.0: 390 | version "2.2.0" 391 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 392 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 393 | 394 | bindings@^1.5.0: 395 | version "1.5.0" 396 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" 397 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 398 | dependencies: 399 | file-uri-to-path "1.0.0" 400 | 401 | body-parser@1.19.0: 402 | version "1.19.0" 403 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 404 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 405 | dependencies: 406 | bytes "3.1.0" 407 | content-type "~1.0.4" 408 | debug "2.6.9" 409 | depd "~1.1.2" 410 | http-errors "1.7.2" 411 | iconv-lite "0.4.24" 412 | on-finished "~2.3.0" 413 | qs "6.7.0" 414 | raw-body "2.4.0" 415 | type-is "~1.6.17" 416 | 417 | brace-expansion@^1.1.7: 418 | version "1.1.11" 419 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 420 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 421 | dependencies: 422 | balanced-match "^1.0.0" 423 | concat-map "0.0.1" 424 | 425 | braces@~3.0.2: 426 | version "3.0.2" 427 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 428 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 429 | dependencies: 430 | fill-range "^7.0.1" 431 | 432 | bytes@3.0.0: 433 | version "3.0.0" 434 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" 435 | integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= 436 | 437 | bytes@3.1.0: 438 | version "3.1.0" 439 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 440 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 441 | 442 | cacache@^15.0.5: 443 | version "15.3.0" 444 | resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" 445 | integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== 446 | dependencies: 447 | "@npmcli/fs" "^1.0.0" 448 | "@npmcli/move-file" "^1.0.1" 449 | chownr "^2.0.0" 450 | fs-minipass "^2.0.0" 451 | glob "^7.1.4" 452 | infer-owner "^1.0.4" 453 | lru-cache "^6.0.0" 454 | minipass "^3.1.1" 455 | minipass-collect "^1.0.2" 456 | minipass-flush "^1.0.5" 457 | minipass-pipeline "^1.2.2" 458 | mkdirp "^1.0.3" 459 | p-map "^4.0.0" 460 | promise-inflight "^1.0.1" 461 | rimraf "^3.0.2" 462 | ssri "^8.0.1" 463 | tar "^6.0.2" 464 | unique-filename "^1.1.1" 465 | 466 | cacheable-lookup@^5.0.3: 467 | version "5.0.4" 468 | resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" 469 | integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== 470 | 471 | cacheable-request@^7.0.2: 472 | version "7.0.2" 473 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" 474 | integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== 475 | dependencies: 476 | clone-response "^1.0.2" 477 | get-stream "^5.1.0" 478 | http-cache-semantics "^4.0.0" 479 | keyv "^4.0.0" 480 | lowercase-keys "^2.0.0" 481 | normalize-url "^6.0.1" 482 | responselike "^2.0.0" 483 | 484 | camelcase-keys@^6.2.2: 485 | version "6.2.2" 486 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" 487 | integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== 488 | dependencies: 489 | camelcase "^5.3.1" 490 | map-obj "^4.0.0" 491 | quick-lru "^4.0.1" 492 | 493 | camelcase@^5.0.0, camelcase@^5.3.1: 494 | version "5.3.1" 495 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 496 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 497 | 498 | chalk@^2.0.0: 499 | version "2.4.2" 500 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 501 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 502 | dependencies: 503 | ansi-styles "^3.2.1" 504 | escape-string-regexp "^1.0.5" 505 | supports-color "^5.3.0" 506 | 507 | character-entities-html4@^2.0.0: 508 | version "2.1.0" 509 | resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" 510 | integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== 511 | 512 | character-entities-legacy@^3.0.0: 513 | version "3.0.0" 514 | resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" 515 | integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== 516 | 517 | character-entities@^2.0.0: 518 | version "2.0.1" 519 | resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.1.tgz#98724833e1e27990dee0bd0f2b8a859c3476aac7" 520 | integrity sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ== 521 | 522 | character-reference-invalid@^2.0.0: 523 | version "2.0.1" 524 | resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" 525 | integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== 526 | 527 | chokidar@^3.5.1: 528 | version "3.5.2" 529 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" 530 | integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== 531 | dependencies: 532 | anymatch "~3.1.2" 533 | braces "~3.0.2" 534 | glob-parent "~5.1.2" 535 | is-binary-path "~2.1.0" 536 | is-glob "~4.0.1" 537 | normalize-path "~3.0.0" 538 | readdirp "~3.6.0" 539 | optionalDependencies: 540 | fsevents "~2.3.2" 541 | 542 | chownr@^2.0.0: 543 | version "2.0.0" 544 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" 545 | integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== 546 | 547 | clean-stack@^2.0.0: 548 | version "2.2.0" 549 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 550 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 551 | 552 | clone-response@^1.0.2: 553 | version "1.0.2" 554 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 555 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 556 | dependencies: 557 | mimic-response "^1.0.0" 558 | 559 | color-convert@^1.9.0: 560 | version "1.9.3" 561 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 562 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 563 | dependencies: 564 | color-name "1.1.3" 565 | 566 | color-name@1.1.3: 567 | version "1.1.3" 568 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 569 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 570 | 571 | combined-stream@^1.0.8: 572 | version "1.0.8" 573 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 574 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 575 | dependencies: 576 | delayed-stream "~1.0.0" 577 | 578 | comma-separated-tokens@^2.0.0: 579 | version "2.0.2" 580 | resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz#d4c25abb679b7751c880be623c1179780fe1dd98" 581 | integrity sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg== 582 | 583 | compressible@~2.0.16: 584 | version "2.0.18" 585 | resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" 586 | integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== 587 | dependencies: 588 | mime-db ">= 1.43.0 < 2" 589 | 590 | compression@^1.7.4: 591 | version "1.7.4" 592 | resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" 593 | integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== 594 | dependencies: 595 | accepts "~1.3.5" 596 | bytes "3.0.0" 597 | compressible "~2.0.16" 598 | debug "2.6.9" 599 | on-headers "~1.0.2" 600 | safe-buffer "5.1.2" 601 | vary "~1.1.2" 602 | 603 | concat-map@0.0.1: 604 | version "0.0.1" 605 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 606 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 607 | 608 | content-disposition@0.5.3: 609 | version "0.5.3" 610 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 611 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 612 | dependencies: 613 | safe-buffer "5.1.2" 614 | 615 | content-type@~1.0.4: 616 | version "1.0.4" 617 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 618 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 619 | 620 | cookie-signature@1.0.6: 621 | version "1.0.6" 622 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 623 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 624 | 625 | cookie-signature@^1.1.0: 626 | version "1.1.0" 627 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.1.0.tgz#cc94974f91fb9a9c1bb485e95fc2b7f4b120aff2" 628 | integrity sha512-Alvs19Vgq07eunykd3Xy2jF0/qSNv2u7KDbAek9H5liV1UMijbqFs5cycZvv5dVsvseT/U4H8/7/w8Koh35C4A== 629 | 630 | cookie@0.4.0: 631 | version "0.4.0" 632 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 633 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 634 | 635 | cookie@^0.4.1: 636 | version "0.4.1" 637 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" 638 | integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== 639 | 640 | csstype@^3.0.2: 641 | version "3.0.10" 642 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" 643 | integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== 644 | 645 | deasync@^0.1.0: 646 | version "0.1.24" 647 | resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.24.tgz#6ecc9c6ff9eba64a4f4572ae3c4db77fed09268a" 648 | integrity sha512-i98vg42xNfRZCymummMAN0rIcQ1gZFinSe3btvPIvy6JFTaeHcumeKybRo2HTv86nasfmT0nEgAn2ggLZhOCVA== 649 | dependencies: 650 | bindings "^1.5.0" 651 | node-addon-api "^1.7.1" 652 | 653 | debug@2.6.9: 654 | version "2.6.9" 655 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 656 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 657 | dependencies: 658 | ms "2.0.0" 659 | 660 | debug@^4.0.0: 661 | version "4.3.3" 662 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" 663 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 664 | dependencies: 665 | ms "2.1.2" 666 | 667 | decamelize-keys@^1.1.0: 668 | version "1.1.0" 669 | resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" 670 | integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= 671 | dependencies: 672 | decamelize "^1.1.0" 673 | map-obj "^1.0.0" 674 | 675 | decamelize@^1.1.0, decamelize@^1.2.0: 676 | version "1.2.0" 677 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 678 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 679 | 680 | decode-named-character-reference@^1.0.0: 681 | version "1.0.0" 682 | resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.0.tgz#334409015275c33fb1a3b55654866bb6cd108d29" 683 | integrity sha512-KTiXDlRp9MMm/nlgI8rDGKoNNKiTJBl0RPjnBM680m2HlgJEA4JTASspK44lsvE4GQJildMRFp2HdEBiG+nqng== 684 | dependencies: 685 | character-entities "^2.0.0" 686 | 687 | decompress-response@^6.0.0: 688 | version "6.0.0" 689 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 690 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 691 | dependencies: 692 | mimic-response "^3.1.0" 693 | 694 | defer-to-connect@^2.0.0: 695 | version "2.0.1" 696 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" 697 | integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== 698 | 699 | delayed-stream@~1.0.0: 700 | version "1.0.0" 701 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 702 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 703 | 704 | depd@~1.1.2: 705 | version "1.1.2" 706 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 707 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 708 | 709 | depd@~2.0.0: 710 | version "2.0.0" 711 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 712 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 713 | 714 | dequal@^2.0.0: 715 | version "2.0.2" 716 | resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" 717 | integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug== 718 | 719 | destroy@~1.0.4: 720 | version "1.0.4" 721 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 722 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 723 | 724 | diff@^5.0.0: 725 | version "5.0.0" 726 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 727 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 728 | 729 | ee-first@1.1.1: 730 | version "1.1.1" 731 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 732 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 733 | 734 | emojis-list@^3.0.0: 735 | version "3.0.0" 736 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" 737 | integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== 738 | 739 | encodeurl@~1.0.2: 740 | version "1.0.2" 741 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 742 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 743 | 744 | end-of-stream@^1.1.0: 745 | version "1.4.4" 746 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 747 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 748 | dependencies: 749 | once "^1.4.0" 750 | 751 | error-ex@^1.3.1: 752 | version "1.3.2" 753 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 754 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 755 | dependencies: 756 | is-arrayish "^0.2.1" 757 | 758 | esbuild-android-arm64@0.13.14: 759 | version "0.13.14" 760 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.14.tgz#c85083ece26be3d67e6c720e088968a98409e023" 761 | integrity sha512-Q+Xhfp827r+ma8/DJgpMRUbDZfefsk13oePFEXEIJ4gxFbNv5+vyiYXYuKm43/+++EJXpnaYmEnu4hAKbAWYbA== 762 | 763 | esbuild-darwin-64@0.13.14: 764 | version "0.13.14" 765 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.14.tgz#8e4e237ad847cc54a1d3a5caee26a746b9f0b81f" 766 | integrity sha512-YmOhRns6QBNSjpVdTahi/yZ8dscx9ai7a6OY6z5ACgOuQuaQ2Qk2qgJ0/siZ6LgD0gJFMV8UINFV5oky5TFNQQ== 767 | 768 | esbuild-darwin-arm64@0.13.14: 769 | version "0.13.14" 770 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.14.tgz#b3b5ebd40b2cb06ee0f6fb342dd4bdcca54ad273" 771 | integrity sha512-Lp00VTli2jqZghSa68fx3fEFCPsO1hK59RMo1PRap5RUjhf55OmaZTZYnCDI0FVlCtt+gBwX5qwFt4lc6tI1xg== 772 | 773 | esbuild-freebsd-64@0.13.14: 774 | version "0.13.14" 775 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.14.tgz#175ecb2fa8141428cf70ea2d5f4c27534bad53e0" 776 | integrity sha512-BKosI3jtvTfnmsCW37B1TyxMUjkRWKqopR0CE9AF2ratdpkxdR24Vpe3gLKNyWiZ7BE96/SO5/YfhbPUzY8wKw== 777 | 778 | esbuild-freebsd-arm64@0.13.14: 779 | version "0.13.14" 780 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.14.tgz#a7d64e41d1fa581f8db7775e5200f18e67d70c4d" 781 | integrity sha512-yd2uh0yf+fWv5114+SYTl4/1oDWtr4nN5Op+PGxAkMqHfYfLjFKpcxwCo/QOS/0NWqPVE8O41IYZlFhbEN2B8Q== 782 | 783 | esbuild-linux-32@0.13.14: 784 | version "0.13.14" 785 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.14.tgz#14bdd4f6b6cfd35c65c835894651ba335c2117da" 786 | integrity sha512-a8rOnS1oWSfkkYWXoD2yXNV4BdbDKA7PNVQ1klqkY9SoSApL7io66w5H44mTLsfyw7G6Z2vLlaLI2nz9MMAowA== 787 | 788 | esbuild-linux-64@0.13.14: 789 | version "0.13.14" 790 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.14.tgz#7fd56851b2982fdd0cd8447ee9858c2c5711708a" 791 | integrity sha512-yPZSoMs9W2MC3Dw+6kflKt5FfQm6Dicex9dGIr1OlHRsn3Hm7yGMUTctlkW53KknnZdOdcdd5upxvbxqymczVQ== 792 | 793 | esbuild-linux-arm64@0.13.14: 794 | version "0.13.14" 795 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.14.tgz#a55634d70679ba509adeafd68eebb9fd1ec5af6c" 796 | integrity sha512-Lvo391ln9PzC334e+jJ2S0Rt0cxP47eoH5gFyv/E8HhOnEJTvm7A+RRnMjjHnejELacTTfYgFGQYPjLsi/jObQ== 797 | 798 | esbuild-linux-arm@0.13.14: 799 | version "0.13.14" 800 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.14.tgz#bb96a99677e608b31ff61f37564326d38e846ca2" 801 | integrity sha512-8chZE4pkKRvJ/M/iwsNQ1KqsRg2RyU5eT/x2flNt/f8F2TVrDreR7I0HEeCR50wLla3B1C3wTIOzQBmjuc6uWg== 802 | 803 | esbuild-linux-mips64le@0.13.14: 804 | version "0.13.14" 805 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.14.tgz#6a55362a8fd1e593dea2ecc41877beed8b8184b9" 806 | integrity sha512-MZhgxbmrWbpY3TOE029O6l5tokG9+Yoj2hW7vdit/d/VnmneqeGrSHADuDL6qXM8L5jaCiaivb4VhsyVCpdAbQ== 807 | 808 | esbuild-linux-ppc64le@0.13.14: 809 | version "0.13.14" 810 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.14.tgz#9e0048587ece0a7f184ab147f20d077098045e7f" 811 | integrity sha512-un7KMwS7fX1Un6BjfSZxTT8L5cV/8Uf4SAhM7WYy2XF8o8TI+uRxxD03svZnRNIPsN2J5cl6qV4n7Iwz+yhhVw== 812 | 813 | esbuild-netbsd-64@0.13.14: 814 | version "0.13.14" 815 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.14.tgz#dcab16a4bbcfa16e2e8535dadc5f64fdc891c63b" 816 | integrity sha512-5ekKx/YbOmmlTeNxBjh38Uh5TGn5C4uyqN17i67k18pS3J+U2hTVD7rCxcFcRS1AjNWumkVL3jWqYXadFwMS0Q== 817 | 818 | esbuild-openbsd-64@0.13.14: 819 | version "0.13.14" 820 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.14.tgz#3c7453b155ebb68dc34d5aec3bd6505337bdda08" 821 | integrity sha512-9bzvwewHjct2Cv5XcVoE1yW5YTW12Sk838EYfA46abgnhxGoFSD1mFcaztp5HHC43AsF+hQxbSFG/RilONARUA== 822 | 823 | esbuild-sunos-64@0.13.14: 824 | version "0.13.14" 825 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.14.tgz#85addf5fef6b5db154a955d4f2e88953359d75ce" 826 | integrity sha512-mjMrZB76M6FmoiTvj/RGWilrioR7gVwtFBRVugr9qLarXMIU1W/pQx+ieEOtflrW61xo8w1fcxyHsVVGRvoQ0w== 827 | 828 | esbuild-windows-32@0.13.14: 829 | version "0.13.14" 830 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.14.tgz#f77f98f30a5c636c44db2428ecdf9bcbbaedb1a7" 831 | integrity sha512-GZa6mrx2rgfbH/5uHg0Rdw50TuOKbdoKCpEBitzmG5tsXBdce+cOL+iFO5joZc6fDVCLW3Y6tjxmSXRk/v20Hg== 832 | 833 | esbuild-windows-64@0.13.14: 834 | version "0.13.14" 835 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.14.tgz#bc778674c40d65150d12385e0f23eb3a0badbd0d" 836 | integrity sha512-Lsgqah24bT7ClHjLp/Pj3A9wxjhIAJyWQcrOV4jqXAFikmrp2CspA8IkJgw7HFjx6QrJuhpcKVbCAe/xw0i2yw== 837 | 838 | esbuild-windows-arm64@0.13.14: 839 | version "0.13.14" 840 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.14.tgz#91a8dad35ab2c4dd27cd83860742955b25a354d7" 841 | integrity sha512-KP8FHVlWGhM7nzYtURsGnskXb/cBCPTfj0gOKfjKq2tHtYnhDZywsUG57nk7TKhhK0fL11LcejHG3LRW9RF/9A== 842 | 843 | esbuild@0.13.14: 844 | version "0.13.14" 845 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.14.tgz#98a3f7f42809abdc2b57c84565d0f713382dc1a5" 846 | integrity sha512-xu4D+1ji9x53ocuomcY+KOrwAnWzhBu/wTEjpdgZ8I1c8i5vboYIeigMdzgY1UowYBKa2vZgVgUB32bu7gkxeg== 847 | optionalDependencies: 848 | esbuild-android-arm64 "0.13.14" 849 | esbuild-darwin-64 "0.13.14" 850 | esbuild-darwin-arm64 "0.13.14" 851 | esbuild-freebsd-64 "0.13.14" 852 | esbuild-freebsd-arm64 "0.13.14" 853 | esbuild-linux-32 "0.13.14" 854 | esbuild-linux-64 "0.13.14" 855 | esbuild-linux-arm "0.13.14" 856 | esbuild-linux-arm64 "0.13.14" 857 | esbuild-linux-mips64le "0.13.14" 858 | esbuild-linux-ppc64le "0.13.14" 859 | esbuild-netbsd-64 "0.13.14" 860 | esbuild-openbsd-64 "0.13.14" 861 | esbuild-sunos-64 "0.13.14" 862 | esbuild-windows-32 "0.13.14" 863 | esbuild-windows-64 "0.13.14" 864 | esbuild-windows-arm64 "0.13.14" 865 | 866 | escape-html@~1.0.3: 867 | version "1.0.3" 868 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 869 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 870 | 871 | escape-string-regexp@^1.0.5: 872 | version "1.0.5" 873 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 874 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 875 | 876 | estree-util-attach-comments@^2.0.0: 877 | version "2.0.0" 878 | resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-2.0.0.tgz#2c06d484dfcf841b5946bcb84d5412cbcd544e22" 879 | integrity sha512-kT9YVRvlt2ewPp9BazfIIgXMGsXOEpOm57bK8aa4F3eOEndMml2JAETjWaG3SZYHmC6axSNIzHGY718dYwIuVg== 880 | dependencies: 881 | "@types/estree" "^0.0.46" 882 | 883 | estree-util-build-jsx@^2.0.0: 884 | version "2.0.0" 885 | resolved "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-2.0.0.tgz#4903e2a923ebc791f86e78ec3687d01715dec902" 886 | integrity sha512-d49hPGqBCJF/bF06g1Ywg7zjH1mrrUdPPrixBlKBxcX4WvMYlUUJ8BkrwlzWc8/fm6XqGgk5jilhgeZBDEGwOQ== 887 | dependencies: 888 | "@types/estree-jsx" "^0.0.1" 889 | estree-util-is-identifier-name "^2.0.0" 890 | estree-walker "^3.0.0" 891 | 892 | estree-util-is-identifier-name@^1.0.0: 893 | version "1.1.0" 894 | resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-1.1.0.tgz#2e3488ea06d9ea2face116058864f6370b37456d" 895 | integrity sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ== 896 | 897 | estree-util-is-identifier-name@^2.0.0: 898 | version "2.0.0" 899 | resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.0.tgz#e2d3d2ae3032c017b2112832bfc5d8ba938c8010" 900 | integrity sha512-aXXZFVMnBBDRP81vS4YtAYJ0hUkgEsXea7lNKWCOeaAquGb1Jm2rcONPB5fpzwgbNxulTvrWuKnp9UElUGAKeQ== 901 | 902 | estree-util-value-to-estree@^1.0.0: 903 | version "1.3.0" 904 | resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz#1d3125594b4d6680f666644491e7ac1745a3df49" 905 | integrity sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw== 906 | dependencies: 907 | is-plain-obj "^3.0.0" 908 | 909 | estree-util-visit@^1.0.0: 910 | version "1.1.0" 911 | resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-1.1.0.tgz#c0ea7942c40ac7889a77b57a11e92f987744bc6f" 912 | integrity sha512-3lXJ4Us9j8TUif9cWcQy81t9p5OLasnDuuhrFiqb+XstmKC1d1LmrQWYsY49/9URcfHE64mPypDBaNK9NwWDPQ== 913 | dependencies: 914 | "@types/estree-jsx" "^0.0.1" 915 | "@types/unist" "^2.0.0" 916 | 917 | estree-walker@^2.0.1: 918 | version "2.0.2" 919 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 920 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 921 | 922 | estree-walker@^3.0.0: 923 | version "3.0.0" 924 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.0.tgz#ca4b284de9dffb255288c76a44870b360faf14f9" 925 | integrity sha512-s6ceX0NFiU/vKPiKvFdR83U1Zffu7upwZsGwpoqfg5rbbq1l50WQ5hCeIvM6E6oD4shUHCYMsiFPns4Jk0YfMQ== 926 | 927 | etag@~1.8.1: 928 | version "1.8.1" 929 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 930 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 931 | 932 | express@^4.17.1: 933 | version "4.17.1" 934 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 935 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 936 | dependencies: 937 | accepts "~1.3.7" 938 | array-flatten "1.1.1" 939 | body-parser "1.19.0" 940 | content-disposition "0.5.3" 941 | content-type "~1.0.4" 942 | cookie "0.4.0" 943 | cookie-signature "1.0.6" 944 | debug "2.6.9" 945 | depd "~1.1.2" 946 | encodeurl "~1.0.2" 947 | escape-html "~1.0.3" 948 | etag "~1.8.1" 949 | finalhandler "~1.1.2" 950 | fresh "0.5.2" 951 | merge-descriptors "1.0.1" 952 | methods "~1.1.2" 953 | on-finished "~2.3.0" 954 | parseurl "~1.3.3" 955 | path-to-regexp "0.1.7" 956 | proxy-addr "~2.0.5" 957 | qs "6.7.0" 958 | range-parser "~1.2.1" 959 | safe-buffer "5.1.2" 960 | send "0.17.1" 961 | serve-static "1.14.1" 962 | setprototypeof "1.1.1" 963 | statuses "~1.5.0" 964 | type-is "~1.6.18" 965 | utils-merge "1.0.1" 966 | vary "~1.1.2" 967 | 968 | extend@^3.0.0: 969 | version "3.0.2" 970 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 971 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 972 | 973 | fault@^2.0.0: 974 | version "2.0.1" 975 | resolved "https://registry.yarnpkg.com/fault/-/fault-2.0.1.tgz#d47ca9f37ca26e4bd38374a7c500b5a384755b6c" 976 | integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ== 977 | dependencies: 978 | format "^0.2.0" 979 | 980 | file-uri-to-path@1.0.0: 981 | version "1.0.0" 982 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 983 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 984 | 985 | fill-range@^7.0.1: 986 | version "7.0.1" 987 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 988 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 989 | dependencies: 990 | to-regex-range "^5.0.1" 991 | 992 | finalhandler@~1.1.2: 993 | version "1.1.2" 994 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 995 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 996 | dependencies: 997 | debug "2.6.9" 998 | encodeurl "~1.0.2" 999 | escape-html "~1.0.3" 1000 | on-finished "~2.3.0" 1001 | parseurl "~1.3.3" 1002 | statuses "~1.5.0" 1003 | unpipe "~1.0.0" 1004 | 1005 | find-up@^4.1.0: 1006 | version "4.1.0" 1007 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1008 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1009 | dependencies: 1010 | locate-path "^5.0.0" 1011 | path-exists "^4.0.0" 1012 | 1013 | form-data@^3.0.0: 1014 | version "3.0.1" 1015 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 1016 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 1017 | dependencies: 1018 | asynckit "^0.4.0" 1019 | combined-stream "^1.0.8" 1020 | mime-types "^2.1.12" 1021 | 1022 | format@^0.2.0: 1023 | version "0.2.2" 1024 | resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" 1025 | integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= 1026 | 1027 | forwarded@0.2.0: 1028 | version "0.2.0" 1029 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 1030 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 1031 | 1032 | fresh@0.5.2: 1033 | version "0.5.2" 1034 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 1035 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 1036 | 1037 | fs-extra@^10.0.0: 1038 | version "10.0.0" 1039 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" 1040 | integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== 1041 | dependencies: 1042 | graceful-fs "^4.2.0" 1043 | jsonfile "^6.0.1" 1044 | universalify "^2.0.0" 1045 | 1046 | fs-minipass@^2.0.0: 1047 | version "2.1.0" 1048 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" 1049 | integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== 1050 | dependencies: 1051 | minipass "^3.0.0" 1052 | 1053 | fs.realpath@^1.0.0: 1054 | version "1.0.0" 1055 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1056 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1057 | 1058 | fsevents@~2.3.2: 1059 | version "2.3.2" 1060 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1061 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1062 | 1063 | function-bind@^1.1.1: 1064 | version "1.1.1" 1065 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1066 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1067 | 1068 | get-stream@^5.1.0: 1069 | version "5.2.0" 1070 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 1071 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 1072 | dependencies: 1073 | pump "^3.0.0" 1074 | 1075 | glob-parent@~5.1.2: 1076 | version "5.1.2" 1077 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1078 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1079 | dependencies: 1080 | is-glob "^4.0.1" 1081 | 1082 | glob@^7.1.3, glob@^7.1.4: 1083 | version "7.2.0" 1084 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 1085 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 1086 | dependencies: 1087 | fs.realpath "^1.0.0" 1088 | inflight "^1.0.4" 1089 | inherits "2" 1090 | minimatch "^3.0.4" 1091 | once "^1.3.0" 1092 | path-is-absolute "^1.0.0" 1093 | 1094 | got@^11.0.0: 1095 | version "11.8.3" 1096 | resolved "https://registry.yarnpkg.com/got/-/got-11.8.3.tgz#f496c8fdda5d729a90b4905d2b07dbd148170770" 1097 | integrity sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg== 1098 | dependencies: 1099 | "@sindresorhus/is" "^4.0.0" 1100 | "@szmarczak/http-timer" "^4.0.5" 1101 | "@types/cacheable-request" "^6.0.1" 1102 | "@types/responselike" "^1.0.0" 1103 | cacheable-lookup "^5.0.3" 1104 | cacheable-request "^7.0.2" 1105 | decompress-response "^6.0.0" 1106 | http2-wrapper "^1.0.0-beta.5.2" 1107 | lowercase-keys "^2.0.0" 1108 | p-cancelable "^2.0.0" 1109 | responselike "^2.0.0" 1110 | 1111 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 1112 | version "4.2.8" 1113 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" 1114 | integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== 1115 | 1116 | hard-rejection@^2.1.0: 1117 | version "2.1.0" 1118 | resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" 1119 | integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== 1120 | 1121 | has-flag@^3.0.0: 1122 | version "3.0.0" 1123 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1124 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1125 | 1126 | has@^1.0.3: 1127 | version "1.0.3" 1128 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1129 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1130 | dependencies: 1131 | function-bind "^1.1.1" 1132 | 1133 | hast-util-to-estree@^2.0.0: 1134 | version "2.0.2" 1135 | resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-2.0.2.tgz#79c5bf588915610b3f0d47ca83a74dc0269c7dc2" 1136 | integrity sha512-UQrZVeBj6A9od0lpFvqHKNSH9zvDrNoyWKbveu1a2oSCXEDUI+3bnd6BoiQLPnLrcXXn/jzJ6y9hmJTTlvf8lQ== 1137 | dependencies: 1138 | "@types/estree-jsx" "^0.0.1" 1139 | "@types/hast" "^2.0.0" 1140 | "@types/unist" "^2.0.0" 1141 | comma-separated-tokens "^2.0.0" 1142 | estree-util-attach-comments "^2.0.0" 1143 | estree-util-is-identifier-name "^2.0.0" 1144 | hast-util-whitespace "^2.0.0" 1145 | mdast-util-mdx-expression "^1.0.0" 1146 | mdast-util-mdxjs-esm "^1.0.0" 1147 | property-information "^6.0.0" 1148 | space-separated-tokens "^2.0.0" 1149 | style-to-object "^0.3.0" 1150 | unist-util-position "^4.0.0" 1151 | zwitch "^2.0.0" 1152 | 1153 | hast-util-whitespace@^2.0.0: 1154 | version "2.0.0" 1155 | resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c" 1156 | integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg== 1157 | 1158 | history@^5.1.0: 1159 | version "5.1.0" 1160 | resolved "https://registry.yarnpkg.com/history/-/history-5.1.0.tgz#2e93c09c064194d38d52ed62afd0afc9d9b01ece" 1161 | integrity sha512-zPuQgPacm2vH2xdORvGGz1wQMuHSIB56yNAy5FnLuwOwgSYyPKptJtcMm6Ev+hRGeS+GzhbmRacHzvlESbFwDg== 1162 | dependencies: 1163 | "@babel/runtime" "^7.7.6" 1164 | 1165 | hosted-git-info@^2.1.4: 1166 | version "2.8.9" 1167 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" 1168 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== 1169 | 1170 | http-cache-semantics@^4.0.0: 1171 | version "4.1.0" 1172 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 1173 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 1174 | 1175 | http-errors@1.7.2: 1176 | version "1.7.2" 1177 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 1178 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 1179 | dependencies: 1180 | depd "~1.1.2" 1181 | inherits "2.0.3" 1182 | setprototypeof "1.1.1" 1183 | statuses ">= 1.5.0 < 2" 1184 | toidentifier "1.0.0" 1185 | 1186 | http-errors@~1.7.2: 1187 | version "1.7.3" 1188 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 1189 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 1190 | dependencies: 1191 | depd "~1.1.2" 1192 | inherits "2.0.4" 1193 | setprototypeof "1.1.1" 1194 | statuses ">= 1.5.0 < 2" 1195 | toidentifier "1.0.0" 1196 | 1197 | http2-wrapper@^1.0.0-beta.5.2: 1198 | version "1.0.3" 1199 | resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" 1200 | integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== 1201 | dependencies: 1202 | quick-lru "^5.1.1" 1203 | resolve-alpn "^1.0.0" 1204 | 1205 | iconv-lite@0.4.24: 1206 | version "0.4.24" 1207 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1208 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1209 | dependencies: 1210 | safer-buffer ">= 2.1.2 < 3" 1211 | 1212 | imurmurhash@^0.1.4: 1213 | version "0.1.4" 1214 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1215 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1216 | 1217 | indent-string@^4.0.0: 1218 | version "4.0.0" 1219 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 1220 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 1221 | 1222 | infer-owner@^1.0.4: 1223 | version "1.0.4" 1224 | resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" 1225 | integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== 1226 | 1227 | inflight@^1.0.4: 1228 | version "1.0.6" 1229 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1230 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1231 | dependencies: 1232 | once "^1.3.0" 1233 | wrappy "1" 1234 | 1235 | inherits@2, inherits@2.0.4: 1236 | version "2.0.4" 1237 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1238 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1239 | 1240 | inherits@2.0.3: 1241 | version "2.0.3" 1242 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1243 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1244 | 1245 | inline-style-parser@0.1.1: 1246 | version "0.1.1" 1247 | resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" 1248 | integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== 1249 | 1250 | ipaddr.js@1.9.1: 1251 | version "1.9.1" 1252 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 1253 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 1254 | 1255 | is-alphabetical@^2.0.0: 1256 | version "2.0.1" 1257 | resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" 1258 | integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== 1259 | 1260 | is-alphanumerical@^2.0.0: 1261 | version "2.0.1" 1262 | resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" 1263 | integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== 1264 | dependencies: 1265 | is-alphabetical "^2.0.0" 1266 | is-decimal "^2.0.0" 1267 | 1268 | is-arrayish@^0.2.1: 1269 | version "0.2.1" 1270 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1271 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1272 | 1273 | is-binary-path@~2.1.0: 1274 | version "2.1.0" 1275 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1276 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1277 | dependencies: 1278 | binary-extensions "^2.0.0" 1279 | 1280 | is-buffer@^2.0.0: 1281 | version "2.0.5" 1282 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" 1283 | integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== 1284 | 1285 | is-core-module@^2.2.0: 1286 | version "2.8.0" 1287 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" 1288 | integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== 1289 | dependencies: 1290 | has "^1.0.3" 1291 | 1292 | is-decimal@^2.0.0: 1293 | version "2.0.1" 1294 | resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" 1295 | integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== 1296 | 1297 | is-extglob@^2.1.1: 1298 | version "2.1.1" 1299 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1300 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1301 | 1302 | is-glob@^4.0.1, is-glob@~4.0.1: 1303 | version "4.0.3" 1304 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1305 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1306 | dependencies: 1307 | is-extglob "^2.1.1" 1308 | 1309 | is-hexadecimal@^2.0.0: 1310 | version "2.0.1" 1311 | resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" 1312 | integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== 1313 | 1314 | is-number@^7.0.0: 1315 | version "7.0.0" 1316 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1317 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1318 | 1319 | is-plain-obj@^1.1.0: 1320 | version "1.1.0" 1321 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 1322 | integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= 1323 | 1324 | is-plain-obj@^3.0.0: 1325 | version "3.0.0" 1326 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" 1327 | integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== 1328 | 1329 | is-plain-obj@^4.0.0: 1330 | version "4.0.0" 1331 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.0.0.tgz#06c0999fd7574edf5a906ba5644ad0feb3a84d22" 1332 | integrity sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw== 1333 | 1334 | is-reference@^3.0.0: 1335 | version "3.0.0" 1336 | resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.0.tgz#b1380c03d96ddf7089709781e3208fceb0c92cd6" 1337 | integrity sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q== 1338 | dependencies: 1339 | "@types/estree" "*" 1340 | 1341 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1342 | version "4.0.0" 1343 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1344 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1345 | 1346 | js-yaml@^4.0.0: 1347 | version "4.1.0" 1348 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1349 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1350 | dependencies: 1351 | argparse "^2.0.1" 1352 | 1353 | jsesc@^3.0.1: 1354 | version "3.0.2" 1355 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" 1356 | integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== 1357 | 1358 | json-buffer@3.0.1: 1359 | version "3.0.1" 1360 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 1361 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 1362 | 1363 | json-parse-even-better-errors@^2.3.0: 1364 | version "2.3.1" 1365 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1366 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1367 | 1368 | json5@^2.1.2: 1369 | version "2.2.0" 1370 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" 1371 | integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== 1372 | dependencies: 1373 | minimist "^1.2.5" 1374 | 1375 | jsonfile@^6.0.1: 1376 | version "6.1.0" 1377 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 1378 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 1379 | dependencies: 1380 | universalify "^2.0.0" 1381 | optionalDependencies: 1382 | graceful-fs "^4.1.6" 1383 | 1384 | keyv@^4.0.0: 1385 | version "4.0.4" 1386 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.4.tgz#f040b236ea2b06ed15ed86fbef8407e1a1c8e376" 1387 | integrity sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg== 1388 | dependencies: 1389 | json-buffer "3.0.1" 1390 | 1391 | kind-of@^6.0.3: 1392 | version "6.0.3" 1393 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 1394 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1395 | 1396 | kleur@^4.0.3: 1397 | version "4.1.4" 1398 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" 1399 | integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== 1400 | 1401 | lines-and-columns@^1.1.6: 1402 | version "1.2.4" 1403 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 1404 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 1405 | 1406 | loader-utils@^2.0.0: 1407 | version "2.0.2" 1408 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" 1409 | integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== 1410 | dependencies: 1411 | big.js "^5.2.2" 1412 | emojis-list "^3.0.0" 1413 | json5 "^2.1.2" 1414 | 1415 | locate-path@^5.0.0: 1416 | version "5.0.0" 1417 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1418 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1419 | dependencies: 1420 | p-locate "^4.1.0" 1421 | 1422 | lodash-es@^4.17.21: 1423 | version "4.17.21" 1424 | resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" 1425 | integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== 1426 | 1427 | lodash.debounce@^4.0.8: 1428 | version "4.0.8" 1429 | resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" 1430 | integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= 1431 | 1432 | lodash@^4.17.21: 1433 | version "4.17.21" 1434 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1435 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1436 | 1437 | longest-streak@^3.0.0: 1438 | version "3.0.1" 1439 | resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d" 1440 | integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg== 1441 | 1442 | loose-envify@^1.1.0: 1443 | version "1.4.0" 1444 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1445 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1446 | dependencies: 1447 | js-tokens "^3.0.0 || ^4.0.0" 1448 | 1449 | lowercase-keys@^2.0.0: 1450 | version "2.0.0" 1451 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 1452 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 1453 | 1454 | lru-cache@^6.0.0: 1455 | version "6.0.0" 1456 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1457 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1458 | dependencies: 1459 | yallist "^4.0.0" 1460 | 1461 | map-obj@^1.0.0: 1462 | version "1.0.1" 1463 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 1464 | integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= 1465 | 1466 | map-obj@^4.0.0: 1467 | version "4.3.0" 1468 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" 1469 | integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== 1470 | 1471 | markdown-extensions@^1.0.0: 1472 | version "1.1.1" 1473 | resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3" 1474 | integrity sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q== 1475 | 1476 | mdast-util-definitions@^5.0.0: 1477 | version "5.1.0" 1478 | resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz#b6d10ef00a3c4cf191e8d9a5fa58d7f4a366f817" 1479 | integrity sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ== 1480 | dependencies: 1481 | "@types/mdast" "^3.0.0" 1482 | "@types/unist" "^2.0.0" 1483 | unist-util-visit "^3.0.0" 1484 | 1485 | mdast-util-from-markdown@^1.0.0: 1486 | version "1.2.0" 1487 | resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" 1488 | integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q== 1489 | dependencies: 1490 | "@types/mdast" "^3.0.0" 1491 | "@types/unist" "^2.0.0" 1492 | decode-named-character-reference "^1.0.0" 1493 | mdast-util-to-string "^3.1.0" 1494 | micromark "^3.0.0" 1495 | micromark-util-decode-numeric-character-reference "^1.0.0" 1496 | micromark-util-decode-string "^1.0.0" 1497 | micromark-util-normalize-identifier "^1.0.0" 1498 | micromark-util-symbol "^1.0.0" 1499 | micromark-util-types "^1.0.0" 1500 | unist-util-stringify-position "^3.0.0" 1501 | uvu "^0.5.0" 1502 | 1503 | mdast-util-frontmatter@^1.0.0: 1504 | version "1.0.0" 1505 | resolved "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.0.tgz#ef12469379782e4a0fd995fed60cc3b871e6c819" 1506 | integrity sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw== 1507 | dependencies: 1508 | micromark-extension-frontmatter "^1.0.0" 1509 | 1510 | mdast-util-mdx-expression@^1.0.0: 1511 | version "1.1.1" 1512 | resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.1.1.tgz#657522e78b84f5c85cd2395776aba8dcfb7bbb0f" 1513 | integrity sha512-RDLRkBFmBKCJl6/fQdxxKL2BqNtoPFoNBmQAlj5ZNKOijIWRKjdhPkeufsUOaexLj+78mhJc+L7d1MYka8/LdQ== 1514 | dependencies: 1515 | "@types/estree-jsx" "^0.0.1" 1516 | 1517 | mdast-util-mdx-jsx@^1.0.0: 1518 | version "1.2.0" 1519 | resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-1.2.0.tgz#c0f5140e021fd134fa90272eb8bbddb39f8db399" 1520 | integrity sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA== 1521 | dependencies: 1522 | "@types/estree-jsx" "^0.0.1" 1523 | "@types/mdast" "^3.0.0" 1524 | mdast-util-to-markdown "^1.0.0" 1525 | parse-entities "^4.0.0" 1526 | stringify-entities "^4.0.0" 1527 | unist-util-remove-position "^4.0.0" 1528 | unist-util-stringify-position "^3.0.0" 1529 | vfile-message "^3.0.0" 1530 | 1531 | mdast-util-mdx@^1.0.0: 1532 | version "1.1.0" 1533 | resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-1.1.0.tgz#c98612804719309aea97e3da068658392e126488" 1534 | integrity sha512-leKb9uG7laXdyFlTleYV4ZEaCpsxeU1LlkkR/xp35pgKrfV1Y0fNCuOw9vaRc2a9YDpH22wd145Wt7UY5yzeZw== 1535 | dependencies: 1536 | mdast-util-mdx-expression "^1.0.0" 1537 | mdast-util-mdx-jsx "^1.0.0" 1538 | mdast-util-mdxjs-esm "^1.0.0" 1539 | 1540 | mdast-util-mdxjs-esm@^1.0.0: 1541 | version "1.1.1" 1542 | resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.1.1.tgz#09a1fd42ffc68f83de4b52496fb95f6058646f21" 1543 | integrity sha512-IpHNNMubCt6ue2FIQasx1ByvETglnqc7A3XvIc0Yyql1hNI73SEGa044dZG6jeJQE8boBdTn8nxs3DjQLvVN1w== 1544 | dependencies: 1545 | "@types/estree-jsx" "^0.0.1" 1546 | "@types/mdast" "^3.0.0" 1547 | mdast-util-from-markdown "^1.0.0" 1548 | mdast-util-to-markdown "^1.0.0" 1549 | 1550 | mdast-util-to-hast@^11.0.0: 1551 | version "11.3.0" 1552 | resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-11.3.0.tgz#ea9220617a710e80aa5cc3ac7cc9d4bb0440ae7a" 1553 | integrity sha512-4o3Cli3hXPmm1LhB+6rqhfsIUBjnKFlIUZvudaermXB+4/KONdd/W4saWWkC+LBLbPMqhFSSTSRgafHsT5fVJw== 1554 | dependencies: 1555 | "@types/hast" "^2.0.0" 1556 | "@types/mdast" "^3.0.0" 1557 | "@types/mdurl" "^1.0.0" 1558 | mdast-util-definitions "^5.0.0" 1559 | mdurl "^1.0.0" 1560 | unist-builder "^3.0.0" 1561 | unist-util-generated "^2.0.0" 1562 | unist-util-position "^4.0.0" 1563 | unist-util-visit "^4.0.0" 1564 | 1565 | mdast-util-to-markdown@^1.0.0: 1566 | version "1.2.6" 1567 | resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.2.6.tgz#9d0d1fcb22838e4af83fb04841cbde92525972f3" 1568 | integrity sha512-doJZmTEGagHypWvJ8ltinmwUsT9ZaNgNIQW6Gl7jNdsI1QZkTHTimYW561Niy2s8AEPAqEgV0dIh2UOVlSXUJA== 1569 | dependencies: 1570 | "@types/mdast" "^3.0.0" 1571 | "@types/unist" "^2.0.0" 1572 | longest-streak "^3.0.0" 1573 | mdast-util-to-string "^3.0.0" 1574 | micromark-util-decode-string "^1.0.0" 1575 | unist-util-visit "^4.0.0" 1576 | zwitch "^2.0.0" 1577 | 1578 | mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: 1579 | version "3.1.0" 1580 | resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9" 1581 | integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA== 1582 | 1583 | mdurl@^1.0.0: 1584 | version "1.0.1" 1585 | resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" 1586 | integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= 1587 | 1588 | media-typer@0.3.0: 1589 | version "0.3.0" 1590 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1591 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 1592 | 1593 | meow@^7.1.1: 1594 | version "7.1.1" 1595 | resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" 1596 | integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA== 1597 | dependencies: 1598 | "@types/minimist" "^1.2.0" 1599 | camelcase-keys "^6.2.2" 1600 | decamelize-keys "^1.1.0" 1601 | hard-rejection "^2.1.0" 1602 | minimist-options "4.1.0" 1603 | normalize-package-data "^2.5.0" 1604 | read-pkg-up "^7.0.1" 1605 | redent "^3.0.0" 1606 | trim-newlines "^3.0.0" 1607 | type-fest "^0.13.1" 1608 | yargs-parser "^18.1.3" 1609 | 1610 | merge-descriptors@1.0.1: 1611 | version "1.0.1" 1612 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1613 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 1614 | 1615 | methods@~1.1.2: 1616 | version "1.1.2" 1617 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1618 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 1619 | 1620 | micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: 1621 | version "1.0.5" 1622 | resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.5.tgz#b49d31b2fa2d4a13d710681e0139cbadb71308c1" 1623 | integrity sha512-ZNtWumX94lpiyAu/lxvth6I5+XzxF+BLVUB7u60XzOBy4RojrbZqrx0mcRmbfqEMO6489vyvDfIQNv5hdulrPg== 1624 | dependencies: 1625 | decode-named-character-reference "^1.0.0" 1626 | micromark-factory-destination "^1.0.0" 1627 | micromark-factory-label "^1.0.0" 1628 | micromark-factory-space "^1.0.0" 1629 | micromark-factory-title "^1.0.0" 1630 | micromark-factory-whitespace "^1.0.0" 1631 | micromark-util-character "^1.0.0" 1632 | micromark-util-chunked "^1.0.0" 1633 | micromark-util-classify-character "^1.0.0" 1634 | micromark-util-html-tag-name "^1.0.0" 1635 | micromark-util-normalize-identifier "^1.0.0" 1636 | micromark-util-resolve-all "^1.0.0" 1637 | micromark-util-subtokenize "^1.0.0" 1638 | micromark-util-symbol "^1.0.0" 1639 | micromark-util-types "^1.0.1" 1640 | uvu "^0.5.0" 1641 | 1642 | micromark-extension-frontmatter@^1.0.0: 1643 | version "1.0.0" 1644 | resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz#612498e6dad87c132c95e25f0918e7cc0cd535f6" 1645 | integrity sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg== 1646 | dependencies: 1647 | fault "^2.0.0" 1648 | micromark-util-character "^1.0.0" 1649 | micromark-util-symbol "^1.0.0" 1650 | 1651 | micromark-extension-mdx-expression@^1.0.0: 1652 | version "1.0.3" 1653 | resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz#cd3843573921bf55afcfff4ae0cd2e857a16dcfa" 1654 | integrity sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA== 1655 | dependencies: 1656 | micromark-factory-mdx-expression "^1.0.0" 1657 | micromark-factory-space "^1.0.0" 1658 | micromark-util-character "^1.0.0" 1659 | micromark-util-events-to-acorn "^1.0.0" 1660 | micromark-util-symbol "^1.0.0" 1661 | micromark-util-types "^1.0.0" 1662 | uvu "^0.5.0" 1663 | 1664 | micromark-extension-mdx-jsx@^1.0.0: 1665 | version "1.0.2" 1666 | resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.2.tgz#966817c1c0920e6bf311dd75e07eaf4a069d933b" 1667 | integrity sha512-MBppeDuXEBIL1uo4B/bL5eJ1q3m5pXzdzIWpOnJuzzBZF+S+9zbb5WnS2K/LEVQeoyiLzOuoteU4SFPuGJhhWw== 1668 | dependencies: 1669 | "@types/acorn" "^4.0.0" 1670 | estree-util-is-identifier-name "^2.0.0" 1671 | micromark-factory-mdx-expression "^1.0.0" 1672 | micromark-factory-space "^1.0.0" 1673 | micromark-util-character "^1.0.0" 1674 | micromark-util-symbol "^1.0.0" 1675 | micromark-util-types "^1.0.0" 1676 | uvu "^0.5.0" 1677 | vfile-message "^3.0.0" 1678 | 1679 | micromark-extension-mdx-md@^1.0.0: 1680 | version "1.0.0" 1681 | resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz#382f5df9ee3706dd120b51782a211f31f4760d22" 1682 | integrity sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw== 1683 | dependencies: 1684 | micromark-util-types "^1.0.0" 1685 | 1686 | micromark-extension-mdxjs-esm@^1.0.0: 1687 | version "1.0.2" 1688 | resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.2.tgz#df0c48743a0b1988119489c68314160b7942ffa6" 1689 | integrity sha512-bIaxblNIM+CCaJvp3L/V+168l79iuNmxEiTU6i3vB0YuDW+rumV64BFMxvhfRDxaJxQE1zD5vTPdyLBbW4efGA== 1690 | dependencies: 1691 | micromark-core-commonmark "^1.0.0" 1692 | micromark-util-character "^1.0.0" 1693 | micromark-util-events-to-acorn "^1.0.0" 1694 | micromark-util-symbol "^1.0.0" 1695 | micromark-util-types "^1.0.0" 1696 | unist-util-position-from-estree "^1.1.0" 1697 | uvu "^0.5.0" 1698 | vfile-message "^3.0.0" 1699 | 1700 | micromark-extension-mdxjs@^1.0.0: 1701 | version "1.0.0" 1702 | resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz#772644e12fc8299a33e50f59c5aa15727f6689dd" 1703 | integrity sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ== 1704 | dependencies: 1705 | acorn "^8.0.0" 1706 | acorn-jsx "^5.0.0" 1707 | micromark-extension-mdx-expression "^1.0.0" 1708 | micromark-extension-mdx-jsx "^1.0.0" 1709 | micromark-extension-mdx-md "^1.0.0" 1710 | micromark-extension-mdxjs-esm "^1.0.0" 1711 | micromark-util-combine-extensions "^1.0.0" 1712 | micromark-util-types "^1.0.0" 1713 | 1714 | micromark-factory-destination@^1.0.0: 1715 | version "1.0.0" 1716 | resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e" 1717 | integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw== 1718 | dependencies: 1719 | micromark-util-character "^1.0.0" 1720 | micromark-util-symbol "^1.0.0" 1721 | micromark-util-types "^1.0.0" 1722 | 1723 | micromark-factory-label@^1.0.0: 1724 | version "1.0.2" 1725 | resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" 1726 | integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== 1727 | dependencies: 1728 | micromark-util-character "^1.0.0" 1729 | micromark-util-symbol "^1.0.0" 1730 | micromark-util-types "^1.0.0" 1731 | uvu "^0.5.0" 1732 | 1733 | micromark-factory-mdx-expression@^1.0.0: 1734 | version "1.0.5" 1735 | resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.5.tgz#d16e9c8611971b84a2e4fa296c88620d57967ca7" 1736 | integrity sha512-1DSMCBeCUj4m01P8uYbNWvOsv+FtpDTcBUcDCdE06sENTBX54lndRs9neWOgsNWfLDm2EzCyNKiUaoJ+mWa/WA== 1737 | dependencies: 1738 | micromark-factory-space "^1.0.0" 1739 | micromark-util-character "^1.0.0" 1740 | micromark-util-events-to-acorn "^1.0.0" 1741 | micromark-util-symbol "^1.0.0" 1742 | micromark-util-types "^1.0.0" 1743 | unist-util-position-from-estree "^1.0.0" 1744 | uvu "^0.5.0" 1745 | vfile-message "^3.0.0" 1746 | 1747 | micromark-factory-space@^1.0.0: 1748 | version "1.0.0" 1749 | resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633" 1750 | integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew== 1751 | dependencies: 1752 | micromark-util-character "^1.0.0" 1753 | micromark-util-types "^1.0.0" 1754 | 1755 | micromark-factory-title@^1.0.0: 1756 | version "1.0.2" 1757 | resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" 1758 | integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== 1759 | dependencies: 1760 | micromark-factory-space "^1.0.0" 1761 | micromark-util-character "^1.0.0" 1762 | micromark-util-symbol "^1.0.0" 1763 | micromark-util-types "^1.0.0" 1764 | uvu "^0.5.0" 1765 | 1766 | micromark-factory-whitespace@^1.0.0: 1767 | version "1.0.0" 1768 | resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c" 1769 | integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A== 1770 | dependencies: 1771 | micromark-factory-space "^1.0.0" 1772 | micromark-util-character "^1.0.0" 1773 | micromark-util-symbol "^1.0.0" 1774 | micromark-util-types "^1.0.0" 1775 | 1776 | micromark-util-character@^1.0.0: 1777 | version "1.1.0" 1778 | resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86" 1779 | integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg== 1780 | dependencies: 1781 | micromark-util-symbol "^1.0.0" 1782 | micromark-util-types "^1.0.0" 1783 | 1784 | micromark-util-chunked@^1.0.0: 1785 | version "1.0.0" 1786 | resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06" 1787 | integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g== 1788 | dependencies: 1789 | micromark-util-symbol "^1.0.0" 1790 | 1791 | micromark-util-classify-character@^1.0.0: 1792 | version "1.0.0" 1793 | resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20" 1794 | integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA== 1795 | dependencies: 1796 | micromark-util-character "^1.0.0" 1797 | micromark-util-symbol "^1.0.0" 1798 | micromark-util-types "^1.0.0" 1799 | 1800 | micromark-util-combine-extensions@^1.0.0: 1801 | version "1.0.0" 1802 | resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5" 1803 | integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA== 1804 | dependencies: 1805 | micromark-util-chunked "^1.0.0" 1806 | micromark-util-types "^1.0.0" 1807 | 1808 | micromark-util-decode-numeric-character-reference@^1.0.0: 1809 | version "1.0.0" 1810 | resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946" 1811 | integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w== 1812 | dependencies: 1813 | micromark-util-symbol "^1.0.0" 1814 | 1815 | micromark-util-decode-string@^1.0.0: 1816 | version "1.0.2" 1817 | resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" 1818 | integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== 1819 | dependencies: 1820 | decode-named-character-reference "^1.0.0" 1821 | micromark-util-character "^1.0.0" 1822 | micromark-util-decode-numeric-character-reference "^1.0.0" 1823 | micromark-util-symbol "^1.0.0" 1824 | 1825 | micromark-util-encode@^1.0.0: 1826 | version "1.0.0" 1827 | resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.0.tgz#c409ecf751a28aa9564b599db35640fccec4c068" 1828 | integrity sha512-cJpFVM768h6zkd8qJ1LNRrITfY4gwFt+tziPcIf71Ui8yFzY9wG3snZQqiWVq93PG4Sw6YOtcNiKJfVIs9qfGg== 1829 | 1830 | micromark-util-events-to-acorn@^1.0.0: 1831 | version "1.0.4" 1832 | resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.0.4.tgz#07d26cd675dbca8c38b8d9aff2d4cdc91c9997aa" 1833 | integrity sha512-dpo8ecREK5s/KMph7jJ46RLM6g7N21CMc9LAJQbDLdbQnTpijigkSJPTIfLXZ+h5wdXlcsQ+b6ufAE9v76AdgA== 1834 | dependencies: 1835 | "@types/acorn" "^4.0.0" 1836 | "@types/estree" "^0.0.50" 1837 | estree-util-visit "^1.0.0" 1838 | micromark-util-types "^1.0.0" 1839 | uvu "^0.5.0" 1840 | vfile-message "^3.0.0" 1841 | 1842 | micromark-util-html-tag-name@^1.0.0: 1843 | version "1.0.0" 1844 | resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz#75737e92fef50af0c6212bd309bc5cb8dbd489ed" 1845 | integrity sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g== 1846 | 1847 | micromark-util-normalize-identifier@^1.0.0: 1848 | version "1.0.0" 1849 | resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828" 1850 | integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg== 1851 | dependencies: 1852 | micromark-util-symbol "^1.0.0" 1853 | 1854 | micromark-util-resolve-all@^1.0.0: 1855 | version "1.0.0" 1856 | resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88" 1857 | integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw== 1858 | dependencies: 1859 | micromark-util-types "^1.0.0" 1860 | 1861 | micromark-util-sanitize-uri@^1.0.0: 1862 | version "1.0.0" 1863 | resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz#27dc875397cd15102274c6c6da5585d34d4f12b2" 1864 | integrity sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg== 1865 | dependencies: 1866 | micromark-util-character "^1.0.0" 1867 | micromark-util-encode "^1.0.0" 1868 | micromark-util-symbol "^1.0.0" 1869 | 1870 | micromark-util-subtokenize@^1.0.0: 1871 | version "1.0.2" 1872 | resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" 1873 | integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== 1874 | dependencies: 1875 | micromark-util-chunked "^1.0.0" 1876 | micromark-util-symbol "^1.0.0" 1877 | micromark-util-types "^1.0.0" 1878 | uvu "^0.5.0" 1879 | 1880 | micromark-util-symbol@^1.0.0: 1881 | version "1.0.0" 1882 | resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.0.tgz#91cdbcc9b2a827c0129a177d36241bcd3ccaa34d" 1883 | integrity sha512-NZA01jHRNCt4KlOROn8/bGi6vvpEmlXld7EHcRH+aYWUfL3Wc8JLUNNlqUMKa0hhz6GrpUWsHtzPmKof57v0gQ== 1884 | 1885 | micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: 1886 | version "1.0.2" 1887 | resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" 1888 | integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== 1889 | 1890 | micromark@^3.0.0: 1891 | version "3.0.9" 1892 | resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.0.9.tgz#2ac001ffd126342fcf5f4ec2f944aa08206dd8d5" 1893 | integrity sha512-aWPjuXAqiFab4+oKLjH1vSNQm8S9GMnnf5sFNLrQaIggGYMBcQ9CS0Tt7+BJH6hbyv783zk3vgDhaORl3K33IQ== 1894 | dependencies: 1895 | "@types/debug" "^4.0.0" 1896 | debug "^4.0.0" 1897 | decode-named-character-reference "^1.0.0" 1898 | micromark-core-commonmark "^1.0.1" 1899 | micromark-factory-space "^1.0.0" 1900 | micromark-util-character "^1.0.0" 1901 | micromark-util-chunked "^1.0.0" 1902 | micromark-util-combine-extensions "^1.0.0" 1903 | micromark-util-decode-numeric-character-reference "^1.0.0" 1904 | micromark-util-encode "^1.0.0" 1905 | micromark-util-normalize-identifier "^1.0.0" 1906 | micromark-util-resolve-all "^1.0.0" 1907 | micromark-util-sanitize-uri "^1.0.0" 1908 | micromark-util-subtokenize "^1.0.0" 1909 | micromark-util-symbol "^1.0.0" 1910 | micromark-util-types "^1.0.1" 1911 | uvu "^0.5.0" 1912 | 1913 | mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": 1914 | version "1.51.0" 1915 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" 1916 | integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== 1917 | 1918 | mime-types@^2.1.12, mime-types@~2.1.24: 1919 | version "2.1.34" 1920 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" 1921 | integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== 1922 | dependencies: 1923 | mime-db "1.51.0" 1924 | 1925 | mime@1.6.0: 1926 | version "1.6.0" 1927 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1928 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1929 | 1930 | mimic-response@^1.0.0: 1931 | version "1.0.1" 1932 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 1933 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 1934 | 1935 | mimic-response@^3.1.0: 1936 | version "3.1.0" 1937 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 1938 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 1939 | 1940 | min-indent@^1.0.0: 1941 | version "1.0.1" 1942 | resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" 1943 | integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== 1944 | 1945 | minimatch@^3.0.4: 1946 | version "3.0.4" 1947 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1948 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1949 | dependencies: 1950 | brace-expansion "^1.1.7" 1951 | 1952 | minimist-options@4.1.0: 1953 | version "4.1.0" 1954 | resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" 1955 | integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== 1956 | dependencies: 1957 | arrify "^1.0.1" 1958 | is-plain-obj "^1.1.0" 1959 | kind-of "^6.0.3" 1960 | 1961 | minimist@^1.2.5: 1962 | version "1.2.5" 1963 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1964 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1965 | 1966 | minipass-collect@^1.0.2: 1967 | version "1.0.2" 1968 | resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" 1969 | integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== 1970 | dependencies: 1971 | minipass "^3.0.0" 1972 | 1973 | minipass-flush@^1.0.5: 1974 | version "1.0.5" 1975 | resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" 1976 | integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== 1977 | dependencies: 1978 | minipass "^3.0.0" 1979 | 1980 | minipass-pipeline@^1.2.2: 1981 | version "1.2.4" 1982 | resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" 1983 | integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== 1984 | dependencies: 1985 | minipass "^3.0.0" 1986 | 1987 | minipass@^3.0.0, minipass@^3.1.1: 1988 | version "3.1.5" 1989 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" 1990 | integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== 1991 | dependencies: 1992 | yallist "^4.0.0" 1993 | 1994 | minizlib@^2.1.1: 1995 | version "2.1.2" 1996 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" 1997 | integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== 1998 | dependencies: 1999 | minipass "^3.0.0" 2000 | yallist "^4.0.0" 2001 | 2002 | mkdirp@^1.0.3, mkdirp@^1.0.4: 2003 | version "1.0.4" 2004 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 2005 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 2006 | 2007 | morgan@^1.10.0: 2008 | version "1.10.0" 2009 | resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" 2010 | integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== 2011 | dependencies: 2012 | basic-auth "~2.0.1" 2013 | debug "2.6.9" 2014 | depd "~2.0.0" 2015 | on-finished "~2.3.0" 2016 | on-headers "~1.0.2" 2017 | 2018 | mri@^1.1.0: 2019 | version "1.2.0" 2020 | resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" 2021 | integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== 2022 | 2023 | ms@2.0.0: 2024 | version "2.0.0" 2025 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2026 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 2027 | 2028 | ms@2.1.1: 2029 | version "2.1.1" 2030 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 2031 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 2032 | 2033 | ms@2.1.2: 2034 | version "2.1.2" 2035 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2036 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2037 | 2038 | nanoclone@^0.2.1: 2039 | version "0.2.1" 2040 | resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" 2041 | integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== 2042 | 2043 | negotiator@0.6.2: 2044 | version "0.6.2" 2045 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 2046 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 2047 | 2048 | node-addon-api@^1.7.1: 2049 | version "1.7.2" 2050 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" 2051 | integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== 2052 | 2053 | node-fetch@^2.6.1: 2054 | version "2.6.6" 2055 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" 2056 | integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== 2057 | dependencies: 2058 | whatwg-url "^5.0.0" 2059 | 2060 | normalize-package-data@^2.5.0: 2061 | version "2.5.0" 2062 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 2063 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 2064 | dependencies: 2065 | hosted-git-info "^2.1.4" 2066 | resolve "^1.10.0" 2067 | semver "2 || 3 || 4 || 5" 2068 | validate-npm-package-license "^3.0.1" 2069 | 2070 | normalize-path@^3.0.0, normalize-path@~3.0.0: 2071 | version "3.0.0" 2072 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2073 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2074 | 2075 | normalize-url@^6.0.1: 2076 | version "6.1.0" 2077 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" 2078 | integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== 2079 | 2080 | npm-normalize-package-bin@^1.0.1: 2081 | version "1.0.1" 2082 | resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" 2083 | integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== 2084 | 2085 | numeral@^2.0.6: 2086 | version "2.0.6" 2087 | resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" 2088 | integrity sha1-StCAk21EPCVhrtnyGX7//iX05QY= 2089 | 2090 | object-assign@^4.1.1: 2091 | version "4.1.1" 2092 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2093 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 2094 | 2095 | on-finished@~2.3.0: 2096 | version "2.3.0" 2097 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 2098 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 2099 | dependencies: 2100 | ee-first "1.1.1" 2101 | 2102 | on-headers@~1.0.2: 2103 | version "1.0.2" 2104 | resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" 2105 | integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== 2106 | 2107 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 2108 | version "1.4.0" 2109 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2110 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 2111 | dependencies: 2112 | wrappy "1" 2113 | 2114 | p-cancelable@^2.0.0: 2115 | version "2.1.1" 2116 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" 2117 | integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== 2118 | 2119 | p-limit@^2.2.0: 2120 | version "2.3.0" 2121 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 2122 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 2123 | dependencies: 2124 | p-try "^2.0.0" 2125 | 2126 | p-locate@^4.1.0: 2127 | version "4.1.0" 2128 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 2129 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 2130 | dependencies: 2131 | p-limit "^2.2.0" 2132 | 2133 | p-map@^4.0.0: 2134 | version "4.0.0" 2135 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" 2136 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 2137 | dependencies: 2138 | aggregate-error "^3.0.0" 2139 | 2140 | p-try@^2.0.0: 2141 | version "2.2.0" 2142 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 2143 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 2144 | 2145 | parse-entities@^4.0.0: 2146 | version "4.0.0" 2147 | resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.0.tgz#f67c856d4e3fe19b1a445c3fabe78dcdc1053eeb" 2148 | integrity sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ== 2149 | dependencies: 2150 | "@types/unist" "^2.0.0" 2151 | character-entities "^2.0.0" 2152 | character-entities-legacy "^3.0.0" 2153 | character-reference-invalid "^2.0.0" 2154 | decode-named-character-reference "^1.0.0" 2155 | is-alphanumerical "^2.0.0" 2156 | is-decimal "^2.0.0" 2157 | is-hexadecimal "^2.0.0" 2158 | 2159 | parse-json@^5.0.0: 2160 | version "5.2.0" 2161 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 2162 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 2163 | dependencies: 2164 | "@babel/code-frame" "^7.0.0" 2165 | error-ex "^1.3.1" 2166 | json-parse-even-better-errors "^2.3.0" 2167 | lines-and-columns "^1.1.6" 2168 | 2169 | parse-ms@^2.1.0: 2170 | version "2.1.0" 2171 | resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" 2172 | integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== 2173 | 2174 | parseurl@~1.3.3: 2175 | version "1.3.3" 2176 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 2177 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 2178 | 2179 | path-exists@^4.0.0: 2180 | version "4.0.0" 2181 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2182 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2183 | 2184 | path-is-absolute@^1.0.0: 2185 | version "1.0.1" 2186 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2187 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2188 | 2189 | path-parse@^1.0.6: 2190 | version "1.0.7" 2191 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 2192 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 2193 | 2194 | path-to-regexp@0.1.7: 2195 | version "0.1.7" 2196 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 2197 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 2198 | 2199 | periscopic@^3.0.0: 2200 | version "3.0.4" 2201 | resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.0.4.tgz#b3fbed0d1bc844976b977173ca2cd4a0ef4fa8d1" 2202 | integrity sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg== 2203 | dependencies: 2204 | estree-walker "^3.0.0" 2205 | is-reference "^3.0.0" 2206 | 2207 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: 2208 | version "2.3.0" 2209 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 2210 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 2211 | 2212 | prettier@^2.4.1: 2213 | version "2.5.0" 2214 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.0.tgz#a6370e2d4594e093270419d9cc47f7670488f893" 2215 | integrity sha512-FM/zAKgWTxj40rH03VxzIPdXmj39SwSjwG0heUcNFwI+EMZJnY93yAiKXM3dObIKAM5TA88werc8T/EwhB45eg== 2216 | 2217 | pretty-ms@^7.0.1: 2218 | version "7.0.1" 2219 | resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" 2220 | integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== 2221 | dependencies: 2222 | parse-ms "^2.1.0" 2223 | 2224 | promise-inflight@^1.0.1: 2225 | version "1.0.1" 2226 | resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" 2227 | integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= 2228 | 2229 | property-expr@^2.0.4: 2230 | version "2.0.4" 2231 | resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.4.tgz#37b925478e58965031bb612ec5b3260f8241e910" 2232 | integrity sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg== 2233 | 2234 | property-information@^6.0.0: 2235 | version "6.1.1" 2236 | resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22" 2237 | integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w== 2238 | 2239 | proxy-addr@~2.0.5: 2240 | version "2.0.7" 2241 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 2242 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 2243 | dependencies: 2244 | forwarded "0.2.0" 2245 | ipaddr.js "1.9.1" 2246 | 2247 | pump@^3.0.0: 2248 | version "3.0.0" 2249 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 2250 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 2251 | dependencies: 2252 | end-of-stream "^1.1.0" 2253 | once "^1.3.1" 2254 | 2255 | qs@6.7.0: 2256 | version "6.7.0" 2257 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 2258 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 2259 | 2260 | quick-lru@^4.0.1: 2261 | version "4.0.1" 2262 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" 2263 | integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== 2264 | 2265 | quick-lru@^5.1.1: 2266 | version "5.1.1" 2267 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" 2268 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 2269 | 2270 | range-parser@~1.2.1: 2271 | version "1.2.1" 2272 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 2273 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 2274 | 2275 | raw-body@2.4.0: 2276 | version "2.4.0" 2277 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 2278 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 2279 | dependencies: 2280 | bytes "3.1.0" 2281 | http-errors "1.7.2" 2282 | iconv-lite "0.4.24" 2283 | unpipe "1.0.0" 2284 | 2285 | react-dom@^17.0.2: 2286 | version "17.0.2" 2287 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" 2288 | integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== 2289 | dependencies: 2290 | loose-envify "^1.1.0" 2291 | object-assign "^4.1.1" 2292 | scheduler "^0.20.2" 2293 | 2294 | react-icons@^4.3.1: 2295 | version "4.3.1" 2296 | resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.3.1.tgz#2fa92aebbbc71f43d2db2ed1aed07361124e91ca" 2297 | integrity sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ== 2298 | 2299 | react-router-dom@^6.0.2: 2300 | version "6.0.2" 2301 | resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.0.2.tgz#860cefa697b9d4965eced3f91e82cdbc5995f3ad" 2302 | integrity sha512-cOpJ4B6raFutr0EG8O/M2fEoyQmwvZWomf1c6W2YXBZuFBx8oTk/zqjXghwScyhfrtnt0lANXV2182NQblRxFA== 2303 | dependencies: 2304 | history "^5.1.0" 2305 | react-router "6.0.2" 2306 | 2307 | react-router@6.0.2: 2308 | version "6.0.2" 2309 | resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.0.2.tgz#bd2b0fa84fd1d152671e9f654d9c0b1f5a7c86da" 2310 | integrity sha512-8/Wm3Ed8t7TuedXjAvV39+c8j0vwrI5qVsYqjFr5WkJjsJpEvNSoLRUbtqSEYzqaTUj1IV+sbPJxvO+accvU0Q== 2311 | dependencies: 2312 | history "^5.1.0" 2313 | 2314 | react@^17.0.2: 2315 | version "17.0.2" 2316 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" 2317 | integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== 2318 | dependencies: 2319 | loose-envify "^1.1.0" 2320 | object-assign "^4.1.1" 2321 | 2322 | read-package-json-fast@^2.0.2: 2323 | version "2.0.3" 2324 | resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" 2325 | integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== 2326 | dependencies: 2327 | json-parse-even-better-errors "^2.3.0" 2328 | npm-normalize-package-bin "^1.0.1" 2329 | 2330 | read-pkg-up@^7.0.1: 2331 | version "7.0.1" 2332 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" 2333 | integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== 2334 | dependencies: 2335 | find-up "^4.1.0" 2336 | read-pkg "^5.2.0" 2337 | type-fest "^0.8.1" 2338 | 2339 | read-pkg@^5.2.0: 2340 | version "5.2.0" 2341 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" 2342 | integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== 2343 | dependencies: 2344 | "@types/normalize-package-data" "^2.4.0" 2345 | normalize-package-data "^2.5.0" 2346 | parse-json "^5.0.0" 2347 | type-fest "^0.6.0" 2348 | 2349 | readdirp@~3.6.0: 2350 | version "3.6.0" 2351 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 2352 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 2353 | dependencies: 2354 | picomatch "^2.2.1" 2355 | 2356 | redent@^3.0.0: 2357 | version "3.0.0" 2358 | resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" 2359 | integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== 2360 | dependencies: 2361 | indent-string "^4.0.0" 2362 | strip-indent "^3.0.0" 2363 | 2364 | regenerator-runtime@^0.13.4: 2365 | version "0.13.9" 2366 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" 2367 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== 2368 | 2369 | remark-frontmatter@^4.0.0: 2370 | version "4.0.1" 2371 | resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz#84560f7ccef114ef076d3d3735be6d69f8922309" 2372 | integrity sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA== 2373 | dependencies: 2374 | "@types/mdast" "^3.0.0" 2375 | mdast-util-frontmatter "^1.0.0" 2376 | micromark-extension-frontmatter "^1.0.0" 2377 | unified "^10.0.0" 2378 | 2379 | remark-mdx-frontmatter@^1.0.1: 2380 | version "1.1.1" 2381 | resolved "https://registry.yarnpkg.com/remark-mdx-frontmatter/-/remark-mdx-frontmatter-1.1.1.tgz#54cfb3821fbb9cb6057673e0570ae2d645f6fe32" 2382 | integrity sha512-7teX9DW4tI2WZkXS4DBxneYSY7NHiXl4AKdWDO9LXVweULlCT8OPWsOjLEnMIXViN1j+QcY8mfbq3k0EK6x3uA== 2383 | dependencies: 2384 | estree-util-is-identifier-name "^1.0.0" 2385 | estree-util-value-to-estree "^1.0.0" 2386 | js-yaml "^4.0.0" 2387 | toml "^3.0.0" 2388 | 2389 | remark-parse@^10.0.0: 2390 | version "10.0.1" 2391 | resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" 2392 | integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== 2393 | dependencies: 2394 | "@types/mdast" "^3.0.0" 2395 | mdast-util-from-markdown "^1.0.0" 2396 | unified "^10.0.0" 2397 | 2398 | remark-rehype@^9.0.0: 2399 | version "9.1.0" 2400 | resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-9.1.0.tgz#e4b5b6e19c125b3780343eb66c3e9b99b0f06a81" 2401 | integrity sha512-oLa6YmgAYg19zb0ZrBACh40hpBLteYROaPLhBXzLgjqyHQrN+gVP9N/FJvfzuNNuzCutktkroXEZBrxAxKhh7Q== 2402 | dependencies: 2403 | "@types/hast" "^2.0.0" 2404 | "@types/mdast" "^3.0.0" 2405 | mdast-util-to-hast "^11.0.0" 2406 | unified "^10.0.0" 2407 | 2408 | remix@^1.0.4: 2409 | version "1.0.6" 2410 | resolved "https://registry.yarnpkg.com/remix/-/remix-1.0.6.tgz#5cf34e35447fbbd00f11d2d351dec8ba22273b01" 2411 | integrity sha512-9yN3vdVgM/U1yaNToUDzvYYlNAFXtRyxCVvc2kCS1yOVVBeDkC3d58dD8MZx8aSZFsWpDBR8yW+LZTlY5G7/Bw== 2412 | dependencies: 2413 | fs-extra "^10.0.0" 2414 | 2415 | resolve-alpn@^1.0.0: 2416 | version "1.2.1" 2417 | resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" 2418 | integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== 2419 | 2420 | resolve@^1.10.0: 2421 | version "1.20.0" 2422 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 2423 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 2424 | dependencies: 2425 | is-core-module "^2.2.0" 2426 | path-parse "^1.0.6" 2427 | 2428 | responselike@^2.0.0: 2429 | version "2.0.0" 2430 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" 2431 | integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== 2432 | dependencies: 2433 | lowercase-keys "^2.0.0" 2434 | 2435 | rimraf@^3.0.2: 2436 | version "3.0.2" 2437 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2438 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 2439 | dependencies: 2440 | glob "^7.1.3" 2441 | 2442 | sade@^1.7.3: 2443 | version "1.7.4" 2444 | resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691" 2445 | integrity sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA== 2446 | dependencies: 2447 | mri "^1.1.0" 2448 | 2449 | safe-buffer@5.1.2: 2450 | version "5.1.2" 2451 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2452 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2453 | 2454 | "safer-buffer@>= 2.1.2 < 3": 2455 | version "2.1.2" 2456 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2457 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2458 | 2459 | scheduler@^0.20.2: 2460 | version "0.20.2" 2461 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" 2462 | integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== 2463 | dependencies: 2464 | loose-envify "^1.1.0" 2465 | object-assign "^4.1.1" 2466 | 2467 | "semver@2 || 3 || 4 || 5": 2468 | version "5.7.1" 2469 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 2470 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 2471 | 2472 | semver@^7.3.5: 2473 | version "7.3.5" 2474 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 2475 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 2476 | dependencies: 2477 | lru-cache "^6.0.0" 2478 | 2479 | send@0.17.1: 2480 | version "0.17.1" 2481 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 2482 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 2483 | dependencies: 2484 | debug "2.6.9" 2485 | depd "~1.1.2" 2486 | destroy "~1.0.4" 2487 | encodeurl "~1.0.2" 2488 | escape-html "~1.0.3" 2489 | etag "~1.8.1" 2490 | fresh "0.5.2" 2491 | http-errors "~1.7.2" 2492 | mime "1.6.0" 2493 | ms "2.1.1" 2494 | on-finished "~2.3.0" 2495 | range-parser "~1.2.1" 2496 | statuses "~1.5.0" 2497 | 2498 | serve-static@1.14.1: 2499 | version "1.14.1" 2500 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 2501 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 2502 | dependencies: 2503 | encodeurl "~1.0.2" 2504 | escape-html "~1.0.3" 2505 | parseurl "~1.3.3" 2506 | send "0.17.1" 2507 | 2508 | set-cookie-parser@^2.4.8: 2509 | version "2.4.8" 2510 | resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.4.8.tgz#d0da0ed388bc8f24e706a391f9c9e252a13c58b2" 2511 | integrity sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg== 2512 | 2513 | setprototypeof@1.1.1: 2514 | version "1.1.1" 2515 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 2516 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 2517 | 2518 | signal-exit@^3.0.3: 2519 | version "3.0.6" 2520 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" 2521 | integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== 2522 | 2523 | source-map@^0.7.0, source-map@^0.7.3: 2524 | version "0.7.3" 2525 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 2526 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 2527 | 2528 | space-separated-tokens@^2.0.0: 2529 | version "2.0.1" 2530 | resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b" 2531 | integrity sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw== 2532 | 2533 | spdx-correct@^3.0.0: 2534 | version "3.1.1" 2535 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 2536 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 2537 | dependencies: 2538 | spdx-expression-parse "^3.0.0" 2539 | spdx-license-ids "^3.0.0" 2540 | 2541 | spdx-exceptions@^2.1.0: 2542 | version "2.3.0" 2543 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 2544 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 2545 | 2546 | spdx-expression-parse@^3.0.0: 2547 | version "3.0.1" 2548 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 2549 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 2550 | dependencies: 2551 | spdx-exceptions "^2.1.0" 2552 | spdx-license-ids "^3.0.0" 2553 | 2554 | spdx-license-ids@^3.0.0: 2555 | version "3.0.11" 2556 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" 2557 | integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== 2558 | 2559 | ssri@^8.0.1: 2560 | version "8.0.1" 2561 | resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" 2562 | integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== 2563 | dependencies: 2564 | minipass "^3.1.1" 2565 | 2566 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 2567 | version "1.5.0" 2568 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 2569 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 2570 | 2571 | stringify-entities@^4.0.0: 2572 | version "4.0.2" 2573 | resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.2.tgz#13d113dc7449dc8ae4cb22c28883ee3fff8753e3" 2574 | integrity sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ== 2575 | dependencies: 2576 | character-entities-html4 "^2.0.0" 2577 | character-entities-legacy "^3.0.0" 2578 | 2579 | strip-indent@^3.0.0: 2580 | version "3.0.0" 2581 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" 2582 | integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== 2583 | dependencies: 2584 | min-indent "^1.0.0" 2585 | 2586 | style-to-object@^0.3.0: 2587 | version "0.3.0" 2588 | resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" 2589 | integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== 2590 | dependencies: 2591 | inline-style-parser "0.1.1" 2592 | 2593 | supports-color@^5.3.0: 2594 | version "5.5.0" 2595 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2596 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2597 | dependencies: 2598 | has-flag "^3.0.0" 2599 | 2600 | tar@^6.0.2: 2601 | version "6.1.11" 2602 | resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" 2603 | integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== 2604 | dependencies: 2605 | chownr "^2.0.0" 2606 | fs-minipass "^2.0.0" 2607 | minipass "^3.0.0" 2608 | minizlib "^2.1.1" 2609 | mkdirp "^1.0.3" 2610 | yallist "^4.0.0" 2611 | 2612 | to-regex-range@^5.0.1: 2613 | version "5.0.1" 2614 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2615 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2616 | dependencies: 2617 | is-number "^7.0.0" 2618 | 2619 | toidentifier@1.0.0: 2620 | version "1.0.0" 2621 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 2622 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 2623 | 2624 | toml@^3.0.0: 2625 | version "3.0.0" 2626 | resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" 2627 | integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== 2628 | 2629 | toposort@^2.0.2: 2630 | version "2.0.2" 2631 | resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" 2632 | integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA= 2633 | 2634 | totalist@^2.0.0: 2635 | version "2.0.0" 2636 | resolved "https://registry.yarnpkg.com/totalist/-/totalist-2.0.0.tgz#db6f1e19c0fa63e71339bbb8fba89653c18c7eec" 2637 | integrity sha512-+Y17F0YzxfACxTyjfhnJQEe7afPA0GSpYlFkl2VFMxYP7jshQf9gXV7cH47EfToBumFThfKBvfAcoUn6fdNeRQ== 2638 | 2639 | tr46@~0.0.3: 2640 | version "0.0.3" 2641 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 2642 | integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= 2643 | 2644 | trim-newlines@^3.0.0: 2645 | version "3.0.1" 2646 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" 2647 | integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== 2648 | 2649 | trough@^2.0.0: 2650 | version "2.0.2" 2651 | resolved "https://registry.yarnpkg.com/trough/-/trough-2.0.2.tgz#94a3aa9d5ce379fc561f6244905b3f36b7458d96" 2652 | integrity sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w== 2653 | 2654 | tslib@^2.0.0: 2655 | version "2.3.1" 2656 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" 2657 | integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== 2658 | 2659 | type-fest@^0.13.1: 2660 | version "0.13.1" 2661 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" 2662 | integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== 2663 | 2664 | type-fest@^0.6.0: 2665 | version "0.6.0" 2666 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" 2667 | integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== 2668 | 2669 | type-fest@^0.8.1: 2670 | version "0.8.1" 2671 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 2672 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 2673 | 2674 | type-is@~1.6.17, type-is@~1.6.18: 2675 | version "1.6.18" 2676 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 2677 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 2678 | dependencies: 2679 | media-typer "0.3.0" 2680 | mime-types "~2.1.24" 2681 | 2682 | typescript@^4.1.2: 2683 | version "4.5.2" 2684 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998" 2685 | integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw== 2686 | 2687 | unified@^10.0.0: 2688 | version "10.1.1" 2689 | resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.1.tgz#345e349e3ab353ab612878338eb9d57b4dea1d46" 2690 | integrity sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w== 2691 | dependencies: 2692 | "@types/unist" "^2.0.0" 2693 | bail "^2.0.0" 2694 | extend "^3.0.0" 2695 | is-buffer "^2.0.0" 2696 | is-plain-obj "^4.0.0" 2697 | trough "^2.0.0" 2698 | vfile "^5.0.0" 2699 | 2700 | unique-filename@^1.1.1: 2701 | version "1.1.1" 2702 | resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" 2703 | integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== 2704 | dependencies: 2705 | unique-slug "^2.0.0" 2706 | 2707 | unique-slug@^2.0.0: 2708 | version "2.0.2" 2709 | resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" 2710 | integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== 2711 | dependencies: 2712 | imurmurhash "^0.1.4" 2713 | 2714 | unist-builder@^3.0.0: 2715 | version "3.0.0" 2716 | resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-3.0.0.tgz#728baca4767c0e784e1e64bb44b5a5a753021a04" 2717 | integrity sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ== 2718 | dependencies: 2719 | "@types/unist" "^2.0.0" 2720 | 2721 | unist-util-generated@^2.0.0: 2722 | version "2.0.0" 2723 | resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113" 2724 | integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw== 2725 | 2726 | unist-util-is@^5.0.0: 2727 | version "5.1.1" 2728 | resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236" 2729 | integrity sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ== 2730 | 2731 | unist-util-position-from-estree@^1.0.0, unist-util-position-from-estree@^1.1.0: 2732 | version "1.1.1" 2733 | resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz#96f4d543dfb0428edc01ebb928570b602d280c4c" 2734 | integrity sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw== 2735 | dependencies: 2736 | "@types/unist" "^2.0.0" 2737 | 2738 | unist-util-position@^4.0.0: 2739 | version "4.0.1" 2740 | resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.1.tgz#f8484b2da19a897a0180556d160c28633070dbb9" 2741 | integrity sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA== 2742 | 2743 | unist-util-remove-position@^4.0.0: 2744 | version "4.0.1" 2745 | resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz#d5b46a7304ac114c8d91990ece085ca7c2c135c8" 2746 | integrity sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ== 2747 | dependencies: 2748 | "@types/unist" "^2.0.0" 2749 | unist-util-visit "^4.0.0" 2750 | 2751 | unist-util-stringify-position@^3.0.0: 2752 | version "3.0.0" 2753 | resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz#d517d2883d74d0daa0b565adc3d10a02b4a8cde9" 2754 | integrity sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA== 2755 | dependencies: 2756 | "@types/unist" "^2.0.0" 2757 | 2758 | unist-util-visit-parents@^4.0.0: 2759 | version "4.1.1" 2760 | resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz#e83559a4ad7e6048a46b1bdb22614f2f3f4724f2" 2761 | integrity sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw== 2762 | dependencies: 2763 | "@types/unist" "^2.0.0" 2764 | unist-util-is "^5.0.0" 2765 | 2766 | unist-util-visit-parents@^5.0.0: 2767 | version "5.1.0" 2768 | resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz#44bbc5d25f2411e7dfc5cecff12de43296aa8521" 2769 | integrity sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg== 2770 | dependencies: 2771 | "@types/unist" "^2.0.0" 2772 | unist-util-is "^5.0.0" 2773 | 2774 | unist-util-visit@^3.0.0: 2775 | version "3.1.0" 2776 | resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-3.1.0.tgz#9420d285e1aee938c7d9acbafc8e160186dbaf7b" 2777 | integrity sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA== 2778 | dependencies: 2779 | "@types/unist" "^2.0.0" 2780 | unist-util-is "^5.0.0" 2781 | unist-util-visit-parents "^4.0.0" 2782 | 2783 | unist-util-visit@^4.0.0: 2784 | version "4.1.0" 2785 | resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.0.tgz#f41e407a9e94da31594e6b1c9811c51ab0b3d8f5" 2786 | integrity sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ== 2787 | dependencies: 2788 | "@types/unist" "^2.0.0" 2789 | unist-util-is "^5.0.0" 2790 | unist-util-visit-parents "^5.0.0" 2791 | 2792 | universalify@^2.0.0: 2793 | version "2.0.0" 2794 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 2795 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 2796 | 2797 | unpipe@1.0.0, unpipe@~1.0.0: 2798 | version "1.0.0" 2799 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2800 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 2801 | 2802 | utils-merge@1.0.1: 2803 | version "1.0.1" 2804 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 2805 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 2806 | 2807 | uvu@^0.5.0: 2808 | version "0.5.2" 2809 | resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.2.tgz#c145e7f4b5becf80099cf22fd8a4a05f0112b2c0" 2810 | integrity sha512-m2hLe7I2eROhh+tm3WE5cTo/Cv3WQA7Oc9f7JB6uWv+/zVKvfAm53bMyOoGOSZeQ7Ov2Fu9pLhFr7p07bnT20w== 2811 | dependencies: 2812 | dequal "^2.0.0" 2813 | diff "^5.0.0" 2814 | kleur "^4.0.3" 2815 | sade "^1.7.3" 2816 | totalist "^2.0.0" 2817 | 2818 | validate-npm-package-license@^3.0.1: 2819 | version "3.0.4" 2820 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 2821 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 2822 | dependencies: 2823 | spdx-correct "^3.0.0" 2824 | spdx-expression-parse "^3.0.0" 2825 | 2826 | vary@~1.1.2: 2827 | version "1.1.2" 2828 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 2829 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 2830 | 2831 | vfile-message@^3.0.0: 2832 | version "3.0.2" 2833 | resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.0.2.tgz#db7eaebe7fecb853010f2ef1664427f52baf8f74" 2834 | integrity sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww== 2835 | dependencies: 2836 | "@types/unist" "^2.0.0" 2837 | unist-util-stringify-position "^3.0.0" 2838 | 2839 | vfile@^5.0.0: 2840 | version "5.2.0" 2841 | resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.2.0.tgz#a32a646ff9251c274dbe8675644a39031025b369" 2842 | integrity sha512-ftCpb6pU8Jrzcqku8zE6N3Gi4/RkDhRwEXSWudzZzA2eEOn/cBpsfk9aulCUR+j1raRSAykYQap9u6j6rhUaCA== 2843 | dependencies: 2844 | "@types/unist" "^2.0.0" 2845 | is-buffer "^2.0.0" 2846 | unist-util-stringify-position "^3.0.0" 2847 | vfile-message "^3.0.0" 2848 | 2849 | webidl-conversions@^3.0.0: 2850 | version "3.0.1" 2851 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 2852 | integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= 2853 | 2854 | whatwg-url@^5.0.0: 2855 | version "5.0.0" 2856 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 2857 | integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= 2858 | dependencies: 2859 | tr46 "~0.0.3" 2860 | webidl-conversions "^3.0.0" 2861 | 2862 | wrappy@1: 2863 | version "1.0.2" 2864 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2865 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2866 | 2867 | ws@^7.4.5: 2868 | version "7.5.6" 2869 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" 2870 | integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== 2871 | 2872 | xdm@^2.0.0: 2873 | version "2.1.0" 2874 | resolved "https://registry.yarnpkg.com/xdm/-/xdm-2.1.0.tgz#d0060eb0f1230b47247bc6b3208ca3965d0053a4" 2875 | integrity sha512-3LxxbxKcRogYY7cQSMy1tUuU1zKNK9YPqMT7/S0r7Cz2QpyF8O9yFySGD7caOZt+LWUOQioOIX+6ZzCoBCpcAA== 2876 | dependencies: 2877 | "@rollup/pluginutils" "^4.0.0" 2878 | "@types/estree-jsx" "^0.0.1" 2879 | astring "^1.6.0" 2880 | estree-util-build-jsx "^2.0.0" 2881 | estree-util-is-identifier-name "^2.0.0" 2882 | estree-walker "^3.0.0" 2883 | got "^11.0.0" 2884 | hast-util-to-estree "^2.0.0" 2885 | loader-utils "^2.0.0" 2886 | markdown-extensions "^1.0.0" 2887 | mdast-util-mdx "^1.0.0" 2888 | micromark-extension-mdxjs "^1.0.0" 2889 | periscopic "^3.0.0" 2890 | remark-parse "^10.0.0" 2891 | remark-rehype "^9.0.0" 2892 | source-map "^0.7.0" 2893 | unified "^10.0.0" 2894 | unist-util-position-from-estree "^1.0.0" 2895 | unist-util-stringify-position "^3.0.0" 2896 | unist-util-visit "^4.0.0" 2897 | vfile "^5.0.0" 2898 | optionalDependencies: 2899 | deasync "^0.1.0" 2900 | 2901 | yallist@^4.0.0: 2902 | version "4.0.0" 2903 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2904 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2905 | 2906 | yargs-parser@^18.1.3: 2907 | version "18.1.3" 2908 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" 2909 | integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== 2910 | dependencies: 2911 | camelcase "^5.0.0" 2912 | decamelize "^1.2.0" 2913 | 2914 | yup@^0.32.11: 2915 | version "0.32.11" 2916 | resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.11.tgz#d67fb83eefa4698607982e63f7ca4c5ed3cf18c5" 2917 | integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg== 2918 | dependencies: 2919 | "@babel/runtime" "^7.15.4" 2920 | "@types/lodash" "^4.14.175" 2921 | lodash "^4.17.21" 2922 | lodash-es "^4.17.21" 2923 | nanoclone "^0.2.1" 2924 | property-expr "^2.0.4" 2925 | toposort "^2.0.2" 2926 | 2927 | zwitch@^2.0.0: 2928 | version "2.0.2" 2929 | resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.2.tgz#91f8d0e901ffa3d66599756dde7f57b17c95dce1" 2930 | integrity sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA== 2931 | --------------------------------------------------------------------------------