main
parent
83aadde08e
commit
2be250b56c
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -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=="}
|
||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
|
|
@ -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}}}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
882ceef627bab6d47e3e1a7e0885c8f57e986e63 {"key":"security-advisory:react-router:tGGEHjUfekLImOTny4HrDPD+KTLAjI+/ctiBG/EAzv2Ug21OTdq5iHmxPUPAYLZbQ8b95B8s8l/iMTPl8bBKpg==","integrity":"sha512-L0WQwMhRV/cv1ML1d7NsPPhYhIE07qsZT2ZO6tXTCLgJ6raE1qfV9eCYgAabVqivr9lGX41+PJwlsiuem1fzPw==","time":1780670570346,"size":30450}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
0ed3d483e8914985dbe9f8aebd48a0a3727a17fc {"key":"security-advisory:esbuild:jKdCIzePj7J1488qgRXvF8Srh9wutSuR1exB8YooNX62hT+qhtrUXYbArLNoIhgwbaCqKpmduh18syZU7BR9SA==","integrity":"sha512-X6SmnRiFa+ifziCDnS/f2GDokVlMig9lnwo/8GbLe3ob5fz6m+BSyGmhEriVJbH+kCJLGdnwe65jTxej9/JmnA==","time":1780670570374,"size":9014}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
e3fa56c2c66472517ccf5ad3236fd0faedb01cf6 {"key":"security-advisory:react-router-dom:PeKCc1/aj4qeekCd2cpS8es3ngWolVmM6k4MsmyS9mpNP2BQYIzOOO1tb9OhlOLXaMn7EywpcjJW4i0piIRPrw==","integrity":"sha512-U2nyCzc3yJe10U9WhA80utwzmOePOAeq7nNb4lYY3sGp0bJ3c3pfABTHwDTH0kfPirPjeZ2bUU1HmhRI8MlE8g==","time":1780670570761,"size":29255}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
97c340a727f6a5058f232d7d513b1999cd0aac07 {"key":"security-advisory:@vitejs/plugin-react:9Gy9+ze27G1us6B+W8biV10fSWWlbvxdqXOWR2dOcacJriijvaJSB375JaNqMBMF4g4ZE1YqsyqGPI5D0gHDqQ==","integrity":"sha512-IX0xLOqvtt+lJkcYzUuYwIHGy3asjgRSvdHpqmQp85iFo3uIrYho/DX1WR9fp3pZhcXaU7wJWwtFZbOgzq5DWw==","time":1780670570871,"size":1680}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
79b5ecae5b61d24fd293cb2a14f2bdf0f51b7701 {"key":"security-advisory:vite:tMBsdAS7JBTyRORp0YaJR984WAAsOxgmReSLBN0Nd41GhzEakjROICqAJ31iOdYG5Ijo/MlJ01p3ig1iN88+Tw==","integrity":"sha512-V3N8wZcZK6Pr/OzlbtZUF4aXDj8F1/gVAkxPFC6fwBVkdiOuqiuL54032XDWBi4T16GgGqXISVfMKwEYVt6muw==","time":1780670570414,"size":16019}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
49c97a50b36d2d2f709d3a996f043a45ddb8b79e {"key":"security-advisory:vite:I1BdsVrQ8+F0Nz5pjiEY7gYSFBzvKNwOR8nQyg9euOprN34SC4VipJH1GMc8WCRl+e0xZWGr2QiYwiNwqO4gag==","integrity":"sha512-zmPYNkOnQNb1L0hdJYrfcJxHoDSdfO9cDy8BSryW7f4h7lF4LNjQPvXW4lbwjrZCWaF3BfWcCsgy/PsrpwEQBQ==","time":1780670570388,"size":16371}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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}}}
|
||||||
|
|
@ -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。
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 }[];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
Loading…
Reference in New Issue