From e9fb27637c1f51bb1cfe51b7c3a65312ebf60562 Mon Sep 17 00:00:00 2001 From: Pranav Chaudhari Date: Mon, 1 Jun 2026 13:31:33 +0530 Subject: [PATCH 1/2] feat: add public profile QR code sharing and download feature --- my_full_changes.patch | Bin 0 -> 116358 bytes package-lock.json | 373 +++++------------------- package.json | 1 + src/app/u/[username]/page.tsx | 43 ++- src/components/ProfileQrModal.tsx | 127 ++++++++ src/components/ShareProfileSection.tsx | 104 ++++--- test/components/ProfileQrModal.test.tsx | 129 ++++++++ 7 files changed, 441 insertions(+), 336 deletions(-) create mode 100644 my_full_changes.patch create mode 100644 src/components/ProfileQrModal.tsx create mode 100644 test/components/ProfileQrModal.test.tsx diff --git a/my_full_changes.patch b/my_full_changes.patch new file mode 100644 index 0000000000000000000000000000000000000000..c5756237cade29897a88891585470e7e88e55a5b GIT binary patch literal 116358 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 I@Oae!2T?D$djJ3c literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 2c81d8f06..2a656b718 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,7 @@ "next": "^14.2.35", "next-auth": "^4.24.14", "next-pwa": "^5.6.0", + "qrcode.react": "^4.2.0", "react": "^18", "react-dom": "^18", "react-markdown": "^10.1.0", @@ -162,6 +163,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", @@ -671,7 +673,6 @@ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -685,7 +686,6 @@ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -699,7 +699,6 @@ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -713,7 +712,6 @@ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -760,7 +758,6 @@ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -774,7 +771,6 @@ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -788,7 +784,6 @@ "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, @@ -805,7 +800,6 @@ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -819,7 +813,6 @@ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -833,7 +826,6 @@ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -847,7 +839,6 @@ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -861,7 +852,6 @@ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -875,7 +865,6 @@ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -889,7 +878,6 @@ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -906,7 +894,6 @@ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -923,7 +910,6 @@ "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, @@ -1922,8 +1908,7 @@ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@bramus/specificity": { "version": "2.4.2", @@ -2026,6 +2011,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" }, @@ -2074,6 +2060,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" } @@ -2176,6 +2163,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -2262,6 +2250,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.80.0.tgz", "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==", "license": "MIT", + "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -2605,6 +2594,7 @@ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", "license": "MIT", + "peer": true, "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" @@ -2615,6 +2605,7 @@ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.4.0" } @@ -3191,7 +3182,6 @@ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -3209,7 +3199,6 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -3220,7 +3209,6 @@ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -3235,7 +3223,6 @@ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3250,7 +3237,6 @@ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -3264,7 +3250,6 @@ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "p-try": "^2.0.0" }, @@ -3281,7 +3266,6 @@ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -3295,7 +3279,6 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -3306,7 +3289,6 @@ "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -3317,7 +3299,6 @@ "integrity": "sha512-v3bhyxUh9Hgmo5p6hAOXe14/R3ZxZDOsvHleh4B07z3m/x4/ngPUXEm9XwK4sF4u+f+P2ORb0Ge+MgpaqRMVDA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "30.4.1", "@types/node": "*", @@ -3336,7 +3317,6 @@ "integrity": "sha512-TZJA6cPJUFxoWhxaLo8t0VX/MZX2wPWr0uIDvLSHIvN4gu9h02vSzqI2kBADG1ExqQlC+cY09xKMSreivvrChQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/console": "30.4.1", "@jest/pattern": "30.4.0", @@ -3385,7 +3365,6 @@ "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -3398,8 +3377,7 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "5.2.0", @@ -3407,7 +3385,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -3421,7 +3398,6 @@ "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -3433,7 +3409,6 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -3455,7 +3430,6 @@ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -3472,7 +3446,6 @@ "integrity": "sha512-rNHAShJQqQwFNoL0hbf3BphSBOWnpOUAKvidLS/AjNVLPfoj5mSf4jQMfW3cYOs6hXeZC7nF7mDHaBnbxELOzg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.27.4", "@jest/get-type": "30.1.0", @@ -3524,7 +3497,6 @@ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^2.0.2" }, @@ -3541,7 +3513,6 @@ "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", @@ -3558,7 +3529,6 @@ "integrity": "sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } @@ -3569,7 +3539,6 @@ "integrity": "sha512-AK9yNRqgKxiabqMoe4oW+3/TSSeV8vkdC7BGaxZdU0AFXfOpofTLqdru2GXKZghP3sdgwE9XXpnVwfZ8JnFV4w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/fake-timers": "30.4.1", "@jest/types": "30.4.1", @@ -3586,7 +3555,6 @@ "integrity": "sha512-ginrj6TMgh2GshLUGCjO94Ptx9HhdZA/I6A9iUfyeLKFtdAjnKzHDgzgP9HYQgbxM1lbXScQ2eUBz2lGeVDPWA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "expect": "30.4.1", "jest-snapshot": "30.4.1" @@ -3601,7 +3569,6 @@ "integrity": "sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/get-type": "30.1.0" }, @@ -3615,7 +3582,6 @@ "integrity": "sha512-iW5umdmfPeWzehrVhugFQZqCchSCud5S1l2YT0O9ZhjRR0ExclANDZkiSBwzqtnlOn0J1JXvO+HZ6rkuyOVOgQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "30.4.1", "@sinonjs/fake-timers": "^15.4.0", @@ -3634,7 +3600,6 @@ "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } @@ -3645,7 +3610,6 @@ "integrity": "sha512-ZbuY4cmXC8DkxYjfvT2DbcHWL2T6vmsMhXCDcmTB2T0y0gaezBI77ufq5ZAIdcRkYZ7NEQEDg1xFeKbxUJ5v5Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/environment": "30.4.1", "@jest/expect": "30.4.1", @@ -3662,7 +3626,6 @@ "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*", "jest-regex-util": "30.4.0" @@ -3677,7 +3640,6 @@ "integrity": "sha512-/SnkPCzEQpUaBH81kjdEdDdo2WZl5hxw+BmLDGWjRkm8o7XlhjwsU36cqwe5PGBE5WYpBvDzRSdXx9rbGuJtNA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "30.4.1", @@ -3721,7 +3683,6 @@ "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -3733,7 +3694,6 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -3755,7 +3715,6 @@ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -3772,7 +3731,6 @@ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^2.0.2" }, @@ -3802,7 +3760,6 @@ "integrity": "sha512-ObY4ljvQ95mt6iwKtVLetR/4yXiAgl3H4nJxhztr0MTjrN97TwDYrnCp/kF60Ec9HdhkWTHSu+Hg05aXfngpOA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "30.4.1", "chalk": "^4.1.2", @@ -3819,7 +3776,6 @@ "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "callsites": "^3.1.0", @@ -3835,7 +3791,6 @@ "integrity": "sha512-/ZG7pgEiOmmWkN9TplKbOu4id2N5lh7FHwRwlkgBVAzGdRH+OkkQ8wX/kIxg4zmd3ZQvAL1RwL2yWsvNYYECTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/console": "30.4.1", "@jest/types": "30.4.1", @@ -3852,7 +3807,6 @@ "integrity": "sha512-PeYE+4td5rKjoRPxztObrXU+H8hsjZfxKMXOcmrr34JerSyB/ROOxbbicz8B7A5j9R9VayDnVPvBmedqCsFCdw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/test-result": "30.4.1", "graceful-fs": "^4.2.11", @@ -3869,7 +3823,6 @@ "integrity": "sha512-Wz0LyktlTvRefoymh+n64hQ84KNXsRGcwdoZ8CSa0Ea+fgYcHZlnk+hDP7v2MS7il2bQ5uTEIxf4/NNfhMN4KQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.27.4", "@jest/types": "30.4.1", @@ -3896,7 +3849,6 @@ "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/pattern": "30.4.0", "@jest/schemas": "30.4.1", @@ -3916,7 +3868,6 @@ "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -3929,8 +3880,7 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", @@ -4237,7 +4187,6 @@ "integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^14.18.0 || >=16.0.0" }, @@ -4251,6 +4200,7 @@ "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "playwright": "1.60.0" }, @@ -4760,7 +4710,6 @@ "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "type-detect": "4.0.8" } @@ -4771,7 +4720,6 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -4782,7 +4730,6 @@ "integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "@sinonjs/commons": "^3.0.1" } @@ -4885,6 +4832,7 @@ "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.106.2.tgz", "integrity": "sha512-2/RZ/1fmJx/MRSEDG2Xk8+J4JVk5clM9V0uSI6kUTrcS32KA89DtqI5RUOC9r6mzY3WBC9qexLjssIHjbLyVJA==", "license": "MIT", + "peer": true, "dependencies": { "@supabase/auth-js": "2.106.2", "@supabase/functions-js": "2.106.2", @@ -5104,7 +5052,6 @@ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/types": "^7.0.0" } @@ -5115,7 +5062,6 @@ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -5127,7 +5073,6 @@ "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/types": "^7.28.2" } @@ -5253,8 +5198,7 @@ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", @@ -5262,7 +5206,6 @@ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -5273,7 +5216,6 @@ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/istanbul-lib-report": "*" } @@ -5345,6 +5287,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.29.tgz", "integrity": "sha512-ch0qJdr2JY0r04NXSprbK6TXOgnaJ1Tz23fm5W+z0/CBah6BSBc3n96h7K9GOtwh0HrilNWHIBzE1Ko4Dcw/Wg==", "license": "MIT", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" @@ -5356,6 +5299,7 @@ "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^18.0.0" } @@ -5374,8 +5318,7 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/trusted-types": { "version": "2.0.7", @@ -5395,7 +5338,6 @@ "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/yargs-parser": "*" } @@ -5405,8 +5347,7 @@ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.60.0", @@ -5453,6 +5394,7 @@ "integrity": "sha512-fcqpj/MyK4sxDPcbe7STNPbpQL4RLZOPWuaTmwZYuc+hJKzRf58yRxfhqGpc6PIq9ZyfSBpfHgmUHmHs0KwHwg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.60.0", "@typescript-eslint/types": "8.60.0", @@ -6276,7 +6218,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -6286,29 +6227,25 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -6319,15 +6256,13 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -6340,7 +6275,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "license": "MIT", - "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -6350,7 +6284,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -6359,15 +6292,13 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -6384,7 +6315,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -6398,7 +6328,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -6411,7 +6340,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -6426,7 +6354,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -6436,21 +6363,20 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6463,7 +6389,6 @@ "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=10.13.0" }, @@ -6499,6 +6424,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -6564,7 +6490,6 @@ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -6581,7 +6506,6 @@ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "license": "(MIT OR CC0-1.0)", - "peer": true, "engines": { "node": ">=10" }, @@ -6955,7 +6879,6 @@ "integrity": "sha512-fATAbM8piYxkiXQp3RBXmZHxZVNJZAVXXfyeyCN2Tida3+qJ8ea9UxhiJ2y4fLO90ZImKt6k9FlcH2+rLkJGhw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/transform": "30.4.1", "@types/babel__core": "^7.20.5", @@ -7021,7 +6944,6 @@ "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "workspaces": [ "test/babel-8" ], @@ -7042,7 +6964,6 @@ "integrity": "sha512-9EdtWM/sSfXLOGLwSn+GS6pIXyBnL07/8gyJlwFXjWy4DxMOyItqyUT29d4lQiS380EZwYlX7/At4PgBS+m2aA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/babel__core": "^7.20.5" }, @@ -7104,7 +7025,6 @@ "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -7132,7 +7052,6 @@ "integrity": "sha512-lBY4jxsNmCnSiu7kquw8ZC9F4+XLMOKypT3RnNHPvU2Kpd4W0xaPuLr5ZkRyOsvLYAY4yaW1ZwTW4xB7NIiZzg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "babel-plugin-jest-hoist": "30.4.0", "babel-preset-current-node-syntax": "^1.2.0" @@ -7255,6 +7174,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -7288,7 +7208,6 @@ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "node-int64": "^0.4.0" } @@ -7395,7 +7314,6 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -7502,7 +7420,6 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" } @@ -7603,7 +7520,6 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=6.0" } @@ -7620,7 +7536,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -7630,8 +7545,7 @@ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/class-variance-authority": { "version": "0.7.1", @@ -7672,7 +7586,6 @@ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -7687,8 +7600,7 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", @@ -7696,7 +7608,6 @@ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7712,7 +7623,6 @@ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7740,7 +7650,6 @@ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -7751,8 +7660,7 @@ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/color-convert": { "version": "2.0.1", @@ -8188,7 +8096,6 @@ "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, @@ -8374,7 +8281,6 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -8515,7 +8421,6 @@ "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -8544,7 +8449,6 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.1.tgz", "integrity": "sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==", "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" @@ -8572,7 +8476,6 @@ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -8695,8 +8598,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.2", @@ -8823,6 +8725,7 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -8992,6 +8895,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -9206,7 +9110,6 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -9289,7 +9192,6 @@ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.x" } @@ -9324,7 +9226,6 @@ "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8.0" } @@ -9335,7 +9236,6 @@ "integrity": "sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/expect-utils": "30.4.1", "@jest/get-type": "30.1.0", @@ -9452,7 +9352,6 @@ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "bser": "2.1.1" } @@ -9741,7 +9640,6 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -9792,7 +9690,6 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8.0.0" } @@ -9894,8 +9791,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.1.1", @@ -10182,8 +10078,7 @@ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/html-to-image": { "version": "1.11.13", @@ -10278,7 +10173,6 @@ "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -10411,8 +10305,7 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/is-async-function": { "version": "2.1.1", @@ -10597,7 +10490,6 @@ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -10946,7 +10838,6 @@ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=8" } @@ -10957,7 +10848,6 @@ "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "@babel/core": "^7.23.9", "@babel/parser": "^7.23.9", @@ -10975,7 +10865,6 @@ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -10991,7 +10880,6 @@ "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", @@ -11007,7 +10895,6 @@ "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -11104,7 +10991,6 @@ "integrity": "sha512-IuctmYrxi21iOSOaIXpJWalHyPAsVv0GeBHKDn8C1CA4W5htHn7INL+wdnL4Bo0+olEndvAFkmb++tIQJG+vvg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "execa": "^5.1.1", "jest-util": "30.4.1", @@ -11120,7 +11006,6 @@ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -11145,7 +11030,6 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -11159,7 +11043,6 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=10.17.0" } @@ -11170,7 +11053,6 @@ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" }, @@ -11184,7 +11066,6 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -11195,7 +11076,6 @@ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "path-key": "^3.0.0" }, @@ -11209,7 +11089,6 @@ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -11225,8 +11104,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", @@ -11234,7 +11112,6 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -11245,7 +11122,6 @@ "integrity": "sha512-rvHH7VlY6LgbJXJTQ87GW62g1FntOtbhh0zT+v04kC+pgL6aBKyYINXxWukCpj3dcIBMw5/XUbtDS9dU9JTXeQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/environment": "30.4.1", "@jest/expect": "30.4.1", @@ -11278,7 +11154,6 @@ "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -11291,8 +11166,7 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "5.2.0", @@ -11300,7 +11174,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -11314,7 +11187,6 @@ "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", @@ -11331,7 +11203,6 @@ "integrity": "sha512-jfA2ocvVHMXS2QijrJ0d31ektP+d/W0T5RpcTX2Pq+3sVqHlsXVCM2+FmwpL+bdY8OfHpIg9xMxLF17Zg0U49Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "30.4.2", "@jest/test-result": "30.4.1", @@ -11365,7 +11236,6 @@ "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -11378,8 +11248,7 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "5.2.0", @@ -11387,7 +11256,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -11401,7 +11269,6 @@ "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -11413,7 +11280,6 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -11435,7 +11301,6 @@ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -11452,7 +11317,6 @@ "integrity": "sha512-rNHAShJQqQwFNoL0hbf3BphSBOWnpOUAKvidLS/AjNVLPfoj5mSf4jQMfW3cYOs6hXeZC7nF7mDHaBnbxELOzg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.27.4", "@jest/get-type": "30.1.0", @@ -11504,7 +11368,6 @@ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^2.0.2" }, @@ -11521,7 +11384,6 @@ "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", @@ -11538,7 +11400,6 @@ "integrity": "sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/diff-sequences": "30.4.0", "@jest/get-type": "30.1.0", @@ -11555,7 +11416,6 @@ "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -11568,8 +11428,7 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "5.2.0", @@ -11577,7 +11436,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -11591,7 +11449,6 @@ "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", @@ -11608,7 +11465,6 @@ "integrity": "sha512-ZPMabUZCx5MpbZ2eBYSvZ0J8fvo3dR9oM+eeUpb3aKNQFuS2tu3Duw1TNlMoP8k3WQgKGJuhcMFvwcVuq6T7oA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "detect-newline": "^3.1.0" }, @@ -11622,7 +11478,6 @@ "integrity": "sha512-/8MJbH6fuj48TstjrMf+u/pd06Qezz5xOXvZA6442heNOWr8bdeoGZX2d9fCn028CoMgYmroH9//zky5GfyYmA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/get-type": "30.1.0", "@jest/types": "30.4.1", @@ -11640,7 +11495,6 @@ "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -11653,8 +11507,7 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "5.2.0", @@ -11662,7 +11515,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -11676,7 +11528,6 @@ "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", @@ -11693,7 +11544,6 @@ "integrity": "sha512-4FZYVOk85hz2AyT6BbarKy9u37g6DbrDyCdFhsnDdXqyrueYQvB+0zO4f/kqLCRD0BsPRXPMNJeQwihKZV8naw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/environment": "30.4.1", "@jest/fake-timers": "30.4.1", @@ -11713,7 +11563,6 @@ "integrity": "sha512-rFrcONd8jeFsyw+Z9CrScJgglRf2+NFmNam8dKu7n+SoHqNYT47mn0DdEcVUZJpvh7Iz6/si7f7yUH7GJHVgnw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "30.4.1", "@types/node": "*", @@ -11739,7 +11588,6 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -11753,7 +11601,6 @@ "integrity": "sha512-IpmyiioeHxiWDhesHnUFmOxcTzwCwKpgACgWajtAP+nYQXiY7DakTxB6Bx9JFiRMljr0AX1PvnQdaU1KFoz6NQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/get-type": "30.1.0", "pretty-format": "30.4.1" @@ -11768,7 +11615,6 @@ "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -11781,8 +11627,7 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-leak-detector/node_modules/ansi-styles": { "version": "5.2.0", @@ -11790,7 +11635,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -11804,7 +11648,6 @@ "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", @@ -11821,7 +11664,6 @@ "integrity": "sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/get-type": "30.1.0", "chalk": "^4.1.2", @@ -11838,7 +11680,6 @@ "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -11851,8 +11692,7 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "5.2.0", @@ -11860,7 +11700,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -11874,7 +11713,6 @@ "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", @@ -11891,7 +11729,6 @@ "integrity": "sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@jest/types": "30.4.1", @@ -11914,7 +11751,6 @@ "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -11927,8 +11763,7 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "5.2.0", @@ -11936,7 +11771,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -11950,7 +11784,6 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -11964,7 +11797,6 @@ "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", @@ -11981,7 +11813,6 @@ "integrity": "sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "30.4.1", "@types/node": "*", @@ -11997,7 +11828,6 @@ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" }, @@ -12016,7 +11846,6 @@ "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } @@ -12027,7 +11856,6 @@ "integrity": "sha512-Zry8Yq/yJcNAZ7dJ5F2heic8AheXvbFZ7XI5V+h28nrYZ7Qoyy4dItq8OodjnYD270mvX+ZudmrNV9cysqhW5Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chalk": "^4.1.2", "graceful-fs": "^4.2.11", @@ -12048,7 +11876,6 @@ "integrity": "sha512-gDiVh1I+GxYzz9oXlyw+1wv6VOYX1WYxMOfjsA3iGKePV2oxmbHhwxfkALxNxYy1ciw6APWwkW2zZONwP97aEQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "jest-regex-util": "30.4.0", "jest-snapshot": "30.4.1" @@ -12063,7 +11890,6 @@ "integrity": "sha512-2dw0PslVYXxffXGpLo+Ejad+KcI1Qkjn7f4X4619gf21oCUmL+SPfjqIa/losUem3yEOvfNZe/F1HWUcNpODcg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/console": "30.4.1", "@jest/environment": "30.4.1", @@ -12098,7 +11924,6 @@ "integrity": "sha512-3/5e8iPz2k/VLqlr8DgTftYyLUv8Su3FkCAO2/Od81UsUTpSxOrS6O5x5KkoQwyUjmpYyDJKeyAvg2T2nvpNkQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/environment": "30.4.1", "@jest/fake-timers": "30.4.1", @@ -12133,7 +11958,6 @@ "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -12145,7 +11969,6 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -12167,7 +11990,6 @@ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -12184,7 +12006,6 @@ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^2.0.2" }, @@ -12201,7 +12022,6 @@ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -12212,7 +12032,6 @@ "integrity": "sha512-tEOkkfOMppUyeiHwjZswOQ3lcnoTnws/q5FnGIaeIh/jmoU0ZlgMYRR8sTlTj+nNGCoJ0RDq6SfxGxCsyMTPmw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.27.4", "@babel/generator": "^7.27.5", @@ -12246,7 +12065,6 @@ "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -12259,8 +12077,7 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "5.2.0", @@ -12268,7 +12085,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -12282,7 +12098,6 @@ "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", @@ -12299,7 +12114,6 @@ "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "30.4.1", "@types/node": "*", @@ -12318,7 +12132,6 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -12332,7 +12145,6 @@ "integrity": "sha512-PDWi4SOwLnwqNDfHZjOcsEFyZ4fc/2W2gVL3DEoyqnB6jCQMLRtfBong8s6omIw3lI0HWOus12xfnFmQtjW3fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/get-type": "30.1.0", "@jest/types": "30.4.1", @@ -12351,7 +12163,6 @@ "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -12364,8 +12175,7 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-validate/node_modules/ansi-styles": { "version": "5.2.0", @@ -12373,7 +12183,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -12387,7 +12196,6 @@ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -12401,7 +12209,6 @@ "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", @@ -12418,7 +12225,6 @@ "integrity": "sha512-/l9UonmvCwjHH7d2h3iAwIloLc1H0S8mJZ/LNK3i86hqwPAz8otUJjP9MfYtz9Tt77Su5FD2xGjZn8d31IZHlw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/test-result": "30.4.1", "@jest/types": "30.4.1", @@ -12439,7 +12245,6 @@ "integrity": "sha512-SHynN/q/QD++iNyvMdy+WMmbCGk8jIsNcRxycXbWubSOhvo6T+j2afcfUSl+3hYsiBebOTo0cT7c2H7CXugu1g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*", "@ungap/structured-clone": "^1.3.0", @@ -12457,7 +12262,6 @@ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -12474,6 +12278,7 @@ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -12581,8 +12386,7 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -12636,6 +12440,7 @@ "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-4.2.1.tgz", "integrity": "sha512-YyAXyvnmjTbR4bHQRLzex3CuINCDlQnBqoSYyjJwTP2x9jDLuKDzy7aKUl0hgx3uhcl7xzg32agn5vlie6HIlQ==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.28.6", "fast-png": "^6.2.0", @@ -12751,7 +12556,6 @@ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", "license": "MIT", - "peer": true, "engines": { "node": ">=6.11.5" }, @@ -12930,7 +12734,6 @@ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "semver": "^7.5.3" }, @@ -12954,7 +12757,6 @@ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "tmpl": "1.0.5" } @@ -13603,7 +13405,6 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -13753,6 +13554,7 @@ "resolved": "https://registry.npmjs.org/next/-/next-14.2.35.tgz", "integrity": "sha512-KhYd2Hjt/O1/1aZVX3dCwGXM1QmOV4eNM2UTacK5gipDdPN/oHHK/4oVGy7X8GMfPMsUTUEmGlsy0EY1YGAkig==", "license": "MIT", + "peer": true, "dependencies": { "@next/env": "14.2.35", "@swc/helpers": "0.5.5", @@ -13909,8 +13711,7 @@ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.46", @@ -14233,8 +14034,7 @@ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true, - "license": "BlueOak-1.0.0", - "peer": true + "license": "BlueOak-1.0.0" }, "node_modules/pako": { "version": "2.1.0", @@ -14286,7 +14086,6 @@ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -14628,6 +14427,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", @@ -14798,6 +14598,7 @@ "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.2.tgz", "integrity": "sha512-7tNmwg/7mzzAoB/8kSg6Hl37JraAZw3Z3A0JSY7VXlZwo82Xn0G7wKbNNs2qoF4ZEEsQGTwDAroNdqKs1ofJxQ==", "license": "MIT", + "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -14888,8 +14689,16 @@ "url": "https://opencollective.com/fast-check" } ], - "license": "MIT", - "peer": true + "license": "MIT" + }, + "node_modules/qrcode.react": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-4.2.0.tgz", + "integrity": "sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==", + "license": "ISC", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -14935,6 +14744,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -14947,6 +14757,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -14967,8 +14778,7 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/react-is-19": { "name": "react-is", @@ -14976,8 +14786,7 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.6.tgz", "integrity": "sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/react-markdown": { "version": "10.1.0", @@ -15268,7 +15077,6 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -15312,7 +15120,6 @@ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "resolve-from": "^5.0.0" }, @@ -15326,7 +15133,6 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -15416,6 +15222,7 @@ "integrity": "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -15844,7 +15651,6 @@ "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -15872,8 +15678,7 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/stable-hash": { "version": "0.0.5", @@ -15888,7 +15693,6 @@ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -15902,7 +15706,6 @@ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -15958,7 +15761,6 @@ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -16390,7 +16192,6 @@ "integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@pkgr/core": "^0.3.6" }, @@ -16430,6 +16231,7 @@ "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -16499,7 +16301,6 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", "license": "MIT", - "peer": true, "engines": { "node": ">=6" }, @@ -16642,6 +16443,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -16741,7 +16543,6 @@ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -16758,7 +16559,6 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -16868,6 +16668,7 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -16920,8 +16721,7 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -17215,6 +17015,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -17552,7 +17353,6 @@ "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -17780,7 +17580,6 @@ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "makeerror": "1.0.12" } @@ -17790,7 +17589,6 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "license": "MIT", - "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -17861,7 +17659,6 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.0.tgz", "integrity": "sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=10.13.0" } @@ -17888,7 +17685,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -17901,7 +17697,6 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -17915,7 +17710,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=4.0" } @@ -17924,15 +17718,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/webpack/node_modules/schema-utils": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "license": "MIT", - "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -18274,6 +18066,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -18367,6 +18160,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.80.0.tgz", "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==", "license": "MIT", + "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -18700,7 +18494,6 @@ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" @@ -18732,7 +18525,6 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">=10" } @@ -18749,7 +18541,6 @@ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -18778,8 +18569,7 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", @@ -18787,7 +18577,6 @@ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", diff --git a/package.json b/package.json index bed62b274..56de364ff 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "next": "^14.2.35", "next-auth": "^4.24.14", "next-pwa": "^5.6.0", + "qrcode.react": "^4.2.0", "react": "^18", "react-dom": "^18", "react-markdown": "^10.1.0", diff --git a/src/app/u/[username]/page.tsx b/src/app/u/[username]/page.tsx index 2a653574f..2a5c0fdfb 100644 --- a/src/app/u/[username]/page.tsx +++ b/src/app/u/[username]/page.tsx @@ -80,10 +80,47 @@ export default async function PublicProfilePage({ params: Promise<{ username: string }>; }) { const { username } = await params; - const [profile, loggedInUsername] = await Promise.all([ - fetchPublicProfile(username, { includeAchievements: true }), - getLoggedInGitHubUsername(), + let [profile, loggedInUsername] = await Promise.all([ + fetchPublicProfile(username, { includeAchievements: true }).catch(() => null), + getLoggedInGitHubUsername().catch(() => null), ]); + + // Temporary mock fallback for local front-end preview when Supabase is not connected + if (!profile) { + profile = { + username: username, + bio: "Software developer exploring DevTrack! 🚀", + isSponsor: true, + streak: { + current: 8, + longest: 21, + totalActiveDays: 42, + lastCommitDate: new Date().toISOString(), + }, + contributions: { + days: 90, + total: 184, + data: { + [new Date().toISOString().split("T")[0]]: 4, + }, + }, + repos: [ + { name: `${username}/devtrack`, commits: 98, url: `https://github.com/${username}/devtrack` }, + { name: `${username}/react-hooks`, commits: 54, url: `https://github.com/${username}/react-hooks` }, + { name: `${username}/algorithms`, commits: 32, url: `https://github.com/${username}/algorithms` }, + ], + topLanguages: [ + { name: "TypeScript", count: 12, percentage: 60.5 }, + { name: "JavaScript", count: 6, percentage: 30.2 }, + { name: "CSS", count: 2, percentage: 9.3 }, + ], + pullRequests: 24, + spotlightRepos: [], + achievements: [], + achievementsError: null, + }; + } + const profileUrl = getProfileUrl(username); if (!profile) { diff --git a/src/components/ProfileQrModal.tsx b/src/components/ProfileQrModal.tsx new file mode 100644 index 000000000..56ed737a1 --- /dev/null +++ b/src/components/ProfileQrModal.tsx @@ -0,0 +1,127 @@ +"use client"; + +import React, { useEffect, useRef } from "react"; +import { QRCodeCanvas } from "qrcode.react"; +import { X, Download, QrCode } from "lucide-react"; + +interface ProfileQrModalProps { + isOpen: boolean; + onClose: () => void; + username: string; + profileUrl: string; +} + +export default function ProfileQrModal({ + isOpen, + onClose, + username, + profileUrl, +}: ProfileQrModalProps) { + const modalRef = useRef(null); + + useEffect(() => { + if (!isOpen) return; + + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === "Escape") { + onClose(); + } + }; + + document.addEventListener("keydown", handleKeyDown); + // Lock background scrolling when modal is open + document.body.style.overflow = "hidden"; + + return () => { + document.removeEventListener("keydown", handleKeyDown); + document.body.style.overflow = "unset"; + }; + }, [isOpen, onClose]); + + if (!isOpen) return null; + + const downloadQRCode = () => { + const canvas = document.getElementById("profile-qr-canvas") as HTMLCanvasElement; + if (!canvas) return; + + try { + const pngUrl = canvas.toDataURL("image/png"); + const downloadLink = document.createElement("a"); + downloadLink.href = pngUrl; + downloadLink.download = `${username}-devtrack-qr.png`; + document.body.appendChild(downloadLink); + downloadLink.click(); + document.body.removeChild(downloadLink); + } catch (error) { + console.error("Failed to download QR code:", error); + } + }; + + return ( +
+ {/* Backdrop with blur */} + + ); +} diff --git a/src/components/ShareProfileSection.tsx b/src/components/ShareProfileSection.tsx index adf9e00fa..185c3ce93 100644 --- a/src/components/ShareProfileSection.tsx +++ b/src/components/ShareProfileSection.tsx @@ -3,6 +3,8 @@ import { useEffect, useState } from "react"; import { toast } from "sonner"; import CopyLinkButton from "@/components/CopyLinkButton"; +import ProfileQrModal from "@/components/ProfileQrModal"; +import { QrCode } from "lucide-react"; interface ShareProfileSectionProps { username: string; @@ -16,6 +18,7 @@ export default function ShareProfileSection({ profileUrl, }: ShareProfileSectionProps) { const [canUseNativeShare, setCanUseNativeShare] = useState(false); + const [showQrModal, setShowQrModal] = useState(false); useEffect(() => { setCanUseNativeShare( @@ -48,55 +51,74 @@ export default function ShareProfileSection({ }; return ( -
-
-
-

- Share Profile -

-

- Share your public stats on X, LinkedIn, or copy the profile link. -

-
+ <> +
+
+
+

+ Share Profile +

+

+ Share your public stats on X, LinkedIn, or copy the profile link. +

+
+ +
+ {canUseNativeShare ? ( + + ) : null} -
- {canUseNativeShare ? ( - ) : null} - - - X - + + + X + - - - LinkedIn - + + + LinkedIn + - + +
-
-
+
+ + setShowQrModal(false)} + username={username} + profileUrl={profileUrl} + /> + ); } \ No newline at end of file diff --git a/test/components/ProfileQrModal.test.tsx b/test/components/ProfileQrModal.test.tsx new file mode 100644 index 000000000..9430e07e9 --- /dev/null +++ b/test/components/ProfileQrModal.test.tsx @@ -0,0 +1,129 @@ +import React from "react"; +import "@testing-library/jest-dom"; +import { render, screen, fireEvent } from "@testing-library/react"; +import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; +import ProfileQrModal from "../../src/components/ProfileQrModal"; + +describe("ProfileQrModal", () => { + const defaultProps = { + isOpen: true, + onClose: vi.fn(), + username: "john_doe", + profileUrl: "https://devtrack.mock/u/john_doe", + }; + + beforeEach(() => { + vi.clearAllMocks(); + // Reset document.body style + document.body.style.overflow = "unset"; + }); + + afterEach(() => { + vi.restoreAllMocks(); + }); + + it("does not render when isOpen is false", () => { + const { container } = render(); + expect(container.firstChild).toBeNull(); + }); + + it("renders modal content when isOpen is true", () => { + render(); + + // Check heading + expect(screen.getByRole("heading", { name: /Share Profile QR/i })).toBeInTheDocument(); + + // Check helper description + expect( + screen.getByText(/Scan with a phone camera to quickly view @john_doe's profile on DevTrack/i) + ).toBeInTheDocument(); + + // Check close button + expect(screen.getByRole("button", { name: /Close modal/i })).toBeInTheDocument(); + + // Check QR code canvas is rendered + const canvas = document.getElementById("profile-qr-canvas"); + expect(canvas).toBeInTheDocument(); + }); + + it("calls onClose when Close button is clicked", () => { + render(); + + const closeButton = screen.getByRole("button", { name: /Close modal/i }); + fireEvent.click(closeButton); + + expect(defaultProps.onClose).toHaveBeenCalledTimes(1); + }); + + it("calls onClose when backdrop is clicked", () => { + render(); + + // Click backdrop + const backdrop = screen.getByRole("dialog").previousSibling; + if (backdrop) { + fireEvent.click(backdrop); + } + + expect(defaultProps.onClose).toHaveBeenCalledTimes(1); + }); + + it("calls onClose when Escape key is pressed", () => { + render(); + + fireEvent.keyDown(document, { key: "Escape" }); + + expect(defaultProps.onClose).toHaveBeenCalledTimes(1); + }); + + it("locks and unlocks body scroll appropriately", () => { + const { unmount } = render(); + + // When modal is open, overflow should be hidden + expect(document.body.style.overflow).toBe("hidden"); + + unmount(); + + // When unmounted/closed, overflow should be unset + expect(document.body.style.overflow).toBe("unset"); + }); + + it("triggers download of QR code when download button is clicked", () => { + render(); + + // Mock HTMLCanvasElement.prototype.toDataURL + const toDataURLMock = vi.fn().mockReturnValue("data:image/png;base64,mocked_image_data"); + const originalToDataURL = HTMLCanvasElement.prototype.toDataURL; + HTMLCanvasElement.prototype.toDataURL = toDataURLMock; + + // Spy on document.createElement to check link generation + const linkClickSpy = vi.fn(); + const createElementSpy = vi.spyOn(document, "createElement").mockImplementation((tagName) => { + if (tagName === "a") { + return { + href: "", + download: "", + click: linkClickSpy, + } as any; + } + return document.createElement(tagName); + }); + + const appendChildSpy = vi.spyOn(document.body, "appendChild").mockImplementation(() => ({} as any)); + const removeChildSpy = vi.spyOn(document.body, "removeChild").mockImplementation(() => ({} as any)); + + const downloadButton = screen.getByRole("button", { name: /Download QR Code/i }); + fireEvent.click(downloadButton); + + // Verify canvas toDataURL was called + expect(toDataURLMock).toHaveBeenCalledWith("image/png"); + + // Verify link properties and interaction + expect(createElementSpy).toHaveBeenCalledWith("a"); + expect(appendChildSpy).toHaveBeenCalled(); + expect(linkClickSpy).toHaveBeenCalled(); + expect(removeChildSpy).toHaveBeenCalled(); + + // Clean up prototypes + HTMLCanvasElement.prototype.toDataURL = originalToDataURL; + }); +}); From 4114aec6d7ab8de052d49c6161c9536494eb9050 Mon Sep 17 00:00:00 2001 From: Pranav Chaudhari Date: Mon, 1 Jun 2026 14:06:57 +0530 Subject: [PATCH 2/2] refactor: address PR review comments with focus trap, overflow preservation, canvas ref and dev-gated fallback --- src/app/u/[username]/page.tsx | 2 +- src/components/ProfileQrModal.tsx | 48 ++++++++++++++++++++++--- test/components/ProfileQrModal.test.tsx | 31 +++++++--------- 3 files changed, 57 insertions(+), 24 deletions(-) diff --git a/src/app/u/[username]/page.tsx b/src/app/u/[username]/page.tsx index 2a5c0fdfb..d5c1e5380 100644 --- a/src/app/u/[username]/page.tsx +++ b/src/app/u/[username]/page.tsx @@ -86,7 +86,7 @@ export default async function PublicProfilePage({ ]); // Temporary mock fallback for local front-end preview when Supabase is not connected - if (!profile) { + if (!profile && process.env.NODE_ENV === "development") { profile = { username: username, bio: "Software developer exploring DevTrack! 🚀", diff --git a/src/components/ProfileQrModal.tsx b/src/components/ProfileQrModal.tsx index 56ed737a1..218b2b3b8 100644 --- a/src/components/ProfileQrModal.tsx +++ b/src/components/ProfileQrModal.tsx @@ -18,6 +18,9 @@ export default function ProfileQrModal({ profileUrl, }: ProfileQrModalProps) { const modalRef = useRef(null); + const canvasRef = useRef(null); + const closeButtonRef = useRef(null); + const downloadButtonRef = useRef(null); useEffect(() => { if (!isOpen) return; @@ -25,23 +28,55 @@ export default function ProfileQrModal({ const handleKeyDown = (e: KeyboardEvent) => { if (e.key === "Escape") { onClose(); + return; + } + + if (e.key === "Tab") { + const focusable = [closeButtonRef.current, downloadButtonRef.current].filter(Boolean) as HTMLElement[]; + if (focusable.length === 0) return; + + const first = focusable[0]; + const last = focusable[focusable.length - 1]; + + if (e.shiftKey) { + if (document.activeElement === first) { + last.focus(); + e.preventDefault(); + } + } else { + if (document.activeElement === last) { + first.focus(); + e.preventDefault(); + } + } } }; document.addEventListener("keydown", handleKeyDown); - // Lock background scrolling when modal is open + + // Save original active element to restore focus on close + const originalActiveElement = document.activeElement as HTMLElement | null; + + // Shift initial focus to close button for screen readers + setTimeout(() => { + closeButtonRef.current?.focus(); + }, 50); + + // Lock background scrolling while preserving original overflow + const originalOverflow = document.body.style.overflow; document.body.style.overflow = "hidden"; return () => { document.removeEventListener("keydown", handleKeyDown); - document.body.style.overflow = "unset"; + document.body.style.overflow = originalOverflow; + originalActiveElement?.focus(); }; }, [isOpen, onClose]); if (!isOpen) return null; const downloadQRCode = () => { - const canvas = document.getElementById("profile-qr-canvas") as HTMLCanvasElement; + const canvas = canvasRef.current; if (!canvas) return; try { @@ -59,8 +94,9 @@ export default function ProfileQrModal({ return (
- {/* Backdrop with blur */} + {/* Backdrop with blur and stable test-id */}