From 251e183cd7d1c45f9c303da784cfd030bc09676e Mon Sep 17 00:00:00 2001 From: DIYgod Date: Wed, 17 Jan 2024 13:16:09 +0800 Subject: [PATCH] feat: upgrade unified, rewrite unified pipeline, rehype ipfs --- package.json | 44 +- pnpm-lock.yaml | 1295 +++++++++++++++++---------------- src/components/ui/Mention.tsx | 8 +- src/markdown/index.ts | 228 +++--- src/markdown/rehype-audio.ts | 63 -- src/markdown/rehype-image.ts | 47 -- src/markdown/rehype-ipfs.ts | 21 + src/markdown/rehype-video.ts | 36 - 8 files changed, 830 insertions(+), 912 deletions(-) delete mode 100644 src/markdown/rehype-audio.ts delete mode 100644 src/markdown/rehype-image.ts create mode 100644 src/markdown/rehype-ipfs.ts delete mode 100644 src/markdown/rehype-video.ts diff --git a/package.json b/package.json index 1d1fa24c..90841e85 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "@lezer/highlight": "1.2.0", "@mantine/core": "7.3.2", "@mantine/dates": "7.3.2", - "@microflash/remark-callout-directives": "1.6.0", + "@microflash/remark-callout-directives": "2.0.0", "@monaco-editor/react": "4.6.0", "@popperjs/core": "2.11.8", "@prisma/client": "5.8.1", @@ -84,6 +84,7 @@ "gpt-tokenizer": "^2.1.2", "hast-util-from-html": "2.0.1", "hast-util-to-html": "9.0.0", + "hast-util-to-jsx-runtime": "2.3.0", "image-size": "^1.1.1", "immer": "10.0.3", "ioredis": "5.3.2", @@ -124,27 +125,25 @@ "react-tweet": "3.2.0", "react-virtuoso": "4.6.2", "refractor": "4.8.1", - "rehype-autolink-headings": "6.1.1", - "rehype-infer-description-meta": "1.1.0", - "rehype-katex": "6.0.3", - "rehype-prism-plus": "1.6.3", - "rehype-raw": "6.1.1", - "rehype-react": "7.2.0", - "rehype-rewrite": "3.0.6", - "rehype-sanitize": "5.0.1", - "rehype-slug": "5.1.0", - "rehype-stringify": "9.0.4", - "remark-breaks": "3.0.3", - "remark-directive": "2.0.1", + "rehype-autolink-headings": "7.1.0", + "rehype-infer-description-meta": "2.0.0", + "rehype-katex": "7.0.0", + "rehype-prism-plus": "2.0.0", + "rehype-raw": "7.0.0", + "rehype-rewrite": "4.0.2", + "rehype-sanitize": "6.0.0", + "rehype-slug": "6.0.0", + "remark-breaks": "4.0.0", + "remark-directive": "3.0.0", "remark-directive-rehype": "0.4.2", - "remark-emoji": "4.0.0", - "remark-frontmatter": "4.0.1", - "remark-gfm": "3.0.1", - "remark-github-alerts": "^0.0.2", - "remark-math": "5.1.1", - "remark-parse": "10.0.2", - "remark-rehype": "10.1.0", - "remark-stringify": "10.0.3", + "remark-emoji": "4.0.1", + "remark-frontmatter": "5.0.0", + "remark-gfm": "4.0.0", + "remark-github-alerts": "^0.0.4", + "remark-math": "6.0.0", + "remark-parse": "11.0.0", + "remark-rehype": "11.1.0", + "remark-stringify": "11.0.0", "remove-markdown": "0.5.0", "serialize-javascript": "6.0.2", "sharp": "0.32.6", @@ -153,10 +152,11 @@ "tailwind-merge": "2.2.0", "tailwind-scrollbar-hide": "1.1.7", "tailwindcss-animate": "1.0.7", - "unified": "10.1.2", + "unified": "11.0.4", "unist-builder": "4.0.0", "unist-util-visit": "5.0.0", "uuid": "9.0.1", + "vfile": "6.0.1", "viem": "1.21.1", "wagmi": "1.4.13", "xregexp": "^5.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e8728331..e719d668 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,8 +91,8 @@ dependencies: specifier: 7.3.2 version: 7.3.2(@mantine/core@7.3.2)(@mantine/hooks@7.3.2)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0) '@microflash/remark-callout-directives': - specifier: 1.6.0 - version: 1.6.0 + specifier: 2.0.0 + version: 2.0.0 '@monaco-editor/react': specifier: 4.6.0 version: 4.6.0(monaco-editor@0.45.0)(react-dom@18.2.0)(react@18.2.0) @@ -171,6 +171,9 @@ dependencies: hast-util-to-html: specifier: 9.0.0 version: 9.0.0 + hast-util-to-jsx-runtime: + specifier: 2.3.0 + version: 2.3.0 image-size: specifier: ^1.1.1 version: 1.1.1 @@ -292,68 +295,62 @@ dependencies: specifier: 4.8.1 version: 4.8.1 rehype-autolink-headings: - specifier: 6.1.1 - version: 6.1.1 + specifier: 7.1.0 + version: 7.1.0 rehype-infer-description-meta: - specifier: 1.1.0 - version: 1.1.0 + specifier: 2.0.0 + version: 2.0.0 rehype-katex: - specifier: 6.0.3 - version: 6.0.3 + specifier: 7.0.0 + version: 7.0.0 rehype-prism-plus: - specifier: 1.6.3 - version: 1.6.3 + specifier: 2.0.0 + version: 2.0.0 rehype-raw: - specifier: 6.1.1 - version: 6.1.1 - rehype-react: - specifier: 7.2.0 - version: 7.2.0(@types/react@18.2.48) + specifier: 7.0.0 + version: 7.0.0 rehype-rewrite: - specifier: 3.0.6 - version: 3.0.6 + specifier: 4.0.2 + version: 4.0.2 rehype-sanitize: - specifier: 5.0.1 - version: 5.0.1 + specifier: 6.0.0 + version: 6.0.0 rehype-slug: - specifier: 5.1.0 - version: 5.1.0 - rehype-stringify: - specifier: 9.0.4 - version: 9.0.4 + specifier: 6.0.0 + version: 6.0.0 remark-breaks: - specifier: 3.0.3 - version: 3.0.3 + specifier: 4.0.0 + version: 4.0.0 remark-directive: - specifier: 2.0.1 - version: 2.0.1 + specifier: 3.0.0 + version: 3.0.0 remark-directive-rehype: specifier: 0.4.2 version: 0.4.2 remark-emoji: - specifier: 4.0.0 - version: 4.0.0 - remark-frontmatter: specifier: 4.0.1 version: 4.0.1 + remark-frontmatter: + specifier: 5.0.0 + version: 5.0.0 remark-gfm: - specifier: 3.0.1 - version: 3.0.1 + specifier: 4.0.0 + version: 4.0.0 remark-github-alerts: - specifier: ^0.0.2 - version: 0.0.2(@types/mdast@4.0.3)(unified@10.1.2) + specifier: ^0.0.4 + version: 0.0.4(@types/mdast@4.0.3)(unified@11.0.4) remark-math: - specifier: 5.1.1 - version: 5.1.1 + specifier: 6.0.0 + version: 6.0.0 remark-parse: - specifier: 10.0.2 - version: 10.0.2 + specifier: 11.0.0 + version: 11.0.0 remark-rehype: - specifier: 10.1.0 - version: 10.1.0 + specifier: 11.1.0 + version: 11.1.0 remark-stringify: - specifier: 10.0.3 - version: 10.0.3 + specifier: 11.0.0 + version: 11.0.0 remove-markdown: specifier: 0.5.0 version: 0.5.0 @@ -379,8 +376,8 @@ dependencies: specifier: 1.0.7 version: 1.0.7(tailwindcss@3.4.1) unified: - specifier: 10.1.2 - version: 10.1.2 + specifier: 11.0.4 + version: 11.0.4 unist-builder: specifier: 4.0.0 version: 4.0.0 @@ -390,6 +387,9 @@ dependencies: uuid: specifier: 9.0.1 version: 9.0.1 + vfile: + specifier: 6.0.1 + version: 6.0.1 viem: specifier: 1.21.1 version: 1.21.1(typescript@5.3.3)(zod@3.22.4) @@ -2956,13 +2956,6 @@ packages: react: 18.2.0 dev: false - /@mapbox/hast-util-table-cell-style@0.2.0: - resolution: {integrity: sha512-gqaTIGC8My3LVSnU38IwjHVKJC94HSonjvFHDk8/aSrApL8v4uWgm8zJkK7MJIIbHuNOr/+Mv2KkQKcxs6LEZA==} - engines: {node: '>=12'} - dependencies: - unist-util-visit: 1.4.1 - dev: false - /@metamask/safe-event-emitter@2.0.0: resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} dev: false @@ -2979,13 +2972,13 @@ packages: - supports-color dev: false - /@microflash/remark-callout-directives@1.6.0: - resolution: {integrity: sha512-W2ovtw9JdSpO/gjQb3wlf3o5AW4h+w6mewXybsrtSvifb/30P7ahBELDmFSCQBuXiofMbN8xO0/0GqVYoZrXmQ==} + /@microflash/remark-callout-directives@2.0.0: + resolution: {integrity: sha512-SWb6kYBUI/Dq2XzHd+OqEoQ5Ciz69kJ4UWQJa/+nfiewT7IcSzRsjXxgiZWvScb1AbzZaraPVNVQjYaa0r6jAQ==} dependencies: defu: 6.1.3 - hastscript: 7.2.0 - mdast-util-from-markdown: 1.3.1 - unist-util-visit: 4.1.2 + hastscript: 8.0.0 + mdast-util-from-markdown: 2.0.0 + unist-util-visit: 5.0.0 transitivePeerDependencies: - supports-color dev: false @@ -4280,9 +4273,14 @@ packages: '@types/json-schema': 7.0.15 dev: true + /@types/estree-jsx@1.0.3: + resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} + dependencies: + '@types/estree': 1.0.5 + dev: false + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true /@types/hast@2.3.7: resolution: {integrity: sha512-EVLigw5zInURhzfXUM65eixfadfsHKomGKUakToXo84t8gGIJuTcD2xooM2See7GyQ7DRtYjhCHnSUQez8JaLw==} @@ -4293,7 +4291,7 @@ packages: /@types/hast@3.0.3: resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 /@types/js-cookie@2.2.7: resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} @@ -4311,10 +4309,6 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/katex@0.14.0: - resolution: {integrity: sha512-+2FW2CcT0K3P+JMR8YG846bmDwplKUTsWgT2ENwdQ1UdVfRk3GQrh6Mi4sTopy30gI8Uau5CEqHTDZ6YvWIUPA==} - dev: false - /@types/katex@0.16.7: resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} @@ -4327,7 +4321,7 @@ packages: /@types/mdast@4.0.3: resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 /@types/mjml-core@4.7.3: resolution: {integrity: sha512-2wXjQ7c3WGe7KPANKLA2cU5z30cUItIK/Lw1vqQFG7ENqfydba2LdROpifXErGcdqiJwsEHmCFn/wANXUdNwIg==} @@ -4376,10 +4370,6 @@ packages: /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - /@types/parse5@6.0.3: - resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - dev: false - /@types/prismjs@1.26.3: resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==} @@ -4439,8 +4429,8 @@ packages: resolution: {integrity: sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==} dev: false - /@types/unist@3.0.1: - resolution: {integrity: sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==} + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} /@types/uuid@9.0.7: resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} @@ -6730,8 +6720,8 @@ packages: nth-check: 2.1.1 dev: false - /css-selector-parser@1.4.1: - resolution: {integrity: sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==} + /css-selector-parser@3.0.4: + resolution: {integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==} dev: false /css-tree@2.3.1: @@ -7991,6 +7981,10 @@ packages: engines: {node: '>=4.0'} dev: true + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + dev: false + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -8655,48 +8649,28 @@ packages: dependencies: function-bind: 1.1.2 - /hast-to-hyperscript@10.0.3: - resolution: {integrity: sha512-NuBoUStp4fRwmvlfbidlEiRSTk0gSHm+97q4Xn9CJ10HO+Py7nlTuDi6RhM1qLOureukGrCXLG7AAxaGqqyslQ==} + /hast-util-excerpt@2.0.0: + resolution: {integrity: sha512-3hM4U3Tjvx8bn+KGM51BA2VL6poq3AyOHguq3dzDjI74lxYZfOV1zAEEiSbcGd8CXgx9N9JRS5MlS4izTWJRig==} dependencies: - '@types/unist': 2.0.9 - comma-separated-tokens: 2.0.3 - property-information: 6.3.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.4.2 + '@types/hast': 3.0.3 + hast-util-truncate: 2.0.0 + dev: false + + /hast-util-from-dom@5.0.0: + resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==} + dependencies: + '@types/hast': 3.0.3 + hastscript: 8.0.0 web-namespaces: 2.0.1 dev: false - /hast-util-excerpt@1.0.2: - resolution: {integrity: sha512-5q3+CAQwLBzcw4/1nwkdh91BSmoXmJSJQ1fYflhm2XpbYbrnXL+rgAbZsioVgVKV3xBlO1C9jp0wQ3ZYzfWibg==} + /hast-util-from-html-isomorphic@2.0.0: + resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} dependencies: - '@types/hast': 2.3.7 - hast-util-truncate: 1.0.2 - dev: false - - /hast-util-from-dom@4.2.0: - resolution: {integrity: sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==} - dependencies: - hastscript: 7.2.0 - web-namespaces: 2.0.1 - dev: false - - /hast-util-from-html-isomorphic@1.0.0: - resolution: {integrity: sha512-Yu480AKeOEN/+l5LA674a+7BmIvtDj24GvOt7MtQWuhzUwlaaRWdEPXAh3Qm5vhuthpAipFb2vTetKXWOjmTvw==} - dependencies: - '@types/hast': 2.3.7 - hast-util-from-dom: 4.2.0 - hast-util-from-html: 1.0.2 - unist-util-remove-position: 4.0.2 - dev: false - - /hast-util-from-html@1.0.2: - resolution: {integrity: sha512-LhrTA2gfCbLOGJq2u/asp4kwuG0y6NhWTXiPKP+n0qNukKy7hc10whqqCFfyvIA1Q5U5d0sp9HhNim9gglEH4A==} - dependencies: - '@types/hast': 2.3.7 - hast-util-from-parse5: 7.1.2 - parse5: 7.1.2 - vfile: 5.3.7 - vfile-message: 3.1.4 + '@types/hast': 3.0.3 + hast-util-from-dom: 5.0.0 + hast-util-from-html: 2.0.1 + unist-util-remove-position: 5.0.0 dev: false /hast-util-from-html@2.0.1: @@ -8710,23 +8684,11 @@ packages: vfile-message: 4.0.2 dev: false - /hast-util-from-parse5@7.1.2: - resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} - dependencies: - '@types/hast': 2.3.7 - '@types/unist': 2.0.9 - hastscript: 7.2.0 - property-information: 6.3.0 - vfile: 5.3.7 - vfile-location: 4.1.0 - web-namespaces: 2.0.1 - dev: false - /hast-util-from-parse5@8.0.1: resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} dependencies: '@types/hast': 3.0.3 - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 devlop: 1.1.0 hastscript: 8.0.0 property-information: 6.3.0 @@ -8735,21 +8697,22 @@ packages: web-namespaces: 2.0.1 dev: false - /hast-util-has-property@2.0.1: - resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==} + /hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + dependencies: + '@types/hast': 3.0.3 dev: false - /hast-util-heading-rank@2.1.1: - resolution: {integrity: sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==} + /hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 3.0.3 dev: false - /hast-util-is-element@2.1.3: - resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} dependencies: - '@types/hast': 2.3.7 - '@types/unist': 2.0.9 + '@types/hast': 3.0.3 dev: false /hast-util-parse-selector@3.1.1: @@ -8764,27 +8727,11 @@ packages: '@types/hast': 3.0.3 dev: false - /hast-util-raw@7.2.3: - resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} - dependencies: - '@types/hast': 2.3.7 - '@types/parse5': 6.0.3 - hast-util-from-parse5: 7.1.2 - hast-util-to-parse5: 7.1.0 - html-void-elements: 2.0.1 - parse5: 6.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - dev: false - /hast-util-raw@9.0.1: resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} dependencies: '@types/hast': 3.0.3 - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 '@ungap/structured-clone': 1.2.0 hast-util-from-parse5: 8.0.1 hast-util-to-parse5: 8.0.0 @@ -8798,45 +8745,32 @@ packages: zwitch: 2.0.4 dev: false - /hast-util-sanitize@4.1.0: - resolution: {integrity: sha512-Hd9tU0ltknMGRDv+d6Ro/4XKzBqQnP/EZrpiTbpFYfXv/uOhWeKc+2uajcbEvAEH98VZd7eII2PiXm13RihnLw==} + /hast-util-sanitize@5.0.1: + resolution: {integrity: sha512-IGrgWLuip4O2nq5CugXy4GI2V8kx4sFVy5Hd4vF7AR2gxS0N9s7nEAVUyeMtZKZvzrxVsHt73XdTsno1tClIkQ==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 3.0.3 + '@ungap/structured-clone': 1.2.0 + unist-util-position: 5.0.0 dev: false - /hast-util-select@5.0.5: - resolution: {integrity: sha512-QQhWMhgTFRhCaQdgTKzZ5g31GLQ9qRb1hZtDPMqQaOhpLBziWcshUS0uCR5IJ0U1jrK/mxg35fmcq+Dp/Cy2Aw==} + /hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} dependencies: - '@types/hast': 2.3.7 - '@types/unist': 2.0.9 + '@types/hast': 3.0.3 + '@types/unist': 3.0.2 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 - css-selector-parser: 1.4.1 + css-selector-parser: 3.0.4 + devlop: 1.1.0 direction: 2.0.1 - hast-util-has-property: 2.0.1 - hast-util-to-string: 2.0.0 - hast-util-whitespace: 2.0.1 + hast-util-has-property: 3.0.0 + hast-util-to-string: 3.0.0 + hast-util-whitespace: 3.0.0 not: 0.1.0 nth-check: 2.1.1 property-information: 6.3.0 space-separated-tokens: 2.0.2 - unist-util-visit: 4.1.2 - zwitch: 2.0.4 - dev: false - - /hast-util-to-html@8.0.4: - resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} - dependencies: - '@types/hast': 2.3.7 - '@types/unist': 2.0.9 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-raw: 7.2.3 - hast-util-whitespace: 2.0.1 - html-void-elements: 2.0.1 - property-information: 6.3.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.3 + unist-util-visit: 5.0.0 zwitch: 2.0.4 dev: false @@ -8844,7 +8778,7 @@ packages: resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} dependencies: '@types/hast': 3.0.3 - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 ccount: 2.0.1 comma-separated-tokens: 2.0.3 hast-util-raw: 9.0.1 @@ -8857,15 +8791,26 @@ packages: zwitch: 2.0.4 dev: false - /hast-util-to-parse5@7.1.0: - resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} + /hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} dependencies: - '@types/hast': 2.3.7 + '@types/estree': 1.0.5 + '@types/hast': 3.0.3 + '@types/unist': 3.0.2 comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 property-information: 6.3.0 space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 + style-to-object: 1.0.5 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color dev: false /hast-util-to-parse5@8.0.0: @@ -8880,30 +8825,27 @@ packages: zwitch: 2.0.4 dev: false - /hast-util-to-string@2.0.0: - resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} + /hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 3.0.3 dev: false - /hast-util-to-text@3.1.2: - resolution: {integrity: sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==} + /hast-util-to-text@4.0.0: + resolution: {integrity: sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==} dependencies: - '@types/hast': 2.3.7 - '@types/unist': 2.0.9 - hast-util-is-element: 2.1.3 - unist-util-find-after: 4.0.1 + '@types/hast': 3.0.3 + '@types/unist': 3.0.2 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 dev: false - /hast-util-truncate@1.0.2: - resolution: {integrity: sha512-IWLuKZGZ9YaA4mmxlYyQgxbYARRRjomRaPnwvgwhC6VfUD9uAhdDa6+B0ad23rOoC4RyLVMB8fIE40x/O6qK1Q==} + /hast-util-truncate@2.0.0: + resolution: {integrity: sha512-QjtUhkt0hT75dHwwTYS+E9Rge12IVClGUErJgss7q7EewBuSr6LoGjq7nPp3R6BThqWJ6CbarPVPCbklwnUf/g==} dependencies: - '@types/hast': 2.3.7 - micromark-util-character: 1.2.0 - dev: false - - /hast-util-whitespace@2.0.1: - resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + '@types/hast': 3.0.3 + '@ungap/structured-clone': 1.2.0 + micromark-util-character: 2.0.1 dev: false /hast-util-whitespace@3.0.0: @@ -8964,10 +8906,6 @@ packages: whatwg-encoding: 3.1.1 dev: false - /html-void-elements@2.0.1: - resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} - dev: false - /html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: false @@ -9100,8 +9038,8 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + /inline-style-parser@0.2.2: + resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} dev: false /internal-slot@1.0.5: @@ -9240,11 +9178,6 @@ packages: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: false - /is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - dev: false - /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -10261,37 +10194,21 @@ packages: is-buffer: 1.1.6 dev: false - /mdast-util-definitions@5.1.2: - resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} + /mdast-util-directive@3.0.0: + resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} dependencies: - '@types/mdast': 3.0.14 - '@types/unist': 2.0.9 - unist-util-visit: 4.1.2 - dev: false - - /mdast-util-directive@2.2.4: - resolution: {integrity: sha512-sK3ojFP+jpj1n7Zo5ZKvoxP1MvLyzVG63+gm40Z/qI00avzdPCYxt7RBMgofwAva9gBjbDBWVRB/i+UD+fUCzQ==} - dependencies: - '@types/mdast': 3.0.14 - '@types/unist': 2.0.9 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 stringify-entities: 4.0.3 - unist-util-visit-parents: 5.1.3 + unist-util-visit-parents: 6.0.1 transitivePeerDependencies: - supports-color dev: false - /mdast-util-find-and-replace@2.2.2: - resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} - dependencies: - '@types/mdast': 3.0.14 - escape-string-regexp: 5.0.0 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - dev: false - /mdast-util-find-and-replace@3.0.1: resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} dependencies: @@ -10320,103 +10237,179 @@ packages: - supports-color dev: false - /mdast-util-frontmatter@1.0.1: - resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==} + /mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} dependencies: - '@types/mdast': 3.0.14 - mdast-util-to-markdown: 1.5.0 - micromark-extension-frontmatter: 1.1.1 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color dev: false - /mdast-util-gfm-autolink-literal@1.0.3: - resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} + /mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + dependencies: + '@types/mdast': 4.0.3 ccount: 2.0.1 - mdast-util-find-and-replace: 2.2.2 - micromark-util-character: 1.2.0 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.0.1 dev: false - /mdast-util-gfm-footnote@1.0.2: - resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} dependencies: - '@types/mdast': 3.0.14 - mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.1.0 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color dev: false - /mdast-util-gfm-strikethrough@1.0.3: - resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} dependencies: - '@types/mdast': 3.0.14 - mdast-util-to-markdown: 1.5.0 + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color dev: false - /mdast-util-gfm-table@1.0.7: - resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 4.0.3 + devlop: 1.1.0 markdown-table: 3.0.3 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color dev: false - /mdast-util-gfm-task-list-item@1.0.2: - resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} dependencies: - '@types/mdast': 3.0.14 - mdast-util-to-markdown: 1.5.0 - dev: false - - /mdast-util-gfm@2.0.2: - resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} - dependencies: - mdast-util-from-markdown: 1.3.1 - mdast-util-gfm-autolink-literal: 1.0.3 - mdast-util-gfm-footnote: 1.0.2 - mdast-util-gfm-strikethrough: 1.0.3 - mdast-util-gfm-table: 1.0.7 - mdast-util-gfm-task-list-item: 1.0.2 - mdast-util-to-markdown: 1.5.0 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color dev: false - /mdast-util-math@2.0.2: - resolution: {integrity: sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ==} + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} dependencies: - '@types/mdast': 3.0.14 + mdast-util-from-markdown: 2.0.0 + mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} + dependencies: + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + devlop: 1.1.0 longest-streak: 3.1.0 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + unist-util-remove-position: 5.0.0 + transitivePeerDependencies: + - supports-color dev: false - /mdast-util-newline-to-break@1.0.0: - resolution: {integrity: sha512-491LcYv3gbGhhCrLoeALncQmega2xPh+m3gbsIhVsOX4sw85+ShLFPvPyibxc1Swx/6GtzxgVodq+cGa/47ULg==} + /mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} dependencies: - '@types/mdast': 3.0.14 - mdast-util-find-and-replace: 2.2.2 + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color dev: false - /mdast-util-phrasing@3.0.1: - resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + /mdast-util-mdx-jsx@3.0.0: + resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} dependencies: - '@types/mdast': 3.0.14 - unist-util-is: 5.2.1 + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-remove-position: 5.0.0 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color dev: false - /mdast-util-to-hast@12.3.0: - resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} dependencies: - '@types/hast': 2.3.7 - '@types/mdast': 3.0.14 - mdast-util-definitions: 5.1.2 - micromark-util-sanitize-uri: 1.2.0 - trim-lines: 3.0.1 - unist-util-generated: 2.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-newline-to-break@2.0.0: + resolution: {integrity: sha512-MbgeFca0hLYIEx/2zGsszCSEJJ1JSCdiY5xQxRcLDDGa8EPvlLPupJ4DSajbMPAnC0je8jfb9TiUATnxxrHUog==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-find-and-replace: 3.0.1 + dev: false + + /mdast-util-phrasing@4.0.0: + resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + dependencies: + '@types/mdast': 4.0.3 + unist-util-is: 6.0.0 dev: false /mdast-util-to-hast@13.0.2: @@ -10432,16 +10425,16 @@ packages: unist-util-visit: 5.0.0 dev: false - /mdast-util-to-markdown@1.5.0: - resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} dependencies: - '@types/mdast': 3.0.14 - '@types/unist': 2.0.9 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 longest-streak: 3.1.0 - mdast-util-phrasing: 3.0.1 - mdast-util-to-string: 3.2.0 - micromark-util-decode-string: 1.1.0 - unist-util-visit: 4.1.2 + mdast-util-phrasing: 4.0.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 zwitch: 2.0.4 dev: false @@ -10532,109 +10525,130 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-directive@2.2.1: - resolution: {integrity: sha512-ZFKZkNaEqAP86IghX1X7sE8NNnx6kFNq9mSBRvEHjArutTCJZ3LYg6VH151lXVb1JHpmIcW/7rX25oMoIHuSug==} + /micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} dependencies: - micromark-factory-space: 1.1.0 - micromark-factory-whitespace: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - parse-entities: 4.0.1 - uvu: 0.5.6 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /micromark-extension-frontmatter@1.1.1: - resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==} + /micromark-extension-directive@3.0.0: + resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + parse-entities: 4.0.1 + dev: false + + /micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} dependencies: fault: 2.0.1 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm-autolink-literal@1.0.5: - resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} + /micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} dependencies: - micromark-util-character: 1.2.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 + micromark-util-character: 2.0.1 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm-footnote@1.1.2: - resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} + /micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} dependencies: - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm-strikethrough@1.0.7: - resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} + /micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm-table@1.0.7: - resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} + /micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm-tagfilter@1.0.2: - resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} dependencies: - micromark-util-types: 1.1.0 + micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm-task-list-item@1.0.5: - resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} + /micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm@2.0.3: - resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} dependencies: - micromark-extension-gfm-autolink-literal: 1.0.5 - micromark-extension-gfm-footnote: 1.1.2 - micromark-extension-gfm-strikethrough: 1.0.7 - micromark-extension-gfm-table: 1.0.7 - micromark-extension-gfm-tagfilter: 1.0.2 - micromark-extension-gfm-task-list-item: 1.0.5 - micromark-util-combine-extensions: 1.1.0 - micromark-util-types: 1.1.0 + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.0.1 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /micromark-extension-math@2.1.2: - resolution: {integrity: sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg==} + /micromark-extension-math@3.0.0: + resolution: {integrity: sha512-iJ2Q28vBoEovLN5o3GO12CpqorQRYDPT+p4zW50tGwTfJB+iv/VnB6Ini+gqa24K97DwptMBBIvVX6Bjk49oyQ==} dependencies: '@types/katex': 0.16.7 + devlop: 1.1.0 katex: 0.16.9 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false /micromark-factory-destination@1.1.0: @@ -10645,6 +10659,14 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-label@1.1.0: resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} dependencies: @@ -10654,6 +10676,15 @@ packages: uvu: 0.5.6 dev: false + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-space@1.1.0: resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} dependencies: @@ -10661,6 +10692,13 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-title@1.1.0: resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} dependencies: @@ -10670,6 +10708,15 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-whitespace@1.1.0: resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} dependencies: @@ -10679,6 +10726,15 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-character@1.2.0: resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} dependencies: @@ -10699,6 +10755,12 @@ packages: micromark-util-symbol: 1.1.0 dev: false + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-classify-character@1.1.0: resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} dependencies: @@ -10707,6 +10769,14 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-combine-extensions@1.1.0: resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} dependencies: @@ -10714,12 +10784,25 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-decode-numeric-character-reference@1.1.0: resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} dependencies: micromark-util-symbol: 1.1.0 dev: false + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-decode-string@1.1.0: resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} dependencies: @@ -10729,6 +10812,15 @@ packages: micromark-util-symbol: 1.1.0 dev: false + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-encode@1.1.0: resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} dev: false @@ -10741,18 +10833,34 @@ packages: resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} dev: false + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + dev: false + /micromark-util-normalize-identifier@1.1.0: resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} dependencies: micromark-util-symbol: 1.1.0 dev: false + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-resolve-all@1.1.0: resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} dependencies: micromark-util-types: 1.1.0 dev: false + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + /micromark-util-sanitize-uri@1.2.0: resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} dependencies: @@ -10778,6 +10886,15 @@ packages: uvu: 0.5.6 dev: false + /micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-symbol@1.1.0: resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} dev: false @@ -10818,6 +10935,30 @@ packages: - supports-color dev: false + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -11488,10 +11629,6 @@ packages: parse5: 7.1.2 dev: false - /parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: false - /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: @@ -12351,125 +12488,101 @@ packages: set-function-name: 2.0.1 dev: true - /rehype-autolink-headings@6.1.1: - resolution: {integrity: sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==} + /rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} dependencies: - '@types/hast': 2.3.7 - extend: 3.0.2 - hast-util-has-property: 2.0.1 - hast-util-heading-rank: 2.1.1 - hast-util-is-element: 2.1.3 - unified: 10.1.2 - unist-util-visit: 4.1.2 + '@types/hast': 3.0.3 + '@ungap/structured-clone': 1.2.0 + hast-util-heading-rank: 3.0.0 + hast-util-is-element: 3.0.0 + unified: 11.0.4 + unist-util-visit: 5.0.0 dev: false - /rehype-infer-description-meta@1.1.0: - resolution: {integrity: sha512-TGGIYo5YpkQuUxTp9niX7/G1+9VCeC1d3O625jTRDZLUybpjfvekTw70M7dg3viUwdAmXXxqe2A8K0eUz1tTCg==} + /rehype-infer-description-meta@2.0.0: + resolution: {integrity: sha512-8MZjKRfQiNB5+Qpt0fS9bpjcKe+nhF5GOTHo0M5e+XdStDpcZxkSMMnCfNIlpNaOyIQ7Hu1qEaUxm8ZL1lYI1g==} dependencies: - '@types/hast': 2.3.7 - hast-util-excerpt: 1.0.2 - hast-util-select: 5.0.5 - hast-util-to-text: 3.1.2 - hast-util-truncate: 1.0.2 - unified: 10.1.2 - unist-util-remove-position: 4.0.2 + '@types/hast': 3.0.3 + hast-util-excerpt: 2.0.0 + hast-util-select: 6.0.2 + hast-util-to-text: 4.0.0 + hast-util-truncate: 2.0.0 + unified: 11.0.4 + unist-util-remove-position: 5.0.0 + vfile: 6.0.1 dev: false - /rehype-katex@6.0.3: - resolution: {integrity: sha512-ByZlRwRUcWegNbF70CVRm2h/7xy7jQ3R9LaY4VVSvjnoVWwWVhNL60DiZsBpC5tSzYQOCvDbzncIpIjPZWodZA==} + /rehype-katex@7.0.0: + resolution: {integrity: sha512-h8FPkGE00r2XKU+/acgqwWUlyzve1IiOKwsEkg4pDL3k48PiE0Pt+/uLtVHDVkN1yA4iurZN6UES8ivHVEQV6Q==} dependencies: - '@types/hast': 2.3.7 - '@types/katex': 0.14.0 - hast-util-from-html-isomorphic: 1.0.0 - hast-util-to-text: 3.1.2 + '@types/hast': 3.0.3 + '@types/katex': 0.16.7 + hast-util-from-html-isomorphic: 2.0.0 + hast-util-to-text: 4.0.0 katex: 0.16.9 - unist-util-visit: 4.1.2 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.1 dev: false - /rehype-parse@8.0.5: - resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} + /rehype-parse@9.0.0: + resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} dependencies: - '@types/hast': 2.3.7 - hast-util-from-parse5: 7.1.2 - parse5: 6.0.1 - unified: 10.1.2 + '@types/hast': 3.0.3 + hast-util-from-html: 2.0.1 + unified: 11.0.4 dev: false - /rehype-prism-plus@1.6.3: - resolution: {integrity: sha512-F6tn376zimnvy+xW0bSnryul+rvVL7NhDIkavc9kAuzDx5zIZW04A6jdXPkcFBhojcqZB8b6pHt6CLqiUx+Tbw==} + /rehype-prism-plus@2.0.0: + resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} dependencies: - hast-util-to-string: 2.0.0 + hast-util-to-string: 3.0.0 parse-numeric-range: 1.3.0 refractor: 4.8.1 - rehype-parse: 8.0.5 - unist-util-filter: 4.0.1 - unist-util-visit: 4.1.2 + rehype-parse: 9.0.0 + unist-util-filter: 5.0.1 + unist-util-visit: 5.0.0 dev: false - /rehype-raw@6.1.1: - resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} + /rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} dependencies: - '@types/hast': 2.3.7 - hast-util-raw: 7.2.3 - unified: 10.1.2 + '@types/hast': 3.0.3 + hast-util-raw: 9.0.1 + vfile: 6.0.1 dev: false - /rehype-react@7.2.0(@types/react@18.2.48): - resolution: {integrity: sha512-MHYyCHka+3TtzBMKtcuvVOBAbI1HrfoYA+XH9m7/rlrQQATCPwtJnPdkxKKcIGF8vc9mxqQja9r9f+FHItQeWg==} - peerDependencies: - '@types/react': '>=17' + /rehype-rewrite@4.0.2: + resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} + engines: {node: '>=16.0.0'} dependencies: - '@mapbox/hast-util-table-cell-style': 0.2.0 - '@types/hast': 2.3.7 - '@types/react': 18.2.48 - hast-to-hyperscript: 10.0.3 - hast-util-whitespace: 2.0.1 - unified: 10.1.2 + hast-util-select: 6.0.2 + unified: 11.0.4 + unist-util-visit: 5.0.0 dev: false - /rehype-rewrite@3.0.6: - resolution: {integrity: sha512-REDTNCvsKcAazy8IQWzKp66AhSUDSOIKssSCqNqCcT9sN7JCwAAm3mWGTUdUzq80ABuy8d0D6RBwbnewu1aY1g==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /rehype-sanitize@6.0.0: + resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} dependencies: - hast-util-select: 5.0.5 - unified: 10.1.2 - unist-util-visit: 4.1.2 + '@types/hast': 3.0.3 + hast-util-sanitize: 5.0.1 dev: false - /rehype-sanitize@5.0.1: - resolution: {integrity: sha512-da/jIOjq8eYt/1r9GN6GwxIR3gde7OZ+WV8pheu1tL8K0D9KxM2AyMh+UEfke+FfdM3PvGHeYJU0Td5OWa7L5A==} + /rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} dependencies: - '@types/hast': 2.3.7 - hast-util-sanitize: 4.1.0 - unified: 10.1.2 - dev: false - - /rehype-slug@5.1.0: - resolution: {integrity: sha512-Gf91dJoXneiorNEnn+Phx97CO7oRMrpi+6r155tTxzGuLtm+QrI4cTwCa9e1rtePdL4i9tSO58PeSS6HWfgsiw==} - dependencies: - '@types/hast': 2.3.7 + '@types/hast': 3.0.3 github-slugger: 2.0.0 - hast-util-has-property: 2.0.1 - hast-util-heading-rank: 2.1.1 - hast-util-to-string: 2.0.0 - unified: 10.1.2 - unist-util-visit: 4.1.2 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.0 + unist-util-visit: 5.0.0 dev: false - /rehype-stringify@9.0.4: - resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} + /remark-breaks@4.0.0: + resolution: {integrity: sha512-IjEjJOkH4FuJvHZVIW0QCDWxcG96kCq7An/KVH2NfJe6rKZU2AsHeB3OEjPNRxi4QC34Xdx7I2KGYn6IpT7gxQ==} dependencies: - '@types/hast': 2.3.7 - hast-util-to-html: 8.0.4 - unified: 10.1.2 - dev: false - - /remark-breaks@3.0.3: - resolution: {integrity: sha512-C7VkvcUp1TPUc2eAYzsPdaUh8Xj4FSbQnYA5A9f80diApLZscTDeG7efiWP65W8hV2sEy3JuGVU0i6qr5D8Hug==} - dependencies: - '@types/mdast': 3.0.14 - mdast-util-newline-to-break: 1.0.0 - unified: 10.1.2 + '@types/mdast': 4.0.3 + mdast-util-newline-to-break: 2.0.0 + unified: 11.0.4 dev: false /remark-directive-rehype@0.4.2: @@ -12480,91 +12593,101 @@ packages: unist-util-map: 3.1.3 dev: false - /remark-directive@2.0.1: - resolution: {integrity: sha512-oosbsUAkU/qmUE78anLaJePnPis4ihsE7Agp0T/oqTzvTea8pOiaYEtfInU/+xMOVTS9PN5AhGOiaIVe4GD8gw==} + /remark-directive@3.0.0: + resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} dependencies: - '@types/mdast': 3.0.14 - mdast-util-directive: 2.2.4 - micromark-extension-directive: 2.2.1 - unified: 10.1.2 + '@types/mdast': 4.0.3 + mdast-util-directive: 3.0.0 + micromark-extension-directive: 3.0.0 + unified: 11.0.4 transitivePeerDependencies: - supports-color dev: false - /remark-emoji@4.0.0: - resolution: {integrity: sha512-lQP1lFaYOz6zyJTBfOwYChM1YkgJEVcxSnUBkjo9qujqWwpY36MRFzDjYDk9YNdHqkw5yExB8MnVVHb6wX9QNA==} + /remark-emoji@4.0.1: + resolution: {integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: + '@types/mdast': 4.0.3 emoticon: 4.0.1 mdast-util-find-and-replace: 3.0.1 node-emoji: 2.1.0 + unified: 11.0.4 dev: false - /remark-frontmatter@4.0.1: - resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} + /remark-frontmatter@5.0.0: + resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} dependencies: - '@types/mdast': 3.0.14 - mdast-util-frontmatter: 1.0.1 - micromark-extension-frontmatter: 1.1.1 - unified: 10.1.2 - dev: false - - /remark-gfm@3.0.1: - resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} - dependencies: - '@types/mdast': 3.0.14 - mdast-util-gfm: 2.0.2 - micromark-extension-gfm: 2.0.3 - unified: 10.1.2 + '@types/mdast': 4.0.3 + mdast-util-frontmatter: 2.0.1 + micromark-extension-frontmatter: 2.0.0 + unified: 11.0.4 transitivePeerDependencies: - supports-color dev: false - /remark-github-alerts@0.0.2(@types/mdast@4.0.3)(unified@10.1.2): - resolution: {integrity: sha512-Sg12BXLjOSeyG4Td6nY514DFyccx3GU5Rq9ITfm0BlfM9JHPRwDYhkFzwNQwugXaykyjqhSw11lDBws1FXz5Ow==} - peerDependencies: - '@types/mdast': ^4.0.3 - unified: ^11.0.4 + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: '@types/mdast': 4.0.3 - unified: 10.1.2 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-github-alerts@0.0.4(@types/mdast@4.0.3)(unified@11.0.4): + resolution: {integrity: sha512-cGO8CrGb4Vvawn71inAv6VNRL8CKkHYwKpI91ZvbuLhW8W5EkLReQOjqsnj18Hw99X5u44hKyYssOzXLlZdGHQ==} + peerDependencies: + '@types/mdast': ^4.0.0 + unified: ^11.0.0 + dependencies: + '@types/mdast': 4.0.3 + unified: 11.0.4 unist-util-visit: 5.0.0 dev: false - /remark-math@5.1.1: - resolution: {integrity: sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw==} + /remark-math@6.0.0: + resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} dependencies: - '@types/mdast': 3.0.14 - mdast-util-math: 2.0.2 - micromark-extension-math: 2.1.2 - unified: 10.1.2 - dev: false - - /remark-parse@10.0.2: - resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} - dependencies: - '@types/mdast': 3.0.14 - mdast-util-from-markdown: 1.3.1 - unified: 10.1.2 + '@types/mdast': 4.0.3 + mdast-util-math: 3.0.0 + micromark-extension-math: 3.0.0 + unified: 11.0.4 transitivePeerDependencies: - supports-color dev: false - /remark-rehype@10.1.0: - resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: - '@types/hast': 2.3.7 - '@types/mdast': 3.0.14 - mdast-util-to-hast: 12.3.0 - unified: 10.1.2 + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + micromark-util-types: 2.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color dev: false - /remark-stringify@10.0.3: - resolution: {integrity: sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==} + /remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} dependencies: - '@types/mdast': 3.0.14 - mdast-util-to-markdown: 1.5.0 - unified: 10.1.2 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + mdast-util-to-hast: 13.0.2 + unified: 11.0.4 + vfile: 6.0.1 + dev: false + + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.4 dev: false /remove-accents@0.4.2: @@ -13185,10 +13308,10 @@ packages: resolution: {integrity: sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==} dev: false - /style-to-object@0.4.2: - resolution: {integrity: sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==} + /style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} dependencies: - inline-style-parser: 0.1.1 + inline-style-parser: 0.2.2 dev: false /styled-jsx@5.1.1(@babel/core@7.23.6)(react@18.2.0): @@ -13708,16 +13831,16 @@ packages: engines: {node: '>=4'} dev: false - /unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + /unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 3.0.2 bail: 2.0.2 + devlop: 1.1.0 extend: 3.0.2 - is-buffer: 2.0.5 is-plain-obj: 4.1.0 trough: 2.1.0 - vfile: 5.3.7 + vfile: 6.0.1 dev: false /unique-string@3.0.0: @@ -13730,42 +13853,28 @@ packages: /unist-builder@4.0.0: resolution: {integrity: sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 dev: false - /unist-util-filter@4.0.1: - resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} + /unist-util-filter@5.0.1: + resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} dependencies: - '@types/unist': 2.0.9 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 dev: false - /unist-util-find-after@4.0.1: - resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==} + /unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} dependencies: - '@types/unist': 2.0.9 - unist-util-is: 5.2.1 - dev: false - - /unist-util-generated@2.0.1: - resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} - dev: false - - /unist-util-is@3.0.0: - resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} - dev: false - - /unist-util-is@5.2.1: - resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - dependencies: - '@types/unist': 2.0.9 + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 dev: false /unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 dev: false /unist-util-map@3.1.3: @@ -13774,23 +13883,17 @@ packages: '@types/unist': 2.0.9 dev: false - /unist-util-position@4.0.4: - resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} - dependencies: - '@types/unist': 2.0.9 - dev: false - /unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 dev: false - /unist-util-remove-position@4.0.2: - resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} + /unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} dependencies: - '@types/unist': 2.0.9 - unist-util-visit: 4.1.2 + '@types/unist': 3.0.2 + unist-util-visit: 5.0.0 dev: false /unist-util-stringify-position@3.0.3: @@ -13802,47 +13905,20 @@ packages: /unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: - '@types/unist': 3.0.1 - dev: false - - /unist-util-visit-parents@2.1.2: - resolution: {integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==} - dependencies: - unist-util-is: 3.0.0 - dev: false - - /unist-util-visit-parents@5.1.3: - resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} - dependencies: - '@types/unist': 2.0.9 - unist-util-is: 5.2.1 + '@types/unist': 3.0.2 dev: false /unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-is: 6.0.0 dev: false - /unist-util-visit@1.4.1: - resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} - dependencies: - unist-util-visit-parents: 2.1.2 - dev: false - - /unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} - dependencies: - '@types/unist': 2.0.9 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - dev: false - /unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 dev: false @@ -14129,47 +14205,24 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false - /vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} - dependencies: - '@types/unist': 2.0.9 - vfile: 5.3.7 - dev: false - /vfile-location@5.0.2: resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 vfile: 6.0.1 dev: false - /vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - dependencies: - '@types/unist': 2.0.9 - unist-util-stringify-position: 3.0.3 - dev: false - /vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 dev: false - /vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - dependencies: - '@types/unist': 2.0.9 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - dev: false - /vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 dev: false diff --git a/src/components/ui/Mention.tsx b/src/components/ui/Mention.tsx index 9c4ba9ed..8a745f9d 100644 --- a/src/components/ui/Mention.tsx +++ b/src/components/ui/Mention.tsx @@ -9,12 +9,8 @@ import { CharacterFloatCard } from "../common/CharacterFloatCard" import { UniLink } from "./UniLink" const getSiteId = ({ id, children }: { id: string; children?: any }) => { - if ( - children?.[0] && - typeof children[0] === "string" && - children[0].startsWith("@") - ) { - return children[0].replace(/^@/, "") + if (children && typeof children === "string" && children.startsWith("@")) { + return children.replace(/^@/, "") } else if (id) { return id.replace(/^user-content-/, "") } diff --git a/src/markdown/index.ts b/src/markdown/index.ts index e584f7b8..a6463f82 100644 --- a/src/markdown/index.ts +++ b/src/markdown/index.ts @@ -1,23 +1,25 @@ +import type { Root as HashRoot } from "hast" +import { toHtml } from "hast-util-to-html" +import { toJsxRuntime } from "hast-util-to-jsx-runtime" import jsYaml from "js-yaml" -import type { Root } from "mdast" +import type { Root as MdashRoot } from "mdast" import { toc, Result as TocResult } from "mdast-util-toc" import dynamic from "next/dynamic" -import { createElement, ReactElement } from "react" import { toast } from "react-hot-toast" +// @ts-expect-error: untyped. +import { Fragment, jsx, jsxs } from "react/jsx-runtime" import { refractor } from "refractor" -import jsx from "refractor/lang/jsx" -import solidity from "refractor/lang/solidity" -import tsx from "refractor/lang/tsx" +import langJsx from "refractor/lang/jsx" +import langSolidity from "refractor/lang/solidity" +import langTsx from "refractor/lang/tsx" import rehypeAutolinkHeadings from "rehype-autolink-headings" import rehypeInferDescriptionMeta from "rehype-infer-description-meta" import rehypeKatex from "rehype-katex" import rehypePrismGenerator from "rehype-prism-plus/generator" -import rehypeRaw from "rehype-raw" -import rehypeReact from "rehype-react" +import rehypeRaw, { Options as RehypeRawOptions } from "rehype-raw" import rehypeRewrite from "rehype-rewrite" import rehypeSanitize from "rehype-sanitize" import rehypeSlug from "rehype-slug" -import rehypeStringify from "rehype-stringify" import remarkBreaks from "remark-breaks" import remarkDirective from "remark-directive" import remarkDirectiveRehype from "remark-directive-rehype" @@ -29,23 +31,24 @@ import remarkMath from "remark-math" import remarkParse from "remark-parse" import remarkRehype from "remark-rehype" import { unified } from "unified" +import { visit } from "unist-util-visit" +import { VFile } from "vfile" // @ts-expect-error import remarkCalloutDirectives from "@microflash/remark-callout-directives" import AdvancedImage from "~/components/ui/AdvancedImage" +import { isServerSide } from "~/lib/utils" import { transformers } from "./embed-transformers" -import { rehypeAudio } from "./rehype-audio" import { allowedCustomWrappers, defaultRules, rehypeCustomWrapper, } from "./rehype-custom-wrapper" import { rehypeEmbed } from "./rehype-embed" -import { rehypeImage } from "./rehype-image" +import { rehypeIpfs } from "./rehype-ipfs" import { rehypeTable } from "./rehype-table" -import { rehypeVideo } from "./rehype-video" import { rehypeWrapCode } from "./rehype-wrap-code" import { rehypeExternalLink } from "./rehyper-external-link" import { remarkMermaid } from "./remark-mermaid" @@ -60,70 +63,27 @@ const Tweet = dynamic(() => import("~/components/ui/Tweet")) const GithubRepo = dynamic(() => import("~/components/ui/GithubRepo")) const XLogPost = dynamic(() => import("~/components/ui/XLogPost")) const APlayer = dynamic(() => import("~/components/ui/APlayer")) - const DPlayer = dynamic(() => import("~/components/ui/DPlayer")) -export type MarkdownEnv = { - excerpt: string - frontMatter: Record - __internal: Record - cover: string - images: string[] - audio: string - toc: TocResult | null - tree: Root | null -} - -export type Rendered = { - contentHTML: string - element?: ReactElement -} & Omit - refractor.alias("html", ["svelte", "vue"]) -refractor.register(tsx) -refractor.register(jsx) -refractor.register(solidity) - +refractor.register(langTsx) +refractor.register(langJsx) +refractor.register(langSolidity) const rehypePrism = rehypePrismGenerator(refractor) export const renderPageContent = ( content: string, - html?: boolean, - simple?: boolean, -): Rendered => { - const env: MarkdownEnv = { - excerpt: "", - __internal: {}, - frontMatter: {}, - cover: "", - images: [], - audio: "", - toc: null, - tree: null, - } - - let contentHTML = "" - let result: any = null + htmlMode?: boolean, + strictMode?: boolean, +) => { + let hastTree: HashRoot | undefined = undefined + let mdastTree: MdashRoot | undefined = undefined try { - let pipeline = unified() + const pipeline = unified() .use(remarkParse) - // make sure this is before remarkBreaks - .use(remarkGithubAlerts) + .use(remarkGithubAlerts) // make sure this is before remarkBreaks .use(remarkBreaks) .use(remarkFrontmatter, ["yaml"]) - .use(() => (tree: Root) => { - const yaml = tree.children.find((node) => node.type === "yaml") - if ((yaml as any)?.value) { - try { - env.frontMatter = jsYaml.load((yaml as any)?.value) as Record< - string, - any - > - } catch (e) { - console.error(e) - } - } - }) .use(remarkGfm, { singleTilde: false, }) @@ -136,29 +96,17 @@ export const renderPageContent = ( singleDollarTextMath: false, }) .use(remarkPangu) - .use(() => (tree) => { - env.toc = toc(tree as any, { tight: true, ordered: true }) - }) - .use(remarkRehype, { allowDangerousHtml: true }) .use(emoji) - - if (!html) { - pipeline.use(rehypeCustomWrapper, { + .use(remarkRehype, { allowDangerousHtml: true }) + .use(rehypeCustomWrapper, { rules: defaultRules, }) - } - - pipeline - .use(rehypeStringify) - .use(rehypeRaw, { passThrough: allowedCustomWrappers }) - .use(rehypeImage, { env }) - .use(rehypeAudio, { env }) - .use(rehypeVideo, { env }) + .use(rehypeIpfs) .use(rehypeSlug) .use(rehypeAutolinkHeadings, { behavior: "append", properties: { - className: ["xlog-anchor"], + className: "xlog-anchor", ariaHidden: true, tabIndex: -1, }, @@ -171,7 +119,7 @@ export const renderPageContent = ( ] }, }) - .use(rehypeSanitize, simple ? undefined : sanitizeScheme) + .use(rehypeSanitize, strictMode ? undefined : sanitizeScheme) .use(rehypeTable) .use(rehypeExternalLink) .use(rehypeWrapCode) @@ -216,53 +164,99 @@ export const renderPageContent = ( } }, }) - .use(rehypePrism, { - ignoreMissing: true, - showLineNumbers: true, - }) + .use(rehypeRaw, { + passThrough: allowedCustomWrappers, + } as RehypeRawOptions) // Move it to the end as it generates a lot of DOM and requires extensive traversal. .use(rehypeKatex, { strict: false, }) - - if (!html) { - pipeline.use(rehypeReact, { - createElement: createElement, - components: { - img: AdvancedImage, - mention: Mention, - mermaid: Mermaid, - audio: APlayer, - video: DPlayer, - tweet: Tweet, - "github-repo": GithubRepo, - "xlog-post": XLogPost, - style: Style, - } as any, + .use(rehypePrism, { + ignoreMissing: true, + showLineNumbers: true, }) - } - result = pipeline - .use(() => (tree: Root) => { - env.tree = tree - }) - .processSync(content) + const file = new VFile(content) - contentHTML = result.toString() + // markdown abstract syntax tree + mdastTree = pipeline.parse(file) + // hypertext abstract syntax tree + hastTree = pipeline.runSync(mdastTree, file) } catch (e) { const error = e as Error - toast.error(error?.message) console.error(e) + if (!isServerSide()) { + toast.error(error?.message) + } } + + let html: string | undefined = undefined + let element: JSX.Element | undefined = undefined + let frontMatter: Record | undefined = undefined + let tocResult: TocResult | undefined = undefined + let images: string[] = [] + let audio: string | undefined = undefined + + if (hastTree && mdastTree) { + // frontMatter + visit(mdastTree, (node, index, parent) => { + if (node.type === "yaml") { + frontMatter = jsYaml.load(node.value) as Record + } + }) + + visit(hastTree, (node, index, parent) => { + if (node.type === "element") { + if (node.tagName === "img" && typeof node.properties.src === "string") { + images.push(node.properties.src) + } + if (node.tagName === "audio") { + if (typeof node.properties.cover === "string") { + images.push(node.properties.cover) + } + if (!audio && typeof node.properties.src === "string") { + audio = node.properties.src + } + } + } + }) + + tocResult = toc(mdastTree, { + tight: true, + ordered: true, + }) + + html = toHtml(hastTree) + + element = toJsxRuntime(hastTree, { + Fragment, + components: { + img: AdvancedImage, + mention: Mention, + mermaid: Mermaid, + audio: APlayer, + video: DPlayer, + tweet: Tweet, + "github-repo": GithubRepo, + "xlog-post": XLogPost, + style: Style, + }, + ignoreInvalidStyle: true, + jsx, + jsxs, + passKeys: true, + passNode: true, + }) + } + return { - contentHTML, - element: result?.result, - excerpt: result?.data.meta.description, - frontMatter: env.frontMatter, - cover: env.cover, - images: env.images, - audio: env.audio, - toc: env.toc, - tree: env.tree, + html, + element, + frontMatter, + toc: tocResult, + cover: images[0], + images, + audio, + tree: {}, } } diff --git a/src/markdown/rehype-audio.ts b/src/markdown/rehype-audio.ts deleted file mode 100644 index ed7e5b22..00000000 --- a/src/markdown/rehype-audio.ts +++ /dev/null @@ -1,63 +0,0 @@ -import type { Root } from "hast" -import { Plugin } from "unified" -import { visit } from "unist-util-visit" - -import { toGateway } from "~/lib/ipfs-parser" - -import { MarkdownEnv } from "." - -export const rehypeAudio: Plugin, Root> = ({ - env, -}) => { - return (tree: Root) => { - let first = true - visit(tree, { tagName: "audio" }, (node, i, parent) => { - if (!node.properties) { - return - } - - const src = node.properties.src - - if (!src || typeof src !== "string") { - return - } - - node.properties.src = toGateway(src) - - if (node.properties.cover && typeof node.properties.cover === "string") { - const coverIpfsUrl = toGateway(node.properties.cover) - node.properties.cover = coverIpfsUrl - env.images.push(coverIpfsUrl) - } - - if (first) { - if ( - !env.cover && - node.properties.cover && - typeof node.properties.cover === "string" - ) { - env.cover = node.properties.cover - } - env.audio = node.properties.src - first = false - } - - if ( - parent && - parent.type === "element" && - i !== null && - i !== undefined - ) { - parent.tagName = "div" - parent.children[i] = { - type: "element", - tagName: "audio", - properties: { - ...node.properties, - }, - children: [], - } - } - }) - } -} diff --git a/src/markdown/rehype-image.ts b/src/markdown/rehype-image.ts deleted file mode 100644 index ca3fa720..00000000 --- a/src/markdown/rehype-image.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { Root } from "hast" -import { Plugin } from "unified" -import { visit } from "unist-util-visit" - -import { IS_PROD } from "~/lib/constants" -import { toGateway } from "~/lib/ipfs-parser" - -import { MarkdownEnv } from "." - -const isExternLink = (url: string) => /^https?:\/\//.test(url) - -export const rehypeImage: Plugin, Root> = ({ - env, -}) => { - return (tree: Root) => { - let first = true - visit(tree, { tagName: "img" }, (node) => { - if (!node.properties) return - - let url = node.properties.src - - if (!url || typeof url !== "string") { - return - } - - const ipfsUrl = toGateway(url) - node.properties.src = ipfsUrl - url = ipfsUrl - - if (first) { - env.cover = url - first = false - } - env.images.push(url) - - if (isExternLink(url)) { - if (!url.startsWith("https:") && IS_PROD) { - console.error(`External image url must start with https: ${url}`) - url.replace(/^http:/, "https:") - } - return - } - - node.properties.src = url - }) - } -} diff --git a/src/markdown/rehype-ipfs.ts b/src/markdown/rehype-ipfs.ts new file mode 100644 index 00000000..c6247fa1 --- /dev/null +++ b/src/markdown/rehype-ipfs.ts @@ -0,0 +1,21 @@ +import type { Root } from "hast" +import { Plugin } from "unified" +import { visit } from "unist-util-visit" + +import { toGateway } from "~/lib/ipfs-parser" + +const tags = ["video", "audio", "img", "source"] + +export const rehypeIpfs: Plugin, Root> = () => { + return (tree: Root) => { + visit(tree, (node, i, parent) => { + if (node.type === "element") { + if (tags.includes(node.tagName)) { + if (typeof node.properties.src === "string") { + node.properties.src = toGateway(node.properties.src) + } + } + } + }) + } +} diff --git a/src/markdown/rehype-video.ts b/src/markdown/rehype-video.ts deleted file mode 100644 index e6c265ac..00000000 --- a/src/markdown/rehype-video.ts +++ /dev/null @@ -1,36 +0,0 @@ -import type { Root } from "hast" -import { Plugin } from "unified" -import { visit } from "unist-util-visit" - -import { toGateway } from "~/lib/ipfs-parser" - -import { MarkdownEnv } from "." - -export const rehypeVideo: Plugin, Root> = ({ - env, -}) => { - return (tree: Root) => { - let first = true - visit(tree, { tagName: "video" }, (node, i, parent) => { - if (!node.properties) { - return - } - - for (const child of node.children) { - if (child.type === "element" && child.tagName === "source") { - if (!child.properties) { - continue - } - - const src = child.properties.src - - if (!src || typeof src !== "string") { - continue - } - - child.properties.src = toGateway(src) - } - } - }) - } -}