diff --git a/package.json b/package.json index d9a0e2130..57cdb20c0 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "@types/react-dom": "^17.0.0", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-router-dom": "^5.3.0", + "react-router-dom": "^6.6.2", "react-scripts": "4.0.3", "typescript": "^4.1.2", "web-vitals": "^1.0.1" diff --git a/public/coffee-mug.png b/public/coffee-mug.png new file mode 100644 index 000000000..c19c2088d Binary files /dev/null and b/public/coffee-mug.png differ diff --git a/src/02-components-patterns/assets/no-image.jpg b/src/02-components-patterns/assets/no-image.jpg new file mode 100644 index 000000000..ae122b097 Binary files /dev/null and b/src/02-components-patterns/assets/no-image.jpg differ diff --git a/src/02-components-patterns/components/ProductButtons.tsx b/src/02-components-patterns/components/ProductButtons.tsx new file mode 100644 index 000000000..3951d749f --- /dev/null +++ b/src/02-components-patterns/components/ProductButtons.tsx @@ -0,0 +1,19 @@ +import { useContext } from "react"; +import styles from "../../02-components-patterns/styles/styles.module.css"; +import { ProductContext } from "./ProductCard"; + +export const ProductButtons = () => { + const { increaseBy, counter } = useContext(ProductContext); + + return ( +
+ +
{counter}
+ +
+ ); +}; diff --git a/src/02-components-patterns/components/ProductCard.tsx b/src/02-components-patterns/components/ProductCard.tsx new file mode 100644 index 000000000..28bb9bc7a --- /dev/null +++ b/src/02-components-patterns/components/ProductCard.tsx @@ -0,0 +1,34 @@ +import styles from "../styles/styles.module.css"; +import useCounter from "../hooks/useCounter"; +import { createContext } from "react"; +import { ProductContextProps, Props } from "../interfaces/interfaces"; +import { ProductImage } from "./ProductImages"; +import { ProductTitle } from "./ProductTitle"; +import { ProductButtons } from "./ProductButtons"; + +export const ProductContext = createContext({} as ProductContextProps); +const { Provider } = ProductContext; + +const ProductCard = ({ children, product }: Props) => { + const { counter, increaseBy } = useCounter(); + + return ( + +
+

Product Card

+ {children} + + + +
+
+ ); +}; + +export default ProductCard; diff --git a/src/02-components-patterns/components/ProductImages.tsx b/src/02-components-patterns/components/ProductImages.tsx new file mode 100644 index 000000000..cc3b000bf --- /dev/null +++ b/src/02-components-patterns/components/ProductImages.tsx @@ -0,0 +1,18 @@ +import { useContext } from "react"; +import styles from "../../02-components-patterns/styles/styles.module.css"; +import noImg from "../../02-components-patterns/assets/no-image.jpg"; +import { ProductContext } from "./ProductCard"; + +export const ProductImage = ({ img = "" }) => { + const { product } = useContext(ProductContext); + let imgToShow: string; + + if (img) { + imgToShow = img; + } else if (product.img) { + imgToShow = product.img; + } else { + imgToShow = noImg; + } + return ; +}; diff --git a/src/02-components-patterns/components/ProductTitle.tsx b/src/02-components-patterns/components/ProductTitle.tsx new file mode 100644 index 000000000..cf449a028 --- /dev/null +++ b/src/02-components-patterns/components/ProductTitle.tsx @@ -0,0 +1,12 @@ +import { useContext } from "react"; +import styles from "../../02-components-patterns/styles/styles.module.css"; +import { ProductContext } from "./ProductCard"; + +export const ProductTitle = ({ title }: { title: string }) => { + const { product } = useContext(ProductContext); + return ( + + {title ? title : product.title} + + ); +}; diff --git a/src/02-components-patterns/components/index.ts b/src/02-components-patterns/components/index.ts new file mode 100644 index 000000000..620279c6d --- /dev/null +++ b/src/02-components-patterns/components/index.ts @@ -0,0 +1,16 @@ +import { ProductButtons } from "./ProductButtons"; +import ProductCard from "./ProductCard"; +import { ProductImage } from "./ProductImages"; +import { ProductTitle } from "./ProductTitle"; + +export { ProductImage } from "./ProductImages"; +export { ProductTitle } from "./ProductTitle"; +export { ProductButtons } from "./ProductButtons"; + +export const ProductCardHoc = Object.assign(ProductCard, { + Title: ProductTitle, + Button: ProductButtons, + Image: ProductImage, +}); + +export default ProductCardHoc; diff --git a/src/02-components-patterns/hooks/useCounter.ts b/src/02-components-patterns/hooks/useCounter.ts new file mode 100644 index 000000000..7e3c83221 --- /dev/null +++ b/src/02-components-patterns/hooks/useCounter.ts @@ -0,0 +1,12 @@ +import { useState } from "react"; + +const useCounter = () => { + const [counter, setCounter] = useState(0); + + const increaseBy = (value: number) => { + setCounter((prev) => Math.max(prev + value, 0)); + }; + return { counter, increaseBy }; +}; + +export default useCounter; diff --git a/src/02-components-patterns/interfaces/interfaces.ts b/src/02-components-patterns/interfaces/interfaces.ts new file mode 100644 index 000000000..12d7132a0 --- /dev/null +++ b/src/02-components-patterns/interfaces/interfaces.ts @@ -0,0 +1,30 @@ +import { ReactElement } from "react"; +import { JsxElement } from "typescript"; + +export interface Props { + product: Product; + children?: ReactElement | ReactElement[]; +} +export interface Product { + id: string; + title: string; + img?: string; +} + +export interface ProductButtonsProps { + increaseBy: (arg: number) => void; + counter: number; +} + +export interface ProductContextProps { + counter: number; + increaseBy: (value: number) => void; + product: Product; +} + +export interface ProductCardHocProps { + ({ children, product }: Props): JSX.Element; + Title: ({ title }: { title?: string }) => JSX.Element; + Button: () => JSX.Element; + Image: ({ img }: { img?: string }) => JSX.Element; +} diff --git a/src/02-components-patterns/pages/ShoppingPage.tsx b/src/02-components-patterns/pages/ShoppingPage.tsx new file mode 100644 index 000000000..af4666778 --- /dev/null +++ b/src/02-components-patterns/pages/ShoppingPage.tsx @@ -0,0 +1,32 @@ +import React from "react"; +import ProductCardHoc from "../components"; +import ProductCard from "../components/ProductCard"; + +const product = { + id: "1", + title: "Coffe Mud - Card", + img: "./coffee-mug.png", +}; + +const ShoppingPage = () => { + return ( +
+ {/* + + + */} + + + + + +
+ ); +}; + +export default ShoppingPage; diff --git a/src/02-components-patterns/styles/styles.module.css b/src/02-components-patterns/styles/styles.module.css new file mode 100644 index 000000000..48ab3f819 --- /dev/null +++ b/src/02-components-patterns/styles/styles.module.css @@ -0,0 +1,62 @@ + + +.productCard { + background-color: white; + border-radius: 15px; + color: black; + padding-bottom: 5px; + width: 250px; + margin-right: 5px; + margin-top: 5px; +} + +.productImg { + border-radius: 15px 15px 0px 0px; + width: 100%; +} + +.productDescription { + margin: 10px; +} + +.buttonsContainer { + margin: 10px; + display: flex; + flex-direction: row; +} + +.buttonMinus { + cursor: pointer; + background-color: transparent; + border: 1px solid black; + border-radius: 5px 0px 0px 5px; + font-size: 20px; + width: 30px; +} + +.buttonMinus:hover { + background-color: rgba(0, 0, 0, 0.1); +} + +.countLabel { + border-bottom: 1px solid black; + border-top: 1px solid black; + font-size: 16px; + height: 25px; + padding-top: 5px; + text-align: center; + width: 30px; +} + +.buttonAdd { + cursor: pointer; + background-color: transparent; + border: 1px solid black; + border-radius: 0px 5px 5px 0px; + font-size: 20px; + width: 30px; +} + +.buttonAdd:hover { + background-color: rgba(0, 0, 0, 0.1); +} \ No newline at end of file diff --git a/src/routes/Navigation.tsx b/src/routes/Navigation.tsx index a9bfe83b0..43687328e 100644 --- a/src/routes/Navigation.tsx +++ b/src/routes/Navigation.tsx @@ -1,45 +1,46 @@ +import { Suspense } from "react"; import { BrowserRouter as Router, - Switch, + Routes, Route, - NavLink -} from 'react-router-dom'; + NavLink, + Navigate, +} from "react-router-dom"; -import logo from '../logo.svg'; +import logo from "../logo.svg"; +import { routes } from "./routes"; export const Navigation = () => { return ( - -
- + ...Loading}> + +
+ - {/* A looks through its children s and + {/* A looks through its children s and renders the first one that matches the current URL. */} - - -

About

-
- -

Users

-
- -

Home

-
-
-
-
+ + {routes.map((route) => ( + } /> + ))} + } /> + +
+
+ ); -} \ No newline at end of file +}; diff --git a/src/routes/routes.ts b/src/routes/routes.ts new file mode 100644 index 000000000..f782e874f --- /dev/null +++ b/src/routes/routes.ts @@ -0,0 +1,20 @@ +import { LazyExoticComponent } from "react"; + +import ShoppingPage from "../02-components-patterns/pages/ShoppingPage"; + +type JSXComponent = () => JSX.Element; +interface Routes { + to: string; + path: string; + Component: LazyExoticComponent | JSXComponent; + name: string; +} + +export const routes: Routes[] = [ + { + to: "shoppingPage", + path: "/shoppingPage", + Component: ShoppingPage, + name: "Lazy-1", + }, +]; diff --git a/yarn.lock b/yarn.lock index de24f7d62..a290b34ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1091,13 +1091,6 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" - integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== - dependencies: - regenerator-runtime "^0.13.4" - "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.12.18" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b" @@ -1105,6 +1098,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" + integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" @@ -1448,6 +1448,11 @@ schema-utils "^2.6.5" source-map "^0.7.3" +"@remix-run/router@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.2.1.tgz#812edd4104a15a493dda1ccac0b352270d7a188c" + integrity sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ== + "@rollup/plugin-node-resolve@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" @@ -5489,18 +5494,6 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -history@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -5510,13 +5503,6 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.1.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - hoopy@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" @@ -6187,11 +6173,6 @@ is-wsl@^2.1.1, is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -7053,7 +7034,7 @@ loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== -loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -7259,14 +7240,6 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -mini-create-react-context@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" - integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== - dependencies: - "@babel/runtime" "^7.12.1" - tiny-warning "^1.0.3" - mini-css-extract-plugin@0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" @@ -8026,13 +7999,6 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -8898,7 +8864,7 @@ prompts@2.4.0, prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -9118,7 +9084,7 @@ react-error-overlay@^6.0.9: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== -react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -9133,34 +9099,20 @@ react-refresh@^0.8.3: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== -react-router-dom@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" - integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.2.1" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" - integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - mini-create-react-context "^0.4.0" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" +react-router-dom@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.6.2.tgz#bbf1f9b45855b218d22fc2d294b79408a084740a" + integrity sha512-6SCDXxRQqW5af8ImOqKza7icmQ47/EMbz572uFjzvcArg3lZ+04PxSPp8qGs+p2Y+q+b+S/AjXv8m8dyLndIIA== + dependencies: + "@remix-run/router" "1.2.1" + react-router "6.6.2" + +react-router@6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.6.2.tgz#556f7b56cff7fe32c5c02429fef3fcb2ecd08111" + integrity sha512-uJPG55Pek3orClbURDvfljhqFvMgJRo59Pktywkk8hUUkTY2aRfza8Yhl/vZQXs+TNQyr6tu+uqz/fLxPICOGQ== + dependencies: + "@remix-run/router" "1.2.1" react-scripts@4.0.3: version "4.0.3" @@ -9526,11 +9478,6 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - resolve-url-loader@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" @@ -10626,16 +10573,6 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= -tiny-invariant@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" - integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== - -tiny-warning@^1.0.0, tiny-warning@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -11058,11 +10995,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"