From 53cb7eeb6a7235b7435cd2dd3e6c1178b8990006 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Wed, 3 Jul 2024 16:44:41 +0200 Subject: [PATCH 01/53] Library upgrades --- package-lock.json | 460 ++++++++++++++++++++++++---------------------- package.json | 8 +- 2 files changed, 242 insertions(+), 226 deletions(-) diff --git a/package-lock.json b/package-lock.json index ce73b7f0..f31480ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@allmaps/iiif-parser": "1.0.0-beta.37", "@annotorious/react": "3.0.0-rc.30", - "@astrojs/netlify": "^5.3.4", + "@astrojs/netlify": "^5.3.5", "@astrojs/node": "^8.3.2", "@astrojs/react": "^3.6.0", "@phosphor-icons/react": "^2.1.7", @@ -34,7 +34,7 @@ "@radix-ui/react-toggle-group": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", "@react-spring/web": "^9.7.3", - "@recogito/annotorious-supabase": "1.0.0-rc.12", + "@recogito/annotorious-supabase": "1.0.0-rc.14", "@recogito/react-pdf-annotator": "1.0.0-rc.23", "@recogito/react-text-annotator": "3.0.0-rc.35", "@supabase/ssr": "0.4.0", @@ -43,7 +43,7 @@ "@uppy/core": "3.11.3", "@uppy/xhr-upload": "3.6.4", "accept-language-parser": "^1.5.0", - "astro": "^4.11.3", + "astro": "^4.11.4", "classnames": "^2.5.1", "confetti-explosion-react": "^0.1.2", "crypto-js": "4.2.0", @@ -79,7 +79,7 @@ "@typescript-eslint/parser": "^7.13.1", "eslint": "^8.57.0", "eslint-plugin-react": "^7.34.2", - "typescript": "5.5.2" + "typescript": "5.5.3" } }, "node_modules/@allmaps/iiif-parser": { @@ -200,15 +200,15 @@ } }, "node_modules/@astrojs/netlify": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@astrojs/netlify/-/netlify-5.3.4.tgz", - "integrity": "sha512-8c7+L0tg1DINOm+nBx1tAjqxadb72lzHT/RES2AguDVv5Jv964vrK+2TDUVsqDGWftJY0cuZFNkzEjdrMYadXw==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@astrojs/netlify/-/netlify-5.3.5.tgz", + "integrity": "sha512-gQ9HTW2wMWqz4adYS/mXDTHldDb4SJ/has++bsGxYSKppsnfnNR3OiUsPwbGn4WAMAG3OdJ05Shp2JcXOKbt5w==", "dependencies": { "@astrojs/internal-helpers": "0.4.1", - "@astrojs/underscore-redirects": "^0.3.3", + "@astrojs/underscore-redirects": "^0.3.4", "@netlify/functions": "^2.8.0", "@vercel/nft": "^0.27.2", - "esbuild": "^0.19.5" + "esbuild": "^0.22.0" }, "peerDependencies": { "astro": "^4.2.0" @@ -792,9 +792,9 @@ "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.22.0.tgz", + "integrity": "sha512-uvQR2crZ/zgzSHDvdygHyNI+ze9zwS8mqz0YtGXotSqvEE0UkYE9s+FZKQNTt1VtT719mfP3vHrUdCpxBNQZhQ==", "cpu": [ "ppc64" ], @@ -803,13 +803,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.22.0.tgz", + "integrity": "sha512-PBnyP+r8vJE4ifxsWys9l+Mc2UY/yYZOpX82eoyGISXXb3dRr0M21v+s4fgRKWMFPMSf/iyowqPW/u7ScSUkjQ==", "cpu": [ "arm" ], @@ -818,13 +818,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.22.0.tgz", + "integrity": "sha512-UKhPb3o2gAB/bfXcl58ZXTn1q2oVu1rEu/bKrCtmm+Nj5MKUbrOwR5WAixE2v+lk0amWuwPvhnPpBRLIGiq7ig==", "cpu": [ "arm64" ], @@ -833,13 +833,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.22.0.tgz", + "integrity": "sha512-IjTYtvIrjhR41Ijy2dDPgYjQHWG/x/A4KXYbs1fiU3efpRdoxMChK3oEZV6GPzVEzJqxFgcuBaiX1kwEvWUxSw==", "cpu": [ "x64" ], @@ -848,13 +848,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.22.0.tgz", + "integrity": "sha512-mqt+Go4y9wRvEz81bhKd9RpHsQR1LwU8Xm6jZRUV/xpM7cIQFbFH6wBCLPTNsdELBvfoHeumud7X78jQQJv2TA==", "cpu": [ "arm64" ], @@ -863,13 +863,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.22.0.tgz", + "integrity": "sha512-vTaTQ9OgYc3VTaWtOE5pSuDT6H3d/qSRFRfSBbnxFfzAvYoB3pqKXA0LEbi/oT8GUOEAutspfRMqPj2ezdFaMw==", "cpu": [ "x64" ], @@ -878,13 +878,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.22.0.tgz", + "integrity": "sha512-0e1ZgoobJzaGnR4reD7I9rYZ7ttqdh1KPvJWnquUoDJhL0rYwdneeLailBzd2/4g/U5p4e5TIHEWa68NF2hFpQ==", "cpu": [ "arm64" ], @@ -893,13 +893,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.22.0.tgz", + "integrity": "sha512-BFgyYwlCwRWyPQJtkzqq2p6pJbiiWgp0P9PNf7a5FQ1itKY4czPuOMAlFVItirSmEpRPCeImuwePNScZS0pL5Q==", "cpu": [ "x64" ], @@ -908,13 +908,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.22.0.tgz", + "integrity": "sha512-KEMWiA9aGuPUD4BH5yjlhElLgaRXe+Eri6gKBoDazoPBTo1BXc/e6IW5FcJO9DoL19FBeCxgONyh95hLDNepIg==", "cpu": [ "arm" ], @@ -923,13 +923,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.22.0.tgz", + "integrity": "sha512-V/K2rctCUgC0PCXpN7AqT4hoazXKgIYugFGu/myk2+pfe6jTW2guz/TBwq4cZ7ESqusR/IzkcQaBkcjquuBWsw==", "cpu": [ "arm64" ], @@ -938,13 +938,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.22.0.tgz", + "integrity": "sha512-r2ZZqkOMOrpUhzNwxI7uLAHIDwkfeqmTnrv1cjpL/rjllPWszgqmprd/om9oviKXUBpMqHbXmppvjAYgISb26Q==", "cpu": [ "ia32" ], @@ -953,13 +953,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.22.0.tgz", + "integrity": "sha512-qaowLrV/YOMAL2RfKQ4C/VaDzAuLDuylM2sd/LH+4OFirMl6CuDpRlCq4u49ZBaVV8pkI/Y+hTdiibvQRhojCA==", "cpu": [ "loong64" ], @@ -968,13 +968,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.22.0.tgz", + "integrity": "sha512-hgrezzjQTRxjkQ5k08J6rtZN5PNnkWx/Rz6Kmj9gnsdCAX1I4Dn4ZPqvFRkXo55Q3pnVQJBwbdtrTO7tMGtyVA==", "cpu": [ "mips64el" ], @@ -983,13 +983,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.22.0.tgz", + "integrity": "sha512-ewxg6FLLUio883XgSjfULEmDl3VPv/TYNnRprVAS3QeGFLdCYdx1tIudBcd7n9jIdk82v1Ajov4jx87qW7h9+g==", "cpu": [ "ppc64" ], @@ -998,13 +998,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.22.0.tgz", + "integrity": "sha512-Az5XbgSJC2lE8XK8pdcutsf9RgdafWdTpUK/+6uaDdfkviw/B4JCwAfh1qVeRWwOohwdsl4ywZrWBNWxwrPLFg==", "cpu": [ "riscv64" ], @@ -1013,13 +1013,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.22.0.tgz", + "integrity": "sha512-8j4a2ChT9+V34NNNY9c/gMldutaJFmfMacTPq4KfNKwv2fitBCLYjee7c+Vxaha2nUhPK7cXcZpJtJ3+Y7ZdVQ==", "cpu": [ "s390x" ], @@ -1028,13 +1028,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.22.0.tgz", + "integrity": "sha512-JUQyOnpbAkkRFOk/AhsEemz5TfWN4FJZxVObUlnlNCbe7QBl61ZNfM4cwBXayQA6laMJMUcqLHaYQHAB6YQ95Q==", "cpu": [ "x64" ], @@ -1043,13 +1043,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.22.0.tgz", + "integrity": "sha512-11PoCoHXo4HFNbLsXuMB6bpMPWGDiw7xETji6COdJss4SQZLvcgNoeSqWtATRm10Jj1uEHiaIk4N0PiN6x4Fcg==", "cpu": [ "x64" ], @@ -1058,13 +1058,28 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.22.0.tgz", + "integrity": "sha512-Ezlhu/YyITmXwKSB+Zu/QqD7cxrjrpiw85cc0Rbd3AWr2wsgp+dWbWOE8MqHaLW9NKMZvuL0DhbJbvzR7F6Zvg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.22.0.tgz", + "integrity": "sha512-ufjdW5tFJGUjlH9j/5cCE9lrwRffyZh+T4vYvoDKoYsC6IXbwaFeV/ENxeNXcxotF0P8CDzoICXVSbJaGBhkrw==", "cpu": [ "x64" ], @@ -1073,13 +1088,13 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.22.0.tgz", + "integrity": "sha512-zY6ly/AoSmKnmNTowDJsK5ehra153/5ZhqxNLfq9NRsTTltetr+yHHcQ4RW7QDqw4JC8A1uC1YmeSfK9NRcK1w==", "cpu": [ "x64" ], @@ -1088,13 +1103,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.22.0.tgz", + "integrity": "sha512-Kml5F7tv/1Maam0pbbCrvkk9vj046dPej30kFzlhXnhuCtYYBP6FGy/cLbc5yUT1lkZznGLf2OvuvmLjscO5rw==", "cpu": [ "arm64" ], @@ -1103,13 +1118,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.22.0.tgz", + "integrity": "sha512-IOgwn+mYTM3RrcydP4Og5IpXh+ftN8oF+HELTXSmbWBlujuci4Qa3DTeO+LEErceisI7KUSfEIiX+WOUlpELkw==", "cpu": [ "ia32" ], @@ -1118,13 +1133,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.22.0.tgz", + "integrity": "sha512-4bDHJrk2WHBXJPhy1y80X7/5b5iZTZP3LGcKIlAP1J+KqZ4zQAPMLEzftGyjjfcKbA4JDlPt/+2R/F1ZTeRgrw==", "cpu": [ "x64" ], @@ -1133,7 +1148,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -3825,9 +3840,9 @@ } }, "node_modules/@recogito/annotorious-supabase": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@recogito/annotorious-supabase/-/annotorious-supabase-1.0.0-rc.12.tgz", - "integrity": "sha512-62mFgITh52OI0MHxBtql8LJtfbWYpFQVMp/QusDa2lSHbVKlhfLj4xcM00Vdo7RsePStdhMVb509SSIsPkvdQQ==", + "version": "1.0.0-rc.14", + "resolved": "https://registry.npmjs.org/@recogito/annotorious-supabase/-/annotorious-supabase-1.0.0-rc.14.tgz", + "integrity": "sha512-Qxs/kjB0S4pei9wXVAkfvdiB8zdUBiO411r92AqlRkjQB9o8WISWSZH4NIUpOV27Qsh5Lzuw8H3fx8ZxPeOK2A==", "dependencies": { "@annotorious/core": "^3.0.0-rc.30", "@supabase/supabase-js": "^2.44.2", @@ -4108,9 +4123,9 @@ ] }, "node_modules/@shikijs/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.10.0.tgz", - "integrity": "sha512-BZcr6FCmPfP6TXaekvujZcnkFmJHZ/Yglu97r/9VjzVndQA56/F4WjUKtJRQUnK59Wi7p/UTAOekMfCJv7jnYg==" + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.10.1.tgz", + "integrity": "sha512-qdiJS5a/QGCff7VUFIqd0hDdWly9rDp8lhVmXVrS11aazX8LOTRLHAXkkEeONNsS43EcCd7gax9LLoOz4vlFQA==" }, "node_modules/@supabase/auth-js": { "version": "2.64.2", @@ -4450,16 +4465,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz", - "integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.15.0.tgz", + "integrity": "sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/type-utils": "7.14.1", - "@typescript-eslint/utils": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/type-utils": "7.15.0", + "@typescript-eslint/utils": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4483,15 +4498,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.15.0.tgz", + "integrity": "sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", "debug": "^4.3.4" }, "engines": { @@ -4511,13 +4526,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz", - "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz", + "integrity": "sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1" + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4528,13 +4543,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz", - "integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.15.0.tgz", + "integrity": "sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/utils": "7.14.1", + "@typescript-eslint/typescript-estree": "7.15.0", + "@typescript-eslint/utils": "7.15.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4555,9 +4570,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz", - "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz", + "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4568,13 +4583,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz", - "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz", + "integrity": "sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4596,15 +4611,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz", - "integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.15.0.tgz", + "integrity": "sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1" + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4618,12 +4633,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz", - "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz", + "integrity": "sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.14.1", + "@typescript-eslint/types": "7.15.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -4639,19 +4654,6 @@ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, - "node_modules/@uppy/companion-client": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-3.8.1.tgz", - "integrity": "sha512-A1k9cOgGMsJNx1lI0Lj2ZaLAH3WIL3xImi2EPXuAHgL1uBZqjuffP2P9XK4nr+KVc+PBivOxH7MoiYpJm97/xw==", - "dependencies": { - "@uppy/utils": "^5.9.0", - "namespace-emitter": "^2.0.1", - "p-retry": "^6.1.0" - }, - "peerDependencies": { - "@uppy/core": "^3.11.0" - } - }, "node_modules/@uppy/core": { "version": "3.11.3", "resolved": "https://registry.npmjs.org/@uppy/core/-/core-3.11.3.tgz", @@ -4711,6 +4713,19 @@ "@uppy/core": "^3.9.3" } }, + "node_modules/@uppy/xhr-upload/node_modules/@uppy/companion-client": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-3.8.2.tgz", + "integrity": "sha512-WLjZ0Y6Fe7lzwU1YPvvQ/YqooejcgIZkT2TC39xr+QQ7Y1FwJECsyUdlKwgi1ee8TNpjoCrj3Q1Hjel/+p0VhA==", + "dependencies": { + "@uppy/utils": "^5.9.0", + "namespace-emitter": "^2.0.1", + "p-retry": "^6.1.0" + }, + "peerDependencies": { + "@uppy/core": "^3.13.1" + } + }, "node_modules/@uppy/xhr-upload/node_modules/nanoid": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", @@ -4810,9 +4825,9 @@ "integrity": "sha512-QhyTbMLYo0BBGg1aWbeMG4ekWtds/31BrEU+DONOg/7ax23vxpL03Pb7/zBmha2v7vdD3AyzZVWBVGEZxKOXWw==" }, "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "bin": { "acorn": "bin/acorn" }, @@ -5146,9 +5161,9 @@ } }, "node_modules/astro": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/astro/-/astro-4.11.3.tgz", - "integrity": "sha512-SuZbB/71XVn+WqWNCe7XOfHuqhS+k4gj8+A3wluTZQrORGaHUFRn/f8F9Tu5yESQZB1q8UKhahvHwkTV3AdVsg==", + "version": "4.11.4", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.11.4.tgz", + "integrity": "sha512-jSCnPD+r4MO5Pxl04XfCydzZiL/p70q1ddYind02JDGQDLlps4d2s/AfT/7be12gf1PpR13ACcvO6aJFUIVQXA==", "dependencies": { "@astrojs/compiler": "^2.8.1", "@astrojs/internal-helpers": "0.4.1", @@ -5200,13 +5215,13 @@ "prompts": "^2.4.2", "rehype": "^13.0.1", "semver": "^7.6.2", - "shiki": "^1.9.0", - "string-width": "^7.1.0", + "shiki": "^1.10.0", + "string-width": "^7.2.0", "strip-ansi": "^7.1.0", - "tsconfck": "^3.1.0", + "tsconfck": "^3.1.1", "unist-util-visit": "^5.0.0", "vfile": "^6.0.1", - "vite": "^5.3.1", + "vite": "^5.3.2", "vitefu": "^0.2.5", "which-pm": "^2.2.0", "yargs-parser": "^21.1.1", @@ -5858,9 +5873,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001639", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001639.tgz", - "integrity": "sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==", + "version": "1.0.30001640", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", + "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", "funding": [ { "type": "opencollective", @@ -6680,9 +6695,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.815", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.815.tgz", - "integrity": "sha512-OvpTT2ItpOXJL7IGcYakRjHCt8L5GrrN/wHCQsRB4PQa1X9fe+X9oen245mIId7s14xvArCGSTIq644yPUKKLg==" + "version": "1.4.816", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz", + "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==" }, "node_modules/emoji-regex": { "version": "10.3.0", @@ -6878,40 +6893,41 @@ } }, "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.22.0.tgz", + "integrity": "sha512-zNYA6bFZsVnsU481FnGAQjLDW0Pl/8BGG7EvAp15RzUvGC+ME7hf1q7LvIfStEQBz/iEHuBJCYcOwPmNCf1Tlw==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.22.0", + "@esbuild/android-arm": "0.22.0", + "@esbuild/android-arm64": "0.22.0", + "@esbuild/android-x64": "0.22.0", + "@esbuild/darwin-arm64": "0.22.0", + "@esbuild/darwin-x64": "0.22.0", + "@esbuild/freebsd-arm64": "0.22.0", + "@esbuild/freebsd-x64": "0.22.0", + "@esbuild/linux-arm": "0.22.0", + "@esbuild/linux-arm64": "0.22.0", + "@esbuild/linux-ia32": "0.22.0", + "@esbuild/linux-loong64": "0.22.0", + "@esbuild/linux-mips64el": "0.22.0", + "@esbuild/linux-ppc64": "0.22.0", + "@esbuild/linux-riscv64": "0.22.0", + "@esbuild/linux-s390x": "0.22.0", + "@esbuild/linux-x64": "0.22.0", + "@esbuild/netbsd-x64": "0.22.0", + "@esbuild/openbsd-arm64": "0.22.0", + "@esbuild/openbsd-x64": "0.22.0", + "@esbuild/sunos-x64": "0.22.0", + "@esbuild/win32-arm64": "0.22.0", + "@esbuild/win32-ia32": "0.22.0", + "@esbuild/win32-x64": "0.22.0" } }, "node_modules/escalade": { @@ -11065,9 +11081,9 @@ } }, "node_modules/qs": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", - "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.2.tgz", + "integrity": "sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==", "dependencies": { "side-channel": "^1.0.6" }, @@ -11987,11 +12003,11 @@ } }, "node_modules/shiki": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.10.0.tgz", - "integrity": "sha512-YD2sXQ+TMD/F9BimV9Jn0wj35pqOvywvOG/3PB6hGHyGKlM7TJ9tyJ02jOb2kF8F0HfJwKNYrh3sW7jEcuRlXA==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.10.1.tgz", + "integrity": "sha512-uafV7WCgN4YYrccH6yxpnps6k38sSTlFRrwc4jycWmhWxJIm9dPrk+XkY1hZ2t0I7jmacMNb15Lf2fspa/Y3lg==", "dependencies": { - "@shikijs/core": "1.10.0" + "@shikijs/core": "1.10.1" } }, "node_modules/shimmer": { @@ -12590,9 +12606,9 @@ } }, "node_modules/typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "devOptional": true, "bin": { "tsc": "bin/tsc", @@ -12770,9 +12786,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", @@ -12962,12 +12978,12 @@ } }, "node_modules/vite": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.2.tgz", - "integrity": "sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", + "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.38", + "postcss": "^8.4.39", "rollup": "^4.13.0" }, "bin": { diff --git a/package.json b/package.json index f2c7a840..b415c262 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "dependencies": { "@allmaps/iiif-parser": "1.0.0-beta.37", "@annotorious/react": "3.0.0-rc.30", - "@astrojs/netlify": "^5.3.4", + "@astrojs/netlify": "^5.3.5", "@astrojs/node": "^8.3.2", "@astrojs/react": "^3.6.0", "@phosphor-icons/react": "^2.1.7", @@ -39,7 +39,7 @@ "@radix-ui/react-toggle-group": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", "@react-spring/web": "^9.7.3", - "@recogito/annotorious-supabase": "1.0.0-rc.12", + "@recogito/annotorious-supabase": "1.0.0-rc.14", "@recogito/react-pdf-annotator": "1.0.0-rc.23", "@recogito/react-text-annotator": "3.0.0-rc.35", "@supabase/ssr": "0.4.0", @@ -48,7 +48,7 @@ "@uppy/core": "3.11.3", "@uppy/xhr-upload": "3.6.4", "accept-language-parser": "^1.5.0", - "astro": "^4.11.3", + "astro": "^4.11.4", "classnames": "^2.5.1", "confetti-explosion-react": "^0.1.2", "crypto-js": "4.2.0", @@ -84,6 +84,6 @@ "@typescript-eslint/parser": "^7.13.1", "eslint": "^8.57.0", "eslint-plugin-react": "^7.34.2", - "typescript": "5.5.2" + "typescript": "5.5.3" } } \ No newline at end of file From fbf915837bfd316f8e825127534dd135223c2221 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Wed, 3 Jul 2024 19:36:16 +0200 Subject: [PATCH 02/53] Limits size for images embedded in Quill --- src/components/QuillEditor/QuillEditor.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/QuillEditor/QuillEditor.css b/src/components/QuillEditor/QuillEditor.css index 619199a3..22b1cb4e 100644 --- a/src/components/QuillEditor/QuillEditor.css +++ b/src/components/QuillEditor/QuillEditor.css @@ -21,6 +21,8 @@ .quill-rte .ql-editor img { display: inline-block; + max-height: 30vh; + max-width: 100%; } .quill-rte-toolbar { From b141409f0ff9c2d436a668cf5fb7d499589c8d40 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Wed, 3 Jul 2024 19:39:21 +0200 Subject: [PATCH 03/53] Issue https://github.com/performant-software/vico/issues/299 --- src/apps/project-settings/ProjectSettings.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/project-settings/ProjectSettings.tsx b/src/apps/project-settings/ProjectSettings.tsx index b14318aa..75f0589f 100644 --- a/src/apps/project-settings/ProjectSettings.tsx +++ b/src/apps/project-settings/ProjectSettings.tsx @@ -364,7 +364,7 @@ export const ProjectSettings = (props: ProjectSettingsProps) => { className='project-settings-label-detail text-body-large-bold' htmlFor='firstName' > - {t['Project Visibility']} + {t['Project Type']} Date: Sun, 7 Jul 2024 09:35:11 +0200 Subject: [PATCH 04/53] Minor tweak, in anticipation of future text-annotator changes --- src/apps/annotation-text/TextAnnotationDesktop.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps/annotation-text/TextAnnotationDesktop.css b/src/apps/annotation-text/TextAnnotationDesktop.css index 20305efa..74fd53f7 100644 --- a/src/apps/annotation-text/TextAnnotationDesktop.css +++ b/src/apps/annotation-text/TextAnnotationDesktop.css @@ -32,6 +32,7 @@ html, body { z-index: 5; } +.r6o-presence-layer, .ta-desktop main .r6o-annotatable .r6o-highlight-layer.presence { z-index: 10; } From 9b9baeefa7134e0b386b8828f606395db0fe91dc Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Tue, 9 Jul 2024 08:09:46 +0200 Subject: [PATCH 05/53] Minor tweak: allowing IIIF image manifests with query params --- src/apps/annotation-image/IIIF/useIIIF.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/apps/annotation-image/IIIF/useIIIF.ts b/src/apps/annotation-image/IIIF/useIIIF.ts index 8c181f39..25b960ee 100644 --- a/src/apps/annotation-image/IIIF/useIIIF.ts +++ b/src/apps/annotation-image/IIIF/useIIIF.ts @@ -23,10 +23,6 @@ const isSupported = (manifest: Manifest) => { return true; }; -/** - * TODO add additional checks on the document metadata, to ensure - * we are dealing with a IIIF (image or presentation) manifest. - */ export const useIIIF = (document: DocumentWithContext) => { const [sequence, setSequence] = useState(); @@ -49,7 +45,6 @@ export const useIIIF = (document: DocumentWithContext) => { const url = isUploadedFile ? // Locally uploaded image - for now, assume this is served via built-in IIIF - // TODO how to construct the right IIIF URL? `${CANTALOUPE_PATH}/${document.id}/info.json` : document.meta_data?.url; @@ -58,7 +53,7 @@ export const useIIIF = (document: DocumentWithContext) => { return; } - if (url.endsWith('info.json')) { + if (url.endsWith('info.json') || url.includes('info.json?')) { if (isUploadedFile) { // For uploaded files, we need to include the auth token // into image requests From 17e186499cb04dc460dab0e0b3bbfcfc6371f6cd Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Thu, 11 Jul 2024 09:26:32 +0200 Subject: [PATCH 06/53] Replaced manifest.js with @allmaps/iiif-parser --- package-lock.json | 1112 ++++------------- .../annotation-image/IIIF/IIIFThumbnail.tsx | 6 +- .../IIIF/IIIFThumbnailStrip.tsx | 36 +- src/apps/annotation-image/IIIF/useIIIF.ts | 79 +- .../ImageAnnotationDesktop.tsx | 5 +- .../LeftDrawer/LeftDrawer.tsx | 7 +- .../annotation-text/TextAnnotationDesktop.tsx | 1 + .../upload/dialogs/useIIIFValidation.ts | 28 +- src/util/export/index.ts | 2 + src/util/iiif/getCanvasLabel.ts | 24 + src/util/iiif/index.ts | 1 + src/util/index.ts | 3 +- 12 files changed, 291 insertions(+), 1013 deletions(-) create mode 100644 src/util/export/index.ts create mode 100644 src/util/iiif/getCanvasLabel.ts create mode 100644 src/util/iiif/index.ts diff --git a/package-lock.json b/package-lock.json index f31480ac..b4855030 100644 --- a/package-lock.json +++ b/package-lock.json @@ -165,9 +165,9 @@ } }, "node_modules/@astrojs/compiler": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.8.1.tgz", - "integrity": "sha512-NGfPAgU/9rvDEwsXu82RI1AxiivaxtEYBK9saW1f+2fTHUUqCJQ27HYtb2akG2QxCmFikgZ9zk26BEWgiHho1Q==" + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.8.2.tgz", + "integrity": "sha512-2v2N2oDnMH6+CX1Wn6f45Afa4tdkUMutdx8pJaokfaOYnAU+u6+UK7o7sXqydKro1cLwVmmOIJv6AqiXnAdLDA==" }, "node_modules/@astrojs/internal-helpers": { "version": "0.4.1", @@ -200,9 +200,9 @@ } }, "node_modules/@astrojs/netlify": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@astrojs/netlify/-/netlify-5.3.5.tgz", - "integrity": "sha512-gQ9HTW2wMWqz4adYS/mXDTHldDb4SJ/has++bsGxYSKppsnfnNR3OiUsPwbGn4WAMAG3OdJ05Shp2JcXOKbt5w==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/netlify/-/netlify-5.4.0.tgz", + "integrity": "sha512-zaV/jV4Dm93oahh/Xneh2pOBKOiiFRGpRWwFvH+rkIUR52lfwIWZhngDPxKSKm6TzUd/7vhdba96sEU6cmkxWQ==", "dependencies": { "@astrojs/internal-helpers": "0.4.1", "@astrojs/underscore-redirects": "^0.3.4", @@ -273,15 +273,15 @@ } }, "node_modules/@astrojs/ts-plugin": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@astrojs/ts-plugin/-/ts-plugin-1.8.0.tgz", - "integrity": "sha512-SXbMemCjA66eHXLon2uDGkLAdbIRS+EzSBKPqBuOcQ4XzU/o+oTTp12cXBIQTOtP/zsnuJPYA6gc36Ylic196g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@astrojs/ts-plugin/-/ts-plugin-1.9.0.tgz", + "integrity": "sha512-QastYNlKF2I0oOksKRm3bG8auk2AlyD6be7ptHzSHKj/ikUvK9ObnS2ruGFh0h8aQ760Qw7aEJ9JZT/IZ7t46A==", "dev": true, "dependencies": { "@astrojs/compiler": "^2.7.0", "@jridgewell/sourcemap-codec": "^1.4.15", - "@volar/language-core": "~2.2.3", - "@volar/typescript": "~2.2.3", + "@volar/language-core": "~2.4.0-alpha.15", + "@volar/typescript": "~2.4.0-alpha.15", "semver": "^7.3.8", "vscode-languageserver-textdocument": "^1.0.11" } @@ -1304,35 +1304,6 @@ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==" }, - "node_modules/@grpc/grpc-js": { - "version": "1.10.10", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.10.tgz", - "integrity": "sha512-HPa/K5NX6ahMoeBv15njAc/sfF4/jmiXLar9UlC2UfHFKZzsCVLc3wbe7+7qua7w9VPh2/L6EBxyAV7/E8Wftg==", - "dependencies": { - "@grpc/proto-loader": "^0.7.13", - "@js-sdsl/ordered-map": "^4.4.2" - }, - "engines": { - "node": ">=12.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", - "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -1856,9 +1827,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", @@ -1869,15 +1840,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", @@ -1903,11 +1865,11 @@ "integrity": "sha512-zjqaTXAtJWEyTECVus5TRpEnLxq3jqSQRr7y4+Iu4iRczun4KixQ7vRa1yObbFi6rgrC60adEYN6kxXON8CAwA==" }, "node_modules/@netlify/functions": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.8.0.tgz", - "integrity": "sha512-kHInQKtMuFlqD7vxaJ8tjd7spv6DTrRuTovvWNDmvwTfkubVfF7KYiypsPR5wkKvSz76GHv86RBCLkjIxvwgDg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.8.1.tgz", + "integrity": "sha512-+6wtYdoz0yE06dSa9XkP47tw5zm6g13QMeCwM3MmHx1vn8hzwFa51JtmfraprdkL7amvb7gaNM+OOhQU1h6T8A==", "dependencies": { - "@netlify/serverless-functions-api": "1.18.4" + "@netlify/serverless-functions-api": "1.19.1" }, "engines": { "node": ">=14.0.0" @@ -1922,16 +1884,11 @@ } }, "node_modules/@netlify/serverless-functions-api": { - "version": "1.18.4", - "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.18.4.tgz", - "integrity": "sha512-5R0kOKrOqhlFFrA7oduzJS+LQRjnX2CX8kJaYI9PQKIpNvzF18n+LNGWTS42YxPfIpAE64yaHbppeAigms2QTw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.19.1.tgz", + "integrity": "sha512-2KYkyluThg1AKfd0JWI7FzpS4A/fzVVGYIf6AM4ydWyNj8eI/86GQVLeRgDoH7CNOxt243R5tutWlmHpVq0/Ew==", "dependencies": { "@netlify/node-cookies": "^0.1.0", - "@opentelemetry/core": "^1.23.0", - "@opentelemetry/otlp-transformer": "^0.52.0", - "@opentelemetry/resources": "^1.23.0", - "@opentelemetry/sdk-node": "^0.52.0", - "@opentelemetry/sdk-trace-node": "^1.24.1", "urlpattern-polyfill": "8.0.2" }, "engines": { @@ -1970,337 +1927,6 @@ "node": ">= 8" } }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz", - "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.25.1.tgz", - "integrity": "sha512-UW/ge9zjvAEmRWVapOP0qyCvPulWU6cQxGxDbWEFfGOj1VBBZAuOqTo3X6yWmDTD3Xe15ysCZChHncr2xFMIfQ==", - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", - "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.25.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.52.1.tgz", - "integrity": "sha512-pVkSH20crBwMTqB3nIN4jpQKUEoB0Z94drIHpYyEqs7UBr+I0cpYyOR3bqjA/UasQUMROb3GX8ZX4/9cVRqGBQ==", - "dependencies": { - "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.25.1", - "@opentelemetry/otlp-grpc-exporter-base": "0.52.1", - "@opentelemetry/otlp-transformer": "0.52.1", - "@opentelemetry/resources": "1.25.1", - "@opentelemetry/sdk-trace-base": "1.25.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.52.1.tgz", - "integrity": "sha512-05HcNizx0BxcFKKnS5rwOV+2GevLTVIRA0tRgWYyw4yCgR53Ic/xk83toYKts7kbzcI+dswInUg/4s8oyA+tqg==", - "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/otlp-exporter-base": "0.52.1", - "@opentelemetry/otlp-transformer": "0.52.1", - "@opentelemetry/resources": "1.25.1", - "@opentelemetry/sdk-trace-base": "1.25.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "node_modules/@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.52.1.tgz", - "integrity": "sha512-pt6uX0noTQReHXNeEslQv7x311/F1gJzMnp1HD2qgypLRPbXDeMzzeTngRTUaUbP6hqWNtPxuLr4DEoZG+TcEQ==", - "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/otlp-exporter-base": "0.52.1", - "@opentelemetry/otlp-transformer": "0.52.1", - "@opentelemetry/resources": "1.25.1", - "@opentelemetry/sdk-trace-base": "1.25.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "node_modules/@opentelemetry/exporter-zipkin": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.25.1.tgz", - "integrity": "sha512-RmOwSvkimg7ETwJbUOPTMhJm9A9bG1U8s7Zo3ajDh4zM7eYcycQ0dM7FbLD6NXWbI2yj7UY4q8BKinKYBQksyw==", - "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/resources": "1.25.1", - "@opentelemetry/sdk-trace-base": "1.25.1", - "@opentelemetry/semantic-conventions": "1.25.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "node_modules/@opentelemetry/instrumentation": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz", - "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==", - "dependencies": { - "@opentelemetry/api-logs": "0.52.1", - "@types/shimmer": "^1.0.2", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.52.1.tgz", - "integrity": "sha512-z175NXOtX5ihdlshtYBe5RpGeBoTXVCKPPLiQlD6FHvpM4Ch+p2B0yWKYSrBfLH24H9zjJiBdTrtD+hLlfnXEQ==", - "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/otlp-transformer": "0.52.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "node_modules/@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.52.1.tgz", - "integrity": "sha512-zo/YrSDmKMjG+vPeA9aBBrsQM9Q/f2zo6N04WMB3yNldJRsgpRBeLLwvAt/Ba7dpehDLOEFBd1i2JCoaFtpCoQ==", - "dependencies": { - "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.25.1", - "@opentelemetry/otlp-exporter-base": "0.52.1", - "@opentelemetry/otlp-transformer": "0.52.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.52.1.tgz", - "integrity": "sha512-I88uCZSZZtVa0XniRqQWKbjAUm73I8tpEy/uJYPPYw5d7BRdVk0RfTBQw8kSUl01oVWEuqxLDa802222MYyWHg==", - "dependencies": { - "@opentelemetry/api-logs": "0.52.1", - "@opentelemetry/core": "1.25.1", - "@opentelemetry/resources": "1.25.1", - "@opentelemetry/sdk-logs": "0.52.1", - "@opentelemetry/sdk-metrics": "1.25.1", - "@opentelemetry/sdk-trace-base": "1.25.1", - "protobufjs": "^7.3.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/propagator-b3": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.25.1.tgz", - "integrity": "sha512-p6HFscpjrv7//kE+7L+3Vn00VEDUJB0n6ZrjkTYHrJ58QZ8B3ajSJhRbCcY6guQ3PDjTbxWklyvIN2ojVbIb1A==", - "dependencies": { - "@opentelemetry/core": "1.25.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.25.1.tgz", - "integrity": "sha512-nBprRf0+jlgxks78G/xq72PipVK+4or9Ypntw0gVZYNTCSK8rg5SeaGV19tV920CMqBD/9UIOiFr23Li/Q8tiA==", - "dependencies": { - "@opentelemetry/core": "1.25.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz", - "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==", - "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/semantic-conventions": "1.25.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-logs": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.52.1.tgz", - "integrity": "sha512-MBYh+WcPPsN8YpRHRmK1Hsca9pVlyyKd4BxOC4SsgHACnl/bPp4Cri9hWhVm5+2tiQ9Zf4qSc1Jshw9tOLGWQA==", - "dependencies": { - "@opentelemetry/api-logs": "0.52.1", - "@opentelemetry/core": "1.25.1", - "@opentelemetry/resources": "1.25.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz", - "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==", - "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/resources": "1.25.1", - "lodash.merge": "^4.6.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-node": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.52.1.tgz", - "integrity": "sha512-uEG+gtEr6eKd8CVWeKMhH2olcCHM9dEK68pe0qE0be32BcCRsvYURhHaD1Srngh1SQcnQzZ4TP324euxqtBOJA==", - "dependencies": { - "@opentelemetry/api-logs": "0.52.1", - "@opentelemetry/core": "1.25.1", - "@opentelemetry/exporter-trace-otlp-grpc": "0.52.1", - "@opentelemetry/exporter-trace-otlp-http": "0.52.1", - "@opentelemetry/exporter-trace-otlp-proto": "0.52.1", - "@opentelemetry/exporter-zipkin": "1.25.1", - "@opentelemetry/instrumentation": "0.52.1", - "@opentelemetry/resources": "1.25.1", - "@opentelemetry/sdk-logs": "0.52.1", - "@opentelemetry/sdk-metrics": "1.25.1", - "@opentelemetry/sdk-trace-base": "1.25.1", - "@opentelemetry/sdk-trace-node": "1.25.1", - "@opentelemetry/semantic-conventions": "1.25.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.1.tgz", - "integrity": "sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==", - "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/resources": "1.25.1", - "@opentelemetry/semantic-conventions": "1.25.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.25.1.tgz", - "integrity": "sha512-nMcjFIKxnFqoez4gUmihdBrbpsEnAX/Xj16sGvZm+guceYE0NE00vLhpDVK6f3q8Q4VFI5xG8JjlXKMB/SkTTQ==", - "dependencies": { - "@opentelemetry/context-async-hooks": "1.25.1", - "@opentelemetry/core": "1.25.1", - "@opentelemetry/propagator-b3": "1.25.1", - "@opentelemetry/propagator-jaeger": "1.25.1", - "@opentelemetry/sdk-trace-base": "1.25.1", - "semver": "^7.5.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", - "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==", - "engines": { - "node": ">=14" - } - }, "node_modules/@phosphor-icons/react": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/@phosphor-icons/react/-/react-2.1.7.tgz", @@ -2661,60 +2287,6 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, "node_modules/@radix-ui/number": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", @@ -3931,9 +3503,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", - "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz", + "integrity": "sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==", "cpu": [ "arm" ], @@ -3943,9 +3515,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", - "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz", + "integrity": "sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==", "cpu": [ "arm64" ], @@ -3955,9 +3527,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", - "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz", + "integrity": "sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==", "cpu": [ "arm64" ], @@ -3967,9 +3539,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", - "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz", + "integrity": "sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==", "cpu": [ "x64" ], @@ -3979,9 +3551,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", - "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz", + "integrity": "sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==", "cpu": [ "arm" ], @@ -3991,9 +3563,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", - "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz", + "integrity": "sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==", "cpu": [ "arm" ], @@ -4003,9 +3575,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", - "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz", + "integrity": "sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==", "cpu": [ "arm64" ], @@ -4015,9 +3587,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", - "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz", + "integrity": "sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==", "cpu": [ "arm64" ], @@ -4027,9 +3599,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", - "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz", + "integrity": "sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==", "cpu": [ "ppc64" ], @@ -4039,9 +3611,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", - "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz", + "integrity": "sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==", "cpu": [ "riscv64" ], @@ -4051,9 +3623,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", - "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz", + "integrity": "sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==", "cpu": [ "s390x" ], @@ -4063,9 +3635,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", - "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz", + "integrity": "sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==", "cpu": [ "x64" ], @@ -4075,9 +3647,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", - "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz", + "integrity": "sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==", "cpu": [ "x64" ], @@ -4087,9 +3659,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", - "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz", + "integrity": "sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==", "cpu": [ "arm64" ], @@ -4099,9 +3671,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", - "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz", + "integrity": "sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==", "cpu": [ "ia32" ], @@ -4111,9 +3683,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", - "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz", + "integrity": "sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==", "cpu": [ "x64" ], @@ -4123,9 +3695,12 @@ ] }, "node_modules/@shikijs/core": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.10.1.tgz", - "integrity": "sha512-qdiJS5a/QGCff7VUFIqd0hDdWly9rDp8lhVmXVrS11aazX8LOTRLHAXkkEeONNsS43EcCd7gax9LLoOz4vlFQA==" + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.10.3.tgz", + "integrity": "sha512-D45PMaBaeDHxww+EkcDQtDAtzv00Gcsp72ukBtaLSmqRvh0WgGMq3Al0rl1QQBZfuneO75NXMIzEZGFitThWbg==", + "dependencies": { + "@types/hast": "^3.0.4" + } }, "node_modules/@supabase/auth-js": { "version": "2.64.2", @@ -4372,9 +3947,9 @@ } }, "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "version": "20.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", + "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", "dependencies": { "undici-types": "~5.26.4" } @@ -4440,11 +4015,6 @@ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" }, - "node_modules/@types/shimmer": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.5.tgz", - "integrity": "sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==" - }, "node_modules/@types/unist": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", @@ -4465,16 +4035,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.15.0.tgz", - "integrity": "sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.0.tgz", + "integrity": "sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.15.0", - "@typescript-eslint/type-utils": "7.15.0", - "@typescript-eslint/utils": "7.15.0", - "@typescript-eslint/visitor-keys": "7.15.0", + "@typescript-eslint/scope-manager": "7.16.0", + "@typescript-eslint/type-utils": "7.16.0", + "@typescript-eslint/utils": "7.16.0", + "@typescript-eslint/visitor-keys": "7.16.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4498,15 +4068,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.15.0.tgz", - "integrity": "sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.0.tgz", + "integrity": "sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.15.0", - "@typescript-eslint/types": "7.15.0", - "@typescript-eslint/typescript-estree": "7.15.0", - "@typescript-eslint/visitor-keys": "7.15.0", + "@typescript-eslint/scope-manager": "7.16.0", + "@typescript-eslint/types": "7.16.0", + "@typescript-eslint/typescript-estree": "7.16.0", + "@typescript-eslint/visitor-keys": "7.16.0", "debug": "^4.3.4" }, "engines": { @@ -4526,13 +4096,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz", - "integrity": "sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.0.tgz", + "integrity": "sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.15.0", - "@typescript-eslint/visitor-keys": "7.15.0" + "@typescript-eslint/types": "7.16.0", + "@typescript-eslint/visitor-keys": "7.16.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4543,13 +4113,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.15.0.tgz", - "integrity": "sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.0.tgz", + "integrity": "sha512-j0fuUswUjDHfqV/UdW6mLtOQQseORqfdmoBNDFOqs9rvNVR2e+cmu6zJu/Ku4SDuqiJko6YnhwcL8x45r8Oqxg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.15.0", - "@typescript-eslint/utils": "7.15.0", + "@typescript-eslint/typescript-estree": "7.16.0", + "@typescript-eslint/utils": "7.16.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4570,9 +4140,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz", - "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.0.tgz", + "integrity": "sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4583,13 +4153,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz", - "integrity": "sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.0.tgz", + "integrity": "sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.15.0", - "@typescript-eslint/visitor-keys": "7.15.0", + "@typescript-eslint/types": "7.16.0", + "@typescript-eslint/visitor-keys": "7.16.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4611,15 +4181,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.15.0.tgz", - "integrity": "sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.0.tgz", + "integrity": "sha512-PqP4kP3hb4r7Jav+NiRCntlVzhxBNWq6ZQ+zQwII1y/G/1gdIPeYDCKr2+dH6049yJQsWZiHU6RlwvIFBXXGNA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.15.0", - "@typescript-eslint/types": "7.15.0", - "@typescript-eslint/typescript-estree": "7.15.0" + "@typescript-eslint/scope-manager": "7.16.0", + "@typescript-eslint/types": "7.16.0", + "@typescript-eslint/typescript-estree": "7.16.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4633,12 +4203,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz", - "integrity": "sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.0.tgz", + "integrity": "sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/types": "7.16.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -4787,31 +4357,29 @@ } }, "node_modules/@volar/language-core": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.2.5.tgz", - "integrity": "sha512-2htyAuxRrAgETmFeUhT4XLELk3LiEcqoW/B8YUXMF6BrGWLMwIR09MFaZYvrA2UhbdAeSyeQ726HaWSWkexUcQ==", + "version": "2.4.0-alpha.15", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.15.tgz", + "integrity": "sha512-mt8z4Fm2WxfQYoQHPcKVjLQV6PgPqyKLbkCVY2cr5RSaamqCHjhKEpsFX66aL4D/7oYguuaUw9Bx03Vt0TpIIA==", "dev": true, "dependencies": { - "@volar/source-map": "2.2.5" + "@volar/source-map": "2.4.0-alpha.15" } }, "node_modules/@volar/source-map": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.2.5.tgz", - "integrity": "sha512-wrOEIiZNf4E+PWB0AxyM4tfhkfldPsb3bxg8N6FHrxJH2ohar7aGu48e98bp3pR9HUA7P/pR9VrLmkTrgCCnWQ==", - "dev": true, - "dependencies": { - "muggle-string": "^0.4.0" - } + "version": "2.4.0-alpha.15", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.15.tgz", + "integrity": "sha512-8Htngw5TmBY4L3ClDqBGyfLhsB8EmoEXUH1xydyEtEoK0O6NX5ur4Jw8jgvscTlwzizyl/wsN1vn0cQXVbbXYg==", + "dev": true }, "node_modules/@volar/typescript": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.2.5.tgz", - "integrity": "sha512-eSV/n75+ppfEVugMC/salZsI44nXDPAyL6+iTYCNLtiLHGJsnMv9GwiDMujrvAUj/aLQyqRJgYtXRoxop2clCw==", + "version": "2.4.0-alpha.15", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.15.tgz", + "integrity": "sha512-U3StRBbDuxV6Woa4hvGS4kz3XcOzrWUKgFdEFN+ba1x3eaYg7+ytau8ul05xgA+UNGLXXsKur7fTUhDFyISk0w==", "dev": true, "dependencies": { - "@volar/language-core": "2.2.5", - "path-browserify": "^1.0.1" + "@volar/language-core": "2.4.0-alpha.15", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" } }, "node_modules/abbrev": { @@ -5161,9 +4729,9 @@ } }, "node_modules/astro": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/astro/-/astro-4.11.4.tgz", - "integrity": "sha512-jSCnPD+r4MO5Pxl04XfCydzZiL/p70q1ddYind02JDGQDLlps4d2s/AfT/7be12gf1PpR13ACcvO6aJFUIVQXA==", + "version": "4.11.5", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.11.5.tgz", + "integrity": "sha512-TCRhuaLwrxwMhS8S1GG+ZTdrAXigX9C8E/YUTs/r2t+owHxDgwl86IV9xH1IHrCPoqhK6civyAQNOT+GKmkb0A==", "dependencies": { "@astrojs/compiler": "^2.8.1", "@astrojs/internal-helpers": "0.4.1", @@ -5805,9 +5373,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "funding": [ { "type": "opencollective", @@ -5823,10 +5391,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -5873,9 +5441,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001640", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", - "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", + "version": "1.0.30001641", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001641.tgz", + "integrity": "sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==", "funding": [ { "type": "opencollective", @@ -6014,11 +5582,6 @@ "node": ">=8" } }, - "node_modules/cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==" - }, "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", @@ -6060,102 +5623,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cliui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cliui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/clsx": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", @@ -6695,9 +6162,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.816", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz", - "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==" + "version": "1.4.825", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.825.tgz", + "integrity": "sha512-OCcF+LwdgFGcsYPYC5keEEFC2XT0gBhrYbeGzHCx7i9qRFbzO/AqTmc/C/1xNhJj+JA7rzlN7mpBuStshh96Cg==" }, "node_modules/emoji-regex": { "version": "10.3.0", @@ -7311,9 +6778,9 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -7740,14 +7207,6 @@ "node": ">=6.9.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/get-east-asian-width": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", @@ -8330,17 +7789,6 @@ "node": ">=4" } }, - "node_modules/import-in-the-middle": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.8.1.tgz", - "integrity": "sha512-yhRwoHtiLGvmSozNOALgjRPFI6uYsds60EoMqqnXyyv+JOIW/BrrLejuTGBt+bq0T5tLzOHrN0T7xYTm4Qt/ng==", - "dependencies": { - "acorn": "^8.8.2", - "acorn-import-attributes": "^1.9.5", - "cjs-module-lexer": "^1.2.2", - "module-details-from-path": "^1.0.3" - } - }, "node_modules/import-meta-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", @@ -9100,11 +8548,6 @@ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -9118,7 +8561,8 @@ "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, "node_modules/lodash.range": { "version": "3.2.0", @@ -9167,11 +8611,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -9581,9 +9020,9 @@ } }, "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz", - "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", @@ -9596,9 +9035,9 @@ } }, "node_modules/micromark-extension-gfm-footnote": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz", - "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", @@ -9615,9 +9054,9 @@ } }, "node_modules/micromark-extension-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", @@ -9632,9 +9071,9 @@ } }, "node_modules/micromark-extension-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", - "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -9660,9 +9099,9 @@ } }, "node_modules/micromark-extension-gfm-task-list-item": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz", - "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -10146,11 +9585,6 @@ "node": ">=10" } }, - "node_modules/module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" - }, "node_modules/moment": { "version": "2.30.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", @@ -10172,12 +9606,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/muggle-string": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", - "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", - "dev": true - }, "node_modules/namespace-emitter": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz", @@ -10967,31 +10395,19 @@ } }, "node_modules/preferred-pm": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.1.3.tgz", - "integrity": "sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.1.4.tgz", + "integrity": "sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==", "dependencies": { "find-up": "^5.0.0", "find-yarn-workspace-root2": "1.2.16", "path-exists": "^4.0.0", - "which-pm": "2.0.0" + "which-pm": "^2.2.0" }, "engines": { "node": ">=10" } }, - "node_modules/preferred-pm/node_modules/which-pm": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-2.0.0.tgz", - "integrity": "sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==", - "dependencies": { - "load-yaml-file": "^0.2.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8.15" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -11048,29 +10464,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/protobufjs": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", - "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -11081,9 +10474,9 @@ } }, "node_modules/qs": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.2.tgz", - "integrity": "sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz", + "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==", "dependencies": { "side-channel": "^1.0.6" }, @@ -11512,9 +10905,9 @@ } }, "node_modules/remark-smartypants": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.1.tgz", - "integrity": "sha512-qyshfCl2eLO0i0558e79ZJsfojC5wjnYLByjt0FmjJQN6aYwcRxpoj784LZJSoWCdnA2ubh5rLNGb8Uur/wDng==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", + "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", "dependencies": { "retext": "^9.0.0", "retext-smartypants": "^6.0.0", @@ -11539,27 +10932,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-in-the-middle": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.3.0.tgz", - "integrity": "sha512-nQFEv9gRw6SJAwWD2LrL0NmQvAcO7FBwJbwmr2ttPAacfy0xuiOjE5zt+zM4xDyuyvUaxBi/9gb2SoCyNEVJcw==", - "dependencies": { - "debug": "^4.1.1", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=8.6.0" - } - }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -11716,9 +11088,9 @@ } }, "node_modules/rollup": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", - "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.1.tgz", + "integrity": "sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==", "dependencies": { "@types/estree": "1.0.5" }, @@ -11730,22 +11102,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.0", - "@rollup/rollup-android-arm64": "4.18.0", - "@rollup/rollup-darwin-arm64": "4.18.0", - "@rollup/rollup-darwin-x64": "4.18.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", - "@rollup/rollup-linux-arm-musleabihf": "4.18.0", - "@rollup/rollup-linux-arm64-gnu": "4.18.0", - "@rollup/rollup-linux-arm64-musl": "4.18.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", - "@rollup/rollup-linux-riscv64-gnu": "4.18.0", - "@rollup/rollup-linux-s390x-gnu": "4.18.0", - "@rollup/rollup-linux-x64-gnu": "4.18.0", - "@rollup/rollup-linux-x64-musl": "4.18.0", - "@rollup/rollup-win32-arm64-msvc": "4.18.0", - "@rollup/rollup-win32-ia32-msvc": "4.18.0", - "@rollup/rollup-win32-x64-msvc": "4.18.0", + "@rollup/rollup-android-arm-eabi": "4.18.1", + "@rollup/rollup-android-arm64": "4.18.1", + "@rollup/rollup-darwin-arm64": "4.18.1", + "@rollup/rollup-darwin-x64": "4.18.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.1", + "@rollup/rollup-linux-arm-musleabihf": "4.18.1", + "@rollup/rollup-linux-arm64-gnu": "4.18.1", + "@rollup/rollup-linux-arm64-musl": "4.18.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.1", + "@rollup/rollup-linux-riscv64-gnu": "4.18.1", + "@rollup/rollup-linux-s390x-gnu": "4.18.1", + "@rollup/rollup-linux-x64-gnu": "4.18.1", + "@rollup/rollup-linux-x64-musl": "4.18.1", + "@rollup/rollup-win32-arm64-msvc": "4.18.1", + "@rollup/rollup-win32-ia32-msvc": "4.18.1", + "@rollup/rollup-win32-x64-msvc": "4.18.1", "fsevents": "~2.3.2" } }, @@ -12003,18 +11375,14 @@ } }, "node_modules/shiki": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.10.1.tgz", - "integrity": "sha512-uafV7WCgN4YYrccH6yxpnps6k38sSTlFRrwc4jycWmhWxJIm9dPrk+XkY1hZ2t0I7jmacMNb15Lf2fspa/Y3lg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.10.3.tgz", + "integrity": "sha512-eneCLncGuvPdTutJuLyUGS8QNPAVFO5Trvld2wgEq1e002mwctAhJKeMGWtWVXOIEzmlcLRqcgPSorR6AVzOmQ==", "dependencies": { - "@shikijs/core": "1.10.1" + "@shikijs/core": "1.10.3", + "@types/hast": "^3.0.4" } }, - "node_modules/shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" - }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", @@ -13432,6 +12800,12 @@ "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==", "dev": true }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true + }, "node_modules/web-namespaces": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", @@ -13716,9 +13090,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, @@ -13735,14 +13109,6 @@ } } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -13756,23 +13122,6 @@ "node": ">= 6" } }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", @@ -13781,43 +13130,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yocto-queue": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", diff --git a/src/apps/annotation-image/IIIF/IIIFThumbnail.tsx b/src/apps/annotation-image/IIIF/IIIFThumbnail.tsx index 928e9fc7..fd7aba9e 100644 --- a/src/apps/annotation-image/IIIF/IIIFThumbnail.tsx +++ b/src/apps/annotation-image/IIIF/IIIFThumbnail.tsx @@ -1,14 +1,14 @@ -import type { Resource } from 'manifesto.js'; +import type { Canvas } from '@allmaps/iiif-parser'; interface IIIFThumnailProps { - image: Resource; + canvas: Canvas; } export const IIIFThumbnail = (props: IIIFThumnailProps) => { - const src = `${props.image.getServices()[0].id}/full/120,/0/default.jpg`; + const src = `${props.canvas.image.uri}/full/120,/0/default.jpg`; return (
diff --git a/src/apps/annotation-image/IIIF/IIIFThumbnailStrip.tsx b/src/apps/annotation-image/IIIF/IIIFThumbnailStrip.tsx index a83f5646..b13737c3 100644 --- a/src/apps/annotation-image/IIIF/IIIFThumbnailStrip.tsx +++ b/src/apps/annotation-image/IIIF/IIIFThumbnailStrip.tsx @@ -1,47 +1,39 @@ -import type { Resource, Sequence } from 'manifesto.js'; +import type { Canvas } from '@allmaps/iiif-parser'; import { FixedSizeList } from 'react-window'; import AutoSizer from 'react-virtualized-auto-sizer'; -import { getImageManifestURL } from './useIIIF'; import { IIIFThumbnail } from './IIIFThumbnail'; +import { getCanvasLabel } from 'src/util'; +import type { Translations } from 'src/Types'; import './IIIFThumbnailStrip.css'; interface IIIFThumbnailStripProps { + canvases: Canvas[]; + currentImage?: string; - sequence?: Sequence; + i18n: Translations; onSelect(url: string): void; } -interface Thumbnail { - - resource: Resource; - - label: string | null; - -} - export const IIIFThumbnailStrip = (props: IIIFThumbnailStripProps) => { - const thumbnails = props.sequence ? props.sequence.getCanvases().reduce((all, canvas) => { - return [...all, ...canvas.getImages().map(i => ({ label: canvas.getLabel().getValue(), resource: i.getResource() }))]; - }, []) : []; - - const isSelected = (resource: Resource) => - getImageManifestURL(resource) === props.currentImage; + const isSelected = (canvas: Canvas) => props.currentImage?.startsWith(canvas.image.uri); const Row = ({ index, style }: { index: number, style: React.CSSProperties}) => { - const { resource, label } = thumbnails[index]; + const canvas = props.canvases[index]; + + const label = getCanvasLabel(canvas.label, props.i18n.lang); return (
props.onSelect(getImageManifestURL(resource))}> - + onClick={() => props.onSelect(`${canvas.image.uri}/info.json`)}> + {label}
) @@ -52,7 +44,7 @@ export const IIIFThumbnailStrip = (props: IIIFThumbnailStripProps) => { {({ height, width }) => ( {Row} diff --git a/src/apps/annotation-image/IIIF/useIIIF.ts b/src/apps/annotation-image/IIIF/useIIIF.ts index 25b960ee..000f94be 100644 --- a/src/apps/annotation-image/IIIF/useIIIF.ts +++ b/src/apps/annotation-image/IIIF/useIIIF.ts @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import { Utils, Manifest, Resource, Sequence } from 'manifesto.js'; +import { Canvas, IIIF } from '@allmaps/iiif-parser'; import type { DocumentWithContext } from 'src/Types'; import { supabase } from '@backend/supabaseBrowserClient'; @@ -8,23 +8,9 @@ type ManifestType = 'PRESENTATION' | 'IMAGE'; const CANTALOUPE_PATH: string | undefined = import.meta.env .PUBLIC_IIIF_CANTALOUPE_PATH; -// Performs a simple sanity check -const isSupported = (manifest: Manifest) => { - // Require exactly one sequence - if (!manifest?.getSequences() || manifest.getSequences().length !== 1) - return false; - - const canvases = manifest.getSequences()[0].getCanvases(); - - // Require a list of canvases, with length > 0 - if (!canvases || !Array.isArray(canvases) || canvases.length === 0) - return false; - - return true; -}; - export const useIIIF = (document: DocumentWithContext) => { - const [sequence, setSequence] = useState(); + + const [canvases, setCanvases] = useState([]); const [currentImage, setCurrentImage] = useState(); @@ -34,12 +20,6 @@ export const useIIIF = (document: DocumentWithContext) => { const [manifestType, setManifestType] = useState(); - const images = sequence - ? sequence.getCanvases().reduce((images, canvas) => { - return [...images, ...canvas.getImages().map((i) => i.getResource())]; - }, []) - : []; - useEffect(() => { const isUploadedFile = document.content_type?.startsWith('image/'); @@ -74,29 +54,17 @@ export const useIIIF = (document: DocumentWithContext) => { setManifestType('IMAGE'); } } else { - Utils.loadManifest(url) - .then((data) => { - const manifest = Utils.parseManifest(data) as Manifest; - - if (isSupported(manifest)) { - const sequence = manifest.getSequences()[0]; - - const firstImage = getImageManifestURL( - sequence.getCanvases()[0].getImages()[0].getResource() - ); - - setSequence(sequence); - setCurrentImage(firstImage); - setManifestType('PRESENTATION'); - } else { - console.log('unsupported manifest'); - - setManifestError(`Unsupported IIIF manifest: ${url}`); - } - }) - .catch((error) => { - console.error('Error loading manifest', error); - }); + fetch(url).then(res => res.json()).then(data => { + const parsed = IIIF.parse(data); + if (parsed.type === 'manifest') { + setCanvases(parsed.canvases); + setCurrentImage(`${parsed.canvases[0]?.image.uri}/info.json`); + setManifestType('PRESENTATION'); + } else { + console.log('Failed to parse IIIF manifest', parsed); + setManifestError(`Failed to parse IIIF manifest: ${url}`); + } + }); } }, [document]); @@ -106,25 +74,26 @@ export const useIIIF = (document: DocumentWithContext) => { const isImageManifest = manifestType === 'IMAGE'; const next = () => { - if (!currentImage || images.length === 0) return; + if (!currentImage || canvases.length === 0) return; - const idx = images.findIndex((resource) => resource.id === currentImage); - const nextIdx = Math.min(idx + 1, images.length - 1); + const idx = canvases.findIndex(c => `${c.image.uri}/info.json` === currentImage); + const nextIdx = Math.min(idx + 1, canvases.length - 1); - setCurrentImage(images[nextIdx].id); + setCurrentImage(`${canvases[nextIdx].image.uri}/info.json`); }; const previous = () => { - if (!currentImage || images.length === 0) return; + if (!currentImage || canvases.length === 0) return; - const idx = images.findIndex((resource) => resource.id === currentImage); + const idx = canvases.findIndex(c => `${c.image.uri}/info.json` === currentImage); const nextIdx = Math.max(0, idx - 1); - setCurrentImage(images[nextIdx].id); + setCurrentImage(`${canvases[nextIdx].image.uri}/info.json`); }; return { authToken, + canvases, currentImage, isPresentationManifest, isImageManifest, @@ -132,9 +101,5 @@ export const useIIIF = (document: DocumentWithContext) => { next, previous, setCurrentImage, - sequence, }; }; - -export const getImageManifestURL = (image: Resource) => - `${image.getServices()[0].id}/info.json`; diff --git a/src/apps/annotation-image/ImageAnnotationDesktop.tsx b/src/apps/annotation-image/ImageAnnotationDesktop.tsx index a733552e..6e2ff8a6 100644 --- a/src/apps/annotation-image/ImageAnnotationDesktop.tsx +++ b/src/apps/annotation-image/ImageAnnotationDesktop.tsx @@ -58,9 +58,9 @@ export const ImageAnnotationDesktop = (props: ImageAnnotationProps) => { const { authToken, + canvases, isPresentationManifest, manifestError, - sequence, currentImage, setCurrentImage } = useIIIF(props.document); @@ -162,6 +162,7 @@ export const ImageAnnotationDesktop = (props: ImageAnnotationProps) => { id: l.id, document_id: l.document_id, is_active: false, + project_id: props.document.context.project_id })); setLayers([...props.document.layers, ...toAdd]); @@ -248,9 +249,9 @@ export const ImageAnnotationDesktop = (props: ImageAnnotationProps) => {
{ present={props.present} /> ) : ( )}
diff --git a/src/apps/annotation-text/TextAnnotationDesktop.tsx b/src/apps/annotation-text/TextAnnotationDesktop.tsx index 27ff1964..0f469566 100644 --- a/src/apps/annotation-text/TextAnnotationDesktop.tsx +++ b/src/apps/annotation-text/TextAnnotationDesktop.tsx @@ -131,6 +131,7 @@ export const TextAnnotationDesktop = (props: TextAnnotationProps) => { id: l.id, document_id: l.document_id, is_active: false, + project_id: props.document.context.project_id })); setLayers([...props.document.layers, ...toAdd]); diff --git a/src/apps/project-home/upload/dialogs/useIIIFValidation.ts b/src/apps/project-home/upload/dialogs/useIIIFValidation.ts index 3f8b4c77..56b80b68 100644 --- a/src/apps/project-home/upload/dialogs/useIIIFValidation.ts +++ b/src/apps/project-home/upload/dialogs/useIIIFValidation.ts @@ -1,5 +1,6 @@ import { useEffect, useState } from 'react'; -import { IIIF, type LanguageString } from '@allmaps/iiif-parser'; +import { IIIF } from '@allmaps/iiif-parser'; +import { getCanvasLabel } from 'src/util'; import type { Translations } from 'src/Types'; /** @@ -37,29 +38,6 @@ interface ValidationResult { } -const getDefaultLabel = (dict: LanguageString | undefined, lang: string) => { - if (!dict) - return; - - const localized = dict[lang]; - if (localized) { - return localized[0]; - } else { - // Fallback #1 - const en = dict['en']; - if (en) { - return en[0]; - } else { - // Fallback #2 - const values = Object.values(dict).reduce((flattened, value) => { - return Array.isArray(value) ? [...flattened, ...value] : [...flattened, value] - }, []); - - return values.length > 0 ? values[0] : undefined; - } - } -} - export const validateIIIF = (url: string, i18n: Translations): Promise => { if (isValidHTTPSURL(url)) { return fetch(url) @@ -79,7 +57,7 @@ export const validateIIIF = (url: string, i18n: Translations): Promise { + if (!dict) + return; + + const localized = dict[lang]; + if (localized) { + return localized[0]; + } else { + // Fallback #1 + const en = dict['en']; + if (en) { + return en[0]; + } else { + // Fallback #2 + const values = Object.values(dict).reduce((flattened, value) => { + return Array.isArray(value) ? [...flattened, ...value] : [...flattened, value] + }, []); + + return values.length > 0 ? values[0] : undefined; + } + } +} \ No newline at end of file diff --git a/src/util/iiif/index.ts b/src/util/iiif/index.ts new file mode 100644 index 00000000..c1257101 --- /dev/null +++ b/src/util/iiif/index.ts @@ -0,0 +1 @@ +export * from './getCanvasLabel'; \ No newline at end of file diff --git a/src/util/index.ts b/src/util/index.ts index 1aee50ce..8d16f489 100644 --- a/src/util/index.ts +++ b/src/util/index.ts @@ -1 +1,2 @@ -export * from './export/tei'; \ No newline at end of file +export * from './export'; +export * from './iiif'; \ No newline at end of file From c714c64678207b150e10ef0c77a33b3f8fe936f8 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Thu, 11 Jul 2024 09:29:19 +0200 Subject: [PATCH 07/53] Dropped unused manifest.js dependency --- package-lock.json | 40 ---------------------------------------- package.json | 1 - 2 files changed, 41 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4855030..4d48df2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,7 +50,6 @@ "date-fns": "^3.6.0", "formik": "2.4.6", "linkedom": "0.18.4", - "manifesto.js": "4.2.17", "moment": "^2.30.1", "openseadragon": "4.0.0", "papaparse": "5.4.1", @@ -674,11 +673,6 @@ "node": ">=6.9.0" } }, - "node_modules/@edsilv/http-status-codes": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@edsilv/http-status-codes/-/http-status-codes-1.0.3.tgz", - "integrity": "sha512-HLK2FS5sZqxPqD53D6hhZxC6C8THTVwlyZDZ7J0iWsrB8JmMA69m/CQuNKZc1kki9WSVeck2fXna26NL0SE7cg==" - }, "node_modules/@emnapi/runtime": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", @@ -1361,11 +1355,6 @@ "deprecated": "Use @eslint/object-schema instead", "dev": true }, - "node_modules/@iiif/vocabulary": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/@iiif/vocabulary/-/vocabulary-1.0.26.tgz", - "integrity": "sha512-yOsMDg5C90iMfD5HSydoTDzmOM/ki5zGiu4DbHpzRueM7D+12IcDHeai2A8QvEroS8HCJl5M1Edbju5rOlPIpg==" - }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.33.4", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz", @@ -8337,15 +8326,6 @@ "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==" }, - "node_modules/isomorphic-unfetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", - "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", - "dependencies": { - "node-fetch": "^2.6.1", - "unfetch": "^4.2.0" - } - }, "node_modules/iterator.prototype": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", @@ -8669,21 +8649,6 @@ "semver": "bin/semver.js" } }, - "node_modules/manifesto.js": { - "version": "4.2.17", - "resolved": "https://registry.npmjs.org/manifesto.js/-/manifesto.js-4.2.17.tgz", - "integrity": "sha512-UjctsJ2PkgwGDUQ/ZzvyObXJO/yiFYwiz49xrzkayi9fhrwUVC3Vc0aQyGm723BZTl5nKYJQ8YdEhJRp08xOtA==", - "dependencies": { - "@edsilv/http-status-codes": "^1.0.3", - "@iiif/vocabulary": "^1.0.26", - "isomorphic-unfetch": "^3.0.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=8.9.1", - "npm": ">=3.10.8" - } - }, "node_modules/markdown-table": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", @@ -12016,11 +11981,6 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, - "node_modules/unfetch": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", - "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" - }, "node_modules/unified": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", diff --git a/package.json b/package.json index b415c262..48fcd39a 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,6 @@ "date-fns": "^3.6.0", "formik": "2.4.6", "linkedom": "0.18.4", - "manifesto.js": "4.2.17", "moment": "^2.30.1", "openseadragon": "4.0.0", "papaparse": "5.4.1", From 332d8189e22a4381eed511d73f76e3b8f6169d8c Mon Sep 17 00:00:00 2001 From: lorinjameson Date: Thu, 11 Jul 2024 13:14:36 -0400 Subject: [PATCH 08/53] Doc lib fixes --- .../DocumentLibrary/DocumentLibrary.tsx | 53 +++++++++++++++++-- .../LoadingOverlay/LoadingOverlay.css | 8 +-- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/components/DocumentLibrary/DocumentLibrary.tsx b/src/components/DocumentLibrary/DocumentLibrary.tsx index ebffe2f9..faf803a2 100644 --- a/src/components/DocumentLibrary/DocumentLibrary.tsx +++ b/src/components/DocumentLibrary/DocumentLibrary.tsx @@ -24,6 +24,7 @@ import { PublicWarningMessage } from './PublicWarningMessage'; import { DocumentTable } from './DocumentTable'; import { CollectionDocumentActions } from './CollectionDocumentActions'; import { CheckCircle } from '@phosphor-icons/react'; +import { LoadingOverlay } from '@components/LoadingOverlay'; export type LibraryDocument = Pick< Document, @@ -61,6 +62,8 @@ export interface DocumentLibraryProps { isAdmin: boolean | undefined; } +const DOCUMENTS_PER_FETCH = 1000; + export const DocumentLibrary = (props: DocumentLibraryProps) => { const { t } = props.i18n; const { UploadActions } = props; @@ -83,6 +86,7 @@ export const DocumentLibrary = (props: DocumentLibraryProps) => { Document | undefined >(); const [publicWarningOpen, setPublicWarningOpen] = useState(false); + const [loading, setLoading] = useState(false); const handleTogglePrivate = (document: Document) => { if (document.is_private) { @@ -176,13 +180,53 @@ export const DocumentLibrary = (props: DocumentLibraryProps) => { useEffect(() => { async function getDocuments() { - const resp = await supabase + setLoading(true); + const countResp = await supabase .from('documents') - .select( - 'id,created_at,created_by,updated_at,updated_by,name,bucket_id,content_type,meta_data, is_private, collection_id, collection_metadata' + .select('*', { count: 'exact', head: true }); + + if (countResp.error) { + console.log('Error retrieving document count'); + setLoading(false); + setDocuments([]); + } else { + let docs: LibraryDocument[] = []; + + let start = 0; + const iterations = Math.ceil( + (countResp?.count || 0) / DOCUMENTS_PER_FETCH + ); + + console.log( + `Fetch Iterations: ${iterations}, count: ${countResp?.count}, DOCUMENTS_PER_FETCH: ${DOCUMENTS_PER_FETCH} ` ); - setDocuments(resp.data); + for (let i = 0; i < iterations; i++) { + const docsResp = await supabase + .from('documents') + .select( + 'id,created_at,created_by,updated_at,updated_by,name,bucket_id,content_type,meta_data, is_private, collection_id, collection_metadata' + ) + .range(start, start + DOCUMENTS_PER_FETCH - 1); + + if (docsResp.error) { + console.error( + 'Error retrieving collection documents: ', + docsResp.error + ); + + setLoading(false); + setDocuments(docs); + return; + } + + docs = [...docs, ...docsResp.data]; + start += DOCUMENTS_PER_FETCH; + } + + setLoading(false); + setDocuments(docs); + } } if (!documents) { @@ -574,6 +618,7 @@ export const DocumentLibrary = (props: DocumentLibraryProps) => { return ( <> + {loading && props.open && } diff --git a/src/components/LoadingOverlay/LoadingOverlay.css b/src/components/LoadingOverlay/LoadingOverlay.css index 38fa06ef..cfb784af 100644 --- a/src/components/LoadingOverlay/LoadingOverlay.css +++ b/src/components/LoadingOverlay/LoadingOverlay.css @@ -2,11 +2,11 @@ align-items: center; background-color: rgba(255, 255, 255, 0.75); display: flex; - height: 100%; + height: 100vh; justify-content: center; left: 0; - position: absolute; + position: fixed; top: 0; - width: 100%; + width: 100vw; z-index: 99999; -} \ No newline at end of file +} From 06a9e1ae4b419a5efb12a2d07e2d4dae8737d228 Mon Sep 17 00:00:00 2001 From: lorinjameson Date: Thu, 11 Jul 2024 13:18:01 -0400 Subject: [PATCH 09/53] remove logging --- src/components/DocumentLibrary/DocumentLibrary.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/DocumentLibrary/DocumentLibrary.tsx b/src/components/DocumentLibrary/DocumentLibrary.tsx index faf803a2..ca61a914 100644 --- a/src/components/DocumentLibrary/DocumentLibrary.tsx +++ b/src/components/DocumentLibrary/DocumentLibrary.tsx @@ -196,11 +196,6 @@ export const DocumentLibrary = (props: DocumentLibraryProps) => { const iterations = Math.ceil( (countResp?.count || 0) / DOCUMENTS_PER_FETCH ); - - console.log( - `Fetch Iterations: ${iterations}, count: ${countResp?.count}, DOCUMENTS_PER_FETCH: ${DOCUMENTS_PER_FETCH} ` - ); - for (let i = 0; i < iterations; i++) { const docsResp = await supabase .from('documents') From 4885184679a37df02b0bcdaefa96f3f4c8e5b936 Mon Sep 17 00:00:00 2001 From: lorinjameson Date: Thu, 11 Jul 2024 13:19:08 -0400 Subject: [PATCH 10/53] Log fix --- src/components/DocumentLibrary/DocumentLibrary.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/DocumentLibrary/DocumentLibrary.tsx b/src/components/DocumentLibrary/DocumentLibrary.tsx index ca61a914..22e838c9 100644 --- a/src/components/DocumentLibrary/DocumentLibrary.tsx +++ b/src/components/DocumentLibrary/DocumentLibrary.tsx @@ -205,10 +205,7 @@ export const DocumentLibrary = (props: DocumentLibraryProps) => { .range(start, start + DOCUMENTS_PER_FETCH - 1); if (docsResp.error) { - console.error( - 'Error retrieving collection documents: ', - docsResp.error - ); + console.error('Error retrieving documents: ', docsResp.error); setLoading(false); setDocuments(docs); From 205c75c1b15c306629130c45eb1f9e4deab087c9 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Fri, 12 Jul 2024 16:20:00 +0200 Subject: [PATCH 11/53] Deduplicates document layers when annotation UI mounts --- .../ImageAnnotationDesktop.tsx | 12 ++++++++--- .../annotation-text/TextAnnotationDesktop.tsx | 20 ++++++++++++------- src/util/deduplicateLayers.ts | 8 ++++++++ 3 files changed, 30 insertions(+), 10 deletions(-) create mode 100644 src/util/deduplicateLayers.ts diff --git a/src/apps/annotation-image/ImageAnnotationDesktop.tsx b/src/apps/annotation-image/ImageAnnotationDesktop.tsx index 6e2ff8a6..f99150f0 100644 --- a/src/apps/annotation-image/ImageAnnotationDesktop.tsx +++ b/src/apps/annotation-image/ImageAnnotationDesktop.tsx @@ -1,5 +1,6 @@ import { useEffect, useMemo, useRef, useState } from 'react'; import type OpenSeadragon from 'openseadragon'; +import { useAnnotator } from '@annotorious/react'; import type { SupabaseAnnotation } from '@recogito/annotorious-supabase'; import { getAllDocumentLayersInProject } from '@backend/helpers'; import { useLayerPolicies, useTagVocabulary } from '@backend/hooks'; @@ -8,14 +9,14 @@ import { LoadingOverlay } from '@components/LoadingOverlay'; import { DocumentNotes, useLayerNames } from '@components/AnnotationDesktop'; import type { PrivacyMode } from '@components/PrivacySelector'; import { TopBar } from '@components/TopBar'; -import type { DocumentLayer } from 'src/Types'; import { AnnotatedImage } from './AnnotatedImage'; import type { ImageAnnotationProps } from './ImageAnnotation'; import { LeftDrawer } from './LeftDrawer'; import { RightDrawer } from './RightDrawer'; import { Toolbar } from './Toolbar'; import { useIIIF, ManifestErrorDialog } from './IIIF'; -import { useAnnotator } from '@annotorious/react'; +import { deduplicateLayers } from 'src/util/deduplicateLayers'; +import type { DocumentLayer } from 'src/Types'; import type { AnnotationState, AnnotoriousOpenSeadragonAnnotator, @@ -168,7 +169,12 @@ export const ImageAnnotationDesktop = (props: ImageAnnotationProps) => { setLayers([...props.document.layers, ...toAdd]); }); } else { - setLayers(props.document.layers); + const distinct = deduplicateLayers(props.document.layers); + + if (props.document.layers.length !== distinct.length) + console.warn('Layers contain duplicates', props.document.layers); + + setLayers(distinct); } } }, [policies]); diff --git a/src/apps/annotation-text/TextAnnotationDesktop.tsx b/src/apps/annotation-text/TextAnnotationDesktop.tsx index 0f469566..16cc356c 100644 --- a/src/apps/annotation-text/TextAnnotationDesktop.tsx +++ b/src/apps/annotation-text/TextAnnotationDesktop.tsx @@ -1,12 +1,6 @@ import { useEffect, useMemo, useState } from 'react'; import { useAnnotator } from '@annotorious/react'; import type { PresentUser, AnnotationState, Color } from '@annotorious/react'; -import type { - HighlightStyle, - HighlightStyleExpression, - RecogitoTextAnnotator, - TextAnnotation, -} from '@recogito/react-text-annotator'; import type { PDFAnnotation } from '@recogito/react-pdf-annotator'; import type { SupabaseAnnotation } from '@recogito/annotorious-supabase'; import { supabase } from '@backend/supabaseBrowserClient'; @@ -21,7 +15,14 @@ import { Toolbar } from './Toolbar'; import { AnnotatedText } from './AnnotatedText'; import { LeftDrawer } from './LeftDrawer/LeftDrawer'; import { RightDrawer } from './RightDrawer'; +import { deduplicateLayers } from 'src/util/deduplicateLayers'; import type { DocumentLayer } from 'src/Types'; +import type { + HighlightStyle, + HighlightStyleExpression, + RecogitoTextAnnotator, + TextAnnotation, +} from '@recogito/react-text-annotator'; import './TextAnnotationDesktop.css'; import '@recogito/react-text-annotator/react-text-annotator.css'; @@ -137,7 +138,12 @@ export const TextAnnotationDesktop = (props: TextAnnotationProps) => { setLayers([...props.document.layers, ...toAdd]); }); } else { - setLayers(props.document.layers); + const distinct = deduplicateLayers(props.document.layers); + + if (props.document.layers.length !== distinct.length) + console.warn('Layers contain duplicates', props.document.layers); + + setLayers(distinct); } } }, [policies]); diff --git a/src/util/deduplicateLayers.ts b/src/util/deduplicateLayers.ts new file mode 100644 index 00000000..852422fa --- /dev/null +++ b/src/util/deduplicateLayers.ts @@ -0,0 +1,8 @@ +import type { DocumentLayer } from 'src/Types'; + +// A temporary helper +export const deduplicateLayers = (layers: DocumentLayer[]) => + layers.reduce((distinct, layer) => { + const existing = distinct.find(l => l.id === layer.id); + return existing ? distinct : [...distinct, layer]; + }, []); From e6bc779c0a23bed619d2b6aad51c5e5e11d46be5 Mon Sep 17 00:00:00 2001 From: lorinjameson Date: Mon, 15 Jul 2024 08:55:06 -0400 Subject: [PATCH 12/53] WIP --- package-lock.json | 13 +++++++++ package.json | 4 ++- .../Wizard/Progress/ProgressUpdating.tsx | 27 ++++++++++++------- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index f31480ac..d2915d32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,6 +48,7 @@ "confetti-explosion-react": "^0.1.2", "crypto-js": "4.2.0", "date-fns": "^3.6.0", + "deep-diff": "^1.0.2", "formik": "2.4.6", "linkedom": "0.18.4", "manifesto.js": "4.2.17", @@ -69,6 +70,7 @@ "@astrojs/ts-plugin": "^1.8.0", "@types/accept-language-parser": "^1.5.6", "@types/crypto-js": "4.2.2", + "@types/deep-diff": "^1.0.5", "@types/openseadragon": "3.0.10", "@types/papaparse": "5.3.14", "@types/react": "^18.3.3", @@ -4323,6 +4325,12 @@ "@types/ms": "*" } }, + "node_modules/@types/deep-diff": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/deep-diff/-/deep-diff-1.0.5.tgz", + "integrity": "sha512-PQyNSy1YMZU1hgZA5tTYfHPpUAo9Dorn1PZho2/budQLfqLu3JIP37JAavnwYpR1S2yFZTXa3hxaE4ifGW5jaA==", + "dev": true + }, "node_modules/@types/earcut": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.4.tgz", @@ -6465,6 +6473,11 @@ "node": ">=8" } }, + "node_modules/deep-diff": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-1.0.2.tgz", + "integrity": "sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==" + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", diff --git a/package.json b/package.json index b415c262..84555eea 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "confetti-explosion-react": "^0.1.2", "crypto-js": "4.2.0", "date-fns": "^3.6.0", + "deep-diff": "^1.0.2", "formik": "2.4.6", "linkedom": "0.18.4", "manifesto.js": "4.2.17", @@ -74,6 +75,7 @@ "@astrojs/ts-plugin": "^1.8.0", "@types/accept-language-parser": "^1.5.6", "@types/crypto-js": "4.2.2", + "@types/deep-diff": "^1.0.5", "@types/openseadragon": "3.0.10", "@types/papaparse": "5.3.14", "@types/react": "^18.3.3", @@ -86,4 +88,4 @@ "eslint-plugin-react": "^7.34.2", "typescript": "5.5.3" } -} \ No newline at end of file +} diff --git a/src/apps/project-home/AssignmentsView/Wizard/Progress/ProgressUpdating.tsx b/src/apps/project-home/AssignmentsView/Wizard/Progress/ProgressUpdating.tsx index 4bffc2d1..ec4fc1c3 100644 --- a/src/apps/project-home/AssignmentsView/Wizard/Progress/ProgressUpdating.tsx +++ b/src/apps/project-home/AssignmentsView/Wizard/Progress/ProgressUpdating.tsx @@ -14,6 +14,7 @@ import { AnimatedCheck } from '@components/AnimatedIcons'; import type { ProgressProps, ProgressState } from './Progress'; import type { AssignmentSpec } from '../AssignmentSpec'; import type { UserRole } from '@backend/Types'; +import deepDiff from 'deep-diff'; import './Progress.css'; @@ -62,7 +63,7 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { const { name, description, documents, team, id } = props.assignment; - const [state, setState] = useState('idle'); + const [state, setState] = useState('updating_assignment'); const context: any = { id: previous.id!, @@ -73,9 +74,12 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { }; useEffect(() => { - setState('updating_assignment'); - const update = async () => { + const diff = deepDiff.diff(previous.documents, documents); + + console.log(diff); + setState('success'); + return; // Step 1. Update name/description if needed. if (name !== previous.name || description !== previous.description) await updateAssignmentContext(supabase, context.id, name!, description); @@ -115,6 +119,7 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { }); if (readOnlyLayers.length > 0) { + console.log('Adding Read-Only Layers: ', readOnlyLayers); const resultROLayers = await addReadOnlyLayersToContext( supabase, id as string, @@ -152,6 +157,7 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { } } if (readOnlyLayers.length > 0) { + console.log('Adding Read-Only Layers: ', readOnlyLayers); const resultROLayers = await addReadOnlyLayersToContext( supabase, id as string, @@ -182,6 +188,7 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { } if (removeReadOnlyLayers.length > 0) { + console.log('Removing Read-Only Layers: ', removeReadOnlyLayers); const resultROLayers = await removeReadOnlyLayersFromContext( supabase, id as string, @@ -252,12 +259,14 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { setState('success'); }; - update() - .then(() => props.onSaved(props.assignment)) - .catch((error) => { - setState('failed'); - props.onError(error); - }); + if (state === 'updating_assignment') { + update() + .then(() => props.onSaved(props.assignment)) + .catch((error) => { + setState('failed'); + props.onError(error); + }); + } }, []); return ( From 0068f1f9c0d4936403282657283d623194c1a81e Mon Sep 17 00:00:00 2001 From: lorinjameson Date: Tue, 16 Jul 2024 14:20:11 -0400 Subject: [PATCH 13/53] Various bug fixes --- package-lock.json | 6 - package.json | 1 - .../AssignmentDetail/AssignmentDetail.css | 2 +- .../AssignmentDetail/AssignmentDetail.tsx | 44 +++---- .../AssignmentsList/AssignmentsList.css | 5 +- .../Wizard/Progress/ProgressUpdating.tsx | 111 +++++++++--------- src/apps/project-home/ProjectHome.css | 4 +- 7 files changed, 85 insertions(+), 88 deletions(-) diff --git a/package-lock.json b/package-lock.json index d2915d32..f4c69f4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,7 +48,6 @@ "confetti-explosion-react": "^0.1.2", "crypto-js": "4.2.0", "date-fns": "^3.6.0", - "deep-diff": "^1.0.2", "formik": "2.4.6", "linkedom": "0.18.4", "manifesto.js": "4.2.17", @@ -6473,11 +6472,6 @@ "node": ">=8" } }, - "node_modules/deep-diff": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-1.0.2.tgz", - "integrity": "sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==" - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", diff --git a/package.json b/package.json index 84555eea..2e6e243a 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,6 @@ "confetti-explosion-react": "^0.1.2", "crypto-js": "4.2.0", "date-fns": "^3.6.0", - "deep-diff": "^1.0.2", "formik": "2.4.6", "linkedom": "0.18.4", "manifesto.js": "4.2.17", diff --git a/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.css b/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.css index 2f4fb028..5a638187 100644 --- a/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.css +++ b/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.css @@ -16,7 +16,7 @@ width: 100%; padding-top: 10px; padding-left: 32px; - max-height: 460px; + max-height: calc(100vh - 380px); overflow-y: auto; } diff --git a/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.tsx b/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.tsx index b36c6244..3138da70 100644 --- a/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.tsx +++ b/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.tsx @@ -43,7 +43,7 @@ export const AssignmentDetail = (props: AssignmentDetailProps) => { ? t['Project Base Assignment'] : props.assignment.name} - {props.isAdmin && ( + {props.isAdmin && !props.assignment.is_project_default && (
-
- {t['Team']} -
- {members.map((user: UserProfile) => ( -
- str) - .join(' ') - .trim() - } - avatar={user.avatar_url} - /> -
- ))} + {members.length > 0 && ( +
+ {t['Team']} +
+ {members.map((user: UserProfile) => ( +
+ str) + .join(' ') + .trim() + } + avatar={user.avatar_url} + /> +
+ ))} +
-
+ )}
diff --git a/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.css b/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.css index 53a0dc7b..6f57af65 100644 --- a/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.css +++ b/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.css @@ -1,10 +1,11 @@ .assignment-list-list { - max-height: 440px; + height: calc(100vh - 380px); overflow-y: auto; + width: 480px; } .assignments-list-item { - width: 404px; + width: 390px; height: 80px; border-bottom: 1px solid var(--gray-200); padding-left: 30px; diff --git a/src/apps/project-home/AssignmentsView/Wizard/Progress/ProgressUpdating.tsx b/src/apps/project-home/AssignmentsView/Wizard/Progress/ProgressUpdating.tsx index ec4fc1c3..9e8c5e84 100644 --- a/src/apps/project-home/AssignmentsView/Wizard/Progress/ProgressUpdating.tsx +++ b/src/apps/project-home/AssignmentsView/Wizard/Progress/ProgressUpdating.tsx @@ -14,7 +14,6 @@ import { AnimatedCheck } from '@components/AnimatedIcons'; import type { ProgressProps, ProgressState } from './Progress'; import type { AssignmentSpec } from '../AssignmentSpec'; import type { UserRole } from '@backend/Types'; -import deepDiff from 'deep-diff'; import './Progress.css'; @@ -75,11 +74,6 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { useEffect(() => { const update = async () => { - const diff = deepDiff.diff(previous.documents, documents); - - console.log(diff); - setState('success'); - return; // Step 1. Update name/description if needed. if (name !== previous.name || description !== previous.description) await updateAssignmentContext(supabase, context.id, name!, description); @@ -103,7 +97,6 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { ); if (!resultAddDocs) { - console.error('Failed to add documents to context'); setState('failed'); props.onError('Failed to add documents to context'); } @@ -111,28 +104,54 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { // - check for added read only layers on new documents for (let i = 0; i < documentChanges.added.length; i++) { const doc = documentChanges.added[i]; - const readOnlyLayers: string[] = []; - doc.layers.forEach((layer) => { - if (!layer.is_active) { - readOnlyLayers.push(layer.id); + const prevDoc = previous.documents.find((d) => (d.id = doc.id)); + const layerDiff = diff(prevDoc!.layers, doc.layers); + if (layerDiff.added.length > 0) { + // Look for added layers + const readOnlyLayers: string[] = []; + for (let i = 0; i < layerDiff.added.length; i++) { + readOnlyLayers.push(layerDiff.added[i].id); } - }); - - if (readOnlyLayers.length > 0) { - console.log('Adding Read-Only Layers: ', readOnlyLayers); - const resultROLayers = await addReadOnlyLayersToContext( - supabase, - id as string, - readOnlyLayers - ); - if (!resultROLayers) { - console.error( - 'Failed to add document read only layers to context' + doc.layers.forEach((layer) => { + if (!layer.is_active) { + readOnlyLayers.push(layer.id); + } + }); + + if (readOnlyLayers.length > 0) { + // console.log('Adding Read-Only Layers: ', readOnlyLayers); + const resultROLayers = await addReadOnlyLayersToContext( + supabase, + id as string, + readOnlyLayers ); - setState('failed'); - props.onError( - 'Failed to add document read only layers to context' + if (!resultROLayers) { + props.onError( + 'Failed to add document read only layers to context' + ); + } + } + } + if (layerDiff.removed.length > 0) { + // Now look for removed layers + const removeReadOnlyLayers: string[] = []; + for (let i = 0; i < layerDiff.removed.length; i++) { + removeReadOnlyLayers.push(layerDiff.removed[i].id); + } + + if (removeReadOnlyLayers.length > 0) { + // console.log('Removing Read-Only Layers: ', removeReadOnlyLayers); + const resultROLayers = await removeReadOnlyLayersFromContext( + supabase, + id as string, + removeReadOnlyLayers ); + if (!resultROLayers.data) { + setState('failed'); + props.onError( + 'Failed to remove document read only layers to context' + ); + } } } } @@ -143,61 +162,43 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { const doc = documentChanges.unchanged[i]; const prevDoc = previous.documents.find((d) => (d.id = doc.id)); - if (prevDoc) { + const layerDiff = diff(prevDoc!.layers, doc.layers); + if (layerDiff.added.length > 0) { // Look for added layers const readOnlyLayers: string[] = []; - for (let i = 0; i < doc.layers.length; i++) { - const layer = doc.layers[i]; - - // Is is in the prev assignment? - const prevLayer = prevDoc.layers.find((l) => l.id === layer.id); - - if (!prevLayer) { - readOnlyLayers.push(layer.id); - } + for (let i = 0; i < layerDiff.added.length; i++) { + readOnlyLayers.push(layerDiff.added[i].id); } if (readOnlyLayers.length > 0) { - console.log('Adding Read-Only Layers: ', readOnlyLayers); + // console.log('Adding Read-Only Layers: ', readOnlyLayers); const resultROLayers = await addReadOnlyLayersToContext( supabase, id as string, readOnlyLayers ); if (!resultROLayers.data) { - console.error( - 'Failed to add document read only layers to context' - ); setState('failed'); props.onError( 'Failed to add document read only layers to context' ); } } - + } + if (layerDiff.removed.length > 0) { // Now look for removed layers const removeReadOnlyLayers: string[] = []; - for (let i = 0; i < prevDoc.layers.length; i++) { - const layer = prevDoc.layers[i]; - - // Is is in the current assignment? - const currentLayer = doc.layers.find((l) => l.id === layer.id); - - if (!currentLayer) { - removeReadOnlyLayers.push(layer.id); - } + for (let i = 0; i < layerDiff.removed.length; i++) { + removeReadOnlyLayers.push(layerDiff.removed[i].id); } if (removeReadOnlyLayers.length > 0) { - console.log('Removing Read-Only Layers: ', removeReadOnlyLayers); + // console.log('Removing Read-Only Layers: ', removeReadOnlyLayers); const resultROLayers = await removeReadOnlyLayersFromContext( supabase, id as string, removeReadOnlyLayers ); if (!resultROLayers.data) { - console.error( - 'Failed to remove document read only layers to context' - ); setState('failed'); props.onError( 'Failed to remove document read only layers to context' @@ -227,7 +228,6 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { setState('success'); props.onSaved(props.assignment); } else { - console.error('Failed to add users to context'); setState('failed'); props.onError('Failed to add users to context'); } @@ -250,7 +250,6 @@ export const ProgressUpdating = (props: ProgressUpdatingProps) => { setState('success'); props.onSaved(props.assignment); } else { - console.error('Failed to remove users from context'); setState('failed'); props.onError('Failed to remove users from context'); } diff --git a/src/apps/project-home/ProjectHome.css b/src/apps/project-home/ProjectHome.css index 231fd3f1..1ff3d7e7 100644 --- a/src/apps/project-home/ProjectHome.css +++ b/src/apps/project-home/ProjectHome.css @@ -2,7 +2,9 @@ display: flex; flex-direction: column; flex-grow: 1; - padding: 20px 40px; + padding-top: 20px; + padding-left: 40px; + padding-right: 40px; position: relative; background-color: white; } From 45e15b3806f8fa870ff1fde26a45b0fcacd7b1a1 Mon Sep 17 00:00:00 2001 From: lorinjameson Date: Tue, 16 Jul 2024 14:27:23 -0400 Subject: [PATCH 14/53] Update package.json --- package-lock.json | 7 ------- package.json | 1 - 2 files changed, 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index f4c69f4f..f31480ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,7 +69,6 @@ "@astrojs/ts-plugin": "^1.8.0", "@types/accept-language-parser": "^1.5.6", "@types/crypto-js": "4.2.2", - "@types/deep-diff": "^1.0.5", "@types/openseadragon": "3.0.10", "@types/papaparse": "5.3.14", "@types/react": "^18.3.3", @@ -4324,12 +4323,6 @@ "@types/ms": "*" } }, - "node_modules/@types/deep-diff": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/deep-diff/-/deep-diff-1.0.5.tgz", - "integrity": "sha512-PQyNSy1YMZU1hgZA5tTYfHPpUAo9Dorn1PZho2/budQLfqLu3JIP37JAavnwYpR1S2yFZTXa3hxaE4ifGW5jaA==", - "dev": true - }, "node_modules/@types/earcut": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.4.tgz", diff --git a/package.json b/package.json index 2e6e243a..f3b8f8e7 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,6 @@ "@astrojs/ts-plugin": "^1.8.0", "@types/accept-language-parser": "^1.5.6", "@types/crypto-js": "4.2.2", - "@types/deep-diff": "^1.0.5", "@types/openseadragon": "3.0.10", "@types/papaparse": "5.3.14", "@types/react": "^18.3.3", From 82ec0d586c953ab2d6a16cb823b52710d514c19f Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Wed, 17 Jul 2024 11:10:17 +0200 Subject: [PATCH 15/53] Added logging to login flow --- package-lock.json | 354 +++++++++++++------------- package.json | 2 +- src/backend/auth/index.ts | 11 +- src/backend/supabaseServerClient.ts | 22 +- src/pages/[lang]/projects/index.astro | 7 + 5 files changed, 211 insertions(+), 185 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4d48df2c..600628d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "@recogito/react-pdf-annotator": "1.0.0-rc.23", "@recogito/react-text-annotator": "3.0.0-rc.35", "@supabase/ssr": "0.4.0", - "@supabase/supabase-js": "2.44.2", + "@supabase/supabase-js": "2.44.4", "@table-library/react-table-library": "^4.1.7", "@uppy/core": "3.11.3", "@uppy/xhr-upload": "3.6.4", @@ -164,9 +164,9 @@ } }, "node_modules/@astrojs/compiler": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.8.2.tgz", - "integrity": "sha512-2v2N2oDnMH6+CX1Wn6f45Afa4tdkUMutdx8pJaokfaOYnAU+u6+UK7o7sXqydKro1cLwVmmOIJv6AqiXnAdLDA==" + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.9.1.tgz", + "integrity": "sha512-s8Ge2lWHx/s3kl4UoerjL/iPtwdtogNM/BLOaGCwQA6crMOVYpphy5wUkYlKyuh8GAeGYH/5haLAFBsgNy9AQQ==" }, "node_modules/@astrojs/internal-helpers": { "version": "0.4.1", @@ -303,28 +303,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", + "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz", + "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", + "@babel/generator": "^7.24.9", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.9", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -353,11 +353,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.24.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", + "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", "dependencies": { - "@babel/types": "^7.24.7", + "@babel/types": "^7.24.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -378,13 +378,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -447,9 +447,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", + "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", @@ -465,9 +465,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "engines": { "node": ">=6.9.0" } @@ -496,9 +496,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "engines": { "node": ">=6.9.0" } @@ -512,20 +512,20 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", + "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", "dependencies": { "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -546,9 +546,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", + "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", "bin": { "parser": "bin/babel-parser.js" }, @@ -617,9 +617,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz", + "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -641,18 +641,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", + "@babel/generator": "^7.24.8", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", "@babel/helper-hoist-variables": "^7.24.7", "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -661,11 +661,11 @@ } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", + "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, @@ -3692,9 +3692,9 @@ } }, "node_modules/@supabase/auth-js": { - "version": "2.64.2", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.64.2.tgz", - "integrity": "sha512-s+lkHEdGiczDrzXJ1YWt2y3bxRi+qIUnXcgkpLSrId7yjBeaXBFygNjTaoZLG02KNcYwbuZ9qkEIqmj2hF7svw==", + "version": "2.64.4", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.64.4.tgz", + "integrity": "sha512-9ITagy4WP4FLl+mke1rchapOH0RQpf++DI+WSG2sO1OFOZ0rW3cwAM0nCrMOxu+Zw4vJ4zObc08uvQrXx590Tg==", "dependencies": { "@supabase/node-fetch": "^2.6.14" } @@ -3719,9 +3719,9 @@ } }, "node_modules/@supabase/postgrest-js": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.15.7.tgz", - "integrity": "sha512-TJztay5lcnnKuXjIO/X/aaajOsP8qNeW0k3MqIFoOtRolj5MEAIy8rixNakRk3o23eVCdsuP3iMLYPvOOruH6Q==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.15.8.tgz", + "integrity": "sha512-YunjXpoQjQ0a0/7vGAvGZA2dlMABXFdVI/8TuVKtlePxyT71sl6ERl6ay1fmIeZcqxiuFQuZw/LXUuStUG9bbg==", "dependencies": { "@supabase/node-fetch": "^2.6.14" } @@ -3760,14 +3760,14 @@ } }, "node_modules/@supabase/supabase-js": { - "version": "2.44.2", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.44.2.tgz", - "integrity": "sha512-fouCwL1OxqftOwLNgdDUPlNnFuCnt30nS4kLcnTpe6NYKn1PmjxRRBFmKscgHs6FjWyU+32ZG4uBJ29+/BWiDw==", + "version": "2.44.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.44.4.tgz", + "integrity": "sha512-vqtUp8umqcgj+RPUc7LiEcQmgsEWFDPJdJizRJF/5tf2zSlVB+3YbUwyQE/hLagYA8TLvGXe7oAqtYyFde6llw==", "dependencies": { - "@supabase/auth-js": "2.64.2", + "@supabase/auth-js": "2.64.4", "@supabase/functions-js": "2.4.1", "@supabase/node-fetch": "2.6.15", - "@supabase/postgrest-js": "1.15.7", + "@supabase/postgrest-js": "1.15.8", "@supabase/realtime-js": "2.10.2", "@supabase/storage-js": "2.6.0" } @@ -3936,9 +3936,9 @@ } }, "node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "version": "20.14.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", + "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", "dependencies": { "undici-types": "~5.26.4" } @@ -4016,24 +4016,24 @@ "dev": true }, "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "version": "8.5.11", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz", + "integrity": "sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==", "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.0.tgz", - "integrity": "sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz", + "integrity": "sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.16.0", - "@typescript-eslint/type-utils": "7.16.0", - "@typescript-eslint/utils": "7.16.0", - "@typescript-eslint/visitor-keys": "7.16.0", + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/type-utils": "7.16.1", + "@typescript-eslint/utils": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4057,15 +4057,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.0.tgz", - "integrity": "sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.1.tgz", + "integrity": "sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.16.0", - "@typescript-eslint/types": "7.16.0", - "@typescript-eslint/typescript-estree": "7.16.0", - "@typescript-eslint/visitor-keys": "7.16.0", + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/typescript-estree": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "debug": "^4.3.4" }, "engines": { @@ -4085,13 +4085,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.0.tgz", - "integrity": "sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", + "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.16.0", - "@typescript-eslint/visitor-keys": "7.16.0" + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4102,13 +4102,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.0.tgz", - "integrity": "sha512-j0fuUswUjDHfqV/UdW6mLtOQQseORqfdmoBNDFOqs9rvNVR2e+cmu6zJu/Ku4SDuqiJko6YnhwcL8x45r8Oqxg==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.1.tgz", + "integrity": "sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.16.0", - "@typescript-eslint/utils": "7.16.0", + "@typescript-eslint/typescript-estree": "7.16.1", + "@typescript-eslint/utils": "7.16.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4129,9 +4129,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.0.tgz", - "integrity": "sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz", + "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4142,13 +4142,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.0.tgz", - "integrity": "sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz", + "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.16.0", - "@typescript-eslint/visitor-keys": "7.16.0", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4170,15 +4170,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.0.tgz", - "integrity": "sha512-PqP4kP3hb4r7Jav+NiRCntlVzhxBNWq6ZQ+zQwII1y/G/1gdIPeYDCKr2+dH6049yJQsWZiHU6RlwvIFBXXGNA==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz", + "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.16.0", - "@typescript-eslint/types": "7.16.0", - "@typescript-eslint/typescript-estree": "7.16.0" + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/typescript-estree": "7.16.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4192,12 +4192,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.0.tgz", - "integrity": "sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz", + "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.16.0", + "@typescript-eslint/types": "7.16.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -4303,9 +4303,9 @@ } }, "node_modules/@vercel/nft": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.27.2.tgz", - "integrity": "sha512-7LeioS1yE5hwPpQfD3DdH04tuugKjo5KrJk3yK5kAI3Lh76iSsK/ezoFQfzuT08X3ZASQOd1y9ePjLNI9+TxTQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.27.3.tgz", + "integrity": "sha512-oySTdDSzUAFDXpsSLk9Q943o+/Yu/+TCFxnehpFQEf/3khi2stMpTHPVNwFdvZq/Z4Ky93lE+MGHpXCRpMkSCA==", "dependencies": { "@mapbox/node-pre-gyp": "^1.0.5", "@rollup/pluginutils": "^4.0.0", @@ -4346,27 +4346,27 @@ } }, "node_modules/@volar/language-core": { - "version": "2.4.0-alpha.15", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.15.tgz", - "integrity": "sha512-mt8z4Fm2WxfQYoQHPcKVjLQV6PgPqyKLbkCVY2cr5RSaamqCHjhKEpsFX66aL4D/7oYguuaUw9Bx03Vt0TpIIA==", + "version": "2.4.0-alpha.16", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.16.tgz", + "integrity": "sha512-oOTnIZlx0P/idFwVw+W0NbzKDtZAQMzXSdIFfTePCKcXlb4Ys12GaGkx8NF9dsvPYV3nbv3ZsSxnkZWBmNKd7A==", "dev": true, "dependencies": { - "@volar/source-map": "2.4.0-alpha.15" + "@volar/source-map": "2.4.0-alpha.16" } }, "node_modules/@volar/source-map": { - "version": "2.4.0-alpha.15", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.15.tgz", - "integrity": "sha512-8Htngw5TmBY4L3ClDqBGyfLhsB8EmoEXUH1xydyEtEoK0O6NX5ur4Jw8jgvscTlwzizyl/wsN1vn0cQXVbbXYg==", + "version": "2.4.0-alpha.16", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.16.tgz", + "integrity": "sha512-sL9vNG7iR2hiKZor7UkD5Sufu3QCia4cbp2gX/nGRNSdaPbhOpdAoavwlBm0PrVkpiA19NZuavZoobD8krviFg==", "dev": true }, "node_modules/@volar/typescript": { - "version": "2.4.0-alpha.15", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.15.tgz", - "integrity": "sha512-U3StRBbDuxV6Woa4hvGS4kz3XcOzrWUKgFdEFN+ba1x3eaYg7+ytau8ul05xgA+UNGLXXsKur7fTUhDFyISk0w==", + "version": "2.4.0-alpha.16", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.16.tgz", + "integrity": "sha512-WCx7z5O81McCQp2cC0c8081y+MgTiAR2WAiJjVL4tr4Qh4GgqK0lgn3CqAjcKizaK1R5y3wfrUqgIYr+QeFYcw==", "dev": true, "dependencies": { - "@volar/language-core": "2.4.0-alpha.15", + "@volar/language-core": "2.4.0-alpha.16", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } @@ -5224,11 +5224,11 @@ } }, "node_modules/axobject-query": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", - "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", - "dependencies": { - "dequal": "^2.0.3" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "engines": { + "node": ">= 0.4" } }, "node_modules/babel-plugin-macros": { @@ -5430,9 +5430,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001641", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001641.tgz", - "integrity": "sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==", + "version": "1.0.30001642", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", + "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", "funding": [ { "type": "opencollective", @@ -6151,9 +6151,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.825", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.825.tgz", - "integrity": "sha512-OCcF+LwdgFGcsYPYC5keEEFC2XT0gBhrYbeGzHCx7i9qRFbzO/AqTmc/C/1xNhJj+JA7rzlN7mpBuStshh96Cg==" + "version": "1.4.829", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.829.tgz", + "integrity": "sha512-5qp1N2POAfW0u1qGAxXEtz6P7bO1m6gpZr5hdf5ve6lxpLM7MpiM4jIPz7xcrNlClQMafbyUDDWjlIQZ1Mw0Rw==" }, "node_modules/emoji-regex": { "version": "10.3.0", @@ -6466,9 +6466,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.34.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz", - "integrity": "sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==", + "version": "7.34.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.4.tgz", + "integrity": "sha512-Np+jo9bUwJNxCsT12pXtrGhJgT3T44T1sHhn1Ssr42XFn8TES0267wPGo5nNrMHi8qkyimDAX2BUmkf9pSaVzA==", "dev": true, "dependencies": { "array-includes": "^3.1.8", @@ -6479,16 +6479,17 @@ "doctrine": "^2.1.0", "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.8", "object.fromentries": "^2.0.8", - "object.hasown": "^1.1.4", "object.values": "^1.2.0", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11" + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" @@ -9656,9 +9657,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.17.tgz", + "integrity": "sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==" }, "node_modules/nopt": { "version": "5.0.0", @@ -9808,23 +9809,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.hasown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", - "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.values": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", @@ -11183,9 +11167,9 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -11537,6 +11521,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -12266,9 +12260,9 @@ } }, "node_modules/vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", + "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0", @@ -12280,9 +12274,9 @@ } }, "node_modules/vfile-location": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", - "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" @@ -12306,9 +12300,9 @@ } }, "node_modules/vite": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", - "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.4.tgz", + "integrity": "sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.39", diff --git a/package.json b/package.json index 48fcd39a..ef7c2837 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@recogito/react-pdf-annotator": "1.0.0-rc.23", "@recogito/react-text-annotator": "3.0.0-rc.35", "@supabase/ssr": "0.4.0", - "@supabase/supabase-js": "2.44.2", + "@supabase/supabase-js": "2.44.4", "@table-library/react-table-library": "^4.1.7", "@uppy/core": "3.11.3", "@uppy/xhr-upload": "3.6.4", diff --git a/src/backend/auth/index.ts b/src/backend/auth/index.ts index ed2bc116..16e57e71 100644 --- a/src/backend/auth/index.ts +++ b/src/backend/auth/index.ts @@ -1,17 +1,24 @@ import type { SupabaseClient, User } from '@supabase/supabase-js'; -export const getUser = (supabase: SupabaseClient): Promise => - supabase.auth.getUser().then(({ error, data: { user } }) => { +export const getUser = (supabase: SupabaseClient): Promise => { + console.log('calling supabase.auth.getUser()'); + return supabase.auth.getUser().then(({ error, data: { user } }) => { if (error) { + console.error('error getting user'); + console.error(error); throw error; } else if (user === null) { + console.error('No error, but could not get user object'); throw 'Unauthorized'; } else if (user.role !== 'authenticated') { + console.error('User not authenticated', user); throw 'Unauthorized'; } else { + console.log('success', user); return user; } }); +} export const isLoggedIn = (supabase: SupabaseClient) => getUser(supabase) diff --git a/src/backend/supabaseServerClient.ts b/src/backend/supabaseServerClient.ts index f1e45089..98476cbf 100644 --- a/src/backend/supabaseServerClient.ts +++ b/src/backend/supabaseServerClient.ts @@ -10,9 +10,14 @@ const supabaseAPIKey = import.meta.env.PUBLIC_SUPABASE_API_KEY; const refreshSession = async (supabase: SupabaseClient, cookies: AstroCookies) => { + console.log('checking SSR session'); const { data: { session }} = await supabase.auth.getSession(); - if (session) + if (session) { + console.log('SSR session is valid'); return true; + } + + console.log('no longer valid - refreshing'); const refreshToken = cookies.get('sb-refresh-token'); const accessToken = cookies.get('sb-access-token'); @@ -21,7 +26,20 @@ const refreshSession = async (supabase: SupabaseClient, cookies: AstroCookies) = return await supabase.auth.setSession({ refresh_token: refreshToken.value, access_token: accessToken.value - }).then(({ error }) => !error) + }).then(({ data, error }) => { + if (error) + console.error('Error refreshing session!', error); + else + console.log('session refreshed successfully', data); + + return !error + }) + } else { + if (!refreshToken?.value) + console.warn('refresh token missing!'); + + if (!accessToken?.value) + console.warn('access token missing'); } } diff --git a/src/pages/[lang]/projects/index.astro b/src/pages/[lang]/projects/index.astro index 156b279e..7e0d3988 100644 --- a/src/pages/[lang]/projects/index.astro +++ b/src/pages/[lang]/projects/index.astro @@ -8,9 +8,16 @@ import BaseLayout from '@layouts/BaseLayout.astro'; const lang = getLangFromUrl(Astro.url); +console.log('[index] creating SSR client'); + const supabase = await createSupabaseServerClient(Astro.cookies); +console.log('[index] fetching my profile'); + const me = await getMyProfile(supabase); +console.log('[index] me:') +console.log(me); + if (me.error || !me.data) { return Astro.redirect(`/${lang}/sign-in?redirect-to=${Astro.url.pathname}`); } From e56844e3ad48b4f20e19c5d0a73defa9060fdfb3 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Wed, 17 Jul 2024 11:32:29 +0200 Subject: [PATCH 16/53] Change the way .getUser works --- src/backend/auth/index.ts | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/backend/auth/index.ts b/src/backend/auth/index.ts index 16e57e71..a47e6fb1 100644 --- a/src/backend/auth/index.ts +++ b/src/backend/auth/index.ts @@ -1,7 +1,28 @@ import type { SupabaseClient, User } from '@supabase/supabase-js'; export const getUser = (supabase: SupabaseClient): Promise => { - console.log('calling supabase.auth.getUser()'); + console.log('calling supabase.auth.getSession()'); + + return supabase.auth.getSession().then(({ error, data }) => { + if (error) { + console.error('error getting session'); + console.error(error); + throw error; + } else if (!data?.session) { + console.error('No error, but could not get session object'); + throw 'Unauthorized'; + } else { + const { user } = data.session; + if (!user || user.role !== 'authenticated') { + console.error('User not authenticated', user); + throw 'Unauthorized'; + } else { + return user; + } + } + }); + + /* return supabase.auth.getUser().then(({ error, data: { user } }) => { if (error) { console.error('error getting user'); @@ -18,6 +39,7 @@ export const getUser = (supabase: SupabaseClient): Promise => { return user; } }); + */ } export const isLoggedIn = (supabase: SupabaseClient) => From 350bf147c3905a217979c124ef3a98b1526fb57e Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Wed, 17 Jul 2024 13:58:51 +0200 Subject: [PATCH 17/53] Re-added call to supabase.auth.getUser(), but only after supabase.auth.getSession() --- src/backend/auth/index.ts | 46 +++++++++++++++------------------------ 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/src/backend/auth/index.ts b/src/backend/auth/index.ts index a47e6fb1..770f11c3 100644 --- a/src/backend/auth/index.ts +++ b/src/backend/auth/index.ts @@ -3,43 +3,31 @@ import type { SupabaseClient, User } from '@supabase/supabase-js'; export const getUser = (supabase: SupabaseClient): Promise => { console.log('calling supabase.auth.getSession()'); - return supabase.auth.getSession().then(({ error, data }) => { + return supabase.auth.getSession().then(({ error }) => { if (error) { console.error('error getting session'); console.error(error); throw error; - } else if (!data?.session) { - console.error('No error, but could not get session object'); - throw 'Unauthorized'; } else { - const { user } = data.session; - if (!user || user.role !== 'authenticated') { - console.error('User not authenticated', user); - throw 'Unauthorized'; - } else { - return user; - } - } - }); + console.log('calling supabase.auth.getUser()'); - /* - return supabase.auth.getUser().then(({ error, data: { user } }) => { - if (error) { - console.error('error getting user'); - console.error(error); - throw error; - } else if (user === null) { - console.error('No error, but could not get user object'); - throw 'Unauthorized'; - } else if (user.role !== 'authenticated') { - console.error('User not authenticated', user); - throw 'Unauthorized'; - } else { - console.log('success', user); - return user; + return supabase.auth.getUser().then(({ error, data }) => { + if (error) { + console.error('error getting user'); + console.error(error); + throw error; + } else if (!data.user) { + console.error('No error, but could not get session object'); + throw 'Unauthorized'; + } else if (data.user.role !== 'authenticated') { + console.error('User not authenticated', data.user); + throw 'Unauthorized'; + } else { + return data.user; + } + }); } }); - */ } export const isLoggedIn = (supabase: SupabaseClient) => From 5c6d2d23a4d590adbeb96bf4e05f5741b3136c3b Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Wed, 17 Jul 2024 16:31:24 +0200 Subject: [PATCH 18/53] More logging at the index page --- src/config.json | 2 +- src/pages/index.astro | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/config.json b/src/config.json index c8ea5195..75549d88 100644 --- a/src/config.json +++ b/src/config.json @@ -23,7 +23,7 @@ { "name": "Sign in with SSO", "type": "saml", - "domain": "example.com" + "domain": "performantsoftware.com" }, { "name": "Send Magic Link", diff --git a/src/pages/index.astro b/src/pages/index.astro index 8f2426c8..4e40c48b 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -8,9 +8,13 @@ const accepts = Astro.request.headers.get('accept-language'); const lang = accepts ? parser.pick(Object.keys(languages), accepts) : defaultLang; +console.log('[index] creating the server client'); const supabase = await createSupabaseServerClient(Astro.cookies); +console.log('[index] success. retrieving my profile.'); const me = await getMyProfile(supabase); +console.log('got my profile:') +console.log(me); if (me.error || !me.data) { return Astro.redirect(`/${lang}/sign-in?redirect-to=${Astro.url.pathname}`); } else { From d4365851b42f103a5bfacf9b467086b3ef82b76d Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Wed, 17 Jul 2024 16:45:51 +0200 Subject: [PATCH 19/53] More logging --- src/pages/index.astro | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pages/index.astro b/src/pages/index.astro index 4e40c48b..fe41ad16 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -13,11 +13,13 @@ const supabase = await createSupabaseServerClient(Astro.cookies); console.log('[index] success. retrieving my profile.'); const me = await getMyProfile(supabase); -console.log('got my profile:') +console.log('[index] got my profile:') console.log(me); if (me.error || !me.data) { + console.log('[index] User not logged in - redirecting to sign-in') return Astro.redirect(`/${lang}/sign-in?redirect-to=${Astro.url.pathname}`); } else { + console.log('[index] user logged in redirecting to:' + `/${lang}/projects`); return Astro.redirect(`/${lang}/projects`); } --- From 98b4d0fc3c2cd098deb9076aa2b7aac10ce03747 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Thu, 18 Jul 2024 09:32:48 +0200 Subject: [PATCH 20/53] Moa debug logging --- src/pages/404.astro | 2 ++ src/pages/500.astro | 2 ++ src/pages/[lang]/index.astro | 4 ++++ src/pages/[lang]/projects/index.astro | 6 +++--- src/pages/[lang]/sign-in.astro | 2 ++ src/pages/[lang]/sign-out.astro | 2 ++ 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/pages/404.astro b/src/pages/404.astro index 77ef6072..dbba15fc 100644 --- a/src/pages/404.astro +++ b/src/pages/404.astro @@ -2,6 +2,8 @@ import { getTranslations } from '@i18n'; import BaseLayout from '@layouts/BaseLayout.astro'; +console.log('[astro 404]'); + const { t } = getTranslations(Astro.request, 'error'); --- diff --git a/src/pages/500.astro b/src/pages/500.astro index 4382c8f7..45733347 100644 --- a/src/pages/500.astro +++ b/src/pages/500.astro @@ -2,6 +2,8 @@ import { getTranslations } from '@i18n'; import BaseLayout from '@layouts/BaseLayout.astro'; +console.log('[astro 500]'); + const { t } = getTranslations(Astro.request, 'error'); --- diff --git a/src/pages/[lang]/index.astro b/src/pages/[lang]/index.astro index 351299d8..2b133398 100644 --- a/src/pages/[lang]/index.astro +++ b/src/pages/[lang]/index.astro @@ -3,11 +3,15 @@ import { getMyProfile } from '@backend/crud'; import { createSupabaseServerClient } from '@backend/supabaseServerClient'; import { getLangFromUrl } from '@i18n'; +console.log('[lang index] creating client'); const supabase = await createSupabaseServerClient(Astro.cookies); const lang = getLangFromUrl(Astro.url); const me = await getMyProfile(supabase); +console.log('[lang index] me'); +console.log(me); + if (me.error || !me.data) { return Astro.redirect(`/${lang}/sign-in?redirect-to=${Astro.url.pathname}`); } else { diff --git a/src/pages/[lang]/projects/index.astro b/src/pages/[lang]/projects/index.astro index 7e0d3988..2ab250ae 100644 --- a/src/pages/[lang]/projects/index.astro +++ b/src/pages/[lang]/projects/index.astro @@ -8,14 +8,14 @@ import BaseLayout from '@layouts/BaseLayout.astro'; const lang = getLangFromUrl(Astro.url); -console.log('[index] creating SSR client'); +console.log('[projects index] creating SSR client'); const supabase = await createSupabaseServerClient(Astro.cookies); -console.log('[index] fetching my profile'); +console.log('[projects index] fetching my profile'); const me = await getMyProfile(supabase); -console.log('[index] me:') +console.log('[projects index] me:') console.log(me); if (me.error || !me.data) { diff --git a/src/pages/[lang]/sign-in.astro b/src/pages/[lang]/sign-in.astro index 70284f49..ca9cbd62 100644 --- a/src/pages/[lang]/sign-in.astro +++ b/src/pages/[lang]/sign-in.astro @@ -5,6 +5,8 @@ import { getTranslations } from '@i18n'; import type { LoginMethod } from '../../Types'; import config from '../../config.json'; +console.log('[lang/sign-in]'); + const methods = config.authentication.methods; const splashURL = config.branding.home_banner; --- diff --git a/src/pages/[lang]/sign-out.astro b/src/pages/[lang]/sign-out.astro index 38681835..b8e9ad8a 100644 --- a/src/pages/[lang]/sign-out.astro +++ b/src/pages/[lang]/sign-out.astro @@ -4,6 +4,8 @@ import { Logout } from '@apps/auth-logout'; import { getTranslations } from '@i18n'; import { createSupabaseServerClient } from '@backend/supabaseServerClient'; +console.log('[lang/sign-in]'); + const supabase = await createSupabaseServerClient(Astro.cookies); await supabase.auth.signOut(); --- From 78884a3b3ba202fbacbdb55a71c18dbf597bc9e6 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Thu, 18 Jul 2024 18:13:48 +0200 Subject: [PATCH 21/53] A desparate attempt --- src/pages/index.astro | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/index.astro b/src/pages/index.astro index fe41ad16..1c6eddf6 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -19,8 +19,8 @@ if (me.error || !me.data) { console.log('[index] User not logged in - redirecting to sign-in') return Astro.redirect(`/${lang}/sign-in?redirect-to=${Astro.url.pathname}`); } else { - console.log('[index] user logged in redirecting to:' + `/${lang}/projects`); - return Astro.redirect(`/${lang}/projects`); + console.log('[index] user logged in redirecting to: ' + `/${lang}/projects/`); + return Astro.redirect(`/${lang}/projects/`); } --- From aeaa14433d591c6b7e2939244dabcd3ed2785fc1 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Fri, 19 Jul 2024 07:27:16 +0200 Subject: [PATCH 22/53] Extra logging statement --- src/pages/[lang]/index.astro | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/[lang]/index.astro b/src/pages/[lang]/index.astro index 2b133398..5d270d75 100644 --- a/src/pages/[lang]/index.astro +++ b/src/pages/[lang]/index.astro @@ -15,6 +15,7 @@ console.log(me); if (me.error || !me.data) { return Astro.redirect(`/${lang}/sign-in?redirect-to=${Astro.url.pathname}`); } else { - return Astro.redirect(`/${lang}/projects`); + console.log('[lang index] redirecting to: ', `/${lang}/projects/`); + return Astro.redirect(`/${lang}/projects/`); } --- From f137e552b28bf9c32e913a785b9cf710195434bd Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Fri, 19 Jul 2024 10:01:28 +0200 Subject: [PATCH 23/53] Logging --- src/pages/[lang]/index.astro | 2 +- src/pages/[lang]/projects/index.astro | 2 +- src/pages/[lang]/sign-in.astro | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/[lang]/index.astro b/src/pages/[lang]/index.astro index 5d270d75..b6cd0b00 100644 --- a/src/pages/[lang]/index.astro +++ b/src/pages/[lang]/index.astro @@ -3,7 +3,7 @@ import { getMyProfile } from '@backend/crud'; import { createSupabaseServerClient } from '@backend/supabaseServerClient'; import { getLangFromUrl } from '@i18n'; -console.log('[lang index] creating client'); +console.log('[lang index] creating client', Astro.url); const supabase = await createSupabaseServerClient(Astro.cookies); const lang = getLangFromUrl(Astro.url); diff --git a/src/pages/[lang]/projects/index.astro b/src/pages/[lang]/projects/index.astro index 2ab250ae..846a946f 100644 --- a/src/pages/[lang]/projects/index.astro +++ b/src/pages/[lang]/projects/index.astro @@ -8,7 +8,7 @@ import BaseLayout from '@layouts/BaseLayout.astro'; const lang = getLangFromUrl(Astro.url); -console.log('[projects index] creating SSR client'); +console.log(`[projects ${lang} index] creating SSR client`); const supabase = await createSupabaseServerClient(Astro.cookies); diff --git a/src/pages/[lang]/sign-in.astro b/src/pages/[lang]/sign-in.astro index ca9cbd62..78f1aa83 100644 --- a/src/pages/[lang]/sign-in.astro +++ b/src/pages/[lang]/sign-in.astro @@ -5,7 +5,7 @@ import { getTranslations } from '@i18n'; import type { LoginMethod } from '../../Types'; import config from '../../config.json'; -console.log('[lang/sign-in]'); +console.log('[lang/sign-in]', Astro.url); const methods = config.authentication.methods; const splashURL = config.branding.home_banner; From bb3a269f0a661d0a17e45a4fd7efe1282a289c6c Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 07:57:13 +0200 Subject: [PATCH 24/53] Removed debug statements --- package-lock.json | 485 +++++++++++++------------- package.json | 8 +- src/backend/auth/index.ts | 15 +- src/backend/supabaseServerClient.ts | 56 ++- src/config.json | 2 +- src/pages/404.astro | 2 - src/pages/500.astro | 2 - src/pages/[lang]/index.astro | 5 - src/pages/[lang]/projects/index.astro | 7 - src/pages/[lang]/sign-in.astro | 2 - src/pages/[lang]/sign-out.astro | 2 - src/pages/index.astro | 6 - 12 files changed, 274 insertions(+), 318 deletions(-) diff --git a/package-lock.json b/package-lock.json index 600628d3..2414ba14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@allmaps/iiif-parser": "1.0.0-beta.37", "@annotorious/react": "3.0.0-rc.30", - "@astrojs/netlify": "^5.3.5", + "@astrojs/netlify": "^5.4.0", "@astrojs/node": "^8.3.2", "@astrojs/react": "^3.6.0", "@phosphor-icons/react": "^2.1.7", @@ -33,7 +33,7 @@ "@radix-ui/react-toggle": "^1.1.0", "@radix-ui/react-toggle-group": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", - "@react-spring/web": "^9.7.3", + "@react-spring/web": "^9.7.4", "@recogito/annotorious-supabase": "1.0.0-rc.14", "@recogito/react-pdf-annotator": "1.0.0-rc.23", "@recogito/react-text-annotator": "3.0.0-rc.35", @@ -43,7 +43,7 @@ "@uppy/core": "3.11.3", "@uppy/xhr-upload": "3.6.4", "accept-language-parser": "^1.5.0", - "astro": "^4.11.4", + "astro": "^4.12.2", "classnames": "^2.5.1", "confetti-explosion-react": "^0.1.2", "crypto-js": "4.2.0", @@ -65,7 +65,7 @@ "uuid": "10.0.0" }, "devDependencies": { - "@astrojs/ts-plugin": "^1.8.0", + "@astrojs/ts-plugin": "^1.9.0", "@types/accept-language-parser": "^1.5.6", "@types/crypto-js": "4.2.2", "@types/openseadragon": "3.0.10", @@ -164,9 +164,9 @@ } }, "node_modules/@astrojs/compiler": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.9.1.tgz", - "integrity": "sha512-s8Ge2lWHx/s3kl4UoerjL/iPtwdtogNM/BLOaGCwQA6crMOVYpphy5wUkYlKyuh8GAeGYH/5haLAFBsgNy9AQQ==" + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.9.2.tgz", + "integrity": "sha512-Vpu0Ffsj8SoV+N0DFHlxxOMKHwSC9059Xy/OlG1t6uFYSoJXxkBC2WyF6igO7x10V+8uJrhOxaXr3nA90kJXow==" }, "node_modules/@astrojs/internal-helpers": { "version": "0.4.1", @@ -174,9 +174,9 @@ "integrity": "sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==" }, "node_modules/@astrojs/markdown-remark": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.1.1.tgz", - "integrity": "sha512-rkWWjR9jVo0LAMxQ2+T19RKbQUa7NwBGhFj03bAz3hGf3blqeBIXs1NSPpizshO5kZzcOqKe8OlG6XpYO8esHg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.2.0.tgz", + "integrity": "sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw==", "dependencies": { "@astrojs/prism": "3.1.0", "github-slugger": "^2.0.0", @@ -189,13 +189,13 @@ "remark-gfm": "^4.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.0", - "remark-smartypants": "^3.0.1", - "shiki": "^1.9.0", + "remark-smartypants": "^3.0.2", + "shiki": "^1.10.3", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", - "vfile": "^6.0.1" + "vfile": "^6.0.2" } }, "node_modules/@astrojs/netlify": { @@ -683,15 +683,15 @@ } }, "node_modules/@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", + "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.2.0", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", @@ -701,39 +701,39 @@ } }, "node_modules/@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "dependencies": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.0.tgz", + "integrity": "sha512-hPV345J/tH0Cwk2wnU/3PBzORQ9HeX+kQSbwI+jslzpRCHE6fSGTohswksA/Ensr8znPzwfzKZCmAM9Lmlhp7g==", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "stylis": "4.2.0" } }, "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" }, "node_modules/@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { - "version": "11.11.4", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", - "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.0.tgz", + "integrity": "sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { @@ -746,44 +746,44 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", - "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.0.tgz", + "integrity": "sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==", "dependencies": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.9.0", + "@emotion/utils": "^1.4.0", "csstype": "^3.0.2" } }, "node_modules/@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" }, "node_modules/@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.9.0.tgz", + "integrity": "sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.0.tgz", + "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==" }, "node_modules/@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, "node_modules/@esbuild/aix-ppc64": { "version": "0.22.0", @@ -3341,25 +3341,25 @@ "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==" }, "node_modules/@react-spring/animated": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.3.tgz", - "integrity": "sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.4.tgz", + "integrity": "sha512-7As+8Pty2QlemJ9O5ecsuPKjmO0NKvmVkRR1n6mEotFgWar8FKuQt2xgxz3RTgxcccghpx1YdS1FCdElQNexmQ==", "dependencies": { - "@react-spring/shared": "~9.7.3", - "@react-spring/types": "~9.7.3" + "@react-spring/shared": "~9.7.4", + "@react-spring/types": "~9.7.4" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/@react-spring/core": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.3.tgz", - "integrity": "sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.4.tgz", + "integrity": "sha512-GzjA44niEJBFUe9jN3zubRDDDP2E4tBlhNlSIkTChiNf9p4ZQlgXBg50qbXfSXHQPHak/ExYxwhipKVsQ/sUTw==", "dependencies": { - "@react-spring/animated": "~9.7.3", - "@react-spring/shared": "~9.7.3", - "@react-spring/types": "~9.7.3" + "@react-spring/animated": "~9.7.4", + "@react-spring/shared": "~9.7.4", + "@react-spring/types": "~9.7.4" }, "funding": { "type": "opencollective", @@ -3369,31 +3369,37 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/@react-spring/rafz": { + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.7.4.tgz", + "integrity": "sha512-mqDI6rW0Ca8IdryOMiXRhMtVGiEGLIO89vIOyFQXRIwwIMX30HLya24g9z4olDvFyeDW3+kibiKwtZnA4xhldA==" + }, "node_modules/@react-spring/shared": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.3.tgz", - "integrity": "sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.4.tgz", + "integrity": "sha512-bEPI7cQp94dOtCFSEYpxvLxj0+xQfB5r9Ru1h8OMycsIq7zFZon1G0sHrBLaLQIWeMCllc4tVDYRTLIRv70C8w==", "dependencies": { - "@react-spring/types": "~9.7.3" + "@react-spring/rafz": "~9.7.4", + "@react-spring/types": "~9.7.4" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/@react-spring/types": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.3.tgz", - "integrity": "sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw==" + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.4.tgz", + "integrity": "sha512-iQVztO09ZVfsletMiY+DpT/JRiBntdsdJ4uqk3UJFhrhS8mIC9ZOZbmfGSRs/kdbNPQkVyzucceDicQ/3Mlj9g==" }, "node_modules/@react-spring/web": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.3.tgz", - "integrity": "sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.4.tgz", + "integrity": "sha512-UMvCZp7I5HCVIleSa4BwbNxynqvj+mJjG2m20VO2yPoi2pnCYANy58flvz9v/YcXTAvsmL655FV3pm5fbr6akA==", "dependencies": { - "@react-spring/animated": "~9.7.3", - "@react-spring/core": "~9.7.3", - "@react-spring/shared": "~9.7.3", - "@react-spring/types": "~9.7.3" + "@react-spring/animated": "~9.7.4", + "@react-spring/core": "~9.7.4", + "@react-spring/shared": "~9.7.4", + "@react-spring/types": "~9.7.4" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", @@ -3492,9 +3498,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz", - "integrity": "sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.0.tgz", + "integrity": "sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==", "cpu": [ "arm" ], @@ -3504,9 +3510,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz", - "integrity": "sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.0.tgz", + "integrity": "sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==", "cpu": [ "arm64" ], @@ -3516,9 +3522,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz", - "integrity": "sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.0.tgz", + "integrity": "sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==", "cpu": [ "arm64" ], @@ -3528,9 +3534,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz", - "integrity": "sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.0.tgz", + "integrity": "sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==", "cpu": [ "x64" ], @@ -3540,9 +3546,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz", - "integrity": "sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.0.tgz", + "integrity": "sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==", "cpu": [ "arm" ], @@ -3552,9 +3558,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz", - "integrity": "sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.0.tgz", + "integrity": "sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==", "cpu": [ "arm" ], @@ -3564,9 +3570,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz", - "integrity": "sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.0.tgz", + "integrity": "sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==", "cpu": [ "arm64" ], @@ -3576,9 +3582,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz", - "integrity": "sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.0.tgz", + "integrity": "sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==", "cpu": [ "arm64" ], @@ -3588,9 +3594,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz", - "integrity": "sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.0.tgz", + "integrity": "sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==", "cpu": [ "ppc64" ], @@ -3600,9 +3606,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz", - "integrity": "sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.0.tgz", + "integrity": "sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==", "cpu": [ "riscv64" ], @@ -3612,9 +3618,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz", - "integrity": "sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.0.tgz", + "integrity": "sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==", "cpu": [ "s390x" ], @@ -3624,9 +3630,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz", - "integrity": "sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.0.tgz", + "integrity": "sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==", "cpu": [ "x64" ], @@ -3636,9 +3642,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz", - "integrity": "sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.0.tgz", + "integrity": "sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==", "cpu": [ "x64" ], @@ -3648,9 +3654,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz", - "integrity": "sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.0.tgz", + "integrity": "sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==", "cpu": [ "arm64" ], @@ -3660,9 +3666,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz", - "integrity": "sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.0.tgz", + "integrity": "sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==", "cpu": [ "ia32" ], @@ -3672,9 +3678,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz", - "integrity": "sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.0.tgz", + "integrity": "sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==", "cpu": [ "x64" ], @@ -3684,9 +3690,9 @@ ] }, "node_modules/@shikijs/core": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.10.3.tgz", - "integrity": "sha512-D45PMaBaeDHxww+EkcDQtDAtzv00Gcsp72ukBtaLSmqRvh0WgGMq3Al0rl1QQBZfuneO75NXMIzEZGFitThWbg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.11.0.tgz", + "integrity": "sha512-VbEhDAhT/2ozO0TPr5/ZQBO/NWLqtk4ZiBf6NplYpF38mKjNfMMied5fNEfIfYfN+cdKvhDB4VMcKvG/g9c3zg==", "dependencies": { "@types/hast": "^3.0.4" } @@ -4346,27 +4352,27 @@ } }, "node_modules/@volar/language-core": { - "version": "2.4.0-alpha.16", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.16.tgz", - "integrity": "sha512-oOTnIZlx0P/idFwVw+W0NbzKDtZAQMzXSdIFfTePCKcXlb4Ys12GaGkx8NF9dsvPYV3nbv3ZsSxnkZWBmNKd7A==", + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.18.tgz", + "integrity": "sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==", "dev": true, "dependencies": { - "@volar/source-map": "2.4.0-alpha.16" + "@volar/source-map": "2.4.0-alpha.18" } }, "node_modules/@volar/source-map": { - "version": "2.4.0-alpha.16", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.16.tgz", - "integrity": "sha512-sL9vNG7iR2hiKZor7UkD5Sufu3QCia4cbp2gX/nGRNSdaPbhOpdAoavwlBm0PrVkpiA19NZuavZoobD8krviFg==", + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.18.tgz", + "integrity": "sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==", "dev": true }, "node_modules/@volar/typescript": { - "version": "2.4.0-alpha.16", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.16.tgz", - "integrity": "sha512-WCx7z5O81McCQp2cC0c8081y+MgTiAR2WAiJjVL4tr4Qh4GgqK0lgn3CqAjcKizaK1R5y3wfrUqgIYr+QeFYcw==", + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.18.tgz", + "integrity": "sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==", "dev": true, "dependencies": { - "@volar/language-core": "2.4.0-alpha.16", + "@volar/language-core": "2.4.0-alpha.18", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } @@ -4667,18 +4673,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, "node_modules/array.prototype.tosorted": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", @@ -4718,26 +4712,26 @@ } }, "node_modules/astro": { - "version": "4.11.5", - "resolved": "https://registry.npmjs.org/astro/-/astro-4.11.5.tgz", - "integrity": "sha512-TCRhuaLwrxwMhS8S1GG+ZTdrAXigX9C8E/YUTs/r2t+owHxDgwl86IV9xH1IHrCPoqhK6civyAQNOT+GKmkb0A==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.12.2.tgz", + "integrity": "sha512-l6OmqlL+FiuSi9x6F+EGZitteOznq1JffOil7st7cdqeMCTEIym4oagI1a6zp6QekliKWEEZWdplGhgh1k1f7Q==", "dependencies": { - "@astrojs/compiler": "^2.8.1", + "@astrojs/compiler": "^2.9.0", "@astrojs/internal-helpers": "0.4.1", - "@astrojs/markdown-remark": "5.1.1", + "@astrojs/markdown-remark": "5.2.0", "@astrojs/telemetry": "3.1.0", - "@babel/core": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/parser": "^7.24.7", + "@babel/core": "^7.24.9", + "@babel/generator": "^7.24.10", + "@babel/parser": "^7.24.8", "@babel/plugin-transform-react-jsx": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", "@types/babel__core": "^7.20.5", "@types/cookie": "^0.6.0", - "acorn": "^8.12.0", + "acorn": "^8.12.1", "aria-query": "^5.3.0", - "axobject-query": "^4.0.0", - "boxen": "^7.1.1", + "axobject-query": "^4.1.0", + "boxen": "7.1.1", "chokidar": "^3.6.0", "ci-info": "^4.0.0", "clsx": "^2.1.1", @@ -4765,22 +4759,22 @@ "magic-string": "^0.30.10", "mrmime": "^2.0.0", "ora": "^8.0.1", - "p-limit": "^5.0.0", + "p-limit": "^6.1.0", "p-queue": "^8.0.1", "path-to-regexp": "^6.2.2", - "preferred-pm": "^3.1.3", + "preferred-pm": "^4.0.0", "prompts": "^2.4.2", "rehype": "^13.0.1", "semver": "^7.6.2", - "shiki": "^1.10.0", + "shiki": "^1.10.3", "string-width": "^7.2.0", "strip-ansi": "^7.1.0", "tsconfck": "^3.1.1", "unist-util-visit": "^5.0.0", - "vfile": "^6.0.1", - "vite": "^5.3.2", + "vfile": "^6.0.2", + "vite": "^5.3.4", "vitefu": "^0.2.5", - "which-pm": "^2.2.0", + "which-pm": "^3.0.0", "yargs-parser": "^21.1.1", "zod": "^3.23.8", "zod-to-json-schema": "^3.23.1" @@ -5430,9 +5424,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001642", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", - "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", + "version": "1.0.30001643", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", + "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", "funding": [ { "type": "opencollective", @@ -6151,9 +6145,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.829", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.829.tgz", - "integrity": "sha512-5qp1N2POAfW0u1qGAxXEtz6P7bO1m6gpZr5hdf5ve6lxpLM7MpiM4jIPz7xcrNlClQMafbyUDDWjlIQZ1Mw0Rw==" + "version": "1.4.832", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.832.tgz", + "integrity": "sha512-cTen3SB0H2SGU7x467NRe1eVcQgcuS6jckKfWJHia2eo0cHIGOqHoAxevIYZD4eRHcWjkvFzo93bi3vJ9W+1lA==" }, "node_modules/emoji-regex": { "version": "10.3.0", @@ -6466,15 +6460,14 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.34.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.4.tgz", - "integrity": "sha512-Np+jo9bUwJNxCsT12pXtrGhJgT3T44T1sHhn1Ssr42XFn8TES0267wPGo5nNrMHi8qkyimDAX2BUmkf9pSaVzA==", + "version": "7.35.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", + "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", "dev": true, "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.0.19", @@ -6495,7 +6488,7 @@ "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { @@ -6958,6 +6951,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -6969,6 +6963,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/find-yarn-workspace-root2": { "version": "1.2.16", "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", @@ -7922,9 +7927,9 @@ } }, "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "dependencies": { "hasown": "^2.0.2" }, @@ -8509,6 +8514,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -9657,9 +9663,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.17.tgz", - "integrity": "sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==" + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" }, "node_modules/nopt": { "version": "5.0.0", @@ -9918,11 +9924,11 @@ } }, "node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.1.0.tgz", + "integrity": "sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==", "dependencies": { - "yocto-queue": "^1.0.0" + "yocto-queue": "^1.1.1" }, "engines": { "node": ">=18" @@ -9935,6 +9941,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -9949,6 +9956,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -9963,6 +9971,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "engines": { "node": ">=10" }, @@ -10344,17 +10353,16 @@ } }, "node_modules/preferred-pm": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.1.4.tgz", - "integrity": "sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-4.0.0.tgz", + "integrity": "sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==", "dependencies": { - "find-up": "^5.0.0", + "find-up-simple": "^1.0.0", "find-yarn-workspace-root2": "1.2.16", - "path-exists": "^4.0.0", - "which-pm": "^2.2.0" + "which-pm": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=18.12" } }, "node_modules/prelude-ls": { @@ -11037,9 +11045,9 @@ } }, "node_modules/rollup": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.1.tgz", - "integrity": "sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.0.tgz", + "integrity": "sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==", "dependencies": { "@types/estree": "1.0.5" }, @@ -11051,22 +11059,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.1", - "@rollup/rollup-android-arm64": "4.18.1", - "@rollup/rollup-darwin-arm64": "4.18.1", - "@rollup/rollup-darwin-x64": "4.18.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.1", - "@rollup/rollup-linux-arm-musleabihf": "4.18.1", - "@rollup/rollup-linux-arm64-gnu": "4.18.1", - "@rollup/rollup-linux-arm64-musl": "4.18.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.1", - "@rollup/rollup-linux-riscv64-gnu": "4.18.1", - "@rollup/rollup-linux-s390x-gnu": "4.18.1", - "@rollup/rollup-linux-x64-gnu": "4.18.1", - "@rollup/rollup-linux-x64-musl": "4.18.1", - "@rollup/rollup-win32-arm64-msvc": "4.18.1", - "@rollup/rollup-win32-ia32-msvc": "4.18.1", - "@rollup/rollup-win32-x64-msvc": "4.18.1", + "@rollup/rollup-android-arm-eabi": "4.19.0", + "@rollup/rollup-android-arm64": "4.19.0", + "@rollup/rollup-darwin-arm64": "4.19.0", + "@rollup/rollup-darwin-x64": "4.19.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.19.0", + "@rollup/rollup-linux-arm-musleabihf": "4.19.0", + "@rollup/rollup-linux-arm64-gnu": "4.19.0", + "@rollup/rollup-linux-arm64-musl": "4.19.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.19.0", + "@rollup/rollup-linux-riscv64-gnu": "4.19.0", + "@rollup/rollup-linux-s390x-gnu": "4.19.0", + "@rollup/rollup-linux-x64-gnu": "4.19.0", + "@rollup/rollup-linux-x64-musl": "4.19.0", + "@rollup/rollup-win32-arm64-msvc": "4.19.0", + "@rollup/rollup-win32-ia32-msvc": "4.19.0", + "@rollup/rollup-win32-x64-msvc": "4.19.0", "fsevents": "~2.3.2" } }, @@ -11324,11 +11332,11 @@ } }, "node_modules/shiki": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.10.3.tgz", - "integrity": "sha512-eneCLncGuvPdTutJuLyUGS8QNPAVFO5Trvld2wgEq1e002mwctAhJKeMGWtWVXOIEzmlcLRqcgPSorR6AVzOmQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.11.0.tgz", + "integrity": "sha512-NqH/O1zRHvnuk/WfSL6b7+DtI7/kkMMSQGlZhm9DyzSU+SoIHhaw/fBZMr+zp9R8KjdIzkk3JKSC6hORuGDyng==", "dependencies": { - "@shikijs/core": "1.10.3", + "@shikijs/core": "1.11.0", "@types/hast": "^3.0.4" } }, @@ -12858,15 +12866,14 @@ } }, "node_modules/which-pm": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-2.2.0.tgz", - "integrity": "sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-3.0.0.tgz", + "integrity": "sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==", "dependencies": { - "load-yaml-file": "^0.2.0", - "path-exists": "^4.0.0" + "load-yaml-file": "^0.2.0" }, "engines": { - "node": ">=8.15" + "node": ">=18.12" } }, "node_modules/which-pm-runs": { diff --git a/package.json b/package.json index eb999662..7662fd9f 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "dependencies": { "@allmaps/iiif-parser": "1.0.0-beta.37", "@annotorious/react": "3.0.0-rc.30", - "@astrojs/netlify": "^5.3.5", + "@astrojs/netlify": "^5.4.0", "@astrojs/node": "^8.3.2", "@astrojs/react": "^3.6.0", "@phosphor-icons/react": "^2.1.7", @@ -38,7 +38,7 @@ "@radix-ui/react-toggle": "^1.1.0", "@radix-ui/react-toggle-group": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", - "@react-spring/web": "^9.7.3", + "@react-spring/web": "^9.7.4", "@recogito/annotorious-supabase": "1.0.0-rc.14", "@recogito/react-pdf-annotator": "1.0.0-rc.23", "@recogito/react-text-annotator": "3.0.0-rc.35", @@ -48,7 +48,7 @@ "@uppy/core": "3.11.3", "@uppy/xhr-upload": "3.6.4", "accept-language-parser": "^1.5.0", - "astro": "^4.11.4", + "astro": "^4.12.2", "classnames": "^2.5.1", "confetti-explosion-react": "^0.1.2", "crypto-js": "4.2.0", @@ -70,7 +70,7 @@ "uuid": "10.0.0" }, "devDependencies": { - "@astrojs/ts-plugin": "^1.8.0", + "@astrojs/ts-plugin": "^1.9.0", "@types/accept-language-parser": "^1.5.6", "@types/crypto-js": "4.2.2", "@types/openseadragon": "3.0.10", diff --git a/src/backend/auth/index.ts b/src/backend/auth/index.ts index 770f11c3..9273ea2b 100644 --- a/src/backend/auth/index.ts +++ b/src/backend/auth/index.ts @@ -1,26 +1,16 @@ import type { SupabaseClient, User } from '@supabase/supabase-js'; -export const getUser = (supabase: SupabaseClient): Promise => { - console.log('calling supabase.auth.getSession()'); - - return supabase.auth.getSession().then(({ error }) => { +export const getUser = (supabase: SupabaseClient): Promise => + supabase.auth.getSession().then(({ error }) => { if (error) { - console.error('error getting session'); - console.error(error); throw error; } else { - console.log('calling supabase.auth.getUser()'); - return supabase.auth.getUser().then(({ error, data }) => { if (error) { - console.error('error getting user'); - console.error(error); throw error; } else if (!data.user) { - console.error('No error, but could not get session object'); throw 'Unauthorized'; } else if (data.user.role !== 'authenticated') { - console.error('User not authenticated', data.user); throw 'Unauthorized'; } else { return data.user; @@ -28,7 +18,6 @@ export const getUser = (supabase: SupabaseClient): Promise => { }); } }); -} export const isLoggedIn = (supabase: SupabaseClient) => getUser(supabase) diff --git a/src/backend/supabaseServerClient.ts b/src/backend/supabaseServerClient.ts index 98476cbf..b0152c91 100644 --- a/src/backend/supabaseServerClient.ts +++ b/src/backend/supabaseServerClient.ts @@ -9,40 +9,6 @@ const supabaseServerUrl = const supabaseAPIKey = import.meta.env.PUBLIC_SUPABASE_API_KEY; -const refreshSession = async (supabase: SupabaseClient, cookies: AstroCookies) => { - console.log('checking SSR session'); - const { data: { session }} = await supabase.auth.getSession(); - if (session) { - console.log('SSR session is valid'); - return true; - } - - console.log('no longer valid - refreshing'); - - const refreshToken = cookies.get('sb-refresh-token'); - const accessToken = cookies.get('sb-access-token'); - - if (refreshToken?.value && accessToken?.value) { - return await supabase.auth.setSession({ - refresh_token: refreshToken.value, - access_token: accessToken.value - }).then(({ data, error }) => { - if (error) - console.error('Error refreshing session!', error); - else - console.log('session refreshed successfully', data); - - return !error - }) - } else { - if (!refreshToken?.value) - console.warn('refresh token missing!'); - - if (!accessToken?.value) - console.warn('access token missing'); - } -} - export const createSupabaseServerClient = ( cookies: AstroCookies ) => { @@ -65,4 +31,24 @@ export const createSupabaseServerClient = ( ); return refreshSession(supabase, cookies).then(() => supabase); -} \ No newline at end of file +} + +const refreshSession = async (supabase: SupabaseClient, cookies: AstroCookies) => { + const { data: { session }} = await supabase.auth.getSession(); + if (session) return true; + + const refreshToken = cookies.get('sb-refresh-token'); + const accessToken = cookies.get('sb-access-token'); + + if (refreshToken?.value && accessToken?.value) { + return await supabase.auth.setSession({ + refresh_token: refreshToken.value, + access_token: accessToken.value + }).then(({ data, error }) => { + if (error) + console.error('Error refreshing session!', error); + + return !error + }) + } +} diff --git a/src/config.json b/src/config.json index 75549d88..c8ea5195 100644 --- a/src/config.json +++ b/src/config.json @@ -23,7 +23,7 @@ { "name": "Sign in with SSO", "type": "saml", - "domain": "performantsoftware.com" + "domain": "example.com" }, { "name": "Send Magic Link", diff --git a/src/pages/404.astro b/src/pages/404.astro index dbba15fc..77ef6072 100644 --- a/src/pages/404.astro +++ b/src/pages/404.astro @@ -2,8 +2,6 @@ import { getTranslations } from '@i18n'; import BaseLayout from '@layouts/BaseLayout.astro'; -console.log('[astro 404]'); - const { t } = getTranslations(Astro.request, 'error'); --- diff --git a/src/pages/500.astro b/src/pages/500.astro index 45733347..4382c8f7 100644 --- a/src/pages/500.astro +++ b/src/pages/500.astro @@ -2,8 +2,6 @@ import { getTranslations } from '@i18n'; import BaseLayout from '@layouts/BaseLayout.astro'; -console.log('[astro 500]'); - const { t } = getTranslations(Astro.request, 'error'); --- diff --git a/src/pages/[lang]/index.astro b/src/pages/[lang]/index.astro index b6cd0b00..948f77a0 100644 --- a/src/pages/[lang]/index.astro +++ b/src/pages/[lang]/index.astro @@ -3,19 +3,14 @@ import { getMyProfile } from '@backend/crud'; import { createSupabaseServerClient } from '@backend/supabaseServerClient'; import { getLangFromUrl } from '@i18n'; -console.log('[lang index] creating client', Astro.url); const supabase = await createSupabaseServerClient(Astro.cookies); const lang = getLangFromUrl(Astro.url); const me = await getMyProfile(supabase); -console.log('[lang index] me'); -console.log(me); - if (me.error || !me.data) { return Astro.redirect(`/${lang}/sign-in?redirect-to=${Astro.url.pathname}`); } else { - console.log('[lang index] redirecting to: ', `/${lang}/projects/`); return Astro.redirect(`/${lang}/projects/`); } --- diff --git a/src/pages/[lang]/projects/index.astro b/src/pages/[lang]/projects/index.astro index 846a946f..156b279e 100644 --- a/src/pages/[lang]/projects/index.astro +++ b/src/pages/[lang]/projects/index.astro @@ -8,16 +8,9 @@ import BaseLayout from '@layouts/BaseLayout.astro'; const lang = getLangFromUrl(Astro.url); -console.log(`[projects ${lang} index] creating SSR client`); - const supabase = await createSupabaseServerClient(Astro.cookies); -console.log('[projects index] fetching my profile'); - const me = await getMyProfile(supabase); -console.log('[projects index] me:') -console.log(me); - if (me.error || !me.data) { return Astro.redirect(`/${lang}/sign-in?redirect-to=${Astro.url.pathname}`); } diff --git a/src/pages/[lang]/sign-in.astro b/src/pages/[lang]/sign-in.astro index 78f1aa83..70284f49 100644 --- a/src/pages/[lang]/sign-in.astro +++ b/src/pages/[lang]/sign-in.astro @@ -5,8 +5,6 @@ import { getTranslations } from '@i18n'; import type { LoginMethod } from '../../Types'; import config from '../../config.json'; -console.log('[lang/sign-in]', Astro.url); - const methods = config.authentication.methods; const splashURL = config.branding.home_banner; --- diff --git a/src/pages/[lang]/sign-out.astro b/src/pages/[lang]/sign-out.astro index b8e9ad8a..38681835 100644 --- a/src/pages/[lang]/sign-out.astro +++ b/src/pages/[lang]/sign-out.astro @@ -4,8 +4,6 @@ import { Logout } from '@apps/auth-logout'; import { getTranslations } from '@i18n'; import { createSupabaseServerClient } from '@backend/supabaseServerClient'; -console.log('[lang/sign-in]'); - const supabase = await createSupabaseServerClient(Astro.cookies); await supabase.auth.signOut(); --- diff --git a/src/pages/index.astro b/src/pages/index.astro index 1c6eddf6..ce3d06dc 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -8,18 +8,12 @@ const accepts = Astro.request.headers.get('accept-language'); const lang = accepts ? parser.pick(Object.keys(languages), accepts) : defaultLang; -console.log('[index] creating the server client'); const supabase = await createSupabaseServerClient(Astro.cookies); -console.log('[index] success. retrieving my profile.'); const me = await getMyProfile(supabase); -console.log('[index] got my profile:') -console.log(me); if (me.error || !me.data) { - console.log('[index] User not logged in - redirecting to sign-in') return Astro.redirect(`/${lang}/sign-in?redirect-to=${Astro.url.pathname}`); } else { - console.log('[index] user logged in redirecting to: ' + `/${lang}/projects/`); return Astro.redirect(`/${lang}/projects/`); } --- From 251fe9048b2998af9ea8e7463d541544e615ff7c Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 08:02:24 +0200 Subject: [PATCH 25/53] Minor tweak to prevent error logs when user isn't logged in --- src/backend/auth/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backend/auth/index.ts b/src/backend/auth/index.ts index 9273ea2b..3346e1c8 100644 --- a/src/backend/auth/index.ts +++ b/src/backend/auth/index.ts @@ -1,9 +1,9 @@ import type { SupabaseClient, User } from '@supabase/supabase-js'; export const getUser = (supabase: SupabaseClient): Promise => - supabase.auth.getSession().then(({ error }) => { - if (error) { - throw error; + supabase.auth.getSession().then(({ error, data }) => { + if (error || !data?.session) { + throw error || 'Unauthorized'; } else { return supabase.auth.getUser().then(({ error, data }) => { if (error) { From 3d6fd36d2ee14fa88436a2c6e0ae5e371db98e02 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 08:09:01 +0200 Subject: [PATCH 26/53] v1.0.0.beta.6 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2414ba14..0de4ac4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "recogito-client", - "version": "0.0.1", + "version": "1.0.0.beta.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "recogito-client", - "version": "0.0.1", + "version": "1.0.0.beta.6", "hasInstallScript": true, "dependencies": { "@allmaps/iiif-parser": "1.0.0-beta.37", diff --git a/package.json b/package.json index 7662fd9f..c068c8ff 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "recogito-client", "type": "module", - "version": "0.0.1", + "version": "1.0.0.beta.6", "scripts": { "dev": "astro dev", "start": "astro dev", From acfa7eef5cc867960fca01a54832e15b4b0850db Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 08:23:59 +0200 Subject: [PATCH 27/53] Dashboard CSS tweaks --- src/components/Notifications/Notifications.css | 4 ++-- src/themes/default/index.css | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/Notifications/Notifications.css b/src/components/Notifications/Notifications.css index 53bee0de..10ddf354 100644 --- a/src/components/Notifications/Notifications.css +++ b/src/components/Notifications/Notifications.css @@ -17,8 +17,8 @@ button.unstyled.icon-only.notification-actions-trigger { height: 1tpx; line-height: 15px; position: absolute; - right: -5px; - top: -5px; + right: 0; + top: 0; width: 15px; } diff --git a/src/themes/default/index.css b/src/themes/default/index.css index 5fc27c23..328d1efd 100644 --- a/src/themes/default/index.css +++ b/src/themes/default/index.css @@ -181,8 +181,10 @@ body { color: var(--gray-900); font-family: Inter, Arial, Helvetica, sans-serif; font-size: 16px; + height: 100%; line-height: 160%; margin: 0; + min-height: 100%; padding: 0; } From f12e9f8d0ecf51287c19bdfb7dbd8945d4727208 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 08:33:43 +0200 Subject: [PATCH 28/53] Minor tweaks, cleanup --- .../CreateProjectDialog/CreateProjectDialog.css | 12 ++++++++++-- .../CreateProjectDialog/CreateProjectDialog.tsx | 16 ++++++++-------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/components/CreateProjectDialog/CreateProjectDialog.css b/src/components/CreateProjectDialog/CreateProjectDialog.css index f881639f..45e53fe9 100644 --- a/src/components/CreateProjectDialog/CreateProjectDialog.css +++ b/src/components/CreateProjectDialog/CreateProjectDialog.css @@ -12,6 +12,7 @@ display: flex; justify-content: flex-end; } + .create-project-switch-root { width: 42px; height: 25px; @@ -41,6 +42,7 @@ transform: translateX(2px); will-change: transform; } + .create-project-switch-thumb[data-state='checked'] { transform: translateX(19px); background-color: var(--bright-blue); @@ -92,6 +94,12 @@ } .create-project-radio-group-item { + align-items: center; + display: flex; + gap: 0.25rem; +} + +.create-project-radio-group-button { background-color: white; width: 20px; height: 20px; @@ -100,11 +108,11 @@ padding: 0 !important; } -.create-project-radio-group-item[data-state='checked'] { +.create-project-radio-group-button[data-state='checked'] { border-color: var(--primary); } -.create-project-radio-group-item:hover { +.create-project-radio-group-button:hover { background-color: var(--gray-300); } diff --git a/src/components/CreateProjectDialog/CreateProjectDialog.tsx b/src/components/CreateProjectDialog/CreateProjectDialog.tsx index 0ffd3e81..05f87a2d 100644 --- a/src/components/CreateProjectDialog/CreateProjectDialog.tsx +++ b/src/components/CreateProjectDialog/CreateProjectDialog.tsx @@ -88,9 +88,9 @@ export const CreateProjectDialog = (props: CreateProjectDialogProps) => { value === 'public' ? setOpenJoin(true) : setOpenJoin(false) } > -
+
@@ -110,9 +110,9 @@ export const CreateProjectDialog = (props: CreateProjectDialogProps) => { ] }
-
+
@@ -151,9 +151,9 @@ export const CreateProjectDialog = (props: CreateProjectDialogProps) => { : setOpenEdit(true) } > -
+
@@ -173,9 +173,9 @@ export const CreateProjectDialog = (props: CreateProjectDialogProps) => { ] }
-
+
From 9b89e72b24608cfd51d6451f6e4b17014361293e Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 09:14:23 +0200 Subject: [PATCH 29/53] Makes buttons clickable also when not clicking SVG directly --- src/themes/default/button/index.css | 1 + src/themes/default/button/unstyled.css | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/themes/default/button/index.css b/src/themes/default/button/index.css index 4b48da1c..19723004 100644 --- a/src/themes/default/button/index.css +++ b/src/themes/default/button/index.css @@ -110,6 +110,7 @@ button.icon-only { display: inline-flex; justify-content: center; min-width: auto; + padding: 0; } button.icon-only svg { diff --git a/src/themes/default/button/unstyled.css b/src/themes/default/button/unstyled.css index ca398986..ce41153c 100644 --- a/src/themes/default/button/unstyled.css +++ b/src/themes/default/button/unstyled.css @@ -26,13 +26,15 @@ button.unstyled:not(:disabled):hover { button.unstyled.icon-only { border: 2px solid transparent; border-radius: 50%; - width: 34px; height: 34px; outline: none; - padding: 2px; + padding: 0; + width: 34px; } button.unstyled.icon-only svg { + height: 100%; margin: 1px 0 0 0; - padding: 0; + padding: 0.5rem; + width: 100%; } From a2d5d96faf71adf64f0e63476c98e13d0a70a2a5 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 09:27:49 +0200 Subject: [PATCH 30/53] Dashboard CSS cleanup --- .../dashboard-projects/List/ProjectEntry.css | 1 + src/apps/dashboard-projects/List/ProjectList.css | 4 ++-- src/components/OwnerPill/OwnerPill.css | 16 +++++++++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/apps/dashboard-projects/List/ProjectEntry.css b/src/apps/dashboard-projects/List/ProjectEntry.css index 111da21a..6970d794 100644 --- a/src/apps/dashboard-projects/List/ProjectEntry.css +++ b/src/apps/dashboard-projects/List/ProjectEntry.css @@ -4,6 +4,7 @@ flex-direction: row; align-items: center; height: 64px; + font-size: var(--font-tiny); border-bottom: 1px solid var(--gray-200); } diff --git a/src/apps/dashboard-projects/List/ProjectList.css b/src/apps/dashboard-projects/List/ProjectList.css index 6880ec5b..77bef7a1 100644 --- a/src/apps/dashboard-projects/List/ProjectList.css +++ b/src/apps/dashboard-projects/List/ProjectList.css @@ -1,5 +1,5 @@ -.projects-list { - width: 100%; +.dashboard-projects-list { + margin-top: 2rem; } .project-list-header { diff --git a/src/components/OwnerPill/OwnerPill.css b/src/components/OwnerPill/OwnerPill.css index 72b65329..5ca93230 100644 --- a/src/components/OwnerPill/OwnerPill.css +++ b/src/components/OwnerPill/OwnerPill.css @@ -1,11 +1,17 @@ .owner-pill { - width: 75px; - height: 24px; - border-radius: 12px; - gap: 4px; + align-items: center; background-color: var(--gray-200); + border-radius: 100vw; display: flex; flex-direction: row; + gap: 4px; justify-content: center; - align-items: center; + padding: 0 0.625rem 0 0.375rem; + line-height: 200%; +} + +.owner-pill svg { + flex: 0 0 auto; + height: 14px; + width: 14px; } From 77352cd9967aa83f7a0b5071fa228b58a4b354dd Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 09:42:11 +0200 Subject: [PATCH 31/53] Fixed account menu style --- src/components/AccountActions/AccountActions.css | 12 ------------ src/components/AccountActions/AccountActions.tsx | 9 +++++++-- src/themes/default/dropdown/index.css | 13 +++++++++++++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/components/AccountActions/AccountActions.css b/src/components/AccountActions/AccountActions.css index 06310b88..5f7bd3eb 100644 --- a/src/components/AccountActions/AccountActions.css +++ b/src/components/AccountActions/AccountActions.css @@ -40,15 +40,3 @@ font-size: 0.675em; font-weight: 400; } - -.divider { - margin-top: 10px; - border-top: 1px solid black; - padding-top: 10px; -} - -.site-text { - display: flex; - justify-content: space-around; - font-size: small; -} diff --git a/src/components/AccountActions/AccountActions.tsx b/src/components/AccountActions/AccountActions.tsx index 934492af..c08ce521 100644 --- a/src/components/AccountActions/AccountActions.tsx +++ b/src/components/AccountActions/AccountActions.tsx @@ -105,10 +105,15 @@ export const AccountActions = (props: AccountProps) => { {t['Sign out']} + {props.profile.isOrgAdmin && ( <> -
-
{t['Site Administration']}
+
+ +
+ {t['Site Administration']} +
+ Date: Mon, 22 Jul 2024 09:50:29 +0200 Subject: [PATCH 32/53] Fixes ToggleDisplay behavior --- .../ToggleDisplay/ToggleDisplay.tsx | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/components/ToggleDisplay/ToggleDisplay.tsx b/src/components/ToggleDisplay/ToggleDisplay.tsx index d6d55e92..e49941f5 100644 --- a/src/components/ToggleDisplay/ToggleDisplay.tsx +++ b/src/components/ToggleDisplay/ToggleDisplay.tsx @@ -3,24 +3,33 @@ import { SquaresFour, ListBullets } from '@phosphor-icons/react'; import './ToggleDisplay.css'; -export type ToggleDisplayOptions = 'cards' | 'rows'; +export type ToggleDisplayValue = 'cards' | 'rows'; interface ToggleDisplayProps { - display: ToggleDisplayOptions; - onChangeDisplay(display: ToggleDisplayOptions): void; + + display: ToggleDisplayValue; + + onChangeDisplay(display: ToggleDisplayValue): void; + } export const ToggleDisplay = (props: ToggleDisplayProps) => { + + // Note that the Radix toggle group can have a value of undefined. + // In our case, we want to emulate radio group behavior! + const onValueChange = (value?: string) => { + if (value) + props.onChangeDisplay(value as ToggleDisplayValue); + } + return ( - props.onChangeDisplay(value as ToggleDisplayOptions) - } - > + onValueChange={onValueChange}> + @@ -29,5 +38,6 @@ export const ToggleDisplay = (props: ToggleDisplayProps) => { - ); -}; + ) + +} From a38cbe9788f8f3283da58951b8e43857c8b74d1b Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 09:50:57 +0200 Subject: [PATCH 33/53] Minor fix --- src/apps/dashboard-projects/Header/Header.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/apps/dashboard-projects/Header/Header.tsx b/src/apps/dashboard-projects/Header/Header.tsx index 59f2b575..c038be11 100644 --- a/src/apps/dashboard-projects/Header/Header.tsx +++ b/src/apps/dashboard-projects/Header/Header.tsx @@ -7,7 +7,7 @@ import { HeaderSearchAction } from '@components/Search'; import { HeaderSortAction, type SortFunction } from '@components/Sort'; import { ToggleDisplay, - type ToggleDisplayOptions, + type ToggleDisplayValue, } from '@components/ToggleDisplay'; import { ProjectFilter } from '../ProjectsHome'; import type { @@ -52,9 +52,9 @@ interface HeaderProps { onSetProjects(projects: ExtendedProjectData[]): void; - display: ToggleDisplayOptions; + display: ToggleDisplayValue; - onSetDisplay(display: ToggleDisplayOptions): void; + onSetDisplay(display: ToggleDisplayValue): void; } export const Header = (props: HeaderProps) => { From 4a4eeab1992cc3e087becda71d727abef9fb3472 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 09:58:13 +0200 Subject: [PATCH 34/53] Fixes 'busy' spin behavior of the 'Create New Project' button in empty state --- .../Empty/ProjectsEmpty.tsx | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/apps/dashboard-projects/Empty/ProjectsEmpty.tsx b/src/apps/dashboard-projects/Empty/ProjectsEmpty.tsx index 464ddd63..6cc01d40 100644 --- a/src/apps/dashboard-projects/Empty/ProjectsEmpty.tsx +++ b/src/apps/dashboard-projects/Empty/ProjectsEmpty.tsx @@ -22,24 +22,18 @@ export const ProjectsEmpty = (props: ProjectsEmptyProps) => { const { t } = props.i18n; - const [fetching, setFetching] = useState(false); + const [busy, setBusy] = useState(false); const [createProjectOpen, setCreateProjectOpen] = useState(false); - const onCreateProject = () => { - if (fetching) return; - - setFetching(true); - - setCreateProjectOpen(true); - }; - const handleSaveProject = ( name: string, description: string, openJoin: boolean, openEdit: boolean ) => { + setBusy(true); + supabase .rpc('create_project_rpc', { _description: description, @@ -49,9 +43,10 @@ export const ProjectsEmpty = (props: ProjectsEmptyProps) => { }) .then(({ data, error }) => { if (error) { - setFetching(false); + setBusy(false); props.onError('Something went wrong'); } else { + setBusy(false); props.onProjectCreated(data); window.location.href = `/${props.i18n.lang}/projects/${data[0].id}`; } @@ -71,9 +66,8 @@ export const ProjectsEmpty = (props: ProjectsEmptyProps) => { {canCreateProjects ? ( @@ -102,6 +96,7 @@ export const ProjectsEmpty = (props: ProjectsEmptyProps) => { )}
+ setCreateProjectOpen(false)} From 2c74db1545a84aa1a6465a7bb7be5a4258525caa Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 10:05:28 +0200 Subject: [PATCH 35/53] Dashboard CSS fixes + fixed 'leave project' behavior --- src/apps/dashboard-projects/Empty/ProjectsEmpty.tsx | 8 ++------ src/apps/dashboard-projects/ProjectsHome.css | 1 + src/apps/dashboard-projects/ProjectsHome.tsx | 13 +++++-------- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/apps/dashboard-projects/Empty/ProjectsEmpty.tsx b/src/apps/dashboard-projects/Empty/ProjectsEmpty.tsx index 6cc01d40..ff6d7df8 100644 --- a/src/apps/dashboard-projects/Empty/ProjectsEmpty.tsx +++ b/src/apps/dashboard-projects/Empty/ProjectsEmpty.tsx @@ -74,16 +74,12 @@ export const ProjectsEmpty = (props: ProjectsEmptyProps) => { ) : (

{t["You don't have creator rights"]}{' '} - {invitations === 0 ? ( - - ) : invitations === 1 ? ( + {invitations === 1 ? ( <> {t['Fret not one'].split('${icon}')[0]} {t['Fret not one'].split('${icon}')[1]} - ) : ( + ) : invitations > 1 && ( <> {t['Fret not more'] .split('${icon}')[0] diff --git a/src/apps/dashboard-projects/ProjectsHome.css b/src/apps/dashboard-projects/ProjectsHome.css index 931b3ef8..dc15f92b 100644 --- a/src/apps/dashboard-projects/ProjectsHome.css +++ b/src/apps/dashboard-projects/ProjectsHome.css @@ -1,6 +1,7 @@ .dashboard-projects-home { display: flex; flex-direction: column; + min-height: 100%; } .dashboard-projects-empty { diff --git a/src/apps/dashboard-projects/ProjectsHome.tsx b/src/apps/dashboard-projects/ProjectsHome.tsx index d4906ce4..0a5d907f 100644 --- a/src/apps/dashboard-projects/ProjectsHome.tsx +++ b/src/apps/dashboard-projects/ProjectsHome.tsx @@ -9,7 +9,7 @@ import { ProjectsGrid } from './Grid'; import { ProjectsList } from './List'; import { ProfileNagDialog } from '@components/ProfileNagDialog'; import { TopBar } from '@components/TopBar'; -import type { ToggleDisplayOptions } from '@components/ToggleDisplay'; +import type { ToggleDisplayValue } from '@components/ToggleDisplay'; import type { ExtendedProjectData, Invitation, @@ -62,7 +62,7 @@ export const ProjectsHome = (props: ProjectsHomeProps) => { const [showProfileNag, setShowProfileNag] = useState(false); - const [display, setDisplay] = useState('cards'); + const [display, setDisplay] = useState('cards'); const isReader = policies ? !policies.get('projects').has('INSERT') : true; @@ -152,11 +152,8 @@ export const ProjectsHome = (props: ProjectsHomeProps) => { setProjects((projects) => projects.filter((p) => p.id !== project.id)); const onLeaveProject = (project: ExtendedProjectData) => { - project.contexts = []; - - setProjects((projects) => - projects.map((p) => (p.id === project.id ? project : p)) - ); + project.contexts = []; // Not sure what this is for + setProjects(projects => projects.filter(p => p.id !== project.id)); }; const onError = (error: string) => @@ -227,7 +224,7 @@ export const ProjectsHome = (props: ProjectsHomeProps) => { onSetDisplay={setDisplay} /> - {allProjects.length === 0 ? ( + {filteredProjects.length === 0 ? ( policies && ( Date: Mon, 22 Jul 2024 10:12:30 +0200 Subject: [PATCH 36/53] Fixed redundant button styles --- src/components/ProjectCard/JoinProjectDialog.css | 16 +--------------- src/components/ProjectCard/JoinProjectDialog.tsx | 4 ++-- src/components/ProjectCard/OpenJoin.css | 9 +-------- src/components/ProjectCard/OpenJoin.tsx | 4 ++-- 4 files changed, 6 insertions(+), 27 deletions(-) diff --git a/src/components/ProjectCard/JoinProjectDialog.css b/src/components/ProjectCard/JoinProjectDialog.css index 0f7c2246..4bac809d 100644 --- a/src/components/ProjectCard/JoinProjectDialog.css +++ b/src/components/ProjectCard/JoinProjectDialog.css @@ -1,18 +1,4 @@ .join-project-dialog-button-container { display: flex; justify-content: space-between; -} - -.join-project-dialog-button-join { - min-height: 34px; - height: 34px; - background-color: var(--dark-blue); - color: var(--gray-100); -} - -.join-project-dialog-button-cancel { - min-height: 34px; - height: 34px; - background-color: var(--gray-300); - color: var(--gray-900); -} +} \ No newline at end of file diff --git a/src/components/ProjectCard/JoinProjectDialog.tsx b/src/components/ProjectCard/JoinProjectDialog.tsx index f8dd212b..1594ee99 100644 --- a/src/components/ProjectCard/JoinProjectDialog.tsx +++ b/src/components/ProjectCard/JoinProjectDialog.tsx @@ -35,13 +35,13 @@ export const JoinProjectDialog = (props: JoinProjectDialogProps) => {

); From 6c79c8db49ac38977ebff6547814308c81c7f584 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 10:39:34 +0200 Subject: [PATCH 37/53] Added useLocalStorageBackedState + used it for dashboard display mode --- src/apps/dashboard-projects/ProjectsHome.tsx | 7 ++---- src/util/hooks/index.ts | 1 + src/util/hooks/useLocalStorageBackedState.ts | 25 ++++++++++++++++++++ 3 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 src/util/hooks/index.ts create mode 100644 src/util/hooks/useLocalStorageBackedState.ts diff --git a/src/apps/dashboard-projects/ProjectsHome.tsx b/src/apps/dashboard-projects/ProjectsHome.tsx index 0a5d907f..60a738bf 100644 --- a/src/apps/dashboard-projects/ProjectsHome.tsx +++ b/src/apps/dashboard-projects/ProjectsHome.tsx @@ -18,6 +18,7 @@ import type { } from 'src/Types'; import './ProjectsHome.css'; +import { useLocalStorageBackedState } from 'src/util/hooks'; export interface ProjectsHomeProps { i18n: Translations; @@ -62,7 +63,7 @@ export const ProjectsHome = (props: ProjectsHomeProps) => { const [showProfileNag, setShowProfileNag] = useState(false); - const [display, setDisplay] = useState('cards'); + const [display, setDisplay] = useLocalStorageBackedState('rs-dashboard-display', 'cards'); const isReader = policies ? !policies.get('projects').has('INSERT') : true; @@ -118,10 +119,6 @@ export const ProjectsHome = (props: ProjectsHomeProps) => { p.users.filter((u) => u.user.id === me.id).length > 0 ); - const allProjects = me.isOrgAdmin - ? projects - : [...new Set([...myProjects, ...sharedProjects, ...openJoinProjects])]; - const filteredProjects = isReader ? filter === ProjectFilter.MINE ? sharedProjects diff --git a/src/util/hooks/index.ts b/src/util/hooks/index.ts new file mode 100644 index 00000000..89b0273c --- /dev/null +++ b/src/util/hooks/index.ts @@ -0,0 +1 @@ +export * from './useLocalStorageBackedState'; \ No newline at end of file diff --git a/src/util/hooks/useLocalStorageBackedState.ts b/src/util/hooks/useLocalStorageBackedState.ts new file mode 100644 index 00000000..9c4abda0 --- /dev/null +++ b/src/util/hooks/useLocalStorageBackedState.ts @@ -0,0 +1,25 @@ +import { useEffect, useState } from 'react'; + +export const useLocalStorageBackedState = (key: string, defaultValue: T) => { + + const [value, setValue] = useState(defaultValue); + + useEffect(() => { + const saved = localStorage.getItem(key); + + if (saved) { + try { + setValue(JSON.parse(saved) as T); + } catch (error) { + console.error('Error parsing stored state', error); + } + } + }, [key]); + + useEffect(() => { + localStorage.setItem(key, JSON.stringify(value)); + }, [value]); + + return [value, setValue] as const; + +} \ No newline at end of file From e33082b692b459077a351be4a8fa93c9f115a675 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Mon, 22 Jul 2024 10:45:37 +0200 Subject: [PATCH 38/53] Minor TS fix --- src/apps/dashboard-projects/ProjectsHome.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/dashboard-projects/ProjectsHome.tsx b/src/apps/dashboard-projects/ProjectsHome.tsx index 60a738bf..5b57bc13 100644 --- a/src/apps/dashboard-projects/ProjectsHome.tsx +++ b/src/apps/dashboard-projects/ProjectsHome.tsx @@ -63,7 +63,7 @@ export const ProjectsHome = (props: ProjectsHomeProps) => { const [showProfileNag, setShowProfileNag] = useState(false); - const [display, setDisplay] = useLocalStorageBackedState('rs-dashboard-display', 'cards'); + const [display, setDisplay] = useLocalStorageBackedState('rs-dashboard-display', 'cards'); const isReader = policies ? !policies.get('projects').has('INSERT') : true; From deb2af781ab4b3feac3892e99cf905b7ff2aa0be Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Tue, 23 Jul 2024 14:29:47 +0200 Subject: [PATCH 39/53] Formatting --- src/apps/dashboard-projects/ProjectsHome.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/apps/dashboard-projects/ProjectsHome.tsx b/src/apps/dashboard-projects/ProjectsHome.tsx index 5b57bc13..a85afc80 100644 --- a/src/apps/dashboard-projects/ProjectsHome.tsx +++ b/src/apps/dashboard-projects/ProjectsHome.tsx @@ -10,6 +10,7 @@ import { ProjectsList } from './List'; import { ProfileNagDialog } from '@components/ProfileNagDialog'; import { TopBar } from '@components/TopBar'; import type { ToggleDisplayValue } from '@components/ToggleDisplay'; +import { useLocalStorageBackedState } from 'src/util/hooks'; import type { ExtendedProjectData, Invitation, @@ -18,7 +19,7 @@ import type { } from 'src/Types'; import './ProjectsHome.css'; -import { useLocalStorageBackedState } from 'src/util/hooks'; + export interface ProjectsHomeProps { i18n: Translations; From 75a5008a5d503c0f0fb13c04d88de7f27a4c3841 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Tue, 23 Jul 2024 14:33:33 +0200 Subject: [PATCH 40/53] CSS tweak --- src/components/ProjectCard/ProjectCard.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/ProjectCard/ProjectCard.css b/src/components/ProjectCard/ProjectCard.css index 3d6ce228..be438728 100644 --- a/src/components/ProjectCard/ProjectCard.css +++ b/src/components/ProjectCard/ProjectCard.css @@ -16,6 +16,10 @@ justify-content: space-between; } +.project-card-header .owner-pill { + margin-right: 5px; +} + .project-card:hover { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 8px -2px rgba(0, 0, 0, 0.28); } From ee3801f89a62c6ceaa08b7fa1aa14bcb347e37a6 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Tue, 23 Jul 2024 16:31:47 +0200 Subject: [PATCH 41/53] Assignments view CSS refactoring --- .../AssignmentDetail/AssignmentDetail.css | 34 +++++--------- .../AssignmentDetail/AssignmentDetail.tsx | 1 - .../AssignmentsList/AssignmentsList.css | 32 +++++++------ .../AssignmentsList/AssignmentsList.tsx | 2 +- .../AssignmentsView/AssignmentsView.css | 16 ++++--- .../AssignmentsView/AssignmentsView.tsx | 2 +- .../DocumentsView/DocumentsView.tsx | 2 +- .../ProjectHeader/ProjectHeader.css | 47 ++++++++++--------- .../ProjectHeader/ProjectHeader.tsx | 4 +- src/apps/project-home/ProjectHome.css | 42 ++++++++++------- src/apps/project-home/ProjectHome.tsx | 5 +- .../BackButtonBar/BackButtonBar.css | 11 +++-- .../BackButtonBar/BackButtonBar.tsx | 2 +- src/components/DocumentCard/DocumentCard.css | 5 +- src/components/ProjectCard/ProjectCard.css | 2 +- src/layouts/BaseLayout.astro | 1 + 16 files changed, 111 insertions(+), 97 deletions(-) diff --git a/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.css b/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.css index 5a638187..af3da4a4 100644 --- a/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.css +++ b/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.css @@ -1,23 +1,11 @@ .assignment-detail-container { - display: flex; flex-grow: 1; - flex-direction: row; - width: 67%; - align-items: stretch; -} - -.assignment-detail-divider { - width: 30px; - margin-left: 30px; - border-right: 1px solid var(--gray-200); } .assignment-detail-pane { - width: 100%; padding-top: 10px; - padding-left: 32px; - max-height: calc(100vh - 380px); - overflow-y: auto; + padding-left: 20px; + border-left: 1px solid var(--gray-200); } .assignment-detail-title-row { @@ -34,20 +22,15 @@ line-height: 27px; } -.assignment-detail-buttons { - float: right; - width: 200px; -} - .assignment-detail-description-row { - padding-top: 14px; + padding: 14px 30px 0 0; display: flex; flex-direction: row; } .assignment-detail-description { + flex-grow: 1; font-size: 14px; - width: 60%; font-weight: 400; color: var(--gray-600); max-height: 150px; @@ -55,6 +38,7 @@ } .assignment-detail-team { + flex: 0 0 auto; font-size: 14px; font-weight: 600; margin-left: 10px; @@ -70,10 +54,14 @@ margin-left: -8px; } +.assignment-detail-team-avatar .avatar { + border: 2px solid var(--gray-50); + height: 34px; + width: 34px; +} + .assignment-detail-buttons { display: flex; flex-direction: row; - width: 275px; - justify-content: space-between; margin-right: 30px; } diff --git a/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.tsx b/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.tsx index 3138da70..4fb4d15f 100644 --- a/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.tsx +++ b/src/apps/project-home/AssignmentsView/AssignmentDetail/AssignmentDetail.tsx @@ -35,7 +35,6 @@ export const AssignmentDetail = (props: AssignmentDetailProps) => { return (
-
diff --git a/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.css b/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.css index 6f57af65..b54c482f 100644 --- a/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.css +++ b/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.css @@ -1,26 +1,32 @@ .assignment-list-list { - height: calc(100vh - 380px); - overflow-y: auto; - width: 480px; + padding: 10px 20px 0 0; } .assignments-list-item { + box-sizing: border-box; width: 390px; height: 80px; - border-bottom: 1px solid var(--gray-200); - padding-left: 30px; - padding-top: 30px; + border-top: 1px solid var(--gray-200); + padding: 20px; cursor: pointer; } -.assignments-list-item-active { - width: 404px; - height: 80px; +.assignments-list-item:first-child { + border-top: none; +} + +.assignments-list-item:last-child { + border-bottom: 1px solid var(--gray-200); +} + +.assignments-list-item.active + .assignments-list-item { + border-top: none; +} + +.assignments-list-item.active { border: 1px solid var(--gray-300); + border-radius: var(--border-radius); background-color: var(--gray-100); - padding-left: 30px; - padding-top: 30px; - cursor: pointer; } .assignments-list-item-date { @@ -30,8 +36,6 @@ } .assignments-list-item-title { - margin-top: 10px; font-size: 16px; font-weight: 600; - line-height: 24px; } diff --git a/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.tsx b/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.tsx index d11c695f..7a713482 100644 --- a/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.tsx +++ b/src/apps/project-home/AssignmentsView/AssignmentsList/AssignmentsList.tsx @@ -19,7 +19,7 @@ export const AssignmentsList = (props: AssignmentsListProps) => { return (
{props.assignments.map(assignment => ( -
props.onAssignmentSelect(assignment)} > diff --git a/src/apps/project-home/AssignmentsView/AssignmentsView.css b/src/apps/project-home/AssignmentsView/AssignmentsView.css index b1a3c21a..2924224e 100644 --- a/src/apps/project-home/AssignmentsView/AssignmentsView.css +++ b/src/apps/project-home/AssignmentsView/AssignmentsView.css @@ -1,21 +1,25 @@ .project-assignments { - width: 100%; + display: flex; + flex-direction: column; + flex-grow: 1; } .project-assignments-document-header-bar { + align-items: center; + box-shadow: + 0 0 3px -1px rgba(0, 0, 0, 0.9), + 0 0 12px -4px rgba(0, 0, 0, 0.18); display: flex; flex-direction: row; - width: 100%; - height: 80px; - align-items: center; justify-content: space-between; - box-shadow: 0 4px 4px -2px rgba(0, 0, 0, 0.15); + padding: 10px 30px; } .project-assignments-presentation-pane { display: flex; flex-direction: row; - padding-top: 25px; + flex-grow: 1; + padding: 10px 0 0 30px; position: relative; align-items: stretch; } diff --git a/src/apps/project-home/AssignmentsView/AssignmentsView.tsx b/src/apps/project-home/AssignmentsView/AssignmentsView.tsx index 1de4af6b..dcbbbd3f 100644 --- a/src/apps/project-home/AssignmentsView/AssignmentsView.tsx +++ b/src/apps/project-home/AssignmentsView/AssignmentsView.tsx @@ -130,7 +130,7 @@ export const AssignmentsView = (props: AssignmentsViewProps) => { return (
-

{t['Assignments']}

+

{t['Assignments']}

{props.isAdmin && ( <> From ac92464f2df8d33a1b6760f0c8cde6e3a004bf6b Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Wed, 24 Jul 2024 15:16:55 +0200 Subject: [PATCH 49/53] Sidebar pages tab now open by default for multi-image IIIFs --- src/apps/annotation-image/ImageAnnotationDesktop.tsx | 10 +++++++++- src/apps/annotation-image/LeftDrawer/LeftDrawer.tsx | 11 +++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/apps/annotation-image/ImageAnnotationDesktop.tsx b/src/apps/annotation-image/ImageAnnotationDesktop.tsx index f99150f0..4fd2b9f2 100644 --- a/src/apps/annotation-image/ImageAnnotationDesktop.tsx +++ b/src/apps/annotation-image/ImageAnnotationDesktop.tsx @@ -90,6 +90,13 @@ export const ImageAnnotationDesktop = (props: ImageAnnotationProps) => { DrawingStyleExpression >(() => DEFAULT_STYLE); + useEffect(() => { + // The 'pages' sidebar should be open by default + // in case of multi-page IIIF images + if (canvases.length > 0) + setLeftPanelOpen(true); + }, [canvases]); + const onChangeStyle = (style?: (a: SupabaseAnnotation) => Color) => { if (style) { const hse: DrawingStyleExpression = ( @@ -255,9 +262,10 @@ export const ImageAnnotationDesktop = (props: ImageAnnotationProps) => {
0 ? 'PAGES' : undefined} i18n={props.i18n} + iiifCanvases={canvases} layers={layers} layerNames={layerNames} open={leftPanelOpen} diff --git a/src/apps/annotation-image/LeftDrawer/LeftDrawer.tsx b/src/apps/annotation-image/LeftDrawer/LeftDrawer.tsx index 24ffdcd7..511b21cd 100644 --- a/src/apps/annotation-image/LeftDrawer/LeftDrawer.tsx +++ b/src/apps/annotation-image/LeftDrawer/LeftDrawer.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { Faders, Files } from '@phosphor-icons/react'; import type { Canvas } from '@allmaps/iiif-parser'; import type { PresentUser } from '@annotorious/react'; @@ -13,6 +13,8 @@ interface LeftDrawerProps { currentImage?: string; + defaultTab?: 'FILTERS' | 'PAGES'; + i18n: Translations; iiifCanvases: Canvas[]; @@ -33,7 +35,12 @@ export const LeftDrawer = (props: LeftDrawerProps) => { const { t } = props.i18n; - const [tab, setTab] = useState<'FILTERS' | 'PAGES'>('FILTERS'); + const [tab, setTab] = useState<'FILTERS' | 'PAGES'>(props.defaultTab || 'FILTERS'); + + useEffect(() => { + if (!props.open && props.defaultTab) + setTab(props.defaultTab); + }, [props.defaultTab]); const transition = useTransition([props.open], { from: { transform: 'translateX(-140px)', opacity: 0 }, From c28e897f493b296df549fdeb4425de32e3bc8f11 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Wed, 24 Jul 2024 15:24:08 +0200 Subject: [PATCH 50/53] Removed left sidebar tab list for single images --- .../ImageAnnotationDesktop.tsx | 1 - .../LeftDrawer/LeftDrawer.tsx | 46 +++++++++---------- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/apps/annotation-image/ImageAnnotationDesktop.tsx b/src/apps/annotation-image/ImageAnnotationDesktop.tsx index 4fd2b9f2..ac5170cc 100644 --- a/src/apps/annotation-image/ImageAnnotationDesktop.tsx +++ b/src/apps/annotation-image/ImageAnnotationDesktop.tsx @@ -263,7 +263,6 @@ export const ImageAnnotationDesktop = (props: ImageAnnotationProps) => {
0 ? 'PAGES' : undefined} i18n={props.i18n} iiifCanvases={canvases} layers={layers} diff --git a/src/apps/annotation-image/LeftDrawer/LeftDrawer.tsx b/src/apps/annotation-image/LeftDrawer/LeftDrawer.tsx index 511b21cd..94c0816a 100644 --- a/src/apps/annotation-image/LeftDrawer/LeftDrawer.tsx +++ b/src/apps/annotation-image/LeftDrawer/LeftDrawer.tsx @@ -13,8 +13,6 @@ interface LeftDrawerProps { currentImage?: string; - defaultTab?: 'FILTERS' | 'PAGES'; - i18n: Translations; iiifCanvases: Canvas[]; @@ -35,12 +33,12 @@ export const LeftDrawer = (props: LeftDrawerProps) => { const { t } = props.i18n; - const [tab, setTab] = useState<'FILTERS' | 'PAGES'>(props.defaultTab || 'FILTERS'); + const [tab, setTab] = useState<'FILTERS' | 'PAGES'>('FILTERS'); useEffect(() => { - if (!props.open && props.defaultTab) - setTab(props.defaultTab); - }, [props.defaultTab]); + if (!props.open && props.iiifCanvases.length > 0) + setTab('PAGES'); + }, [props.iiifCanvases]); const transition = useTransition([props.open], { from: { transform: 'translateX(-140px)', opacity: 0 }, @@ -57,23 +55,25 @@ export const LeftDrawer = (props: LeftDrawerProps) => { className="anno-drawer ia-drawer ia-left-drawer" style={style}>