code syntax highlights
This commit is contained in:
		
							parent
							
								
									f17a08a827
								
							
						
					
					
						commit
						761314c20b
					
				|  | @ -25,7 +25,8 @@ Expect frequent improvements. | ||||||
| 
 | 
 | ||||||
| **Recent updates:** | **Recent updates:** | ||||||
| 
 | 
 | ||||||
| - [x] Added markdown support | - [x] Added markdown support (3/17/23) | ||||||
|  | - [x] Add code syntax highlighting (3/18/23) | ||||||
| 
 | 
 | ||||||
| ## Modifications | ## Modifications | ||||||
| 
 | 
 | ||||||
|  | @ -82,3 +83,7 @@ You should be able to start chatting. | ||||||
| ## Contact | ## Contact | ||||||
| 
 | 
 | ||||||
| If you have any questions, feel free to reach out to me on [Twitter](https://twitter.com/mckaywrigley). | If you have any questions, feel free to reach out to me on [Twitter](https://twitter.com/mckaywrigley). | ||||||
|  | 
 | ||||||
|  | ## Contributors | ||||||
|  | 
 | ||||||
|  | @PeterTakahashi: Added input support for Japanese users (3/17/23) | ||||||
|  |  | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| import { Message } from "@/types"; | import { Message } from "@/types"; | ||||||
| import { FC } from "react"; | import { FC } from "react"; | ||||||
| import ReactMarkdown from "react-markdown"; | import ReactMarkdown from "react-markdown"; | ||||||
|  | import { CodeBlock } from "../Markdown/CodeBlock"; | ||||||
| 
 | 
 | ||||||
| interface Props { | interface Props { | ||||||
|   message: Message; |   message: Message; | ||||||
|  | @ -16,7 +17,30 @@ export const ChatMessage: FC<Props> = ({ message }) => { | ||||||
|         <div className="mr-4 font-bold min-w-[40px]">{message.role === "assistant" ? "AI:" : "You:"}</div> |         <div className="mr-4 font-bold min-w-[40px]">{message.role === "assistant" ? "AI:" : "You:"}</div> | ||||||
| 
 | 
 | ||||||
|         <div className="prose dark:prose-invert"> |         <div className="prose dark:prose-invert"> | ||||||
|           <ReactMarkdown>{message.content}</ReactMarkdown> |           <ReactMarkdown | ||||||
|  |             components={{ | ||||||
|  |               code({ node, inline, className, children, ...props }) { | ||||||
|  |                 const match = /language-(\w+)/.exec(className || ""); | ||||||
|  |                 return !inline && match ? ( | ||||||
|  |                   <CodeBlock | ||||||
|  |                     key={Math.random()} | ||||||
|  |                     language={match[1]} | ||||||
|  |                     value={String(children).replace(/\n$/, "")} | ||||||
|  |                     {...props} | ||||||
|  |                   /> | ||||||
|  |                 ) : ( | ||||||
|  |                   <code | ||||||
|  |                     className={className} | ||||||
|  |                     {...props} | ||||||
|  |                   > | ||||||
|  |                     {children} | ||||||
|  |                   </code> | ||||||
|  |                 ); | ||||||
|  |               } | ||||||
|  |             }} | ||||||
|  |           > | ||||||
|  |             {message.content} | ||||||
|  |           </ReactMarkdown> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
|  | @ -0,0 +1,40 @@ | ||||||
|  | import { FC, useState } from "react"; | ||||||
|  | import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; | ||||||
|  | import { tomorrow } from "react-syntax-highlighter/dist/cjs/styles/prism"; | ||||||
|  | 
 | ||||||
|  | interface Props { | ||||||
|  |   language: string; | ||||||
|  |   value: string; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export const CodeBlock: FC<Props> = ({ language, value }) => { | ||||||
|  |   const [buttonText, setButtonText] = useState("Copy"); | ||||||
|  | 
 | ||||||
|  |   const copyToClipboard = () => { | ||||||
|  |     navigator.clipboard.writeText(value).then(() => { | ||||||
|  |       setButtonText("Copied!"); | ||||||
|  | 
 | ||||||
|  |       setTimeout(() => { | ||||||
|  |         setButtonText("Copy"); | ||||||
|  |       }, 2000); | ||||||
|  |     }); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   return ( | ||||||
|  |     <div className="relative"> | ||||||
|  |       <SyntaxHighlighter | ||||||
|  |         language={language} | ||||||
|  |         style={tomorrow} | ||||||
|  |       > | ||||||
|  |         {value} | ||||||
|  |       </SyntaxHighlighter> | ||||||
|  | 
 | ||||||
|  |       <button | ||||||
|  |         className="absolute top-2 right-2 text-white bg-blue-600 py-1 px-2 rounded focus:outline-none hover:bg-blue-700" | ||||||
|  |         onClick={copyToClipboard} | ||||||
|  |       > | ||||||
|  |         {buttonText} | ||||||
|  |       </button> | ||||||
|  |     </div> | ||||||
|  |   ); | ||||||
|  | }; | ||||||
|  | @ -20,10 +20,12 @@ | ||||||
|         "react": "18.2.0", |         "react": "18.2.0", | ||||||
|         "react-dom": "18.2.0", |         "react-dom": "18.2.0", | ||||||
|         "react-markdown": "^8.0.5", |         "react-markdown": "^8.0.5", | ||||||
|  |         "react-syntax-highlighter": "^15.5.0", | ||||||
|         "typescript": "4.9.5" |         "typescript": "4.9.5" | ||||||
|       }, |       }, | ||||||
|       "devDependencies": { |       "devDependencies": { | ||||||
|         "@tailwindcss/typography": "^0.5.9", |         "@tailwindcss/typography": "^0.5.9", | ||||||
|  |         "@types/react-syntax-highlighter": "^15.5.6", | ||||||
|         "autoprefixer": "^10.4.14", |         "autoprefixer": "^10.4.14", | ||||||
|         "postcss": "^8.4.21", |         "postcss": "^8.4.21", | ||||||
|         "tailwindcss": "^3.2.7" |         "tailwindcss": "^3.2.7" | ||||||
|  | @ -509,6 +511,15 @@ | ||||||
|         "@types/react": "*" |         "@types/react": "*" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/@types/react-syntax-highlighter": { | ||||||
|  |       "version": "15.5.6", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.6.tgz", | ||||||
|  |       "integrity": "sha512-i7wFuLbIAFlabTeD2I1cLjEOrG/xdMa/rpx2zwzAoGHuXJDhSqp9BSfDlMHSh9JSuNfxHk9eEmMX6D55GiyjGg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@types/react": "*" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/@types/scheduler": { |     "node_modules/@types/scheduler": { | ||||||
|       "version": "0.16.2", |       "version": "0.16.2", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", |       "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", | ||||||
|  | @ -1027,6 +1038,33 @@ | ||||||
|         "url": "https://github.com/chalk/chalk?sponsor=1" |         "url": "https://github.com/chalk/chalk?sponsor=1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/character-entities": { | ||||||
|  |       "version": "1.2.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", | ||||||
|  |       "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/character-entities-legacy": { | ||||||
|  |       "version": "1.1.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", | ||||||
|  |       "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/character-reference-invalid": { | ||||||
|  |       "version": "1.1.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", | ||||||
|  |       "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/chokidar": { |     "node_modules/chokidar": { | ||||||
|       "version": "3.5.3", |       "version": "3.5.3", | ||||||
|       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", |       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", | ||||||
|  | @ -1947,6 +1985,18 @@ | ||||||
|         "reusify": "^1.0.4" |         "reusify": "^1.0.4" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/fault": { | ||||||
|  |       "version": "1.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", | ||||||
|  |       "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "format": "^0.2.0" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/file-entry-cache": { |     "node_modules/file-entry-cache": { | ||||||
|       "version": "6.0.1", |       "version": "6.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", |       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", | ||||||
|  | @ -2041,6 +2091,14 @@ | ||||||
|         "node": ">= 6" |         "node": ">= 6" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/format": { | ||||||
|  |       "version": "0.2.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", | ||||||
|  |       "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=0.4.x" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/fraction.js": { |     "node_modules/fraction.js": { | ||||||
|       "version": "4.2.0", |       "version": "4.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", |       "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", | ||||||
|  | @ -2321,6 +2379,15 @@ | ||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/hast-util-parse-selector": { | ||||||
|  |       "version": "2.2.5", | ||||||
|  |       "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", | ||||||
|  |       "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", | ||||||
|  |       "funding": { | ||||||
|  |         "type": "opencollective", | ||||||
|  |         "url": "https://opencollective.com/unified" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/hast-util-whitespace": { |     "node_modules/hast-util-whitespace": { | ||||||
|       "version": "2.0.1", |       "version": "2.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", |       "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", | ||||||
|  | @ -2330,6 +2397,60 @@ | ||||||
|         "url": "https://opencollective.com/unified" |         "url": "https://opencollective.com/unified" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/hastscript": { | ||||||
|  |       "version": "6.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", | ||||||
|  |       "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "@types/hast": "^2.0.0", | ||||||
|  |         "comma-separated-tokens": "^1.0.0", | ||||||
|  |         "hast-util-parse-selector": "^2.0.0", | ||||||
|  |         "property-information": "^5.0.0", | ||||||
|  |         "space-separated-tokens": "^1.0.0" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "type": "opencollective", | ||||||
|  |         "url": "https://opencollective.com/unified" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/hastscript/node_modules/comma-separated-tokens": { | ||||||
|  |       "version": "1.0.8", | ||||||
|  |       "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", | ||||||
|  |       "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/hastscript/node_modules/property-information": { | ||||||
|  |       "version": "5.6.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", | ||||||
|  |       "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "xtend": "^4.0.0" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/hastscript/node_modules/space-separated-tokens": { | ||||||
|  |       "version": "1.1.5", | ||||||
|  |       "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", | ||||||
|  |       "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/highlight.js": { | ||||||
|  |       "version": "10.7.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", | ||||||
|  |       "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", | ||||||
|  |       "engines": { | ||||||
|  |         "node": "*" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/ignore": { |     "node_modules/ignore": { | ||||||
|       "version": "5.2.4", |       "version": "5.2.4", | ||||||
|       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", |       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", | ||||||
|  | @ -2393,6 +2514,28 @@ | ||||||
|         "node": ">= 0.4" |         "node": ">= 0.4" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/is-alphabetical": { | ||||||
|  |       "version": "1.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", | ||||||
|  |       "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/is-alphanumerical": { | ||||||
|  |       "version": "1.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", | ||||||
|  |       "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "is-alphabetical": "^1.0.0", | ||||||
|  |         "is-decimal": "^1.0.0" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/is-arguments": { |     "node_modules/is-arguments": { | ||||||
|       "version": "1.1.1", |       "version": "1.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", |       "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", | ||||||
|  | @ -2517,6 +2660,15 @@ | ||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/is-decimal": { | ||||||
|  |       "version": "1.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", | ||||||
|  |       "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/is-docker": { |     "node_modules/is-docker": { | ||||||
|       "version": "2.2.1", |       "version": "2.2.1", | ||||||
|       "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", |       "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", | ||||||
|  | @ -2550,6 +2702,15 @@ | ||||||
|         "node": ">=0.10.0" |         "node": ">=0.10.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/is-hexadecimal": { | ||||||
|  |       "version": "1.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", | ||||||
|  |       "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/is-map": { |     "node_modules/is-map": { | ||||||
|       "version": "2.0.2", |       "version": "2.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", |       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", | ||||||
|  | @ -2884,6 +3045,19 @@ | ||||||
|         "loose-envify": "cli.js" |         "loose-envify": "cli.js" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/lowlight": { | ||||||
|  |       "version": "1.20.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", | ||||||
|  |       "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "fault": "^1.0.0", | ||||||
|  |         "highlight.js": "~10.7.0" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/lru-cache": { |     "node_modules/lru-cache": { | ||||||
|       "version": "6.0.0", |       "version": "6.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", |       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", | ||||||
|  | @ -3784,6 +3958,23 @@ | ||||||
|         "node": ">=6" |         "node": ">=6" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/parse-entities": { | ||||||
|  |       "version": "2.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", | ||||||
|  |       "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "character-entities": "^1.0.0", | ||||||
|  |         "character-entities-legacy": "^1.0.0", | ||||||
|  |         "character-reference-invalid": "^1.0.0", | ||||||
|  |         "is-alphanumerical": "^1.0.0", | ||||||
|  |         "is-decimal": "^1.0.0", | ||||||
|  |         "is-hexadecimal": "^1.0.0" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/path-exists": { |     "node_modules/path-exists": { | ||||||
|       "version": "4.0.0", |       "version": "4.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", |       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", | ||||||
|  | @ -3981,6 +4172,14 @@ | ||||||
|         "node": ">= 0.8.0" |         "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": { |     "node_modules/prop-types": { | ||||||
|       "version": "15.8.1", |       "version": "15.8.1", | ||||||
|       "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", |       "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", | ||||||
|  | @ -4102,6 +4301,21 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", |       "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", | ||||||
|       "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" |       "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/react-syntax-highlighter": { | ||||||
|  |       "version": "15.5.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz", | ||||||
|  |       "integrity": "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "@babel/runtime": "^7.3.1", | ||||||
|  |         "highlight.js": "^10.4.1", | ||||||
|  |         "lowlight": "^1.17.0", | ||||||
|  |         "prismjs": "^1.27.0", | ||||||
|  |         "refractor": "^3.6.0" | ||||||
|  |       }, | ||||||
|  |       "peerDependencies": { | ||||||
|  |         "react": ">= 0.14.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/read-cache": { |     "node_modules/read-cache": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", | ||||||
|  | @ -4123,6 +4337,28 @@ | ||||||
|         "node": ">=8.10.0" |         "node": ">=8.10.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/refractor": { | ||||||
|  |       "version": "3.6.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", | ||||||
|  |       "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "hastscript": "^6.0.0", | ||||||
|  |         "parse-entities": "^2.0.0", | ||||||
|  |         "prismjs": "~1.27.0" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "type": "github", | ||||||
|  |         "url": "https://github.com/sponsors/wooorm" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/refractor/node_modules/prismjs": { | ||||||
|  |       "version": "1.27.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", | ||||||
|  |       "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=6" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/regenerator-runtime": { |     "node_modules/regenerator-runtime": { | ||||||
|       "version": "0.13.11", |       "version": "0.13.11", | ||||||
|       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", |       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", | ||||||
|  | @ -4955,7 +5191,6 @@ | ||||||
|       "version": "4.0.2", |       "version": "4.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", |       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", | ||||||
|       "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", |       "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", | ||||||
|       "dev": true, |  | ||||||
|       "engines": { |       "engines": { | ||||||
|         "node": ">=0.4" |         "node": ">=0.4" | ||||||
|       } |       } | ||||||
|  | @ -5289,6 +5524,15 @@ | ||||||
|         "@types/react": "*" |         "@types/react": "*" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "@types/react-syntax-highlighter": { | ||||||
|  |       "version": "15.5.6", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.6.tgz", | ||||||
|  |       "integrity": "sha512-i7wFuLbIAFlabTeD2I1cLjEOrG/xdMa/rpx2zwzAoGHuXJDhSqp9BSfDlMHSh9JSuNfxHk9eEmMX6D55GiyjGg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@types/react": "*" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "@types/scheduler": { |     "@types/scheduler": { | ||||||
|       "version": "0.16.2", |       "version": "0.16.2", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", |       "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", | ||||||
|  | @ -5625,6 +5869,21 @@ | ||||||
|         "supports-color": "^7.1.0" |         "supports-color": "^7.1.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "character-entities": { | ||||||
|  |       "version": "1.2.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", | ||||||
|  |       "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" | ||||||
|  |     }, | ||||||
|  |     "character-entities-legacy": { | ||||||
|  |       "version": "1.1.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", | ||||||
|  |       "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" | ||||||
|  |     }, | ||||||
|  |     "character-reference-invalid": { | ||||||
|  |       "version": "1.1.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", | ||||||
|  |       "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" | ||||||
|  |     }, | ||||||
|     "chokidar": { |     "chokidar": { | ||||||
|       "version": "3.5.3", |       "version": "3.5.3", | ||||||
|       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", |       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", | ||||||
|  | @ -6323,6 +6582,14 @@ | ||||||
|         "reusify": "^1.0.4" |         "reusify": "^1.0.4" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "fault": { | ||||||
|  |       "version": "1.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", | ||||||
|  |       "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", | ||||||
|  |       "requires": { | ||||||
|  |         "format": "^0.2.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "file-entry-cache": { |     "file-entry-cache": { | ||||||
|       "version": "6.0.1", |       "version": "6.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", |       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", | ||||||
|  | @ -6385,6 +6652,11 @@ | ||||||
|         "mime-types": "^2.1.12" |         "mime-types": "^2.1.12" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "format": { | ||||||
|  |       "version": "0.2.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", | ||||||
|  |       "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==" | ||||||
|  |     }, | ||||||
|     "fraction.js": { |     "fraction.js": { | ||||||
|       "version": "4.2.0", |       "version": "4.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", |       "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", | ||||||
|  | @ -6570,11 +6842,53 @@ | ||||||
|         "has-symbols": "^1.0.2" |         "has-symbols": "^1.0.2" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "hast-util-parse-selector": { | ||||||
|  |       "version": "2.2.5", | ||||||
|  |       "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", | ||||||
|  |       "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==" | ||||||
|  |     }, | ||||||
|     "hast-util-whitespace": { |     "hast-util-whitespace": { | ||||||
|       "version": "2.0.1", |       "version": "2.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", |       "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", | ||||||
|       "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==" |       "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==" | ||||||
|     }, |     }, | ||||||
|  |     "hastscript": { | ||||||
|  |       "version": "6.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", | ||||||
|  |       "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", | ||||||
|  |       "requires": { | ||||||
|  |         "@types/hast": "^2.0.0", | ||||||
|  |         "comma-separated-tokens": "^1.0.0", | ||||||
|  |         "hast-util-parse-selector": "^2.0.0", | ||||||
|  |         "property-information": "^5.0.0", | ||||||
|  |         "space-separated-tokens": "^1.0.0" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "comma-separated-tokens": { | ||||||
|  |           "version": "1.0.8", | ||||||
|  |           "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", | ||||||
|  |           "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" | ||||||
|  |         }, | ||||||
|  |         "property-information": { | ||||||
|  |           "version": "5.6.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", | ||||||
|  |           "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", | ||||||
|  |           "requires": { | ||||||
|  |             "xtend": "^4.0.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "space-separated-tokens": { | ||||||
|  |           "version": "1.1.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", | ||||||
|  |           "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "highlight.js": { | ||||||
|  |       "version": "10.7.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", | ||||||
|  |       "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" | ||||||
|  |     }, | ||||||
|     "ignore": { |     "ignore": { | ||||||
|       "version": "5.2.4", |       "version": "5.2.4", | ||||||
|       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", |       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", | ||||||
|  | @ -6623,6 +6937,20 @@ | ||||||
|         "side-channel": "^1.0.4" |         "side-channel": "^1.0.4" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "is-alphabetical": { | ||||||
|  |       "version": "1.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", | ||||||
|  |       "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" | ||||||
|  |     }, | ||||||
|  |     "is-alphanumerical": { | ||||||
|  |       "version": "1.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", | ||||||
|  |       "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", | ||||||
|  |       "requires": { | ||||||
|  |         "is-alphabetical": "^1.0.0", | ||||||
|  |         "is-decimal": "^1.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "is-arguments": { |     "is-arguments": { | ||||||
|       "version": "1.1.1", |       "version": "1.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", |       "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", | ||||||
|  | @ -6694,6 +7022,11 @@ | ||||||
|         "has-tostringtag": "^1.0.0" |         "has-tostringtag": "^1.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "is-decimal": { | ||||||
|  |       "version": "1.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", | ||||||
|  |       "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" | ||||||
|  |     }, | ||||||
|     "is-docker": { |     "is-docker": { | ||||||
|       "version": "2.2.1", |       "version": "2.2.1", | ||||||
|       "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", |       "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", | ||||||
|  | @ -6712,6 +7045,11 @@ | ||||||
|         "is-extglob": "^2.1.1" |         "is-extglob": "^2.1.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "is-hexadecimal": { | ||||||
|  |       "version": "1.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", | ||||||
|  |       "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" | ||||||
|  |     }, | ||||||
|     "is-map": { |     "is-map": { | ||||||
|       "version": "2.0.2", |       "version": "2.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", |       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", | ||||||
|  | @ -6946,6 +7284,15 @@ | ||||||
|         "js-tokens": "^3.0.0 || ^4.0.0" |         "js-tokens": "^3.0.0 || ^4.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "lowlight": { | ||||||
|  |       "version": "1.20.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", | ||||||
|  |       "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", | ||||||
|  |       "requires": { | ||||||
|  |         "fault": "^1.0.0", | ||||||
|  |         "highlight.js": "~10.7.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "lru-cache": { |     "lru-cache": { | ||||||
|       "version": "6.0.0", |       "version": "6.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", |       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", | ||||||
|  | @ -7477,6 +7824,19 @@ | ||||||
|         "callsites": "^3.0.0" |         "callsites": "^3.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "parse-entities": { | ||||||
|  |       "version": "2.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", | ||||||
|  |       "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", | ||||||
|  |       "requires": { | ||||||
|  |         "character-entities": "^1.0.0", | ||||||
|  |         "character-entities-legacy": "^1.0.0", | ||||||
|  |         "character-reference-invalid": "^1.0.0", | ||||||
|  |         "is-alphanumerical": "^1.0.0", | ||||||
|  |         "is-decimal": "^1.0.0", | ||||||
|  |         "is-hexadecimal": "^1.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "path-exists": { |     "path-exists": { | ||||||
|       "version": "4.0.0", |       "version": "4.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", |       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", | ||||||
|  | @ -7589,6 +7949,11 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", |       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", | ||||||
|       "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" |       "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" | ||||||
|     }, |     }, | ||||||
|  |     "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": { |     "prop-types": { | ||||||
|       "version": "15.8.1", |       "version": "15.8.1", | ||||||
|       "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", |       "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", | ||||||
|  | @ -7671,6 +8036,18 @@ | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "react-syntax-highlighter": { | ||||||
|  |       "version": "15.5.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz", | ||||||
|  |       "integrity": "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==", | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/runtime": "^7.3.1", | ||||||
|  |         "highlight.js": "^10.4.1", | ||||||
|  |         "lowlight": "^1.17.0", | ||||||
|  |         "prismjs": "^1.27.0", | ||||||
|  |         "refractor": "^3.6.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "read-cache": { |     "read-cache": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", | ||||||
|  | @ -7689,6 +8066,23 @@ | ||||||
|         "picomatch": "^2.2.1" |         "picomatch": "^2.2.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "refractor": { | ||||||
|  |       "version": "3.6.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", | ||||||
|  |       "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", | ||||||
|  |       "requires": { | ||||||
|  |         "hastscript": "^6.0.0", | ||||||
|  |         "parse-entities": "^2.0.0", | ||||||
|  |         "prismjs": "~1.27.0" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "prismjs": { | ||||||
|  |           "version": "1.27.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", | ||||||
|  |           "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==" | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "regenerator-runtime": { |     "regenerator-runtime": { | ||||||
|       "version": "0.13.11", |       "version": "0.13.11", | ||||||
|       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", |       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", | ||||||
|  | @ -8254,8 +8648,7 @@ | ||||||
|     "xtend": { |     "xtend": { | ||||||
|       "version": "4.0.2", |       "version": "4.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", |       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", | ||||||
|       "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", |       "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "yallist": { |     "yallist": { | ||||||
|       "version": "4.0.0", |       "version": "4.0.0", | ||||||
|  |  | ||||||
|  | @ -21,10 +21,12 @@ | ||||||
|     "react": "18.2.0", |     "react": "18.2.0", | ||||||
|     "react-dom": "18.2.0", |     "react-dom": "18.2.0", | ||||||
|     "react-markdown": "^8.0.5", |     "react-markdown": "^8.0.5", | ||||||
|  |     "react-syntax-highlighter": "^15.5.0", | ||||||
|     "typescript": "4.9.5" |     "typescript": "4.9.5" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@tailwindcss/typography": "^0.5.9", |     "@tailwindcss/typography": "^0.5.9", | ||||||
|  |     "@types/react-syntax-highlighter": "^15.5.6", | ||||||
|     "autoprefixer": "^10.4.14", |     "autoprefixer": "^10.4.14", | ||||||
|     "postcss": "^8.4.21", |     "postcss": "^8.4.21", | ||||||
|     "tailwindcss": "^3.2.7" |     "tailwindcss": "^3.2.7" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue