From 4c9953ab574801458b08fbd7e7cd9bf880cde6fa Mon Sep 17 00:00:00 2001 From: Eamon <17516219072@163.com> Date: Fri, 7 Aug 2026 16:54:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=99=BB=E5=BD=95=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=92=8C=E5=B8=AE=E5=8A=A9=E6=95=99=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bun.lock | 281 +++++++++++++++- package.json | 1 + public/xieyi.html | 1 + src/admin/nav-menu.tsx | 22 +- src/admin/product/long.tsx | 3 + src/admin/product/short.tsx | 3 + src/api/auth.ts | 22 +- src/api/verify.ts | 15 + src/components/authGuard.tsx | 67 ++-- src/docs/android-proxy/images/android.webp | Bin 0 -> 10338 bytes src/docs/android-proxy/images/android01.webp | Bin 0 -> 9254 bytes src/docs/android-proxy/images/android02.webp | Bin 0 -> 14352 bytes src/docs/android-proxy/page.mdx | 30 ++ src/docs/browser-proxy/images/ieConfig.webp | Bin 0 -> 8064 bytes src/docs/browser-proxy/images/lanConfig.webp | Bin 0 -> 14830 bytes src/docs/browser-proxy/page.mdx | 25 ++ src/home/header.tsx | 113 ++++--- src/home/help/index.tsx | 297 ++++++++++++++++- src/home/login/index.tsx | 322 +++++++++++++++++-- src/home/product/index.tsx | 11 +- src/lib/models/article.ts | 186 +++++++++++ src/routers/index.tsx | 12 +- 22 files changed, 1278 insertions(+), 133 deletions(-) create mode 100644 public/xieyi.html create mode 100644 src/admin/product/long.tsx create mode 100644 src/admin/product/short.tsx create mode 100644 src/api/verify.ts create mode 100644 src/docs/android-proxy/images/android.webp create mode 100644 src/docs/android-proxy/images/android01.webp create mode 100644 src/docs/android-proxy/images/android02.webp create mode 100644 src/docs/android-proxy/page.mdx create mode 100644 src/docs/browser-proxy/images/ieConfig.webp create mode 100644 src/docs/browser-proxy/images/lanConfig.webp create mode 100644 src/docs/browser-proxy/page.mdx create mode 100644 src/lib/models/article.ts diff --git a/bun.lock b/bun.lock index e53ff7d..65be6f9 100644 --- a/bun.lock +++ b/bun.lock @@ -7,6 +7,7 @@ "dependencies": { "@fontsource-variable/geist": "^5.2.9", "@hookform/resolvers": "^5.5.7", + "@mdx-js/rollup": "^3.1.1", "@tailwindcss/vite": "^4.3.0", "@tanstack/react-table": "^8.21.3", "class-variance-authority": "^0.7.1", @@ -146,8 +147,14 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "https://registry.npmmirror.com/@mdx-js/mdx/-/mdx-3.1.1.tgz", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], + + "@mdx-js/rollup": ["@mdx-js/rollup@3.1.1", "https://registry.npmmirror.com/@mdx-js/rollup/-/rollup-3.1.1.tgz", { "dependencies": { "@mdx-js/mdx": "^3.0.0", "@rollup/pluginutils": "^5.0.0", "source-map": "^0.7.0", "vfile": "^6.0.0" }, "peerDependencies": { "rollup": ">=2" } }, "sha512-v8satFmBB+DqDzYohnm1u2JOvxx6Hl3pUvqzJvfs2Zk/ngZ1aRUhsWpXvwPkNeGN9c2NCm/38H29ZqXQUjf8dw=="], + "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.29.0", "https://registry.npmmirror.com/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ=="], + "@napi-rs/lzma-linux-x64-gnu": ["@napi-rs/lzma-linux-x64-gnu@1.5.1", "https://registry.npmmirror.com/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", { "os": "linux", "cpu": "x64" }, "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ=="], + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "https://registry.npmmirror.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="], "@noble/ciphers": ["@noble/ciphers@1.3.0", "https://registry.npmmirror.com/@noble/ciphers/-/ciphers-1.3.0.tgz", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], @@ -316,6 +323,58 @@ "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], + "@rollup/pluginutils": ["@rollup/pluginutils@5.4.0", "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.4.0.tgz", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.4.tgz", { "os": "android", "cpu": "arm" }, "sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.4.tgz", { "os": "android", "cpu": "arm64" }, "sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.4.tgz", { "os": "darwin", "cpu": "arm64" }, "sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.4.tgz", { "os": "darwin", "cpu": "x64" }, "sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.4.tgz", { "os": "freebsd", "cpu": "arm64" }, "sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.4.tgz", { "os": "freebsd", "cpu": "x64" }, "sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.4.tgz", { "os": "linux", "cpu": "arm" }, "sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.4.tgz", { "os": "linux", "cpu": "arm" }, "sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.4.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.4.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.4.tgz", { "os": "linux", "cpu": "none" }, "sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA=="], + + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.4.tgz", { "os": "linux", "cpu": "none" }, "sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.4.tgz", { "os": "linux", "cpu": "ppc64" }, "sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w=="], + + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.4.tgz", { "os": "linux", "cpu": "ppc64" }, "sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.4.tgz", { "os": "linux", "cpu": "none" }, "sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.4.tgz", { "os": "linux", "cpu": "none" }, "sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.4.tgz", { "os": "linux", "cpu": "s390x" }, "sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.4.tgz", { "os": "linux", "cpu": "x64" }, "sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.4.tgz", { "os": "linux", "cpu": "x64" }, "sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA=="], + + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.4.tgz", { "os": "openbsd", "cpu": "x64" }, "sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.4.tgz", { "os": "none", "cpu": "arm64" }, "sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.4.tgz", { "os": "win32", "cpu": "arm64" }, "sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.4.tgz", { "os": "win32", "cpu": "ia32" }, "sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.4.tgz", { "os": "win32", "cpu": "x64" }, "sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.62.4", "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.4.tgz", { "os": "win32", "cpu": "x64" }, "sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q=="], + "@sec-ant/readable-stream": ["@sec-ant/readable-stream@0.4.1", "https://registry.npmmirror.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", {}, "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="], "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], @@ -360,18 +419,40 @@ "@tybys/wasm-util": ["@tybys/wasm-util@0.10.2", "https://registry.npmmirror.com/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg=="], + "@types/debug": ["@types/debug@4.1.13", "https://registry.npmmirror.com/@types/debug/-/debug-4.1.13.tgz", { "dependencies": { "@types/ms": "*" } }, "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw=="], + + "@types/estree": ["@types/estree@1.0.9", "https://registry.npmmirror.com/@types/estree/-/estree-1.0.9.tgz", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], + + "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "https://registry.npmmirror.com/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], + + "@types/hast": ["@types/hast@3.0.5", "https://registry.npmmirror.com/@types/hast/-/hast-3.0.5.tgz", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], + + "@types/mdast": ["@types/mdast@4.0.4", "https://registry.npmmirror.com/@types/mdast/-/mdast-4.0.4.tgz", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], + + "@types/mdx": ["@types/mdx@2.0.14", "https://registry.npmmirror.com/@types/mdx/-/mdx-2.0.14.tgz", {}, "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg=="], + + "@types/ms": ["@types/ms@2.1.0", "https://registry.npmmirror.com/@types/ms/-/ms-2.1.0.tgz", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], + "@types/node": ["@types/node@25.9.2", "https://registry.npmmirror.com/@types/node/-/node-25.9.2.tgz", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw=="], "@types/react": ["@types/react@19.2.17", "https://registry.npmmirror.com/@types/react/-/react-19.2.17.tgz", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw=="], "@types/react-dom": ["@types/react-dom@19.2.3", "https://registry.npmmirror.com/@types/react-dom/-/react-dom-19.2.3.tgz", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], + "@types/unist": ["@types/unist@3.0.3", "https://registry.npmmirror.com/@types/unist/-/unist-3.0.3.tgz", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], + "@types/validate-npm-package-name": ["@types/validate-npm-package-name@4.0.2", "https://registry.npmmirror.com/@types/validate-npm-package-name/-/validate-npm-package-name-4.0.2.tgz", {}, "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw=="], + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.3", "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.3.3.tgz", {}, "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@6.0.2", "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-6.0.2.tgz", { "dependencies": { "@rolldown/pluginutils": "^1.0.0" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler"] }, "sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg=="], "accepts": ["accepts@2.0.0", "https://registry.npmmirror.com/accepts/-/accepts-2.0.0.tgz", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], + "acorn": ["acorn@8.18.0", "https://registry.npmmirror.com/acorn/-/acorn-8.18.0.tgz", { "bin": { "acorn": "bin/acorn" } }, "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ=="], + + "acorn-jsx": ["acorn-jsx@5.3.2", "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], + "agent-base": ["agent-base@7.1.4", "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], "ajv": ["ajv@8.20.0", "https://registry.npmmirror.com/ajv/-/ajv-8.20.0.tgz", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], @@ -388,6 +469,10 @@ "ast-types": ["ast-types@0.16.1", "https://registry.npmmirror.com/ast-types/-/ast-types-0.16.1.tgz", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg=="], + "astring": ["astring@1.9.0", "https://registry.npmmirror.com/astring/-/astring-1.9.0.tgz", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], + + "bail": ["bail@2.0.2", "https://registry.npmmirror.com/bail/-/bail-2.0.2.tgz", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], + "balanced-match": ["balanced-match@4.0.4", "https://registry.npmmirror.com/balanced-match/-/balanced-match-4.0.4.tgz", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], "baseline-browser-mapping": ["baseline-browser-mapping@2.10.35", "https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.35.tgz", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-honAfLBde0HAFLdNyBEfuuENkF6zR+ozxqxa/2zJKHBe1qzLqyTSeRKpdPEHAP03rlDGyQOPnCSxnVpVqQo9Mg=="], @@ -412,8 +497,18 @@ "caniuse-lite": ["caniuse-lite@1.0.30001797", "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001797.tgz", {}, "sha512-l8xKG+gwAIExZGl9FrF7KUwuOmk6wbEPC9Xoy/RtnWv1XG0Q4LFlagaLpUv3Kiza3W/wm27zy0yWJEieYKAP6w=="], + "ccount": ["ccount@2.0.1", "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], + "chalk": ["chalk@5.6.2", "https://registry.npmmirror.com/chalk/-/chalk-5.6.2.tgz", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + "character-entities": ["character-entities@2.0.2", "https://registry.npmmirror.com/character-entities/-/character-entities-2.0.2.tgz", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], + + "character-entities-html4": ["character-entities-html4@2.1.0", "https://registry.npmmirror.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], + + "character-entities-legacy": ["character-entities-legacy@3.0.0", "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], + + "character-reference-invalid": ["character-reference-invalid@2.0.1", "https://registry.npmmirror.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], + "class-variance-authority": ["class-variance-authority@0.7.1", "https://registry.npmmirror.com/class-variance-authority/-/class-variance-authority-0.7.1.tgz", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], "cli-cursor": ["cli-cursor@5.0.0", "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-5.0.0.tgz", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="], @@ -424,6 +519,10 @@ "code-block-writer": ["code-block-writer@13.0.3", "https://registry.npmmirror.com/code-block-writer/-/code-block-writer-13.0.3.tgz", {}, "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg=="], + "collapse-white-space": ["collapse-white-space@2.1.0", "https://registry.npmmirror.com/collapse-white-space/-/collapse-white-space-2.1.0.tgz", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], + + "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], + "commander": ["commander@14.0.3", "https://registry.npmmirror.com/commander/-/commander-14.0.3.tgz", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="], "content-disposition": ["content-disposition@1.1.0", "https://registry.npmmirror.com/content-disposition/-/content-disposition-1.1.0.tgz", {}, "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g=="], @@ -450,6 +549,8 @@ "debug": ["debug@4.4.3", "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + "decode-named-character-reference": ["decode-named-character-reference@1.3.0", "https://registry.npmmirror.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q=="], + "dedent": ["dedent@1.7.2", "https://registry.npmmirror.com/dedent/-/dedent-1.7.2.tgz", { "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA=="], "deepmerge": ["deepmerge@4.3.1", "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="], @@ -462,10 +563,14 @@ "depd": ["depd@2.0.0", "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + "dequal": ["dequal@2.0.3", "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], + "detect-libc": ["detect-libc@2.1.2", "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.2.tgz", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], "detect-node-es": ["detect-node-es@1.1.0", "https://registry.npmmirror.com/detect-node-es/-/detect-node-es-1.1.0.tgz", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], + "devlop": ["devlop@1.1.0", "https://registry.npmmirror.com/devlop/-/devlop-1.1.0.tgz", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], + "diff": ["diff@8.0.4", "https://registry.npmmirror.com/diff/-/diff-8.0.4.tgz", {}, "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw=="], "dotenv": ["dotenv@17.4.2", "https://registry.npmmirror.com/dotenv/-/dotenv-17.4.2.tgz", {}, "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw=="], @@ -496,12 +601,30 @@ "es-object-atoms": ["es-object-atoms@1.1.2", "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.2.tgz", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="], + "esast-util-from-estree": ["esast-util-from-estree@2.0.0", "https://registry.npmmirror.com/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "unist-util-position-from-estree": "^2.0.0" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="], + + "esast-util-from-js": ["esast-util-from-js@2.0.1", "https://registry.npmmirror.com/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], + "escalade": ["escalade@3.2.0", "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], "escape-html": ["escape-html@1.0.3", "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], "esprima": ["esprima@4.0.1", "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + "estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "https://registry.npmmirror.com/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], + + "estree-util-build-jsx": ["estree-util-build-jsx@3.0.1", "https://registry.npmmirror.com/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="], + + "estree-util-is-identifier-name": ["estree-util-is-identifier-name@3.0.0", "https://registry.npmmirror.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="], + + "estree-util-scope": ["estree-util-scope@1.0.0", "https://registry.npmmirror.com/estree-util-scope/-/estree-util-scope-1.0.0.tgz", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" } }, "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ=="], + + "estree-util-to-js": ["estree-util-to-js@2.0.0", "https://registry.npmmirror.com/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="], + + "estree-util-visit": ["estree-util-visit@2.0.0", "https://registry.npmmirror.com/estree-util-visit/-/estree-util-visit-2.0.0.tgz", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="], + + "estree-walker": ["estree-walker@3.0.3", "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + "etag": ["etag@1.8.1", "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], "eventsource": ["eventsource@3.0.7", "https://registry.npmmirror.com/eventsource/-/eventsource-3.0.7.tgz", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA=="], @@ -514,6 +637,8 @@ "express-rate-limit": ["express-rate-limit@8.5.2", "https://registry.npmmirror.com/express-rate-limit/-/express-rate-limit-8.5.2.tgz", { "dependencies": { "ip-address": "^10.2.0" }, "peerDependencies": { "express": ">= 4.11" } }, "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A=="], + "extend": ["extend@3.0.2", "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], + "fast-deep-equal": ["fast-deep-equal@3.1.3", "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], "fast-glob": ["fast-glob@3.3.3", "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], @@ -572,6 +697,12 @@ "hasown": ["hasown@2.0.4", "https://registry.npmmirror.com/hasown/-/hasown-2.0.4.tgz", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="], + "hast-util-to-estree": ["hast-util-to-estree@3.1.3", "https://registry.npmmirror.com/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-attach-comments": "^3.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", "zwitch": "^2.0.0" } }, "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w=="], + + "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.6", "https://registry.npmmirror.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", { "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" } }, "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="], + + "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "https://registry.npmmirror.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], + "hono": ["hono@4.12.25", "https://registry.npmmirror.com/hono/-/hono-4.12.25.tgz", {}, "sha512-2NFaIyNVgJmBs/ecmtGzlmluTFs5cHEWGTdu0t1HBwYzoGXOL5nUQBRMXsXWla5i4KkG//QMzVP88m1+I3fdAQ=="], "http-errors": ["http-errors@2.0.1", "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.1.tgz", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], @@ -588,18 +719,28 @@ "inherits": ["inherits@2.0.4", "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + "inline-style-parser": ["inline-style-parser@0.2.7", "https://registry.npmmirror.com/inline-style-parser/-/inline-style-parser-0.2.7.tgz", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], + "ip-address": ["ip-address@10.2.0", "https://registry.npmmirror.com/ip-address/-/ip-address-10.2.0.tgz", {}, "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA=="], "ipaddr.js": ["ipaddr.js@1.9.1", "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], + "is-alphabetical": ["is-alphabetical@2.0.1", "https://registry.npmmirror.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="], + + "is-alphanumerical": ["is-alphanumerical@2.0.1", "https://registry.npmmirror.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="], + "is-arrayish": ["is-arrayish@0.2.1", "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + "is-decimal": ["is-decimal@2.0.1", "https://registry.npmmirror.com/is-decimal/-/is-decimal-2.0.1.tgz", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], + "is-docker": ["is-docker@3.0.0", "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], "is-extglob": ["is-extglob@2.1.1", "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], "is-glob": ["is-glob@4.0.3", "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + "is-hexadecimal": ["is-hexadecimal@2.0.1", "https://registry.npmmirror.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], + "is-in-ssh": ["is-in-ssh@1.0.0", "https://registry.npmmirror.com/is-in-ssh/-/is-in-ssh-1.0.0.tgz", {}, "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw=="], "is-inside-container": ["is-inside-container@1.0.0", "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], @@ -674,14 +815,36 @@ "log-symbols": ["log-symbols@6.0.0", "https://registry.npmmirror.com/log-symbols/-/log-symbols-6.0.0.tgz", { "dependencies": { "chalk": "^5.3.0", "is-unicode-supported": "^1.3.0" } }, "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw=="], + "longest-streak": ["longest-streak@3.1.0", "https://registry.npmmirror.com/longest-streak/-/longest-streak-3.1.0.tgz", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], + "lru-cache": ["lru-cache@5.1.1", "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], "lucide-react": ["lucide-react@1.17.0", "https://registry.npmmirror.com/lucide-react/-/lucide-react-1.17.0.tgz", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-9FA9evdox/JQL5PT57fdA1x/yg8T7knJ98+zjTL3UfKza6pflQUUh3XtaQIHKvnsJw1lmsEyHVlt5jchYxOQ5w=="], "magic-string": ["magic-string@0.30.21", "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + "markdown-extensions": ["markdown-extensions@2.0.0", "https://registry.npmmirror.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], + "math-intrinsics": ["math-intrinsics@1.1.0", "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.3", "https://registry.npmmirror.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", { "dependencies": { "@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" } }, "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q=="], + + "mdast-util-mdx": ["mdast-util-mdx@3.0.0", "https://registry.npmmirror.com/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="], + + "mdast-util-mdx-expression": ["mdast-util-mdx-expression@2.0.1", "https://registry.npmmirror.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", { "dependencies": { "@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" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="], + + "mdast-util-mdx-jsx": ["mdast-util-mdx-jsx@3.2.0", "https://registry.npmmirror.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "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" } }, "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q=="], + + "mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "https://registry.npmmirror.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", { "dependencies": { "@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" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="], + + "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "https://registry.npmmirror.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], + + "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "https://registry.npmmirror.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", { "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" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], + + "mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "https://registry.npmmirror.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", { "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" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="], + + "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "https://registry.npmmirror.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], + "media-typer": ["media-typer@1.1.0", "https://registry.npmmirror.com/media-typer/-/media-typer-1.1.0.tgz", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="], "merge-descriptors": ["merge-descriptors@2.0.0", "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="], @@ -690,6 +853,62 @@ "merge2": ["merge2@1.4.1", "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + "micromark": ["micromark@4.0.2", "https://registry.npmmirror.com/micromark/-/micromark-4.0.2.tgz", { "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" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], + + "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "https://registry.npmmirror.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", { "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" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], + + "micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.1", "https://registry.npmmirror.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q=="], + + "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.2", "https://registry.npmmirror.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ=="], + + "micromark-extension-mdx-md": ["micromark-extension-mdx-md@2.0.0", "https://registry.npmmirror.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ=="], + + "micromark-extension-mdxjs": ["micromark-extension-mdxjs@3.0.0", "https://registry.npmmirror.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", { "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", "micromark-extension-mdx-expression": "^3.0.0", "micromark-extension-mdx-jsx": "^3.0.0", "micromark-extension-mdx-md": "^2.0.0", "micromark-extension-mdxjs-esm": "^3.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ=="], + + "micromark-extension-mdxjs-esm": ["micromark-extension-mdxjs-esm@3.0.0", "https://registry.npmmirror.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A=="], + + "micromark-factory-destination": ["micromark-factory-destination@2.0.1", "https://registry.npmmirror.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="], + + "micromark-factory-label": ["micromark-factory-label@2.0.1", "https://registry.npmmirror.com/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="], + + "micromark-factory-mdx-expression": ["micromark-factory-mdx-expression@2.0.3", "https://registry.npmmirror.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ=="], + + "micromark-factory-space": ["micromark-factory-space@2.0.1", "https://registry.npmmirror.com/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + + "micromark-factory-title": ["micromark-factory-title@2.0.1", "https://registry.npmmirror.com/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", { "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" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="], + + "micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "https://registry.npmmirror.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", { "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" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="], + + "micromark-util-character": ["micromark-util-character@2.1.1", "https://registry.npmmirror.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + + "micromark-util-chunked": ["micromark-util-chunked@2.0.1", "https://registry.npmmirror.com/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="], + + "micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "https://registry.npmmirror.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="], + + "micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "https://registry.npmmirror.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="], + + "micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "https://registry.npmmirror.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="], + + "micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "https://registry.npmmirror.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", { "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" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="], + + "micromark-util-encode": ["micromark-util-encode@2.0.1", "https://registry.npmmirror.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], + + "micromark-util-events-to-acorn": ["micromark-util-events-to-acorn@2.0.3", "https://registry.npmmirror.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", { "dependencies": { "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg=="], + + "micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "https://registry.npmmirror.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="], + + "micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "https://registry.npmmirror.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="], + + "micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "https://registry.npmmirror.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="], + + "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "https://registry.npmmirror.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], + + "micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "https://registry.npmmirror.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="], + + "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "https://registry.npmmirror.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + + "micromark-util-types": ["micromark-util-types@2.0.2", "https://registry.npmmirror.com/micromark-util-types/-/micromark-util-types-2.0.2.tgz", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], + "micromatch": ["micromatch@4.0.8", "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], "mime-db": ["mime-db@1.54.0", "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], @@ -738,6 +957,8 @@ "parent-module": ["parent-module@1.0.1", "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + "parse-entities": ["parse-entities@4.0.2", "https://registry.npmmirror.com/parse-entities/-/parse-entities-4.0.2.tgz", { "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" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], + "parse-json": ["parse-json@5.2.0", "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], "parse-ms": ["parse-ms@4.0.0", "https://registry.npmmirror.com/parse-ms/-/parse-ms-4.0.0.tgz", {}, "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw=="], @@ -766,6 +987,8 @@ "prompts": ["prompts@2.4.2", "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="], + "property-information": ["property-information@7.2.0", "https://registry.npmmirror.com/property-information/-/property-information-7.2.0.tgz", {}, "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg=="], + "proxy-addr": ["proxy-addr@2.0.7", "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], "qs": ["qs@6.15.2", "https://registry.npmmirror.com/qs/-/qs-6.15.2.tgz", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw=="], @@ -796,6 +1019,22 @@ "recast": ["recast@0.23.11", "https://registry.npmmirror.com/recast/-/recast-0.23.11.tgz", { "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" } }, "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA=="], + "recma-build-jsx": ["recma-build-jsx@1.0.0", "https://registry.npmmirror.com/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], + + "recma-jsx": ["recma-jsx@1.0.1", "https://registry.npmmirror.com/recma-jsx/-/recma-jsx-1.0.1.tgz", { "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", "recma-parse": "^1.0.0", "recma-stringify": "^1.0.0", "unified": "^11.0.0" }, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w=="], + + "recma-parse": ["recma-parse@1.0.0", "https://registry.npmmirror.com/recma-parse/-/recma-parse-1.0.0.tgz", { "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ=="], + + "recma-stringify": ["recma-stringify@1.0.0", "https://registry.npmmirror.com/recma-stringify/-/recma-stringify-1.0.0.tgz", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="], + + "rehype-recma": ["rehype-recma@1.0.0", "https://registry.npmmirror.com/rehype-recma/-/rehype-recma-1.0.0.tgz", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="], + + "remark-mdx": ["remark-mdx@3.1.1", "https://registry.npmmirror.com/remark-mdx/-/remark-mdx-3.1.1.tgz", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="], + + "remark-parse": ["remark-parse@11.0.0", "https://registry.npmmirror.com/remark-parse/-/remark-parse-11.0.0.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], + + "remark-rehype": ["remark-rehype@11.1.2", "https://registry.npmmirror.com/remark-rehype/-/remark-rehype-11.1.2.tgz", { "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" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], + "require-from-string": ["require-from-string@2.0.2", "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], "resolve-from": ["resolve-from@4.0.0", "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], @@ -806,6 +1045,8 @@ "rolldown": ["rolldown@1.0.3", "https://registry.npmmirror.com/rolldown/-/rolldown-1.0.3.tgz", { "dependencies": { "@oxc-project/types": "=0.133.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.3", "@rolldown/binding-darwin-arm64": "1.0.3", "@rolldown/binding-darwin-x64": "1.0.3", "@rolldown/binding-freebsd-x64": "1.0.3", "@rolldown/binding-linux-arm-gnueabihf": "1.0.3", "@rolldown/binding-linux-arm64-gnu": "1.0.3", "@rolldown/binding-linux-arm64-musl": "1.0.3", "@rolldown/binding-linux-ppc64-gnu": "1.0.3", "@rolldown/binding-linux-s390x-gnu": "1.0.3", "@rolldown/binding-linux-x64-gnu": "1.0.3", "@rolldown/binding-linux-x64-musl": "1.0.3", "@rolldown/binding-openharmony-arm64": "1.0.3", "@rolldown/binding-wasm32-wasi": "1.0.3", "@rolldown/binding-win32-arm64-msvc": "1.0.3", "@rolldown/binding-win32-x64-msvc": "1.0.3" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g=="], + "rollup": ["rollup@4.62.4", "https://registry.npmmirror.com/rollup/-/rollup-4.62.4.tgz", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@napi-rs/lzma-linux-x64-gnu": "1.5.1", "@rollup/rollup-android-arm-eabi": "4.62.4", "@rollup/rollup-android-arm64": "4.62.4", "@rollup/rollup-darwin-arm64": "4.62.4", "@rollup/rollup-darwin-x64": "4.62.4", "@rollup/rollup-freebsd-arm64": "4.62.4", "@rollup/rollup-freebsd-x64": "4.62.4", "@rollup/rollup-linux-arm-gnueabihf": "4.62.4", "@rollup/rollup-linux-arm-musleabihf": "4.62.4", "@rollup/rollup-linux-arm64-gnu": "4.62.4", "@rollup/rollup-linux-arm64-musl": "4.62.4", "@rollup/rollup-linux-loong64-gnu": "4.62.4", "@rollup/rollup-linux-loong64-musl": "4.62.4", "@rollup/rollup-linux-ppc64-gnu": "4.62.4", "@rollup/rollup-linux-ppc64-musl": "4.62.4", "@rollup/rollup-linux-riscv64-gnu": "4.62.4", "@rollup/rollup-linux-riscv64-musl": "4.62.4", "@rollup/rollup-linux-s390x-gnu": "4.62.4", "@rollup/rollup-linux-x64-gnu": "4.62.4", "@rollup/rollup-linux-x64-musl": "4.62.4", "@rollup/rollup-openbsd-x64": "4.62.4", "@rollup/rollup-openharmony-arm64": "4.62.4", "@rollup/rollup-win32-arm64-msvc": "4.62.4", "@rollup/rollup-win32-ia32-msvc": "4.62.4", "@rollup/rollup-win32-x64-gnu": "4.62.4", "@rollup/rollup-win32-x64-msvc": "4.62.4", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg=="], + "router": ["router@2.2.0", "https://registry.npmmirror.com/router/-/router-2.2.0.tgz", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="], "run-applescript": ["run-applescript@7.1.0", "https://registry.npmmirror.com/run-applescript/-/run-applescript-7.1.0.tgz", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], @@ -846,16 +1087,20 @@ "sonner": ["sonner@2.0.7", "https://registry.npmmirror.com/sonner/-/sonner-2.0.7.tgz", { "peerDependencies": { "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w=="], - "source-map": ["source-map@0.6.1", "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "source-map": ["source-map@0.7.6", "https://registry.npmmirror.com/source-map/-/source-map-0.7.6.tgz", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], "source-map-js": ["source-map-js@1.2.1", "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "space-separated-tokens": ["space-separated-tokens@2.0.2", "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + "statuses": ["statuses@2.0.2", "https://registry.npmmirror.com/statuses/-/statuses-2.0.2.tgz", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], "stdin-discarder": ["stdin-discarder@0.2.2", "https://registry.npmmirror.com/stdin-discarder/-/stdin-discarder-0.2.2.tgz", {}, "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ=="], "string-width": ["string-width@7.2.0", "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + "stringify-entities": ["stringify-entities@4.0.4", "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-4.0.4.tgz", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], + "stringify-object": ["stringify-object@5.0.0", "https://registry.npmmirror.com/stringify-object/-/stringify-object-5.0.0.tgz", { "dependencies": { "get-own-enumerable-keys": "^1.0.0", "is-obj": "^3.0.0", "is-regexp": "^3.1.0" } }, "sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg=="], "strip-ansi": ["strip-ansi@7.2.0", "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.2.0.tgz", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], @@ -864,6 +1109,10 @@ "strip-final-newline": ["strip-final-newline@4.0.0", "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-4.0.0.tgz", {}, "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw=="], + "style-to-js": ["style-to-js@1.1.21", "https://registry.npmmirror.com/style-to-js/-/style-to-js-1.1.21.tgz", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], + + "style-to-object": ["style-to-object@1.0.14", "https://registry.npmmirror.com/style-to-object/-/style-to-object-1.0.14.tgz", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], + "tailwind-merge": ["tailwind-merge@3.6.0", "https://registry.npmmirror.com/tailwind-merge/-/tailwind-merge-3.6.0.tgz", {}, "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w=="], "tailwindcss": ["tailwindcss@4.3.0", "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-4.3.0.tgz", {}, "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q=="], @@ -878,6 +1127,10 @@ "toidentifier": ["toidentifier@1.0.1", "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + "trim-lines": ["trim-lines@3.0.1", "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], + + "trough": ["trough@2.2.0", "https://registry.npmmirror.com/trough/-/trough-2.2.0.tgz", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], + "ts-morph": ["ts-morph@26.0.0", "https://registry.npmmirror.com/ts-morph/-/ts-morph-26.0.0.tgz", { "dependencies": { "@ts-morph/common": "~0.27.0", "code-block-writer": "^13.0.3" } }, "sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug=="], "tsconfig-paths": ["tsconfig-paths@4.2.0", "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", { "dependencies": { "json5": "^2.2.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg=="], @@ -894,6 +1147,20 @@ "unicorn-magic": ["unicorn-magic@0.3.0", "https://registry.npmmirror.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], + "unified": ["unified@11.0.5", "https://registry.npmmirror.com/unified/-/unified-11.0.5.tgz", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], + + "unist-util-is": ["unist-util-is@6.0.1", "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-6.0.1.tgz", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], + + "unist-util-position": ["unist-util-position@5.0.0", "https://registry.npmmirror.com/unist-util-position/-/unist-util-position-5.0.0.tgz", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], + + "unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "https://registry.npmmirror.com/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="], + + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], + + "unist-util-visit": ["unist-util-visit@5.1.0", "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-5.1.0.tgz", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], + + "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], + "universalify": ["universalify@2.0.1", "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], "unpipe": ["unpipe@1.0.0", "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], @@ -910,6 +1177,10 @@ "vary": ["vary@1.1.2", "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + "vfile": ["vfile@6.0.3", "https://registry.npmmirror.com/vfile/-/vfile-6.0.3.tgz", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], + + "vfile-message": ["vfile-message@4.0.3", "https://registry.npmmirror.com/vfile-message/-/vfile-message-4.0.3.tgz", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], + "vite": ["vite@8.0.16", "https://registry.npmmirror.com/vite/-/vite-8.0.16.tgz", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.15", "rolldown": "1.0.3", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.18", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw=="], "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "https://registry.npmmirror.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], @@ -930,12 +1201,16 @@ "zod-to-json-schema": ["zod-to-json-schema@3.25.2", "https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", { "peerDependencies": { "zod": "^3.25.28 || ^4" } }, "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA=="], + "zwitch": ["zwitch@2.0.4", "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.4.tgz", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + "@dotenvx/dotenvx/commander": ["commander@11.1.0", "https://registry.npmmirror.com/commander/-/commander-11.1.0.tgz", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], "@dotenvx/dotenvx/execa": ["execa@5.1.1", "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], "@modelcontextprotocol/sdk/zod": ["zod@3.25.76", "https://registry.npmmirror.com/zod/-/zod-3.25.76.tgz", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.10.0", "https://registry.npmmirror.com/@emnapi/core/-/core-1.10.0.tgz", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" }, "bundled": true }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.10.0", "https://registry.npmmirror.com/@emnapi/runtime/-/runtime-1.10.0.tgz", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="], @@ -960,8 +1235,12 @@ "npm-run-path/path-key": ["path-key@4.0.0", "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], + "parse-entities/@types/unist": ["@types/unist@2.0.11", "https://registry.npmmirror.com/@types/unist/-/unist-2.0.11.tgz", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], + "prompts/kleur": ["kleur@3.0.3", "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], + "recast/source-map": ["source-map@0.6.1", "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "restore-cursor/onetime": ["onetime@7.0.0", "https://registry.npmmirror.com/onetime/-/onetime-7.0.0.tgz", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], "shadcn/zod": ["zod@3.25.76", "https://registry.npmmirror.com/zod/-/zod-3.25.76.tgz", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], diff --git a/package.json b/package.json index dcc9f36..490e9b7 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dependencies": { "@fontsource-variable/geist": "^5.2.9", "@hookform/resolvers": "^5.5.7", + "@mdx-js/rollup": "^3.1.1", "@tailwindcss/vite": "^4.3.0", "@tanstack/react-table": "^8.21.3", "class-variance-authority": "^0.7.1", diff --git a/public/xieyi.html b/public/xieyi.html new file mode 100644 index 0000000..20ef7ef --- /dev/null +++ b/public/xieyi.html @@ -0,0 +1 @@ +

