From 1fa02b34f4acf0b127377af8aae604e91917c904 Mon Sep 17 00:00:00 2001 From: Boris Proshin Date: Wed, 19 Jul 2023 22:22:45 +0300 Subject: [PATCH] Add support for almost all languages --- package-lock.json | 45 ++++-- package.json | 2 + src/components/MessageItem.tsx | 1 + src/utils/prisma-setup.ts | 276 +++++++++++++++++++++++++++++++++ yarn.lock | 7 +- 5 files changed, 314 insertions(+), 17 deletions(-) create mode 100644 src/utils/prisma-setup.ts diff --git a/package-lock.json b/package-lock.json index 3bd55d4..3fa2ea1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,8 @@ "next": "13.2.4", "openai": "^3.2.1", "openai-ext": "^1.2.6", + "prism-react-renderer": "^1.3.1", + "prismjs": "^1.29.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.8.0", @@ -653,14 +655,6 @@ "react-dom": ">=16.8.0" } }, - "node_modules/@mantine/prism/node_modules/prism-react-renderer": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", - "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", - "peerDependencies": { - "react": ">=0.14.9" - } - }, "node_modules/@mantine/ssr": { "version": "6.0.17", "resolved": "https://registry.npmjs.org/@mantine/ssr/-/ssr-6.0.17.tgz", @@ -6997,6 +6991,22 @@ "node": ">= 0.8.0" } }, + "node_modules/prism-react-renderer": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", + "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "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/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -8891,14 +8901,6 @@ "requires": { "@mantine/utils": "6.0.17", "prism-react-renderer": "^1.2.1" - }, - "dependencies": { - "prism-react-renderer": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", - "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", - "requires": {} - } } }, "@mantine/ssr": { @@ -13114,6 +13116,17 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, + "prism-react-renderer": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", + "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", + "requires": {} + }, + "prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", diff --git a/package.json b/package.json index 04e9a3f..ad9e903 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,8 @@ "next": "13.2.4", "openai": "^3.2.1", "openai-ext": "^1.2.6", + "prism-react-renderer": "^1.3.1", + "prismjs": "^1.29.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.8.0", diff --git a/src/components/MessageItem.tsx b/src/components/MessageItem.tsx index 8aef8ca..f8c717e 100644 --- a/src/components/MessageItem.tsx +++ b/src/components/MessageItem.tsx @@ -20,6 +20,7 @@ import "../styles/markdown.scss"; import { CreatePromptModal } from "./CreatePromptModal"; import { LogoIcon } from "./Logo"; import { ScrollIntoView } from "./ScrollIntoView"; +import "../utils/prisma-setup"; export function MessageItem({ message }: { message: Message }) { const wordCount = useMemo(() => { diff --git a/src/utils/prisma-setup.ts b/src/utils/prisma-setup.ts new file mode 100644 index 0000000..7af2c3b --- /dev/null +++ b/src/utils/prisma-setup.ts @@ -0,0 +1,276 @@ +import PrismRenderer from "prism-react-renderer/prism"; + +window.Prism = PrismRenderer; + +// Load all languages like this as webpack doesn't detect prism's loadLanguages call and doesn't load any +require("prismjs/components/prism-abap"); +require("prismjs/components/prism-abnf"); +require("prismjs/components/prism-actionscript"); +require("prismjs/components/prism-ada"); +require("prismjs/components/prism-agda"); +require("prismjs/components/prism-al"); +require("prismjs/components/prism-antlr4"); +require("prismjs/components/prism-apacheconf"); +require("prismjs/components/prism-apex"); +require("prismjs/components/prism-apl"); +require("prismjs/components/prism-applescript"); +require("prismjs/components/prism-aql"); +require("prismjs/components/prism-arduino"); +require("prismjs/components/prism-arff"); +require("prismjs/components/prism-asciidoc"); +require("prismjs/components/prism-asm6502"); +require("prismjs/components/prism-asmatmel"); +require("prismjs/components/prism-aspnet"); +require("prismjs/components/prism-autohotkey"); +require("prismjs/components/prism-autoit"); +require("prismjs/components/prism-avisynth"); +require("prismjs/components/prism-avro-idl"); +require("prismjs/components/prism-bash"); +require("prismjs/components/prism-basic"); +require("prismjs/components/prism-batch"); +require("prismjs/components/prism-bbcode"); +require("prismjs/components/prism-bicep"); +require("prismjs/components/prism-birb"); +require("prismjs/components/prism-bison"); +require("prismjs/components/prism-bnf"); +require("prismjs/components/prism-brainfuck"); +require("prismjs/components/prism-brightscript"); +require("prismjs/components/prism-bro"); +require("prismjs/components/prism-bsl"); +require("prismjs/components/prism-c"); +require("prismjs/components/prism-cfscript"); +require("prismjs/components/prism-chaiscript"); +require("prismjs/components/prism-cil"); +require("prismjs/components/prism-clike"); +require("prismjs/components/prism-clojure"); +require("prismjs/components/prism-cmake"); +require("prismjs/components/prism-cobol"); +require("prismjs/components/prism-coffeescript"); +require("prismjs/components/prism-concurnas"); +require("prismjs/components/prism-coq"); +require("prismjs/components/prism-cpp"); +require("prismjs/components/prism-csharp"); +require("prismjs/components/prism-cshtml"); +require("prismjs/components/prism-csp"); +require("prismjs/components/prism-css"); +require("prismjs/components/prism-css-extras"); +require("prismjs/components/prism-csv"); +require("prismjs/components/prism-cypher"); +require("prismjs/components/prism-d"); +require("prismjs/components/prism-dart"); +require("prismjs/components/prism-dataweave"); +require("prismjs/components/prism-dax"); +require("prismjs/components/prism-dhall"); +require("prismjs/components/prism-diff"); +require("prismjs/components/prism-django"); +require("prismjs/components/prism-dns-zone-file"); +require("prismjs/components/prism-docker"); +require("prismjs/components/prism-dot"); +require("prismjs/components/prism-ebnf"); +require("prismjs/components/prism-editorconfig"); +require("prismjs/components/prism-eiffel"); +require("prismjs/components/prism-ejs"); +require("prismjs/components/prism-elixir"); +require("prismjs/components/prism-elm"); +require("prismjs/components/prism-erb"); +require("prismjs/components/prism-erlang"); +require("prismjs/components/prism-etlua"); +require("prismjs/components/prism-excel-formula"); +require("prismjs/components/prism-factor"); +require("prismjs/components/prism-false"); +require("prismjs/components/prism-firestore-security-rules"); +require("prismjs/components/prism-flow"); +require("prismjs/components/prism-fortran"); +require("prismjs/components/prism-fsharp"); +require("prismjs/components/prism-ftl"); +require("prismjs/components/prism-gap"); +require("prismjs/components/prism-gcode"); +require("prismjs/components/prism-gdscript"); +require("prismjs/components/prism-gedcom"); +require("prismjs/components/prism-gherkin"); +require("prismjs/components/prism-git"); +require("prismjs/components/prism-glsl"); +require("prismjs/components/prism-gml"); +require("prismjs/components/prism-gn"); +require("prismjs/components/prism-go"); +require("prismjs/components/prism-go-module"); +require("prismjs/components/prism-graphql"); +require("prismjs/components/prism-groovy"); +require("prismjs/components/prism-haml"); +require("prismjs/components/prism-handlebars"); +require("prismjs/components/prism-haskell"); +require("prismjs/components/prism-haxe"); +require("prismjs/components/prism-hcl"); +require("prismjs/components/prism-hlsl"); +require("prismjs/components/prism-hoon"); +require("prismjs/components/prism-hpkp"); +require("prismjs/components/prism-hsts"); +require("prismjs/components/prism-http"); +require("prismjs/components/prism-ichigojam"); +require("prismjs/components/prism-icon"); +require("prismjs/components/prism-icu-message-format"); +require("prismjs/components/prism-idris"); +require("prismjs/components/prism-iecst"); +require("prismjs/components/prism-ignore"); +require("prismjs/components/prism-inform7"); +require("prismjs/components/prism-ini"); +require("prismjs/components/prism-io"); +require("prismjs/components/prism-j"); +require("prismjs/components/prism-java"); +require("prismjs/components/prism-javadoclike"); +require("prismjs/components/prism-javascript"); +require("prismjs/components/prism-javastacktrace"); +require("prismjs/components/prism-jexl"); +require("prismjs/components/prism-jolie"); +require("prismjs/components/prism-jq"); +require("prismjs/components/prism-js-extras"); +require("prismjs/components/prism-js-templates"); +require("prismjs/components/prism-jsdoc"); +require("prismjs/components/prism-json"); +require("prismjs/components/prism-json5"); +require("prismjs/components/prism-jsonp"); +require("prismjs/components/prism-jsstacktrace"); +require("prismjs/components/prism-jsx"); +require("prismjs/components/prism-julia"); +require("prismjs/components/prism-keepalived"); +require("prismjs/components/prism-keyman"); +require("prismjs/components/prism-kotlin"); +require("prismjs/components/prism-kumir"); +require("prismjs/components/prism-kusto"); +require("prismjs/components/prism-latex"); +require("prismjs/components/prism-latte"); +require("prismjs/components/prism-less"); +require("prismjs/components/prism-lilypond"); +require("prismjs/components/prism-liquid"); +require("prismjs/components/prism-lisp"); +require("prismjs/components/prism-livescript"); +require("prismjs/components/prism-llvm"); +require("prismjs/components/prism-log"); +require("prismjs/components/prism-lolcode"); +require("prismjs/components/prism-lua"); +require("prismjs/components/prism-magma"); +require("prismjs/components/prism-makefile"); +require("prismjs/components/prism-markdown"); +require("prismjs/components/prism-markup"); +require("prismjs/components/prism-markup-templating"); +require("prismjs/components/prism-matlab"); +require("prismjs/components/prism-maxscript"); +require("prismjs/components/prism-mel"); +require("prismjs/components/prism-mermaid"); +require("prismjs/components/prism-mizar"); +require("prismjs/components/prism-mongodb"); +require("prismjs/components/prism-monkey"); +require("prismjs/components/prism-moonscript"); +require("prismjs/components/prism-n1ql"); +require("prismjs/components/prism-n4js"); +require("prismjs/components/prism-nand2tetris-hdl"); +require("prismjs/components/prism-naniscript"); +require("prismjs/components/prism-nasm"); +require("prismjs/components/prism-neon"); +require("prismjs/components/prism-nevod"); +require("prismjs/components/prism-nginx"); +require("prismjs/components/prism-nim"); +require("prismjs/components/prism-nix"); +require("prismjs/components/prism-nsis"); +require("prismjs/components/prism-objectivec"); +require("prismjs/components/prism-ocaml"); +require("prismjs/components/prism-opencl"); +require("prismjs/components/prism-openqasm"); +require("prismjs/components/prism-oz"); +require("prismjs/components/prism-parigp"); +require("prismjs/components/prism-parser"); +require("prismjs/components/prism-pascal"); +require("prismjs/components/prism-pascaligo"); +require("prismjs/components/prism-pcaxis"); +require("prismjs/components/prism-peoplecode"); +require("prismjs/components/prism-perl"); +require("prismjs/components/prism-php"); +require("prismjs/components/prism-php-extras"); +require("prismjs/components/prism-phpdoc"); +require("prismjs/components/prism-plsql"); +require("prismjs/components/prism-powerquery"); +require("prismjs/components/prism-powershell"); +require("prismjs/components/prism-processing"); +require("prismjs/components/prism-prolog"); +require("prismjs/components/prism-promql"); +require("prismjs/components/prism-properties"); +require("prismjs/components/prism-protobuf"); +require("prismjs/components/prism-psl"); +require("prismjs/components/prism-pug"); +require("prismjs/components/prism-puppet"); +require("prismjs/components/prism-pure"); +require("prismjs/components/prism-purebasic"); +require("prismjs/components/prism-purescript"); +require("prismjs/components/prism-python"); +require("prismjs/components/prism-q"); +require("prismjs/components/prism-qml"); +require("prismjs/components/prism-qore"); +require("prismjs/components/prism-qsharp"); +require("prismjs/components/prism-r"); +require("prismjs/components/prism-reason"); +require("prismjs/components/prism-regex"); +require("prismjs/components/prism-rego"); +require("prismjs/components/prism-renpy"); +require("prismjs/components/prism-rest"); +require("prismjs/components/prism-rip"); +require("prismjs/components/prism-roboconf"); +require("prismjs/components/prism-robotframework"); +require("prismjs/components/prism-ruby"); +require("prismjs/components/prism-rust"); +require("prismjs/components/prism-sas"); +require("prismjs/components/prism-sass"); +require("prismjs/components/prism-scala"); +require("prismjs/components/prism-scheme"); +require("prismjs/components/prism-scss"); +require("prismjs/components/prism-shell-session"); +require("prismjs/components/prism-smali"); +require("prismjs/components/prism-smalltalk"); +require("prismjs/components/prism-smarty"); +require("prismjs/components/prism-sml"); +require("prismjs/components/prism-solidity"); +require("prismjs/components/prism-solution-file"); +require("prismjs/components/prism-soy"); +require("prismjs/components/prism-splunk-spl"); +require("prismjs/components/prism-sqf"); +require("prismjs/components/prism-sql"); +require("prismjs/components/prism-squirrel"); +require("prismjs/components/prism-stan"); +require("prismjs/components/prism-stylus"); +require("prismjs/components/prism-swift"); +require("prismjs/components/prism-systemd"); +require("prismjs/components/prism-t4-templating"); +require("prismjs/components/prism-t4-vb"); +require("prismjs/components/prism-tap"); +require("prismjs/components/prism-tcl"); +require("prismjs/components/prism-textile"); +require("prismjs/components/prism-toml"); +require("prismjs/components/prism-tremor"); +require("prismjs/components/prism-tsx"); +require("prismjs/components/prism-tt2"); +require("prismjs/components/prism-turtle"); +require("prismjs/components/prism-twig"); +require("prismjs/components/prism-typescript"); +require("prismjs/components/prism-typoscript"); +require("prismjs/components/prism-unrealscript"); +require("prismjs/components/prism-uri"); +require("prismjs/components/prism-v"); +require("prismjs/components/prism-vala"); +require("prismjs/components/prism-vbnet"); +require("prismjs/components/prism-velocity"); +require("prismjs/components/prism-verilog"); +require("prismjs/components/prism-vhdl"); +require("prismjs/components/prism-vim"); +require("prismjs/components/prism-visual-basic"); +require("prismjs/components/prism-warpscript"); +require("prismjs/components/prism-wasm"); +require("prismjs/components/prism-web-idl"); +require("prismjs/components/prism-wiki"); +require("prismjs/components/prism-wolfram"); +require("prismjs/components/prism-wren"); +require("prismjs/components/prism-xeora"); +require("prismjs/components/prism-xml-doc"); +require("prismjs/components/prism-xojo"); +require("prismjs/components/prism-xquery"); +require("prismjs/components/prism-yaml"); +require("prismjs/components/prism-yang"); +require("prismjs/components/prism-zig"); diff --git a/yarn.lock b/yarn.lock index 18c3e20..a17c6a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3870,11 +3870,16 @@ prelude-ls@^1.2.1: resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prism-react-renderer@^1.2.1: +prism-react-renderer@^1.2.1, prism-react-renderer@^1.3.1: version "1.3.5" resolved "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz" integrity sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg== +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== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"