aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClawd <ai@clawd.bot>2026-02-28 13:48:34 -0800
committerClawd <ai@clawd.bot>2026-02-28 13:48:34 -0800
commitc386a1acfab0db99af57a9a18a49c72b89184f15 (patch)
tree1b4c81ea2b992be3e19789ca21e7bb9f4f99bbc5
parentafe1cd0918e182b8107ffa81b9f9d6cdec4615ae (diff)
Replace custom markdown renderer with react-markdown
- Add react-markdown and remark-gfm dependencies - Remove hacky regex-based renderMarkdown function - Full GFM support: tables, task lists, strikethrough, autolinks - Update CSS for react-markdown output (task lists, blockquotes, hr) - Cleaner, more maintainable code
-rw-r--r--package-lock.json1461
-rw-r--r--package.json2
-rw-r--r--renderer/src/components/DocumentPane.tsx183
-rw-r--r--renderer/src/styles/globals.css50
4 files changed, 1549 insertions, 147 deletions
diff --git a/package-lock.json b/package-lock.json
index 64d46a9..56b05d4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,6 +13,8 @@
13 "better-sqlite3": "12.2.0", 13 "better-sqlite3": "12.2.0",
14 "react": "^19.1.1", 14 "react": "^19.1.1",
15 "react-dom": "^19.1.1", 15 "react-dom": "^19.1.1",
16 "react-markdown": "^10.1.0",
17 "remark-gfm": "^4.0.1",
16 "uuid": "^13.0.0" 18 "uuid": "^13.0.0"
17 }, 19 },
18 "devDependencies": { 20 "devDependencies": {
@@ -2855,7 +2857,6 @@
2855 "version": "4.1.12", 2857 "version": "4.1.12",
2856 "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", 2858 "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
2857 "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", 2859 "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
2858 "dev": true,
2859 "license": "MIT", 2860 "license": "MIT",
2860 "dependencies": { 2861 "dependencies": {
2861 "@types/ms": "*" 2862 "@types/ms": "*"
@@ -2865,9 +2866,17 @@
2865 "version": "1.0.8", 2866 "version": "1.0.8",
2866 "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 2867 "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
2867 "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 2868 "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
2868 "dev": true,
2869 "license": "MIT" 2869 "license": "MIT"
2870 }, 2870 },
2871 "node_modules/@types/estree-jsx": {
2872 "version": "1.0.5",
2873 "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
2874 "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
2875 "license": "MIT",
2876 "dependencies": {
2877 "@types/estree": "*"
2878 }
2879 },
2871 "node_modules/@types/fs-extra": { 2880 "node_modules/@types/fs-extra": {
2872 "version": "9.0.13", 2881 "version": "9.0.13",
2873 "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", 2882 "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
@@ -2878,6 +2887,15 @@
2878 "@types/node": "*" 2887 "@types/node": "*"
2879 } 2888 }
2880 }, 2889 },
2890 "node_modules/@types/hast": {
2891 "version": "3.0.4",
2892 "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
2893 "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
2894 "license": "MIT",
2895 "dependencies": {
2896 "@types/unist": "*"
2897 }
2898 },
2881 "node_modules/@types/http-cache-semantics": { 2899 "node_modules/@types/http-cache-semantics": {
2882 "version": "4.0.4", 2900 "version": "4.0.4",
2883 "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", 2901 "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
@@ -2895,11 +2913,19 @@
2895 "@types/node": "*" 2913 "@types/node": "*"
2896 } 2914 }
2897 }, 2915 },
2916 "node_modules/@types/mdast": {
2917 "version": "4.0.4",
2918 "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
2919 "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
2920 "license": "MIT",
2921 "dependencies": {
2922 "@types/unist": "*"
2923 }
2924 },
2898 "node_modules/@types/ms": { 2925 "node_modules/@types/ms": {
2899 "version": "2.1.0", 2926 "version": "2.1.0",
2900 "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", 2927 "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
2901 "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", 2928 "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
2902 "dev": true,
2903 "license": "MIT" 2929 "license": "MIT"
2904 }, 2930 },
2905 "node_modules/@types/node": { 2931 "node_modules/@types/node": {
@@ -2928,7 +2954,6 @@
2928 "version": "19.1.13", 2954 "version": "19.1.13",
2929 "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.13.tgz", 2955 "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.13.tgz",
2930 "integrity": "sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ==", 2956 "integrity": "sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ==",
2931 "dev": true,
2932 "license": "MIT", 2957 "license": "MIT",
2933 "dependencies": { 2958 "dependencies": {
2934 "csstype": "^3.0.2" 2959 "csstype": "^3.0.2"
@@ -2954,6 +2979,12 @@
2954 "@types/node": "*" 2979 "@types/node": "*"
2955 } 2980 }
2956 }, 2981 },
2982 "node_modules/@types/unist": {
2983 "version": "3.0.3",
2984 "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
2985 "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
2986 "license": "MIT"
2987 },
2957 "node_modules/@types/uuid": { 2988 "node_modules/@types/uuid": {
2958 "version": "10.0.0", 2989 "version": "10.0.0",
2959 "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", 2990 "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz",
@@ -2980,6 +3011,12 @@
2980 "@types/node": "*" 3011 "@types/node": "*"
2981 } 3012 }
2982 }, 3013 },
3014 "node_modules/@ungap/structured-clone": {
3015 "version": "1.3.0",
3016 "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
3017 "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
3018 "license": "ISC"
3019 },
2983 "node_modules/@vitejs/plugin-react": { 3020 "node_modules/@vitejs/plugin-react": {
2984 "version": "5.0.2", 3021 "version": "5.0.2",
2985 "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.0.2.tgz", 3022 "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.0.2.tgz",
@@ -3329,6 +3366,16 @@
3329 "proxy-from-env": "^1.1.0" 3366 "proxy-from-env": "^1.1.0"
3330 } 3367 }
3331 }, 3368 },
3369 "node_modules/bail": {
3370 "version": "2.0.2",
3371 "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
3372 "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
3373 "license": "MIT",
3374 "funding": {
3375 "type": "github",
3376 "url": "https://github.com/sponsors/wooorm"
3377 }
3378 },
3332 "node_modules/balanced-match": { 3379 "node_modules/balanced-match": {
3333 "version": "1.0.2", 3380 "version": "1.0.2",
3334 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 3381 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -3769,6 +3816,16 @@
3769 ], 3816 ],
3770 "license": "CC-BY-4.0" 3817 "license": "CC-BY-4.0"
3771 }, 3818 },
3819 "node_modules/ccount": {
3820 "version": "2.0.1",
3821 "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
3822 "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
3823 "license": "MIT",
3824 "funding": {
3825 "type": "github",
3826 "url": "https://github.com/sponsors/wooorm"
3827 }
3828 },
3772 "node_modules/chalk": { 3829 "node_modules/chalk": {
3773 "version": "4.1.2", 3830 "version": "4.1.2",
3774 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 3831 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -3786,6 +3843,46 @@
3786 "url": "https://github.com/chalk/chalk?sponsor=1" 3843 "url": "https://github.com/chalk/chalk?sponsor=1"
3787 } 3844 }
3788 }, 3845 },
3846 "node_modules/character-entities": {
3847 "version": "2.0.2",
3848 "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
3849 "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
3850 "license": "MIT",
3851 "funding": {
3852 "type": "github",
3853 "url": "https://github.com/sponsors/wooorm"
3854 }
3855 },
3856 "node_modules/character-entities-html4": {
3857 "version": "2.1.0",
3858 "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
3859 "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
3860 "license": "MIT",
3861 "funding": {
3862 "type": "github",
3863 "url": "https://github.com/sponsors/wooorm"
3864 }
3865 },
3866 "node_modules/character-entities-legacy": {
3867 "version": "3.0.0",
3868 "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
3869 "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
3870 "license": "MIT",
3871 "funding": {
3872 "type": "github",
3873 "url": "https://github.com/sponsors/wooorm"
3874 }
3875 },
3876 "node_modules/character-reference-invalid": {
3877 "version": "2.0.1",
3878 "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
3879 "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
3880 "license": "MIT",
3881 "funding": {
3882 "type": "github",
3883 "url": "https://github.com/sponsors/wooorm"
3884 }
3885 },
3789 "node_modules/chownr": { 3886 "node_modules/chownr": {
3790 "version": "1.1.4", 3887 "version": "1.1.4",
3791 "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 3888 "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
@@ -3940,6 +4037,16 @@
3940 "node": ">= 0.8" 4037 "node": ">= 0.8"
3941 } 4038 }
3942 }, 4039 },
4040 "node_modules/comma-separated-tokens": {
4041 "version": "2.0.3",
4042 "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
4043 "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
4044 "license": "MIT",
4045 "funding": {
4046 "type": "github",
4047 "url": "https://github.com/sponsors/wooorm"
4048 }
4049 },
3943 "node_modules/commander": { 4050 "node_modules/commander": {
3944 "version": "5.1.0", 4051 "version": "5.1.0",
3945 "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", 4052 "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
@@ -4120,14 +4227,12 @@
4120 "version": "3.1.3", 4227 "version": "3.1.3",
4121 "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 4228 "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
4122 "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 4229 "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
4123 "dev": true,
4124 "license": "MIT" 4230 "license": "MIT"
4125 }, 4231 },
4126 "node_modules/debug": { 4232 "node_modules/debug": {
4127 "version": "4.4.1", 4233 "version": "4.4.1",
4128 "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", 4234 "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
4129 "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", 4235 "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
4130 "dev": true,
4131 "license": "MIT", 4236 "license": "MIT",
4132 "dependencies": { 4237 "dependencies": {
4133 "ms": "^2.1.3" 4238 "ms": "^2.1.3"
@@ -4141,6 +4246,19 @@
4141 } 4246 }
4142 } 4247 }
4143 }, 4248 },
4249 "node_modules/decode-named-character-reference": {
4250 "version": "1.3.0",
4251 "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz",
4252 "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==",
4253 "license": "MIT",
4254 "dependencies": {
4255 "character-entities": "^2.0.0"
4256 },
4257 "funding": {
4258 "type": "github",
4259 "url": "https://github.com/sponsors/wooorm"
4260 }
4261 },
4144 "node_modules/decompress-response": { 4262 "node_modules/decompress-response": {
4145 "version": "6.0.0", 4263 "version": "6.0.0",
4146 "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 4264 "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
@@ -4248,6 +4366,15 @@
4248 "node": ">=0.4.0" 4366 "node": ">=0.4.0"
4249 } 4367 }
4250 }, 4368 },
4369 "node_modules/dequal": {
4370 "version": "2.0.3",
4371 "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
4372 "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
4373 "license": "MIT",
4374 "engines": {
4375 "node": ">=6"
4376 }
4377 },
4251 "node_modules/detect-libc": { 4378 "node_modules/detect-libc": {
4252 "version": "2.0.4", 4379 "version": "2.0.4",
4253 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", 4380 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
@@ -4265,6 +4392,19 @@
4265 "license": "MIT", 4392 "license": "MIT",
4266 "optional": true 4393 "optional": true
4267 }, 4394 },
4395 "node_modules/devlop": {
4396 "version": "1.1.0",
4397 "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
4398 "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
4399 "license": "MIT",
4400 "dependencies": {
4401 "dequal": "^2.0.0"
4402 },
4403 "funding": {
4404 "type": "github",
4405 "url": "https://github.com/sponsors/wooorm"
4406 }
4407 },
4268 "node_modules/dir-compare": { 4408 "node_modules/dir-compare": {
4269 "version": "4.2.0", 4409 "version": "4.2.0",
4270 "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", 4410 "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz",
@@ -4819,6 +4959,16 @@
4819 "url": "https://github.com/sponsors/sindresorhus" 4959 "url": "https://github.com/sponsors/sindresorhus"
4820 } 4960 }
4821 }, 4961 },
4962 "node_modules/estree-util-is-identifier-name": {
4963 "version": "3.0.0",
4964 "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
4965 "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
4966 "license": "MIT",
4967 "funding": {
4968 "type": "opencollective",
4969 "url": "https://opencollective.com/unified"
4970 }
4971 },
4822 "node_modules/expand-template": { 4972 "node_modules/expand-template": {
4823 "version": "2.0.3", 4973 "version": "2.0.3",
4824 "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 4974 "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
@@ -4835,6 +4985,12 @@
4835 "dev": true, 4985 "dev": true,
4836 "license": "Apache-2.0" 4986 "license": "Apache-2.0"
4837 }, 4987 },
4988 "node_modules/extend": {
4989 "version": "3.0.2",
4990 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
4991 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
4992 "license": "MIT"
4993 },
4838 "node_modules/extract-zip": { 4994 "node_modules/extract-zip": {
4839 "version": "2.0.1", 4995 "version": "2.0.1",
4840 "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 4996 "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
@@ -5361,6 +5517,46 @@
5361 "node": ">= 0.4" 5517 "node": ">= 0.4"
5362 } 5518 }
5363 }, 5519 },
5520 "node_modules/hast-util-to-jsx-runtime": {
5521 "version": "2.3.6",
5522 "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz",
5523 "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==",
5524 "license": "MIT",
5525 "dependencies": {
5526 "@types/estree": "^1.0.0",
5527 "@types/hast": "^3.0.0",
5528 "@types/unist": "^3.0.0",
5529 "comma-separated-tokens": "^2.0.0",
5530 "devlop": "^1.0.0",
5531 "estree-util-is-identifier-name": "^3.0.0",
5532 "hast-util-whitespace": "^3.0.0",
5533 "mdast-util-mdx-expression": "^2.0.0",
5534 "mdast-util-mdx-jsx": "^3.0.0",
5535 "mdast-util-mdxjs-esm": "^2.0.0",
5536 "property-information": "^7.0.0",
5537 "space-separated-tokens": "^2.0.0",
5538 "style-to-js": "^1.0.0",
5539 "unist-util-position": "^5.0.0",
5540 "vfile-message": "^4.0.0"
5541 },
5542 "funding": {
5543 "type": "opencollective",
5544 "url": "https://opencollective.com/unified"
5545 }
5546 },
5547 "node_modules/hast-util-whitespace": {
5548 "version": "3.0.0",
5549 "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
5550 "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
5551 "license": "MIT",
5552 "dependencies": {
5553 "@types/hast": "^3.0.0"
5554 },
5555 "funding": {
5556 "type": "opencollective",
5557 "url": "https://opencollective.com/unified"
5558 }
5559 },
5364 "node_modules/hosted-git-info": { 5560 "node_modules/hosted-git-info": {
5365 "version": "4.1.0", 5561 "version": "4.1.0",
5366 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", 5562 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
@@ -5374,6 +5570,16 @@
5374 "node": ">=10" 5570 "node": ">=10"
5375 } 5571 }
5376 }, 5572 },
5573 "node_modules/html-url-attributes": {
5574 "version": "3.0.1",
5575 "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
5576 "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==",
5577 "license": "MIT",
5578 "funding": {
5579 "type": "opencollective",
5580 "url": "https://opencollective.com/unified"
5581 }
5582 },
5377 "node_modules/http-cache-semantics": { 5583 "node_modules/http-cache-semantics": {
5378 "version": "4.2.0", 5584 "version": "4.2.0",
5379 "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", 5585 "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
@@ -5535,6 +5741,12 @@
5535 "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 5741 "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
5536 "license": "ISC" 5742 "license": "ISC"
5537 }, 5743 },
5744 "node_modules/inline-style-parser": {
5745 "version": "0.2.7",
5746 "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
5747 "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==",
5748 "license": "MIT"
5749 },
5538 "node_modules/ip-address": { 5750 "node_modules/ip-address": {
5539 "version": "10.0.1", 5751 "version": "10.0.1",
5540 "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", 5752 "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz",
@@ -5545,6 +5757,30 @@
5545 "node": ">= 12" 5757 "node": ">= 12"
5546 } 5758 }
5547 }, 5759 },
5760 "node_modules/is-alphabetical": {
5761 "version": "2.0.1",
5762 "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
5763 "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
5764 "license": "MIT",
5765 "funding": {
5766 "type": "github",
5767 "url": "https://github.com/sponsors/wooorm"
5768 }
5769 },
5770 "node_modules/is-alphanumerical": {
5771 "version": "2.0.1",
5772 "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
5773 "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
5774 "license": "MIT",
5775 "dependencies": {
5776 "is-alphabetical": "^2.0.0",
5777 "is-decimal": "^2.0.0"
5778 },
5779 "funding": {
5780 "type": "github",
5781 "url": "https://github.com/sponsors/wooorm"
5782 }
5783 },
5548 "node_modules/is-ci": { 5784 "node_modules/is-ci": {
5549 "version": "3.0.1", 5785 "version": "3.0.1",
5550 "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", 5786 "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
@@ -5558,6 +5794,16 @@
5558 "is-ci": "bin.js" 5794 "is-ci": "bin.js"
5559 } 5795 }
5560 }, 5796 },
5797 "node_modules/is-decimal": {
5798 "version": "2.0.1",
5799 "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
5800 "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
5801 "license": "MIT",
5802 "funding": {
5803 "type": "github",
5804 "url": "https://github.com/sponsors/wooorm"
5805 }
5806 },
5561 "node_modules/is-fullwidth-code-point": { 5807 "node_modules/is-fullwidth-code-point": {
5562 "version": "3.0.0", 5808 "version": "3.0.0",
5563 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 5809 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -5568,6 +5814,16 @@
5568 "node": ">=8" 5814 "node": ">=8"
5569 } 5815 }
5570 }, 5816 },
5817 "node_modules/is-hexadecimal": {
5818 "version": "2.0.1",
5819 "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
5820 "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
5821 "license": "MIT",
5822 "funding": {
5823 "type": "github",
5824 "url": "https://github.com/sponsors/wooorm"
5825 }
5826 },
5571 "node_modules/is-interactive": { 5827 "node_modules/is-interactive": {
5572 "version": "1.0.0", 5828 "version": "1.0.0",
5573 "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", 5829 "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
@@ -5585,6 +5841,18 @@
5585 "dev": true, 5841 "dev": true,
5586 "license": "MIT" 5842 "license": "MIT"
5587 }, 5843 },
5844 "node_modules/is-plain-obj": {
5845 "version": "4.1.0",
5846 "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
5847 "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
5848 "license": "MIT",
5849 "engines": {
5850 "node": ">=12"
5851 },
5852 "funding": {
5853 "url": "https://github.com/sponsors/sindresorhus"
5854 }
5855 },
5588 "node_modules/is-unicode-supported": { 5856 "node_modules/is-unicode-supported": {
5589 "version": "0.1.0", 5857 "version": "0.1.0",
5590 "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 5858 "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
@@ -5790,6 +6058,16 @@
5790 "url": "https://github.com/sponsors/sindresorhus" 6058 "url": "https://github.com/sponsors/sindresorhus"
5791 } 6059 }
5792 }, 6060 },
6061 "node_modules/longest-streak": {
6062 "version": "3.1.0",
6063 "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
6064 "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
6065 "license": "MIT",
6066 "funding": {
6067 "type": "github",
6068 "url": "https://github.com/sponsors/wooorm"
6069 }
6070 },
5793 "node_modules/lowercase-keys": { 6071 "node_modules/lowercase-keys": {
5794 "version": "2.0.0", 6072 "version": "2.0.0",
5795 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 6073 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
@@ -5836,6 +6114,16 @@
5836 "node": "^18.17.0 || >=20.5.0" 6114 "node": "^18.17.0 || >=20.5.0"
5837 } 6115 }
5838 }, 6116 },
6117 "node_modules/markdown-table": {
6118 "version": "3.0.4",
6119 "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
6120 "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==",
6121 "license": "MIT",
6122 "funding": {
6123 "type": "github",
6124 "url": "https://github.com/sponsors/wooorm"
6125 }
6126 },
5839 "node_modules/matcher": { 6127 "node_modules/matcher": {
5840 "version": "3.0.0", 6128 "version": "3.0.0",
5841 "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", 6129 "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
@@ -5860,6 +6148,851 @@
5860 "node": ">= 0.4" 6148 "node": ">= 0.4"
5861 } 6149 }
5862 }, 6150 },
6151 "node_modules/mdast-util-find-and-replace": {
6152 "version": "3.0.2",
6153 "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
6154 "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==",
6155 "license": "MIT",
6156 "dependencies": {
6157 "@types/mdast": "^4.0.0",
6158 "escape-string-regexp": "^5.0.0",
6159 "unist-util-is": "^6.0.0",
6160 "unist-util-visit-parents": "^6.0.0"
6161 },
6162 "funding": {
6163 "type": "opencollective",
6164 "url": "https://opencollective.com/unified"
6165 }
6166 },
6167 "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
6168 "version": "5.0.0",
6169 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
6170 "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
6171 "license": "MIT",
6172 "engines": {
6173 "node": ">=12"
6174 },
6175 "funding": {
6176 "url": "https://github.com/sponsors/sindresorhus"
6177 }
6178 },
6179 "node_modules/mdast-util-from-markdown": {
6180 "version": "2.0.3",
6181 "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz",
6182 "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==",
6183 "license": "MIT",
6184 "dependencies": {
6185 "@types/mdast": "^4.0.0",
6186 "@types/unist": "^3.0.0",
6187 "decode-named-character-reference": "^1.0.0",
6188 "devlop": "^1.0.0",
6189 "mdast-util-to-string": "^4.0.0",
6190 "micromark": "^4.0.0",
6191 "micromark-util-decode-numeric-character-reference": "^2.0.0",
6192 "micromark-util-decode-string": "^2.0.0",
6193 "micromark-util-normalize-identifier": "^2.0.0",
6194 "micromark-util-symbol": "^2.0.0",
6195 "micromark-util-types": "^2.0.0",
6196 "unist-util-stringify-position": "^4.0.0"
6197 },
6198 "funding": {
6199 "type": "opencollective",
6200 "url": "https://opencollective.com/unified"
6201 }
6202 },
6203 "node_modules/mdast-util-gfm": {
6204 "version": "3.1.0",
6205 "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz",
6206 "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==",
6207 "license": "MIT",
6208 "dependencies": {
6209 "mdast-util-from-markdown": "^2.0.0",
6210 "mdast-util-gfm-autolink-literal": "^2.0.0",
6211 "mdast-util-gfm-footnote": "^2.0.0",
6212 "mdast-util-gfm-strikethrough": "^2.0.0",
6213 "mdast-util-gfm-table": "^2.0.0",
6214 "mdast-util-gfm-task-list-item": "^2.0.0",
6215 "mdast-util-to-markdown": "^2.0.0"
6216 },
6217 "funding": {
6218 "type": "opencollective",
6219 "url": "https://opencollective.com/unified"
6220 }
6221 },
6222 "node_modules/mdast-util-gfm-autolink-literal": {
6223 "version": "2.0.1",
6224 "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz",
6225 "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==",
6226 "license": "MIT",
6227 "dependencies": {
6228 "@types/mdast": "^4.0.0",
6229 "ccount": "^2.0.0",
6230 "devlop": "^1.0.0",
6231 "mdast-util-find-and-replace": "^3.0.0",
6232 "micromark-util-character": "^2.0.0"
6233 },
6234 "funding": {
6235 "type": "opencollective",
6236 "url": "https://opencollective.com/unified"
6237 }
6238 },
6239 "node_modules/mdast-util-gfm-footnote": {
6240 "version": "2.1.0",
6241 "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz",
6242 "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==",
6243 "license": "MIT",
6244 "dependencies": {
6245 "@types/mdast": "^4.0.0",
6246 "devlop": "^1.1.0",
6247 "mdast-util-from-markdown": "^2.0.0",
6248 "mdast-util-to-markdown": "^2.0.0",
6249 "micromark-util-normalize-identifier": "^2.0.0"
6250 },
6251 "funding": {
6252 "type": "opencollective",
6253 "url": "https://opencollective.com/unified"
6254 }
6255 },
6256 "node_modules/mdast-util-gfm-strikethrough": {
6257 "version": "2.0.0",
6258 "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
6259 "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
6260 "license": "MIT",
6261 "dependencies": {
6262 "@types/mdast": "^4.0.0",
6263 "mdast-util-from-markdown": "^2.0.0",
6264 "mdast-util-to-markdown": "^2.0.0"
6265 },
6266 "funding": {
6267 "type": "opencollective",
6268 "url": "https://opencollective.com/unified"
6269 }
6270 },
6271 "node_modules/mdast-util-gfm-table": {
6272 "version": "2.0.0",
6273 "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
6274 "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
6275 "license": "MIT",
6276 "dependencies": {
6277 "@types/mdast": "^4.0.0",
6278 "devlop": "^1.0.0",
6279 "markdown-table": "^3.0.0",
6280 "mdast-util-from-markdown": "^2.0.0",
6281 "mdast-util-to-markdown": "^2.0.0"
6282 },
6283 "funding": {
6284 "type": "opencollective",
6285 "url": "https://opencollective.com/unified"
6286 }
6287 },
6288 "node_modules/mdast-util-gfm-task-list-item": {
6289 "version": "2.0.0",
6290 "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
6291 "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
6292 "license": "MIT",
6293 "dependencies": {
6294 "@types/mdast": "^4.0.0",
6295 "devlop": "^1.0.0",
6296 "mdast-util-from-markdown": "^2.0.0",
6297 "mdast-util-to-markdown": "^2.0.0"
6298 },
6299 "funding": {
6300 "type": "opencollective",
6301 "url": "https://opencollective.com/unified"
6302 }
6303 },
6304 "node_modules/mdast-util-mdx-expression": {
6305 "version": "2.0.1",
6306 "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
6307 "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
6308 "license": "MIT",
6309 "dependencies": {
6310 "@types/estree-jsx": "^1.0.0",
6311 "@types/hast": "^3.0.0",
6312 "@types/mdast": "^4.0.0",
6313 "devlop": "^1.0.0",
6314 "mdast-util-from-markdown": "^2.0.0",
6315 "mdast-util-to-markdown": "^2.0.0"
6316 },
6317 "funding": {
6318 "type": "opencollective",
6319 "url": "https://opencollective.com/unified"
6320 }
6321 },
6322 "node_modules/mdast-util-mdx-jsx": {
6323 "version": "3.2.0",
6324 "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
6325 "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
6326 "license": "MIT",
6327 "dependencies": {
6328 "@types/estree-jsx": "^1.0.0",
6329 "@types/hast": "^3.0.0",
6330 "@types/mdast": "^4.0.0",
6331 "@types/unist": "^3.0.0",
6332 "ccount": "^2.0.0",
6333 "devlop": "^1.1.0",
6334 "mdast-util-from-markdown": "^2.0.0",
6335 "mdast-util-to-markdown": "^2.0.0",
6336 "parse-entities": "^4.0.0",
6337 "stringify-entities": "^4.0.0",
6338 "unist-util-stringify-position": "^4.0.0",
6339 "vfile-message": "^4.0.0"
6340 },
6341 "funding": {
6342 "type": "opencollective",
6343 "url": "https://opencollective.com/unified"
6344 }
6345 },
6346 "node_modules/mdast-util-mdxjs-esm": {
6347 "version": "2.0.1",
6348 "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
6349 "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
6350 "license": "MIT",
6351 "dependencies": {
6352 "@types/estree-jsx": "^1.0.0",
6353 "@types/hast": "^3.0.0",
6354 "@types/mdast": "^4.0.0",
6355 "devlop": "^1.0.0",
6356 "mdast-util-from-markdown": "^2.0.0",
6357 "mdast-util-to-markdown": "^2.0.0"
6358 },
6359 "funding": {
6360 "type": "opencollective",
6361 "url": "https://opencollective.com/unified"
6362 }
6363 },
6364 "node_modules/mdast-util-phrasing": {
6365 "version": "4.1.0",
6366 "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
6367 "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
6368 "license": "MIT",
6369 "dependencies": {
6370 "@types/mdast": "^4.0.0",
6371 "unist-util-is": "^6.0.0"
6372 },
6373 "funding": {
6374 "type": "opencollective",
6375 "url": "https://opencollective.com/unified"
6376 }
6377 },
6378 "node_modules/mdast-util-to-hast": {
6379 "version": "13.2.1",
6380 "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
6381 "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
6382 "license": "MIT",
6383 "dependencies": {
6384 "@types/hast": "^3.0.0",
6385 "@types/mdast": "^4.0.0",
6386 "@ungap/structured-clone": "^1.0.0",
6387 "devlop": "^1.0.0",
6388 "micromark-util-sanitize-uri": "^2.0.0",
6389 "trim-lines": "^3.0.0",
6390 "unist-util-position": "^5.0.0",
6391 "unist-util-visit": "^5.0.0",
6392 "vfile": "^6.0.0"
6393 },
6394 "funding": {
6395 "type": "opencollective",
6396 "url": "https://opencollective.com/unified"
6397 }
6398 },
6399 "node_modules/mdast-util-to-markdown": {
6400 "version": "2.1.2",
6401 "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
6402 "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
6403 "license": "MIT",
6404 "dependencies": {
6405 "@types/mdast": "^4.0.0",
6406 "@types/unist": "^3.0.0",
6407 "longest-streak": "^3.0.0",
6408 "mdast-util-phrasing": "^4.0.0",
6409 "mdast-util-to-string": "^4.0.0",
6410 "micromark-util-classify-character": "^2.0.0",
6411 "micromark-util-decode-string": "^2.0.0",
6412 "unist-util-visit": "^5.0.0",
6413 "zwitch": "^2.0.0"
6414 },
6415 "funding": {
6416 "type": "opencollective",
6417 "url": "https://opencollective.com/unified"
6418 }
6419 },
6420 "node_modules/mdast-util-to-string": {
6421 "version": "4.0.0",
6422 "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
6423 "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
6424 "license": "MIT",
6425 "dependencies": {
6426 "@types/mdast": "^4.0.0"
6427 },
6428 "funding": {
6429 "type": "opencollective",
6430 "url": "https://opencollective.com/unified"
6431 }
6432 },
6433 "node_modules/micromark": {
6434 "version": "4.0.2",
6435 "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
6436 "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
6437 "funding": [
6438 {
6439 "type": "GitHub Sponsors",
6440 "url": "https://github.com/sponsors/unifiedjs"
6441 },
6442 {
6443 "type": "OpenCollective",
6444 "url": "https://opencollective.com/unified"
6445 }
6446 ],
6447 "license": "MIT",
6448 "dependencies": {
6449 "@types/debug": "^4.0.0",
6450 "debug": "^4.0.0",
6451 "decode-named-character-reference": "^1.0.0",
6452 "devlop": "^1.0.0",
6453 "micromark-core-commonmark": "^2.0.0",
6454 "micromark-factory-space": "^2.0.0",
6455 "micromark-util-character": "^2.0.0",
6456 "micromark-util-chunked": "^2.0.0",
6457 "micromark-util-combine-extensions": "^2.0.0",
6458 "micromark-util-decode-numeric-character-reference": "^2.0.0",
6459 "micromark-util-encode": "^2.0.0",
6460 "micromark-util-normalize-identifier": "^2.0.0",
6461 "micromark-util-resolve-all": "^2.0.0",
6462 "micromark-util-sanitize-uri": "^2.0.0",
6463 "micromark-util-subtokenize": "^2.0.0",
6464 "micromark-util-symbol": "^2.0.0",
6465 "micromark-util-types": "^2.0.0"
6466 }
6467 },
6468 "node_modules/micromark-core-commonmark": {
6469 "version": "2.0.3",
6470 "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
6471 "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
6472 "funding": [
6473 {
6474 "type": "GitHub Sponsors",
6475 "url": "https://github.com/sponsors/unifiedjs"
6476 },
6477 {
6478 "type": "OpenCollective",
6479 "url": "https://opencollective.com/unified"
6480 }
6481 ],
6482 "license": "MIT",
6483 "dependencies": {
6484 "decode-named-character-reference": "^1.0.0",
6485 "devlop": "^1.0.0",
6486 "micromark-factory-destination": "^2.0.0",
6487 "micromark-factory-label": "^2.0.0",
6488 "micromark-factory-space": "^2.0.0",
6489 "micromark-factory-title": "^2.0.0",
6490 "micromark-factory-whitespace": "^2.0.0",
6491 "micromark-util-character": "^2.0.0",
6492 "micromark-util-chunked": "^2.0.0",
6493 "micromark-util-classify-character": "^2.0.0",
6494 "micromark-util-html-tag-name": "^2.0.0",
6495 "micromark-util-normalize-identifier": "^2.0.0",
6496 "micromark-util-resolve-all": "^2.0.0",
6497 "micromark-util-subtokenize": "^2.0.0",
6498 "micromark-util-symbol": "^2.0.0",
6499 "micromark-util-types": "^2.0.0"
6500 }
6501 },
6502 "node_modules/micromark-extension-gfm": {
6503 "version": "3.0.0",
6504 "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
6505 "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
6506 "license": "MIT",
6507 "dependencies": {
6508 "micromark-extension-gfm-autolink-literal": "^2.0.0",
6509 "micromark-extension-gfm-footnote": "^2.0.0",
6510 "micromark-extension-gfm-strikethrough": "^2.0.0",
6511 "micromark-extension-gfm-table": "^2.0.0",
6512 "micromark-extension-gfm-tagfilter": "^2.0.0",
6513 "micromark-extension-gfm-task-list-item": "^2.0.0",
6514 "micromark-util-combine-extensions": "^2.0.0",
6515 "micromark-util-types": "^2.0.0"
6516 },
6517 "funding": {
6518 "type": "opencollective",
6519 "url": "https://opencollective.com/unified"
6520 }
6521 },
6522 "node_modules/micromark-extension-gfm-autolink-literal": {
6523 "version": "2.1.0",
6524 "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
6525 "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
6526 "license": "MIT",
6527 "dependencies": {
6528 "micromark-util-character": "^2.0.0",
6529 "micromark-util-sanitize-uri": "^2.0.0",
6530 "micromark-util-symbol": "^2.0.0",
6531 "micromark-util-types": "^2.0.0"
6532 },
6533 "funding": {
6534 "type": "opencollective",
6535 "url": "https://opencollective.com/unified"
6536 }
6537 },
6538 "node_modules/micromark-extension-gfm-footnote": {
6539 "version": "2.1.0",
6540 "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
6541 "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
6542 "license": "MIT",
6543 "dependencies": {
6544 "devlop": "^1.0.0",
6545 "micromark-core-commonmark": "^2.0.0",
6546 "micromark-factory-space": "^2.0.0",
6547 "micromark-util-character": "^2.0.0",
6548 "micromark-util-normalize-identifier": "^2.0.0",
6549 "micromark-util-sanitize-uri": "^2.0.0",
6550 "micromark-util-symbol": "^2.0.0",
6551 "micromark-util-types": "^2.0.0"
6552 },
6553 "funding": {
6554 "type": "opencollective",
6555 "url": "https://opencollective.com/unified"
6556 }
6557 },
6558 "node_modules/micromark-extension-gfm-strikethrough": {
6559 "version": "2.1.0",
6560 "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
6561 "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
6562 "license": "MIT",
6563 "dependencies": {
6564 "devlop": "^1.0.0",
6565 "micromark-util-chunked": "^2.0.0",
6566 "micromark-util-classify-character": "^2.0.0",
6567 "micromark-util-resolve-all": "^2.0.0",
6568 "micromark-util-symbol": "^2.0.0",
6569 "micromark-util-types": "^2.0.0"
6570 },
6571 "funding": {
6572 "type": "opencollective",
6573 "url": "https://opencollective.com/unified"
6574 }
6575 },
6576 "node_modules/micromark-extension-gfm-table": {
6577 "version": "2.1.1",
6578 "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
6579 "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
6580 "license": "MIT",
6581 "dependencies": {
6582 "devlop": "^1.0.0",
6583 "micromark-factory-space": "^2.0.0",
6584 "micromark-util-character": "^2.0.0",
6585 "micromark-util-symbol": "^2.0.0",
6586 "micromark-util-types": "^2.0.0"
6587 },
6588 "funding": {
6589 "type": "opencollective",
6590 "url": "https://opencollective.com/unified"
6591 }
6592 },
6593 "node_modules/micromark-extension-gfm-tagfilter": {
6594 "version": "2.0.0",
6595 "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
6596 "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
6597 "license": "MIT",
6598 "dependencies": {
6599 "micromark-util-types": "^2.0.0"
6600 },
6601 "funding": {
6602 "type": "opencollective",
6603 "url": "https://opencollective.com/unified"
6604 }
6605 },
6606 "node_modules/micromark-extension-gfm-task-list-item": {
6607 "version": "2.1.0",
6608 "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
6609 "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
6610 "license": "MIT",
6611 "dependencies": {
6612 "devlop": "^1.0.0",
6613 "micromark-factory-space": "^2.0.0",
6614 "micromark-util-character": "^2.0.0",
6615 "micromark-util-symbol": "^2.0.0",
6616 "micromark-util-types": "^2.0.0"
6617 },
6618 "funding": {
6619 "type": "opencollective",
6620 "url": "https://opencollective.com/unified"
6621 }
6622 },
6623 "node_modules/micromark-factory-destination": {
6624 "version": "2.0.1",
6625 "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
6626 "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
6627 "funding": [
6628 {
6629 "type": "GitHub Sponsors",
6630 "url": "https://github.com/sponsors/unifiedjs"
6631 },
6632 {
6633 "type": "OpenCollective",
6634 "url": "https://opencollective.com/unified"
6635 }
6636 ],
6637 "license": "MIT",
6638 "dependencies": {
6639 "micromark-util-character": "^2.0.0",
6640 "micromark-util-symbol": "^2.0.0",
6641 "micromark-util-types": "^2.0.0"
6642 }
6643 },
6644 "node_modules/micromark-factory-label": {
6645 "version": "2.0.1",
6646 "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
6647 "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
6648 "funding": [
6649 {
6650 "type": "GitHub Sponsors",
6651 "url": "https://github.com/sponsors/unifiedjs"
6652 },
6653 {
6654 "type": "OpenCollective",
6655 "url": "https://opencollective.com/unified"
6656 }
6657 ],
6658 "license": "MIT",
6659 "dependencies": {
6660 "devlop": "^1.0.0",
6661 "micromark-util-character": "^2.0.0",
6662 "micromark-util-symbol": "^2.0.0",
6663 "micromark-util-types": "^2.0.0"
6664 }
6665 },
6666 "node_modules/micromark-factory-space": {
6667 "version": "2.0.1",
6668 "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
6669 "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
6670 "funding": [
6671 {
6672 "type": "GitHub Sponsors",
6673 "url": "https://github.com/sponsors/unifiedjs"
6674 },
6675 {
6676 "type": "OpenCollective",
6677 "url": "https://opencollective.com/unified"
6678 }
6679 ],
6680 "license": "MIT",
6681 "dependencies": {
6682 "micromark-util-character": "^2.0.0",
6683 "micromark-util-types": "^2.0.0"
6684 }
6685 },
6686 "node_modules/micromark-factory-title": {
6687 "version": "2.0.1",
6688 "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
6689 "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
6690 "funding": [
6691 {
6692 "type": "GitHub Sponsors",
6693 "url": "https://github.com/sponsors/unifiedjs"
6694 },
6695 {
6696 "type": "OpenCollective",
6697 "url": "https://opencollective.com/unified"
6698 }
6699 ],
6700 "license": "MIT",
6701 "dependencies": {
6702 "micromark-factory-space": "^2.0.0",
6703 "micromark-util-character": "^2.0.0",
6704 "micromark-util-symbol": "^2.0.0",
6705 "micromark-util-types": "^2.0.0"
6706 }
6707 },
6708 "node_modules/micromark-factory-whitespace": {
6709 "version": "2.0.1",
6710 "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
6711 "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
6712 "funding": [
6713 {
6714 "type": "GitHub Sponsors",
6715 "url": "https://github.com/sponsors/unifiedjs"
6716 },
6717 {
6718 "type": "OpenCollective",
6719 "url": "https://opencollective.com/unified"
6720 }
6721 ],
6722 "license": "MIT",
6723 "dependencies": {
6724 "micromark-factory-space": "^2.0.0",
6725 "micromark-util-character": "^2.0.0",
6726 "micromark-util-symbol": "^2.0.0",
6727 "micromark-util-types": "^2.0.0"
6728 }
6729 },
6730 "node_modules/micromark-util-character": {
6731 "version": "2.1.1",
6732 "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
6733 "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
6734 "funding": [
6735 {
6736 "type": "GitHub Sponsors",
6737 "url": "https://github.com/sponsors/unifiedjs"
6738 },
6739 {
6740 "type": "OpenCollective",
6741 "url": "https://opencollective.com/unified"
6742 }
6743 ],
6744 "license": "MIT",
6745 "dependencies": {
6746 "micromark-util-symbol": "^2.0.0",
6747 "micromark-util-types": "^2.0.0"
6748 }
6749 },
6750 "node_modules/micromark-util-chunked": {
6751 "version": "2.0.1",
6752 "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
6753 "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
6754 "funding": [
6755 {
6756 "type": "GitHub Sponsors",
6757 "url": "https://github.com/sponsors/unifiedjs"
6758 },
6759 {
6760 "type": "OpenCollective",
6761 "url": "https://opencollective.com/unified"
6762 }
6763 ],
6764 "license": "MIT",
6765 "dependencies": {
6766 "micromark-util-symbol": "^2.0.0"
6767 }
6768 },
6769 "node_modules/micromark-util-classify-character": {
6770 "version": "2.0.1",
6771 "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
6772 "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
6773 "funding": [
6774 {
6775 "type": "GitHub Sponsors",
6776 "url": "https://github.com/sponsors/unifiedjs"
6777 },
6778 {
6779 "type": "OpenCollective",
6780 "url": "https://opencollective.com/unified"
6781 }
6782 ],
6783 "license": "MIT",
6784 "dependencies": {
6785 "micromark-util-character": "^2.0.0",
6786 "micromark-util-symbol": "^2.0.0",
6787 "micromark-util-types": "^2.0.0"
6788 }
6789 },
6790 "node_modules/micromark-util-combine-extensions": {
6791 "version": "2.0.1",
6792 "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
6793 "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
6794 "funding": [
6795 {
6796 "type": "GitHub Sponsors",
6797 "url": "https://github.com/sponsors/unifiedjs"
6798 },
6799 {
6800 "type": "OpenCollective",
6801 "url": "https://opencollective.com/unified"
6802 }
6803 ],
6804 "license": "MIT",
6805 "dependencies": {
6806 "micromark-util-chunked": "^2.0.0",
6807 "micromark-util-types": "^2.0.0"
6808 }
6809 },
6810 "node_modules/micromark-util-decode-numeric-character-reference": {
6811 "version": "2.0.2",
6812 "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
6813 "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
6814 "funding": [
6815 {
6816 "type": "GitHub Sponsors",
6817 "url": "https://github.com/sponsors/unifiedjs"
6818 },
6819 {
6820 "type": "OpenCollective",
6821 "url": "https://opencollective.com/unified"
6822 }
6823 ],
6824 "license": "MIT",
6825 "dependencies": {
6826 "micromark-util-symbol": "^2.0.0"
6827 }
6828 },
6829 "node_modules/micromark-util-decode-string": {
6830 "version": "2.0.1",
6831 "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
6832 "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
6833 "funding": [
6834 {
6835 "type": "GitHub Sponsors",
6836 "url": "https://github.com/sponsors/unifiedjs"
6837 },
6838 {
6839 "type": "OpenCollective",
6840 "url": "https://opencollective.com/unified"
6841 }
6842 ],
6843 "license": "MIT",
6844 "dependencies": {
6845 "decode-named-character-reference": "^1.0.0",
6846 "micromark-util-character": "^2.0.0",
6847 "micromark-util-decode-numeric-character-reference": "^2.0.0",
6848 "micromark-util-symbol": "^2.0.0"
6849 }
6850 },
6851 "node_modules/micromark-util-encode": {
6852 "version": "2.0.1",
6853 "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
6854 "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
6855 "funding": [
6856 {
6857 "type": "GitHub Sponsors",
6858 "url": "https://github.com/sponsors/unifiedjs"
6859 },
6860 {
6861 "type": "OpenCollective",
6862 "url": "https://opencollective.com/unified"
6863 }
6864 ],
6865 "license": "MIT"
6866 },
6867 "node_modules/micromark-util-html-tag-name": {
6868 "version": "2.0.1",
6869 "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
6870 "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
6871 "funding": [
6872 {
6873 "type": "GitHub Sponsors",
6874 "url": "https://github.com/sponsors/unifiedjs"
6875 },
6876 {
6877 "type": "OpenCollective",
6878 "url": "https://opencollective.com/unified"
6879 }
6880 ],
6881 "license": "MIT"
6882 },
6883 "node_modules/micromark-util-normalize-identifier": {
6884 "version": "2.0.1",
6885 "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
6886 "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
6887 "funding": [
6888 {
6889 "type": "GitHub Sponsors",
6890 "url": "https://github.com/sponsors/unifiedjs"
6891 },
6892 {
6893 "type": "OpenCollective",
6894 "url": "https://opencollective.com/unified"
6895 }
6896 ],
6897 "license": "MIT",
6898 "dependencies": {
6899 "micromark-util-symbol": "^2.0.0"
6900 }
6901 },
6902 "node_modules/micromark-util-resolve-all": {
6903 "version": "2.0.1",
6904 "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
6905 "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
6906 "funding": [
6907 {
6908 "type": "GitHub Sponsors",
6909 "url": "https://github.com/sponsors/unifiedjs"
6910 },
6911 {
6912 "type": "OpenCollective",
6913 "url": "https://opencollective.com/unified"
6914 }
6915 ],
6916 "license": "MIT",
6917 "dependencies": {
6918 "micromark-util-types": "^2.0.0"
6919 }
6920 },
6921 "node_modules/micromark-util-sanitize-uri": {
6922 "version": "2.0.1",
6923 "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
6924 "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
6925 "funding": [
6926 {
6927 "type": "GitHub Sponsors",
6928 "url": "https://github.com/sponsors/unifiedjs"
6929 },
6930 {
6931 "type": "OpenCollective",
6932 "url": "https://opencollective.com/unified"
6933 }
6934 ],
6935 "license": "MIT",
6936 "dependencies": {
6937 "micromark-util-character": "^2.0.0",
6938 "micromark-util-encode": "^2.0.0",
6939 "micromark-util-symbol": "^2.0.0"
6940 }
6941 },
6942 "node_modules/micromark-util-subtokenize": {
6943 "version": "2.1.0",
6944 "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
6945 "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
6946 "funding": [
6947 {
6948 "type": "GitHub Sponsors",
6949 "url": "https://github.com/sponsors/unifiedjs"
6950 },
6951 {
6952 "type": "OpenCollective",
6953 "url": "https://opencollective.com/unified"
6954 }
6955 ],
6956 "license": "MIT",
6957 "dependencies": {
6958 "devlop": "^1.0.0",
6959 "micromark-util-chunked": "^2.0.0",
6960 "micromark-util-symbol": "^2.0.0",
6961 "micromark-util-types": "^2.0.0"
6962 }
6963 },
6964 "node_modules/micromark-util-symbol": {
6965 "version": "2.0.1",
6966 "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
6967 "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
6968 "funding": [
6969 {
6970 "type": "GitHub Sponsors",
6971 "url": "https://github.com/sponsors/unifiedjs"
6972 },
6973 {
6974 "type": "OpenCollective",
6975 "url": "https://opencollective.com/unified"
6976 }
6977 ],
6978 "license": "MIT"
6979 },
6980 "node_modules/micromark-util-types": {
6981 "version": "2.0.2",
6982 "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
6983 "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
6984 "funding": [
6985 {
6986 "type": "GitHub Sponsors",
6987 "url": "https://github.com/sponsors/unifiedjs"
6988 },
6989 {
6990 "type": "OpenCollective",
6991 "url": "https://opencollective.com/unified"
6992 }
6993 ],
6994 "license": "MIT"
6995 },
5863 "node_modules/mime": { 6996 "node_modules/mime": {
5864 "version": "2.6.0", 6997 "version": "2.6.0",
5865 "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", 6998 "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
@@ -6096,7 +7229,6 @@
6096 "version": "2.1.3", 7229 "version": "2.1.3",
6097 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 7230 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
6098 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 7231 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
6099 "dev": true,
6100 "license": "MIT" 7232 "license": "MIT"
6101 }, 7233 },
6102 "node_modules/nanoid": { 7234 "node_modules/nanoid": {
@@ -6449,6 +7581,31 @@
6449 "dev": true, 7581 "dev": true,
6450 "license": "BlueOak-1.0.0" 7582 "license": "BlueOak-1.0.0"
6451 }, 7583 },
7584 "node_modules/parse-entities": {
7585 "version": "4.0.2",
7586 "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
7587 "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
7588 "license": "MIT",
7589 "dependencies": {
7590 "@types/unist": "^2.0.0",
7591 "character-entities-legacy": "^3.0.0",
7592 "character-reference-invalid": "^2.0.0",
7593 "decode-named-character-reference": "^1.0.0",
7594 "is-alphanumerical": "^2.0.0",
7595 "is-decimal": "^2.0.0",
7596 "is-hexadecimal": "^2.0.0"
7597 },
7598 "funding": {
7599 "type": "github",
7600 "url": "https://github.com/sponsors/wooorm"
7601 }
7602 },
7603 "node_modules/parse-entities/node_modules/@types/unist": {
7604 "version": "2.0.11",
7605 "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
7606 "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
7607 "license": "MIT"
7608 },
6452 "node_modules/path-is-absolute": { 7609 "node_modules/path-is-absolute": {
6453 "version": "1.0.1", 7610 "version": "1.0.1",
6454 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 7611 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -6676,6 +7833,16 @@
6676 "node": ">=10" 7833 "node": ">=10"
6677 } 7834 }
6678 }, 7835 },
7836 "node_modules/property-information": {
7837 "version": "7.1.0",
7838 "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
7839 "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
7840 "license": "MIT",
7841 "funding": {
7842 "type": "github",
7843 "url": "https://github.com/sponsors/wooorm"
7844 }
7845 },
6679 "node_modules/proxy-from-env": { 7846 "node_modules/proxy-from-env": {
6680 "version": "1.1.0", 7847 "version": "1.1.0",
6681 "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 7848 "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
@@ -6752,6 +7919,33 @@
6752 "react": "^19.1.1" 7919 "react": "^19.1.1"
6753 } 7920 }
6754 }, 7921 },
7922 "node_modules/react-markdown": {
7923 "version": "10.1.0",
7924 "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz",
7925 "integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==",
7926 "license": "MIT",
7927 "dependencies": {
7928 "@types/hast": "^3.0.0",
7929 "@types/mdast": "^4.0.0",
7930 "devlop": "^1.0.0",
7931 "hast-util-to-jsx-runtime": "^2.0.0",
7932 "html-url-attributes": "^3.0.0",
7933 "mdast-util-to-hast": "^13.0.0",
7934 "remark-parse": "^11.0.0",
7935 "remark-rehype": "^11.0.0",
7936 "unified": "^11.0.0",
7937 "unist-util-visit": "^5.0.0",
7938 "vfile": "^6.0.0"
7939 },
7940 "funding": {
7941 "type": "opencollective",
7942 "url": "https://opencollective.com/unified"
7943 },
7944 "peerDependencies": {
7945 "@types/react": ">=18",
7946 "react": ">=18"
7947 }
7948 },
6755 "node_modules/react-refresh": { 7949 "node_modules/react-refresh": {
6756 "version": "0.17.0", 7950 "version": "0.17.0",
6757 "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", 7951 "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
@@ -6789,6 +7983,72 @@
6789 "node": ">= 6" 7983 "node": ">= 6"
6790 } 7984 }
6791 }, 7985 },
7986 "node_modules/remark-gfm": {
7987 "version": "4.0.1",
7988 "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz",
7989 "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==",
7990 "license": "MIT",
7991 "dependencies": {
7992 "@types/mdast": "^4.0.0",
7993 "mdast-util-gfm": "^3.0.0",
7994 "micromark-extension-gfm": "^3.0.0",
7995 "remark-parse": "^11.0.0",
7996 "remark-stringify": "^11.0.0",
7997 "unified": "^11.0.0"
7998 },
7999 "funding": {
8000 "type": "opencollective",
8001 "url": "https://opencollective.com/unified"
8002 }
8003 },
8004 "node_modules/remark-parse": {
8005 "version": "11.0.0",
8006 "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
8007 "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
8008 "license": "MIT",
8009 "dependencies": {
8010 "@types/mdast": "^4.0.0",
8011 "mdast-util-from-markdown": "^2.0.0",
8012 "micromark-util-types": "^2.0.0",
8013 "unified": "^11.0.0"
8014 },
8015 "funding": {
8016 "type": "opencollective",
8017 "url": "https://opencollective.com/unified"
8018 }
8019 },
8020 "node_modules/remark-rehype": {
8021 "version": "11.1.2",
8022 "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz",
8023 "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==",
8024 "license": "MIT",
8025 "dependencies": {
8026 "@types/hast": "^3.0.0",
8027 "@types/mdast": "^4.0.0",
8028 "mdast-util-to-hast": "^13.0.0",
8029 "unified": "^11.0.0",
8030 "vfile": "^6.0.0"
8031 },
8032 "funding": {
8033 "type": "opencollective",
8034 "url": "https://opencollective.com/unified"
8035 }
8036 },
8037 "node_modules/remark-stringify": {
8038 "version": "11.0.0",
8039 "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
8040 "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
8041 "license": "MIT",
8042 "dependencies": {
8043 "@types/mdast": "^4.0.0",
8044 "mdast-util-to-markdown": "^2.0.0",
8045 "unified": "^11.0.0"
8046 },
8047 "funding": {
8048 "type": "opencollective",
8049 "url": "https://opencollective.com/unified"
8050 }
8051 },
6792 "node_modules/require-directory": { 8052 "node_modules/require-directory": {
6793 "version": "2.1.1", 8053 "version": "2.1.1",
6794 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 8054 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -7233,6 +8493,16 @@
7233 "source-map": "^0.6.0" 8493 "source-map": "^0.6.0"
7234 } 8494 }
7235 }, 8495 },
8496 "node_modules/space-separated-tokens": {
8497 "version": "2.0.2",
8498 "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
8499 "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
8500 "license": "MIT",
8501 "funding": {
8502 "type": "github",
8503 "url": "https://github.com/sponsors/wooorm"
8504 }
8505 },
7236 "node_modules/sprintf-js": { 8506 "node_modules/sprintf-js": {
7237 "version": "1.1.3", 8507 "version": "1.1.3",
7238 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", 8508 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
@@ -7304,6 +8574,20 @@
7304 "node": ">=8" 8574 "node": ">=8"
7305 } 8575 }
7306 }, 8576 },
8577 "node_modules/stringify-entities": {
8578 "version": "4.0.4",
8579 "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
8580 "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
8581 "license": "MIT",
8582 "dependencies": {
8583 "character-entities-html4": "^2.0.0",
8584 "character-entities-legacy": "^3.0.0"
8585 },
8586 "funding": {
8587 "type": "github",
8588 "url": "https://github.com/sponsors/wooorm"
8589 }
8590 },
7307 "node_modules/strip-ansi": { 8591 "node_modules/strip-ansi": {
7308 "version": "6.0.1", 8592 "version": "6.0.1",
7309 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 8593 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -7340,6 +8624,24 @@
7340 "node": ">=0.10.0" 8624 "node": ">=0.10.0"
7341 } 8625 }
7342 }, 8626 },
8627 "node_modules/style-to-js": {
8628 "version": "1.1.21",
8629 "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz",
8630 "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==",
8631 "license": "MIT",
8632 "dependencies": {
8633 "style-to-object": "1.0.14"
8634 }
8635 },
8636 "node_modules/style-to-object": {
8637 "version": "1.0.14",
8638 "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz",
8639 "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==",
8640 "license": "MIT",
8641 "dependencies": {
8642 "inline-style-parser": "0.2.7"
8643 }
8644 },
7343 "node_modules/sumchecker": { 8645 "node_modules/sumchecker": {
7344 "version": "3.0.1", 8646 "version": "3.0.1",
7345 "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", 8647 "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
@@ -7630,6 +8932,26 @@
7630 "tree-kill": "cli.js" 8932 "tree-kill": "cli.js"
7631 } 8933 }
7632 }, 8934 },
8935 "node_modules/trim-lines": {
8936 "version": "3.0.1",
8937 "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
8938 "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
8939 "license": "MIT",
8940 "funding": {
8941 "type": "github",
8942 "url": "https://github.com/sponsors/wooorm"
8943 }
8944 },
8945 "node_modules/trough": {
8946 "version": "2.2.0",
8947 "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
8948 "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
8949 "license": "MIT",
8950 "funding": {
8951 "type": "github",
8952 "url": "https://github.com/sponsors/wooorm"
8953 }
8954 },
7633 "node_modules/truncate-utf8-bytes": { 8955 "node_modules/truncate-utf8-bytes": {
7634 "version": "1.0.2", 8956 "version": "1.0.2",
7635 "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", 8957 "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
@@ -7694,6 +9016,25 @@
7694 "dev": true, 9016 "dev": true,
7695 "license": "MIT" 9017 "license": "MIT"
7696 }, 9018 },
9019 "node_modules/unified": {
9020 "version": "11.0.5",
9021 "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
9022 "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
9023 "license": "MIT",
9024 "dependencies": {
9025 "@types/unist": "^3.0.0",
9026 "bail": "^2.0.0",
9027 "devlop": "^1.0.0",
9028 "extend": "^3.0.0",
9029 "is-plain-obj": "^4.0.0",
9030 "trough": "^2.0.0",
9031 "vfile": "^6.0.0"
9032 },
9033 "funding": {
9034 "type": "opencollective",
9035 "url": "https://opencollective.com/unified"
9036 }
9037 },
7697 "node_modules/unique-filename": { 9038 "node_modules/unique-filename": {
7698 "version": "4.0.0", 9039 "version": "4.0.0",
7699 "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz", 9040 "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz",
@@ -7720,6 +9061,74 @@
7720 "node": "^18.17.0 || >=20.5.0" 9061 "node": "^18.17.0 || >=20.5.0"
7721 } 9062 }
7722 }, 9063 },
9064 "node_modules/unist-util-is": {
9065 "version": "6.0.1",
9066 "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz",
9067 "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==",
9068 "license": "MIT",
9069 "dependencies": {
9070 "@types/unist": "^3.0.0"
9071 },
9072 "funding": {
9073 "type": "opencollective",
9074 "url": "https://opencollective.com/unified"
9075 }
9076 },
9077 "node_modules/unist-util-position": {
9078 "version": "5.0.0",
9079 "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
9080 "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
9081 "license": "MIT",
9082 "dependencies": {
9083 "@types/unist": "^3.0.0"
9084 },
9085 "funding": {
9086 "type": "opencollective",
9087 "url": "https://opencollective.com/unified"
9088 }
9089 },
9090 "node_modules/unist-util-stringify-position": {
9091 "version": "4.0.0",
9092 "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
9093 "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
9094 "license": "MIT",
9095 "dependencies": {
9096 "@types/unist": "^3.0.0"
9097 },
9098 "funding": {
9099 "type": "opencollective",
9100 "url": "https://opencollective.com/unified"
9101 }
9102 },
9103 "node_modules/unist-util-visit": {
9104 "version": "5.1.0",
9105 "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz",
9106 "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==",
9107 "license": "MIT",
9108 "dependencies": {
9109 "@types/unist": "^3.0.0",
9110 "unist-util-is": "^6.0.0",
9111 "unist-util-visit-parents": "^6.0.0"
9112 },
9113 "funding": {
9114 "type": "opencollective",
9115 "url": "https://opencollective.com/unified"
9116 }
9117 },
9118 "node_modules/unist-util-visit-parents": {
9119 "version": "6.0.2",
9120 "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz",
9121 "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==",
9122 "license": "MIT",
9123 "dependencies": {
9124 "@types/unist": "^3.0.0",
9125 "unist-util-is": "^6.0.0"
9126 },
9127 "funding": {
9128 "type": "opencollective",
9129 "url": "https://opencollective.com/unified"
9130 }
9131 },
7723 "node_modules/universalify": { 9132 "node_modules/universalify": {
7724 "version": "0.1.2", 9133 "version": "0.1.2",
7725 "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 9134 "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -7813,6 +9222,34 @@
7813 "node": ">=0.6.0" 9222 "node": ">=0.6.0"
7814 } 9223 }
7815 }, 9224 },
9225 "node_modules/vfile": {
9226 "version": "6.0.3",
9227 "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
9228 "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
9229 "license": "MIT",
9230 "dependencies": {
9231 "@types/unist": "^3.0.0",
9232 "vfile-message": "^4.0.0"
9233 },
9234 "funding": {
9235 "type": "opencollective",
9236 "url": "https://opencollective.com/unified"
9237 }
9238 },
9239 "node_modules/vfile-message": {
9240 "version": "4.0.3",
9241 "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz",
9242 "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
9243 "license": "MIT",
9244 "dependencies": {
9245 "@types/unist": "^3.0.0",
9246 "unist-util-stringify-position": "^4.0.0"
9247 },
9248 "funding": {
9249 "type": "opencollective",
9250 "url": "https://opencollective.com/unified"
9251 }
9252 },
7816 "node_modules/vite": { 9253 "node_modules/vite": {
7817 "version": "7.1.5", 9254 "version": "7.1.5",
7818 "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz", 9255 "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz",
@@ -8066,6 +9503,16 @@
8066 "funding": { 9503 "funding": {
8067 "url": "https://github.com/sponsors/colinhacks" 9504 "url": "https://github.com/sponsors/colinhacks"
8068 } 9505 }
9506 },
9507 "node_modules/zwitch": {
9508 "version": "2.0.4",
9509 "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
9510 "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
9511 "license": "MIT",
9512 "funding": {
9513 "type": "github",
9514 "url": "https://github.com/sponsors/wooorm"
9515 }
8069 } 9516 }
8070 } 9517 }
8071} 9518}
diff --git a/package.json b/package.json
index a76759a..7bc98e3 100644
--- a/package.json
+++ b/package.json
@@ -47,6 +47,8 @@
47 "better-sqlite3": "12.2.0", 47 "better-sqlite3": "12.2.0",
48 "react": "^19.1.1", 48 "react": "^19.1.1",
49 "react-dom": "^19.1.1", 49 "react-dom": "^19.1.1",
50 "react-markdown": "^10.1.0",
51 "remark-gfm": "^4.0.1",
50 "uuid": "^13.0.0" 52 "uuid": "^13.0.0"
51 }, 53 },
52 "devDependencies": { 54 "devDependencies": {
diff --git a/renderer/src/components/DocumentPane.tsx b/renderer/src/components/DocumentPane.tsx
index c2e1b2c..95d7d03 100644
--- a/renderer/src/components/DocumentPane.tsx
+++ b/renderer/src/components/DocumentPane.tsx
@@ -1,4 +1,6 @@
1import React, { useState, useMemo } from "react"; 1import React, { useState } from "react";
2import ReactMarkdown from "react-markdown";
3import remarkGfm from "remark-gfm";
2import type { Phase } from "../types"; 4import type { Phase } from "../types";
3 5
4interface DocumentPaneProps { 6interface DocumentPaneProps {
@@ -9,108 +11,6 @@ interface DocumentPaneProps {
9 showOnboarding?: boolean; 11 showOnboarding?: boolean;
10} 12}
11 13
12function renderTable(tableLines: string[]): string {
13 if (tableLines.length < 2) return tableLines.join("\n");
14
15 const parseRow = (line: string): string[] => {
16 return line
17 .split("|")
18 .slice(1, -1) // Remove empty first/last from |col|col|
19 .map((cell) => cell.trim());
20 };
21
22 const headerCells = parseRow(tableLines[0]);
23 // Skip separator row (index 1)
24 const bodyRows = tableLines.slice(2);
25
26 let html = '<table><thead><tr>';
27 headerCells.forEach((cell) => {
28 html += `<th>${cell}</th>`;
29 });
30 html += '</tr></thead><tbody>';
31
32 bodyRows.forEach((row) => {
33 if (row.trim()) {
34 html += '<tr>';
35 parseRow(row).forEach((cell) => {
36 html += `<td>${cell}</td>`;
37 });
38 html += '</tr>';
39 }
40 });
41
42 html += '</tbody></table>';
43 return html;
44}
45
46function renderMarkdown(md: string): string {
47 // First, handle tables (before other transformations)
48 const lines = md.split("\n");
49 const processedLines: string[] = [];
50 let tableBuffer: string[] = [];
51 let inTable = false;
52
53 for (const line of lines) {
54 const isTableLine = /^\|.*\|$/.test(line.trim());
55
56 if (isTableLine) {
57 inTable = true;
58 tableBuffer.push(line);
59 } else {
60 if (inTable && tableBuffer.length > 0) {
61 processedLines.push(renderTable(tableBuffer));
62 tableBuffer = [];
63 inTable = false;
64 }
65 processedLines.push(line);
66 }
67 }
68
69 // Handle table at end of content
70 if (tableBuffer.length > 0) {
71 processedLines.push(renderTable(tableBuffer));
72 }
73
74 let result = processedLines.join("\n");
75
76 return (
77 result
78 // Headers
79 .replace(/^### (.*$)/gm, "<h3>$1</h3>")
80 .replace(/^## (.*$)/gm, "<h2>$1</h2>")
81 .replace(/^# (.*$)/gm, "<h1>$1</h1>")
82 // Bold/italic
83 .replace(/\*\*([^*]+)\*\*/g, "<strong>$1</strong>")
84 .replace(/\*([^*]+)\*/g, "<em>$1</em>")
85 // Code blocks
86 .replace(
87 /```(\w*)\n([\s\S]*?)```/g,
88 '<pre><code class="language-$1">$2</code></pre>'
89 )
90 .replace(/`([^`]+)`/g, "<code>$1</code>")
91 // Lists
92 .replace(/^- \[x\] (.*$)/gm, '<li class="task done">☑ $1</li>')
93 .replace(/^- \[ \] (.*$)/gm, '<li class="task">☐ $1</li>')
94 .replace(/^- (.*$)/gm, "<li>$1</li>")
95 // Review comments (highlight them)
96 .replace(/(\/\/ REVIEW:.*$)/gm, '<mark class="review">$1</mark>')
97 .replace(/(\/\/ NOTE:.*$)/gm, '<mark class="note">$1</mark>')
98 // Paragraphs
99 .replace(/\n\n/g, "</p><p>")
100 .replace(/^(.+)$/gm, "<p>$1</p>")
101 // Clean up
102 .replace(/<p><\/p>/g, "")
103 .replace(/<p>(<h[1-3]>)/g, "$1")
104 .replace(/(<\/h[1-3]>)<\/p>/g, "$1")
105 .replace(/<p>(<pre>)/g, "$1")
106 .replace(/(<\/pre>)<\/p>/g, "$1")
107 .replace(/<p>(<li)/g, "$1")
108 .replace(/(<\/li>)<\/p>/g, "$1")
109 .replace(/<p>(<table>)/g, "$1")
110 .replace(/(<\/table>)<\/p>/g, "$1")
111 );
112}
113
114export function DocumentPane({ 14export function DocumentPane({
115 content, 15 content,
116 onChange, 16 onChange,
@@ -119,7 +19,6 @@ export function DocumentPane({
119 showOnboarding, 19 showOnboarding,
120}: DocumentPaneProps) { 20}: DocumentPaneProps) {
121 const [isEditing, setIsEditing] = useState(false); 21 const [isEditing, setIsEditing] = useState(false);
122 const renderedHtml = useMemo(() => renderMarkdown(content), [content]);
123 22
124 if (showOnboarding) { 23 if (showOnboarding) {
125 return ( 24 return (
@@ -130,27 +29,61 @@ export function DocumentPane({
130 <div className="document-content rendered onboarding"> 29 <div className="document-content rendered onboarding">
131 <h1>Claude Flow</h1> 30 <h1>Claude Flow</h1>
132 <p> 31 <p>
133 A structured workflow for AI-assisted coding: <strong>Research → Plan → Implement</strong>. 32 A structured workflow for AI-assisted coding:{" "}
33 <strong>Research → Plan → Implement</strong>.
134 </p> 34 </p>
135 35
136 <h2>Setup</h2> 36 <h2>Setup</h2>
137 <p>Export your Anthropic API key:</p> 37 <p>Export your Anthropic API key:</p>
138 <pre><code>export ANTHROPIC_API_KEY=your-key-here</code></pre> 38 <pre>
139 <p>Get one at <a href="https://platform.claude.com" target="_blank" rel="noopener">platform.claude.com</a></p> 39 <code>export ANTHROPIC_API_KEY=your-key-here</code>
40 </pre>
41 <p>
42 Get one at{" "}
43 <a
44 href="https://platform.claude.com"
45 target="_blank"
46 rel="noopener"
47 >
48 platform.claude.com
49 </a>
50 </p>
140 51
141 <h2>Getting Started</h2> 52 <h2>Getting Started</h2>
142 <ol> 53 <ol>
143 <li><strong>Add a project</strong> — Select a codebase folder</li> 54 <li>
144 <li><strong>Create a session</strong> — Start a new task</li> 55 <strong>Add a project</strong> — Select a codebase folder
145 <li><strong>Describe your work</strong> — Tell Claude what you want to build</li> 56 </li>
57 <li>
58 <strong>Create a session</strong> — Start a new task
59 </li>
60 <li>
61 <strong>Describe your work</strong> — Tell Claude what you want to
62 build
63 </li>
146 </ol> 64 </ol>
147 65
148 <h2>Workflow</h2> 66 <h2>Workflow</h2>
149 <p><strong>Research:</strong> Claude analyzes your codebase and writes findings to <code>research.md</code>. Add notes like <code>// REVIEW: check this</code> — click <strong>Review</strong> when done.</p> 67 <p>
150 <p><strong>Plan:</strong> Claude drafts an implementation plan in <code>plan.md</code> with code snippets and a TODO list. Iterate the same way.</p> 68 <strong>Research:</strong> Claude analyzes your codebase and writes
151 <p><strong>Implement:</strong> Claude executes the plan, marking tasks complete as it goes.</p> 69 findings to <code>research.md</code>. Add notes like{" "}
70 <code>// REVIEW: check this</code> — click <strong>Review</strong>{" "}
71 when done.
72 </p>
73 <p>
74 <strong>Plan:</strong> Claude drafts an implementation plan in{" "}
75 <code>plan.md</code> with code snippets and a TODO list. Iterate the
76 same way.
77 </p>
78 <p>
79 <strong>Implement:</strong> Claude executes the plan, marking tasks
80 complete as it goes.
81 </p>
152 82
153 <p className="onboarding-tip">Iterate on research and plan docs as long as you want. Click <strong>Submit</strong> when happy to move to the next phase.</p> 83 <p className="onboarding-tip">
84 Iterate on research and plan docs as long as you want. Click{" "}
85 <strong>Submit</strong> when happy to move to the next phase.
86 </p>
154 </div> 87 </div>
155 </div> 88 </div>
156 ); 89 );
@@ -163,10 +96,9 @@ export function DocumentPane({
163 <span>plan.md</span> 96 <span>plan.md</span>
164 <span className="badge">Implementing...</span> 97 <span className="badge">Implementing...</span>
165 </div> 98 </div>
166 <div 99 <div className="document-content rendered">
167 className="document-content rendered" 100 <ReactMarkdown remarkPlugins={[remarkGfm]}>{content}</ReactMarkdown>
168 dangerouslySetInnerHTML={{ __html: renderedHtml }} 101 </div>
169 />
170 </div> 102 </div>
171 ); 103 );
172 } 104 }
@@ -193,13 +125,16 @@ export function DocumentPane({
193 ) : ( 125 ) : (
194 <div 126 <div
195 className="document-content rendered" 127 className="document-content rendered"
196 dangerouslySetInnerHTML={{
197 __html:
198 renderedHtml ||
199 '<p class="empty">Document will appear here after Claude generates it...</p>',
200 }}
201 onClick={() => !disabled && setIsEditing(true)} 128 onClick={() => !disabled && setIsEditing(true)}
202 /> 129 >
130 {content ? (
131 <ReactMarkdown remarkPlugins={[remarkGfm]}>{content}</ReactMarkdown>
132 ) : (
133 <p className="empty">
134 Document will appear here after Claude generates it...
135 </p>
136 )}
137 </div>
203 )} 138 )}
204 </div> 139 </div>
205 ); 140 );
diff --git a/renderer/src/styles/globals.css b/renderer/src/styles/globals.css
index 380a744..384ebc5 100644
--- a/renderer/src/styles/globals.css
+++ b/renderer/src/styles/globals.css
@@ -171,12 +171,14 @@ body {
171} 171}
172.document-content.rendered p { 172.document-content.rendered p {
173 margin: 8px 0; 173 margin: 8px 0;
174 line-height: 1.6;
174} 175}
175.document-content.rendered code { 176.document-content.rendered code {
176 background: var(--bg-tertiary); 177 background: var(--bg-tertiary);
177 padding: 2px 6px; 178 padding: 2px 6px;
178 border-radius: 4px; 179 border-radius: 4px;
179 font-size: 13px; 180 font-size: 13px;
181 font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
180} 182}
181.document-content.rendered pre { 183.document-content.rendered pre {
182 background: var(--bg-tertiary); 184 background: var(--bg-tertiary);
@@ -189,16 +191,26 @@ body {
189 background: none; 191 background: none;
190 padding: 0; 192 padding: 0;
191} 193}
194.document-content.rendered ul,
195.document-content.rendered ol {
196 margin: 12px 0;
197 padding-left: 24px;
198}
192.document-content.rendered li { 199.document-content.rendered li {
193 margin-left: 24px; 200 margin-bottom: 6px;
194 margin-bottom: 4px; 201 line-height: 1.5;
195} 202}
196.document-content.rendered li.task { 203.document-content.rendered ul.contains-task-list {
197 list-style: none; 204 list-style: none;
198 margin-left: 0; 205 padding-left: 0;
199} 206}
200.document-content.rendered li.task.done { 207.document-content.rendered li.task-list-item {
201 color: var(--success); 208 display: flex;
209 align-items: flex-start;
210 gap: 8px;
211}
212.document-content.rendered li.task-list-item input[type="checkbox"] {
213 margin-top: 4px;
202} 214}
203.document-content.rendered table { 215.document-content.rendered table {
204 width: 100%; 216 width: 100%;
@@ -219,17 +231,23 @@ body {
219.document-content.rendered tr:nth-child(even) td { 231.document-content.rendered tr:nth-child(even) td {
220 background: var(--bg-secondary); 232 background: var(--bg-secondary);
221} 233}
222.document-content.rendered mark.review { 234.document-content.rendered blockquote {
223 background: var(--warning); 235 border-left: 3px solid var(--accent);
224 color: black; 236 margin: 16px 0;
225 padding: 2px 4px; 237 padding-left: 16px;
226 border-radius: 2px; 238 color: var(--text-secondary);
227} 239}
228.document-content.rendered mark.note { 240.document-content.rendered hr {
229 background: var(--accent); 241 border: none;
230 color: white; 242 border-top: 1px solid var(--border);
231 padding: 2px 4px; 243 margin: 24px 0;
232 border-radius: 2px; 244}
245.document-content.rendered a {
246 color: var(--accent);
247 text-decoration: none;
248}
249.document-content.rendered a:hover {
250 text-decoration: underline;
233} 251}
234.document-content.rendered .empty { 252.document-content.rendered .empty {
235 color: var(--text-secondary); 253 color: var(--text-secondary);