用户注册服务协议

本服务协议是华连科技 聚IPjuip.com)与用户(以下简称)共同缔结的对双方具有约束力的有效契约。

请仔细阅读本服务协议,您注册点击同意后,或您使用聚IP代理的产品和服务(以下简称协议),即视为您已经阅读并同意本服务协议。

一、总则

1. 本服务协议约定

1.1您注册或使用本协议之前,请充分阅读、理解并接受本服务协议的全部内容,一旦同意注册或使用本协议,即表示您已同意遵循本服务协议的全部约定。

1.2聚IP代理有权随时对本服务协议内容及相应的产品和服务进行单方面的变更,并以消息推送、网页公告等方式予以公布告知,而无需另行单独通知您。

1.3若您在本服务协议内容公告或变更后继续使用本服务,视为您已充分阅读、理解并接受变更后的本服务协议内容,并遵循变更后的全部约定。

1.4若您已同意注册或已使用本服务,此后,您不得以未阅读或未同意本服务协议内容等任何理由作任何形式的抗辩。

1.5若您不同意本服务协议,或不同意修改变更后的本服务协议,您应立即停止使用本服务。

2. 双方的权利与义务

2.1双方应共同遵守国家法律、法规、规章等监管政策,不得从事违反国家法律、法律、规章的活动。

