Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
math_tutor_dev
public_math_tutor
Commits
7689fd33
Commit
7689fd33
authored
Jan 20, 2026
by
Kantz
Browse files
retival wird in app angezeigt und lässt sich inspecten auf seperater seite.
parent
c2121652
Changes
6
Hide whitespace changes
Inline
Side-by-side
math-tutor/frontend/package-lock.json
View file @
7689fd33
...
@@ -9,7 +9,8 @@
...
@@ -9,7 +9,8 @@
"version"
:
"0.0.0"
,
"version"
:
"0.0.0"
,
"dependencies"
:
{
"dependencies"
:
{
"react"
:
"^19.2.0"
,
"react"
:
"^19.2.0"
,
"react-dom"
:
"^19.2.0"
"react-dom"
:
"^19.2.0"
,
"react-markdown"
:
"^10.1.0"
},
},
"devDependencies"
:
{
"devDependencies"
:
{
"@eslint/js"
:
"^9.39.1"
,
"@eslint/js"
:
"^9.39.1"
,
...
@@ -940,13 +941,39 @@
...
@@ -940,13 +941,39 @@
"@babel/types"
:
"^7.28.2"
"@babel/types"
:
"^7.28.2"
}
}
},
},
"node_modules/@types/debug"
:
{
"version"
:
"4.1.12"
,
"resolved"
:
"https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz"
,
"integrity"
:
"sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/ms"
:
"*"
}
},
"node_modules/@types/estree"
:
{
"node_modules/@types/estree"
:
{
"version"
:
"1.0.8"
,
"version"
:
"1.0.8"
,
"resolved"
:
"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz"
,
"integrity"
:
"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
,
"integrity"
:
"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
,
"dev"
:
true
,
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/@types/estree-jsx"
:
{
"version"
:
"1.0.5"
,
"resolved"
:
"https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz"
,
"integrity"
:
"sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/estree"
:
"*"
}
},
"node_modules/@types/hast"
:
{
"version"
:
"3.0.4"
,
"resolved"
:
"https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz"
,
"integrity"
:
"sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/unist"
:
"*"
}
},
"node_modules/@types/json-schema"
:
{
"node_modules/@types/json-schema"
:
{
"version"
:
"7.0.15"
,
"version"
:
"7.0.15"
,
"resolved"
:
"https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
,
...
@@ -954,6 +981,21 @@
...
@@ -954,6 +981,21 @@
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/@types/mdast"
:
{
"version"
:
"4.0.4"
,
"resolved"
:
"https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz"
,
"integrity"
:
"sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/unist"
:
"*"
}
},
"node_modules/@types/ms"
:
{
"version"
:
"2.1.0"
,
"resolved"
:
"https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz"
,
"integrity"
:
"sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="
,
"license"
:
"MIT"
},
"node_modules/@types/node"
:
{
"node_modules/@types/node"
:
{
"version"
:
"24.10.9"
,
"version"
:
"24.10.9"
,
"resolved"
:
"https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz"
,
...
@@ -969,7 +1011,6 @@
...
@@ -969,7 +1011,6 @@
"version"
:
"19.2.8"
,
"version"
:
"19.2.8"
,
"resolved"
:
"https://registry.npmjs.org/@types/react/-/react-19.2.8.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@types/react/-/react-19.2.8.tgz"
,
"integrity"
:
"sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg=="
,
"integrity"
:
"sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"peer"
:
true
,
"peer"
:
true
,
"dependencies"
:
{
"dependencies"
:
{
...
@@ -986,6 +1027,12 @@
...
@@ -986,6 +1027,12 @@
"@types/react"
:
"^19.2.0"
"@types/react"
:
"^19.2.0"
}
}
},
},
"node_modules/@types/unist"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz"
,
"integrity"
:
"sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="
,
"license"
:
"MIT"
},
"node_modules/@typescript-eslint/eslint-plugin"
:
{
"node_modules/@typescript-eslint/eslint-plugin"
:
{
"version"
:
"8.53.0"
,
"version"
:
"8.53.0"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.0.tgz"
,
...
@@ -1256,6 +1303,12 @@
...
@@ -1256,6 +1303,12 @@
"url"
:
"https://opencollective.com/typescript-eslint"
"url"
:
"https://opencollective.com/typescript-eslint"
}
}
},
},
"node_modules/@ungap/structured-clone"
:
{
"version"
:
"1.3.0"
,
"resolved"
:
"https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz"
,
"integrity"
:
"sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="
,
"license"
:
"ISC"
},
"node_modules/@vitejs/plugin-react"
:
{
"node_modules/@vitejs/plugin-react"
:
{
"version"
:
"5.1.2"
,
"version"
:
"5.1.2"
,
"resolved"
:
"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz"
,
...
@@ -1341,6 +1394,16 @@
...
@@ -1341,6 +1394,16 @@
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"Python-2.0"
"license"
:
"Python-2.0"
},
},
"node_modules/bail"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/bail/-/bail-2.0.2.tgz"
,
"integrity"
:
"sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/balanced-match"
:
{
"node_modules/balanced-match"
:
{
"version"
:
"1.0.2"
,
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
,
"resolved"
:
"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
,
...
@@ -1435,6 +1498,16 @@
...
@@ -1435,6 +1498,16 @@
],
],
"license"
:
"CC-BY-4.0"
"license"
:
"CC-BY-4.0"
},
},
"node_modules/ccount"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz"
,
"integrity"
:
"sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/chalk"
:
{
"node_modules/chalk"
:
{
"version"
:
"4.1.2"
,
"version"
:
"4.1.2"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
,
...
@@ -1452,6 +1525,46 @@
...
@@ -1452,6 +1525,46 @@
"url"
:
"https://github.com/chalk/chalk?sponsor=1"
"url"
:
"https://github.com/chalk/chalk?sponsor=1"
}
}
},
},
"node_modules/character-entities"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz"
,
"integrity"
:
"sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/character-entities-html4"
:
{
"version"
:
"2.1.0"
,
"resolved"
:
"https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz"
,
"integrity"
:
"sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/character-entities-legacy"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz"
,
"integrity"
:
"sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/character-reference-invalid"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz"
,
"integrity"
:
"sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/color-convert"
:
{
"node_modules/color-convert"
:
{
"version"
:
"2.0.1"
,
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
...
@@ -1472,6 +1585,16 @@
...
@@ -1472,6 +1585,16 @@
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/comma-separated-tokens"
:
{
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz"
,
"integrity"
:
"sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/concat-map"
:
{
"node_modules/concat-map"
:
{
"version"
:
"0.0.1"
,
"version"
:
"0.0.1"
,
"resolved"
:
"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
,
...
@@ -1505,14 +1628,12 @@
...
@@ -1505,14 +1628,12 @@
"version"
:
"3.2.3"
,
"version"
:
"3.2.3"
,
"resolved"
:
"https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz"
,
"resolved"
:
"https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz"
,
"integrity"
:
"sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="
,
"integrity"
:
"sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/debug"
:
{
"node_modules/debug"
:
{
"version"
:
"4.4.3"
,
"version"
:
"4.4.3"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz"
,
"integrity"
:
"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="
,
"integrity"
:
"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"ms"
:
"^2.1.3"
"ms"
:
"^2.1.3"
...
@@ -1526,6 +1647,19 @@
...
@@ -1526,6 +1647,19 @@
}
}
}
}
},
},
"node_modules/decode-named-character-reference"
:
{
"version"
:
"1.3.0"
,
"resolved"
:
"https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz"
,
"integrity"
:
"sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"character-entities"
:
"^2.0.0"
},
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/deep-is"
:
{
"node_modules/deep-is"
:
{
"version"
:
"0.1.4"
,
"version"
:
"0.1.4"
,
"resolved"
:
"https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
,
"resolved"
:
"https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
,
...
@@ -1533,6 +1667,15 @@
...
@@ -1533,6 +1667,15 @@
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/dequal"
:
{
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz"
,
"integrity"
:
"sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">=6"
}
},
"node_modules/detect-libc"
:
{
"node_modules/detect-libc"
:
{
"version"
:
"2.1.2"
,
"version"
:
"2.1.2"
,
"resolved"
:
"https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz"
,
"resolved"
:
"https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz"
,
...
@@ -1543,6 +1686,19 @@
...
@@ -1543,6 +1686,19 @@
"node"
:
">=8"
"node"
:
">=8"
}
}
},
},
"node_modules/devlop"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz"
,
"integrity"
:
"sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dequal"
:
"^2.0.0"
},
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/electron-to-chromium"
:
{
"node_modules/electron-to-chromium"
:
{
"version"
:
"1.5.267"
,
"version"
:
"1.5.267"
,
"resolved"
:
"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz"
,
"resolved"
:
"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz"
,
...
@@ -1748,6 +1904,16 @@
...
@@ -1748,6 +1904,16 @@
"node"
:
">=4.0"
"node"
:
">=4.0"
}
}
},
},
"node_modules/estree-util-is-identifier-name"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz"
,
"integrity"
:
"sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/esutils"
:
{
"node_modules/esutils"
:
{
"version"
:
"2.0.3"
,
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
,
"resolved"
:
"https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
,
...
@@ -1758,6 +1924,12 @@
...
@@ -1758,6 +1924,12 @@
"node"
:
">=0.10.0"
"node"
:
">=0.10.0"
}
}
},
},
"node_modules/extend"
:
{
"version"
:
"3.0.2"
,
"resolved"
:
"https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"
,
"integrity"
:
"sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
,
"license"
:
"MIT"
},
"node_modules/fast-deep-equal"
:
{
"node_modules/fast-deep-equal"
:
{
"version"
:
"3.1.3"
,
"version"
:
"3.1.3"
,
"resolved"
:
"https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
,
"resolved"
:
"https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
,
...
@@ -1909,6 +2081,46 @@
...
@@ -1909,6 +2081,46 @@
"node"
:
">=8"
"node"
:
">=8"
}
}
},
},
"node_modules/hast-util-to-jsx-runtime"
:
{
"version"
:
"2.3.6"
,
"resolved"
:
"https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz"
,
"integrity"
:
"sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/estree"
:
"^1.0.0"
,
"@types/hast"
:
"^3.0.0"
,
"@types/unist"
:
"^3.0.0"
,
"comma-separated-tokens"
:
"^2.0.0"
,
"devlop"
:
"^1.0.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.0"
,
"property-information"
:
"^7.0.0"
,
"space-separated-tokens"
:
"^2.0.0"
,
"style-to-js"
:
"^1.0.0"
,
"unist-util-position"
:
"^5.0.0"
,
"vfile-message"
:
"^4.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/hast-util-whitespace"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz"
,
"integrity"
:
"sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/hast"
:
"^3.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/hermes-estree"
:
{
"node_modules/hermes-estree"
:
{
"version"
:
"0.25.1"
,
"version"
:
"0.25.1"
,
"resolved"
:
"https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz"
,
...
@@ -1926,6 +2138,16 @@
...
@@ -1926,6 +2138,16 @@
"hermes-estree"
:
"0.25.1"
"hermes-estree"
:
"0.25.1"
}
}
},
},
"node_modules/html-url-attributes"
:
{
"version"
:
"3.0.1"
,
"resolved"
:
"https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz"
,
"integrity"
:
"sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/ignore"
:
{
"node_modules/ignore"
:
{
"version"
:
"5.3.2"
,
"version"
:
"5.3.2"
,
"resolved"
:
"https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
,
"resolved"
:
"https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
,
...
@@ -1963,6 +2185,46 @@
...
@@ -1963,6 +2185,46 @@
"node"
:
">=0.8.19"
"node"
:
">=0.8.19"
}
}
},
},
"node_modules/inline-style-parser"
:
{
"version"
:
"0.2.7"
,
"resolved"
:
"https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz"
,
"integrity"
:
"sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="
,
"license"
:
"MIT"
},
"node_modules/is-alphabetical"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz"
,
"integrity"
:
"sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/is-alphanumerical"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz"
,
"integrity"
:
"sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"is-alphabetical"
:
"^2.0.0"
,
"is-decimal"
:
"^2.0.0"
},
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/is-decimal"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz"
,
"integrity"
:
"sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/is-extglob"
:
{
"node_modules/is-extglob"
:
{
"version"
:
"2.1.1"
,
"version"
:
"2.1.1"
,
"resolved"
:
"https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
,
...
@@ -1986,6 +2248,28 @@
...
@@ -1986,6 +2248,28 @@
"node"
:
">=0.10.0"
"node"
:
">=0.10.0"
}
}
},
},
"node_modules/is-hexadecimal"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz"
,
"integrity"
:
"sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/is-plain-obj"
:
{
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz"
,
"integrity"
:
"sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">=12"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/isexe"
:
{
"node_modules/isexe"
:
{
"version"
:
"2.0.0"
,
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
,
...
@@ -2368,6 +2652,16 @@
...
@@ -2368,6 +2652,16 @@
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/longest-streak"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz"
,
"integrity"
:
"sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/lru-cache"
:
{
"node_modules/lru-cache"
:
{
"version"
:
"5.1.1"
,
"version"
:
"5.1.1"
,
"resolved"
:
"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
,
...
@@ -2378,112 +2672,706 @@
...
@@ -2378,112 +2672,706 @@
"yallist"
:
"^3.0.2"
"yallist"
:
"^3.0.2"
}
}
},
},
"node_modules/minimatch"
:
{
"node_modules/mdast-util-from-markdown"
:
{
"version"
:
"3.1.2"
,
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
,
"resolved"
:
"https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz"
,
"integrity"
:
"sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
,
"integrity"
:
"sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"license"
:
"ISC"
,
"dependencies"
:
{
"dependencies"
:
{
"brace-expansion"
:
"^1.1.7"
"@types/mdast"
:
"^4.0.0"
,
"@types/unist"
:
"^3.0.0"
,
"decode-named-character-reference"
:
"^1.0.0"
,
"devlop"
:
"^1.0.0"
,
"mdast-util-to-string"
:
"^4.0.0"
,
"micromark"
:
"^4.0.0"
,
"micromark-util-decode-numeric-character-reference"
:
"^2.0.0"
,
"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"
},
},
"engines"
:
{
"funding"
:
{
"node"
:
"*"
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
}
},
},
"node_modules/ms"
:
{
"node_modules/mdast-util-mdx-expression"
:
{
"version"
:
"2.1.3"
,
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
,
"resolved"
:
"https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz"
,
"integrity"
:
"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
,
"integrity"
:
"sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/nanoid"
:
{
"version"
:
"3.3.11"
,
"resolved"
:
"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz"
,
"integrity"
:
"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="
,
"dev"
:
true
,
"funding"
:
[
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/ai"
}
],
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"bin"
:
{
"dependencies"
:
{
"nanoid"
:
"bin/nanoid.cjs"
"@types/estree-jsx"
:
"^1.0.0"
,
"@types/hast"
:
"^3.0.0"
,
"@types/mdast"
:
"^4.0.0"
,
"devlop"
:
"^1.0.0"
,
"mdast-util-from-markdown"
:
"^2.0.0"
,
"mdast-util-to-markdown"
:
"^2.0.0"
},
},
"engines"
:
{
"funding"
:
{
"node"
:
"^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
}
},
},
"node_modules/natural-compare"
:
{
"node_modules/mdast-util-mdx-jsx"
:
{
"version"
:
"1.4.0"
,
"version"
:
"3.2.0"
,
"resolved"
:
"https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz"
,
"integrity"
:
"sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
,
"integrity"
:
"sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/node-releases"
:
{
"version"
:
"2.0.27"
,
"resolved"
:
"https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz"
,
"integrity"
:
"sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/optionator"
:
{
"version"
:
"0.9.4"
,
"resolved"
:
"https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz"
,
"integrity"
:
"sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"deep-is"
:
"^0.1.3"
,
"@types/estree-jsx"
:
"^1.0.0"
,
"fast-levenshtein"
:
"^2.0.6"
,
"@types/hast"
:
"^3.0.0"
,
"levn"
:
"^0.4.1"
,
"@types/mdast"
:
"^4.0.0"
,
"prelude-ls"
:
"^1.2.1"
,
"@types/unist"
:
"^3.0.0"
,
"type-check"
:
"^0.4.0"
,
"ccount"
:
"^2.0.0"
,
"word-wrap"
:
"^1.2.5"
"devlop"
:
"^1.1.0"
,
"mdast-util-from-markdown"
:
"^2.0.0"
,
"mdast-util-to-markdown"
:
"^2.0.0"
,
"parse-entities"
:
"^4.0.0"
,
"stringify-entities"
:
"^4.0.0"
,
"unist-util-stringify-position"
:
"^4.0.0"
,
"vfile-message"
:
"^4.0.0"
},
},
"engines"
:
{
"funding"
:
{
"node"
:
">= 0.8.0"
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
}
},
},
"node_modules/p-limit"
:
{
"node_modules/mdast-util-mdxjs-esm"
:
{
"version"
:
"3.1.0"
,
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz"
,
"integrity"
:
"sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="
,
"integrity"
:
"sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"yocto-queue"
:
"^0.1.0"
"@types/estree-jsx"
:
"^1.0.0"
,
},
"@types/hast"
:
"^3.0.0"
,
"engines"
:
{
"@types/mdast"
:
"^4.0.0"
,
"node"
:
">=10"
"devlop"
:
"^1.0.0"
,
"mdast-util-from-markdown"
:
"^2.0.0"
,
"mdast-util-to-markdown"
:
"^2.0.0"
},
},
"funding"
:
{
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
}
},
},
"node_modules/p-locate"
:
{
"node_modules/mdast-util-phrasing"
:
{
"version"
:
"5.0.0"
,
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz"
,
"integrity"
:
"sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="
,
"integrity"
:
"sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"p-limit"
:
"^3.0.2"
"@types/mdast"
:
"^4.0.0"
,
},
"unist-util-is"
:
"^6.0.0"
"engines"
:
{
"node"
:
">=10"
},
},
"funding"
:
{
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
}
},
},
"node_modules/parent-module"
:
{
"node_modules/mdast-util-to-hast"
:
{
"version"
:
"1.0.1"
,
"version"
:
"13.2.1"
,
"resolved"
:
"https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz"
,
"integrity"
:
"sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/hast"
:
"^3.0.0"
,
"@types/mdast"
:
"^4.0.0"
,
"@ungap/structured-clone"
:
"^1.0.0"
,
"devlop"
:
"^1.0.0"
,
"micromark-util-sanitize-uri"
:
"^2.0.0"
,
"trim-lines"
:
"^3.0.0"
,
"unist-util-position"
:
"^5.0.0"
,
"unist-util-visit"
:
"^5.0.0"
,
"vfile"
:
"^6.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/mdast-util-to-markdown"
:
{
"version"
:
"2.1.2"
,
"resolved"
:
"https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz"
,
"integrity"
:
"sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/mdast"
:
"^4.0.0"
,
"@types/unist"
:
"^3.0.0"
,
"longest-streak"
:
"^3.0.0"
,
"mdast-util-phrasing"
:
"^4.0.0"
,
"mdast-util-to-string"
:
"^4.0.0"
,
"micromark-util-classify-character"
:
"^2.0.0"
,
"micromark-util-decode-string"
:
"^2.0.0"
,
"unist-util-visit"
:
"^5.0.0"
,
"zwitch"
:
"^2.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/mdast-util-to-string"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz"
,
"integrity"
:
"sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/mdast"
:
"^4.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/micromark"
:
{
"version"
:
"4.0.2"
,
"resolved"
:
"https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz"
,
"integrity"
:
"sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/debug"
:
"^4.0.0"
,
"debug"
:
"^4.0.0"
,
"decode-named-character-reference"
:
"^1.0.0"
,
"devlop"
:
"^1.0.0"
,
"micromark-core-commonmark"
:
"^2.0.0"
,
"micromark-factory-space"
:
"^2.0.0"
,
"micromark-util-character"
:
"^2.0.0"
,
"micromark-util-chunked"
:
"^2.0.0"
,
"micromark-util-combine-extensions"
:
"^2.0.0"
,
"micromark-util-decode-numeric-character-reference"
:
"^2.0.0"
,
"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"
}
},
"node_modules/micromark-core-commonmark"
:
{
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz"
,
"integrity"
:
"sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"decode-named-character-reference"
:
"^1.0.0"
,
"devlop"
:
"^1.0.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.0"
,
"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"
}
},
"node_modules/micromark-factory-destination"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz"
,
"integrity"
:
"sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-util-character"
:
"^2.0.0"
,
"micromark-util-symbol"
:
"^2.0.0"
,
"micromark-util-types"
:
"^2.0.0"
}
},
"node_modules/micromark-factory-label"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz"
,
"integrity"
:
"sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"devlop"
:
"^1.0.0"
,
"micromark-util-character"
:
"^2.0.0"
,
"micromark-util-symbol"
:
"^2.0.0"
,
"micromark-util-types"
:
"^2.0.0"
}
},
"node_modules/micromark-factory-space"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz"
,
"integrity"
:
"sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-util-character"
:
"^2.0.0"
,
"micromark-util-types"
:
"^2.0.0"
}
},
"node_modules/micromark-factory-title"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz"
,
"integrity"
:
"sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-factory-space"
:
"^2.0.0"
,
"micromark-util-character"
:
"^2.0.0"
,
"micromark-util-symbol"
:
"^2.0.0"
,
"micromark-util-types"
:
"^2.0.0"
}
},
"node_modules/micromark-factory-whitespace"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz"
,
"integrity"
:
"sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-factory-space"
:
"^2.0.0"
,
"micromark-util-character"
:
"^2.0.0"
,
"micromark-util-symbol"
:
"^2.0.0"
,
"micromark-util-types"
:
"^2.0.0"
}
},
"node_modules/micromark-util-character"
:
{
"version"
:
"2.1.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz"
,
"integrity"
:
"sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-util-symbol"
:
"^2.0.0"
,
"micromark-util-types"
:
"^2.0.0"
}
},
"node_modules/micromark-util-chunked"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz"
,
"integrity"
:
"sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-util-symbol"
:
"^2.0.0"
}
},
"node_modules/micromark-util-classify-character"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz"
,
"integrity"
:
"sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-util-character"
:
"^2.0.0"
,
"micromark-util-symbol"
:
"^2.0.0"
,
"micromark-util-types"
:
"^2.0.0"
}
},
"node_modules/micromark-util-combine-extensions"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz"
,
"integrity"
:
"sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-util-chunked"
:
"^2.0.0"
,
"micromark-util-types"
:
"^2.0.0"
}
},
"node_modules/micromark-util-decode-numeric-character-reference"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz"
,
"integrity"
:
"sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-util-symbol"
:
"^2.0.0"
}
},
"node_modules/micromark-util-decode-string"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz"
,
"integrity"
:
"sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"decode-named-character-reference"
:
"^1.0.0"
,
"micromark-util-character"
:
"^2.0.0"
,
"micromark-util-decode-numeric-character-reference"
:
"^2.0.0"
,
"micromark-util-symbol"
:
"^2.0.0"
}
},
"node_modules/micromark-util-encode"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz"
,
"integrity"
:
"sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
},
"node_modules/micromark-util-html-tag-name"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz"
,
"integrity"
:
"sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
},
"node_modules/micromark-util-normalize-identifier"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz"
,
"integrity"
:
"sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-util-symbol"
:
"^2.0.0"
}
},
"node_modules/micromark-util-resolve-all"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz"
,
"integrity"
:
"sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-util-types"
:
"^2.0.0"
}
},
"node_modules/micromark-util-sanitize-uri"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz"
,
"integrity"
:
"sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"micromark-util-character"
:
"^2.0.0"
,
"micromark-util-encode"
:
"^2.0.0"
,
"micromark-util-symbol"
:
"^2.0.0"
}
},
"node_modules/micromark-util-subtokenize"
:
{
"version"
:
"2.1.0"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz"
,
"integrity"
:
"sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
,
"dependencies"
:
{
"devlop"
:
"^1.0.0"
,
"micromark-util-chunked"
:
"^2.0.0"
,
"micromark-util-symbol"
:
"^2.0.0"
,
"micromark-util-types"
:
"^2.0.0"
}
},
"node_modules/micromark-util-symbol"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz"
,
"integrity"
:
"sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
},
"node_modules/micromark-util-types"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz"
,
"integrity"
:
"sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="
,
"funding"
:
[
{
"type"
:
"GitHub Sponsors"
,
"url"
:
"https://github.com/sponsors/unifiedjs"
},
{
"type"
:
"OpenCollective"
,
"url"
:
"https://opencollective.com/unified"
}
],
"license"
:
"MIT"
},
"node_modules/minimatch"
:
{
"version"
:
"3.1.2"
,
"resolved"
:
"https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
,
"integrity"
:
"sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"dependencies"
:
{
"brace-expansion"
:
"^1.1.7"
},
"engines"
:
{
"node"
:
"*"
}
},
"node_modules/ms"
:
{
"version"
:
"2.1.3"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
,
"integrity"
:
"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
,
"license"
:
"MIT"
},
"node_modules/nanoid"
:
{
"version"
:
"3.3.11"
,
"resolved"
:
"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz"
,
"integrity"
:
"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="
,
"dev"
:
true
,
"funding"
:
[
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/ai"
}
],
"license"
:
"MIT"
,
"bin"
:
{
"nanoid"
:
"bin/nanoid.cjs"
},
"engines"
:
{
"node"
:
"^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/natural-compare"
:
{
"version"
:
"1.4.0"
,
"resolved"
:
"https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
,
"integrity"
:
"sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/node-releases"
:
{
"version"
:
"2.0.27"
,
"resolved"
:
"https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz"
,
"integrity"
:
"sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/optionator"
:
{
"version"
:
"0.9.4"
,
"resolved"
:
"https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz"
,
"integrity"
:
"sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"deep-is"
:
"^0.1.3"
,
"fast-levenshtein"
:
"^2.0.6"
,
"levn"
:
"^0.4.1"
,
"prelude-ls"
:
"^1.2.1"
,
"type-check"
:
"^0.4.0"
,
"word-wrap"
:
"^1.2.5"
},
"engines"
:
{
"node"
:
">= 0.8.0"
}
},
"node_modules/p-limit"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
,
"integrity"
:
"sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"yocto-queue"
:
"^0.1.0"
},
"engines"
:
{
"node"
:
">=10"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-locate"
:
{
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
,
"integrity"
:
"sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"p-limit"
:
"^3.0.2"
},
"engines"
:
{
"node"
:
">=10"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/parent-module"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
,
"integrity"
:
"sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="
,
"integrity"
:
"sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="
,
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
...
@@ -2494,6 +3382,31 @@
...
@@ -2494,6 +3382,31 @@
"node"
:
">=6"
"node"
:
">=6"
}
}
},
},
"node_modules/parse-entities"
:
{
"version"
:
"4.0.2"
,
"resolved"
:
"https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz"
,
"integrity"
:
"sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/unist"
:
"^2.0.0"
,
"character-entities-legacy"
:
"^3.0.0"
,
"character-reference-invalid"
:
"^2.0.0"
,
"decode-named-character-reference"
:
"^1.0.0"
,
"is-alphanumerical"
:
"^2.0.0"
,
"is-decimal"
:
"^2.0.0"
,
"is-hexadecimal"
:
"^2.0.0"
},
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/parse-entities/node_modules/@types/unist"
:
{
"version"
:
"2.0.11"
,
"resolved"
:
"https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz"
,
"integrity"
:
"sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
,
"license"
:
"MIT"
},
"node_modules/path-exists"
:
{
"node_modules/path-exists"
:
{
"version"
:
"4.0.0"
,
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
,
...
@@ -2574,6 +3487,16 @@
...
@@ -2574,6 +3487,16 @@
"node"
:
">= 0.8.0"
"node"
:
">= 0.8.0"
}
}
},
},
"node_modules/property-information"
:
{
"version"
:
"7.1.0"
,
"resolved"
:
"https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz"
,
"integrity"
:
"sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/punycode"
:
{
"node_modules/punycode"
:
{
"version"
:
"2.3.1"
,
"version"
:
"2.3.1"
,
"resolved"
:
"https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
,
...
@@ -2606,6 +3529,33 @@
...
@@ -2606,6 +3529,33 @@
"react"
:
"^19.2.3"
"react"
:
"^19.2.3"
}
}
},
},
"node_modules/react-markdown"
:
{
"version"
:
"10.1.0"
,
"resolved"
:
"https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz"
,
"integrity"
:
"sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/hast"
:
"^3.0.0"
,
"@types/mdast"
:
"^4.0.0"
,
"devlop"
:
"^1.0.0"
,
"hast-util-to-jsx-runtime"
:
"^2.0.0"
,
"html-url-attributes"
:
"^3.0.0"
,
"mdast-util-to-hast"
:
"^13.0.0"
,
"remark-parse"
:
"^11.0.0"
,
"remark-rehype"
:
"^11.0.0"
,
"unified"
:
"^11.0.0"
,
"unist-util-visit"
:
"^5.0.0"
,
"vfile"
:
"^6.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
},
"peerDependencies"
:
{
"@types/react"
:
">=18"
,
"react"
:
">=18"
}
},
"node_modules/react-refresh"
:
{
"node_modules/react-refresh"
:
{
"version"
:
"0.18.0"
,
"version"
:
"0.18.0"
,
"resolved"
:
"https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz"
,
...
@@ -2616,6 +3566,39 @@
...
@@ -2616,6 +3566,39 @@
"node"
:
">=0.10.0"
"node"
:
">=0.10.0"
}
}
},
},
"node_modules/remark-parse"
:
{
"version"
:
"11.0.0"
,
"resolved"
:
"https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz"
,
"integrity"
:
"sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/mdast"
:
"^4.0.0"
,
"mdast-util-from-markdown"
:
"^2.0.0"
,
"micromark-util-types"
:
"^2.0.0"
,
"unified"
:
"^11.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/remark-rehype"
:
{
"version"
:
"11.1.2"
,
"resolved"
:
"https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz"
,
"integrity"
:
"sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/hast"
:
"^3.0.0"
,
"@types/mdast"
:
"^4.0.0"
,
"mdast-util-to-hast"
:
"^13.0.0"
,
"unified"
:
"^11.0.0"
,
"vfile"
:
"^6.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/resolve-from"
:
{
"node_modules/resolve-from"
:
{
"version"
:
"4.0.0"
,
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
,
...
@@ -2715,6 +3698,30 @@
...
@@ -2715,6 +3698,30 @@
"node"
:
">=0.10.0"
"node"
:
">=0.10.0"
}
}
},
},
"node_modules/space-separated-tokens"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz"
,
"integrity"
:
"sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/stringify-entities"
:
{
"version"
:
"4.0.4"
,
"resolved"
:
"https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz"
,
"integrity"
:
"sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"character-entities-html4"
:
"^2.0.0"
,
"character-entities-legacy"
:
"^3.0.0"
},
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/strip-json-comments"
:
{
"node_modules/strip-json-comments"
:
{
"version"
:
"3.1.1"
,
"version"
:
"3.1.1"
,
"resolved"
:
"https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
,
...
@@ -2728,6 +3735,24 @@
...
@@ -2728,6 +3735,24 @@
"url"
:
"https://github.com/sponsors/sindresorhus"
"url"
:
"https://github.com/sponsors/sindresorhus"
}
}
},
},
"node_modules/style-to-js"
:
{
"version"
:
"1.1.21"
,
"resolved"
:
"https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz"
,
"integrity"
:
"sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"style-to-object"
:
"1.0.14"
}
},
"node_modules/style-to-object"
:
{
"version"
:
"1.0.14"
,
"resolved"
:
"https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz"
,
"integrity"
:
"sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"inline-style-parser"
:
"0.2.7"
}
},
"node_modules/supports-color"
:
{
"node_modules/supports-color"
:
{
"version"
:
"7.2.0"
,
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
...
@@ -2758,6 +3783,26 @@
...
@@ -2758,6 +3783,26 @@
"url"
:
"https://github.com/sponsors/SuperchupuDev"
"url"
:
"https://github.com/sponsors/SuperchupuDev"
}
}
},
},
"node_modules/trim-lines"
:
{
"version"
:
"3.0.1"
,
"resolved"
:
"https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz"
,
"integrity"
:
"sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/trough"
:
{
"version"
:
"2.2.0"
,
"resolved"
:
"https://registry.npmjs.org/trough/-/trough-2.2.0.tgz"
,
"integrity"
:
"sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
},
"node_modules/ts-api-utils"
:
{
"node_modules/ts-api-utils"
:
{
"version"
:
"2.4.0"
,
"version"
:
"2.4.0"
,
"resolved"
:
"https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz"
,
...
@@ -2838,6 +3883,93 @@
...
@@ -2838,6 +3883,93 @@
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/unified"
:
{
"version"
:
"11.0.5"
,
"resolved"
:
"https://registry.npmjs.org/unified/-/unified-11.0.5.tgz"
,
"integrity"
:
"sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/unist"
:
"^3.0.0"
,
"bail"
:
"^2.0.0"
,
"devlop"
:
"^1.0.0"
,
"extend"
:
"^3.0.0"
,
"is-plain-obj"
:
"^4.0.0"
,
"trough"
:
"^2.0.0"
,
"vfile"
:
"^6.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/unist-util-is"
:
{
"version"
:
"6.0.1"
,
"resolved"
:
"https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz"
,
"integrity"
:
"sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/unist"
:
"^3.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/unist-util-position"
:
{
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz"
,
"integrity"
:
"sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/unist"
:
"^3.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/unist-util-stringify-position"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz"
,
"integrity"
:
"sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/unist"
:
"^3.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/unist-util-visit"
:
{
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz"
,
"integrity"
:
"sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/unist"
:
"^3.0.0"
,
"unist-util-is"
:
"^6.0.0"
,
"unist-util-visit-parents"
:
"^6.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/unist-util-visit-parents"
:
{
"version"
:
"6.0.2"
,
"resolved"
:
"https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz"
,
"integrity"
:
"sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/unist"
:
"^3.0.0"
,
"unist-util-is"
:
"^6.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/update-browserslist-db"
:
{
"node_modules/update-browserslist-db"
:
{
"version"
:
"1.2.3"
,
"version"
:
"1.2.3"
,
"resolved"
:
"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz"
,
"resolved"
:
"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz"
,
...
@@ -2879,6 +4011,34 @@
...
@@ -2879,6 +4011,34 @@
"punycode"
:
"^2.1.0"
"punycode"
:
"^2.1.0"
}
}
},
},
"node_modules/vfile"
:
{
"version"
:
"6.0.3"
,
"resolved"
:
"https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz"
,
"integrity"
:
"sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/unist"
:
"^3.0.0"
,
"vfile-message"
:
"^4.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/vfile-message"
:
{
"version"
:
"4.0.3"
,
"resolved"
:
"https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz"
,
"integrity"
:
"sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@types/unist"
:
"^3.0.0"
,
"unist-util-stringify-position"
:
"^4.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/unified"
}
},
"node_modules/vite"
:
{
"node_modules/vite"
:
{
"name"
:
"rolldown-vite"
,
"name"
:
"rolldown-vite"
,
"version"
:
"7.2.5"
,
"version"
:
"7.2.5"
,
...
@@ -3026,6 +4186,16 @@
...
@@ -3026,6 +4186,16 @@
"peerDependencies"
:
{
"peerDependencies"
:
{
"zod"
:
"^3.25.0 || ^4.0.0"
"zod"
:
"^3.25.0 || ^4.0.0"
}
}
},
"node_modules/zwitch"
:
{
"version"
:
"2.0.4"
,
"resolved"
:
"https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz"
,
"integrity"
:
"sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="
,
"license"
:
"MIT"
,
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/wooorm"
}
}
}
}
}
}
}
math-tutor/frontend/package.json
View file @
7689fd33
...
@@ -11,7 +11,8 @@
...
@@ -11,7 +11,8 @@
},
},
"dependencies"
:
{
"dependencies"
:
{
"react"
:
"^19.2.0"
,
"react"
:
"^19.2.0"
,
"react-dom"
:
"^19.2.0"
"react-dom"
:
"^19.2.0"
,
"react-markdown"
:
"^10.1.0"
},
},
"devDependencies"
:
{
"devDependencies"
:
{
"@eslint/js"
:
"^9.39.1"
,
"@eslint/js"
:
"^9.39.1"
,
...
...
math-tutor/frontend/src/components/Retrieval/DocCard.tsx
View file @
7689fd33
import
{
useEffect
,
useRef
}
from
"
react
"
;
import
ReactMarkdown
from
"
react-markdown
"
;
declare
global
{
interface
Window
{
MathJax
?:
{
typesetPromise
?:
(
elements
?:
Element
[])
=>
Promise
<
void
>
;
};
}
}
type
DocCardProps
=
{
type
DocCardProps
=
{
title
:
string
;
title
:
string
;
snippet
:
string
;
subtitle
?:
string
;
snippetMarkdown
:
string
;
score
?:
number
;
onCite
?:
()
=>
void
;
onCite
?:
()
=>
void
;
onInspect
?:
()
=>
void
;
defaultOpen
?:
boolean
;
defaultOpen
?:
boolean
;
};
};
export
default
function
DocCard
({
export
default
function
DocCard
({
title
,
title
,
snippet
,
subtitle
,
snippetMarkdown
,
score
,
onCite
,
onCite
,
defaultOpen
=
true
,
onInspect
,
defaultOpen
=
false
,
}:
DocCardProps
)
{
}:
DocCardProps
)
{
const
contentRef
=
useRef
<
HTMLDivElement
|
null
>
(
null
);
useEffect
(()
=>
{
if
(
window
.
MathJax
?.
typesetPromise
&&
contentRef
.
current
)
{
window
.
MathJax
.
typesetPromise
([
contentRef
.
current
]).
catch
(()
=>
undefined
);
}
},
[
snippetMarkdown
]);
return
(
return
(
<
details
className
=
"doc-card"
open
=
{
defaultOpen
}
>
<
details
className
=
"doc-card"
open
=
{
defaultOpen
}
>
<
summary
className
=
"doc-title"
>
{
title
}
</
summary
>
<
summary
className
=
"doc-title"
>
<
div
className
=
"doc-snippet"
>
{
snippet
}
</
div
>
<
span
>
{
title
}
</
span
>
<
button
className
=
"btn small"
type
=
"button"
onClick
=
{
onCite
}
>
{
typeof
score
===
"
number
"
?
(
Cite
<
span
className
=
"doc-score"
>
{
score
.
toFixed
(
3
)
}
</
span
>
</
button
>
)
:
null
}
</
summary
>
{
subtitle
?
<
div
className
=
"doc-subtitle"
>
{
subtitle
}
</
div
>
:
null
}
<
div
className
=
"doc-snippet"
ref
=
{
contentRef
}
>
<
ReactMarkdown
>
{
snippetMarkdown
}
</
ReactMarkdown
>
</
div
>
<
div
className
=
"doc-actions"
>
<
button
className
=
"btn small"
type
=
"button"
onClick
=
{
onInspect
}
>
Inspect
</
button
>
<
button
className
=
"btn small"
type
=
"button"
onClick
=
{
onCite
}
>
Cite
</
button
>
</
div
>
</
details
>
</
details
>
);
);
}
}
math-tutor/frontend/src/components/Retrieval/DocPanel.tsx
View file @
7689fd33
import
DocCard
from
"
./DocCard
"
;
import
DocCard
from
"
./DocCard
"
;
export
type
RetrievedDoc
=
{
export
type
RetrievedDoc
=
{
id
:
string
;
uid
:
string
;
title
:
string
;
doc_type
:
string
;
snippet
:
string
;
score
?:
number
;
metadata
:
{
section_index
?:
number
|
null
;
subsection_index
?:
number
|
null
;
child_index
?:
number
|
null
;
section_title
?:
string
|
null
;
subsection_title
?:
string
|
null
;
title
?:
string
|
null
;
type
?:
string
|
null
;
box_hint
?:
string
|
null
;
path
?:
string
|
null
;
};
markdown
:
string
;
};
};
type
DocPanelProps
=
{
type
DocPanelProps
=
{
docs
:
RetrievedDoc
[];
docs
:
RetrievedDoc
[];
onCiteDoc
?:
(
id
:
string
)
=>
void
;
isLoading
?:
boolean
;
error
?:
string
|
null
;
onCiteDoc
?:
(
uid
:
string
)
=>
void
;
onInspectDoc
?:
(
doc
:
RetrievedDoc
)
=>
void
;
};
};
export
default
function
DocPanel
({
docs
,
onCiteDoc
}:
DocPanelProps
)
{
const
buildTitle
=
(
doc
:
RetrievedDoc
)
=>
{
const
meta
=
doc
.
metadata
;
return
(
meta
.
title
||
meta
.
subsection_title
||
meta
.
section_title
||
meta
.
path
||
"
Untitled
"
);
};
const
buildSubtitle
=
(
doc
:
RetrievedDoc
)
=>
{
const
meta
=
doc
.
metadata
;
const
parts
:
string
[]
=
[];
if
(
meta
.
section_index
!==
null
&&
meta
.
section_index
!==
undefined
)
{
parts
.
push
(
`s
${
meta
.
section_index
}
`
);
}
if
(
meta
.
subsection_index
!==
null
&&
meta
.
subsection_index
!==
undefined
)
{
parts
.
push
(
`ss
${
meta
.
subsection_index
}
`
);
}
if
(
meta
.
child_index
!==
null
&&
meta
.
child_index
!==
undefined
)
{
parts
.
push
(
`c
${
meta
.
child_index
}
`
);
}
if
(
doc
.
doc_type
)
{
parts
.
push
(
doc
.
doc_type
);
}
return
parts
.
length
?
parts
.
join
(
"
-
"
)
:
undefined
;
};
const
buildSnippet
=
(
markdown
:
string
)
=>
{
const
trimmed
=
markdown
.
trim
();
if
(
trimmed
.
length
<=
240
)
{
return
trimmed
;
}
return
`
${
trimmed
.
slice
(
0
,
240
)}
...`
;
};
export
default
function
DocPanel
({
docs
,
isLoading
,
error
,
onCiteDoc
,
onInspectDoc
,
}:
DocPanelProps
)
{
return
(
return
(
<
div
className
=
"retrieval-panel"
>
<
div
className
=
"retrieval-panel"
>
<
div
className
=
"retrieval-title"
>
Retrieved Notes
</
div
>
<
div
className
=
"retrieval-title"
>
Retrieved Notes
</
div
>
{
isLoading
?
<
div
className
=
"retrieval-state"
>
Loading...
</
div
>
:
null
}
{
error
?
<
div
className
=
"retrieval-state error"
>
{
error
}
</
div
>
:
null
}
{
!
isLoading
&&
!
error
&&
docs
.
length
===
0
?
(
<
div
className
=
"retrieval-state"
>
No results yet.
</
div
>
)
:
null
}
{
docs
.
map
((
doc
)
=>
(
{
docs
.
map
((
doc
)
=>
(
<
DocCard
<
DocCard
key
=
{
doc
.
id
}
key
=
{
doc
.
uid
}
title
=
{
doc
.
title
}
title
=
{
buildTitle
(
doc
)
}
snippet
=
{
doc
.
snippet
}
subtitle
=
{
buildSubtitle
(
doc
)
}
onCite
=
{
onCiteDoc
?
()
=>
onCiteDoc
(
doc
.
id
)
:
undefined
}
snippetMarkdown
=
{
buildSnippet
(
doc
.
markdown
)
}
score
=
{
doc
.
score
}
onCite
=
{
onCiteDoc
?
()
=>
onCiteDoc
(
doc
.
uid
)
:
undefined
}
onInspect
=
{
onInspectDoc
?
()
=>
onInspectDoc
(
doc
)
:
undefined
}
/>
/>
))
}
))
}
</
div
>
</
div
>
...
...
math-tutor/frontend/src/pages/App.tsx
View file @
7689fd33
...
@@ -15,23 +15,13 @@ const initialMessages: ChatMessage[] = [
...
@@ -15,23 +15,13 @@ const initialMessages: ChatMessage[] = [
},
},
];
];
const
mockDocs
:
RetrievedDoc
[]
=
[
{
id
:
"
d1
"
,
title
:
"
Quadratic Factoring Basics
"
,
snippet
:
"
For x^2 + bx + c, find p*q = c and p+q = b.
"
,
},
{
id
:
"
d2
"
,
title
:
"
Worked Example: x^2 - 5x + 6
"
,
snippet
:
"
Numbers are -2 and -3, so (x-2)(x-3).
"
,
},
];
export
default
function
App
()
{
export
default
function
App
()
{
const
[
messages
,
setMessages
]
=
useState
<
ChatMessage
[]
>
(
initialMessages
);
const
[
messages
,
setMessages
]
=
useState
<
ChatMessage
[]
>
(
initialMessages
);
const
[
draft
,
setDraft
]
=
useState
(
""
);
const
[
draft
,
setDraft
]
=
useState
(
""
);
const
[
isCanvasVisible
,
setIsCanvasVisible
]
=
useState
(
false
);
const
[
isCanvasVisible
,
setIsCanvasVisible
]
=
useState
(
false
);
const
[
retrievedDocs
,
setRetrievedDocs
]
=
useState
<
RetrievedDoc
[]
>
([]);
const
[
retrievalLoading
,
setRetrievalLoading
]
=
useState
(
false
);
const
[
retrievalError
,
setRetrievalError
]
=
useState
<
string
|
null
>
(
null
);
const
handleSend
=
async
()
=>
{
const
handleSend
=
async
()
=>
{
const
trimmed
=
draft
.
trim
();
const
trimmed
=
draft
.
trim
();
...
@@ -49,6 +39,26 @@ export default function App() {
...
@@ -49,6 +39,26 @@ export default function App() {
setDraft
(
""
);
setDraft
(
""
);
try
{
try
{
setRetrievalLoading
(
true
);
setRetrievalError
(
null
);
const
retrievalRequest
=
fetch
(
"
http://localhost:8000/api/retrieval/query
"
,
{
method
:
"
POST
"
,
headers
:
{
"
Content-Type
"
:
"
application/json
"
},
body
:
JSON
.
stringify
({
query
:
trimmed
,
k
:
8
,
expand_links
:
true
,
}),
}).
then
(
async
(
res
)
=>
{
if
(
!
res
.
ok
)
{
throw
new
Error
(
`Retrieval failed:
${
res
.
status
}
`
);
}
const
payload
=
await
res
.
json
();
const
docs
:
RetrievedDoc
[]
=
payload
.
children
||
[];
setRetrievedDocs
(
docs
);
});
const
response
=
await
fetch
(
"
http://localhost:8000/api/chat
"
,
{
const
response
=
await
fetch
(
"
http://localhost:8000/api/chat
"
,
{
method
:
"
POST
"
,
method
:
"
POST
"
,
headers
:
{
"
Content-Type
"
:
"
application/json
"
},
headers
:
{
"
Content-Type
"
:
"
application/json
"
},
...
@@ -75,6 +85,8 @@ export default function App() {
...
@@ -75,6 +85,8 @@ export default function App() {
},
},
]);
]);
}
}
await
retrievalRequest
;
}
catch
(
error
)
{
}
catch
(
error
)
{
setMessages
((
prev
)
=>
[
setMessages
((
prev
)
=>
[
...
prev
,
...
prev
,
...
@@ -84,7 +96,10 @@ export default function App() {
...
@@ -84,7 +96,10 @@ export default function App() {
text
:
"
Chat request failed. Check the API logs.
"
,
text
:
"
Chat request failed. Check the API logs.
"
,
},
},
]);
]);
setRetrievalError
(
"
Retrieval failed. Check the API logs.
"
);
void
error
;
void
error
;
}
finally
{
setRetrievalLoading
(
false
);
}
}
};
};
...
@@ -137,6 +152,66 @@ export default function App() {
...
@@ -137,6 +152,66 @@ export default function App() {
setDraft
((
prev
)
=>
(
prev
?
`
${
prev
}
[
${
docId
}
]`
:
`[
${
docId
}
]`
));
setDraft
((
prev
)
=>
(
prev
?
`
${
prev
}
[
${
docId
}
]`
:
`[
${
docId
}
]`
));
};
};
const
handleInspectDoc
=
(
doc
:
RetrievedDoc
)
=>
{
const
title
=
doc
.
metadata
.
title
||
doc
.
metadata
.
subsection_title
||
doc
.
metadata
.
section_title
||
doc
.
metadata
.
path
||
"
Document
"
;
const
html
=
`<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>
${
title
}
</title>
<style>
body { font-family: "Space Grotesk", sans-serif; margin: 24px; color: #1d1b16; }
h1 { font-size: 22px; margin-bottom: 12px; }
.meta { color: #6f675d; font-size: 12px; margin-bottom: 16px; }
.content { max-width: 900px; }
pre, code { background: #f6f0e4; padding: 2px 4px; border-radius: 4px; }
</style>
</head>
<body>
<h1 id="title"></h1>
<div class="meta" id="meta"></div>
<div class="content" id="content"></div>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script>
const markdown =
${
JSON
.
stringify
(
doc
.
markdown
)}
;
const title =
${
JSON
.
stringify
(
title
)}
;
const path =
${
JSON
.
stringify
(
doc
.
metadata
.
path
||
""
)}
;
document.getElementById("title").textContent = title;
document.getElementById("meta").textContent = path;
document.getElementById("content").innerHTML = marked.parse(markdown);
</script>
<script>
window.MathJax = {
tex: {
inlineMath: [["$", "$"], ["\\\\(", "\\\\)"]],
displayMath: [["$$", "$$"], ["\\\\[", "\\\\]"]],
}
};
</script>
<script
id="mathjax-script"
async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"
></script>
</body>
</html>`
;
const
tab
=
window
.
open
(
""
,
"
_blank
"
);
if
(
!
tab
)
{
return
;
}
tab
.
document
.
open
();
tab
.
document
.
write
(
html
);
tab
.
document
.
close
();
};
return
(
return
(
<
div
className
=
"app-shell"
>
<
div
className
=
"app-shell"
>
<
header
className
=
"app-header"
>
<
header
className
=
"app-header"
>
...
@@ -174,7 +249,13 @@ export default function App() {
...
@@ -174,7 +249,13 @@ export default function App() {
</
section
>
</
section
>
<
aside
className
=
"retrieval-column"
>
<
aside
className
=
"retrieval-column"
>
<
DocPanel
docs
=
{
mockDocs
}
onCiteDoc
=
{
handleCiteDoc
}
/>
<
DocPanel
docs
=
{
retrievedDocs
}
isLoading
=
{
retrievalLoading
}
error
=
{
retrievalError
}
onCiteDoc
=
{
handleCiteDoc
}
onInspectDoc
=
{
handleInspectDoc
}
/>
</
aside
>
</
aside
>
</
main
>
</
main
>
</
div
>
</
div
>
...
...
math-tutor/frontend/src/styles/theme.css
View file @
7689fd33
...
@@ -13,12 +13,8 @@ body {
...
@@ -13,12 +13,8 @@ body {
margin
:
0
;
margin
:
0
;
}
}
#root
{
min-height
:
100vh
;
}
.app-shell
{
.app-shell
{
height
:
100vh
;
min-
height
:
100vh
;
padding
:
24px
;
padding
:
24px
;
background
:
radial-gradient
(
circle
at
top
left
,
#fff7e6
,
#f4f1ea
);
background
:
radial-gradient
(
circle
at
top
left
,
#fff7e6
,
#f4f1ea
);
display
:
flex
;
display
:
flex
;
...
@@ -81,7 +77,6 @@ body {
...
@@ -81,7 +77,6 @@ body {
gap
:
24px
;
gap
:
24px
;
flex
:
1
;
flex
:
1
;
min-height
:
0
;
min-height
:
0
;
overflow
:
hidden
;
}
}
.chat-column
{
.chat-column
{
...
@@ -247,6 +242,8 @@ body {
...
@@ -247,6 +242,8 @@ body {
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
gap
:
12px
;
gap
:
12px
;
max-height
:
80vh
;
overflow-y
:
auto
;
}
}
.retrieval-title
{
.retrieval-title
{
...
@@ -263,6 +260,21 @@ body {
...
@@ -263,6 +260,21 @@ body {
.doc-title
{
.doc-title
{
font-weight
:
600
;
font-weight
:
600
;
cursor
:
pointer
;
cursor
:
pointer
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
}
.doc-score
{
font-size
:
11px
;
color
:
#6f675d
;
margin-left
:
8px
;
}
.doc-subtitle
{
font-size
:
12px
;
color
:
#6f675d
;
margin
:
6px
0
2px
;
}
}
.doc-snippet
{
.doc-snippet
{
...
@@ -270,6 +282,25 @@ body {
...
@@ -270,6 +282,25 @@ body {
color
:
#6f675d
;
color
:
#6f675d
;
}
}
.doc-actions
{
display
:
flex
;
gap
:
8px
;
flex-wrap
:
wrap
;
}
.retrieval-state
{
padding
:
10px
12px
;
border-radius
:
10px
;
background
:
#f6f0e4
;
color
:
#6f675d
;
font-size
:
12px
;
}
.retrieval-state.error
{
background
:
#f3d9d6
;
color
:
#8a3b2f
;
}
@media
(
max-width
:
900px
)
{
@media
(
max-width
:
900px
)
{
.app-main
{
.app-main
{
grid-template-columns
:
1
fr
;
grid-template-columns
:
1
fr
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment