sp mac bookpro 2605 2026-06-05 23:10:15 +08:00
parent 83aadde08e
commit 2be250b56c
114 changed files with 1015 additions and 186 deletions

View File

@ -0,0 +1 @@
{"source":"I1BdsVrQ8+F0Nz5pjiEY7gYSFBzvKNwOR8nQyg9euOprN34SC4VipJH1GMc8WCRl+e0xZWGr2QiYwiNwqO4gag==","name":"@vitejs/plugin-react","dependency":"vite","title":"Depends on vulnerable versions of vite","url":null,"severity":"moderate","versions":["1.0.0-beta.0","1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.1.0-beta.0","1.1.0-beta.1","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.2.0","1.3.0","1.3.1","1.3.2","2.0.0-alpha.0","2.0.0-alpha.1","2.0.0-alpha.2","2.0.0-alpha.3","2.0.0-beta.0","2.0.0-beta.1","2.0.0","2.0.1","2.1.0-beta.0","2.1.0","2.2.0-beta.0","2.2.0","3.0.0-alpha.0","3.0.0-alpha.1","3.0.0-alpha.2","3.0.0-beta.0","3.0.0","3.0.1","3.1.0-beta.0","3.1.0","4.0.0-beta.0","4.0.0-beta.1","4.0.0","4.0.1","4.0.2","4.0.3","4.0.4","4.1.0","4.1.1","4.2.0","4.2.1","4.3.0","4.3.1","4.3.2","4.3.3","4.3.4","4.4.0-beta.1","4.4.0-beta.2","4.4.0","4.4.1","4.5.0","4.5.1","4.5.2","4.6.0","4.7.0","5.0.0-beta.0","5.0.0","5.0.1","5.0.2","5.0.3","5.0.4","5.1.0","5.1.1","5.1.2","5.1.3","5.1.4","5.2.0","6.0.0-beta.0","6.0.0","6.0.1","6.0.2"],"vulnerableVersions":["2.0.0-alpha.0","2.0.0-alpha.1","2.0.0-alpha.2","2.0.0-alpha.3","2.0.0-beta.0","2.0.0-beta.1","2.0.0","2.0.1","2.1.0-beta.0","2.1.0","2.2.0-beta.0","2.2.0","3.0.0-alpha.0","3.0.0-alpha.1","3.0.0-alpha.2","3.0.0-beta.0","3.0.0","3.0.1","3.1.0-beta.0","3.1.0","4.0.0-beta.0","4.0.0-beta.1","4.0.0","4.0.1","4.0.2","4.0.3","4.0.4","4.1.0","4.1.1","4.2.0","4.2.1","4.3.0","4.3.1","4.3.2","4.3.3"],"cwe":["CWE-22","CWE-200"],"cvss":{"score":0,"vectorString":null},"range":"2.0.0-alpha.0 - 4.3.3","id":"9Gy9+ze27G1us6B+W8biV10fSWWlbvxdqXOWR2dOcacJriijvaJSB375JaNqMBMF4g4ZE1YqsyqGPI5D0gHDqQ=="}

View File

@ -0,0 +1,2 @@
b9ddc98f1857733d8402043c0ba737a9714287e8 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-task-list-item","integrity":"sha512-htGHvTym5vllaEEltf5oNKT5VhmiPDK5so6xihvEF9d4JCcfp5HVGxXtwyXe7zkOAlYKNRWPoDZwRt/TelnIyg==","time":1780670569614,"size":23892,"metadata":{"time":1780670569609,"url":"https://registry.npmjs.org/micromark-extension-gfm-task-list-item","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"f8bb4f5c1d870b50c2f76824dc1f285b\"","last-modified":"Fri, 05 Jul 2024 09:49:52 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
882ceef627bab6d47e3e1a7e0885c8f57e986e63 {"key":"security-advisory:react-router:tGGEHjUfekLImOTny4HrDPD+KTLAjI+/ctiBG/EAzv2Ug21OTdq5iHmxPUPAYLZbQ8b95B8s8l/iMTPl8bBKpg==","integrity":"sha512-L0WQwMhRV/cv1ML1d7NsPPhYhIE07qsZT2ZO6tXTCLgJ6raE1qfV9eCYgAabVqivr9lGX41+PJwlsiuem1fzPw==","time":1780670570346,"size":30450}

View File