2.2双方应遵循相互尊重、平等友好的合作协商,遵守本服务协议的全部约定,共同履行权利和义务。

2.3聚IP代理,应竭诚为用户提供稳定、安全、周到的产品和服务,保障用户信息的隐私安全,履行经营者的义务。

2.4(用户),应合理、合法、合规利用本服务,不得从事任何损害国家或他人的合法权益,否则应独自承担法律责任。

二、账户注册和使用规范

1. 注册者资格

1.1您应年满18周岁,具备完全民事权利能力和完全民事行为能力的自然人、法人或其他组织(以下统称法律主体)。

1.2您若是未成年人或被限制民事行为能力,则您不具备法律主体资格,聚IP代理有权注销(永久冻结)您的账户,并向您及您的监护人索偿。

1.3您若是外国人(不拥有中国国籍),使用本服务应当遵守中国法律、法规、规章等监管政策,否则,我们有权终止您的服务,且余额不退。

2. 注册账户和实名认证

2.1您按照注册页面提示填写信息、阅读并同意本服务协议、完成全部注册操作后,或您以其他聚IP代理提供的方式注册或使用本服务时,您即接受本服务协议的全部约定。您可以使用您提供的手机号码或者聚IP代理允许的其它方式作为登录手段进入本网站。

2.2您已仔细阅读并同意本服务协议后,在本网站完成注册程序并注册成功后,您即已获得了聚IP代理账户,可以登录本网站。

