From 4cbcb6586dd217d264698b59af7ca546ae239804 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Mar 2026 00:49:00 +0000 Subject: [PATCH 01/11] Update all patch and minor dependencies --- package-lock.json | 238 ++++++++++++++++++++++++++-------------------- package.json | 24 ++--- 2 files changed, 146 insertions(+), 116 deletions(-) diff --git a/package-lock.json b/package-lock.json index 36207a0..ddf975b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,33 +12,33 @@ "@ethersproject/bytes": "5.8.0", "@ethersproject/hash": "5.8.0", "@ethersproject/keccak256": "5.8.0", - "@headlessui/react": "2.2.0", - "@openrouter/ai-sdk-provider": "^2.2.3", - "@testing-library/react": "16.1.0", + "@headlessui/react": "2.2.9", + "@openrouter/ai-sdk-provider": "2.2.3", + "@testing-library/react": "16.3.2", "@testing-library/user-event": "13.5.0", - "ai": "^6.0.0", + "ai": "6.0.108", "bytes": "3.1.2", - "framer-motion": "11.14.4", + "framer-motion": "11.18.2", "fuse.js": "6.6.2", "http-status-codes": "2.3.0", "react": "18.3.1", "react-device-detect": "2.2.3", "react-dom": "18.3.1", "react-dropzone": "11.7.1", - "react-icons": "5.4.0", - "react-router-dom": "7.12.0", + "react-icons": "5.6.0", + "react-router-dom": "7.13.1", "react-select-search": "3.0.10", "react-syntax-highlighter": "15.6.6", - "react-tooltip": "5.28.0", - "recharts": "2.15.0", + "react-tooltip": "5.30.0", + "recharts": "2.15.4", "web-vitals": "2.1.4" }, "devDependencies": { "@types/aos": "3.0.7", "@types/bytes": "3.1.5", - "@types/node": "20.19.35", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/node": "20.19.37", + "@types/react": "19.2.14", + "@types/react-dom": "19.2.3", "@types/react-syntax-highlighter": "13.5.2", "autoprefixer": "10.4.27", "postcss": "8.5.8", @@ -3139,15 +3139,16 @@ "license": "MIT" }, "node_modules/@headlessui/react": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.0.tgz", - "integrity": "sha512-RzCEg+LXsuI7mHiSomsu/gBJSjpupm6A1qIZ5sWjd7JhARNlMiSA4kKfJpCKwU9tE+zMRterhhrP74PvfJrpXQ==", + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.9.tgz", + "integrity": "sha512-Mb+Un58gwBn0/yWZfyrCh0TJyurtT+dETj7YHleylHk5od3dv2XqETPGWMyQ5/7sYN7oWdyM1u9MvC0OC8UmzQ==", "license": "MIT", "dependencies": { "@floating-ui/react": "^0.26.16", - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@tanstack/react-virtual": "^3.8.1" + "@react-aria/focus": "^3.20.2", + "@react-aria/interactions": "^3.25.0", + "@tanstack/react-virtual": "^3.13.9", + "use-sync-external-store": "^1.5.0" }, "engines": { "node": ">=10" @@ -3736,6 +3737,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/@openrouter/ai-sdk-provider/-/ai-sdk-provider-2.2.3.tgz", "integrity": "sha512-NovC+BaCfEeJwhToDrs8JeDYXXlJdEyz7lcxkjtyePSE4eoAKik872SyDK0MzXKcz8MRkv7XlNhPI6zz4TQp0g==", + "license": "Apache-2.0", "engines": { "node": ">=18" }, @@ -3811,40 +3813,43 @@ } }, "node_modules/@react-aria/focus": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.19.0.tgz", - "integrity": "sha512-hPF9EXoUQeQl1Y21/rbV2H4FdUR2v+4/I0/vB+8U3bT1CJ+1AFj1hc/rqx2DqEwDlEwOHN+E4+mRahQmlybq0A==", + "version": "3.21.5", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.5.tgz", + "integrity": "sha512-V18fwCyf8zqgJdpLQeDU5ZRNd9TeOfBbhLgmX77Zr5ae9XwaoJ1R3SFJG1wCJX60t34AW+aLZSEEK+saQElf3Q==", "license": "Apache-2.0", "dependencies": { - "@react-aria/interactions": "^3.22.5", - "@react-aria/utils": "^3.26.0", - "@react-types/shared": "^3.26.0", + "@react-aria/interactions": "^3.27.1", + "@react-aria/utils": "^3.33.1", + "@react-types/shared": "^3.33.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-aria/interactions": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.5.tgz", - "integrity": "sha512-kMwiAD9E0TQp+XNnOs13yVJghiy8ET8L0cbkeuTgNI96sOAp/63EJ1FSrDf17iD8sdjt41LafwX/dKXW9nCcLQ==", + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.27.1.tgz", + "integrity": "sha512-M3wLpTTmDflI0QGNK0PJNUaBXXfeBXue8ZxLMngfc1piHNiH4G5lUvWd9W14XVbqrSCVY8i8DfGrNYpyyZu0tw==", "license": "Apache-2.0", "dependencies": { - "@react-aria/ssr": "^3.9.7", - "@react-aria/utils": "^3.26.0", - "@react-types/shared": "^3.26.0", + "@react-aria/ssr": "^3.9.10", + "@react-aria/utils": "^3.33.1", + "@react-stately/flags": "^3.1.2", + "@react-types/shared": "^3.33.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-aria/ssr": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.7.tgz", - "integrity": "sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==", + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.10.tgz", + "integrity": "sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==", "license": "Apache-2.0", "dependencies": { "@swc/helpers": "^0.5.0" @@ -3857,25 +3862,36 @@ } }, "node_modules/@react-aria/utils": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.26.0.tgz", - "integrity": "sha512-LkZouGSjjQ0rEqo4XJosS4L3YC/zzQkfRM3KoqK6fUOmUJ9t0jQ09WjiF+uOoG9u+p30AVg3TrZRUWmoTS+koQ==", + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.33.1.tgz", + "integrity": "sha512-kIx1Sj6bbAT0pdqCegHuPanR9zrLn5zMRiM7LN12rgRf55S19ptd9g3ncahArifYTRkfEU9VIn+q0HjfMqS9/w==", "license": "Apache-2.0", "dependencies": { - "@react-aria/ssr": "^3.9.7", - "@react-stately/utils": "^3.10.5", - "@react-types/shared": "^3.26.0", + "@react-aria/ssr": "^3.9.10", + "@react-stately/flags": "^3.1.2", + "@react-stately/utils": "^3.11.0", + "@react-types/shared": "^3.33.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/flags": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.2.tgz", + "integrity": "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" } }, "node_modules/@react-stately/utils": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.5.tgz", - "integrity": "sha512-iMQSGcpaecghDIh3mZEpZfoFH3ExBwTtuBEcvZ2XnGzCgQjeYXcMdIUwAfVQLXFTdHUHGF6Gu6/dFrYsCzySBQ==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz", + "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==", "license": "Apache-2.0", "dependencies": { "@swc/helpers": "^0.5.0" @@ -3885,9 +3901,9 @@ } }, "node_modules/@react-types/shared": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.26.0.tgz", - "integrity": "sha512-6FuPqvhmjjlpEDLTiYx29IJCbCNWPlsyO+ZUmCUXzhUv2ttShOXfw8CmeHWHftT/b2KweAWuzqSlfeXPR76jpw==", + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.33.1.tgz", + "integrity": "sha512-oJHtjvLG43VjwemQDadlR5g/8VepK56B/xKO2XORPHt9zlW6IZs3tZrYlvH29BMvoqC7RtE7E5UjgbnbFtDGag==", "license": "Apache-2.0", "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" @@ -4241,21 +4257,21 @@ } }, "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", + "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.8.0" } }, "node_modules/@tanstack/react-virtual": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.11.1.tgz", - "integrity": "sha512-orn2QNe5tF6SqjucHJ6cKTKcRDe3GG7bcYqPNn72Yejj7noECdzgAyRfGt2pGDPemhYim3d1HIR/dgruCnLfUA==", + "version": "3.13.21", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.21.tgz", + "integrity": "sha512-SYXFrmrbPgXBvf+HsOsKhFgqSe4M6B29VHOsX9Jih9TlNkNkDWx0hWMiMLUghMEzyUz772ndzdEeCEBx+3GIZw==", "license": "MIT", "dependencies": { - "@tanstack/virtual-core": "3.10.9" + "@tanstack/virtual-core": "3.13.21" }, "funding": { "type": "github", @@ -4267,9 +4283,9 @@ } }, "node_modules/@tanstack/virtual-core": { - "version": "3.10.9", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.10.9.tgz", - "integrity": "sha512-kBknKOKzmeR7lN+vSadaKWXaLS0SZZG+oqpQ/k80Q6g9REn6zRHS/ZYdrIzHnpHgy/eWs00SujveUN/GJT2qTw==", + "version": "3.13.21", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.21.tgz", + "integrity": "sha512-ww+fmLHyCbPSf7JNbWZP3g7wl6SdNo3ah5Aiw+0e9FDErkVHLKprYUrwTm7dF646FtEkN/KkAKPYezxpmvOjxw==", "license": "MIT", "funding": { "type": "github", @@ -4296,9 +4312,9 @@ } }, "node_modules/@testing-library/react": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.1.0.tgz", - "integrity": "sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==", + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5" @@ -4639,9 +4655,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.19.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.35.tgz", - "integrity": "sha512-Uarfe6J91b9HAUXxjvSOdiO2UPOKLm07Q1oh0JHxoZ1y8HoqxDAu3gVrsrOHeiio0kSsoVBt4wFrKOm0dKxVPQ==", + "version": "20.19.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz", + "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", "dev": true, "license": "MIT", "dependencies": { @@ -4688,23 +4704,23 @@ "dev": true }, "node_modules/@types/react": { - "version": "19.0.1", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.1.tgz", - "integrity": "sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "devOptional": true, "license": "MIT", "dependencies": { - "csstype": "^3.0.2" + "csstype": "^3.2.2" } }, "node_modules/@types/react-dom": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.2.tgz", - "integrity": "sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "devOptional": true, "license": "MIT", "peerDependencies": { - "@types/react": "^19.0.0" + "@types/react": "^19.2.0" } }, "node_modules/@types/react-syntax-highlighter": { @@ -5337,6 +5353,7 @@ "version": "6.0.108", "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.108.tgz", "integrity": "sha512-h2xwwU9lE+tdLyII/uFcjcrw+7ciWj2S68GrwQsebjHPSfnvxwrn+sjIl+tBt419yA9rYznWXtQvHJxM1wEAAQ==", + "license": "Apache-2.0", "dependencies": { "@ai-sdk/gateway": "3.0.61", "@ai-sdk/provider": "3.0.8", @@ -7317,9 +7334,10 @@ "dev": true }, "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" }, "node_modules/d3-array": { "version": "3.2.4", @@ -9560,13 +9578,13 @@ } }, "node_modules/framer-motion": { - "version": "11.14.4", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.14.4.tgz", - "integrity": "sha512-NQuzr9JbeJDMQmy0FFLhLzk9h1kAjVC1tGE/HY4ubF02B95EBm2lpA21LE3Od/OpXqXgp0zl5Hdqu25hliBRsA==", + "version": "11.18.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.2.tgz", + "integrity": "sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w==", "license": "MIT", "dependencies": { - "motion-dom": "^11.14.3", - "motion-utils": "^11.14.3", + "motion-dom": "^11.18.1", + "motion-utils": "^11.18.1", "tslib": "^2.4.0" }, "peerDependencies": { @@ -12752,15 +12770,18 @@ } }, "node_modules/motion-dom": { - "version": "11.14.3", - "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.14.3.tgz", - "integrity": "sha512-lW+D2wBy5vxLJi6aCP0xyxTxlTfiu+b+zcpVbGVFUxotwThqhdpPRSmX8xztAgtZMPMeU0WGVn/k1w4I+TbPqA==", - "license": "MIT" + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.18.1.tgz", + "integrity": "sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==", + "license": "MIT", + "dependencies": { + "motion-utils": "^11.18.1" + } }, "node_modules/motion-utils": { - "version": "11.14.3", - "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-11.14.3.tgz", - "integrity": "sha512-Xg+8xnqIJTpr0L/cidfTTBFkvRw26ZtGGuIhA94J9PQ2p4mEa06Xx7QVYZH0BP+EpMSaDlu+q0I0mmvwADPsaQ==", + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-11.18.1.tgz", + "integrity": "sha512-49Kt+HKjtbJKLtgO/LKj9Ld+6vw9BjH5d9sc40R/kVyH8GLAXgT42M2NnuPcJNuA3s9ZfZBUcwIgpmZWGEE+hA==", "license": "MIT" }, "node_modules/ms": { @@ -15227,9 +15248,9 @@ "dev": true }, "node_modules/react-icons": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.4.0.tgz", - "integrity": "sha512-7eltJxgVt7X64oHh6wSWNwwbKTCtMfK35hcjvJS0yxEAhPM8oUKdS3+kqaW1vicIltw+kR2unHaa12S9pPALoQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.6.0.tgz", + "integrity": "sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA==", "license": "MIT", "peerDependencies": { "react": "*" @@ -15250,9 +15271,9 @@ } }, "node_modules/react-router": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.12.0.tgz", - "integrity": "sha512-kTPDYPFzDVGIIGNLS5VJykK0HfHLY5MF3b+xj0/tTyNYL1gF1qs7u67Z9jEhQk2sQ98SUaHxlG31g1JtF7IfVw==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.1.tgz", + "integrity": "sha512-td+xP4X2/6BJvZoX6xw++A2DdEi++YypA69bJUV5oVvqf6/9/9nNlD70YO1e9d3MyamJEBQFEzk6mbfDYbqrSA==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -15272,12 +15293,12 @@ } }, "node_modules/react-router-dom": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.12.0.tgz", - "integrity": "sha512-pfO9fiBcpEfX4Tx+iTYKDtPbrSLLCbwJ5EqP+SPYQu1VYCXdy79GSj0wttR0U4cikVdlImZuEZ/9ZNCgoaxwBA==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.1.tgz", + "integrity": "sha512-UJnV3Rxc5TgUPJt2KJpo1Jpy0OKQr0AjgbZzBFjaPJcFOb2Y8jA5H3LT8HUJAiRLlWrEXWHbF1Z4SCZaQjWDHw==", "license": "MIT", "dependencies": { - "react-router": "7.12.0" + "react-router": "7.13.1" }, "engines": { "node": ">=20.0.0" @@ -15420,9 +15441,9 @@ } }, "node_modules/react-tooltip": { - "version": "5.28.0", - "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.28.0.tgz", - "integrity": "sha512-R5cO3JPPXk6FRbBHMO0rI9nkUG/JKfalBSQfZedZYzmqaZQgq7GLzF8vcCWx6IhUCKg0yPqJhXIzmIO5ff15xg==", + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.30.0.tgz", + "integrity": "sha512-Yn8PfbgQ/wmqnL7oBpz1QiDaLKrzZMdSUUdk7nVeGTwzbxCAJiJzR4VSYW+eIO42F1INt57sPUmpgKv0KwJKtg==", "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.6.1", @@ -15485,16 +15506,16 @@ } }, "node_modules/recharts": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.0.tgz", - "integrity": "sha512-cIvMxDfpAmqAmVgc4yb7pgm/O1tmmkl/CjrvXuW+62/+7jj/iF9Ykm+hb/UJt42TREHMyd3gb+pkgoa2MxgDIw==", + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", + "integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", "license": "MIT", "dependencies": { "clsx": "^2.0.0", "eventemitter3": "^4.0.1", "lodash": "^4.17.21", "react-is": "^18.3.1", - "react-smooth": "^4.0.0", + "react-smooth": "^4.0.4", "recharts-scale": "^0.4.4", "tiny-invariant": "^1.3.1", "victory-vendor": "^36.6.8" @@ -17984,6 +18005,15 @@ "requires-port": "^1.0.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index 7ffd96c..7d4dc06 100644 --- a/package.json +++ b/package.json @@ -7,26 +7,26 @@ "@ethersproject/bytes": "5.8.0", "@ethersproject/hash": "5.8.0", "@ethersproject/keccak256": "5.8.0", - "@headlessui/react": "2.2.0", - "@testing-library/react": "16.1.0", + "@headlessui/react": "2.2.9", + "@testing-library/react": "16.3.2", "@testing-library/user-event": "13.5.0", "bytes": "3.1.2", - "framer-motion": "11.14.4", + "framer-motion": "11.18.2", "fuse.js": "6.6.2", "http-status-codes": "2.3.0", "react": "18.3.1", "react-device-detect": "2.2.3", "react-dom": "18.3.1", "react-dropzone": "11.7.1", - "react-icons": "5.4.0", - "react-router-dom": "7.12.0", + "react-icons": "5.6.0", + "react-router-dom": "7.13.1", "react-select-search": "3.0.10", "react-syntax-highlighter": "15.6.6", - "react-tooltip": "5.28.0", - "recharts": "2.15.0", + "react-tooltip": "5.30.0", + "recharts": "2.15.4", "web-vitals": "2.1.4", - "@openrouter/ai-sdk-provider": "^2.2.3", - "ai": "^6.0.0" + "@openrouter/ai-sdk-provider": "2.2.3", + "ai": "6.0.108" }, "optionalDependencies": { "fsevents": "2.3.3" @@ -63,9 +63,9 @@ "devDependencies": { "@types/aos": "3.0.7", "@types/bytes": "3.1.5", - "@types/node": "20.19.35", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/node": "20.19.37", + "@types/react": "19.2.14", + "@types/react-dom": "19.2.3", "@types/react-syntax-highlighter": "13.5.2", "autoprefixer": "10.4.27", "postcss": "8.5.8", From e0032d13988a37a61456fcdc35f92939ccad5d4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kaan=20Uzdo=C4=9Fan?= Date: Fri, 13 Mar 2026 13:59:33 +0300 Subject: [PATCH 02/11] Add "Isn't Sourcify a block explorer?" FAQ entry Co-Authored-By: Claude Sonnet 4.6 --- src/pages/LandingPage/FAQ.tsx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/pages/LandingPage/FAQ.tsx b/src/pages/LandingPage/FAQ.tsx index 8e85c88..91f6289 100644 --- a/src/pages/LandingPage/FAQ.tsx +++ b/src/pages/LandingPage/FAQ.tsx @@ -121,6 +121,23 @@ export default function FAQ() { ), }, + { + q: "Isn't Sourcify a block explorer?", + a: ( + <> +

No. Sourcify's focus is contract verification only.

+

+ Block explorers like Etherscan or Blockscout let users view all activity on the chain (transactions, + blocks, accounts, and more), which requires significant infrastructure and indexing the chains, + particularly difficult for chains with low block times. +

+

+ Sourcify is only concerned with deployed contracts and their source code. In fact, block explorers can use + Sourcify as their verification backend, which is what Blockscout does. +

+ + ), + }, { q: "What is the Verifier Alliance?", a: ( From b7590548e6c79b9aeddb3f1765c6f4240c328a77 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 17 Mar 2026 08:17:06 +0000 Subject: [PATCH 03/11] Update all patch and minor dependencies (#54) --- package-lock.json | 40 ++++++++++++++++++++++------------------ package.json | 4 ++-- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index ddf975b..ca50d23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,10 +13,10 @@ "@ethersproject/hash": "5.8.0", "@ethersproject/keccak256": "5.8.0", "@headlessui/react": "2.2.9", - "@openrouter/ai-sdk-provider": "2.2.3", + "@openrouter/ai-sdk-provider": "2.3.3", "@testing-library/react": "16.3.2", "@testing-library/user-event": "13.5.0", - "ai": "6.0.108", + "ai": "6.0.116", "bytes": "3.1.2", "framer-motion": "11.18.2", "fuse.js": "6.6.2", @@ -50,12 +50,13 @@ } }, "node_modules/@ai-sdk/gateway": { - "version": "3.0.61", - "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.61.tgz", - "integrity": "sha512-OT6SeORuOoqfABhntMJHmInblxE2DbBYvRTynVOGl6dCDDh0cNU1lJgknyDV698eQmfb6Um/94/rImgt0ZPjDA==", + "version": "3.0.66", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.66.tgz", + "integrity": "sha512-SIQ0YY0iMuv+07HLsZ+bB990zUJ6S4ujORAh+Jv1V2KGNn73qQKnGO0JBk+w+Res8YqOFSycwDoWcFlQrVxS4A==", + "license": "Apache-2.0", "dependencies": { "@ai-sdk/provider": "3.0.8", - "@ai-sdk/provider-utils": "4.0.17", + "@ai-sdk/provider-utils": "4.0.19", "@vercel/oidc": "3.1.0" }, "engines": { @@ -77,9 +78,10 @@ } }, "node_modules/@ai-sdk/provider-utils": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.17.tgz", - "integrity": "sha512-oyCeFINTYK0B8ZGUBiQc05G5vytPlKSmTTtm19xfJuUgoi8zkvvRcoPQci4mSnyfpPn2XSFFDfsALG8uGcapfg==", + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.19.tgz", + "integrity": "sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg==", + "license": "Apache-2.0", "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", @@ -3734,9 +3736,9 @@ } }, "node_modules/@openrouter/ai-sdk-provider": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@openrouter/ai-sdk-provider/-/ai-sdk-provider-2.2.3.tgz", - "integrity": "sha512-NovC+BaCfEeJwhToDrs8JeDYXXlJdEyz7lcxkjtyePSE4eoAKik872SyDK0MzXKcz8MRkv7XlNhPI6zz4TQp0g==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@openrouter/ai-sdk-provider/-/ai-sdk-provider-2.3.3.tgz", + "integrity": "sha512-4fVteGkVedc7fGoA9+qJs4tpYwALezMq14m2Sjub3KmyRlksCbK+WJf67NPdGem8+NZrV2tAN42A1NU3+SiV3w==", "license": "Apache-2.0", "engines": { "node": ">=18" @@ -4021,7 +4023,8 @@ "node_modules/@standard-schema/spec": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==" + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", @@ -5350,14 +5353,14 @@ } }, "node_modules/ai": { - "version": "6.0.108", - "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.108.tgz", - "integrity": "sha512-h2xwwU9lE+tdLyII/uFcjcrw+7ciWj2S68GrwQsebjHPSfnvxwrn+sjIl+tBt419yA9rYznWXtQvHJxM1wEAAQ==", + "version": "6.0.116", + "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.116.tgz", + "integrity": "sha512-7yM+cTmyRLeNIXwt4Vj+mrrJgVQ9RMIW5WO0ydoLoYkewIvsMcvUmqS4j2RJTUXaF1HphwmSKUMQ/HypNRGOmA==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/gateway": "3.0.61", + "@ai-sdk/gateway": "3.0.66", "@ai-sdk/provider": "3.0.8", - "@ai-sdk/provider-utils": "4.0.17", + "@ai-sdk/provider-utils": "4.0.19", "@opentelemetry/api": "1.9.0" }, "engines": { @@ -8972,6 +8975,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", "engines": { "node": ">=18.0.0" } diff --git a/package.json b/package.json index 7d4dc06..cb54cad 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,8 @@ "react-tooltip": "5.30.0", "recharts": "2.15.4", "web-vitals": "2.1.4", - "@openrouter/ai-sdk-provider": "2.2.3", - "ai": "6.0.108" + "@openrouter/ai-sdk-provider": "2.3.3", + "ai": "6.0.116" }, "optionalDependencies": { "fsevents": "2.3.3" From 4e6504ceb31751c58fae801004c95fab2f2afd21 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 24 Mar 2026 07:40:56 +0000 Subject: [PATCH 04/11] Update all patch and minor dependencies (#55) --- package-lock.json | 42 +++++++++++++++++++++--------------------- package.json | 4 ++-- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index ca50d23..0049a41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@openrouter/ai-sdk-provider": "2.3.3", "@testing-library/react": "16.3.2", "@testing-library/user-event": "13.5.0", - "ai": "6.0.116", + "ai": "6.0.137", "bytes": "3.1.2", "framer-motion": "11.18.2", "fuse.js": "6.6.2", @@ -26,7 +26,7 @@ "react-dom": "18.3.1", "react-dropzone": "11.7.1", "react-icons": "5.6.0", - "react-router-dom": "7.13.1", + "react-router-dom": "7.13.2", "react-select-search": "3.0.10", "react-syntax-highlighter": "15.6.6", "react-tooltip": "5.30.0", @@ -50,13 +50,13 @@ } }, "node_modules/@ai-sdk/gateway": { - "version": "3.0.66", - "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.66.tgz", - "integrity": "sha512-SIQ0YY0iMuv+07HLsZ+bB990zUJ6S4ujORAh+Jv1V2KGNn73qQKnGO0JBk+w+Res8YqOFSycwDoWcFlQrVxS4A==", + "version": "3.0.79", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.79.tgz", + "integrity": "sha512-Wk2QJpqd0em5YcR49uoMCy9msyANAYgjXdlRcqqRt2fz4rNLnMMrKOlLwAXoFzR1ElR3bj4e/k6hscRfjpzSGA==", "license": "Apache-2.0", "dependencies": { "@ai-sdk/provider": "3.0.8", - "@ai-sdk/provider-utils": "4.0.19", + "@ai-sdk/provider-utils": "4.0.21", "@vercel/oidc": "3.1.0" }, "engines": { @@ -78,9 +78,9 @@ } }, "node_modules/@ai-sdk/provider-utils": { - "version": "4.0.19", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.19.tgz", - "integrity": "sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg==", + "version": "4.0.21", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.21.tgz", + "integrity": "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw==", "license": "Apache-2.0", "dependencies": { "@ai-sdk/provider": "3.0.8", @@ -5353,14 +5353,14 @@ } }, "node_modules/ai": { - "version": "6.0.116", - "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.116.tgz", - "integrity": "sha512-7yM+cTmyRLeNIXwt4Vj+mrrJgVQ9RMIW5WO0ydoLoYkewIvsMcvUmqS4j2RJTUXaF1HphwmSKUMQ/HypNRGOmA==", + "version": "6.0.137", + "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.137.tgz", + "integrity": "sha512-9e/mNMTmXmMkmldEJPIumy9FFBuUWHUyj2yF8EglC3VVOhVVBwlnpeHYSFKdNc13Jj6Hso3EJcZioMaofgCs4A==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/gateway": "3.0.66", + "@ai-sdk/gateway": "3.0.79", "@ai-sdk/provider": "3.0.8", - "@ai-sdk/provider-utils": "4.0.19", + "@ai-sdk/provider-utils": "4.0.21", "@opentelemetry/api": "1.9.0" }, "engines": { @@ -15275,9 +15275,9 @@ } }, "node_modules/react-router": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.1.tgz", - "integrity": "sha512-td+xP4X2/6BJvZoX6xw++A2DdEi++YypA69bJUV5oVvqf6/9/9nNlD70YO1e9d3MyamJEBQFEzk6mbfDYbqrSA==", + "version": "7.13.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.2.tgz", + "integrity": "sha512-tX1Aee+ArlKQP+NIUd7SE6Li+CiGKwQtbS+FfRxPX6Pe4vHOo6nr9d++u5cwg+Z8K/x8tP+7qLmujDtfrAoUJA==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -15297,12 +15297,12 @@ } }, "node_modules/react-router-dom": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.1.tgz", - "integrity": "sha512-UJnV3Rxc5TgUPJt2KJpo1Jpy0OKQr0AjgbZzBFjaPJcFOb2Y8jA5H3LT8HUJAiRLlWrEXWHbF1Z4SCZaQjWDHw==", + "version": "7.13.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.2.tgz", + "integrity": "sha512-aR7SUORwTqAW0JDeiWF07e9SBE9qGpByR9I8kJT5h/FrBKxPMS6TiC7rmVO+gC0q52Bx7JnjWe8Z1sR9faN4YA==", "license": "MIT", "dependencies": { - "react-router": "7.13.1" + "react-router": "7.13.2" }, "engines": { "node": ">=20.0.0" diff --git a/package.json b/package.json index cb54cad..476ec1c 100644 --- a/package.json +++ b/package.json @@ -19,14 +19,14 @@ "react-dom": "18.3.1", "react-dropzone": "11.7.1", "react-icons": "5.6.0", - "react-router-dom": "7.13.1", + "react-router-dom": "7.13.2", "react-select-search": "3.0.10", "react-syntax-highlighter": "15.6.6", "react-tooltip": "5.30.0", "recharts": "2.15.4", "web-vitals": "2.1.4", "@openrouter/ai-sdk-provider": "2.3.3", - "ai": "6.0.116" + "ai": "6.0.137" }, "optionalDependencies": { "fsevents": "2.3.3" From 630d12a74aaa043236d6cd5f6cd8f0d3462d12b0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 31 Mar 2026 01:40:01 +0000 Subject: [PATCH 05/11] Update dependency ai to v6.0.141 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0049a41..24fa2ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@openrouter/ai-sdk-provider": "2.3.3", "@testing-library/react": "16.3.2", "@testing-library/user-event": "13.5.0", - "ai": "6.0.137", + "ai": "6.0.141", "bytes": "3.1.2", "framer-motion": "11.18.2", "fuse.js": "6.6.2", @@ -50,9 +50,9 @@ } }, "node_modules/@ai-sdk/gateway": { - "version": "3.0.79", - "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.79.tgz", - "integrity": "sha512-Wk2QJpqd0em5YcR49uoMCy9msyANAYgjXdlRcqqRt2fz4rNLnMMrKOlLwAXoFzR1ElR3bj4e/k6hscRfjpzSGA==", + "version": "3.0.83", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.83.tgz", + "integrity": "sha512-LvlWujbSdEkTBXBLFtF7GS6riXdHhH0O+DpDrCaNQvXeHmSF2jKsOg7JWXiCgygAHM5cWFAO3JYmZp83DjiuBQ==", "license": "Apache-2.0", "dependencies": { "@ai-sdk/provider": "3.0.8", @@ -5353,12 +5353,12 @@ } }, "node_modules/ai": { - "version": "6.0.137", - "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.137.tgz", - "integrity": "sha512-9e/mNMTmXmMkmldEJPIumy9FFBuUWHUyj2yF8EglC3VVOhVVBwlnpeHYSFKdNc13Jj6Hso3EJcZioMaofgCs4A==", + "version": "6.0.141", + "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.141.tgz", + "integrity": "sha512-+GomGQWaId3xN0wcugUW/H7xMMaFkID2PiS7K/Wugj45G3efv0BXhQ3psRZoQVoRbOpdNoUqcK/KTB+FR4h6qg==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/gateway": "3.0.79", + "@ai-sdk/gateway": "3.0.83", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21", "@opentelemetry/api": "1.9.0" diff --git a/package.json b/package.json index 476ec1c..f0a3d84 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "recharts": "2.15.4", "web-vitals": "2.1.4", "@openrouter/ai-sdk-provider": "2.3.3", - "ai": "6.0.137" + "ai": "6.0.141" }, "optionalDependencies": { "fsevents": "2.3.3" From 0aeb1594d4c787d4b6643bbb0ba5a7ec9420fdea Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 7 Apr 2026 08:14:02 +0100 Subject: [PATCH 06/11] Update all patch and minor dependencies (#57) --- package-lock.json | 58 +++++++++++++++++++++++------------------------ package.json | 8 +++---- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index 24fa2ae..9241cf7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,10 +13,10 @@ "@ethersproject/hash": "5.8.0", "@ethersproject/keccak256": "5.8.0", "@headlessui/react": "2.2.9", - "@openrouter/ai-sdk-provider": "2.3.3", + "@openrouter/ai-sdk-provider": "2.5.0", "@testing-library/react": "16.3.2", "@testing-library/user-event": "13.5.0", - "ai": "6.0.141", + "ai": "6.0.149", "bytes": "3.1.2", "framer-motion": "11.18.2", "fuse.js": "6.6.2", @@ -26,7 +26,7 @@ "react-dom": "18.3.1", "react-dropzone": "11.7.1", "react-icons": "5.6.0", - "react-router-dom": "7.13.2", + "react-router-dom": "7.14.0", "react-select-search": "3.0.10", "react-syntax-highlighter": "15.6.6", "react-tooltip": "5.30.0", @@ -36,7 +36,7 @@ "devDependencies": { "@types/aos": "3.0.7", "@types/bytes": "3.1.5", - "@types/node": "20.19.37", + "@types/node": "20.19.39", "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@types/react-syntax-highlighter": "13.5.2", @@ -50,13 +50,13 @@ } }, "node_modules/@ai-sdk/gateway": { - "version": "3.0.83", - "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.83.tgz", - "integrity": "sha512-LvlWujbSdEkTBXBLFtF7GS6riXdHhH0O+DpDrCaNQvXeHmSF2jKsOg7JWXiCgygAHM5cWFAO3JYmZp83DjiuBQ==", + "version": "3.0.91", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.91.tgz", + "integrity": "sha512-J39Dh6Gyg6HjG3A7OFKnJMp3QyZ3Eex+XDiX8aFBdRwwZm3jGWaMhkCxQPH7yiQ9kRiErZwHXX/Oexx4SyGGGA==", "license": "Apache-2.0", "dependencies": { "@ai-sdk/provider": "3.0.8", - "@ai-sdk/provider-utils": "4.0.21", + "@ai-sdk/provider-utils": "4.0.23", "@vercel/oidc": "3.1.0" }, "engines": { @@ -78,9 +78,9 @@ } }, "node_modules/@ai-sdk/provider-utils": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.21.tgz", - "integrity": "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw==", + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.23.tgz", + "integrity": "sha512-z8GlDaCmRSDlqkMF2f4/RFgWxdarvIbyuk+m6WXT1LYgsnGiXRJGTD2Z1+SDl3LqtFuRtGX1aghYvQLoHL/9pg==", "license": "Apache-2.0", "dependencies": { "@ai-sdk/provider": "3.0.8", @@ -3736,9 +3736,9 @@ } }, "node_modules/@openrouter/ai-sdk-provider": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@openrouter/ai-sdk-provider/-/ai-sdk-provider-2.3.3.tgz", - "integrity": "sha512-4fVteGkVedc7fGoA9+qJs4tpYwALezMq14m2Sjub3KmyRlksCbK+WJf67NPdGem8+NZrV2tAN42A1NU3+SiV3w==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@openrouter/ai-sdk-provider/-/ai-sdk-provider-2.5.0.tgz", + "integrity": "sha512-QHGMh0sWHuvDDIF48VN2GQhAi0CQwGEwDlDxd6Q3DU4peiTefNLtMYefRCbI5zCaZxRRXXQxfGgScULeSwj9DA==", "license": "Apache-2.0", "engines": { "node": ">=18" @@ -4658,9 +4658,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.19.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz", - "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", + "version": "20.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.39.tgz", + "integrity": "sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==", "dev": true, "license": "MIT", "dependencies": { @@ -5353,14 +5353,14 @@ } }, "node_modules/ai": { - "version": "6.0.141", - "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.141.tgz", - "integrity": "sha512-+GomGQWaId3xN0wcugUW/H7xMMaFkID2PiS7K/Wugj45G3efv0BXhQ3psRZoQVoRbOpdNoUqcK/KTB+FR4h6qg==", + "version": "6.0.149", + "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.149.tgz", + "integrity": "sha512-3asRb/m3ZGH7H4+VTuTgj8eQYJZ9IJUmV0ljLslY92mQp6Zj+NVn4SmFj0TBr2Y/wFBWC3xgn++47tSGOXxdbw==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/gateway": "3.0.83", + "@ai-sdk/gateway": "3.0.91", "@ai-sdk/provider": "3.0.8", - "@ai-sdk/provider-utils": "4.0.21", + "@ai-sdk/provider-utils": "4.0.23", "@opentelemetry/api": "1.9.0" }, "engines": { @@ -15275,9 +15275,9 @@ } }, "node_modules/react-router": { - "version": "7.13.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.2.tgz", - "integrity": "sha512-tX1Aee+ArlKQP+NIUd7SE6Li+CiGKwQtbS+FfRxPX6Pe4vHOo6nr9d++u5cwg+Z8K/x8tP+7qLmujDtfrAoUJA==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.14.0.tgz", + "integrity": "sha512-m/xR9N4LQLmAS0ZhkY2nkPA1N7gQ5TUVa5n8TgANuDTARbn1gt+zLPXEm7W0XDTbrQ2AJSJKhoa6yx1D8BcpxQ==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -15297,12 +15297,12 @@ } }, "node_modules/react-router-dom": { - "version": "7.13.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.2.tgz", - "integrity": "sha512-aR7SUORwTqAW0JDeiWF07e9SBE9qGpByR9I8kJT5h/FrBKxPMS6TiC7rmVO+gC0q52Bx7JnjWe8Z1sR9faN4YA==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.14.0.tgz", + "integrity": "sha512-2G3ajSVSZMEtmTjIklRWlNvo8wICEpLihfD/0YMDxbWK2UyP5EGfnoIn9AIQGnF3G/FX0MRbHXdFcD+rL1ZreQ==", "license": "MIT", "dependencies": { - "react-router": "7.13.2" + "react-router": "7.14.0" }, "engines": { "node": ">=20.0.0" diff --git a/package.json b/package.json index f0a3d84..a4597d9 100644 --- a/package.json +++ b/package.json @@ -19,14 +19,14 @@ "react-dom": "18.3.1", "react-dropzone": "11.7.1", "react-icons": "5.6.0", - "react-router-dom": "7.13.2", + "react-router-dom": "7.14.0", "react-select-search": "3.0.10", "react-syntax-highlighter": "15.6.6", "react-tooltip": "5.30.0", "recharts": "2.15.4", "web-vitals": "2.1.4", - "@openrouter/ai-sdk-provider": "2.3.3", - "ai": "6.0.141" + "@openrouter/ai-sdk-provider": "2.5.0", + "ai": "6.0.149" }, "optionalDependencies": { "fsevents": "2.3.3" @@ -63,7 +63,7 @@ "devDependencies": { "@types/aos": "3.0.7", "@types/bytes": "3.1.5", - "@types/node": "20.19.37", + "@types/node": "20.19.39", "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@types/react-syntax-highlighter": "13.5.2", From 032c08abce701cdba04160a6f21a3ee5a8cd3c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kaan=20Uzdo=C4=9Fan?= Date: Mon, 13 Apr 2026 14:34:21 +0300 Subject: [PATCH 07/11] Show parquet export size and DB size on landing page with tooltips Fetches v2/stats.json from export.sourcify.dev and renders two headline figures (parquet export size, Postgres DB size) in the contract stats section. Each figure has an info tooltip breaking down per-table sizes; the parquet tooltip also explains the daily export + zstd compression and links to the docs. Requires verifier-alliance/parquet-export# to be merged first so that v2/stats.json is published. Co-Authored-By: Claude Sonnet 4.6 --- src/pages/LandingPage/VerifiedContracts.tsx | 149 ++++++++++++++++++++ 1 file changed, 149 insertions(+) diff --git a/src/pages/LandingPage/VerifiedContracts.tsx b/src/pages/LandingPage/VerifiedContracts.tsx index 11ec10c..d9d89f5 100644 --- a/src/pages/LandingPage/VerifiedContracts.tsx +++ b/src/pages/LandingPage/VerifiedContracts.tsx @@ -6,6 +6,8 @@ import ChainSelect from "../../components/ChainSelect"; import { motion, useInView } from "framer-motion"; import Button from "../../components/Button"; import { FaDownload } from "react-icons/fa"; +import { FiInfo } from "react-icons/fi"; +import { Tooltip as ReactTooltip } from "react-tooltip"; const NUMBER_OF_TOP_CHAINS = 10; @@ -16,6 +18,36 @@ type statsType = { }; }; +type TableParquetStats = { bytes: number; fileCount: number }; +type TableDbStats = { bytes: number }; +type DatasetStatsType = { + generatedAt: string; + schemaVersion: string; + parquet: { + totalBytes: number; + fileCount: number; + tables: Record; + }; + database: { + totalBytes: number; + tables: Record; + }; +}; + +function formatBytes(bytes: number): string { + if (bytes >= 1e12) return (bytes / 1e12).toFixed(1) + " TB"; + if (bytes >= 1e9) return (bytes / 1e9).toFixed(1) + " GB"; + if (bytes >= 1e6) return (bytes / 1e6).toFixed(1) + " MB"; + return (bytes / 1e3).toFixed(1) + " KB"; +} + +function timeAgo(isoDate: string): string { + const diff = Math.floor((Date.now() - new Date(isoDate).getTime()) / 1000); + if (diff < 3600) return `${Math.floor(diff / 60)}m ago`; + if (diff < 86400) return `${Math.floor(diff / 3600)}h ago`; + return `${Math.floor(diff / 86400)}d ago`; +} + const Chart = () => { const { sourcifyChainMap, sourcifyChains } = useContext(Context); const [selectedChain, setSelectedChain] = useState("1"); @@ -24,6 +56,8 @@ const Chart = () => { const isSectionInView = useInView(sectionRef, { once: true }); const [stats, setStats] = useState(undefined); + const [datasetStats, setDatasetStats] = useState(null); + // Window width to make the chart responsive. We'll change the font sizes and tick width based on this const [windowWidth, setWindowWidth] = useState(window.innerWidth); @@ -45,6 +79,13 @@ const Chart = () => { .catch(() => console.error("error fetching stats")); }, []); + useEffect(() => { + fetch("https://export.sourcify.dev/v2/stats.json") + .then((res) => res.json()) + .then((json) => setDatasetStats(json)) + .catch(() => console.error("error fetching dataset stats")); + }, []); + useEffect(() => { if (stats && isSectionInView) { const total = Object.values(stats || {}).reduce((prev, curr, i) => { @@ -131,6 +172,114 @@ const Chart = () => { 📊 stats.sourcify.dev + + {datasetStats && ( + + {/* Parquet export size */} +
+
+ + {formatBytes(datasetStats.parquet.totalBytes)} + + +
+ parquet export size + updated {timeAgo(datasetStats.generatedAt)} +
+ + {/* Database size */} +
+
+ + {formatBytes(datasetStats.database.totalBytes)} + + +
+ database size +
+ + ( +
+

+ We export our complete Postgres database daily into Apache Parquet format. + Sizes shown are with parquet (zstd) compression. +

+ + Learn more → + + + + + + + + + + + {Object.entries(datasetStats.parquet.tables).map(([table, data]) => ( + + + + + + ))} + +
TableSizeFiles
{table}{formatBytes(data.bytes)}{data.fileCount}
+
+ )} + /> + + ( +
+

+ Live sizes of the Sourcify Postgres database on Google Cloud. Includes indexes and TOAST. + The total also includes system catalogs, so it is slightly larger than the sum of the tables below. +

+ + + + + + + + + {Object.entries(datasetStats.database.tables).map(([table, data]) => ( + + + + + ))} + +
TableSize
{table}{formatBytes(data.bytes)}
+
+ )} + /> +
+ )}