@ -0,0 +1,2 @@
dbae1ff70f146f4c2fd98f6c3886b18cb59d0345 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-strikethrough","integrity":"sha512-HCdY1bKozYpoJrBMJlQEKyCzaMsdzEKzzB6PXT0Zz/0WuZwlejrcNeHWdlHYNGP7ToycD542UeinHfxNWXrhOw==","time":1780670569535,"size":35090,"metadata":{"time":1780670569518,"url":"https://registry.npmjs.org/micromark-extension-gfm-strikethrough","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"4299448e5f1127c08d1799d242c9db1b\"","last-modified":"Fri, 05 Jul 2024 09:35:27 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
309f3b50e400e0fae6ac8bd97989d6b167e6cb8f {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/remark-gfm","integrity":"sha512-dy9JrnG919SSFzJBC5zO8ST1Qqu7bwYkWT8+ZM3+NX/dnhLYkUqmWXG9ebdk86tmTEBekhgNfJ6wJ0imhSJdXA==","time":1780670569025,"size":8973,"metadata":{"time":1780670569012,"url":"https://registry.npmjs.org/remark-gfm","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"b10a0cc4cfcd2797def145dd21943d1e\"","last-modified":"Mon, 10 Feb 2025 12:43:12 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
cbee583eb479e6b7dc69468556533101d3e7c3ff {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz","integrity":"sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==","time":1780670570063,"size":8749,"metadata":{"time":1780670570049,"url":"https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"\"46eeb36d6c33247526e5daddb34cb7c1\"","last-modified":"Mon, 10 Jul 2023 15:15:34 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
b2933bf76f1680bf96ab76f2c2f61435bfc09dd9 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz","integrity":"sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==","time":1780670569876,"size":7094,"metadata":{"time":1780670569868,"url":"https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"\"c0d4e0e293504a837902939fd573ac2c\"","last-modified":"Fri, 05 Jul 2024 09:35:28 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
a9ff9ad602fc0573fe54fbdb61a4df2de4eaa999 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/escape-string-regexp","integrity":"sha512-f0eQbFAXkcuVJbQ2olxHF1AHGuwzpK/YHGaCqrwRYAdchdRRcQK6XPkzW3x+//5qYkodV5I3MgwPeyNGm5VMmQ==","time":1780670569782,"size":9856,"metadata":{"time":1780670569768,"url":"https://registry.npmjs.org/escape-string-regexp","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"1c672d3e89f3257e71576e73129b9a31\"","last-modified":"Tue, 25 Apr 2023 16:42:42 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
c3e48d9a9cf6066b730b07054bd4a696f4085ece {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz","integrity":"sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==","time":1780670570020,"size":7621,"metadata":{"time":1780670570007,"url":"https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"\"4dfd93c01768f39f7dfaed97b02cb869\"","last-modified":"Mon, 10 Feb 2025 12:43:12 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
6ed9db038c46be60ab27e57665bda4ce6b1aa72c {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz","integrity":"sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==","time":1780670570020,"size":6594,"metadata":{"time":1780670570007,"url":"https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"\"5b8ae77a8398f15e03f0596a52e35dae\"","last-modified":"Mon, 10 Feb 2025 12:33:54 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
0ed3d483e8914985dbe9f8aebd48a0a3727a17fc {"key":"security-advisory:esbuild:jKdCIzePj7J1488qgRXvF8Srh9wutSuR1exB8YooNX62hT+qhtrUXYbArLNoIhgwbaCqKpmduh18syZU7BR9SA==","integrity":"sha512-X6SmnRiFa+ifziCDnS/f2GDokVlMig9lnwo/8GbLe3ob5fz6m+BSyGmhEriVJbH+kCJLGdnwe65jTxej9/JmnA==","time":1780670570374,"size":9014}

View File

@ -0,0 +1,2 @@
ed37cbfed55fb67887fb3defa1d66e987e20b5ab {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz","integrity":"sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==","time":1780670570020,"size":7487,"metadata":{"time":1780670570004,"url":"https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"\"1d8bfbfe26f8dc09badcf00b74e941f9\"","last-modified":"Fri, 03 Jan 2025 12:27:37 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
e3fa56c2c66472517ccf5ad3236fd0faedb01cf6 {"key":"security-advisory:react-router-dom:PeKCc1/aj4qeekCd2cpS8es3ngWolVmM6k4MsmyS9mpNP2BQYIzOOO1tb9OhlOLXaMn7EywpcjJW4i0piIRPrw==","integrity":"sha512-U2nyCzc3yJe10U9WhA80utwzmOePOAeq7nNb4lYY3sGp0bJ3c3pfABTHwDTH0kfPirPjeZ2bUU1HmhRI8MlE8g==","time":1780670570761,"size":29255}

View File

@ -0,0 +1,2 @@
728565896573b1dacbda7216718ec08324e12785 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/react-router-dom","integrity":"sha512-kwZ6ol22Ri+wNjE1qYmn8piRA6jC6f155ixAtRQSKSTn88gdJWUCgxEZ6MZjTygqIichsTYWG8lyvsJZ/fxjEg==","time":1780670570584,"size":1058676,"metadata":{"time":1780670570524,"url":"https://registry.npmjs.org/react-router-dom","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"W/\"4627d50de4401515abae38106b4efa03\"","last-modified":"Thu, 04 Jun 2026 14:20:56 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
c35bfa375b68330803646cb81c58a428d1ccaad8 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz","integrity":"sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==","time":1780670570019,"size":6678,"metadata":{"time":1780670570006,"url":"https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"\"909c8aa10c221bd89b95791fa72e139f\"","last-modified":"Mon, 18 Sep 2023 09:43:16 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
7fbab1eb6daca5a29f34ab05607e624e34363bf3 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz","integrity":"sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==","time":1780670570065,"size":7145,"metadata":{"time":1780670570062,"url":"https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"\"026d203e304d72ff0b41fd6920faeac5\"","last-modified":"Mon, 10 Feb 2025 11:52:25 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
0541fce5216d3ec9dd694699f6b629a453ed6f42 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz","integrity":"sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==","time":1780670569896,"size":12933,"metadata":{"time":1780670569884,"url":"https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"\"24f71adeb8ef5e2af645809737f619fa\"","last-modified":"Fri, 05 Jul 2024 12:07:41 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
5e5f9782e1d34629156d82403631e2ec3ad974b1 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-footnote","integrity":"sha512-vVfQYxAgTZUJTknBW5cgmVCSKypEl+VyP6YyVQzAL/jy7/jAxWebph3AlLsU4iQAbzlE2QqwZQCqnCkzVqdCVg==","time":1780670569610,"size":15220,"metadata":{"time":1780670569600,"url":"https://registry.npmjs.org/micromark-extension-gfm-footnote","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"ed9ff575f6266bdef90427ecf54a36e1\"","last-modified":"Wed, 02 Oct 2024 12:16:21 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
7217369bda328a0d424c47fec14a842ffe2fdc6b {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/markdown-table","integrity":"sha512-oXWwBCDF+N3bF3tHmWNzRdfMyTeowxKlajkrqz/W1zYzg64Y5M5b4tVukudpyTWcjnhgaMC6h9N3LG9lyilITA==","time":1780670569679,"size":19650,"metadata":{"time":1780670569676,"url":"https://registry.npmjs.org/markdown-table","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"5e0ca933576a3483d934ef2c947570fc\"","last-modified":"Tue, 22 Oct 2024 11:58:41 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
8a3da571e67ee9f0b919ce5427b6440c79583e31 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz","integrity":"sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==","time":1780670569911,"size":17729,"metadata":{"time":1780670569893,"url":"https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"\"a11b0a6f76d25ecbfd4ddb20c5d560c3\"","last-modified":"Mon, 20 Jan 2025 12:24:31 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
7719feb186cb1399c0f4b5ebc0eadfcbcac4c405 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm","integrity":"sha512-Wo0RNXzIjbl99MFZT6AHRRgCHwVUH8I+yCdrT/KlXGLJaOuzhKjV/ybVCisWx2wSwXJzUnPkdvcDTsr3SYxFaQ==","time":1780670569229,"size":22917,"metadata":{"time":1780670569201,"url":"https://registry.npmjs.org/micromark-extension-gfm","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"275804f409ac47d50469a5c76b952b1b\"","last-modified":"Mon, 26 Jun 2023 17:08:18 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
a36f907f0468d421e7d5eb8c78658dbd3f28ce4b {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz","integrity":"sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==","time":1780670569898,"size":6593,"metadata":{"time":1780670569889,"url":"https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"\"422debffd3ba2c2e118813554c43faf8\"","last-modified":"Fri, 05 Jul 2024 09:49:52 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
a61953771a621927d5b9a13e98e26388e0f88dfa {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-autolink-literal","integrity":"sha512-7yly6fNSWFnBshG3b5iBZ0LwmoZFlcdK15qoqWeH7JbKhmgN7dqpJud6bHHIf3MUefwmkBW2DySb6uaphHeUrw==","time":1780670569593,"size":33289,"metadata":{"time":1780670569581,"url":"https://registry.npmjs.org/micromark-extension-gfm-autolink-literal","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"8ce943f5d0bce2443639aaffcdf9dcae\"","last-modified":"Fri, 05 Jul 2024 12:07:41 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
79e824e817e42550fd815d068b939c685cd3706a {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-table","integrity":"sha512-t89Jz7kso7A+e05YETQqP1aHRo2rRY1C8HsK43CkGxTk0ucBITWyNITbvhFgXYAJVBB4EuKnGFfc/Ef1R+kn4A==","time":1780670569563,"size":28824,"metadata":{"time":1780670569539,"url":"https://registry.npmjs.org/micromark-extension-gfm-table","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"db5106708a4a821f25820dc0e521accb\"","last-modified":"Mon, 20 Jan 2025 12:24:31 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
efaac8d44b90a270a84a1d6acb9abf14d5768088 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz","integrity":"sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==","time":1780670570018,"size":5904,"metadata":{"time":1780670570006,"url":"https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"\"0062bff3d84418d892b3cc32588a77a7\"","last-modified":"Mon, 26 Jun 2023 17:08:18 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
071a2bdea28ddb70dd936c66695e6326d74b735c {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm-task-list-item","integrity":"sha512-xmf+WQW+x6q8D39uEGMZhU2uHZAslsxHl/EDZsUzUDCIaj5VUvsuE6wHnZMMGFQuJKlm9l8pyAqx8rUhpb3X1w==","time":1780670569601,"size":20227,"metadata":{"time":1780670569596,"url":"https://registry.npmjs.org/mdast-util-gfm-task-list-item","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"29ffd30bc6818a20c074435a1d4b67cf\"","last-modified":"Mon, 10 Jul 2023 11:51:07 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
dff2b799009c7dd0d189244283574b9e453aca2b {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@vitejs%2fplugin-react","integrity":"sha512-TNd0tg0ouSu/s5O/xS3k682WwrdI6p1L2PkUG0z6R9LzuwxjY//ASZPvwl/Lmoy9A03qbycQO4MRAqumCBUy9g==","time":1780670570856,"size":113751,"metadata":{"time":1780670570848,"url":"https://registry.npmjs.org/@vitejs%2fplugin-react","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"W/\"d1325486d45d3ad3869112228bb30284\"","last-modified":"Thu, 14 May 2026 20:03:25 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
99072f4ba765db8a6afcfc427cc82f1b9795b7c2 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm","integrity":"sha512-g6Fwbg7fFzmxVMMg2eNrUSo8Rh4UtThAJYAz7kO84Ja212uVuTeMAMMxrmcT87TG83fzd80h7JfVOoYNWlY8xg==","time":1780670569120,"size":17353,"metadata":{"time":1780670569095,"url":"https://registry.npmjs.org/mdast-util-gfm","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"97b1541d09496bc6d7f038064f5af2e6\"","last-modified":"Mon, 10 Feb 2025 12:33:54 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
4f46e77af2c42c6b98e6586004bb8d995cac821f {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/esbuild","integrity":"sha512-p6cKQSOhLYs7/3qrAeg5aU26ahrXcHKXHbjCZrnXLJpTOoy1FnWdisFo9YZHODfJNupUah8NRJAoCNVnTFujkg==","time":1780670570367,"size":885757,"metadata":{"time":1780670570160,"url":"https://registry.npmjs.org/esbuild","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"W/\"688c0b6f4b4e2bf3375cd21b269381b0\"","last-modified":"Thu, 02 Apr 2026 20:38:48 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
d6f137f06f53ccaf72b69966e196b12d94f5f2b8 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-tagfilter","integrity":"sha512-9f10zXLXUXsEKP//H7WAmHHV9+U4Z0uiybgQg5sB4xAiFnykIW86PkXRUm+dmUpqh6Ke38D5cEx5a4b4g6yxQw==","time":1780670569581,"size":11871,"metadata":{"time":1780670569573,"url":"https://registry.npmjs.org/micromark-extension-gfm-tagfilter","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"5a27ad06a94c3bbb49b67cb1b4a5a68f\"","last-modified":"Fri, 23 Jun 2023 11:00:36 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
4be24bca6f2aa6f848acb41cef4d3d9fef23eb01 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz","integrity":"sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==","time":1780670569898,"size":4513,"metadata":{"time":1780670569894,"url":"https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"\"547fe12c02ca5f498482d2da75aa870e\"","last-modified":"Fri, 23 Jun 2023 11:00:37 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
be5fd6a1ef8d3a295546288731c757abbab8a52c {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-find-and-replace","integrity":"sha512-YbwK/txoBGAboza7GIbP8rudQOXmA3RPI4pQfhhdZXT6CW5id+TqFdiYmJVlxqVO7Q+CK5DHjpbrq9tXukve/Q==","time":1780670569691,"size":20246,"metadata":{"time":1780670569685,"url":"https://registry.npmjs.org/mdast-util-find-and-replace","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"8ab46ba720d326e4f0f329b7592a6f9f\"","last-modified":"Fri, 03 Jan 2025 12:27:37 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
1d295e6733a8f609c204e28ce9275b1d5ff75c50 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/react-router","integrity":"sha512-f7RjI0Qm7J1TY8aeDZxwWrNpmptmWB0V4hq7Rivv9LbSQ9G7qBH7jf9Mo9davhviGrjGKzcJ69Ne4qYxoVrnXw==","time":1780670570324,"size":1333656,"metadata":{"time":1780670570142,"url":"https://registry.npmjs.org/react-router","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"W/\"c48c3350fbfce2aa74fa3fae30398f47\"","last-modified":"Thu, 04 Jun 2026 14:20:48 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
f647a69be10756b3c11f015eda1e4de4d87b823f {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/vite","integrity":"sha512-53nJcd1LXFMYP+Q4z4UwyraJSCdLvDoOhQIaNJzI3eVyjyCNdL/qKkYgg0M83zePPCXB92JmIIxfdZ3LFzKVdQ==","time":1780670570375,"size":2261551,"metadata":{"time":1780670570181,"url":"https://registry.npmjs.org/vite","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"W/\"bcfb65ac6230f497d2e34ef9ae4d87dd\"","last-modified":"Mon, 01 Jun 2026 10:37:52 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
0f492b9d2fe9a20b73cbdd2603c965465d249926 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz","integrity":"sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==","time":1780670570022,"size":16037,"metadata":{"time":1780670570002,"url":"https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"\"2015b0e82e28fead90fbd743ce04e8c8\"","last-modified":"Fri, 05 Jul 2024 12:22:51 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
2f5728f4f77062347bc738a3617fd4c4e04e8684 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz","integrity":"sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==","time":1780670570067,"size":6696,"metadata":{"time":1780670570066,"url":"https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"\"e2629ef38700883561c9fe2ccbc7f028\"","last-modified":"Mon, 19 Aug 2024 09:42:25 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
97c340a727f6a5058f232d7d513b1999cd0aac07 {"key":"security-advisory:@vitejs/plugin-react:9Gy9+ze27G1us6B+W8biV10fSWWlbvxdqXOWR2dOcacJriijvaJSB375JaNqMBMF4g4ZE1YqsyqGPI5D0gHDqQ==","integrity":"sha512-IX0xLOqvtt+lJkcYzUuYwIHGy3asjgRSvdHpqmQp85iFo3uIrYho/DX1WR9fp3pZhcXaU7wJWwtFZbOgzq5DWw==","time":1780670570871,"size":1680}

View File

@ -0,0 +1,2 @@
33a0584f9453b2c3f37c36a0d9c7e3ace8e4d0e0 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz","integrity":"sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==","time":1780670570059,"size":5681,"metadata":{"time":1780670570055,"url":"https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:50 GMT","etag":"\"5a0b40ceecd80948051cacec62540975\"","last-modified":"Mon, 10 Jul 2023 14:37:13 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
79b5ecae5b61d24fd293cb2a14f2bdf0f51b7701 {"key":"security-advisory:vite:tMBsdAS7JBTyRORp0YaJR984WAAsOxgmReSLBN0Nd41GhzEakjROICqAJ31iOdYG5Ijo/MlJ01p3ig1iN88+Tw==","integrity":"sha512-V3N8wZcZK6Pr/OzlbtZUF4aXDj8F1/gVAkxPFC6fwBVkdiOuqiuL54032XDWBi4T16GgGqXISVfMKwEYVt6muw==","time":1780670570414,"size":16019}

View File

@ -0,0 +1,2 @@
cfebdfc3ebcd77d3de5d0cc817a83f370318c4b2 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm-footnote","integrity":"sha512-fDrNS+WqjRTdt9O0LlVorzREOUItSlj+RTxV49NcPZtQEc3lnE/xESJwujMd7iNlpqYY3gPs2G2rB9Gtdh8pUw==","time":1780670569369,"size":7256,"metadata":{"time":1780670569362,"url":"https://registry.npmjs.org/mdast-util-gfm-footnote","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"d103cec050d7df388cbe5405faa8480c\"","last-modified":"Mon, 10 Feb 2025 11:52:24 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
a0ff5de0699b04f486c2068500cae64ef0ab9731 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz","integrity":"sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==","time":1780670570018,"size":7131,"metadata":{"time":1780670570003,"url":"https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"\"2a31c884a8b9e7141e48539fef208bd9\"","last-modified":"Tue, 22 Oct 2024 11:58:41 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
479c75a56318f2dafb3d646b035755e234e2c0e6 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/remark-stringify","integrity":"sha512-B3XjFzQAScwzXn/Ipov3mGnn8cGNWL65pNc940rLo366x27qbOScWcibUNSTwpH9KjUfALzBfW6Qcu7Ux2jH/w==","time":1780670569287,"size":46408,"metadata":{"time":1780670569241,"url":"https://registry.npmjs.org/remark-stringify","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"9515e96ba9dc38fecccc9b7e055ac503\"","last-modified":"Mon, 20 Nov 2023 10:43:35 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
945f4a4fb8038b09198aaf3b1325a9975d4681e7 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm-table","integrity":"sha512-ui4T+CroXoYoor9brwKslk+01qSaeLL9ZAB9p06YLluP8F+3QUJpk8KQGgCnawsGE3VibJihKdGKM2DOJgU6Gw==","time":1780670569574,"size":30473,"metadata":{"time":1780670569561,"url":"https://registry.npmjs.org/mdast-util-gfm-table","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"8fe3a3115fb6445efc1c9234094a864c\"","last-modified":"Mon, 10 Jul 2023 15:15:34 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
1a5b5cecf948a8e48db0e57f80701ff6d8d599e7 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz","integrity":"sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==","time":1780670570017,"size":1964,"metadata":{"time":1780670570005,"url":"https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"\"99fff4044f5046db36d30137f06222b9\"","last-modified":"Sat, 17 Apr 2021 15:45:55 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
aac3e546e6b3fa06349d1a48105fa8743f443543 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz","integrity":"sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==","time":1780670570017,"size":5740,"metadata":{"time":1780670569909,"url":"https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"\"5427a07241a8b43cb2e7401da1d208c1\"","last-modified":"Mon, 10 Jul 2023 11:51:08 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
49c97a50b36d2d2f709d3a996f043a45ddb8b79e {"key":"security-advisory:vite:I1BdsVrQ8+F0Nz5pjiEY7gYSFBzvKNwOR8nQyg9euOprN34SC4VipJH1GMc8WCRl+e0xZWGr2QiYwiNwqO4gag==","integrity":"sha512-zmPYNkOnQNb1L0hdJYrfcJxHoDSdfO9cDy8BSryW7f4h7lF4LNjQPvXW4lbwjrZCWaF3BfWcCsgy/PsrpwEQBQ==","time":1780670570388,"size":16371}

View File

@ -0,0 +1,2 @@
c3f43a9a13e0c9db52f2112b215f8b1485b32252 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm-autolink-literal","integrity":"sha512-n+RWet3IDt/FyFNYuUImJzrfEr6J9Mf1o+BIEBELzxJ9elJ3nIr4gzSGS6r15Up88jpbg+IwXVPBsk735c2b5w==","time":1780670569359,"size":18387,"metadata":{"time":1780670569349,"url":"https://registry.npmjs.org/mdast-util-gfm-autolink-literal","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"58071bee342f94147bc3a10a662c6276\"","last-modified":"Mon, 19 Aug 2024 09:42:25 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -0,0 +1,2 @@
e2a2651954a3f3288fe7dc90e4cce78fda3aa09c {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/mdast-util-gfm-strikethrough","integrity":"sha512-lALtUEQ+Kd+L0c22GOMw8l60pr2jeLaGTuyWLVCQPefH8Dcq2VlXkwgho+A/7cqEOTLRD2y1hQJmE97e9k7eJg==","time":1780670569476,"size":18408,"metadata":{"time":1780670569370,"url":"https://registry.npmjs.org/mdast-util-gfm-strikethrough","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json","date":"Fri, 05 Jun 2026 14:42:49 GMT","etag":"W/\"49be521d253e8348bfdf865122114680\"","last-modified":"Mon, 10 Jul 2023 14:37:13 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}

View File

@ -18,66 +18,93 @@
- 图片字段:返回绝对 URL推荐 CDN 域名),前端不拼接 - 图片字段:返回绝对 URL推荐 CDN 域名),前端不拼接
- 时间字段建议统一使用毫秒时间戳number - 时间字段建议统一使用毫秒时间戳number
- 失败格式:沿用现有 aura 接口的错误格式HTTP Status + JSON message/error - 失败格式:沿用现有 aura 接口的错误格式HTTP Status + JSON message/error
- `GET /points-mall/overview` 已废弃HTTP 410前端需按数据维度分别调用 /me、/categories、/announcements、/banners、/promo-entries
## 接口列表(前端必需) ## 接口列表(前端必需)
### 1) 商城概览 ### 1) 我的积分
用于首屏一次性拉齐「分类、公告、banner、促销入口、我的积分」。 `GET /points-mall/me`
`GET /points-mall/overview`
**Query**
- `include_me`:可选,默认 `true`(是否返回我的积分)
**Response** **Response**
```json ```json
{ {
"me": { "points": 1280,
"points": 1280, "level": "Lv.2",
"level": "Lv.2" "totalSpentUSD": 0.174
},
"categories": [
{ "id": "all", "name": "全部", "sort": 0 },
{ "id": "digital", "name": "虚拟权益", "sort": 1 }
],
"announcements": [
{
"id": "a1",
"title": "公告:积分规则升级中",
"content": "本期暂不开放兑换,页面仅用于 UI 预览。",
"linkUrl": "https://..."
}
],
"banners": [
{
"id": "b1",
"title": "限时上新",
"subtitle": "Up to 25% Off",
"imageUrl": "https://cdn.../banner.png",
"linkUrl": "https://..."
}
],
"promoEntries": [
{
"id": "p1",
"title": "促销活动",
"subtitle": "本周精选",
"iconUrl": "https://cdn.../promo.png",
"linkUrl": "https://..."
},
{
"id": "p2",
"title": "积分任务",
"subtitle": "快速涨积分",
"iconUrl": "https://cdn.../tasks.png",
"linkUrl": "https://..."
}
]
} }
``` ```
### 2) 商品列表(搜索/筛选/排序/分页) ### 2) 分类
`GET /points-mall/categories`
**Response**
```json
[
{ "id": "all", "name": "全部", "sort": 0 },
{ "id": "digital", "name": "虚拟权益", "sort": 1 }
]
```
### 3) 公告
`GET /points-mall/announcements`
**Response**
```json
[
{
"id": "a1",
"title": "公告:积分规则升级中",
"content": "本期暂不开放兑换,页面仅用于 UI 预览。",
"linkUrl": "https://..."
}
]
```
### 4) Banner
`GET /points-mall/banners`
**Response**
```json
[
{
"id": "b1",
"title": "限时上新",
"subtitle": "Up to 25% Off",
"imageUrl": "https://cdn.../banner.png",
"linkUrl": "https://..."
}
]
```
### 5) 促销入口
`GET /points-mall/promo-entries`
**Response**
```json
[
{
"id": "p1",
"title": "促销活动",
"subtitle": "本周精选",
"iconUrl": "https://cdn.../promo.png",
"linkUrl": "https://..."
},
{
"id": "p2",
"title": "积分任务",
"subtitle": "快速涨积分",
"iconUrl": "https://cdn.../tasks.png",
"linkUrl": "https://..."
}
]
```
### 6) 商品列表(搜索/筛选/排序/分页)
`GET /points-mall/products` `GET /points-mall/products`
@ -114,7 +141,7 @@
} }
``` ```
### 3) 商品详情 ### 7) 商品详情
`GET /points-mall/products/{productId}` `GET /points-mall/products/{productId}`
@ -140,7 +167,7 @@
} }
``` ```
### 4) 创建兑换订单(扣积分) ### 8) 创建兑换订单(扣积分)
`POST /points-mall/orders` `POST /points-mall/orders`
@ -167,7 +194,7 @@
- 校验库存与用户积分 - 校验库存与用户积分
- 虚拟商品/实物商品可共用该接口,但实物商品需要补充收货信息(可扩展字段) - 虚拟商品/实物商品可共用该接口,但实物商品需要补充收货信息(可扩展字段)
### 5) 订单列表 / 订单详情 ### 9) 订单列表 / 订单详情
`GET /points-mall/orders` `GET /points-mall/orders`
@ -197,7 +224,7 @@
} }
``` ```
### 6) 积分流水(可选,但强烈建议) ### 10) 积分流水(可选,但强烈建议)
用于解释积分变动与对账。 用于解释积分变动与对账。
@ -342,4 +369,3 @@
- 商品列表:`id/categoryId/name/subtitle/coverUrl/pointsPrice/stock/sold/tags` - 商品列表:`id/categoryId/name/subtitle/coverUrl/pointsPrice/stock/sold/tags`
如后端字段命名需要用 snake_case可在接口层做映射但建议直接使用上述 camelCase减少前端 mapping。 如后端字段命名需要用 snake_case可在接口层做映射但建议直接使用上述 camelCase减少前端 mapping。

276
package-lock.json generated
View File

@ -15,6 +15,7 @@
"react-dom": "^18.3.1", "react-dom": "^18.3.1",
"react-markdown": "^9.0.1", "react-markdown": "^9.0.1",
"react-router-dom": "^6.26.2", "react-router-dom": "^6.26.2",
"remark-gfm": "^4.0.0",
"zustand": "^4.5.5" "zustand": "^4.5.5"
}, },
"devDependencies": { "devDependencies": {
@ -1871,6 +1872,17 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/escape-string-regexp": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/estree-util-is-identifier-name": { "node_modules/estree-util-is-identifier-name": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
@ -2213,6 +2225,15 @@
"yallist": "^3.0.2" "yallist": "^3.0.2"
} }
}, },
"node_modules/markdown-table": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
"integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/math-intrinsics": { "node_modules/math-intrinsics": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@ -2221,6 +2242,21 @@
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/mdast-util-find-and-replace": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
"integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==",
"dependencies": {
"@types/mdast": "^4.0.0",
"escape-string-regexp": "^5.0.0",
"unist-util-is": "^6.0.0",
"unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/mdast-util-from-markdown": { "node_modules/mdast-util-from-markdown": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz",
@ -2244,6 +2280,101 @@
"url": "https://opencollective.com/unified" "url": "https://opencollective.com/unified"
} }
}, },
"node_modules/mdast-util-gfm": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz",
"integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==",
"dependencies": {
"mdast-util-from-markdown": "^2.0.0",
"mdast-util-gfm-autolink-literal": "^2.0.0",
"mdast-util-gfm-footnote": "^2.0.0",
"mdast-util-gfm-strikethrough": "^2.0.0",
"mdast-util-gfm-table": "^2.0.0",
"mdast-util-gfm-task-list-item": "^2.0.0",
"mdast-util-to-markdown": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/mdast-util-gfm-autolink-literal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz",
"integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==",
"dependencies": {
"@types/mdast": "^4.0.0",
"ccount": "^2.0.0",
"devlop": "^1.0.0",
"mdast-util-find-and-replace": "^3.0.0",
"micromark-util-character": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/mdast-util-gfm-footnote": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz",
"integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==",
"dependencies": {
"@types/mdast": "^4.0.0",
"devlop": "^1.1.0",
"mdast-util-from-markdown": "^2.0.0",
"mdast-util-to-markdown": "^2.0.0",
"micromark-util-normalize-identifier": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/mdast-util-gfm-strikethrough": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
"integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
"dependencies": {
"@types/mdast": "^4.0.0",
"mdast-util-from-markdown": "^2.0.0",
"mdast-util-to-markdown": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/mdast-util-gfm-table": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
"integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
"dependencies": {
"@types/mdast": "^4.0.0",
"devlop": "^1.0.0",
"markdown-table": "^3.0.0",
"mdast-util-from-markdown": "^2.0.0",
"mdast-util-to-markdown": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/mdast-util-gfm-task-list-item": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
"integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
"dependencies": {
"@types/mdast": "^4.0.0",
"devlop": "^1.0.0",
"mdast-util-from-markdown": "^2.0.0",
"mdast-util-to-markdown": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/mdast-util-mdx-expression": { "node_modules/mdast-util-mdx-expression": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
@ -2433,6 +2564,120 @@
"micromark-util-types": "^2.0.0" "micromark-util-types": "^2.0.0"
} }
}, },
"node_modules/micromark-extension-gfm": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
"integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
"dependencies": {
"micromark-extension-gfm-autolink-literal": "^2.0.0",
"micromark-extension-gfm-footnote": "^2.0.0",
"micromark-extension-gfm-strikethrough": "^2.0.0",
"micromark-extension-gfm-table": "^2.0.0",
"micromark-extension-gfm-tagfilter": "^2.0.0",
"micromark-extension-gfm-task-list-item": "^2.0.0",
"micromark-util-combine-extensions": "^2.0.0",
"micromark-util-types": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/micromark-extension-gfm-autolink-literal": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
"integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
"dependencies": {
"micromark-util-character": "^2.0.0",
"micromark-util-sanitize-uri": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/micromark-extension-gfm-footnote": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
"integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
"dependencies": {
"devlop": "^1.0.0",
"micromark-core-commonmark": "^2.0.0",
"micromark-factory-space": "^2.0.0",
"micromark-util-character": "^2.0.0",
"micromark-util-normalize-identifier": "^2.0.0",
"micromark-util-sanitize-uri": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/micromark-extension-gfm-strikethrough": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
"integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
"dependencies": {
"devlop": "^1.0.0",
"micromark-util-chunked": "^2.0.0",
"micromark-util-classify-character": "^2.0.0",
"micromark-util-resolve-all": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/micromark-extension-gfm-table": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
"integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
"dependencies": {
"devlop": "^1.0.0",
"micromark-factory-space": "^2.0.0",
"micromark-util-character": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/micromark-extension-gfm-tagfilter": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
"integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
"dependencies": {
"micromark-util-types": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/micromark-extension-gfm-task-list-item": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
"integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
"dependencies": {
"devlop": "^1.0.0",
"micromark-factory-space": "^2.0.0",
"micromark-util-character": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/micromark-factory-destination": { "node_modules/micromark-factory-destination": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
@ -3577,6 +3822,23 @@
"react-dom": ">=16.8" "react-dom": ">=16.8"
} }
}, },
"node_modules/remark-gfm": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz",
"integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==",
"dependencies": {
"@types/mdast": "^4.0.0",
"mdast-util-gfm": "^3.0.0",
"micromark-extension-gfm": "^3.0.0",
"remark-parse": "^11.0.0",
"remark-stringify": "^11.0.0",
"unified": "^11.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/remark-parse": { "node_modules/remark-parse": {
"version": "11.0.0", "version": "11.0.0",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
@ -3608,6 +3870,20 @@
"url": "https://opencollective.com/unified" "url": "https://opencollective.com/unified"
} }
}, },
"node_modules/remark-stringify": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
"integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
"dependencies": {
"@types/mdast": "^4.0.0",
"mdast-util-to-markdown": "^2.0.0",
"unified": "^11.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/resize-observer-polyfill": { "node_modules/resize-observer-polyfill": {
"version": "1.5.1", "version": "1.5.1",
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",

View File

@ -15,6 +15,7 @@
"react": "^18.3.1", "react": "^18.3.1",
"react-dom": "^18.3.1", "react-dom": "^18.3.1",
"react-markdown": "^9.0.1", "react-markdown": "^9.0.1",
"remark-gfm": "^4.0.0",
"react-router-dom": "^6.26.2", "react-router-dom": "^6.26.2",
"zustand": "^4.5.5" "zustand": "^4.5.5"
}, },

View File

@ -1,5 +1,11 @@
import { api } from './http'; import { api } from './http';
const unwrapData = <T>(payload: any, hasExpectedShape: (v: any) => boolean): T => {
if (hasExpectedShape(payload)) return payload as T;
if (payload && typeof payload === 'object' && 'data' in payload && hasExpectedShape((payload as any).data)) return (payload as any).data as T;
return payload as T;
};
export interface PointsMallMe { export interface PointsMallMe {
points: number; points: number;
level?: string; level?: string;
@ -19,8 +25,8 @@ export interface PointsExchangeRequest {
export interface PointsExchangePrepareResponse { export interface PointsExchangePrepareResponse {
orderId: string; orderId: string;
pointsDeducted: number; pointsDeducted?: number;
remainingPoints: number; remainingPoints?: number;
expiresAt?: string; expiresAt?: string;
} }
@ -28,8 +34,8 @@ export type PointsExchangeShippingRequest = Omit<PointsExchangeRequest, 'product
export interface PointsExchangeResponse { export interface PointsExchangeResponse {
orderId: string; orderId: string;
pointsDeducted: number; pointsDeducted?: number;
remainingPoints: number; remainingPoints?: number;
} }
export interface PointsMallCategory { export interface PointsMallCategory {
@ -89,7 +95,17 @@ export interface PointsMallProductsResponse {
} }
export const PointsMallAPI = { export const PointsMallAPI = {
overview: () => api.get<PointsMallOverview>('/points-mall/overview').then((r) => r.data), me: () =>
api
.get('/points-mall/me')
.then((r) => unwrapData<PointsMallMe>(r.data, (v) => !!v && typeof v === 'object' && 'points' in v)),
categories: () =>
api.get('/points-mall/categories').then((r) => unwrapData<PointsMallCategory[]>(r.data, (v) => Array.isArray(v))),
announcements: () =>
api.get('/points-mall/announcements').then((r) => unwrapData<PointsMallAnnouncement[]>(r.data, (v) => Array.isArray(v))),
banners: () => api.get('/points-mall/banners').then((r) => unwrapData<PointsMallBanner[]>(r.data, (v) => Array.isArray(v))),
promoEntries: () =>
api.get('/points-mall/promo-entries').then((r) => unwrapData<PointsMallPromoEntry[]>(r.data, (v) => Array.isArray(v))),
products: (opts: { categoryId?: string; q?: string; sort?: string; page?: number; pageSize?: number } = {}) => products: (opts: { categoryId?: string; q?: string; sort?: string; page?: number; pageSize?: number } = {}) =>
api api
.get<PointsMallProductsResponse>('/points-mall/products', { .get<PointsMallProductsResponse>('/points-mall/products', {
@ -101,12 +117,17 @@ export const PointsMallAPI = {
pageSize: opts.pageSize ?? 24 pageSize: opts.pageSize ?? 24
} }
}) })
.then((r) => r.data), .then((r) => unwrapData<PointsMallProductsResponse>(r.data, (v) => !!v && typeof v === 'object' && 'items' in v)),
exchangePrepare: (productId: string) => exchangePrepare: (productId: string, quantity: number) =>
api.post<PointsExchangePrepareResponse>('/points-mall/exchange/prepare', { productId }).then((r) => r.data), api
.post('/points-mall/exchange/prepare', { productId, quantity })
.then((r) => unwrapData<PointsExchangePrepareResponse>(r.data, (v) => !!v && typeof v === 'object' && 'orderId' in v)),
exchangeSubmitShipping: (orderId: string, shippingInfo: PointsExchangeShippingRequest) => exchangeSubmitShipping: (orderId: string, shippingInfo: PointsExchangeShippingRequest) =>
api.post<PointsExchangeResponse>(`/points-mall/exchange/${orderId}/shipping`, shippingInfo).then((r) => r.data), api
exchange: (productId: string, shippingInfo: Omit<PointsExchangeRequest, 'productId'>) => .post(`/points-mall/exchange/${orderId}/shipping`, shippingInfo)
api.post<PointsExchangeResponse>('/points-mall/exchange', { productId, ...shippingInfo }).then((r) => r.data) .then((r) => unwrapData<PointsExchangeResponse>(r.data, (v) => !!v && typeof v === 'object' && 'orderId' in v)),
exchange: (productId: string, quantity: number, shippingInfo: Omit<PointsExchangeRequest, 'productId'>) =>
api
.post('/points-mall/exchange', { productId, quantity, ...shippingInfo })
.then((r) => unwrapData<PointsExchangeResponse>(r.data, (v) => !!v && typeof v === 'object' && 'orderId' in v))
}; };

View File

@ -4,6 +4,11 @@ export interface StatsOverview {
agentCount: number; agentCount: number;
sessionCount: number; sessionCount: number;
messageCount: number; messageCount: number;
promptTokens?: number;
completionTokens?: number;
totalTokens?: number;
costUSD?: number;
byModel?: AgentTokenStatsByModel[];
daily: { day: string; total: number; user: number; assistant: number }[]; daily: { day: string; total: number; user: number; assistant: number }[];
topAgents: { id: string; name: string; messageCount: number }[]; topAgents: { id: string; name: string; messageCount: number }[];
} }

View File

@ -1,6 +1,5 @@
import { useEffect, useRef, useState } from 'react'; import { useEffect, useRef, useState } from 'react';
import { Button, Input, Space, App as AntApp, Empty, Spin } from 'antd'; import { Button, Input, Space, App as AntApp, Empty, Spin } from 'antd';
import ReactMarkdown from 'react-markdown';
import { import {
Agent, Agent,
ChatMessage, ChatMessage,
@ -9,6 +8,7 @@ import {
RetrievedSnippet, RetrievedSnippet,
ToolCallTrace ToolCallTrace
} from '../api'; } from '../api';
import Markdown from './Markdown';
interface Props { interface Props {
agent: Agent; agent: Agent;
@ -154,7 +154,7 @@ export default function ChatPreview({ agent, agentId }: Props) {
{messages.map((m) => ( {messages.map((m) => (
<div key={m.id} className={`flex ${m.role === 'user' ? 'justify-end' : 'justify-start'}`}> <div key={m.id} className={`flex ${m.role === 'user' ? 'justify-end' : 'justify-start'}`}>
<div className={`bubble ${m.role === 'user' ? 'user' : 'assistant'}`}> <div className={`bubble ${m.role === 'user' ? 'user' : 'assistant'}`}>
<ReactMarkdown>{m.content}</ReactMarkdown> <Markdown>{m.content}</Markdown>
</div> </div>
</div> </div>
))} ))}
@ -162,7 +162,7 @@ export default function ChatPreview({ agent, agentId }: Props) {
<div className="flex justify-start"> <div className="flex justify-start">
<div className="bubble assistant"> <div className="bubble assistant">
{streaming.text ? ( {streaming.text ? (
<ReactMarkdown>{streaming.text + '▍'}</ReactMarkdown> <Markdown>{streaming.text + '▍'}</Markdown>
) : ( ) : (
<span className="text-gray-400">...</span> <span className="text-gray-400">...</span>
)} )}

Some files were not shown because too many files have changed in this diff Show More