2.3您在注册成功账户后,应当遵守国家互联网法律法规,履行互联网监管政策,更好的享受本服务。

2.4聚IP代理允许一个法律主体拥有多个聚IP代理账户,但一个聚IP代理账户仅能对应唯一的法律主体

2.5您已了解并同意,为保证账户和交易安全,聚IP代理有权随时要求您完成聚IP代理账户的实名认证;同时,聚IP代理可能会就某些产品或服务的开通、功能调整优化等,要求您提供更多的身份资料和信息,做进一步的身份认证或资格验证,您的账户只有在通过这些认证和验证之后,方可获得使用相关产品或服务的资格。

2.6通常情况下,您的聚IP代理账户是您在本网站进行一切活动的唯一身份识别依据,每一个聚IP代理账户都可以在本网站独立开展活动。

3. 信息完整和使用

3.1聚IP代理有义务为每一位用户提供优质、高效、周到的产品或服务,因此需要您提供的信息真实、完整。

3.2您应当准确填写并及时更新您提供的手机号码、联系电话资料信息,以便聚IP代理或聚IP相关服务方能够与您进行有效联系,告知您及时续费、产品调整、服务协议变更等信息。因通过您留下的联系方式无法与您取得联系,导致您在使用聚IP代理服务过程中产生的任何损失或增加费用的,应由您完全独自承担。您了解并同意,您有义务保持您提供的联系方式的有效性,如有变更、遗失等需要更新的,您应按聚IP代理的要求及时进行变更操作。

3.3您的用户信息,可能会用于聚IP代理、聚IP科技及聚IP相关服务方为您提供最新的产品介绍或增值服务,以及折扣促销、续费通知、发票邮寄、广告等。

4. 账户保护和安全

4.1聚IP代理非常重视每一位用户的账户安全,尊重每一位用户的信息隐私,有义务保护每一位用户的账户安全,并采取了很多的安全措施。

4.2聚IP代理对每一位用户的账户信息,都做了加密处理,除了您、聚IP管理员、公安机关可以查看或修改外,其它任何人都无权查看或修改用户账户。

4.3聚IP代理非常重视用户的密码安全,并做了多重加密,除了您之外,任何人(包括聚IP管理员、公安机关)都无法知晓您的密码,忘记了只能重置。

4.4您登录聚IP代理网站后离开时记得须退出登录,因您的泄露、过失、或未能遵守本服务协议的规定而发生的任何损失,聚IP代理不承担任何责任。

4.5您应当理解聚IP代理对您的请求采取行动需要合理的处理时间,对在完成您的请求之前,已经产生的任何后果或损失,聚IP代理不承担任何责任。

4.6聚IP代理将全力保护您的账户安全,但不保证在任何时间、任何地点、任何环境下都能够有效,因特殊原因或外力干扰而产生的损失,聚IP代理不承担责任。

5. 司法协助和配合

5.1聚IP代理遵守国家法律法规,合法合规开展公司业务,秉承服务客户,坚守诚信经营。

5.2聚IP代理将严格保护每一位用户的账户安全和信息隐私,但遇到以下情形除外:

a)公安机关、法院、检察院、安全部门等因司法调查或司法鉴定,需要聚IP代理提供技术协助或配合调查的;

b)您利用本服务从事有损国家或他人合法权益,司法机关或受害人要求聚IP代理提供技术协助或配合调查的;

c)您利用虚假信息、虚假交易、侵害聚IP代理网站安全、违反本服务协议等行为,聚IP代理有权终止为您提供服务,并保留进一步追究的权利;

d)您利用本服务或虚假信息,从事任何违反国家法律、法规、规章等行为,您应当独自承担一切责任和法律后果,聚IP代理不承担任何责任。

三、网站服务使用守则

为有效保障您使用本服务的合法权益,您理解并同意接受本网站服务使用守则:

1. 您向聚IP代理发出的指令,包括但不限于以下方式均视为您本人的指令,不可撤回或撤销,您应对指令所产生的任何结果承担责任:

1.1通过您的聚IP代理账户和密码进行的所有操作;

1.2通过与您的账号绑定的手机号码向聚IP代理发送的所有操作;

1.3通过与您的账号绑定的其他硬件、终端、软件、代号、编码、代码、其他账户名等有形体或无形体向聚IP代理发送的所有操作;

1.4其他聚IP代理与您的约定,或聚IP代理认可的其他方式。

2. 您在使用本服务过程中,包括但不限于以下规则均视为您本人已知晓并同意:

2.1本服务协议内容、本站网页上出现的关于交易操作的提示,或聚IP代理通过短信、电话等发送给您的信息内容是您使用本服务的相关规则;

2.2聚IP代理有权单方修改服务的相关规则,而无须征得您的同意,服务规则应以您使用本服务时的网页提示,或发送给您短信、电话等为准;

2.3其他聚IP代理与您的约定,或聚IP代理认可的其他方式。

3. 聚IP代理通过在本站网页的提示信息,或发送给您的短信、电话等信息,不保证您能够收到或查看,但聚IP代理不因此承担任何后果。

4. 聚IP代理及其关联企业、产品、服务等,为了更好的服务和产品体验,在征得您的授权后可以取得您使用本服务的相关资料和账户信息。

5. 聚IP代理为您提供本服务的过程中,有权对您产品收费、订单处理、发票开具、合同签订等,具体包括但不限于以下:

5.1聚IP代理有权依照相应产品和服务的收费介绍、订单、折扣、促销、协议等向您收取服务费用;

5.2聚IP代理有权制定和调整服务费用,具体服务费用以本服务网页介绍的收费、付款方式为准;

5.3聚IP代理有权制定和调整产品介绍、服务内容、订单处理、发票开具、合同签订的方式;

5.4聚IP代理有权制定和调整提供本服务中的其他事项。

四、您的权利和义务

感谢您选择聚IP科技,聚IP代理竭诚为您提供优质服务,您将享受以下权利和履行以下义务:

1. 您享有聚IP代理提供的产品技术服务、技术支持、客服咨询、开具发票等服务。

2. 您享有聚IP代理提供稳定、可用、安全的技术产品服务,以及问题申诉、投诉反馈的权利。

3. 您在享受本服务的同时,应该履行自己的义务,包括但不限于以下义务:

3.1您使用本服务时,应当遵守本服务协议,或聚IP代理认定的其他服务协议或决定;

3.2您使用本服务时,应当遵守聚IP代理的价格、折扣等服务费用,并应当及时按时付款,不得拖欠费用;

3.3您使用本服务时,应当真实、准确、及时填写邮箱、手机号码等信息,方便聚IP代理及时通知您续费;

3.4您在任何时候、任何地点、任何场景等情形下,都不得利用技术或其他手段破坏或扰乱本网站及聚IP科技关联网站;

3.5您在任何时候、任何地点、任何场景等情形下,都应当遵守并维护聚IP代理和聚IP科技的知识产权,不得损害侵权

4. 您在享受本服务的同时,应当遵守法律法规和社会道德,包括但不限于以下义务:

4.1您必须遵守国家的法律、法规、规章等政策制度,遵从社会公共道德和行业惯例,不得损害国家、企业、他人的合法权益;

4.2您不得违反国家规定的政治宣传或新闻信息,不得涉及国家秘密或安全的信息,不得从事博彩有奖、赌博游戏等业务;

4.3您不得从事封建迷信或淫秽、色情、下流的信息或教唆犯罪的信息,不得违反国家民族和宗教政策的信息等业务;

4.4您不得妨碍互联网运行安全的信息,不得进行钓鱼、黑客、网络诈骗等非法行为,不得涉嫌病毒、木马、恶意代码等;

4.5您不得对其他网站、主机进行涉嫌攻击行为如扫描、嗅探、ARP欺骗、DOS等,不得侵害社会秩序、社会治安等信息或内容;

4.6您承诺不得为他人发布上述不符合国家规定或本服务协议约定的信息内容提供任何便利,包括但不限于设置URL、域名攻击等。

5. 您在享受本服务的同时,应当遵守国际规则和行业惯例,包括但不限于以下义务:

5.1您应当维护互联网安全,不应出现任何破坏或试图破坏网络安全的行为等;

5.2您和您的关联方不是任何国家、国际组织或者地域实施的贸易限制,制裁或者其他法律限制的对象;

5.3您不得利用本服务从事损害任何国家、国际组织或者其他企业或个人的合法权益,否则需自行承担全部责任。

6. 您若违反了以上义务,聚IP代理有权删除信息、终止服务、索取赔偿,因此造成的损失您应当承担全部责任。

五、聚IP代理的权利和义务

聚IP代理作为本服务提供方,竭诚为您提供优质服务,聚IP代理将享受以下权利和履行以下义务:

1. 聚IP代理根据您购买的产品和服务,向您提供对应的产品技术服务和技术支持。

2. 聚IP代理应恪尽职守,积极为您提供稳定、可用、安全的产品技术服务和支持。

3. 聚IP代理应尊重并保护您的账户资料安全,包括以下义务:

3.1聚IP代理应该履行保护您账户资料等相关信息安全的义务,加强信息加密等技术手段;

3.2聚IP代理应该积极理解并处理您的问题申诉、投诉反馈等,做到有问必答,言必信、行必果;

3.3聚IP代理应该优先服务于购买产品技术服务的付费客户,并积极提供技术支持、客服咨询等;

4. 聚IP代理应该尊重并保护您的信息隐私,但以下情形除外:

4.1依据本服务协议或者您与聚IP代理之间的其他服务协议、合同、在线条款等规定;

4.2依据法律、法规、规章等监管政策的规定,或司法、行政等权力部门要求的规定;

4.3您同意并授权聚IP代理及其聚IP科技关联方合理使用的情形;

4.4您损害国家、企业、他人的合法权益,或他人举报要求协助调查的情形;

4.5聚IP代理为防止严重违法行为或涉嫌犯罪行为发生而采取的必要合理行动的情形;

4.6聚IP代理依据经营决策或掌握的证据认定的其他情形。

5. 聚IP代理应该保障您的资金安全和服务正常,但以下情形除外:

5.1您利用本服务从事违反国家国家的法律、法规、规章等政策制度,或损害社会公共道德等行为;

5.2司法、行政等权力部门要求资产冻结的,或您违反了本服务协议或聚IP代理认定的其他情形;

5.3您非法篡改的获利,或他人错误汇入的款项,或聚IP代理依据掌握的证据认定的其他情形。

6. 聚IP代理按协议规定,冻结资金和终止服务后,因此造成的损失您应当承担全部责任。

六、隐私保护

聚IP代理非常重视您的隐私保护,您同意本服务协议或使用本服务即遵从以下规则:

1. 隐私权适用范围

1.1聚IP用户注册、登录,或通过第三方注册、登录等,会记录您必要的个人身份识别信息。

1.2聚IP用户在使用聚IP产品和服务,聚IP的商业合作伙伴产品和服务,会共享您的身份识别信息。

1.3隐私权政策适用于所有聚IP用户,聚IP科技,聚IP雇员,及聚IP的所有商业合作伙伴,聚IP科技拥有解释权。

2. 信息收集和使用

2.1您注册登录聚IP账户,使用聚IP产品和服务,或参加折扣、促销等活动,会收集您的个人身份识别信息。

