diff --git a/frontend/src/packages/editor/components/CodeBlock.tsx b/frontend/src/packages/editor/components/CodeBlock.tsx index 77333ca4..d3014fab 100644 --- a/frontend/src/packages/editor/components/CodeBlock.tsx +++ b/frontend/src/packages/editor/components/CodeBlock.tsx @@ -26,7 +26,6 @@ import 'prismjs/components/prism-typescript'; import 'prismjs/components/prism-tsx'; import 'prismjs/components/prism-markdown'; import 'prismjs/components/prism-python'; -import 'prismjs/components/prism-php'; import 'prismjs/components/prism-sql'; import 'prismjs/components/prism-java'; import 'prismjs/components/prism-c'; @@ -87,7 +86,6 @@ const LanguageSelect = (props: JSX.IntrinsicElements['select']) => { - diff --git a/next/package-lock.json b/next/package-lock.json index 04752933..9ed7858b 100644 --- a/next/package-lock.json +++ b/next/package-lock.json @@ -11,12 +11,15 @@ "@emotion/react": "11.10.4", "@emotion/styled": "11.10.4", "@mui/material": "5.10.6", + "@types/prismjs": "^1.26.0", "@types/styled-components": "5.1.25", "framer-motion": "7.3.6", "next": "12.3.1", + "prismjs": "^1.29.0", "react": "18.2.0", "react-dom": "18.2.0", "react-is": "18.2.0", + "redux-persist": "^6.0.0", "sharp": "0.31.0", "styled-components": "5.3.5" }, @@ -1204,6 +1207,11 @@ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, + "node_modules/@types/prismjs": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.0.tgz", + "integrity": "sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==" + }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -3863,6 +3871,14 @@ "node": ">= 0.8.0" } }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -3994,6 +4010,23 @@ "node": ">= 6" } }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/redux-persist": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", + "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", + "peerDependencies": { + "redux": ">4.0.0" + } + }, "node_modules/regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -5542,6 +5575,11 @@ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, + "@types/prismjs": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.0.tgz", + "integrity": "sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==" + }, "@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -7488,6 +7526,11 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" + }, "prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -7587,6 +7630,21 @@ "util-deprecate": "^1.0.1" } }, + "redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "peer": true, + "requires": { + "@babel/runtime": "^7.9.2" + } + }, + "redux-persist": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", + "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", + "requires": {} + }, "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", diff --git a/next/package.json b/next/package.json index 376e7a92..ca3f8d42 100644 --- a/next/package.json +++ b/next/package.json @@ -13,12 +13,15 @@ "@emotion/react": "11.10.4", "@emotion/styled": "11.10.4", "@mui/material": "5.10.6", + "@types/prismjs": "^1.26.0", "@types/styled-components": "5.1.25", "framer-motion": "7.3.6", "next": "12.3.1", + "prismjs": "^1.29.0", "react": "18.2.0", "react-dom": "18.2.0", "react-is": "18.2.0", + "redux-persist": "^6.0.0", "sharp": "0.31.0", "styled-components": "5.3.5" }, diff --git a/next/src/components/blog/Blog-styled.tsx b/next/src/components/blog/Blog-styled.tsx index 68f85fce..546c680e 100644 --- a/next/src/components/blog/Blog-styled.tsx +++ b/next/src/components/blog/Blog-styled.tsx @@ -50,6 +50,27 @@ const ParagraphContainer = styled.div` } `; +const CodeContainer = styled.div` + margin: 0em; + padding-left: 0.5em; + font-family: monospace; + background: #f5f2f0; +` + +const CodeLineWrapper = styled.pre` + margin: 0px !important; + padding: 1.5px !important; + overflow: hide !important; + ` + + const CodeLine = styled.code` + margin: 0px !important; + padding: 0px !important; + font-size: 0.85rem !important; + white-space: pre-wrap !important; + word-break: break-word !important; + ` + const BlogContainer = styled.div` font-size: 1.25rem; margin: 0px 60px; @@ -77,4 +98,7 @@ export { BlogContainer, BlogHeading, ParagraphContainer, + CodeContainer, + CodeLine, + CodeLineWrapper }; diff --git a/next/src/components/blog/Blog.tsx b/next/src/components/blog/Blog.tsx index 629c4a85..3b267227 100644 --- a/next/src/components/blog/Blog.tsx +++ b/next/src/components/blog/Blog.tsx @@ -6,13 +6,63 @@ import { ImagePlaceholder, AlignedText, BlogContainer, + CodeContainer, + CodeLine, + CodeLineWrapper, } from "./Blog-styled"; import type { Element, Block } from "./types"; +import Prism from 'prismjs'; +import 'prismjs/themes/prism.css'; +import { useEffect } from "react"; + +// Supported Languages +// +// For all languages supported by Prism, visit https://prismjs.com/ +import 'prismjs/components/prism-javascript'; +import 'prismjs/components/prism-jsx'; +import 'prismjs/components/prism-typescript'; +import 'prismjs/components/prism-tsx'; +import 'prismjs/components/prism-markdown'; +import 'prismjs/components/prism-python'; +import 'prismjs/components/prism-sql'; +import 'prismjs/components/prism-java'; +import 'prismjs/components/prism-c'; +import 'prismjs/components/prism-cpp'; +import 'prismjs/components/prism-csharp'; +import 'prismjs/components/prism-prolog'; +import 'prismjs/components/prism-bash'; +import 'prismjs/components/prism-latex'; +import 'prismjs/components/prism-rust'; +import 'prismjs/components/prism-go' +import 'prismjs/components/prism-haskell'; +import 'prismjs/components/prism-perl'; + const Block = ({ element }: { element: Element }) => { + useEffect(() => { + Prism.highlightAll(); + }, []); + if (element.type === "image") { return {element.url}; } + + if (element.type === "code") { + const language = "language-" + (element.language ?? "python"); + + return ( + + {element.children.map(({ text, ...textStyle }, idx) => ( + + + {text} + + + ))} + + ) + } + return ( {element.children.map(({ text, link, ...textStyle }, idx) => ( diff --git a/next/src/components/blog/types.ts b/next/src/components/blog/types.ts index 6038b276..69868152 100644 --- a/next/src/components/blog/types.ts +++ b/next/src/components/blog/types.ts @@ -6,7 +6,7 @@ export interface Document { export type Block = Element[]; -export type Element = Paragraph | Image; +export type Element = Paragraph | Image | Code; interface Paragraph { type: "paragraph"; @@ -18,11 +18,22 @@ interface Image { url: string; } +interface Code { + type: "code"; + language: String; + children: CodeLine[] +} + interface Text extends TextStyle { text: string; link?: string; } +interface CodeLine extends TextStyle { + text: string; + language: string; +} + export interface TextStyle { bold?: boolean; italic?: boolean; diff --git a/next/src/components/footer/Footer.tsx b/next/src/components/footer/Footer.tsx index 531372ea..4a93fec8 100644 --- a/next/src/components/footer/Footer.tsx +++ b/next/src/components/footer/Footer.tsx @@ -29,6 +29,7 @@ const FooterComponent = styled.footer` background-color: #A09FE3; padding: 2rem; display: flex; + margin-top: 1.5em; flex-direction: column; @media ${device.tablet} { diff --git a/next/src/pages/blog/[bid].tsx b/next/src/pages/blog/[bid].tsx index 4b52d12e..812be688 100644 --- a/next/src/pages/blog/[bid].tsx +++ b/next/src/pages/blog/[bid].tsx @@ -49,6 +49,7 @@ export const getServerSideProps: GetServerSideProps = async ({ params }) => { method: "GET", } ).then((res) => res.text()); + return { props: { data: JSON.parse(data).Contents } }; }; diff --git a/next/yarn.lock b/next/yarn.lock index c71c28f8..b1c680f3 100644 --- a/next/yarn.lock +++ b/next/yarn.lock @@ -22,7 +22,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz" integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== -"@babel/core@7.19.1": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@7.19.1": version "7.19.1" resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz" integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw== @@ -182,7 +182,7 @@ core-js-pure "^3.25.1" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.19.0" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz" integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== @@ -281,7 +281,7 @@ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== -"@emotion/react@11.10.4": +"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@11.10.4": version "11.10.4" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz" integrity sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA== @@ -311,7 +311,7 @@ resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz" integrity sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w== -"@emotion/styled@11.10.4": +"@emotion/styled@^11.3.0", "@emotion/styled@11.10.4": version "11.10.4" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz" integrity sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ== @@ -644,6 +644,11 @@ resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/prismjs@^1.26.0": + version "1.26.0" + resolved "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.0.tgz" + integrity sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ== + "@types/prop-types@*", "@types/prop-types@^15.7.5": version "15.7.5" resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" @@ -663,7 +668,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@17.0.44": +"@types/react@*", "@types/react@^17.0.0 || ^18.0.0", "@types/react@17.0.44": version "17.0.44" resolved "https://registry.npmjs.org/@types/react/-/react-17.0.44.tgz" integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g== @@ -735,7 +740,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.8.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.8.0: version "8.8.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== @@ -892,7 +897,7 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.21.3: +browserslist@^4.21.3, "browserslist@>= 4.21.0": version "4.21.4" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== @@ -1267,7 +1272,7 @@ eslint-module-utils@^2.7.3: dependencies: debug "^3.2.7" -eslint-plugin-import@^2.25.2: +eslint-plugin-import@*, eslint-plugin-import@^2.25.2: version "2.26.0" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== @@ -1355,7 +1360,7 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@8.11.0: +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^7.23.0 || ^8.0.0", eslint@>=5, eslint@8.11.0: version "8.11.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz" integrity sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA== @@ -2029,7 +2034,7 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -next@12.3.1: +next@>=10.2.0, next@12.3.1: version "12.3.1" resolved "https://registry.npmjs.org/next/-/next-12.3.1.tgz" integrity sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw== @@ -2245,6 +2250,11 @@ prelude-ls@^1.2.1: resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prismjs@^1.29.0: + version "1.29.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + prop-types@^15.6.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" @@ -2282,7 +2292,7 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-dom@18.2.0: +"react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.2 || ^18.0.0-0", react-dom@^18.0.0, "react-dom@>= 16.8.0", react-dom@>=16.6.0, react-dom@18.2.0: version "18.2.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== @@ -2300,7 +2310,11 @@ react-is@^16.7.0: resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +<<<<<<< HEAD +react-is@^18.2.0, "react-is@>= 16.8.0", react-is@18.2.0: +======= react-is@^18.2.0, react-is@18.2.0: +>>>>>>> main version "18.2.0" resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== @@ -2315,7 +2329,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@18.2.0: +"react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18.0.0-0", react@^18.0.0, react@^18.2.0, "react@>= 16.8.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", react@>=16.6.0, react@>=16.8.0, react@18.2.0: version "18.2.0" resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -2331,6 +2345,18 @@ readable-stream@^3.1.1, readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +redux-persist@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz" + integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== + +redux@>4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz" + integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== + dependencies: + "@babel/runtime" "^7.9.2" + regenerator-runtime@^0.13.4: version "0.13.9" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" @@ -2582,7 +2608,7 @@ style-value-types@5.1.2: hey-listen "^1.0.8" tslib "2.4.0" -styled-components@5.3.5: +"styled-components@>= 2", styled-components@5.3.5: version "5.3.5" resolved "https://registry.npmjs.org/styled-components/-/styled-components-5.3.5.tgz" integrity sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg== @@ -2711,7 +2737,7 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -typescript@4.8.3: +"typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=3.3.1, typescript@4.8.3: version "4.8.3" resolved "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz" integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==