From 35079f4092ec1c477305f682005b5c27abfff056 Mon Sep 17 00:00:00 2001 From: kualta Date: Fri, 9 Jan 2026 14:26:46 -0600 Subject: [PATCH 1/9] upgrade next.js from 15 to 16 --- bun.lock | 91 ++++++++++--------- next.config.mjs | 10 +- package.json | 2 +- src/app/api/posts/[id]/bookmark/route.ts | 3 +- src/app/api/posts/[id]/comments/route.ts | 3 +- .../api/posts/[id]/delete/prepare/route.ts | 3 +- src/app/api/posts/[id]/edit/prepare/route.ts | 3 +- .../api/posts/[id]/reaction/prepare/route.ts | 3 +- src/app/api/posts/[id]/route.ts | 3 +- src/app/api/search/route.ts | 2 +- src/app/api/user/[id]/followers/route.ts | 3 +- src/app/api/user/[id]/following/route.ts | 3 +- src/app/api/user/ens/[address]/route.ts | 3 +- src/app/c/[community]/about/page.tsx | 10 +- src/app/c/[community]/layout.tsx | 10 +- src/app/c/[community]/page.tsx | 10 +- src/app/communities/page.tsx | 3 +- src/app/login/page.tsx | 11 ++- src/app/p/[post]/page.tsx | 6 +- src/app/policy/page.tsx | 8 +- src/app/robots.ts | 7 +- src/app/sitemap.ts | 12 +-- src/app/tos/page.tsx | 4 +- src/app/u/[user]/comments/page.tsx | 6 +- src/app/u/[user]/gallery/page.tsx | 6 +- src/app/u/[user]/layout.tsx | 6 +- src/app/u/[user]/page.tsx | 6 +- src/components/BookmarksFeed.tsx | 1 - src/components/LandingContent.tsx | 31 ++++--- src/components/communities/CommunityIcon.tsx | 8 +- src/components/post/DraftsDialog.tsx | 2 +- src/components/post/RepostDropdown.tsx | 2 +- src/components/ui/sonner.tsx | 14 +-- src/hooks/useSiweAuth.ts | 2 +- src/{middleware.ts => proxy.ts} | 2 +- tsconfig.json | 2 +- 36 files changed, 165 insertions(+), 136 deletions(-) rename src/{middleware.ts => proxy.ts} (97%) diff --git a/bun.lock b/bun.lock index 259a8d4c..5fa12a9c 100644 --- a/bun.lock +++ b/bun.lock @@ -1,6 +1,5 @@ { "lockfileVersion": 1, - "configVersion": 0, "workspaces": { "": { "name": "paper", @@ -96,7 +95,7 @@ "@types/react": "^19.1.12", "@types/react-dom": "^19.1.9", "@types/webpack": "^5.28.5", - "next": "15", + "next": "16", "patch-package": "^8.0.0", "tailwindcss": "4.0.0-beta.10", "typescript": "5.4.5", @@ -184,7 +183,7 @@ "@ecp.eth/sdk": ["@ecp.eth/sdk@0.0.25", "", { "dependencies": { "lz-ts": "^1.1.2" }, "peerDependencies": { "@tanstack/react-query": ">=5.0.0", "react": "18 || 19", "viem": "^2.29.2", "wagmi": "^2.15.2", "zod": "^3.25.76" } }, "sha512-rSgciUy3XB50ONevet5omJtpZA++yQdZbLLybVu4pY8ksUYd5GizttdVZ5+wKp21S+CA5scdolroa05BImX77g=="], - "@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], + "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], "@emotion/is-prop-valid": ["@emotion/is-prop-valid@0.8.8", "", { "dependencies": { "@emotion/memoize": "0.7.4" } }, "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA=="], @@ -332,49 +331,55 @@ "@hookform/resolvers": ["@hookform/resolvers@3.10.0", "", { "peerDependencies": { "react-hook-form": "^7.0.0" } }, "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag=="], - "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.0" }, "os": "darwin", "cpu": "arm64" }, "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg=="], + "@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="], - "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.0" }, "os": "darwin", "cpu": "x64" }, "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA=="], + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], - "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ=="], + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], - "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg=="], + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], - "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.0", "", { "os": "linux", "cpu": "arm" }, "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw=="], + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], - "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA=="], + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], - "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ=="], + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], - "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw=="], + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="], - "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg=="], + "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="], - "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q=="], + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], - "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.0", "", { "os": "linux", "cpu": "x64" }, "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q=="], + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], - "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.0" }, "os": "linux", "cpu": "arm" }, "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A=="], + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], - "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.0" }, "os": "linux", "cpu": "arm64" }, "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA=="], + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], - "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.0" }, "os": "linux", "cpu": "ppc64" }, "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA=="], + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], - "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.0" }, "os": "linux", "cpu": "s390x" }, "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ=="], + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], - "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.0" }, "os": "linux", "cpu": "x64" }, "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ=="], + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="], - "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.0" }, "os": "linux", "cpu": "arm64" }, "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ=="], + "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="], - "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.0" }, "os": "linux", "cpu": "x64" }, "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ=="], + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], - "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.3", "", { "dependencies": { "@emnapi/runtime": "^1.4.4" }, "cpu": "none" }, "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg=="], + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], - "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ=="], + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], - "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw=="], + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], - "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.3", "", { "os": "win32", "cpu": "x64" }, "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g=="], + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="], + + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], @@ -518,23 +523,23 @@ "@motionone/utils": ["@motionone/utils@10.18.0", "", { "dependencies": { "@motionone/types": "^10.17.1", "hey-listen": "^1.0.8", "tslib": "^2.3.1" } }, "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw=="], - "@next/env": ["@next/env@15.5.3", "", {}, "sha512-RSEDTRqyihYXygx/OJXwvVupfr9m04+0vH8vyy0HfZ7keRto6VX9BbEk0J2PUk0VGy6YhklJUSrgForov5F9pw=="], + "@next/env": ["@next/env@16.1.1", "", {}, "sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@15.5.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-nzbHQo69+au9wJkGKTU9lP7PXv0d1J5ljFpvb+LnEomLtSbJkbZyEs6sbF3plQmiOB2l9OBtN2tNSvCH1nQ9Jg=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.1.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA=="], - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@15.5.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-w83w4SkOOhekJOcA5HBvHyGzgV1W/XvOfpkrxIse4uPWhYTTRwtGEM4v/jiXwNSJvfRvah0H8/uTLBKRXlef8g=="], + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.1.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw=="], - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@15.5.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-+m7pfIs0/yvgVu26ieaKrifV8C8yiLe7jVp9SpcIzg7XmyyNE7toC1fy5IOQozmr6kWl/JONC51osih2RyoXRw=="], + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.1.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ=="], - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@15.5.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-u3PEIzuguSenoZviZJahNLgCexGFhso5mxWCrrIMdvpZn6lkME5vc/ADZG8UUk5K1uWRy4hqSFECrON6UKQBbQ=="], + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.1.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg=="], - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@15.5.3", "", { "os": "linux", "cpu": "x64" }, "sha512-lDtOOScYDZxI2BENN9m0pfVPJDSuUkAD1YXSvlJF0DKwZt0WlA7T7o3wrcEr4Q+iHYGzEaVuZcsIbCps4K27sA=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.1.1", "", { "os": "linux", "cpu": "x64" }, "sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ=="], - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@15.5.3", "", { "os": "linux", "cpu": "x64" }, "sha512-9vWVUnsx9PrY2NwdVRJ4dUURAQ8Su0sLRPqcCCxtX5zIQUBES12eRVHq6b70bbfaVaxIDGJN2afHui0eDm+cLg=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.1.1", "", { "os": "linux", "cpu": "x64" }, "sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA=="], - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@15.5.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-1CU20FZzY9LFQigRi6jM45oJMU3KziA5/sSG+dXeVaTm661snQP6xu3ykGxxwU5sLG3sh14teO/IOEPVsQMRfA=="], + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.1.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA=="], - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@15.5.3", "", { "os": "win32", "cpu": "x64" }, "sha512-JMoLAq3n3y5tKXPQwCK5c+6tmwkuFDa2XAxz8Wm4+IVthdBZdZGh+lmiLUHg9f9IDwIQpUjp+ysd6OkYTyZRZw=="], + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.1.1", "", { "os": "win32", "cpu": "x64" }, "sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw=="], "@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], @@ -1002,14 +1007,10 @@ "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], - "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], - "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], - "color-string": ["color-string@1.9.1", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="], - "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], @@ -1090,7 +1091,7 @@ "detect-browser": ["detect-browser@5.3.0", "", {}, "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w=="], - "detect-libc": ["detect-libc@2.1.0", "", {}, "sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg=="], + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], @@ -1366,8 +1367,6 @@ "is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="], - "is-arrayish": ["is-arrayish@0.3.4", "", {}, "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA=="], - "is-async-function": ["is-async-function@2.1.1", "", { "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ=="], "is-bigint": ["is-bigint@1.1.0", "", { "dependencies": { "has-bigints": "^1.0.2" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="], @@ -1690,7 +1689,7 @@ "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="], - "next": ["next@15.5.3", "", { "dependencies": { "@next/env": "15.5.3", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "15.5.3", "@next/swc-darwin-x64": "15.5.3", "@next/swc-linux-arm64-gnu": "15.5.3", "@next/swc-linux-arm64-musl": "15.5.3", "@next/swc-linux-x64-gnu": "15.5.3", "@next/swc-linux-x64-musl": "15.5.3", "@next/swc-win32-arm64-msvc": "15.5.3", "@next/swc-win32-x64-msvc": "15.5.3", "sharp": "^0.34.3" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-r/liNAx16SQj4D+XH/oI1dlpv9tdKJ6cONYPwwcCC46f2NjpaRWY+EKCzULfgQYV6YKXjHBchff2IZBSlZmJNw=="], + "next": ["next@16.1.1", "", { "dependencies": { "@next/env": "16.1.1", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.1.1", "@next/swc-darwin-x64": "16.1.1", "@next/swc-linux-arm64-gnu": "16.1.1", "@next/swc-linux-arm64-musl": "16.1.1", "@next/swc-linux-x64-gnu": "16.1.1", "@next/swc-linux-x64-musl": "16.1.1", "@next/swc-win32-arm64-msvc": "16.1.1", "@next/swc-win32-x64-msvc": "16.1.1", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w=="], "next-themes": ["next-themes@0.3.0", "", { "peerDependencies": { "react": "^16.8 || ^17 || ^18", "react-dom": "^16.8 || ^17 || ^18" } }, "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w=="], @@ -1950,7 +1949,7 @@ "shallowequal": ["shallowequal@1.1.0", "", {}, "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="], - "sharp": ["sharp@0.34.3", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.4", "semver": "^7.7.2" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.3", "@img/sharp-darwin-x64": "0.34.3", "@img/sharp-libvips-darwin-arm64": "1.2.0", "@img/sharp-libvips-darwin-x64": "1.2.0", "@img/sharp-libvips-linux-arm": "1.2.0", "@img/sharp-libvips-linux-arm64": "1.2.0", "@img/sharp-libvips-linux-ppc64": "1.2.0", "@img/sharp-libvips-linux-s390x": "1.2.0", "@img/sharp-libvips-linux-x64": "1.2.0", "@img/sharp-libvips-linuxmusl-arm64": "1.2.0", "@img/sharp-libvips-linuxmusl-x64": "1.2.0", "@img/sharp-linux-arm": "0.34.3", "@img/sharp-linux-arm64": "0.34.3", "@img/sharp-linux-ppc64": "0.34.3", "@img/sharp-linux-s390x": "0.34.3", "@img/sharp-linux-x64": "0.34.3", "@img/sharp-linuxmusl-arm64": "0.34.3", "@img/sharp-linuxmusl-x64": "0.34.3", "@img/sharp-wasm32": "0.34.3", "@img/sharp-win32-arm64": "0.34.3", "@img/sharp-win32-ia32": "0.34.3", "@img/sharp-win32-x64": "0.34.3" } }, "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg=="], + "sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], @@ -1966,8 +1965,6 @@ "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], - "simple-swizzle": ["simple-swizzle@0.2.4", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw=="], - "siwe": ["siwe@2.3.2", "", { "dependencies": { "@spruceid/siwe-parser": "^2.1.2", "@stablelib/random": "^1.0.1", "uri-js": "^4.4.1", "valid-url": "^1.0.9" }, "peerDependencies": { "ethers": "^5.6.8 || ^6.0.8" } }, "sha512-aSf+6+Latyttbj5nMu6GF3doMfv2UYj83hhwZgUF20ky6fTS83uVhkQABdIVnEuS8y1bBdk7p6ltb9SmlhTTlA=="], "slash": ["slash@2.0.0", "", {}, "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A=="], @@ -2440,6 +2437,8 @@ "jszip/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], + "lightningcss/detect-libc": ["detect-libc@2.1.0", "", {}, "sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg=="], + "linebreak/base64-js": ["base64-js@0.0.8", "", {}, "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw=="], "lit-siwe/@spruceid/siwe-parser": ["@spruceid/siwe-parser@1.1.3", "", { "dependencies": { "apg-js": "^4.1.1" } }, "sha512-oQ8PcwDqjGWJvLmvAF2yzd6iniiWxK0Qtz+Dw+gLD/W5zOQJiKIUXwslHOm8VB8OOOKW9vfR3dnPBhHaZDvRsw=="], @@ -2466,6 +2465,8 @@ "porto/ox": ["ox@0.9.6", "", { "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", "abitype": "^1.0.9", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg=="], + "sharp/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "socket.io-client/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], "socket.io-parser/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], diff --git a/next.config.mjs b/next.config.mjs index 8eaf6473..41220e4a 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -8,6 +8,9 @@ const withMDX = createMDX(); const config = { reactStrictMode: true, transpilePackages: ["ethereum-identity-kit", "lucide-react"], + // External packages for server-side (works with both Turbopack and webpack) + // https://github.com/WalletConnect/walletconnect-monorepo/issues/1908#issuecomment-1487801131 + serverExternalPackages: ["lokijs", "encoding"], typescript: { ignoreBuildErrors: false, }, @@ -30,13 +33,6 @@ const config = { }, ], }, - - // https://github.com/WalletConnect/walletconnect-monorepo/issues/1908#issuecomment-1487801131 - webpack: (config) => { - config.externals.push("lokijs", "encoding"); - - return config; - }, }; export default withMDX(config); diff --git a/package.json b/package.json index bc95b44c..7f6e1aeb 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "@types/react": "^19.1.12", "@types/react-dom": "^19.1.9", "@types/webpack": "^5.28.5", - "next": "15", + "next": "16", "patch-package": "^8.0.0", "tailwindcss": "4.0.0-beta.10", "typescript": "5.4.5" diff --git a/src/app/api/posts/[id]/bookmark/route.ts b/src/app/api/posts/[id]/bookmark/route.ts index a17ff52c..0c0229cc 100644 --- a/src/app/api/posts/[id]/bookmark/route.ts +++ b/src/app/api/posts/[id]/bookmark/route.ts @@ -1,7 +1,8 @@ import { NextRequest, NextResponse } from "next/server"; import { getServerAuth } from "~/utils/getServerAuth"; -export async function POST(_request: NextRequest, { params }: { params: { id: string } }) { +export async function POST(_request: NextRequest, props: { params: Promise<{ id: string }> }) { + const params = await props.params; try { const auth = await getServerAuth(); if (!auth.isAuthenticated || !auth.user) { diff --git a/src/app/api/posts/[id]/comments/route.ts b/src/app/api/posts/[id]/comments/route.ts index 26481ff3..08082436 100644 --- a/src/app/api/posts/[id]/comments/route.ts +++ b/src/app/api/posts/[id]/comments/route.ts @@ -7,7 +7,8 @@ import { getServerAuthLight } from "~/utils/getServerAuth"; export const dynamic = "force-dynamic"; -export async function GET(req: NextRequest, { params }: { params: { id: string } }) { +export async function GET(req: NextRequest, props: { params: Promise<{ id: string }> }) { + const params = await props.params; const id = params.id; const limit = Number.parseInt(req.nextUrl.searchParams.get("limit") ?? "50", 10); const cursor = req.nextUrl.searchParams.get("cursor") || undefined; diff --git a/src/app/api/posts/[id]/delete/prepare/route.ts b/src/app/api/posts/[id]/delete/prepare/route.ts index a697027a..e79b4a89 100644 --- a/src/app/api/posts/[id]/delete/prepare/route.ts +++ b/src/app/api/posts/[id]/delete/prepare/route.ts @@ -18,7 +18,8 @@ interface PrepareDeleteRequest { mode?: "auto" | "gasless" | "regular"; } -export async function POST(req: NextRequest, { params }: { params: { id: string } }) { +export async function POST(req: NextRequest, props: { params: Promise<{ id: string }> }) { + const params = await props.params; try { const { address: currentUserAddress } = await getServerAuthLight(); if (!currentUserAddress) { diff --git a/src/app/api/posts/[id]/edit/prepare/route.ts b/src/app/api/posts/[id]/edit/prepare/route.ts index 174da8db..c67bc264 100644 --- a/src/app/api/posts/[id]/edit/prepare/route.ts +++ b/src/app/api/posts/[id]/edit/prepare/route.ts @@ -20,7 +20,8 @@ interface PrepareEditRequest { mode?: "auto" | "gasless" | "regular"; } -export async function POST(req: NextRequest, { params }: { params: { id: string } }) { +export async function POST(req: NextRequest, props: { params: Promise<{ id: string }> }) { + const params = await props.params; try { const { address: currentUserAddress } = await getServerAuthLight(); if (!currentUserAddress) { diff --git a/src/app/api/posts/[id]/reaction/prepare/route.ts b/src/app/api/posts/[id]/reaction/prepare/route.ts index a5b51651..520a42a5 100644 --- a/src/app/api/posts/[id]/reaction/prepare/route.ts +++ b/src/app/api/posts/[id]/reaction/prepare/route.ts @@ -20,7 +20,8 @@ interface PrepareReactionRequest { mode?: "auto" | "gasless" | "regular"; } -export async function POST(req: NextRequest, { params }: { params: { id: string } }) { +export async function POST(req: NextRequest, props: { params: Promise<{ id: string }> }) { + const params = await props.params; try { const { address: currentUserAddress } = await getServerAuthLight(); if (!currentUserAddress) { diff --git a/src/app/api/posts/[id]/route.ts b/src/app/api/posts/[id]/route.ts index 782f830e..e8d5216d 100644 --- a/src/app/api/posts/[id]/route.ts +++ b/src/app/api/posts/[id]/route.ts @@ -6,7 +6,8 @@ import { getServerAuthLight } from "~/utils/getServerAuth"; export const dynamic = "force-dynamic"; -export async function GET(_req: NextRequest, { params }: { params: { id: string } }) { +export async function GET(_req: NextRequest, props: { params: Promise<{ id: string }> }) { + const params = await props.params; const id = params.id; const auth = await getServerAuthLight(); const currentUserAddress = auth.address || ""; diff --git a/src/app/api/search/route.ts b/src/app/api/search/route.ts index b6fd4fee..821dcfec 100644 --- a/src/app/api/search/route.ts +++ b/src/app/api/search/route.ts @@ -7,5 +7,5 @@ export const { GET } = createFromSource(source, { en: { language: "english" }, zh: { language: "english" }, jp: { language: "english" }, - } + }, }); diff --git a/src/app/api/user/[id]/followers/route.ts b/src/app/api/user/[id]/followers/route.ts index cee13c02..c419b9bc 100644 --- a/src/app/api/user/[id]/followers/route.ts +++ b/src/app/api/user/[id]/followers/route.ts @@ -14,7 +14,8 @@ interface EfpFollowersResponse { updated_at?: string; } -export async function GET(req: NextRequest, { params }: { params: { id: string } }) { +export async function GET(req: NextRequest, props: { params: Promise<{ id: string }> }) { + const params = await props.params; const id = params.id; const limit = Number.parseInt(req.nextUrl.searchParams.get("limit") ?? "5", 10); diff --git a/src/app/api/user/[id]/following/route.ts b/src/app/api/user/[id]/following/route.ts index f003d80d..ec482bea 100644 --- a/src/app/api/user/[id]/following/route.ts +++ b/src/app/api/user/[id]/following/route.ts @@ -17,7 +17,8 @@ interface EfpFollowingResponse { tags?: string[]; } -export async function GET(req: NextRequest, { params }: { params: { id: string } }) { +export async function GET(req: NextRequest, props: { params: Promise<{ id: string }> }) { + const params = await props.params; const id = params.id; const limit = Number.parseInt(req.nextUrl.searchParams.get("limit") ?? "5", 10); diff --git a/src/app/api/user/ens/[address]/route.ts b/src/app/api/user/ens/[address]/route.ts index d54e40df..d3d156ad 100644 --- a/src/app/api/user/ens/[address]/route.ts +++ b/src/app/api/user/ens/[address]/route.ts @@ -2,7 +2,8 @@ import { NextRequest, NextResponse } from "next/server"; import { fetchEnsUser } from "~/utils/ens/converters/userConverter"; import { getServerAuthLight } from "~/utils/getServerAuth"; -export async function GET(_req: NextRequest, { params }: { params: { address: string } }) { +export async function GET(_req: NextRequest, props: { params: Promise<{ address: string }> }) { + const params = await props.params; try { const { address } = params; diff --git a/src/app/c/[community]/about/page.tsx b/src/app/c/[community]/about/page.tsx index fcdfac7b..4757ee6f 100644 --- a/src/app/c/[community]/about/page.tsx +++ b/src/app/c/[community]/about/page.tsx @@ -8,12 +8,13 @@ import { getScanUrl } from "~/utils/getScanUrl"; import { resolveUrl } from "~/utils/resolveUrl"; interface CommunityAboutPageProps { - params: { + params: Promise<{ community: string; - }; + }>; } -export async function generateMetadata({ params }: CommunityAboutPageProps): Promise { +export async function generateMetadata(props: CommunityAboutPageProps): Promise { + const params = await props.params; const community = await getCommunityByAddress(params.community); if (!community) { @@ -54,7 +55,8 @@ export async function generateMetadata({ params }: CommunityAboutPageProps): Pro }; } -export default async function CommunityAboutPage({ params }: CommunityAboutPageProps) { +export default async function CommunityAboutPage(props: CommunityAboutPageProps) { + const params = await props.params; const community = await getCommunityByAddress(params.community); if (!community) { diff --git a/src/app/c/[community]/layout.tsx b/src/app/c/[community]/layout.tsx index a508b9d7..634117ef 100644 --- a/src/app/c/[community]/layout.tsx +++ b/src/app/c/[community]/layout.tsx @@ -5,12 +5,16 @@ import { getCommunityByAddress } from "~/utils/getCommunityByAddress"; interface CommunityLayoutProps { children: React.ReactNode; - params: { + params: Promise<{ community: string; - }; + }>; } -export default async function CommunityLayout({ children, params }: CommunityLayoutProps) { +export default async function CommunityLayout(props: CommunityLayoutProps) { + const params = await props.params; + + const { children } = props; + const community = await getCommunityByAddress(params.community); if (!community) { diff --git a/src/app/c/[community]/page.tsx b/src/app/c/[community]/page.tsx index 63c44ce9..849547da 100644 --- a/src/app/c/[community]/page.tsx +++ b/src/app/c/[community]/page.tsx @@ -7,12 +7,13 @@ import { getCommunityByAddress } from "~/utils/getCommunityByAddress"; import { resolveUrl } from "~/utils/resolveUrl"; interface CommunityPageProps { - params: { + params: Promise<{ community: string; - }; + }>; } -export async function generateMetadata({ params }: CommunityPageProps): Promise { +export async function generateMetadata(props: CommunityPageProps): Promise { + const params = await props.params; const community = await getCommunityByAddress(params.community); if (!community) { @@ -53,7 +54,8 @@ export async function generateMetadata({ params }: CommunityPageProps): Promise< }; } -export default async function CommunityPage({ params }: CommunityPageProps) { +export default async function CommunityPage(props: CommunityPageProps) { + const params = await props.params; const community = await getCommunityByAddress(params.community); if (!community) { diff --git a/src/app/communities/page.tsx b/src/app/communities/page.tsx index dcf4a846..9bf4556c 100644 --- a/src/app/communities/page.tsx +++ b/src/app/communities/page.tsx @@ -8,7 +8,8 @@ export const metadata: Metadata = { description: "Discover and join communities on Flow Talk", }; -export default function CommunitiesPage({ searchParams }: { searchParams?: { q?: string } }) { +export default async function CommunitiesPage(props: { searchParams?: Promise<{ q?: string }> }) { + const searchParams = await props.searchParams; const query = searchParams?.q || ""; return ( diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index eb1c3377..a875ecf6 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -1,18 +1,17 @@ "use client"; import { ChevronDown, Loader2 } from "lucide-react"; +import { AnimatePresence, motion } from "motion/react"; import { useRouter } from "next/navigation"; import { useCallback, useEffect, useMemo, useState } from "react"; import { toast } from "sonner"; import type { Connector } from "wagmi"; import { useConnect, useDisconnect } from "wagmi"; - -import { WalletConnectorButton, getConnectorDisplay } from "~/components/WalletConnectorButton"; import { Button } from "~/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "~/components/ui/card"; +import { getConnectorDisplay, WalletConnectorButton } from "~/components/WalletConnectorButton"; import { useAuth } from "~/hooks/useSiweAuth"; import { prettifyViemError } from "~/utils/prettifyViemError"; -import { AnimatePresence, motion } from "motion/react"; export default function LoginPage() { const router = useRouter(); @@ -95,7 +94,11 @@ export default function LoginPage() { initial={{ height: 0, opacity: 0, marginBottom: 0 }} animate={{ height: "auto", opacity: 1, marginBottom: 8 }} exit={{ height: 0, opacity: 0, marginBottom: 0 }} - transition={{ duration: 0.2, ease: [0.4, 0, 0.2, 1], opacity: { duration: 0.12, ease: [0.4, 0, 0.2, 1] } }} + transition={{ + duration: 0.2, + ease: [0.4, 0, 0.2, 1], + opacity: { duration: 0.12, ease: [0.4, 0, 0.2, 1] }, + }} className="flex flex-col gap-2 overflow-visible" > {otherConnectors.map((connector) => { diff --git a/src/app/p/[post]/page.tsx b/src/app/p/[post]/page.tsx index 0f7094ac..a795c578 100644 --- a/src/app/p/[post]/page.tsx +++ b/src/app/p/[post]/page.tsx @@ -6,7 +6,8 @@ import { PostView } from "~/components/post/PostView"; import { generatePostOGUrl } from "~/utils/generateOGUrl"; import { getBaseUrl } from "~/utils/getBaseUrl"; -export async function generateMetadata({ params }: { params: { post: string } }): Promise { +export async function generateMetadata(props: { params: Promise<{ post: string }> }): Promise { + const params = await props.params; try { const response = await fetch(`${getBaseUrl()}/api/posts/${params.post}`, { cache: "no-store", @@ -77,7 +78,8 @@ export async function generateMetadata({ params }: { params: { post: string } }) } } -export default async function PostPage({ params }: { params: { post: string } }) { +export default async function PostPage(props: { params: Promise<{ post: string }> }) { + const params = await props.params; try { const response = await fetch(`${getBaseUrl()}/api/posts/${params.post}`, { cache: "no-store", diff --git a/src/app/policy/page.tsx b/src/app/policy/page.tsx index cfab968f..94e5c851 100644 --- a/src/app/policy/page.tsx +++ b/src/app/policy/page.tsx @@ -21,10 +21,10 @@ const PolicyPage = () => {

Privacy Policy

- Flow Talk ("us", "we", or "our") operates flow.talk (the "Service"). This page informs you of our policies regarding - the collection, use and disclosure of Personal Information we receive from users of the Service. We use your - Personal Information only for identifying you on the website and improving the Service. By using the Service, - you agree to the collection and use of information in accordance with this policy. + Flow Talk ("us", "we", or "our") operates flow.talk (the "Service"). This page informs you of our policies + regarding the collection, use and disclosure of Personal Information we receive from users of the Service. We + use your Personal Information only for identifying you on the website and improving the Service. By using the + Service, you agree to the collection and use of information in accordance with this policy.

Information Collection And Use

diff --git a/src/app/robots.ts b/src/app/robots.ts index 72e41c8b..34540612 100644 --- a/src/app/robots.ts +++ b/src/app/robots.ts @@ -8,12 +8,7 @@ export default function robots(): MetadataRoute.Robots { { userAgent: "*", allow: "/", - disallow: [ - "/api/", - "/settings", - "/bookmarks", - "/activity", - ], + disallow: ["/api/", "/settings", "/bookmarks", "/activity"], }, ], sitemap: `${baseUrl}/sitemap.xml`, diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts index 032c7161..aec20d9a 100644 --- a/src/app/sitemap.ts +++ b/src/app/sitemap.ts @@ -60,9 +60,7 @@ export default async function sitemap(): Promise { for (const lang of languages) { for (const doc of docPaths) { // English docs don't have language prefix due to hideLocale: "default-locale" - const url = lang === "en" - ? `${baseUrl}/docs/${doc.path}` - : `${baseUrl}/${lang}/docs/${doc.path}`; + const url = lang === "en" ? `${baseUrl}/docs/${doc.path}` : `${baseUrl}/${lang}/docs/${doc.path}`; docsPages.push({ url, @@ -124,11 +122,5 @@ export default async function sitemap(): Promise { }, ]; - return [ - ...corePages, - ...featurePages, - ...docsPages, - ...legalPages, - ...accountPages, - ]; + return [...corePages, ...featurePages, ...docsPages, ...legalPages, ...accountPages]; } diff --git a/src/app/tos/page.tsx b/src/app/tos/page.tsx index 1a271fab..6afff293 100644 --- a/src/app/tos/page.tsx +++ b/src/app/tos/page.tsx @@ -40,8 +40,8 @@ const ConditionsPage = () => {

Users are encouraged to report any violations of our policies to us by emailing contact@kualta.dev. While we take reports seriously and review them - carefully, we emphasize that Flow Talk operates in a permissionless environment, and we cannot remove or restrict - accounts or content on the underlying blockchain. + carefully, we emphasize that Flow Talk operates in a permissionless environment, and we cannot remove or + restrict accounts or content on the underlying blockchain.

4. Disclaimer of Liability

diff --git a/src/app/u/[user]/comments/page.tsx b/src/app/u/[user]/comments/page.tsx index f5cf86f4..bf1485cd 100644 --- a/src/app/u/[user]/comments/page.tsx +++ b/src/app/u/[user]/comments/page.tsx @@ -3,7 +3,8 @@ import { Feed } from "~/components/Feed"; import { PostView } from "~/components/post/PostView"; import { getUserByUsername } from "~/utils/getUserByHandle"; -export async function generateMetadata({ params }: { params: { user: string } }): Promise { +export async function generateMetadata(props: { params: Promise<{ user: string }> }): Promise { + const params = await props.params; const handle = params.user; const title = `${handle}`; return { @@ -23,7 +24,8 @@ export async function generateMetadata({ params }: { params: { user: string } }) }; } -const user = async ({ params }: { params: { user: string } }) => { +const user = async (props: { params: Promise<{ user: string }> }) => { + const params = await props.params; const handle = params.user; const user = await getUserByUsername(handle); diff --git a/src/app/u/[user]/gallery/page.tsx b/src/app/u/[user]/gallery/page.tsx index c0e113ac..1a017818 100644 --- a/src/app/u/[user]/gallery/page.tsx +++ b/src/app/u/[user]/gallery/page.tsx @@ -3,7 +3,8 @@ import { GalleryFeed } from "~/components/GalleryFeed"; import { PostGallery } from "~/components/post/PostGallery"; import { getUserByUsername } from "~/utils/getUserByHandle"; -export async function generateMetadata({ params }: { params: { user: string } }): Promise { +export async function generateMetadata(props: { params: Promise<{ user: string }> }): Promise { + const params = await props.params; const handle = params.user; const title = `${handle}`; return { @@ -23,7 +24,8 @@ export async function generateMetadata({ params }: { params: { user: string } }) }; } -const userGallery = async ({ params }: { params: { user: string } }) => { +const userGallery = async (props: { params: Promise<{ user: string }> }) => { + const params = await props.params; const handle = params.user; const user = await getUserByUsername(handle); diff --git a/src/app/u/[user]/layout.tsx b/src/app/u/[user]/layout.tsx index 901913c1..d8921e40 100644 --- a/src/app/u/[user]/layout.tsx +++ b/src/app/u/[user]/layout.tsx @@ -81,7 +81,11 @@ function UserProfileSkeleton() { ); } -export default function layout({ children, params }: { children: React.ReactNode; params: { user: string } }) { +export default async function layout(props: { children: React.ReactNode; params: Promise<{ user: string }> }) { + const params = await props.params; + + const { children } = props; + return (
}> diff --git a/src/app/u/[user]/page.tsx b/src/app/u/[user]/page.tsx index b388a43d..1aaa6a76 100644 --- a/src/app/u/[user]/page.tsx +++ b/src/app/u/[user]/page.tsx @@ -5,7 +5,8 @@ import { PostView } from "~/components/post/PostView"; import { generateUserOGUrl } from "~/utils/generateOGUrl"; import { getUserByUsername } from "~/utils/getUserByHandle"; -export async function generateMetadata({ params }: { params: { user: string } }): Promise { +export async function generateMetadata(props: { params: Promise<{ user: string }> }): Promise { + const params = await props.params; const username = params.user; const user = await getUserByUsername(username); @@ -45,7 +46,8 @@ export async function generateMetadata({ params }: { params: { user: string } }) }; } -const UserPage = async ({ params }: { params: { user: string } }) => { +const UserPage = async (props: { params: Promise<{ user: string }> }) => { + const params = await props.params; const username = params.user; const user = await getUserByUsername(username); diff --git a/src/components/BookmarksFeed.tsx b/src/components/BookmarksFeed.tsx index 5f484fd3..6374c754 100644 --- a/src/components/BookmarksFeed.tsx +++ b/src/components/BookmarksFeed.tsx @@ -5,7 +5,6 @@ import { bookmarksAtom } from "~/atoms/bookmarks"; import { Feed } from "./Feed"; import { PostView } from "./post/PostView"; - export const BookmarksFeed = () => { const bookmarkedIds = useAtomValue(bookmarksAtom); diff --git a/src/components/LandingContent.tsx b/src/components/LandingContent.tsx index b3facd2b..c2196022 100644 --- a/src/components/LandingContent.tsx +++ b/src/components/LandingContent.tsx @@ -1,13 +1,13 @@ "use client"; +import { LogIn, MessageCircleHeart, SquareLibrary } from "lucide-react"; import { AnimatePresence, motion } from "motion/react"; import Link from "next/link"; import { useEffect, useState } from "react"; -import { LogIn, MessageCircleHeart, SquareLibrary } from "lucide-react"; -import { Button } from "~/components/ui/button"; -import { LuGithub, LuGlobe, LuHandCoins, LuLock, LuZap } from "react-icons/lu"; import { FaDiscord, FaTelegramPlane } from "react-icons/fa"; +import { LuGithub, LuGlobe, LuHandCoins, LuLock, LuZap } from "react-icons/lu"; import { SiEthereum } from "react-icons/si"; +import { Button } from "~/components/ui/button"; const protocols = [ { @@ -55,7 +55,8 @@ export const LandingContent = () => {

Welcome, you have arrived just in time

- flow. talk. + flow.{" "} + talk.

to Ethereum-native social

@@ -199,12 +200,8 @@ export const LandingContent = () => {
-

- Want to learn more? -

-

- Read the Flow Talk documentation -

+

Want to learn more?

+

Read the Flow Talk documentation

@@ -229,7 +226,10 @@ export const LandingContent = () => { rel="noopener noreferrer" className="group flex items-center gap-3 rounded-full border border-primary/20 px-4 py-2 text-sm font-medium text-primary/80 transition-all duration-200 hover:border-primary/40 hover:bg-primary/5 hover:text-primary" > - + {name} ))} @@ -250,7 +250,14 @@ export const LandingContent = () => {