2.2聚IP会将这些资料用于:改进为您提供的服务和支持,满足您对产品的需求,通知您最新的产品信息或续费,提供增值服务等。

3. 信息公开与共享

聚IP不会将您的个人识别信息出租或出售给任何人,以下情况除外:

3.1您许可同意第三方共享个人资料,或聚IP用于广告和优惠;

3.2只有获取您的个人资料,才能提供您所要求的产品和服务;

3.3依法按照司法、行政、法律命令或遵循法律程序、法规等;

3.4发现您违反了聚IP产品和服务条款或相关产品和服务的使用规定。

3.5聚IP认定的其他情形。

4. 账户信息权限

4.1聚IP赋予您在任何时候,修改、删除聚IP账户信息的权利。

4.2聚IP要求您提供的信息真实、可信、及时、完整,并检测合法性。

4.3聚IP可以给您发送定制化的信息,包含但不限于续费、产品介绍。

5. 安全保障

5.1您的聚IP账户,具有密码保护功能(多层以上加密),以确保您的账户信息安全。

5.2请牢记您注册聚IP手机号码,它将用于您的登录、密码修改和重置,获取最新产品和服务等权利。

5.3利用本公司产品恶意攻击他人网站,或从事违法违规行为,本站有权禁止其访问,配合公安机关调查,且余额不退。

6. 隐私权修订

6.1根据国家法律法规或聚IP经营需要的要求,聚IP可能会对隐私权政策进行修订,修订内容会及时在聚IP网页公示。

6.2为给您提供更多的聚IP相关产品的服务,可能会使用您的账户信息,在使用前我们将会提示并征求您的授权许可。

6.3隐私政策的最终目的,是更好为您提供产品和服务,您使用聚IP产品和服务时,聚IP将最大限度的保护您的隐私。

七、特殊情形和责任范围

聚IP代理会全力保障产品和服务的稳定、可用、安全,但特殊情况下可能除外,您需同意以下约定:

1.聚IP代理因特殊情形导致系统中断故障,或其他原因无法提供服务,将不承担责任,该特殊情形包含但不限于:

1.1聚IP代理系统升级、停机维护、故障排查、监管审查等期间;

1.2机房故障、电信设备故障等造成服务器无法正常运行,网络中断、传输过慢、域名解析等故障造成数据无法正常传输;

1.3因台风、地震、海啸、洪水、停电、战争、恐怖袭击等不可抗力的因素,造成系统障碍无法正常提供服务;

1.4因黑客攻击、病毒感染、恶意破坏、电信部门技术调整或故障、第三方支付等原因造成的服务中断或延迟;

1.5因您的个人操作失误或聚IP代理认定的其他特殊情形,聚IP代理都将不承担责任。

2. 您和聚IP代理,双方在享受权利的同时,也应当履行各自的义务,共同遵守以下责任范围的约定:

1.1您使用本服务、违反本服务协议或在您的账户下采取的任何行动,而导致的任何索赔或损失,您应当独自承担全部责任;

1.2您违反本服务协议,造成聚IP代理及其关联公司、员工、客户和合作伙伴的任何索赔或损失,您应当独自承担全部责任;

1.3聚IP代理仅对本服务协议中明确列明的义务承担范围内的责任,因本服务协议内容的不明确等引起争议聚IP拥有解释权;

1.4您和聚IP代理另外签订的补充协议、合同条款等有明确规定的,按照其规定进行通知和执行,并承担各自的约定或义务;

1.5聚IP代理提供本服务的合作单位,其所提供之服务品质及内容由该合作单位自行负责。

3.聚IP代理认定的其他特殊情形,或未明确规定的责任范围,聚IP代理保留最终解释的权利。

九、商标、专利、版权等知识产权保护

聚IP代理及聚IP科技拥有本网站、聚IP等全部的知识产权,您应当维护聚IP的全部知识产权,并遵守以下约定:

1.聚IP代理拥有本网站上所有内容,包括但不限于著作、图片、设计、架构、创意等全部知识产权;

2.聚IP代理及聚IP科技等关联企业,拥有本网站及关联网站的全部知识产权,包括但不限于商标、专利、版权、商业秘密等;

3.您没有得到聚IP代理的书面授权,任何人不得擅自使用、修改、复制、传播、改变、发行或公开发表本网站上程序或内容;

4.聚IP代理及聚IP科技等关联企业,对于任何人侵犯本网站、聚IP等知识产权的行为,将坚决追究其法律责任,并索取赔偿。

十、法律适用和最终解释权

本服务协议适用于中国的法律法规、社会公共道德的约束,最终解释权归聚IP代理所有,具体规则如下:

1.本服务协议之制定、变更、效力、解释、执行和争议解决适用于中华人民共和国法律、法规及监管措施;

2.本服务协议产生之纠纷、争议等,应依照中华人民共和国法律予以解决,或提交人民法院审判;

3.本服务协议可能存在不清晰、不明确、不准确等内容,应遵守公正平等的原则由您和聚IP代理共同协商解决;

4.若因本服务协议内容的不清晰、不明确、不准确等原因引起争议,应由聚IP代理行使解释权,促进问题解决;

5.本服务协议的制定、修改、解释等权利,最终归属聚IP代理及郑州华连网络科技有限公司所有。

