diff --git a/package.json b/package.json
index aa8780a..699d68a 100644
--- a/package.json
+++ b/package.json
@@ -52,22 +52,27 @@
"exiftool-vendored": "^18.6.0",
"fflate": "^0.7.4",
"find-my-way": "^7.3.1",
+ "katex": "^0.16.3",
"minio": "^7.0.32",
"ms": "canary",
"multer": "^1.4.5-lts.1",
"next": "^13.0.0",
"otplib": "^12.0.1",
"prisma": "^4.5.0",
+ "prismjs": "^1.29.0",
"qrcode": "^1.5.1",
"react": "^18.2.0",
"react-chartjs-2": "^4.3.1",
"react-dom": "^18.2.0",
"react-feather": "^2.0.10",
+ "react-markdown": "^8.0.4",
"recoil": "^0.7.6",
+ "remark-gfm": "^3.0.1",
"sharp": "^0.31.1"
},
"devDependencies": {
"@types/cookie": "^0.5.1",
+ "@types/katex": "^0.14.0",
"@types/minio": "^7.0.14",
"@types/multer": "^1.4.7",
"@types/node": "^18.11.7",
diff --git a/src/components/pages/Upload/Text.tsx b/src/components/pages/Upload/Text.tsx
index acaf4f1..ddfe0ab 100644
--- a/src/components/pages/Upload/Text.tsx
+++ b/src/components/pages/Upload/Text.tsx
@@ -1,14 +1,15 @@
-import { Button, Group, NumberInput, PasswordInput, Select, Tabs, Title, Tooltip } from '@mantine/core';
+import { Alert, Button, Card, Container, Group, Select, Tabs, Title } from '@mantine/core';
import { useClipboard } from '@mantine/hooks';
import { useModals } from '@mantine/modals';
import { showNotification, updateNotification } from '@mantine/notifications';
-import { Prism } from '@mantine/prism';
import CodeInput from 'components/CodeInput';
-import { ClockIcon, ImageIcon, TypeIcon, UploadIcon } from 'components/icons';
+import { ImageIcon, TypeIcon, UploadIcon } from 'components/icons';
+import KaTeX from 'components/render/KaTeX';
+import Markdown from 'components/render/Markdown';
+import PrismCode from 'components/render/PrismCode';
import exts from 'lib/exts';
import { userSelector } from 'lib/recoil/user';
import { expireReadToDate } from 'lib/utils/client';
-import { Language } from 'prism-react-renderer';
import { useState } from 'react';
import { useRecoilValue } from 'recoil';
import showFilesModal from './showFilesModal';
@@ -24,6 +25,9 @@ export default function Text() {
const [options, setOpened, OptionsModal] = useUploadOptions();
+ const shouldRenderMarkdown = lang === 'md';
+ const shouldRenderTex = lang === 'tex';
+
const handleUpload = async () => {
const file = new File([value], 'text.' + lang);
@@ -90,13 +94,26 @@ export default function Text() {
- ({ height: '80vh', backgroundColor: t.colors.dark[8] })}
- withLineNumbers
- language={lang as Language}
- >
- {value}
-
+ {shouldRenderMarkdown || shouldRenderTex ? (
+ <>
+
+ You are viewing a rendered version of your code
+
+
+
+
+ {shouldRenderMarkdown && }
+ {shouldRenderTex && }
+
+
+ >
+ ) : (
+ ({ height: '100vh', backgroundColor: t.colors.dark[8] })}
+ code={value}
+ ext={lang}
+ />
+ )}
diff --git a/src/components/render/KaTeX.tsx b/src/components/render/KaTeX.tsx
new file mode 100644
index 0000000..c177d63
--- /dev/null
+++ b/src/components/render/KaTeX.tsx
@@ -0,0 +1,51 @@
+import { Alert } from '@mantine/core';
+import katex, { ParseError } from 'katex';
+import { useEffect, useState } from 'react';
+
+import 'katex/dist/katex.min.css';
+
+const sanitize = (str: string) => {
+ return str.replace(/&/g, '&').replace(//g, '>');
+};
+
+export default function KaTeX({ code, ...props }) {
+ const [rendered, setRendered] = useState('');
+ const [error, setError] = useState();
+
+ const renderError = (error: ParseError | TypeError) => {
+ return (
+
+ {sanitize(error.message)}
+
+ );
+ };
+
+ useEffect(() => {
+ try {
+ const html = katex.renderToString(code, {
+ displayMode: true,
+ throwOnError: true,
+ errorColor: '#f44336',
+ });
+
+ setRendered(html);
+ } catch (e) {
+ if (e instanceof Error) {
+ setError(renderError(e));
+ } else {
+ throw e;
+ }
+ }
+ }, [rendered, error, code]);
+
+ if (error) return error;
+
+ return (
+
+ );
+}
diff --git a/src/components/render/Markdown.tsx b/src/components/render/Markdown.tsx
new file mode 100644
index 0000000..9e184c5
--- /dev/null
+++ b/src/components/render/Markdown.tsx
@@ -0,0 +1,31 @@
+import { Code } from '@mantine/core';
+import { Prism } from '@mantine/prism';
+import ReactMarkdown from 'react-markdown';
+import remarkGfm from 'remark-gfm';
+
+export default function Markdown({ code, ...props }) {
+ return (
+
+ {String(children).replace(/\n$/, '')}
+
+ ) : (
+ {children}
+ );
+ },
+ img({ node, ...props }) {
+ return ;
+ },
+ }}
+ {...props}
+ >
+ {code}
+
+ );
+}
diff --git a/src/components/render/PrismCode.tsx b/src/components/render/PrismCode.tsx
new file mode 100644
index 0000000..fddf85f
--- /dev/null
+++ b/src/components/render/PrismCode.tsx
@@ -0,0 +1,53 @@
+import { Prism } from '@mantine/prism';
+import { Prism as PrismLib } from 'prism-react-renderer';
+import exts from 'lib/exts';
+
+(typeof window === 'undefined' ? global : window).Prism = PrismLib;
+
+require('prismjs/components/prism-markdown');
+require('prismjs/components/prism-css');
+require('prismjs/components/prism-javascript');
+require('prismjs/components/prism-typescript');
+require('prismjs/components/prism-java');
+require('prismjs/components/prism-python');
+require('prismjs/components/prism-ruby');
+require('prismjs/components/prism-bash');
+require('prismjs/components/prism-php');
+require('prismjs/components/prism-perl');
+require('prismjs/components/prism-sql');
+require('prismjs/components/prism-xml-doc');
+require('prismjs/components/prism-yaml');
+require('prismjs/components/prism-c');
+require('prismjs/components/prism-cpp');
+require('prismjs/components/prism-csharp');
+require('prismjs/components/prism-go');
+require('prismjs/components/prism-docker');
+require('prismjs/components/prism-toml');
+require('prismjs/components/prism-ini');
+require('prismjs/components/prism-batch');
+require('prismjs/components/prism-latex');
+require('prismjs/components/prism-r');
+require('prismjs/components/prism-lua');
+require('prismjs/components/prism-powershell');
+require('prismjs/components/prism-rust');
+require('prismjs/components/prism-swift');
+require('prismjs/components/prism-scss');
+require('prismjs/components/prism-json');
+require('prismjs/components/prism-less');
+require('prismjs/components/prism-scala');
+require('prismjs/components/prism-kotlin');
+require('prismjs/components/prism-visual-basic');
+require('prismjs/components/prism-vim');
+
+export default function PrismCode({ code, ext, ...props }) {
+ return (
+ ({ height: '100vh', backgroundColor: t.colors.dark[8] })}
+ withLineNumbers
+ language={exts[ext]?.toLowerCase()}
+ {...props}
+ >
+ {code}
+
+ );
+}
diff --git a/src/pages/code/[id].tsx b/src/pages/code/[id].tsx
index e1a668a..3945391 100644
--- a/src/pages/code/[id].tsx
+++ b/src/pages/code/[id].tsx
@@ -1,27 +1,78 @@
-import { Prism } from '@mantine/prism';
+import { Box, Button, Card, Container } from '@mantine/core';
+import KaTeX from 'components/render/KaTeX';
+import Markdown from 'components/render/Markdown';
+import PrismCode from 'components/render/PrismCode';
import config from 'lib/config';
-import exts from 'lib/exts';
import prisma from 'lib/prisma';
import { checkPassword } from 'lib/util';
import { streamToString } from 'lib/utils/streams';
import { GetServerSideProps } from 'next';
import Head from 'next/head';
+import { useState } from 'react';
-export default function Code({ code, id, title }) {
+export default function Code({ code, id, title, render, renderType }) {
const full_title = `${title} - Code (${id})`;
+
+ const [overrideRender, setOverrideRender] = useState(false);
+
return (
<>
{full_title}
+ {render && (
+ ({
+ backgroundColor: t.colorScheme === 'dark' ? t.colors.dark[6] : t.colors.gray[0],
+ })}
+ py={5}
+ px='md'
+ >
+ {renderType === 'markdown' && (
+
+ You are {overrideRender ? 'not' : 'now'} viewing a rendered version of the markdown file.
+
+ )}
+ {renderType === 'tex' && (
+
+ You are {overrideRender ? 'not' : 'now'} viewing a KaTeX rendering version of the tex file.
+
+ )}
+
+
+ )}
- ({ height: '100vh', backgroundColor: t.colors.dark[8] })}
- withLineNumbers
- language={exts[id.split('.').pop()]?.toLowerCase()}
- >
- {code}
-
+ {renderType === 'markdown' && !overrideRender && (
+
+
+
+ )}
+
+ {renderType === 'tex' && !overrideRender && (
+
+
+
+
+
+ )}
+
+ {!render && (
+ ({ height: '100vh', backgroundColor: t.colors.dark[8] })}
+ code={code}
+ ext={id.split('.').pop()}
+ />
+ )}
+
+ {render && overrideRender && (
+ ({ height: '100vh', backgroundColor: t.colors.dark[8] })}
+ code={code}
+ ext={id.split('.').pop()}
+ />
+ )}
>
);
}
@@ -56,11 +107,23 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
context.res.setHeader('Cache-Control', 'public, max-age=2628000, stale-while-revalidate=86400');
+ let renderType;
+
+ if (file.file.endsWith('.md')) {
+ renderType = 'markdown';
+ } else if (file.file.endsWith('.tex')) {
+ renderType = 'tex';
+ } else {
+ renderType = null;
+ }
+
return {
props: {
code: await streamToString(data),
id: context.params.id as string,
title: config.website.title,
+ render: file.file.endsWith('.md') || file.file.endsWith('.tex'),
+ renderType,
},
};
};
diff --git a/yarn.lock b/yarn.lock
index c4f1f08..d80ecd0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2378,7 +2378,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/debug@npm:4.1.7":
+"@types/debug@npm:4.1.7, @types/debug@npm:^4.0.0":
version: 4.1.7
resolution: "@types/debug@npm:4.1.7"
dependencies:
@@ -2417,6 +2417,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/hast@npm:^2.0.0":
+ version: 2.3.4
+ resolution: "@types/hast@npm:2.3.4"
+ dependencies:
+ "@types/unist": "*"
+ checksum: fff47998f4c11e21a7454b58673f70478740ecdafd95aaf50b70a3daa7da9cdc57315545bf9c039613732c40b7b0e9e49d11d03fe9a4304721cdc3b29a88141e
+ languageName: node
+ linkType: hard
+
"@types/json5@npm:^0.0.29":
version: 0.0.29
resolution: "@types/json5@npm:0.0.29"
@@ -2424,6 +2433,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/katex@npm:^0.14.0":
+ version: 0.14.0
+ resolution: "@types/katex@npm:0.14.0"
+ checksum: 330e0d0337ba48c87f5b793965fbad673653789bf6e50dfe8d726a7b0cbefd37195055e31503aae629814aa79447e4f23a4b87ad1ac565c0d9a9d9978836f39b
+ languageName: node
+ linkType: hard
+
"@types/luxon@npm:^3.1.0":
version: 3.1.0
resolution: "@types/luxon@npm:3.1.0"
@@ -2431,6 +2447,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/mdast@npm:^3.0.0":
+ version: 3.0.10
+ resolution: "@types/mdast@npm:3.0.10"
+ dependencies:
+ "@types/unist": "*"
+ checksum: 3f587bfc0a9a2403ecadc220e61031b01734fedaf82e27eb4d5ba039c0eb54db8c85681ccc070ab4df3f7ec711b736a82b990e69caa14c74bf7ac0ccf2ac7313
+ languageName: node
+ linkType: hard
+
"@types/mime@npm:*":
version: 3.0.1
resolution: "@types/mime@npm:3.0.1"
@@ -2491,7 +2516,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/prop-types@npm:*":
+"@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0":
version: 15.7.5
resolution: "@types/prop-types@npm:15.7.5"
checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980
@@ -2565,6 +2590,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/unist@npm:*, @types/unist@npm:^2.0.0":
+ version: 2.0.6
+ resolution: "@types/unist@npm:2.0.6"
+ checksum: 25cb860ff10dde48b54622d58b23e66214211a61c84c0f15f88d38b61aa1b53d4d46e42b557924a93178c501c166aa37e28d7f6d994aba13d24685326272d5db
+ languageName: node
+ linkType: hard
+
"@types/webidl-conversions@npm:*":
version: 7.0.0
resolution: "@types/webidl-conversions@npm:7.0.0"
@@ -3005,6 +3037,13 @@ __metadata:
languageName: node
linkType: hard
+"bail@npm:^2.0.0":
+ version: 2.0.2
+ resolution: "bail@npm:2.0.2"
+ checksum: aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824
+ languageName: node
+ linkType: hard
+
"balanced-match@npm:^1.0.0":
version: 1.0.2
resolution: "balanced-match@npm:1.0.2"
@@ -3321,6 +3360,13 @@ __metadata:
languageName: node
linkType: hard
+"ccount@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "ccount@npm:2.0.1"
+ checksum: 48193dada54c9e260e0acf57fc16171a225305548f9ad20d5471e0f7a8c026aedd8747091dccb0d900cde7df4e4ddbd235df0d8de4a64c71b12f0d3303eeafd4
+ languageName: node
+ linkType: hard
+
"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0":
version: 4.1.2
resolution: "chalk@npm:4.1.2"
@@ -3342,6 +3388,13 @@ __metadata:
languageName: node
linkType: hard
+"character-entities@npm:^2.0.0":
+ version: 2.0.2
+ resolution: "character-entities@npm:2.0.2"
+ checksum: cf1643814023697f725e47328fcec17923b8f1799102a8a79c1514e894815651794a2bffd84bb1b3a4b124b050154e4529ed6e81f7c8068a734aecf07a6d3def
+ languageName: node
+ linkType: hard
+
"chart.js@npm:^3.9.1":
version: 3.9.1
resolution: "chart.js@npm:3.9.1"
@@ -3553,6 +3606,20 @@ __metadata:
languageName: node
linkType: hard
+"comma-separated-tokens@npm:^2.0.0":
+ version: 2.0.3
+ resolution: "comma-separated-tokens@npm:2.0.3"
+ checksum: e3bf9e0332a5c45f49b90e79bcdb4a7a85f28d6a6f0876a94f1bb9b2bfbdbbb9292aac50e1e742d8c0db1e62a0229a106f57917e2d067fca951d81737651700d
+ languageName: node
+ linkType: hard
+
+"commander@npm:^8.0.0":
+ version: 8.3.0
+ resolution: "commander@npm:8.3.0"
+ checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0
+ languageName: node
+ linkType: hard
+
"commander@npm:^9.4.0":
version: 9.4.1
resolution: "commander@npm:9.4.1"
@@ -3792,7 +3859,7 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:4, debug@npm:4.3.4, debug@npm:4.x, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4":
+"debug@npm:4, debug@npm:4.3.4, debug@npm:4.x, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4":
version: 4.3.4
resolution: "debug@npm:4.3.4"
dependencies:
@@ -3829,6 +3896,15 @@ __metadata:
languageName: node
linkType: hard
+"decode-named-character-reference@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "decode-named-character-reference@npm:1.0.2"
+ dependencies:
+ character-entities: ^2.0.0
+ checksum: f4c71d3b93105f20076052f9cb1523a22a9c796b8296cd35eef1ca54239c78d182c136a848b83ff8da2071e3ae2b1d300bf29d00650a6d6e675438cc31b11d78
+ languageName: node
+ linkType: hard
+
"decode-uri-component@npm:^0.2.1":
version: 0.2.1
resolution: "decode-uri-component@npm:0.2.1"
@@ -3929,6 +4005,13 @@ __metadata:
languageName: node
linkType: hard
+"dequal@npm:^2.0.0":
+ version: 2.0.3
+ resolution: "dequal@npm:2.0.3"
+ checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90
+ languageName: node
+ linkType: hard
+
"des.js@npm:^1.0.0":
version: 1.0.1
resolution: "des.js@npm:1.0.1"
@@ -3946,6 +4029,13 @@ __metadata:
languageName: node
linkType: hard
+"diff@npm:^5.0.0":
+ version: 5.1.0
+ resolution: "diff@npm:5.1.0"
+ checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90
+ languageName: node
+ linkType: hard
+
"diffie-hellman@npm:^5.0.0":
version: 5.0.3
resolution: "diffie-hellman@npm:5.0.3"
@@ -4484,6 +4574,13 @@ __metadata:
languageName: node
linkType: hard
+"escape-string-regexp@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "escape-string-regexp@npm:5.0.0"
+ checksum: 20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e
+ languageName: node
+ linkType: hard
+
"eslint-config-next@npm:^13.0.0":
version: 13.0.5
resolution: "eslint-config-next@npm:13.0.5"
@@ -4856,6 +4953,13 @@ __metadata:
languageName: node
linkType: hard
+"extend@npm:^3.0.0":
+ version: 3.0.2
+ resolution: "extend@npm:3.0.2"
+ checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515
+ languageName: node
+ linkType: hard
+
"fast-decode-uri-component@npm:^1.0.1":
version: 1.0.1
resolution: "fast-decode-uri-component@npm:1.0.1"
@@ -5509,6 +5613,13 @@ __metadata:
languageName: node
linkType: hard
+"hast-util-whitespace@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "hast-util-whitespace@npm:2.0.0"
+ checksum: abeb5386075bfb0facfce89eed0e13d2cb27a0910cec8fd234b48821a1538387a73fa7f458842e8c404148dc69434acbc10488d75b02817e460652c2c894c024
+ languageName: node
+ linkType: hard
+
"he@npm:^1.2.0":
version: 1.2.0
resolution: "he@npm:1.2.0"
@@ -5800,6 +5911,13 @@ __metadata:
languageName: node
linkType: hard
+"is-buffer@npm:^2.0.0":
+ version: 2.0.5
+ resolution: "is-buffer@npm:2.0.5"
+ checksum: 764c9ad8b523a9f5a32af29bdf772b08eb48c04d2ad0a7240916ac2688c983bf5f8504bf25b35e66240edeb9d9085461f9b5dae1f3d2861c6b06a65fe983de42
+ languageName: node
+ linkType: hard
+
"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7":
version: 1.2.7
resolution: "is-callable@npm:1.2.7"
@@ -5917,6 +6035,13 @@ __metadata:
languageName: node
linkType: hard
+"is-plain-obj@npm:^4.0.0":
+ version: 4.1.0
+ resolution: "is-plain-obj@npm:4.1.0"
+ checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce
+ languageName: node
+ linkType: hard
+
"is-regex@npm:^1.1.4":
version: 1.1.4
resolution: "is-regex@npm:1.1.4"
@@ -6202,6 +6327,17 @@ __metadata:
languageName: node
linkType: hard
+"katex@npm:^0.16.3":
+ version: 0.16.3
+ resolution: "katex@npm:0.16.3"
+ dependencies:
+ commander: ^8.0.0
+ bin:
+ katex: cli.js
+ checksum: 3ee588b6420da2b8d087c524502163f52340c4b0bf9ccddb2603d90d66eb637d088696ddf97316eb88d3bb41340784c4270e1824dcf7311110ed4cb2bc5458db
+ languageName: node
+ linkType: hard
+
"kleur@npm:^3.0.3":
version: 3.0.3
resolution: "kleur@npm:3.0.3"
@@ -6209,6 +6345,13 @@ __metadata:
languageName: node
linkType: hard
+"kleur@npm:^4.0.3":
+ version: 4.1.5
+ resolution: "kleur@npm:4.1.5"
+ checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12
+ languageName: node
+ linkType: hard
+
"klona@npm:^2.0.5":
version: 2.0.5
resolution: "klona@npm:2.0.5"
@@ -6425,6 +6568,13 @@ __metadata:
languageName: node
linkType: hard
+"longest-streak@npm:^3.0.0":
+ version: 3.1.0
+ resolution: "longest-streak@npm:3.1.0"
+ checksum: d7f952ed004cbdb5c8bcfc4f7f5c3d65449e6c5a9e9be4505a656e3df5a57ee125f284286b4bf8ecea0c21a7b3bf2b8f9001ad506c319b9815ad6a63a47d0fd0
+ languageName: node
+ linkType: hard
+
"loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0":
version: 1.4.0
resolution: "loose-envify@npm:1.4.0"
@@ -6507,6 +6657,13 @@ __metadata:
languageName: node
linkType: hard
+"markdown-table@npm:^3.0.0":
+ version: 3.0.3
+ resolution: "markdown-table@npm:3.0.3"
+ checksum: 8fcd3d9018311120fbb97115987f8b1665a603f3134c93fbecc5d1463380c8036f789e2a62c19432058829e594fff8db9ff81c88f83690b2f8ed6c074f8d9e10
+ languageName: node
+ linkType: hard
+
"md5.js@npm:^1.3.4":
version: 1.3.5
resolution: "md5.js@npm:1.3.5"
@@ -6518,6 +6675,157 @@ __metadata:
languageName: node
linkType: hard
+"mdast-util-definitions@npm:^5.0.0":
+ version: 5.1.1
+ resolution: "mdast-util-definitions@npm:5.1.1"
+ dependencies:
+ "@types/mdast": ^3.0.0
+ "@types/unist": ^2.0.0
+ unist-util-visit: ^4.0.0
+ checksum: f8025e2c35f6f8641528037abe18f492ef100e00a48c92cf78b7a313f9ccdb0e30c6aed0b40539767a3f425be09e78cb0f2f9bc4131fff41ea4664a1a7314a14
+ languageName: node
+ linkType: hard
+
+"mdast-util-find-and-replace@npm:^2.0.0":
+ version: 2.2.1
+ resolution: "mdast-util-find-and-replace@npm:2.2.1"
+ dependencies:
+ escape-string-regexp: ^5.0.0
+ unist-util-is: ^5.0.0
+ unist-util-visit-parents: ^5.0.0
+ checksum: 9b23a6858b55cd63d0af27057efe3a6130a6f89b683a3cde76c9b93b5e20525e1eebedd8a8da391f7e99443e9dcbf2c0023c3a197766090daeee0ebf92a21fde
+ languageName: node
+ linkType: hard
+
+"mdast-util-from-markdown@npm:^1.0.0":
+ version: 1.2.0
+ resolution: "mdast-util-from-markdown@npm:1.2.0"
+ dependencies:
+ "@types/mdast": ^3.0.0
+ "@types/unist": ^2.0.0
+ decode-named-character-reference: ^1.0.0
+ mdast-util-to-string: ^3.1.0
+ micromark: ^3.0.0
+ micromark-util-decode-numeric-character-reference: ^1.0.0
+ micromark-util-decode-string: ^1.0.0
+ micromark-util-normalize-identifier: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ unist-util-stringify-position: ^3.0.0
+ uvu: ^0.5.0
+ checksum: fadc3521a3d95f4adbadad462ca27c28b3bfe08740ae158dc0c4a22329bf5593254d98b8fd4024ecad8c47c77ec275454dfacfb907ff1b98ff8f5de25c716d40
+ languageName: node
+ linkType: hard
+
+"mdast-util-gfm-autolink-literal@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "mdast-util-gfm-autolink-literal@npm:1.0.2"
+ dependencies:
+ "@types/mdast": ^3.0.0
+ ccount: ^2.0.0
+ mdast-util-find-and-replace: ^2.0.0
+ micromark-util-character: ^1.0.0
+ checksum: 75e12f21ec24552ba33725f69a06cd703e5586d2296ca9d180927b2293c036e1bd39108adba83e8cbbefcc45ffd8821fb561b4c107684ed87bd9e5e286ba03bd
+ languageName: node
+ linkType: hard
+
+"mdast-util-gfm-footnote@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "mdast-util-gfm-footnote@npm:1.0.1"
+ dependencies:
+ "@types/mdast": ^3.0.0
+ mdast-util-to-markdown: ^1.3.0
+ micromark-util-normalize-identifier: ^1.0.0
+ checksum: 4caf69058b438c9e34004acfb1d2b20d58306898d760b889f73d27ed5702cd940be9fcb2a08f6e58b8d9d8e2b1c886c549cd7d23b659da5fb2ed87a22f44c13c
+ languageName: node
+ linkType: hard
+
+"mdast-util-gfm-strikethrough@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "mdast-util-gfm-strikethrough@npm:1.0.2"
+ dependencies:
+ "@types/mdast": ^3.0.0
+ mdast-util-to-markdown: ^1.3.0
+ checksum: 15af8210ba1a857e91c108030933aab33fb4e70332c52ee3d99224daf8b0a0c7fbc7937fccea42825e9742cd02603c9aa001c3c0a47ceadd16372fb26591bb9a
+ languageName: node
+ linkType: hard
+
+"mdast-util-gfm-table@npm:^1.0.0":
+ version: 1.0.6
+ resolution: "mdast-util-gfm-table@npm:1.0.6"
+ dependencies:
+ "@types/mdast": ^3.0.0
+ markdown-table: ^3.0.0
+ mdast-util-from-markdown: ^1.0.0
+ mdast-util-to-markdown: ^1.3.0
+ checksum: 1b0469d9a9c9ca2f8d7cbd46f660963bb98984cb9b2b7e25dba05c0ea2743cc9fc46fbbfdb046735b84a3c67445f13c655dc449cefa5d38646c2edf944201f50
+ languageName: node
+ linkType: hard
+
+"mdast-util-gfm-task-list-item@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "mdast-util-gfm-task-list-item@npm:1.0.1"
+ dependencies:
+ "@types/mdast": ^3.0.0
+ mdast-util-to-markdown: ^1.3.0
+ checksum: 9bb0f162532f8e11e571802ed19301572479fe9507652c8fb3f648279bbde3baa9f6377d9492dbba61eedd96755f8aff9c7c259287875544fb751907d79da69e
+ languageName: node
+ linkType: hard
+
+"mdast-util-gfm@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "mdast-util-gfm@npm:2.0.1"
+ dependencies:
+ mdast-util-from-markdown: ^1.0.0
+ mdast-util-gfm-autolink-literal: ^1.0.0
+ mdast-util-gfm-footnote: ^1.0.0
+ mdast-util-gfm-strikethrough: ^1.0.0
+ mdast-util-gfm-table: ^1.0.0
+ mdast-util-gfm-task-list-item: ^1.0.0
+ mdast-util-to-markdown: ^1.0.0
+ checksum: 8b39e6694521094ae28d12cbeff074ef3ec3f7f7ec59fbddd4e8a45a275e092c6ba6ecee4c720938eb3ee072ebd41d743b08cc0ab9171612a5aeddc1e78ae882
+ languageName: node
+ linkType: hard
+
+"mdast-util-to-hast@npm:^12.1.0":
+ version: 12.2.4
+ resolution: "mdast-util-to-hast@npm:12.2.4"
+ dependencies:
+ "@types/hast": ^2.0.0
+ "@types/mdast": ^3.0.0
+ mdast-util-definitions: ^5.0.0
+ micromark-util-sanitize-uri: ^1.1.0
+ trim-lines: ^3.0.0
+ unist-builder: ^3.0.0
+ unist-util-generated: ^2.0.0
+ unist-util-position: ^4.0.0
+ unist-util-visit: ^4.0.0
+ checksum: c9a1c31527590a11ec7a637ae46a8f52b05b457523e9be9c4ca8bcc1efb3eac5ed1575353e97a70fffcf61e40c80d649bee28058fa1509bc1c213eacfa73bc5f
+ languageName: node
+ linkType: hard
+
+"mdast-util-to-markdown@npm:^1.0.0, mdast-util-to-markdown@npm:^1.3.0":
+ version: 1.3.0
+ resolution: "mdast-util-to-markdown@npm:1.3.0"
+ dependencies:
+ "@types/mdast": ^3.0.0
+ "@types/unist": ^2.0.0
+ longest-streak: ^3.0.0
+ mdast-util-to-string: ^3.0.0
+ micromark-util-decode-string: ^1.0.0
+ unist-util-visit: ^4.0.0
+ zwitch: ^2.0.0
+ checksum: 0ea4fc11b7a49b15d400d50044429c45222cb9bc583553288c7c54704d051f25049233817129ba56a6f581f1e20916e5c540870a80987318747a95b44a36ba3e
+ languageName: node
+ linkType: hard
+
+"mdast-util-to-string@npm:^3.0.0, mdast-util-to-string@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "mdast-util-to-string@npm:3.1.0"
+ checksum: f42ddd4e22f2215a75715b92ea6e3149c4ba356e7781d7b94fc86ded1c79cec3f986afeecef3a4a80068c9b224a6520099783a12146b957de24f020a3e47dd29
+ languageName: node
+ linkType: hard
+
"media-typer@npm:0.3.0":
version: 0.3.0
resolution: "media-typer@npm:0.3.0"
@@ -6553,6 +6861,337 @@ __metadata:
languageName: node
linkType: hard
+"micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1":
+ version: 1.0.6
+ resolution: "micromark-core-commonmark@npm:1.0.6"
+ dependencies:
+ decode-named-character-reference: ^1.0.0
+ micromark-factory-destination: ^1.0.0
+ micromark-factory-label: ^1.0.0
+ micromark-factory-space: ^1.0.0
+ micromark-factory-title: ^1.0.0
+ micromark-factory-whitespace: ^1.0.0
+ micromark-util-character: ^1.0.0
+ micromark-util-chunked: ^1.0.0
+ micromark-util-classify-character: ^1.0.0
+ micromark-util-html-tag-name: ^1.0.0
+ micromark-util-normalize-identifier: ^1.0.0
+ micromark-util-resolve-all: ^1.0.0
+ micromark-util-subtokenize: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.1
+ uvu: ^0.5.0
+ checksum: 4b483c46077f696ed310f6d709bb9547434c218ceb5c1220fde1707175f6f68b44da15ab8668f9c801e1a123210071e3af883a7d1215122c913fd626f122bfc2
+ languageName: node
+ linkType: hard
+
+"micromark-extension-gfm-autolink-literal@npm:^1.0.0":
+ version: 1.0.3
+ resolution: "micromark-extension-gfm-autolink-literal@npm:1.0.3"
+ dependencies:
+ micromark-util-character: ^1.0.0
+ micromark-util-sanitize-uri: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ uvu: ^0.5.0
+ checksum: bb181972ac346ca73ca1ab0b80b80c9d6509ed149799d2217d5442670f499c38a94edff73d32fa52b390d89640974cfbd7f29e4ad7d599581d5e1cabcae636a2
+ languageName: node
+ linkType: hard
+
+"micromark-extension-gfm-footnote@npm:^1.0.0":
+ version: 1.0.4
+ resolution: "micromark-extension-gfm-footnote@npm:1.0.4"
+ dependencies:
+ micromark-core-commonmark: ^1.0.0
+ micromark-factory-space: ^1.0.0
+ micromark-util-character: ^1.0.0
+ micromark-util-normalize-identifier: ^1.0.0
+ micromark-util-sanitize-uri: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ uvu: ^0.5.0
+ checksum: 8daa203f5cf753338d5ecdbaae6b3ab6319d34b6013b90ea6860bed299418cecf86e69e48dabe42562e334760c738c77c5acdb47e75ae26f5f01f02f3bf0952d
+ languageName: node
+ linkType: hard
+
+"micromark-extension-gfm-strikethrough@npm:^1.0.0":
+ version: 1.0.4
+ resolution: "micromark-extension-gfm-strikethrough@npm:1.0.4"
+ dependencies:
+ micromark-util-chunked: ^1.0.0
+ micromark-util-classify-character: ^1.0.0
+ micromark-util-resolve-all: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ uvu: ^0.5.0
+ checksum: f43d316b85fe93df1711cdcdc99a5320b941239349234bd262fc708cb67ad47bdfb41d1a7ebe2a5829816b0e9d3107380a5c1e558cb536a75354cbe4857823ba
+ languageName: node
+ linkType: hard
+
+"micromark-extension-gfm-table@npm:^1.0.0":
+ version: 1.0.5
+ resolution: "micromark-extension-gfm-table@npm:1.0.5"
+ dependencies:
+ micromark-factory-space: ^1.0.0
+ micromark-util-character: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ uvu: ^0.5.0
+ checksum: f0aab3b4333cc24b1534b08dc4cce986dd606df8b7ed913e5a1de9fe2d3ae67b2435663c0bc271b528874af4928e580e1ad540ea9117d7f2d74edb28859c97ef
+ languageName: node
+ linkType: hard
+
+"micromark-extension-gfm-tagfilter@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "micromark-extension-gfm-tagfilter@npm:1.0.1"
+ dependencies:
+ micromark-util-types: ^1.0.0
+ checksum: 63e8d68f25871722900a67a8001d5da21f19ea707f3566fc7d0b2eb1f6d52476848bb6a41576cf22470565124af9497c5aae842355faa4c14ec19cb1847e71ec
+ languageName: node
+ linkType: hard
+
+"micromark-extension-gfm-task-list-item@npm:^1.0.0":
+ version: 1.0.3
+ resolution: "micromark-extension-gfm-task-list-item@npm:1.0.3"
+ dependencies:
+ micromark-factory-space: ^1.0.0
+ micromark-util-character: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ uvu: ^0.5.0
+ checksum: d320b0c5301f87e211c06a2330d1ee0fee6da14f0d6d44d5211055b465dadff34390cd6b258a5e0ca376fcda3364fef9a12fe6e26a0c858231fa3b98ddbf7785
+ languageName: node
+ linkType: hard
+
+"micromark-extension-gfm@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-extension-gfm@npm:2.0.1"
+ dependencies:
+ micromark-extension-gfm-autolink-literal: ^1.0.0
+ micromark-extension-gfm-footnote: ^1.0.0
+ micromark-extension-gfm-strikethrough: ^1.0.0
+ micromark-extension-gfm-table: ^1.0.0
+ micromark-extension-gfm-tagfilter: ^1.0.0
+ micromark-extension-gfm-task-list-item: ^1.0.0
+ micromark-util-combine-extensions: ^1.0.0
+ micromark-util-types: ^1.0.0
+ checksum: b181479c87be38d5ae8d28e6dc52fab73c894fd2706876746f27a91fb186644ce03532a9c35dca2186327a0e2285cd5242ad0361dc89adedd4a50376ffd94e22
+ languageName: node
+ linkType: hard
+
+"micromark-factory-destination@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "micromark-factory-destination@npm:1.0.0"
+ dependencies:
+ micromark-util-character: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ checksum: 8e733ae9c1c2342f14ff290bf09946e20f6f540117d80342377a765cac48df2ea5e748f33c8b07501ad7a43414b1a6597c8510ede2052b6bf1251fab89748e20
+ languageName: node
+ linkType: hard
+
+"micromark-factory-label@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "micromark-factory-label@npm:1.0.2"
+ dependencies:
+ micromark-util-character: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ uvu: ^0.5.0
+ checksum: 957e9366bdc8dbc1437c0706ff96972fa985ab4b1274abcae12f6094f527cbf5c69e7f2304c23c7f4b96e311ff7911d226563b8b43dcfcd4091e8c985fb97ce6
+ languageName: node
+ linkType: hard
+
+"micromark-factory-space@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "micromark-factory-space@npm:1.0.0"
+ dependencies:
+ micromark-util-character: ^1.0.0
+ micromark-util-types: ^1.0.0
+ checksum: 70d3aafde4e68ef4e509a3b644e9a29e4aada00801279e346577b008cbca06d78051bcd62aa7ea7425856ed73f09abd2b36607803055f726f52607ee7cb706b0
+ languageName: node
+ linkType: hard
+
+"micromark-factory-title@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "micromark-factory-title@npm:1.0.2"
+ dependencies:
+ micromark-factory-space: ^1.0.0
+ micromark-util-character: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ uvu: ^0.5.0
+ checksum: 9a9cf66babde0bad1e25d6c1087082bfde6dfc319a36cab67c89651cc1a53d0e21cdec83262b5a4c33bff49f0e3c8dc2a7bd464e991d40dbea166a8f9b37e5b2
+ languageName: node
+ linkType: hard
+
+"micromark-factory-whitespace@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "micromark-factory-whitespace@npm:1.0.0"
+ dependencies:
+ micromark-factory-space: ^1.0.0
+ micromark-util-character: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ checksum: 0888386e6ea2dd665a5182c570d9b3d0a172d3f11694ca5a2a84e552149c9f1429f5b975ec26e1f0fa4388c55a656c9f359ce5e0603aff6175ba3e255076f20b
+ languageName: node
+ linkType: hard
+
+"micromark-util-character@npm:^1.0.0":
+ version: 1.1.0
+ resolution: "micromark-util-character@npm:1.1.0"
+ dependencies:
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ checksum: 504a4e3321f69bddf3fec9f0c1058239fc23336bda5be31d532b150491eda47965a251b37f8a7a9db0c65933b3aaa49cf88044fb1028be3af7c5ee6212bf8d5f
+ languageName: node
+ linkType: hard
+
+"micromark-util-chunked@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "micromark-util-chunked@npm:1.0.0"
+ dependencies:
+ micromark-util-symbol: ^1.0.0
+ checksum: c1efd56e8c4217bcf1c6f1a9fb9912b4a2a5503b00d031da902be922fb3fee60409ac53f11739991291357b2784fb0647ddfc74c94753a068646c0cb0fd71421
+ languageName: node
+ linkType: hard
+
+"micromark-util-classify-character@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "micromark-util-classify-character@npm:1.0.0"
+ dependencies:
+ micromark-util-character: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ checksum: 180446e6a1dec653f625ded028f244784e1db8d10ad05c5d70f08af9de393b4a03dc6cf6fa5ed8ccc9c24bbece7837abf3bf66681c0b4adf159364b7d5236dfd
+ languageName: node
+ linkType: hard
+
+"micromark-util-combine-extensions@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "micromark-util-combine-extensions@npm:1.0.0"
+ dependencies:
+ micromark-util-chunked: ^1.0.0
+ micromark-util-types: ^1.0.0
+ checksum: 5304a820ef75340e1be69d6ad167055b6ba9a3bafe8171e5945a935752f462415a9dd61eb3490220c055a8a11167209a45bfa73f278338b7d3d61fa1464d3f35
+ languageName: node
+ linkType: hard
+
+"micromark-util-decode-numeric-character-reference@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "micromark-util-decode-numeric-character-reference@npm:1.0.0"
+ dependencies:
+ micromark-util-symbol: ^1.0.0
+ checksum: f3ae2bb582a80f1e9d3face026f585c0c472335c064bd850bde152376f0394cb2831746749b6be6e0160f7d73626f67d10716026c04c87f402c0dd45a1a28633
+ languageName: node
+ linkType: hard
+
+"micromark-util-decode-string@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "micromark-util-decode-string@npm:1.0.2"
+ dependencies:
+ decode-named-character-reference: ^1.0.0
+ micromark-util-character: ^1.0.0
+ micromark-util-decode-numeric-character-reference: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ checksum: 2dbb41c9691cc71505d39706405139fb7d6699429d577a524c7c248ac0cfd09d3dd212ad8e91c143a00b2896f26f81136edc67c5bda32d20446f0834d261b17a
+ languageName: node
+ linkType: hard
+
+"micromark-util-encode@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "micromark-util-encode@npm:1.0.1"
+ checksum: 9290583abfdc79ea3e7eb92c012c47a0e14327888f8aaa6f57ff79b3058d8e7743716b9d91abca3646f15ab3d78fdad9779fdb4ccf13349cd53309dfc845253a
+ languageName: node
+ linkType: hard
+
+"micromark-util-html-tag-name@npm:^1.0.0":
+ version: 1.1.0
+ resolution: "micromark-util-html-tag-name@npm:1.1.0"
+ checksum: a9b783cec89ec813648d59799464c1950fe281ae797b2a965f98ad0167d7fa1a247718eff023b4c015f47211a172f9446b8e6b98aad50e3cd44a3337317dad2c
+ languageName: node
+ linkType: hard
+
+"micromark-util-normalize-identifier@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "micromark-util-normalize-identifier@npm:1.0.0"
+ dependencies:
+ micromark-util-symbol: ^1.0.0
+ checksum: d7c09d5e8318fb72f194af72664bd84a48a2928e3550b2b21c8fbc0ec22524f2a72e0f6663d2b95dc189a6957d3d7759b60716e888909710767cd557be821f8b
+ languageName: node
+ linkType: hard
+
+"micromark-util-resolve-all@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "micromark-util-resolve-all@npm:1.0.0"
+ dependencies:
+ micromark-util-types: ^1.0.0
+ checksum: 409667f2bd126ef8acce009270d2aecaaa5584c5807672bc657b09e50aa91bd2e552cf41e5be1e6469244a83349cbb71daf6059b746b1c44e3f35446fef63e50
+ languageName: node
+ linkType: hard
+
+"micromark-util-sanitize-uri@npm:^1.0.0, micromark-util-sanitize-uri@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "micromark-util-sanitize-uri@npm:1.1.0"
+ dependencies:
+ micromark-util-character: ^1.0.0
+ micromark-util-encode: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ checksum: fe6093faa0adeb8fad606184d927ce37f207dcc2ec7256438e7f273c8829686245dd6161b597913ef25a3c4fb61863d3612a40cb04cf15f83ba1b4087099996b
+ languageName: node
+ linkType: hard
+
+"micromark-util-subtokenize@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "micromark-util-subtokenize@npm:1.0.2"
+ dependencies:
+ micromark-util-chunked: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.0
+ uvu: ^0.5.0
+ checksum: c32ee58a7e1384ab1161a9ee02fbb04ad7b6e96d0b8c93dba9803c329a53d07f22ab394c7a96b2e30d6b8fbe3585b85817dba07277b1317111fc234e166bd2d1
+ languageName: node
+ linkType: hard
+
+"micromark-util-symbol@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "micromark-util-symbol@npm:1.0.1"
+ checksum: c6a3023b3a7432c15864b5e33a1bcb5042ac7aa097f2f452e587bef45433d42d39e0a5cce12fbea91e0671098ba0c3f62a2b30ce1cde66ecbb5e8336acf4391d
+ languageName: node
+ linkType: hard
+
+"micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1":
+ version: 1.0.2
+ resolution: "micromark-util-types@npm:1.0.2"
+ checksum: 08dc901b7c06ee3dfeb54befca05cbdab9525c1cf1c1080967c3878c9e72cb9856c7e8ff6112816e18ead36ce6f99d55aaa91560768f2f6417b415dcba1244df
+ languageName: node
+ linkType: hard
+
+"micromark@npm:^3.0.0":
+ version: 3.1.0
+ resolution: "micromark@npm:3.1.0"
+ dependencies:
+ "@types/debug": ^4.0.0
+ debug: ^4.0.0
+ decode-named-character-reference: ^1.0.0
+ micromark-core-commonmark: ^1.0.1
+ micromark-factory-space: ^1.0.0
+ micromark-util-character: ^1.0.0
+ micromark-util-chunked: ^1.0.0
+ micromark-util-combine-extensions: ^1.0.0
+ micromark-util-decode-numeric-character-reference: ^1.0.0
+ micromark-util-encode: ^1.0.0
+ micromark-util-normalize-identifier: ^1.0.0
+ micromark-util-resolve-all: ^1.0.0
+ micromark-util-sanitize-uri: ^1.0.0
+ micromark-util-subtokenize: ^1.0.0
+ micromark-util-symbol: ^1.0.0
+ micromark-util-types: ^1.0.1
+ uvu: ^0.5.0
+ checksum: 5fe5bc3bf92e2ddd37b5f0034080fc3a4d4b3c1130dd5e435bb96ec75e9453091272852e71a4d74906a8fcf992d6f79d794607657c534bda49941e9950a92e28
+ languageName: node
+ linkType: hard
+
"micromatch@npm:^4.0.4":
version: 4.0.5
resolution: "micromatch@npm:4.0.5"
@@ -6849,6 +7488,13 @@ __metadata:
languageName: node
linkType: hard
+"mri@npm:^1.1.0":
+ version: 1.2.0
+ resolution: "mri@npm:1.2.0"
+ checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85
+ languageName: node
+ linkType: hard
+
"ms@npm:2.0.0":
version: 2.0.0
resolution: "ms@npm:2.0.0"
@@ -7809,6 +8455,13 @@ __metadata:
languageName: node
linkType: hard
+"prismjs@npm:^1.29.0":
+ version: 1.29.0
+ resolution: "prismjs@npm:1.29.0"
+ checksum: 007a8869d4456ff8049dc59404e32d5666a07d99c3b0e30a18bd3b7676dfa07d1daae9d0f407f20983865fd8da56de91d09cb08e6aa61f5bc420a27c0beeaf93
+ languageName: node
+ linkType: hard
+
"process-nextick-args@npm:~2.0.0":
version: 2.0.1
resolution: "process-nextick-args@npm:2.0.1"
@@ -7850,7 +8503,7 @@ __metadata:
languageName: node
linkType: hard
-"prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1":
+"prop-types@npm:^15.0.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1":
version: 15.8.1
resolution: "prop-types@npm:15.8.1"
dependencies:
@@ -7861,6 +8514,13 @@ __metadata:
languageName: node
linkType: hard
+"property-information@npm:^6.0.0":
+ version: 6.2.0
+ resolution: "property-information@npm:6.2.0"
+ checksum: 23afce07ba821cbe7d926e63cdd680991961c82be4bbb6c0b17c47f48894359c1be6e51cd74485fc10a9d3fd361b475388e1e39311ed2b53127718f72aab1955
+ languageName: node
+ linkType: hard
+
"public-encrypt@npm:^4.0.0":
version: 4.0.3
resolution: "public-encrypt@npm:4.0.3"
@@ -8011,6 +8671,39 @@ __metadata:
languageName: node
linkType: hard
+"react-is@npm:^18.0.0":
+ version: 18.2.0
+ resolution: "react-is@npm:18.2.0"
+ checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e
+ languageName: node
+ linkType: hard
+
+"react-markdown@npm:^8.0.4":
+ version: 8.0.4
+ resolution: "react-markdown@npm:8.0.4"
+ dependencies:
+ "@types/hast": ^2.0.0
+ "@types/prop-types": ^15.0.0
+ "@types/unist": ^2.0.0
+ comma-separated-tokens: ^2.0.0
+ hast-util-whitespace: ^2.0.0
+ prop-types: ^15.0.0
+ property-information: ^6.0.0
+ react-is: ^18.0.0
+ remark-parse: ^10.0.0
+ remark-rehype: ^10.0.0
+ space-separated-tokens: ^2.0.0
+ style-to-object: ^0.3.0
+ unified: ^10.0.0
+ unist-util-visit: ^4.0.0
+ vfile: ^5.0.0
+ peerDependencies:
+ "@types/react": ">=16"
+ react: ">=16"
+ checksum: 9feec3734694ef05f450779a1adac10dbb768b8f3adbf4c81f59ca3cea8fd2f6a578fa4c488183597a7418f972715e5d84705cc76f278b55c86d622e82561bf8
+ languageName: node
+ linkType: hard
+
"react-property@npm:2.0.0":
version: 2.0.0
resolution: "react-property@npm:2.0.0"
@@ -8177,6 +8870,41 @@ __metadata:
languageName: node
linkType: hard
+"remark-gfm@npm:^3.0.1":
+ version: 3.0.1
+ resolution: "remark-gfm@npm:3.0.1"
+ dependencies:
+ "@types/mdast": ^3.0.0
+ mdast-util-gfm: ^2.0.0
+ micromark-extension-gfm: ^2.0.0
+ unified: ^10.0.0
+ checksum: 02254f74d67b3419c2c9cf62d799ec35f6c6cd74db25c001361751991552a7ce86049a972107bff8122d85d15ae4a8d1a0618f3bc01a7df837af021ae9b2a04e
+ languageName: node
+ linkType: hard
+
+"remark-parse@npm:^10.0.0":
+ version: 10.0.1
+ resolution: "remark-parse@npm:10.0.1"
+ dependencies:
+ "@types/mdast": ^3.0.0
+ mdast-util-from-markdown: ^1.0.0
+ unified: ^10.0.0
+ checksum: 505088e564ab53ff054433368adbb7b551f69240c7d9768975529837a86f1d0f085e72d6211929c5c42db315273df4afc94f3d3a8662ffdb69468534c6643d29
+ languageName: node
+ linkType: hard
+
+"remark-rehype@npm:^10.0.0":
+ version: 10.1.0
+ resolution: "remark-rehype@npm:10.1.0"
+ dependencies:
+ "@types/hast": ^2.0.0
+ "@types/mdast": ^3.0.0
+ mdast-util-to-hast: ^12.1.0
+ unified: ^10.0.0
+ checksum: b9ac8acff3383b204dfdc2599d0bdf86e6ca7e837033209584af2e6aaa6a9013e519a379afa3201299798cab7298c8f4b388de118c312c67234c133318aec084
+ languageName: node
+ linkType: hard
+
"replace-string@npm:3.1.0":
version: 3.1.0
resolution: "replace-string@npm:3.1.0"
@@ -8332,6 +9060,15 @@ __metadata:
languageName: node
linkType: hard
+"sade@npm:^1.7.3":
+ version: 1.8.1
+ resolution: "sade@npm:1.8.1"
+ dependencies:
+ mri: ^1.1.0
+ checksum: 0756e5b04c51ccdc8221ebffd1548d0ce5a783a44a0fa9017a026659b97d632913e78f7dca59f2496aa996a0be0b0c322afd87ca72ccd909406f49dbffa0f45d
+ languageName: node
+ linkType: hard
+
"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0":
version: 5.2.1
resolution: "safe-buffer@npm:5.2.1"
@@ -8646,6 +9383,13 @@ __metadata:
languageName: node
linkType: hard
+"space-separated-tokens@npm:^2.0.0":
+ version: 2.0.2
+ resolution: "space-separated-tokens@npm:2.0.2"
+ checksum: 202e97d7ca1ba0758a0aa4fe226ff98142073bcceeff2da3aad037968878552c3bbce3b3231970025375bbba5aee00c5b8206eda408da837ab2dc9c0f26be990
+ languageName: node
+ linkType: hard
+
"sparse-bitfield@npm:^3.0.3":
version: 3.0.3
resolution: "sparse-bitfield@npm:3.0.3"
@@ -8887,7 +9631,7 @@ __metadata:
languageName: node
linkType: hard
-"style-to-object@npm:0.3.0":
+"style-to-object@npm:0.3.0, style-to-object@npm:^0.3.0":
version: 0.3.0
resolution: "style-to-object@npm:0.3.0"
dependencies:
@@ -9188,6 +9932,20 @@ __metadata:
languageName: node
linkType: hard
+"trim-lines@npm:^3.0.0":
+ version: 3.0.1
+ resolution: "trim-lines@npm:3.0.1"
+ checksum: e241da104682a0e0d807222cc1496b92e716af4db7a002f4aeff33ae6a0024fef93165d49eab11aa07c71e1347c42d46563f91dfaa4d3fb945aa535cdead53ed
+ languageName: node
+ linkType: hard
+
+"trough@npm:^2.0.0":
+ version: 2.1.0
+ resolution: "trough@npm:2.1.0"
+ checksum: a577bb561c2b401cc0e1d9e188fcfcdf63b09b151ff56a668da12197fe97cac15e3d77d5b51f426ccfd94255744a9118e9e9935afe81a3644fa1be9783c82886
+ languageName: node
+ linkType: hard
+
"ts-pattern@npm:^4.0.1":
version: 4.0.6
resolution: "ts-pattern@npm:4.0.6"
@@ -9343,6 +10101,21 @@ __metadata:
languageName: node
linkType: hard
+"unified@npm:^10.0.0":
+ version: 10.1.2
+ resolution: "unified@npm:10.1.2"
+ dependencies:
+ "@types/unist": ^2.0.0
+ bail: ^2.0.0
+ extend: ^3.0.0
+ is-buffer: ^2.0.0
+ is-plain-obj: ^4.0.0
+ trough: ^2.0.0
+ vfile: ^5.0.0
+ checksum: 053e7c65ede644607f87bd625a299e4b709869d2f76ec8138569e6e886903b6988b21cd9699e471eda42bee189527be0a9dac05936f1d069a5e65d0125d5d756
+ languageName: node
+ linkType: hard
+
"unique-filename@npm:^2.0.0":
version: 2.0.1
resolution: "unique-filename@npm:2.0.1"
@@ -9370,6 +10143,68 @@ __metadata:
languageName: node
linkType: hard
+"unist-builder@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "unist-builder@npm:3.0.0"
+ dependencies:
+ "@types/unist": ^2.0.0
+ checksum: 80459ee3c2ece90bbc4f4b4faeed524d144c1a09ee07ff3e9004648d9b71a652e80a3b3ef60311a1e92f6ab915caf27c6f08062b5f8c84fa725bc0d7c5759e84
+ languageName: node
+ linkType: hard
+
+"unist-util-generated@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "unist-util-generated@npm:2.0.0"
+ checksum: 3a806793fa24a75190c217740ce706340d6cb0d51eff677134253d628f8e4355ebd8a243fe8045c583463f6bebfd50f902d653161da87c1359fcd1a14b99c8e0
+ languageName: node
+ linkType: hard
+
+"unist-util-is@npm:^5.0.0":
+ version: 5.1.1
+ resolution: "unist-util-is@npm:5.1.1"
+ checksum: e8743a19a304d8a8f5684f3e5ddb5546f2655847b42123687277d76566a2aba89beb7b4a8a9e9ebc4d904cd1cecc285356d7923d973a43cfc19a1e10ff6bdee4
+ languageName: node
+ linkType: hard
+
+"unist-util-position@npm:^4.0.0":
+ version: 4.0.3
+ resolution: "unist-util-position@npm:4.0.3"
+ dependencies:
+ "@types/unist": ^2.0.0
+ checksum: 0d89973628d40f19345cbcc50008f7f56d411afa54434bbe6c224b22d26aaf9d4500da2de363f1f01945acab1f1c31920c514253149eb546ff9b8bbc1ea94209
+ languageName: node
+ linkType: hard
+
+"unist-util-stringify-position@npm:^3.0.0":
+ version: 3.0.2
+ resolution: "unist-util-stringify-position@npm:3.0.2"
+ dependencies:
+ "@types/unist": ^2.0.0
+ checksum: 2dfd7a0fb2a55e99cc319c3bf7f9f1f73ed652978fa70d19117faa7245d20f21738ec926ecc47f341705ca1bb157e87ced0b6bb5ecaa666bd2ae6b2510d6a671
+ languageName: node
+ linkType: hard
+
+"unist-util-visit-parents@npm:^5.0.0, unist-util-visit-parents@npm:^5.1.1":
+ version: 5.1.1
+ resolution: "unist-util-visit-parents@npm:5.1.1"
+ dependencies:
+ "@types/unist": ^2.0.0
+ unist-util-is: ^5.0.0
+ checksum: c699d18f5b26461dee37612b84c243fd5457c98f4c0540d9ba8bee05062aece5f3b4fb1af6b07423ce6750d8926e8c01fc2b1a4de1e54925ef6795c177ed8e18
+ languageName: node
+ linkType: hard
+
+"unist-util-visit@npm:^4.0.0":
+ version: 4.1.1
+ resolution: "unist-util-visit@npm:4.1.1"
+ dependencies:
+ "@types/unist": ^2.0.0
+ unist-util-is: ^5.0.0
+ unist-util-visit-parents: ^5.1.1
+ checksum: c4a63734b0a5b439c62d20901bb472bdafdbbcd80c383e254aedeb98b23d0bae815a331e776ce7d63ea3c8018a54318abb8709d07cdf7dd094f79b2f07bb39f0
+ languageName: node
+ linkType: hard
+
"universalify@npm:^2.0.0":
version: 2.0.0
resolution: "universalify@npm:2.0.0"
@@ -9468,6 +10303,20 @@ __metadata:
languageName: node
linkType: hard
+"uvu@npm:^0.5.0":
+ version: 0.5.6
+ resolution: "uvu@npm:0.5.6"
+ dependencies:
+ dequal: ^2.0.0
+ diff: ^5.0.0
+ kleur: ^4.0.3
+ sade: ^1.7.3
+ bin:
+ uvu: bin.js
+ checksum: 09460a37975627de9fcad396e5078fb844d01aaf64a6399ebfcfd9e55f1c2037539b47611e8631f89be07656962af0cf48c334993db82b9ae9c3d25ce3862168
+ languageName: node
+ linkType: hard
+
"validate-npm-package-license@npm:^3.0.1":
version: 3.0.4
resolution: "validate-npm-package-license@npm:3.0.4"
@@ -9478,6 +10327,28 @@ __metadata:
languageName: node
linkType: hard
+"vfile-message@npm:^3.0.0":
+ version: 3.1.3
+ resolution: "vfile-message@npm:3.1.3"
+ dependencies:
+ "@types/unist": ^2.0.0
+ unist-util-stringify-position: ^3.0.0
+ checksum: f5ec2afbc1d5589fc45729209bdcaf01e3fc520fdac693557e62bd91cc8d6f915a6397c2f4d5f7a129ffc6c7511cb77eaf9e0932be1a70e39bed584ef7c86dbd
+ languageName: node
+ linkType: hard
+
+"vfile@npm:^5.0.0":
+ version: 5.3.6
+ resolution: "vfile@npm:5.3.6"
+ dependencies:
+ "@types/unist": ^2.0.0
+ is-buffer: ^2.0.0
+ unist-util-stringify-position: ^3.0.0
+ vfile-message: ^3.0.0
+ checksum: 1aa5efff510bc6621ff8a7dc6513110529a11a8d665b44f169cc2a2b6bfa4f312efa00bfe86ca20e506538ff2915c8e538a664bd02a06419421ff964844fbe94
+ languageName: node
+ linkType: hard
+
"wcwidth@npm:^1.0.1":
version: 1.0.1
resolution: "wcwidth@npm:1.0.1"
@@ -9754,6 +10625,7 @@ __metadata:
"@sapphire/shapeshift": ^3.7.0
"@tanstack/react-query": ^4.13.0
"@types/cookie": ^0.5.1
+ "@types/katex": ^0.14.0
"@types/minio": ^7.0.14
"@types/multer": ^1.4.7
"@types/node": ^18.11.7
@@ -9778,6 +10650,7 @@ __metadata:
exiftool-vendored: ^18.6.0
fflate: ^0.7.4
find-my-way: ^7.3.1
+ katex: ^0.16.3
minio: ^7.0.32
ms: canary
multer: ^1.4.5-lts.1
@@ -9786,13 +10659,23 @@ __metadata:
otplib: ^12.0.1
prettier: ^2.7.1
prisma: ^4.5.0
+ prismjs: ^1.29.0
qrcode: ^1.5.1
react: ^18.2.0
react-chartjs-2: ^4.3.1
react-dom: ^18.2.0
react-feather: ^2.0.10
+ react-markdown: ^8.0.4
recoil: ^0.7.6
+ remark-gfm: ^3.0.1
sharp: ^0.31.1
typescript: ^4.8.4
languageName: unknown
linkType: soft
+
+"zwitch@npm:^2.0.0":
+ version: 2.0.4
+ resolution: "zwitch@npm:2.0.4"
+ checksum: f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6
+ languageName: node
+ linkType: hard