\ No newline at end of file diff --git a/src/admin/nav-menu.tsx b/src/admin/nav-menu.tsx index 30654d5..c24b11b 100644 --- a/src/admin/nav-menu.tsx +++ b/src/admin/nav-menu.tsx @@ -11,7 +11,7 @@ export function AdminNavMenu() { IP线路表 - 软件下载 + 软件下载 帮助/教程 ) @@ -153,60 +153,60 @@ function ProductDropdown() { title="动静态IP" desc="千万级动态短效IP,自动去重,高并发采集" tag="热门" - onClick={() => handleClick("/product/short")} + onClick={() => handleClick("/product?tab=short")} /> handleClick("/product/long")} + onClick={() => handleClick("/product?tab=long")} /> handleClick("/product/global")} + onClick={() => handleClick("/product?tab=global")} /> handleClick("/product/tunnel")} + onClick={() => handleClick("/product?tab=tunnel")} /> handleClick("/product/exclusive")} + onClick={() => handleClick("/product?tab=exclusive")} /> handleClick("/product/static")} + onClick={() => handleClick("/product?tab=static")} />
热门推荐: |
) - // if (!isValid) { - // return ( - // - // ) - // } + if (!isValid) { + return ( + + ) + } return <>{children} } diff --git a/src/docs/android-proxy/images/android.webp b/src/docs/android-proxy/images/android.webp new file mode 100644 index 0000000000000000000000000000000000000000..230e01d4e338d7d96d23b784705a0c7d691cf972 GIT binary patch literal 10338 zcmZXWb95z4^XFsRGnv@d#I|ianP_6?#t^EIXrJeOclWpFZ2#5gbXR|? zt3FlTD$)`XI@Dlbn&Ki#8cJNm3jfR3%nZNQh`mu<)z${rHRGz6?aP z5=TkY{8jZ;^r5*2`)c@@_xg3#%g~b{nEsXasreyzP1QU*>o@K<^F?)w`Q8iaeHR1@ zCVg=deSP$PUVeQ&3w*SGeG-SsX1;hg#Cf8mvEM$M5?*}W1>noO;0Z^>ML|-=iY5{R zNfu6e2(L`HEhL8e(b^Efd`orx8OGdA3GWCPZT4?Q_>Xw>R{Qi=rV-Tv8*m?t68*|2<+yw4~S4AO>agc69!h5(0;>J zJ;ICzWMC!-aiGSP=??SxSnq^Z3#snPp<)h7a@Ww(eK^HlCz0iKCLqroOH2S{l_u| zE$IqH1lAwwZV46ZlkESaN>hwM{rMN!LpwffN@cQWC*E`Xxw9dv8_WNp@*kw8-Gj-w zf5Jp`a7%R41Do&AtW7|oN0+t6TK{g=KYwzD(Ehqgh(Y(#af;f*`7WU~?_II@ub~eo zP7Hq4|8PugJgZ~|re0(8SL30*F02#pQ3$mrX|@kkoe0>EI*ZQ`VJMl&g(8?xrQw^6DX2$brJ)_9b9ix_tHM4f15^=C4?r+k$ zf8HE>SW)ZcC_(h2L}M=PwXcqjY<6-fDw+Rb?VmanthM6(XW?JJA39uou(ym`&0|cA zlceOs28?W?A&JsT!MTt6{W01s7@*D?UT+2>{uA(&u+-e5Z?2`P{`<(hP3$3(RSF)S zj12*9SH+Y(%cK}#c<-W}A=t*MoByE-9$fK6AG}g*A{e>RjP5_d+eKq4lDTbY{7%_? zU{c(=Fd42Wf`F733>oZ>Nb~d~=ide~=-efbtJkPlnOpQET+6BPpRO^u9bJXB@J|u_ zlO`s?;6`b~*v1VjXOZ^E!uy)`k?ivoJ=1@i#{MiPSG#`ZZ|3B~H2pt{&=AZYpFMB? zVF7uz&l`n6BOmmS#CEjzn4?sEoG>k4p>DqKe|5M0MZFSAoJOS?bw@o-h|2Ei?$si} zlR_Jr`{p(7RN|zfp&81=f;N(JDBn%;E6|daH?{&5+ijtW0EB&ZfCh-5f~EP=`=sI*%?pJBc^qy8q(R$T!$@gf3b zZLRwIV@MKe^=h4P4Kg7z+uq)W5s?!fs)rY#xXrGqdq^oQ;Xjh(9g3SVx922F?@2S! z4lnw!tvBZuK!ET2t-C`gwA=!*R*ZsvW=~9#HR!5>QC6G*1=gfxdJ-1|{0-g^a0tX; z(sB)Ql(LZi0+9Z4WR70POj1x_|BQ2J=9H)YrLq3*%A3-g97S--O(eLq`WX!I%y@c7 zKP~J0)?=rAWp**@VVqov)hvAv_4VT)G{TJ^+G}~6(dUOOYh+NY>6tx)xs*L>fFE$? zIBd7cL!Z!e^av#GJ<=E-1>gOEUsNUiTjLhBzeT@q!Yy;tOjr{zNsh*`hb#|0$nuzs z7(C+%ih}d=*w|FxNgfQfGV`uoUUA&ZGb~kDjs6foM-N%ud$zCJYmN1#|E74LE_xjc zwsH-qSPfJnBs6(QB{!=%1I(6XyUPW`A2k|U9`Dx3Q+Xxrg52Mvbn^YDWEZ>jRo$=+ zF+pW6q>#|4&fC4uS(D}j+orx8A$ivlA(GO#np!c+?WT zu6i7pq!rSFDa*g4mT8!2&fS*Zm89ZxiR+)>FeGyz9I~7BfDDn;o*R|75{mt2&KBbH z?HU-&zdmKT#VuF1OYHXX)S4#@dpkX4LNSR1p2oZM^o`zF5`+8JS*j9Nb>DwZSJwC+! ztQsGY=GX}ehP)jTblHyWkNVDUpJS48PCr>qaSw{8S*JI9DeCNfAVS=9PU1RQ{2e!WuVu!s5$H2U!nL;-GfnqVefxU6r@s@X7z0MkOHT{D@EH?^JYVNA>BR7&)bN9A@36i+7Kp{KcaXI zb>pq#iV%cFr?wyR>IS)0``?+AF?WLn_73K1m%r=!2Gm+Lr8hq7BKX0z^j7d25as(_ zdIP)+J*VnfI%c62DloMum!p}V^6Sbjmx7&KSWET1s{@ss!~9a{+5Z?ir-n*%onWgy zxhTPmzPRM`Ec1ZZ-COd+vI02dv?rr^7Fwi30)U4=)*zZn6{CCn7)syw>9(-+}9Ua3dmf zd|Yi~%YG_q^kCU59PUNux!G|luEjy1jX?JGiAgxm?IHAQoGFt(G&H9n)^KE|l(=zyPnK1=N zjJAr3!<7PTAJ@9ij1=>`U;QnB72IZUbf+e{UylN8RTks%o=he)KFoSGIqu|$4p2cg znAQI6I%a$9sy_+=8IDVmr`P0{F@Wqp_DG5++FcU0)61(-(oYP=&uArVNxm_RgI=7; zLND~yvt=Z?CF2libf(`v?|Vq#1~Lc=SNv;wFnr9$-_5?ydT<&~ETlm}+e(_o!{o{T z1?j$PRrhT3Vcs9&Z_^>$ zT`GHwspFWso1crA_o6opHV5@)Cp4^Do`Ky#x2mRw*FCvGB+W7Nft{kk^RdH$twWPx ztaYg78u;UO5*a*9OVW){3pzdA*9}Kgr~2X8kXzHp7ri*fUWeA9^p>B}|CpWb5E$Lb_*-}(2YIvLx_$78ntLLU*ahGS1uL1_Jr(R z;g;Hja5?h7(7MJFFDI^IKn!AN5eBB@^CZ6WU@i9HHf9QZ_L9MX?=Hwc?MVi$9-OedgM9iwU&K0GZ!fUW;#eq|x3?QYWQV zT80Csm&?DN&uM?wKcV2;x`bi`Ln$cRvl+VivX0r5?>z6}Wi8Kw!wIBOPPWWww2Hpm zH`eHsN5mt%Jn}p>Fg>q$)6hrkebKeauY&u1;?y0;O@J?=Q{F?0GPi*@N9;nQWqt?@ zn)qy6wI2+QC#p+ZXBW2LG>XS|shWej6iZohLn72VVYGEMC~!bDAr_Z_U>L2<{)7pm zxsI@v%gw;@cC{+r>lu@0bF%m}_aRpOGY01$*P}ID z)`#YHS{1ccajyuo_Yx@U-L|A)`MDF}?wJ~-OKRTPKYutxPzQCZ%Q)MNb)Yae@X!w6 zWgtQVCygzoT2b&7{4{Es6U&}Idn?Xf1(vq@33o>EJA|vtk3%4L(9PGP%(Y;W936K+nzT z)3uYgcoUv(hwg0HHwmAz=LhTxK{>C@{vG~ItD0J=az>%lRFU%!JOED<2e|ZD^!See z6?YvW79Eu?T9h;YguTL1-WnLPYeKRT`LtS_8z)~ByWH9JPid#XfJ}kfQWzL94_U%e zxI-Kik6ehwhV*Xg-ZobngQH~rf)Si*b#v&)EGMJV zUw0Ts`+j$Fr|m*X;f}oeqMu)xGY`t5{BRI{6X^FGQ22ZabqB zS|Djs+ao$ZpnwV0&ucn^~dLY)SKzltlY*G51NZHPn1liTtYSnWhqOv z1ELiOKrqBhT}X4(YT4@+LwNv(<_89hXA!|hqasY9+ri+jMm5Naj5`MWnT#JC z*(I&UY>|bI!)(1)J9uoJTGhptg(qY#m%3~9KK=}!HM;M?S5l>8>mC1Z7JmaO1AT?O zLK?KUPS@TZLh`Zc^F?Gy^C+Z4b6$U}?aK4b#lTtRxwjw37G%O)rmpoQ2`Y0Zm#*Cb zy*Ca6UNRy!3E@x&{=^S(_#L{4AA=iS{9~wJ8yUk9Heh%~ydrv8zu~wsS|&4&QXji8 zPIhvSu3clb2V@8Wx^A@e9M*n#zeq|k+On*&lGSoS$ep=RGe$qgc^7`6Hb~TvnFOp$ z5b#<>qfhS@gde;0VYKO%EuOAP4?htN&m7&9Ui9eH`B%SsY;D{E8xWHF)d!!SbXq;M ztlkn*Gz6rpm*Iyjxek$8bQ=8I=VzF#A=qzD(yd$0b7%zUM^>gh#rE^|a{$ ztkYyB*A&Se;PO}}YtZ)m?P&l~OkE}1Hdn#6FFYuS?PpnrEo$h;e&O;WEKjzVzxbyi7FLpMGFT_BAe)o1y*f7DGOY48fPX2 zW~sXnvjB$NuR5-)$&g7f)+%HgwEe@9F~g8a7@pDCK-hyJwUm1B{`v9o_=5f1OxS^N z%{;wD`leEdbxgLsVKA5l%-4C>BuN%W4rFaHefc?!@2&=YvdLQ~L(b=CmqXoJzm??y zM>2P$3Q5)Ev9jq8Dfp~6qpPrv+t|;|bRqB@q{U8$sysMU4L?3l@(MZ)`Zu?!H~B2U zdL@`mD8a$hmbrydYl1p1sU#i{yM4hLy#U*cm3&VS+O5U-QIraB46W~vbcxwOM&vhq z!(klB@~CC>OIG(}vo|RRG-N{Js>m%47$74$j2vqw2>dX}fb(v+%);j7HVDh;TsEa4 z-9guip5$Vv-;OYv*G?2G@IL#g?D#!Sv6lTJ(qOatcnoe&YB%nLKX^bJ%)rwd>@rT+ zRdQK#e}7T5b){ph2H-1JY7CT5IS8@lE-wHa@~)t{E5unUu@BSJ6%YTE3d9p;XCKX` zG1VR($XdJh46NTs@j*~BeABTFsS zHx6Y2^Kz_>9uRX{#`4{#vBWX~hXL^ViP)Hf`0pbFrN2{R71^w=+oq?4s`|@Yd3X3! z5b%4+NF(FKm=!4AW;LS;U$!tSZs4lB^3Ad3*Bm*dO}~ns*Dq(_6B>m(oN~ z>dO4C>~o7$;*|(;-K+vA38}NFXoOmn7@4b!6hs>jQj8yNEYu?VpFc z5Q-Of(un0U+*|ip2HV4Tcj5k@(eM6Hlyd;+ZM7oa6#82u)ExP)`B5^wU87E7I(Im| zA{$DZ0Q-ZYnBHxcw~TVCvz@-(fu!Cto1$0`PP@QHnCG&v2|ddZ^$AJ4BJzcWz1bY^ z0WNmskj5QxSsLfB9BH5VU@L{hIYpQFIS8RU8}5y%2|NTIZ^-%psdu8<)}1hucrh17 zyS6kwWF7gZSY(WoT^c{r`m#!!stxvv!u$&*r}D?$dFk&CdE?#wk{7xmTJjjG-tG*; zLs3j=;?OPVhGOzLiY1oD5G?O+d5%@*=|hz6#bj}q35uZ3cBLW-b-bj?>~SW0mZ1jJ zqzWtSi*9N!wsK@c-cLR7fzw{c1`(8f7DazBFqF1ajtonl9x&*79t>BY7Q)3xn@!H<1c3={E>mK_bV}p~#3RUkpqx9Z;^OK4@JPM; zX5(%ru60!`a`r=BjJ<9I zYNoUiIDwk*T#drqatt)KABB8Iko{^ElR#!uBy&G=uGi=N`VPdNqm_$d*jUK z%@{uDmZ~i=OWFPEKq~WM&UlKh@g!BE90N0UI&7LT>xAeCUUJJ)3WU8%a%1C%#xXSjh)n=^pI19%ST3w1h9{R zYWx#7#EMIZj-iHF&DH2GKz0vRkiK{wn!w>vv;6fne&!g%-6iKz@Dupo; z5e#zLpg=%1J^XMUVV0H4b2-r3eD$;wdku*{FW$eEPs^P+Q@Fk4n^1n^M;!WTIVq^v zULDK9MxImgm?&&K!wxBy;rP7Yt_oK%QHX`IHf9uLxTG-NUB=@=$0k18qrX42M)TRg zO-UT|S0ub~x?I_7F_-p$ctNc(C_i)68bei#D!sirP*sJsogj=qt*07@mcPZPW1idK zF+&qjgJ^m_m6mtycbYx6@-xRrIj~SiC5DJOUFgBKcs6%5Xwg1?_^^qQjbBH)Me}y* zzJZ8XVBpNXf;6|UkJS-h!9HNsI8@w*uI*8maF|9u!1kAJfIPbMySIkge(2@x-tY&! z&DjRY$xtvhky}w5aM%TDOVZBS-xYe+=uv>aaMf>;MlQp;?T85FIz39F)l(^PV4Qff zRu6P8*6SICge$$kPKoI9J7&IvQ{rrGac&g$?{q-ro^iB{+f7qm8FfIKkUoG8+%i9- zjWdTXwq6JU`P=<$-R2{7JP(GnK}_0yz=aS|!!8DYx!6iegPw+ugDdKl%32f04nod5icbH8dVkXsjB=yXmo-eXF$pnKUX9uYacWX8Iw3Hjb}|IO($u7VEoI@}KkYDQMyhO4>fsY)t$qpc=El3D}4 zod$>zc`FpVm+yBm&cEC(_YOtuXz|mln@0DNPNpXZ7o07TG;1o})Z(~KMH@f2lV1$u zk=7|!G_;0VdH|&_i~dAC;f+X|^i${hW*5Y59bV=i28a`|4Sh4h zLUddO!6>&{Nx6w#=bx${!kyxM-Ag~Q-^*JB zZZDMnxPAJnc^o{zg-O3}-!TPIoKx7N^o=8vL;Kml1sP!$wrYV%8a!${Wm!z>A-;kW z3%+38b%k?Wg!FgbUfS`gT*3WRk?>sJ^)k#U;|eRoK+tNk()!`!0CAA+j}%|5nW!TthzUZ3V4^Hy^Z1noY~lg+c)3LnRyfSVgki6#ylz9Y*A4q zzq+9Javs7ZAo!P&jNAh{KKkxN&9$g@i?&N|pDH+JW2VV6a{`xr(5UDZ$lG!j{*x9w zwC5>FL8$7Hu5R>%U?>W(sZ>veT6>i7#*o)0~_r>x}1-kH4)!MsnD10=5ojE<9mi^2I*NtDKsj z&HbuBXE$2)9zf7wj$QV={V_GKa4|pyB>VO@mYA`!n{c5s`dWof3gZCJ-k-)dL-QyL z66MN(f%UB7c9%;xAah*GTeJ!kN;W^PGzk~)ww8ltA5urJ{Qa2o8CtW+ensaGu}p${ z)D*O4kST_uqfg#zs1RBQyzso`^^7ULK%=t1mI=#-zQiJy{T#1T>zKd$?QzcB@PZ!> zIcFO={a!#trbr|f$UVpvOx#R zndtPF_@1|~mX(VqYirUea5%R<@j6vBr!u_BXGR(`-fj*BN+c?txX(qu2-0#@yJ9%61Y;L)7Dq^|-+w8Giz zwzmJ(o@-7CjAo>m<4C%Jk7V7cp+LYz+OZ6;2}2SKg#it#-AEbcQ?7B8jHaSE z^ytGp0)oiUy9DeuedlDJPLt$Y&L#m@9(9sMhB?IJ(n!BVQXr6Wi$z8-t41SZRlN3x z%%At(Sa_)b_2)ht_96Mg->`PFyvat8Vf3rW(GY>sA#C9$Nv-H(RzZ`6V7Iw0v zI{6%A4sK0YP7X1f+o_rYv`jZ1+*`~?rw{ARxi;#E_oW{qLQ>w}JlIKw4Vxq@j}H+? zvqE}m@SZd*$QR#;mN*zB3dPTcVYn8SsCEK;me_PUWrPWRrFgAs9ekIB!p$}_|1|$K zjMTApOD`{#bOymqhqdWcr;!XFf&I?rw!WuJfSh~o8rO}j>m(L|1ra4ULs~*vzIxj{ zwMMpwqx{@Ir6v|cwhFu=HR^kR9V-;Hj1AFn2#kk&V+O~?eR;H_Cq&4IjNW$wi z+>3J8@2tIz%Muh!;kP7B6~&VCl3X25Dbm20nMfNQKPCcHrj^y{BwnOC)1*<5sPEIJ@MH37(H?r_2V6jKJ{n@NT{*Q8fAa4rkqaqF%mF zNjEfqo-R*eyIM()fSm;d!;8`~__m~#lAjhrh*0%p4fB&4=M_^_DzAIHd@G}a zoAz(L^tSCkMLwW|)+)*=G3Qt+$0K<@%YLA|I>s@i6DSWXnl?B4FbHq-uI{7yHm zLl-Aqi#rReM;)AtmcvhrPg3=c6>i2WvxK|`YNnN`CA;^!$ic`R({^h zBDXTvx3lO86cwH=E;W{sioNK7OyIb{E!&g)QulsIj8Jjt;33r8DUnk41Gjh@iuh=S z3mF`5My6Xb!!0@HsF?%^SF(p8n_WUaf*XkQvGI%0+zj3c4K}}tvIDlNTa&PseI)IV zjP;*OuC<@9xLJnBc;3*JQK8;mn3{(xDq7s{p`4n3!(|Lc# zYG_7Ro@nYK0dRBcf@efyM&(Jc!fRHMTAvv%mvdM3FVB=U@eP~O%!zd=h9^?Je>V$1 zy|Zb!(zzZQIT+~?hm&?Urd^sZY{$aM=SLeg*Bz(nlDG!eb6C^S`hYzCAff!n;&g2k zwKAo}pk4tCNVfI|Hgh78$Nl@Jy%e{FV9wkwra z{4(4vi#Nng_3miK27_204~CgvGK!b@OLx~5Z+iX7F&_g<WNsxVNQ0fEUqy*Vgju+PInc z5AuKtwBU_Pvt0bfjQgKJk<@XwwX$o1Kgdywu{0!91QVa_1oW=-@2U}n_CaK9JN#TS5`>xA*k55_pF6aV81E1-VOb?ZR J@j-)u{V!X)dME$@ literal 0 HcmV?d00001 diff --git a/src/docs/android-proxy/images/android01.webp b/src/docs/android-proxy/images/android01.webp new file mode 100644 index 0000000000000000000000000000000000000000..752b47546d996130f8e391794832f8c796f301ee GIT binary patch literal 9254 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 CN9dXW literal 0 HcmV?d00001 diff --git a/src/docs/android-proxy/images/android02.webp b/src/docs/android-proxy/images/android02.webp new file mode 100644 index 0000000000000000000000000000000000000000..665a22e1715d6d03a8fedd9e9982bead9feb29ee GIT binary patch literal 14352 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 literal 0 HcmV?d00001 diff --git a/src/docs/android-proxy/page.mdx b/src/docs/android-proxy/page.mdx new file mode 100644 index 0000000..923b239 --- /dev/null +++ b/src/docs/android-proxy/page.mdx @@ -0,0 +1,30 @@ +import Image from 'next/image'; +import android from './images/android.webp'; +import android01 from './images/android01.webp'; +import android02 from './images/android02.webp'; + +# 安卓手机设置代理教程 +1、打开设置,进入WLAN + IE浏览器设置 +2、选择已连接的WIFI网络,点小箭头进入设置页面 + IE浏览器设置 +3、将代理设置为“手动”,填写主机名,端口信息,点击右上角保存 + IE浏览器设置 +4、打开手机浏览器搜索IP地址查询,若查询结果和设置的代理IP一致,则代理设置成功 + + diff --git a/src/docs/browser-proxy/images/ieConfig.webp b/src/docs/browser-proxy/images/ieConfig.webp new file mode 100644 index 0000000000000000000000000000000000000000..174821a9043799a27f91eb867a0926e1884bcf8b GIT binary patch literal 8064 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 U;9J1a2c$pP9jM4sf7Ac~01$W#8vp +2、点击“Internet选项”; + +3、弹出“Internet选项”弹窗,选择连接—局域网设置; + IE浏览器设置 +4、在弹出的“局域网LAN设置”中,代理服务器的复选框打上勾,并填写从蓝狐代理获取的ip地址及端口。点击确定,即设置成功了。 diff --git a/src/home/header.tsx b/src/home/header.tsx index fd2c6c9..6549cd9 100644 --- a/src/home/header.tsx +++ b/src/home/header.tsx @@ -1,8 +1,72 @@ -import { useRef, useState, useSyncExternalStore } from "react" +import { useEffect, useRef, useState, useSyncExternalStore } from "react" import { NavLink, useNavigate } from "react-router-dom" +import { logout } from "@/api/auth" import Wrap from "@/components/wrap" import { cn } from "@/lib/utils" +function ProfileOrLogin() { + const [authed, setAuthed] = useState( + () => !!localStorage.getItem("auth_token"), + ) + const navigate = useNavigate() + + useEffect(() => { + const onFocus = () => setAuthed(!!localStorage.getItem("auth_token")) + window.addEventListener("focus", onFocus) + return () => window.removeEventListener("focus", onFocus) + }, []) + + const handleLogout = async () => { + await logout() + } + + if (authed) { + return ( +
+ + +
+ ) + } + + return ( +
+ + 登录 + + + 注册 + +
+ ) +} + export default function Header() { const scroll = useSyncExternalStore( callback => { @@ -47,7 +111,7 @@ export default function Header() { setOpenMenu(false)} /> IP线路表 - 软件下载 + 软件下载 帮助/教程 @@ -79,31 +143,6 @@ const NavItem = ({ ) -function ProfileOrLogin() { - return ( -
- - 登录 - - - 注册 - -
- ) -} - const MenuItem = ({ text, children, @@ -206,60 +245,60 @@ const ProductDropdown = ({ onNavigate }: { onNavigate: () => void }) => { title="动静态IP" desc="千万级动态短效IP,自动去重,高并发采集" tag="热门" - onClick={() => handleClick("/product/short")} + onClick={() => handleClick("/product?tab=short")} /> handleClick("/product/long")} + onClick={() => handleClick("/product?tab=long")} /> handleClick("/product/global")} + onClick={() => handleClick("/product?tab=global")} /> handleClick("/product/tunnel")} + onClick={() => handleClick("/product?tab=tunnel")} /> handleClick("/product/exclusive")} + onClick={() => handleClick("/product?tab=exclusive")} /> handleClick("/product/static")} + onClick={() => handleClick("/product?tab=static")} />
热门推荐: | +
+ + +
+ + +
+ {selectedArticle ? ( + handleArticleClick(prevArticle) + : undefined + } + onNext={ + nextArticle + ? () => handleArticleClick(nextArticle) + : undefined + } + onBack={handleBack} + categoryName={activeCategory?.name} + /> + ) : ( + + )} +
+
+ + + ) +} + +function ArticleList({ + articles, + search, + categoryName, + onArticleClick, +}: { + articles: Article[] + search: string + categoryName?: string + onArticleClick: (article: Article) => void +}) { + return ( +
+

+ {search + ? `搜索"${search}"的结果` + : categoryName + ? categoryName + : "全部文章"} + + 共 {articles.length} 篇 + +

+ + {articles.length === 0 ? ( +
+ +

未找到相关文章,请尝试其他关键词

+
+ ) : ( +
    + {articles.map(article => ( +
  • + +
  • + ))} +
+ )} +
+ ) +} + +function ArticleDetail({ + article, + prev, + next, + onPrev, + onNext, + onBack, + categoryName, +}: { + article: Article + prev: Article | null + next: Article | null + onPrev?: () => void + onNext?: () => void + onBack: () => void + categoryName?: string +}) { + const contentRef = useRef(null) + + useEffect(() => { + if (contentRef.current) { + contentRef.current.innerHTML = article.content + } + }, [article.content]) + + return ( +
+ +

{article.title}

+

{article.createTime}

+
+
+
+ {prev ? ( + + ) : ( + 已是第一篇 + )} +
+
+ {next ? ( + + ) : ( + 已是最后一篇 + )} +
+
+
+ +
+
) } diff --git a/src/home/login/index.tsx b/src/home/login/index.tsx index 19f178b..007b59b 100644 --- a/src/home/login/index.tsx +++ b/src/home/login/index.tsx @@ -1,5 +1,8 @@ +import { EyeIcon, EyeOffIcon } from "lucide-react" import { useEffect, useState } from "react" -import { useLocation, useNavigate } from "react-router-dom" +import { Link, useLocation, useNavigate } from "react-router-dom" +import { toast } from "sonner" +import { login } from "@/api/auth" import { Button } from "@/components/ui/button" import { Card, CardContent } from "@/components/ui/card" import { Checkbox } from "@/components/ui/checkbox" @@ -21,9 +24,9 @@ export default function LoginPage() { return (
@@ -53,7 +56,11 @@ export default function LoginPage() { 注册
- {tab === "login" ? : } + {tab === "login" ? ( + + ) : ( + setTab("login")} /> + )} @@ -62,11 +69,43 @@ export default function LoginPage() { function LoginForm() { const navigate = useNavigate() + const [account, setAccount] = useState("") + const [password, setPassword] = useState("") + const [showPassword, setShowPassword] = useState(false) + const [remember, setRemember] = useState(false) + const [submitting, setSubmitting] = useState(false) - const handleSubmit = (e: React.FormEvent) => { + const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() - navigate("/admin") + if (!account.trim()) { + toast.error("请输入账号") + return + } + if (!password) { + toast.error("请输入密码") + return + } + setSubmitting(true) + try { + const resp = await login({ + username: account, + password, + remember, + mode: "password", + }) + if (resp.success) { + toast.success("登录成功") + navigate("/admin") + } else { + toast.error(resp.message || "登录失败") + } + } catch { + toast.error("网络错误,请重试") + } finally { + setSubmitting(false) + } } + return (
@@ -78,44 +117,166 @@ function LoginForm() { type="text" placeholder="请输入淘宝名/会员手机号码" className="w-full" + value={account} + onChange={e => setAccount(e.target.value)} />
- +
+ setPassword(e.target.value)} + /> + +
- + setRemember(!!v)} + />
- - 手机号不是IP账号,请登陆后开通IP账号 - + + 忘记密码? +
-

首次登录即注册

+

+ 手机号不是IP账号,请登陆后开通IP账号 +

) } -function RegisterForm() { +function RegisterForm({ onSwitchToLogin }: { onSwitchToLogin: () => void }) { + const navigate = useNavigate() + const [phone, setPhone] = useState("") + const [smsCode, setSmsCode] = useState("") + const [smsCountdown, setSmsCountdown] = useState(0) + const [smsLoading, setSmsLoading] = useState(false) + const [newPassword, setNewPassword] = useState("") + const [showPassword, setShowPassword] = useState(false) + const [wx, setWx] = useState("") + const [qq, setQq] = useState("") + const [agreed, setAgreed] = useState(false) + const [submitting, setSubmitting] = useState(false) + + const handleSendSMS = async () => { + if (!/^1\d{10}$/.test(phone)) { + toast.error("请输入正确的手机号") + return + } + + setSmsLoading(true) + try { + const { sendSMS } = await import("@/api/verify") + const resp = await sendSMS(phone, "User_Code") + if (!resp.success) { + throw new Error(resp.message || "短信发送失败") + } + + let countdown = 60 + setSmsCountdown(countdown) + const timer = setInterval(() => { + countdown -= 1 + if (countdown <= 0) { + clearInterval(timer) + setSmsCountdown(0) + } else { + setSmsCountdown(countdown) + } + }, 1000) + + toast.success("验证码已发送") + } catch (e) { + toast.error("验证码发送失败", { + description: (e as Error).message, + }) + } finally { + setSmsLoading(false) + } + } + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault() + + if (!/^1\d{10}$/.test(phone)) { + toast.error("请输入正确的手机号") + return + } + if (smsCode.length < 4 || smsCode.length > 6) { + toast.error("请输入短信验证码") + return + } + if (!/^[a-zA-Z0-9]{8,12}$/.test(newPassword)) { + toast.error("密码为8-12位数字或字母组合") + return + } + if (!agreed) { + toast.error("请先阅读并同意用户协议和隐私政策") + return + } + + setSubmitting(true) + try { + const resp = await login({ + username: phone, + password: newPassword, + code: smsCode, + remember: false, + mode: "phone_code", + wx, + qq, + }) + + if (resp.success) { + toast.success("注册成功") + navigate("/admin") + } else { + toast.error(resp.message || "注册失败") + } + } catch { + toast.error("网络错误,请重试") + } finally { + setSubmitting(false) + } + } + return ( -
+
+
+ +
+ setSmsCode(e.target.value.replace(/\D/g, ""))} + /> + +
+
+
+ setNewPassword(e.target.value)} + /> + +
+
+
+ setWx(e.target.value)} />
-
+
+ setAgreed(!!v)} + /> + +

- 注册即代表同意《用户协议》和《隐私政策》 + 已有账号? +

) diff --git a/src/home/product/index.tsx b/src/home/product/index.tsx index 8bccde1..62f95ab 100644 --- a/src/home/product/index.tsx +++ b/src/home/product/index.tsx @@ -8,11 +8,20 @@ import ProductSidebar from "./productSidebar" import ProductTabs from "./productTabs" import PurchaseInfo from "./purchaseInfo" +const TAB_ALIAS: Record = { + short: "dynamic", + long: "dynamic", + global: "dynamic", + tunnel: "dynamic", + exclusive: "static", +} + export default function ProductPage() { const [searchParams, setSearchParams] = useSearchParams() const [activeVersionId, setActiveVersionId] = useState("v1") - const activeTabId = searchParams.get("tab") || "dynamic" + const urlTab = searchParams.get("tab") || "dynamic" + const activeTabId = TAB_ALIAS[urlTab] || urlTab const activeBrandId = searchParams.get("brand") || "" const currentTab = diff --git a/src/lib/models/article.ts b/src/lib/models/article.ts new file mode 100644 index 0000000..985d266 --- /dev/null +++ b/src/lib/models/article.ts @@ -0,0 +1,186 @@ +export type ArticleCategory = { + id: number + name: string +} + +export type Article = { + id: number + title: string + subTitle: string + content: string + catalogId: number + createTime: string + keyword: string +} + +export const CATEGORIES: ArticleCategory[] = [ + { id: 5, name: "公告中心" }, + { id: 4, name: "直连教程" }, + { id: 3, name: "常见售后" }, + { id: 1, name: "其他帮助" }, + { id: 2, name: "优惠活动" }, + { id: 6, name: "代理合作" }, +] + +export const ARTICLES: Article[] = [ + { + id: 1, + title: "聚IP代理使用协议", + subTitle: "", + content: + "

聚IP代理使用协议

感谢您选择聚IP代理服务。在使用本服务前,请您仔细阅读以下条款...

1. 服务说明:聚IP提供动态和静态代理IP服务,支持HTTP/HTTPS/SOCKS5协议。

2. 使用规范:禁止用于任何违法违规行为,包括但不限于网络攻击、欺诈、侵权等。

3. 账号管理:请妥善保管账号密码,因账号泄露造成的损失由用户自行承担。

", + catalogId: 5, + createTime: "2025-06-01", + keyword: "使用协议,服务条款", + }, + { + id: 2, + title: "系统升级维护通知", + subTitle: "", + content: + "

系统升级维护通知

尊敬的用户:

为提升服务质量,聚IP将于2025年7月15日凌晨2:00-6:00进行系统升级维护,届时部分服务可能短暂中断,请您提前做好安排。给您带来的不便敬请谅解。

", + catalogId: 5, + createTime: "2025-07-10", + keyword: "维护通知,系统升级", + }, + { + id: 3, + title: "苹果手机直连IP设置教程", + subTitle: "", + content: + '

苹果手机直连IP设置教程

适用设备:iPhone / iPad(iOS 12.0及以上)

步骤一:获取代理信息

登录聚IP官网,购买并获取代理IP地址、端口号、账号和密码。

步骤二:配置WiFi代理

1. 打开"设置" → "无线局域网"
2. 点击当前连接的WiFi名称旁的 (i) 图标
3. 滚动到底部,点击"配置代理"
4. 选择"手动"
5. 输入服务器地址和端口
6. 如果需要认证,开启"认证"并输入用户名和密码

步骤三:验证连接

打开Safari浏览器访问 ipinfo.io 查看当前IP是否已切换。

', + catalogId: 4, + createTime: "2025-05-20", + keyword: "苹果,iPhone,iOS,代理设置", + }, + { + id: 4, + title: "安卓手机代理设置教程", + subTitle: "", + content: + '

安卓手机代理设置教程

适用设备:Android 8.0及以上

步骤一:获取代理信息

登录聚IP官网,购买并获取代理IP地址和端口号。

步骤二:配置WiFi代理

1. 打开"设置" → "WLAN"
2. 长按当前连接的WiFi名称
3. 选择"修改网络" → "高级选项"
4. 代理选择"手动"
5. 输入代理服务器主机名和端口
6. 保存设置

步骤三:验证

打开浏览器访问 ipinfo.io 验证IP是否已变更。

', + catalogId: 4, + createTime: "2025-05-20", + keyword: "安卓,Android,代理设置", + }, + { + id: 5, + title: "Windows电脑代理设置教程", + subTitle: "", + content: + '

Windows电脑代理设置教程

适用系统:Windows 10 / Windows 11

方法一:系统代理设置

1. 打开"设置" → "网络和Internet" → "代理"
2. 在"手动设置代理"中,开启"使用代理服务器"
3. 输入代理IP地址和端口
4. 点击"保存"

方法二:使用客户端

推荐下载聚IP客户端,一键切换IP,支持定时切换、API调用等高级功能。

', + catalogId: 4, + createTime: "2025-05-18", + keyword: "Windows,电脑,代理设置", + }, + { + id: 6, + title: "浏览器代理插件使用教程", + subTitle: "", + content: + '

浏览器代理插件使用教程

推荐使用 SwitchyOmega 插件管理代理。

Chrome/Edge 安装步骤

1. 打开Chrome应用商店,搜索"SwitchyOmega"
2. 点击"添加至Chrome"安装
3. 点击插件图标 → "选项"
4. 新建情景模式,选择"代理服务器"
5. 输入代理协议、IP地址和端口
6. 保存并应用

', + catalogId: 4, + createTime: "2025-05-15", + keyword: "浏览器,插件,SwitchyOmega", + }, + { + id: 7, + title: "代理连接失败怎么办?", + subTitle: "", + content: + "

代理连接失败排查指南

如果遇到代理连接失败,请按以下步骤排查:

1. 检查账号是否过期
登录官网查看IP账号到期时间,过期请续费。

2. 检查IP白名单
确保当前设备的公网IP已添加到白名单中。

3. 检查网络连通性
使用 ping 或 telnet 测试代理服务器是否可达。

4. 切换节点
尝试更换其他线路或地区的IP节点。

如仍无法解决,请联系在线客服。

", + catalogId: 3, + createTime: "2025-04-25", + keyword: "连接失败,排查,故障", + }, + { + id: 8, + title: "IP白名单添加与修改", + subTitle: "", + content: + '

IP白名单添加与修改

白名单用于授权特定IP地址访问代理服务。

添加白名单:
1. 登录聚IP官网 → 进入用户中心
2. 找到对应IP账号 → 点击"白名单管理"
3. 输入需要授权的IP地址 → 保存

注意事项:
- 每次最多可添加5个白名单IP
- 修改后约1-3分钟生效
- 请确保填写正确的公网IP地址

', + catalogId: 3, + createTime: "2025-04-20", + keyword: "白名单,IP授权", + }, + { + id: 9, + title: "如何查询剩余流量和到期时间", + subTitle: "", + content: + '

如何查询剩余流量和到期时间

1. 登录聚IP官网,进入"用户中心"

2. 在"我的IP账号"列表中可以看到:
- 到期时间
- 剩余流量
- 连接数上限
- 当前在线状态

3. 即将到期时,系统会通过短信提醒,请及时续费避免服务中断。

', + catalogId: 3, + createTime: "2025-04-15", + keyword: "流量,到期时间,查询", + }, + { + id: 10, + title: "如何通过API获取代理IP", + subTitle: "", + content: + '

API获取代理IP教程

聚IP支持通过API接口获取代理IP,方便程序化调用。

API地址

GET https://api.juip.com/v1/proxy/ip

请求参数

- apikey: 用户API密钥(在用户中心获取)
- num: 获取IP数量
- type: IP类型(1=HTTP, 2=SOCKS5)
- area: 地区编码

返回示例

{"code":10000,"data":[{"ip":"1.2.3.4","port":8080}]}
', + catalogId: 4, + createTime: "2025-05-01", + keyword: "API,接口,程序调用", + }, + { + id: 11, + title: "618优惠活动说明", + subTitle: "", + content: + "

618优惠活动

聚IP年中大促,全场代理套餐低至5折!

活动时间:6月1日 - 6月20日

活动内容:
1. 所有动态IP套餐享受8折优惠
2. 静态IP包年套餐直降200元
3. 新用户注册即送3次免费测试机会
4. 老用户续费额外赠送7天时长

数量有限,先到先得!

", + catalogId: 2, + createTime: "2025-06-01", + keyword: "618,优惠,促销", + }, + { + id: 12, + title: "代理合作推广计划", + subTitle: "", + content: + "

代理合作推广计划

聚IP诚邀各类合作伙伴加入推广计划,共享收益!

合作模式:
1. CPS分成:每成功推荐一位付费用户,获得30%佣金
2. API代理:将聚IP代理能力集成到您的产品中
3. 流量合作:大批量采购享受专属折扣

合作要求:
- 拥有网站、公众号或社群资源
- 遵守相关法律法规
- 不接受涉及违法违规业务的合作

有意合作请联系在线客服或发送邮件至 business@juip.com

", + catalogId: 6, + createTime: "2025-05-10", + keyword: "合作,代理加盟,推广", + }, + { + id: 13, + title: "国庆特惠活动", + subTitle: "", + content: + "

国庆特惠活动

庆祝国庆,聚IP推出限时特惠!

活动时间:10月1日 - 10月7日

活动详情:
1. 全场套餐9折优惠
2. 充值满100减10,满200减30
3. 购买年套餐额外赠送1个月

", + catalogId: 2, + createTime: "2025-09-28", + keyword: "国庆,特惠,活动", + }, + { + id: 14, + title: "模拟器代理配置教程", + subTitle: "", + content: + '

模拟器代理配置教程

适用:雷电模拟器、夜神模拟器、MuMu模拟器等

方法一:模拟器内WiFi代理

1. 打开模拟器 → 进入"设置" → "WLAN"
2. 长按当前WiFi → "修改网络"
3. 设置代理为手动,填写IP和端口

方法二:使用代理APP

下载Postern或ProxyDroid等代理APP,在模拟器中安装并配置代理。

', + catalogId: 4, + createTime: "2025-05-22", + keyword: "模拟器,代理,雷电,夜神", + }, + { + id: 15, + title: "软路由代理配置教程", + subTitle: "", + content: + "

软路由代理配置教程

适用:OpenWrt / LEDE / iKuai 等软路由系统

OpenWrt配置步骤

1. SSH登录路由器
2. 安装代理客户端软件
3. 配置代理服务器地址和认证信息
4. 设置流量转发规则
5. 重启网络服务生效

详细配置脚本请联系技术支持获取。

", + catalogId: 4, + createTime: "2025-05-25", + keyword: "软路由,OpenWrt,代理配置", + }, + { + id: 16, + title: "如何联系客服", + subTitle: "", + content: + "

如何联系客服

我们提供多种客服渠道:

在线客服:
工作时间:8:00 - 23:30
点击官网右下角客服图标即可在线咨询。

QQ客服:
客服QQ:123456789

邮件支持:
support@juip.com

常见问题:
建议先查看帮助中心,大部分问题已有解答。

", + catalogId: 1, + createTime: "2025-04-01", + keyword: "客服,联系,帮助", + }, +] diff --git a/src/routers/index.tsx b/src/routers/index.tsx index a6c80b7..41608c1 100644 --- a/src/routers/index.tsx +++ b/src/routers/index.tsx @@ -3,6 +3,8 @@ import Channels from "@/admin/channels/page" import Dashboard from "@/admin/dashboard/page" import Funds from "@/admin/funds/page" import AdminLayout from "@/admin/layout" +import LongPage from "@/admin/product/long" +import ShortPage from "@/admin/product/short" import Whitelist from "@/admin/whitelist/page" import AuthGuard from "@/components/authGuard" import HomePage from "@/home" @@ -42,9 +44,13 @@ export const router = createBrowserRouter([ { path: "channels", element: }, { path: "whitelist", element: }, { path: "funds", element: }, - { path: "Channels", element: }, - { path: "Channels", element: }, - { path: "Channels", element: }, + { + path: "product", + children: [ + { path: "long", element: }, + { path: "short", element: }, + ], + }, ], }, ])