From d0fea9e42d52d0e56171c08ed780066d66ebe3f1 Mon Sep 17 00:00:00 2001 From: molvqingtai Date: Wed, 13 Nov 2024 19:24:16 +0800 Subject: [PATCH] feat: ranking of users supporting online websites Closes #48 --- package.json | 24 +- pnpm-lock.yaml | 3118 ++--------------- src/app/content/App.tsx | 28 +- src/app/content/components/DanmakuMessage.tsx | 2 +- src/app/content/index.tsx | 7 +- src/app/content/views/Footer/index.tsx | 8 +- src/app/content/views/Header/index.tsx | 110 +- src/app/content/views/Main/index.tsx | 8 +- src/components/Link.tsx | 11 +- src/components/magicui/AvatarCircles.tsx | 69 + src/constants/config.ts | 2 + src/domain/AppStatus.ts | 6 +- src/domain/{Room.ts => ChatRoom.ts} | 68 +- src/domain/Danmaku.ts | 20 +- src/domain/Notification.ts | 10 +- src/domain/Toast.ts | 17 +- src/domain/VirtualRoom.ts | 381 ++ .../externs/{PeerRoom.ts => ChatRoom.ts} | 20 +- src/domain/externs/Danmaku.ts | 2 +- src/domain/externs/Notification.ts | 2 +- src/domain/externs/VirtualRoom.ts | 42 + .../impls/{PeerRoom2.ts => ChatRoom.ts} | 39 +- src/domain/impls/Danmaku.ts | 2 +- src/domain/impls/Notification.ts | 2 +- src/domain/impls/Peer.ts | 22 + .../impls/{PeerRoom.ts => VirtualRoom.ts} | 84 +- src/domain/modules/Toast.ts | 14 +- src/messenger/index.ts | 2 +- src/utils/getSiteInfo.ts | 18 +- src/utils/index.ts | 2 + src/utils/isEqual.ts | 5 + src/utils/url.ts | 36 + tailwind.config.ts | 3 + 33 files changed, 1148 insertions(+), 3036 deletions(-) create mode 100644 src/components/magicui/AvatarCircles.tsx rename src/domain/{Room.ts => ChatRoom.ts} (92%) create mode 100644 src/domain/VirtualRoom.ts rename src/domain/externs/{PeerRoom.ts => ChatRoom.ts} (64%) create mode 100644 src/domain/externs/VirtualRoom.ts rename src/domain/impls/{PeerRoom2.ts => ChatRoom.ts} (79%) create mode 100644 src/domain/impls/Peer.ts rename src/domain/impls/{PeerRoom.ts => VirtualRoom.ts} (52%) create mode 100644 src/utils/isEqual.ts create mode 100644 src/utils/url.ts diff --git a/package.json b/package.json index fef0da6..3c9353f 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ "homepage": "https://github.com/molvqingtai/WebChat", "dependencies": { "@hookform/resolvers": "^3.9.1", - "@lottiefiles/dotlottie-react": "^0.9.3", "@perfsee/jsonr": "^1.13.0", "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-checkbox": "^1.1.2", @@ -57,7 +56,7 @@ "@radix-ui/react-portal": "^1.1.2", "@radix-ui/react-presence": "^1.1.1", "@radix-ui/react-radio-group": "^1.2.1", - "@radix-ui/react-scroll-area": "^1.2.0", + "@radix-ui/react-scroll-area": "^1.2.1", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-switch": "^1.1.1", "@resreq/event-hub": "^1.6.0", @@ -70,13 +69,13 @@ "clsx": "^2.1.1", "danmu": "^0.14.0", "date-fns": "^4.1.0", - "framer-motion": "^11.11.11", + "framer-motion": "^11.11.13", "idb-keyval": "^6.2.1", - "lucide-react": "^0.454.0", + "lucide-react": "^0.456.0", "nanoid": "^5.0.8", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-hook-form": "^7.53.1", + "react-hook-form": "^7.53.2", "react-markdown": "^9.0.1", "react-use": "^17.5.1", "react-virtuoso": "^4.12.0", @@ -88,7 +87,6 @@ "rxjs": "^7.8.1", "sonner": "^1.7.0", "tailwind-merge": "^2.5.4", - "trystero": "^0.20.0", "type-fest": "^4.26.1", "unstorage": "^1.13.1", "valibot": "1.0.0-beta.0" @@ -96,18 +94,18 @@ "devDependencies": { "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", - "@eslint-react/eslint-plugin": "^1.15.2", + "@eslint-react/eslint-plugin": "^1.16.1", "@eslint/js": "^9.14.0", "@semantic-release/changelog": "^6.0.3", "@semantic-release/exec": "^6.0.3", "@semantic-release/git": "^10.0.1", "@types/eslint": "^9.6.1", - "@types/eslint-plugin-tailwindcss": "^3.17.0", "@types/eslint__js": "^8.42.3", - "@types/node": "^22.8.7", + "@types/eslint-plugin-tailwindcss": "^3.17.0", + "@types/node": "^22.9.0", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", - "@typescript-eslint/parser": "^8.12.2", + "@typescript-eslint/parser": "^8.14.0", "@vitejs/plugin-react": "^4.3.3", "autoprefixer": "^10.4.20", "cross-env": "^7.0.3", @@ -115,12 +113,12 @@ "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-tailwindcss": "^3.17.5", - "globals": "^15.11.0", + "globals": "^15.12.0", "husky": "^9.1.6", "jiti": "^2.4.0", "lint-staged": "^15.2.10", "npm-run-all": "^4.1.5", - "postcss": "^8.4.47", + "postcss": "^8.4.49", "postcss-rem-to-responsive-pixel": "^6.0.2", "prettier": "^3.3.3", "rimraf": "^6.0.1", @@ -128,7 +126,7 @@ "tailwindcss": "^3.4.14", "tailwindcss-animate": "^1.0.7", "typescript": "^5.6.3", - "typescript-eslint": "^8.12.2", + "typescript-eslint": "^8.14.0", "vite-plugin-svgr": "^4.3.0", "webext-bridge": "^6.0.1", "wxt": "^0.19.13" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4d47e50..fc454e4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,10 +10,7 @@ importers: dependencies: '@hookform/resolvers': specifier: ^3.9.1 - version: 3.9.1(react-hook-form@7.53.1(react@18.3.1)) - '@lottiefiles/dotlottie-react': - specifier: ^0.9.3 - version: 0.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.9.1(react-hook-form@7.53.2(react@18.3.1)) '@perfsee/jsonr': specifier: ^1.13.0 version: 1.13.0 @@ -48,8 +45,8 @@ importers: specifier: ^1.2.1 version: 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-scroll-area': - specifier: ^1.2.0 - version: 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.2.1 + version: 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': specifier: ^1.1.0 version: 1.1.0(@types/react@18.3.12)(react@18.3.1) @@ -87,14 +84,14 @@ importers: specifier: ^4.1.0 version: 4.1.0 framer-motion: - specifier: ^11.11.11 - version: 11.11.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^11.11.13 + version: 11.11.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) idb-keyval: specifier: ^6.2.1 version: 6.2.1 lucide-react: - specifier: ^0.454.0 - version: 0.454.0(react@18.3.1) + specifier: ^0.456.0 + version: 0.456.0(react@18.3.1) nanoid: specifier: ^5.0.8 version: 5.0.8 @@ -105,8 +102,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) react-hook-form: - specifier: ^7.53.1 - version: 7.53.1(react@18.3.1) + specifier: ^7.53.2 + version: 7.53.2(react@18.3.1) react-markdown: specifier: ^9.0.1 version: 9.0.1(@types/react@18.3.12)(react@18.3.1) @@ -140,9 +137,6 @@ importers: tailwind-merge: specifier: ^2.5.4 version: 2.5.4 - trystero: - specifier: ^0.20.0 - version: 0.20.0(@libp2p/interface@1.7.0)(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/enr@0.0.21)(@waku/interfaces@0.0.22)(@waku/message-hash@0.1.16)(@waku/proto@0.0.7)(@waku/relay@0.0.11(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/interfaces@0.0.22)(@waku/proto@0.0.7)(@waku/utils@0.0.20))(@waku/utils@0.0.20)(bufferutil@4.0.8)(utf-8-validate@6.0.4) type-fest: specifier: ^4.26.1 version: 4.26.1 @@ -155,13 +149,13 @@ importers: devDependencies: '@commitlint/cli': specifier: ^19.5.0 - version: 19.5.0(@types/node@22.8.7)(typescript@5.6.3) + version: 19.5.0(@types/node@22.9.0)(typescript@5.6.3) '@commitlint/config-conventional': specifier: ^19.5.0 version: 19.5.0 '@eslint-react/eslint-plugin': - specifier: ^1.15.2 - version: 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + specifier: ^1.16.1 + version: 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) '@eslint/js': specifier: ^9.14.0 version: 9.14.0 @@ -184,8 +178,8 @@ importers: specifier: ^8.42.3 version: 8.42.3 '@types/node': - specifier: ^22.8.7 - version: 22.8.7 + specifier: ^22.9.0 + version: 22.9.0 '@types/react': specifier: ^18.3.12 version: 18.3.12 @@ -193,14 +187,14 @@ importers: specifier: ^18.3.1 version: 18.3.1 '@typescript-eslint/parser': - specifier: ^8.12.2 - version: 8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + specifier: ^8.14.0 + version: 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) '@vitejs/plugin-react': specifier: ^4.3.3 - version: 4.3.3(vite@5.4.10(@types/node@22.8.7)) + version: 4.3.3(vite@5.4.10(@types/node@22.9.0)) autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.47) + version: 10.4.20(postcss@8.4.49) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -217,8 +211,8 @@ importers: specifier: ^3.17.5 version: 3.17.5(tailwindcss@3.4.14) globals: - specifier: ^15.11.0 - version: 15.11.0 + specifier: ^15.12.0 + version: 15.12.0 husky: specifier: ^9.1.6 version: 9.1.6 @@ -232,8 +226,8 @@ importers: specifier: ^4.1.5 version: 4.1.5 postcss: - specifier: ^8.4.47 - version: 8.4.47 + specifier: ^8.4.49 + version: 8.4.49 postcss-rem-to-responsive-pixel: specifier: ^6.0.2 version: 6.0.2 @@ -256,17 +250,17 @@ importers: specifier: ^5.6.3 version: 5.6.3 typescript-eslint: - specifier: ^8.12.2 - version: 8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + specifier: ^8.14.0 + version: 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) vite-plugin-svgr: specifier: ^4.3.0 - version: 4.3.0(rollup@4.21.3)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.7)) + version: 4.3.0(rollup@4.21.3)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)) webext-bridge: specifier: ^6.0.1 version: 6.0.1 wxt: specifier: ^0.19.13 - version: 0.19.13(@types/node@22.8.7)(bufferutil@4.0.8)(rollup@4.21.3)(utf-8-validate@6.0.4) + version: 0.19.13(@types/node@22.9.0)(bufferutil@4.0.8)(rollup@4.21.3)(utf-8-validate@6.0.4) packages: @@ -383,22 +377,6 @@ packages: resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} - '@chainsafe/as-chacha20poly1305@0.1.0': - resolution: {integrity: sha512-BpNcL8/lji/GM3+vZ/bgRWqJ1q5kwvTFmGPk7pxm/QQZDbaMI98waOHjEymTjq2JmdD/INdNBFOVSyJofXg7ew==} - - '@chainsafe/as-sha256@0.4.2': - resolution: {integrity: sha512-HJ8GZBRjLeWtRsAXf3EbNsNzmTGpzTFjfpSf4yHkLYC+E52DhT6hwz+7qpj6I/EmFzSUm5tYYvT9K8GZokLQCQ==} - - '@chainsafe/is-ip@2.0.2': - resolution: {integrity: sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==} - - '@chainsafe/libp2p-noise@14.1.0': - resolution: {integrity: sha512-uHmptoxgMsfDIP7cQMQ4Zp9+y27oON5+gloBLXi+7EJpMhyvo7tjafUxRILwLofzeAtfaF3ZHraoXRFUSbhK2Q==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@chainsafe/netmask@2.0.0': - resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} - '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -629,22 +607,18 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.1': - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.15.2': - resolution: {integrity: sha512-Dtn6Ai/P74CLoZ4mPR/9Mm4xXuulXULaXNXAzusZSNfa3+4podw6LCxKHpLcLqsvfZN3mciW3cC8CAyH7/MZwg==} + '@eslint-react/ast@1.16.1': + resolution: {integrity: sha512-IzJnMy+70w8k1ek06vqdk8g/vxVffOII3c65ggtlQwj2ZBZB/cgUABzNkDV7Hi3VtE0kChZSVSDV6MR76gt5Sg==} - '@eslint-react/core@1.15.2': - resolution: {integrity: sha512-F8qh1oeqdXrepTQKp0kbQ8UTVDhSbJGvsQhO6YMSOC/Bci98Z2ad/VZXfZtMcYtvj+/4s0nmifzrYfvjt7easw==} + '@eslint-react/core@1.16.1': + resolution: {integrity: sha512-QTuROazb1gILdV1h4iON38HbxQpOUMpEPg3etoFrLeH1a9yJIfnsb2t1ryrJh2pqQ+Rw5Lz6za+sJknbuDYxOg==} - '@eslint-react/eslint-plugin@1.15.2': - resolution: {integrity: sha512-j4O+dVFG24VrEu0lfiY7PTiAdKpYBWrc16/J4OymTERxwJYAZLuedoIYextSYjpJ7Hn9RhQyhGq4jqbcIpyVwg==} + '@eslint-react/eslint-plugin@1.16.1': + resolution: {integrity: sha512-QTpBKDbe6DZCsczFkFjqVFRuwbUlMV+FF0XdZLrMRuHEvmcs/6G70wHL/hCe2CruARnGiAQRWnA+IenFw+gAuw==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -653,20 +627,20 @@ packages: typescript: optional: true - '@eslint-react/jsx@1.15.2': - resolution: {integrity: sha512-IwkmPazUhEpMQgu6gVzCWuvWU7Za7SmddKowNIelSfoX0o5uZVh42anrVnGyX0jgx9X7XcZOUYll3F701Ftyqw==} + '@eslint-react/jsx@1.16.1': + resolution: {integrity: sha512-VrlCeVpRkAK5t8tpJRa+IOIdQQ9qTCnS1UOZOSV/SDcgBdsyGFkYzzY1EHUCR9MSxpsS/NPaXBfvrgMJ+llMow==} - '@eslint-react/shared@1.15.2': - resolution: {integrity: sha512-5xOCUbf+AhWcMKdQSPRmqJrnsepiP1SYyoc0w8M69DLhkuRfTnzVsJsvXNGS74+8oG8jBfRU/C1dkQxNWoODWg==} + '@eslint-react/shared@1.16.1': + resolution: {integrity: sha512-A+R590q0UQuHVlz9YHs+g6HQZ/cyKK/bWw0ykyEAoTNXCDz8lpbxW02dH4iC/9eMEnYs2dQn4as1qkwm9GhrfQ==} - '@eslint-react/tools@1.15.2': - resolution: {integrity: sha512-u5vASGC6Ui+5G0AkorTZHevHE1w6Spaun9UdmadMDTuZdPLbfIUPoD4dfZ5AaqH6wVfdpmieHFXsItuvRWHWxw==} + '@eslint-react/tools@1.16.1': + resolution: {integrity: sha512-X/VbkpltsfLLM14SqAThFEEsvQOCopyFXRwnAJp6HU9SdZEy7CkqRdPz/EQl8w7SEl70/DVFI2kvx0FN8YP3bw==} - '@eslint-react/types@1.15.2': - resolution: {integrity: sha512-s8HfvVPl8aCb+coIPrFULDugR22GiRKU6keXwdRqQaHR4U0a6YtSqNFssoxEvMdkesNAQ2kIhZEE4oXRyR7gFw==} + '@eslint-react/types@1.16.1': + resolution: {integrity: sha512-0vNdbVtebCtlGZBFWmZaYvXYhgakKrvQz1WYeSmEMKLSebIgReSrvjqVOhQOvoz41lGIuNYUKfYVSWwj41lyDg==} - '@eslint-react/var@1.15.2': - resolution: {integrity: sha512-Kd37TnpjGWXUshTruUxH2wyo4ODItf/yn8P8VbgOAirkKg/Y7cSsep3hXuY4hXlpOd/ZgoGmtGE8JHsm65Vfxw==} + '@eslint-react/var@1.16.1': + resolution: {integrity: sha512-CZ1fMQPkr60pwx8PLHsn75cl1Ovw/GHo2v6nhdWyhW8VhbBwJ1d1VdjSxPZjHJ4KCZFTuVVunWn7W9gDZmK+ow==} '@eslint/config-array@0.18.0': resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} @@ -692,204 +666,6 @@ packages: resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ethersproject/bytes@5.7.0': - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - - '@ethersproject/logger@5.7.0': - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - - '@ethersproject/rlp@5.7.0': - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} - - '@firebase/analytics-compat@0.2.13': - resolution: {integrity: sha512-aZ4wGfNDMsCxhKzDbK2g1aV0JKsdQ9FbeIsjpNJPzhahV0XYj+z36Y4RNLPpG/6hHU4gxnezxs+yn3HhHkNL8w==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/analytics-types@0.8.2': - resolution: {integrity: sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw==} - - '@firebase/analytics@0.10.7': - resolution: {integrity: sha512-GE29uTT6y/Jv2EP0OjpTezeTQZ5FTCTaZXKrrdVGjb/t35AU4u/jiU+hUwUPpuK8fqhhiHkS/AawE3a3ZK/a9Q==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/app-check-compat@0.3.14': - resolution: {integrity: sha512-kK3bPfojAfXE53W+20rxMqIxrloFswXG9vh4kEdYL6Wa2IB3sD5++2dPiK3yGxl8oQiqS8qL2wcKB5/xLpEVEg==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/app-check-interop-types@0.3.2': - resolution: {integrity: sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==} - - '@firebase/app-check-types@0.5.2': - resolution: {integrity: sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA==} - - '@firebase/app-check@0.8.7': - resolution: {integrity: sha512-EkOeJcMKVR0zZ6z/jqcFTqHb/xq+TVIRIuBNGHdpcIuFU1czhSlegvqv2+nC+nFrkD8M6Xvd3tAlUOkdbMeS6A==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/app-compat@0.2.40': - resolution: {integrity: sha512-2L5MW4MH2ya7Wvw0hzWy3ZWeB4SqC5gYXDAV5AS1lBTL4zL3k8dsqJmry/cFV00GgkCI01WJbcXvFMCXJvgyow==} - - '@firebase/app-types@0.9.2': - resolution: {integrity: sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==} - - '@firebase/app@0.10.10': - resolution: {integrity: sha512-sDqkdeFdVn5uygQm5EuIKOQ6/wxTcX/qKfm0MR46AiwLRHGLCDUMrXBkc8GhkK3ca2d6mPUSfPmndggo43D6PQ==} - - '@firebase/auth-compat@0.5.13': - resolution: {integrity: sha512-rV6TMxUU6wBBZ2ouDMtjJsJXeewtvYvVzslzt3/P7O/kxiWlreHT/2M/1guMiXKo3zk52XK3GqP0uM2bN7fEow==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/auth-interop-types@0.2.3': - resolution: {integrity: sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==} - - '@firebase/auth-types@0.12.2': - resolution: {integrity: sha512-qsEBaRMoGvHO10unlDJhaKSuPn4pyoTtlQuP1ghZfzB6rNQPuhp/N/DcFZxm9i4v0SogjCbf9reWupwIvfmH6w==} - peerDependencies: - '@firebase/app-types': 0.x - '@firebase/util': 1.x - - '@firebase/auth@1.7.8': - resolution: {integrity: sha512-1KJlDrTrEEFTIBj9MxjAWjQ4skecBD4bmoayQ0l14QDbNc1a8qGbi+MFSJkH7O6VnGE6bTMcWSw6RrQNecqKaw==} - peerDependencies: - '@firebase/app': 0.x - '@react-native-async-storage/async-storage': ^1.18.1 - peerDependenciesMeta: - '@react-native-async-storage/async-storage': - optional: true - - '@firebase/component@0.6.8': - resolution: {integrity: sha512-LcNvxGLLGjBwB0dJUsBGCej2fqAepWyBubs4jt1Tiuns7QLbXHuyObZ4aMeBjZjWx4m8g1LoVI9QFpSaq/k4/g==} - - '@firebase/database-compat@1.0.7': - resolution: {integrity: sha512-R/3B+VVzEFN5YcHmfWns3eitA8fHLTL03io+FIoMcTYkajFnrBdS3A+g/KceN9omP7FYYYGTQWF9lvbEx6eMEg==} - - '@firebase/database-types@1.0.4': - resolution: {integrity: sha512-mz9ZzbH6euFXbcBo+enuJ36I5dR5w+enJHHjy9Y5ThCdKUseqfDjW3vCp1YxE9zygFCSjJJ/z1cQ+zodvUcwPQ==} - - '@firebase/database@1.0.7': - resolution: {integrity: sha512-wjXr5AO8RPxVVg7rRCYffT7FMtBjHRfJ9KMwi19MbOf0vBf0H9YqW3WCgcnLpXI6ehiUcU3z3qgPnnU0nK6SnA==} - - '@firebase/firestore-compat@0.3.36': - resolution: {integrity: sha512-NtoIm7CT9f+SFB7cPMCtyCSxZReh/+SII5X4TQH394S3dwhru9HIfvEOKAMuAnXsSsLH72jXPUgdsEAUqg6Oug==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/firestore-types@3.0.2': - resolution: {integrity: sha512-wp1A+t5rI2Qc/2q7r2ZpjUXkRVPtGMd6zCLsiWurjsQpqPgFin3AhNibKcIzoF2rnToNa/XYtyWXuifjOOwDgg==} - peerDependencies: - '@firebase/app-types': 0.x - '@firebase/util': 1.x - - '@firebase/firestore@4.7.1': - resolution: {integrity: sha512-WliQNa8GVcH6EWkH0NAf+uAnxNiBuH+G8Buzr2ZS1NznOhJDK/q6Hsjv5TzNrijLTAdEfj/wk9VEv994KDSjxg==} - engines: {node: '>=10.10.0'} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/functions-compat@0.3.13': - resolution: {integrity: sha512-qcZvJO2ed6PAD+18DanVztw7WyQVQK43HoRhxusHAwDFvK/xY+mcGpj+IpfdxTNMBGCOIxKFp4Xqk/c2nubBlQ==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/functions-types@0.6.2': - resolution: {integrity: sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w==} - - '@firebase/functions@0.11.7': - resolution: {integrity: sha512-xaUsGI2kYrI8zJXgrNB7SrJKB8v1vJqR16YYi6g6dFTgBz4+VzWJFqqVU60BbdAWm6fXnUrg9gjlJQeqomT2Vg==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/installations-compat@0.2.8': - resolution: {integrity: sha512-pI2q8JFHB7yIq/szmhzGSWXtOvtzl6tCUmyykv5C8vvfOVJUH6mP4M4iwjbK8S1JotKd/K70+JWyYlxgQ0Kpyw==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/installations-types@0.5.2': - resolution: {integrity: sha512-que84TqGRZJpJKHBlF2pkvc1YcXrtEDOVGiDjovP/a3s6W4nlbohGXEsBJo0JCeeg/UG9A+DEZVDUV9GpklUzA==} - peerDependencies: - '@firebase/app-types': 0.x - - '@firebase/installations@0.6.8': - resolution: {integrity: sha512-57V374qdb2+wT5v7+ntpLXBjZkO6WRgmAUbVkRfFTM/4t980p0FesbqTAcOIiM8U866UeuuuF8lYH70D3jM/jQ==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/logger@0.4.2': - resolution: {integrity: sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==} - - '@firebase/messaging-compat@0.2.10': - resolution: {integrity: sha512-FXQm7rcowkDm8kFLduHV35IRYCRo+Ng0PIp/t1+EBuEbyplaKkGjZ932pE+owf/XR+G/60ku2QRBptRGLXZydg==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/messaging-interop-types@0.2.2': - resolution: {integrity: sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA==} - - '@firebase/messaging@0.12.10': - resolution: {integrity: sha512-fGbxJPKpl2DIKNJGhbk4mYPcM+qE2gl91r6xPoiol/mN88F5Ym6UeRdMVZah+pijh9WxM55alTYwXuW40r1Y2Q==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/performance-compat@0.2.8': - resolution: {integrity: sha512-o7TFClRVJd3VIBoY7KZQqtCeW0PC6v9uBzM6Lfw3Nc9D7hM6OonqecYvh7NwJ6R14k+xM27frLS4BcCvFHKw2A==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/performance-types@0.2.2': - resolution: {integrity: sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA==} - - '@firebase/performance@0.6.8': - resolution: {integrity: sha512-F+alziiIZ6Yn8FG47mxwljq+4XkgkT2uJIFRlkyViUQRLzrogaUJW6u/+6ZrePXnouKlKIwzqos3PVJraPEcCA==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/remote-config-compat@0.2.8': - resolution: {integrity: sha512-UxSFOp6dzFj2AHB8Bq/BYtbq5iFyizKx4Rd6WxAdaKYM8cnPMeK+l2v+Oogtjae+AeyHRI+MfL2acsfVe5cd2A==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/remote-config-types@0.3.2': - resolution: {integrity: sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA==} - - '@firebase/remote-config@0.4.8': - resolution: {integrity: sha512-AMLqe6wfIRnjc6FkCWOSUjhc1fSTEf8o+cv1NolFvbiJ/tU+TqN4pI7pT+MIKQzNiq5fxLehkOx+xtAQBxPJKQ==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/storage-compat@0.3.11': - resolution: {integrity: sha512-EEa9jgm/aRVIGSD0ByYAsZ0tvEKfVwSp9uFoa/97BISGWGjSNPIWjenaDvpDZ7aL8OxaGIpwuk700aHy7/T0Ug==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/storage-types@0.8.2': - resolution: {integrity: sha512-0vWu99rdey0g53lA7IShoA2Lol1jfnPovzLDUBuon65K7uKG9G+L5uO05brD9pMw+l4HRFw23ah3GwTGpEav6g==} - peerDependencies: - '@firebase/app-types': 0.x - '@firebase/util': 1.x - - '@firebase/storage@0.13.1': - resolution: {integrity: sha512-L6AJ5tWgHSi2g/gbc/2Pbm3qxmoEg9THmPIOpRsLwuz9LPeWbhyMQeGlqxWqtZGQO/z/LMjGYadNlupQj0HNfw==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/util@1.9.7': - resolution: {integrity: sha512-fBVNH/8bRbYjqlbIhZ+lBtdAAS4WqZumx03K06/u7fJSpz1TGjEMm1ImvKD47w+xaFKIP2ori6z8BrbakRfjJA==} - - '@firebase/vertexai-preview@0.0.3': - resolution: {integrity: sha512-KVtUWLp+ScgiwkDKAvNkVucAyhLVQp6C6lhnVEuIg4mWhWcS3oerjAeVhZT4uNofKwWxRsOaB2Yec7DMTXlQPQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app': 0.x - '@firebase/app-types': 0.x - - '@firebase/webchannel-wrapper@1.0.1': - resolution: {integrity: sha512-jmEnr/pk0yVkA7mIlHNnxCi+wWzOFUg0WyIotgkKAb2u1J7fAeDBcVNSTjTihbAYNusCLQdW5s9IJ5qwnEufcQ==} - '@floating-ui/core@1.6.8': resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} @@ -905,15 +681,6 @@ packages: '@floating-ui/utils@0.2.8': resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} - '@grpc/grpc-js@1.9.15': - resolution: {integrity: sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==} - engines: {node: ^8.13.0 || >=10.10.0} - - '@grpc/proto-loader@0.7.13': - resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} - engines: {node: '>=6'} - hasBin: true - '@hookform/resolvers@3.9.1': resolution: {integrity: sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==} peerDependencies: @@ -961,111 +728,10 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@leichtgewicht/base64-codec@1.0.0': - resolution: {integrity: sha512-0cgP4lRBzh3F4tlpTfs7F+PJyBN8j5yUC9KrQFWp/bREswgzZVHE8T1rNyRDWgvALwwpPtnJDQfqWUmxI33Epg==} - - '@leichtgewicht/dns-packet@6.0.3': - resolution: {integrity: sha512-qmVHhFBFiBvPsk/wJ/EdoWHb+tGkzY4haybmDPukhF6w0+8wpEbrHTIRE9LzeUu2P0bAbmrK8WOXt5V5QN6jQg==} - engines: {node: '>=6'} - - '@leichtgewicht/dns-socket@5.0.0': - resolution: {integrity: sha512-Sbrn/OG0HTTPGSkwIDCHy8/tUI6UglIzFsMNjzZn/Na1/i5owSm6rVi9CfKNNjRcUlYEzICELYW6EoZdjwVY2A==} - engines: {node: '>=6'} - - '@leichtgewicht/ip-codec@2.0.5': - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - - '@libp2p/crypto@3.0.4': - resolution: {integrity: sha512-FzSwBo+RJOUzdzEwug5ZL4dAGKwEBWTLzj+EmUTHHY6c87+oLh571DQk/w0oYObSD9hYbcKePgSBaZeBx0JaZg==} - - '@libp2p/crypto@4.1.9': - resolution: {integrity: sha512-8Cf2VKh0uC/rQLvTLSloIOMqUvf4jsSTHXgjWQRf47lDNJlNNI0wSv2S6gakT72GZsRV/jCjYwKPqRlsa5S0iA==} - - '@libp2p/identify@1.0.21': - resolution: {integrity: sha512-wUpgXK1pCrd1wkG1vgkRe+TRHMv+SvR206o5x0srcifjGByXHwKzmTgwYK8dVVVA7SITsuobxVRuELl6OOAaCg==} - - '@libp2p/interface-internal@1.3.4': - resolution: {integrity: sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==} - - '@libp2p/interface@1.7.0': - resolution: {integrity: sha512-/zFyaIaIGW0aihhsH7/93vQdpWInUzFocxF11RO/029Y6h0SVjs24HHbils+DqaFDTqN+L7oNlBx2rM2MnmTjA==} - - '@libp2p/logger@4.0.20': - resolution: {integrity: sha512-TTh2dhHsOTAlMPxSa9ncFPHa/0jTt+0AQxwHdlxg/OGLAgc9VRhnrhHUbJZp07Crcw4T/MOfS4KhjlxgqYgJRw==} - - '@libp2p/mplex@10.1.5': - resolution: {integrity: sha512-NdT9ak8omeJZvdJhzsKSSeHBZlP+3sl68UbrpfVanWebQVuNqw7UOLURKtXnRd7II7siXt37Yq6W2km7VIT1yQ==} - deprecated: Mplex has no flow control - please use @chainsafe/libp2p-yamux instead - - '@libp2p/multistream-select@5.1.17': - resolution: {integrity: sha512-QOMGjCzKGf/W+qzWw5OxaqLEYhK45XjMCxGJYQ7L5eUkcwAv6rlPZAYw6YslaMLpJTa61/yfh8D4u7EuoMFsUw==} - - '@libp2p/peer-collections@5.2.9': - resolution: {integrity: sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==} - - '@libp2p/peer-id-factory@4.2.4': - resolution: {integrity: sha512-NDQ/qIWpcAG/6xQjyut6xCkrYYAoCaI/33Z+7yzo5qFODwLfNonLzSTasnA6jhuvHn33aHnD1qhdpFkmstxtNQ==} - - '@libp2p/peer-id@4.2.4': - resolution: {integrity: sha512-mvvsVxt4HkF14BrTNKbqr14VObW+KBJBWu1Oe6BFCoDttGMQLaI+PdduE1r6Tquntv5IONBqoITgD7ow5dQ+vQ==} - - '@libp2p/peer-record@7.0.25': - resolution: {integrity: sha512-b54P3cSeQniW/HPJjBVbeF3KaVUQkWa431gotuIFUS1PYgtz69uzkRrVY6Qt+RBb4R4fcmH4K4jWyZi3xyLGfQ==} - - '@libp2p/peer-store@10.1.5': - resolution: {integrity: sha512-JqQcIcxZS7kicCPabGRyrKD+qZlOdaooL00hdHogVb4MIMqfjiQMmOEpzIvTQLCKHKM2mmfnV3P7kc6hYzPq8g==} - - '@libp2p/ping@1.1.6': - resolution: {integrity: sha512-tzTL0BzS1JaHE8v4PhRZ5K8wQQQcTMXM/0baCkLTLIaSMe1fzhj+KHbFNoUrY3yni4yfsVY1uR0qchhc1/J9qg==} - - '@libp2p/utils@5.4.9': - resolution: {integrity: sha512-0fRdX98WqhTmXU2WEVLegLFxs/kKTtUHanHk5Lzs4oGsIzlPHR7zE6lj/U1WfsFA+Xo1eYQpNLiXEL29hG+Nyw==} - - '@libp2p/websockets@8.2.0': - resolution: {integrity: sha512-UNjqkQ8/emnYswp1ohIIuZCnhI5DlvWF9IaIND2MoTCDavi7yubWfMp8jSWBsAqPnMeLMO8MQ6YlOo4FFC104Q==} - - '@lottiefiles/dotlottie-react@0.9.3': - resolution: {integrity: sha512-x4xQlFFulAF/nG044VNMwaXWk8ehg/KEHXpMxGB+L5gv3qohjxv/I7/erHyfhWY9y6C/VMl+PiWZbT54W8+lUQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@lottiefiles/dotlottie-web@0.36.1': - resolution: {integrity: sha512-KvxOH5Msk0Ivqpgq4p1DGo1IG2XPX4kEVkhssTaOUEvoeCxDLru+DlbUzwG8b5JcJwEBmrAMzCNzCTmn+uMFxQ==} - '@lukeed/csprng@1.1.0': resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} - '@multiformats/dns@1.0.6': - resolution: {integrity: sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==} - - '@multiformats/mafmt@12.1.6': - resolution: {integrity: sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww==} - - '@multiformats/multiaddr-matcher@1.2.4': - resolution: {integrity: sha512-GgpqzQFL4Mj8t7cLNHC5nuYUuSm0kTtSUyYswiyWwTSUY3XwRAMx0UiFWQg+ETk0u+/IvFaHxfnyEoH3tasvwg==} - - '@multiformats/multiaddr-to-uri@10.1.0': - resolution: {integrity: sha512-ZNwSAx3ssBWwd4y0LKrOsq9xG7LBHboQxnUdSduNc2fTh/NS1UjA2slgUy6KHxH5k9S2DSus0iU2CoyJyN0/pg==} - - '@multiformats/multiaddr@12.3.1': - resolution: {integrity: sha512-yoGODQY4nIj41ENJClucS8FtBoe8w682bzbKldEQr9lSlfdHqAsRC+vpJAOBpiMwPps1tHua4kxrDmvprdhoDQ==} - - '@noble/ciphers@0.4.1': - resolution: {integrity: sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg==} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@noble/secp256k1@1.7.1': - resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1237,36 +903,6 @@ packages: resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@radix-ui/number@1.1.0': resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} @@ -1553,8 +1189,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-scroll-area@1.2.0': - resolution: {integrity: sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ==} + '@radix-ui/react-scroll-area@1.2.1': + resolution: {integrity: sha512-FnM1fHfCtEZ1JkyfH/1oMiTcFBQvHKl4vD9WnpwkLgtF+UmnXMCad6ECPTaAjcDjam+ndOEJWgHyKDGNteWSHw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1808,10 +1444,6 @@ packages: peerDependencies: semantic-release: '>=20.1.0' - '@sindresorhus/fnv1a@3.1.0': - resolution: {integrity: sha512-KV321z5m/0nuAg83W1dPLy85HpHDk7Sdi4fJbwvacWsEhAh+rZUW4ZfGcXmUIvjZg4ss2bcwNlRhJ7GBEUG08w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} @@ -1831,28 +1463,6 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@supabase/auth-js@2.65.0': - resolution: {integrity: sha512-+wboHfZufAE2Y612OsKeVP4rVOeGZzzMLD/Ac3HrTQkkY4qXNjI6Af9gtmxwccE5nFvTiF114FEbIQ1hRq5uUw==} - - '@supabase/functions-js@2.4.1': - resolution: {integrity: sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==} - - '@supabase/node-fetch@2.6.15': - resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} - engines: {node: 4.x || >=6.0.0} - - '@supabase/postgrest-js@1.16.1': - resolution: {integrity: sha512-EOSEZFm5pPuCPGCmLF1VOCS78DfkSz600PBuvBND/IZmMciJ1pmsS3ss6TkB6UkuvTybYiBh7gKOYyxoEO3USA==} - - '@supabase/realtime-js@2.10.2': - resolution: {integrity: sha512-qyCQaNg90HmJstsvr2aJNxK2zgoKh9ZZA8oqb7UT2LCh3mj9zpa3Iwu167AuyNxsxrUE8eEJ2yH6wLCij4EApA==} - - '@supabase/storage-js@2.7.0': - resolution: {integrity: sha512-iZenEdO6Mx9iTR6T7wC7sk6KKsoDPLq8rdu5VRy7+JiT1i8fnqfcOr6mfF2Eaqky9VQzhP8zZKQYjzozB65Rig==} - - '@supabase/supabase-js@2.45.4': - resolution: {integrity: sha512-E5p8/zOLaQ3a462MZnmnz03CrduA5ySH9hZyL03Y+QZLIOO4/Gs8Rdy4ZCKDHsN7x0xdanVEWWFN3pJFQr9/hg==} - '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} @@ -1930,9 +1540,6 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' - '@thaunknown/simple-peer@10.0.10': - resolution: {integrity: sha512-RtoYQChP5clkbh+crUhv0LD/fdzgNO/Ah/SBdcSqla6xY6GK50ukNhq39H4vzAKoYqvDu01Hc+JSD9DxCdoBOw==} - '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -1954,9 +1561,6 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/dns-packet@5.6.5': - resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} - '@types/eslint-plugin-tailwindcss@3.17.0': resolution: {integrity: sha512-ucQGf2YIdTcndYcxRU3UdZgmhUHsOlbIF4BaRtl0op+7k2JmqM2i3aXZ6XIcfZgVq1ZKov7VM5c/BR81ukmkyg==} @@ -2005,18 +1609,12 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/murmurhash3js-revisited@3.0.3': - resolution: {integrity: sha512-QvlqvYtGBYIDeO8dFdY4djkRubcrc+yTJtBc7n8VZPlJDUS/00A+PssbvERM8f9bYRmcaSEHPZgZojeQj7kzAA==} - - '@types/node@22.8.7': - resolution: {integrity: sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==} + '@types/node@22.9.0': + resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/phoenix@1.6.5': - resolution: {integrity: sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==} - '@types/prop-types@15.7.12': resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} @@ -2026,9 +1624,6 @@ packages: '@types/react@18.3.12': resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} - '@types/readable-stream@4.0.15': - resolution: {integrity: sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw==} - '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -2044,14 +1639,11 @@ packages: '@types/webextension-polyfill@0.8.3': resolution: {integrity: sha512-GN+Hjzy9mXjWoXKmaicTegv3FJ0WFZ3aYz77Wk8TMp1IY3vEzvzj1vnsa0ggV7vMI1i+PUxe4qqnIJKCzf9aTg==} - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.12.2': - resolution: {integrity: sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==} + '@typescript-eslint/eslint-plugin@8.14.0': + resolution: {integrity: sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -2061,8 +1653,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.12.2': - resolution: {integrity: sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==} + '@typescript-eslint/parser@8.14.0': + resolution: {integrity: sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2071,16 +1663,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@8.12.1': - resolution: {integrity: sha512-bma6sD1iViTt+y9MAwDlBdPTMCqoH/BNdcQk4rKhIZWv3eM0xHmzeSrPJA663PAqFqfpOmtdugycpr0E1mZDVA==} + '@typescript-eslint/scope-manager@8.14.0': + resolution: {integrity: sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.12.2': - resolution: {integrity: sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.12.1': - resolution: {integrity: sha512-zJzrvbDVjIzVKV2TGHcjembEhws8RWXJhmqfO9hS2gRXBN0gDwGhRPEdJ6AZglzfJ+YA1q09EWpSLSXjBJpIMQ==} + '@typescript-eslint/type-utils@8.14.0': + resolution: {integrity: sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -2088,8 +1676,12 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.12.2': - resolution: {integrity: sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==} + '@typescript-eslint/types@8.14.0': + resolution: {integrity: sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.14.0': + resolution: {integrity: sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -2097,50 +1689,14 @@ packages: typescript: optional: true - '@typescript-eslint/types@8.12.1': - resolution: {integrity: sha512-anMS4es5lxBe4UVcDXOkcDb3csnm5BvaNIbOFfvy/pJEohorsggdVB8MFbl5EZiEuBnZZ0ei1z7W5b6FdFiV1Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.12.2': - resolution: {integrity: sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.12.1': - resolution: {integrity: sha512-k/o9khHOckPeDXilFTIPsP9iAYhhdMh3OsOL3i2072PNpFqhqzRHx472/0DeC8H/WZee3bZG0z2ddGRSPgeOKw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.12.2': - resolution: {integrity: sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@8.12.1': - resolution: {integrity: sha512-sDv9yFHrhKe1WN8EYuzfhKCh/sFRupe9P+m/lZ5YgVvPoCUGHNN50IO4llSu7JAbftUM/QcCh+GeCortXPrBYQ==} + '@typescript-eslint/utils@8.14.0': + resolution: {integrity: sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/utils@8.12.2': - resolution: {integrity: sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - - '@typescript-eslint/visitor-keys@8.12.1': - resolution: {integrity: sha512-2RwdwnNGuOQKdGjuhujQHUqBZhEuodg2sLVPvOfWktvA9sOXOVqARjOyHSyhN2LiJGKxV6c8oOcmOtRcAnEeFw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.12.2': - resolution: {integrity: sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==} + '@typescript-eslint/visitor-keys@8.14.0': + resolution: {integrity: sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.0': @@ -2152,99 +1708,6 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 - '@waku/core@0.0.27': - resolution: {integrity: sha512-SPUiR0NrbfuHVhvU91Fnhkjnqkk76DBgYkTtjuLoJ7SbRJFYrnUqnSAXVwe2H+kDXq/M+UgUandLAPS6EyH+2A==} - engines: {node: '>=18'} - peerDependencies: - '@multiformats/multiaddr': ^12.0.0 - libp2p: ^1.1.2 - peerDependenciesMeta: - '@multiformats/multiaddr': - optional: true - - '@waku/discovery@0.0.3': - resolution: {integrity: sha512-zccWCqZSP8y32S1yr5zh61jk5cvEehJXKwi6jW4482YNygXXv/st2YqIDa1nV6Oedr6cabaAfK+OxQTnUIyrLA==} - engines: {node: '>=18'} - peerDependencies: - '@libp2p/interface': ^1.1.2 - '@waku/core': 0.0.27 - '@waku/enr': 0.0.21 - '@waku/interfaces': 0.0.22 - '@waku/proto': 0.0.6 - '@waku/utils': 0.0.15 - peerDependenciesMeta: - '@libp2p/interface': - optional: true - '@waku/interfaces': - optional: true - - '@waku/enr@0.0.21': - resolution: {integrity: sha512-FnfA7I+MDH5mJF9thS/a/6dTRLO8WF4WRj1/4BisRr9xTxHBq/qqgzGrk5JAWbeX6Befjle3Bi6cYdbSXGvNQw==} - engines: {node: '>=18'} - - '@waku/interfaces@0.0.22': - resolution: {integrity: sha512-SbOCqqv4wLkvVMuIppBXzLjyRHw1rnW3lzeIlNJrTwjIQvhIwasUyHIbZ9Wk9hv1ybhx7HmRuWdesWDQn1x0hQ==} - engines: {node: '>=18'} - - '@waku/interfaces@0.0.27': - resolution: {integrity: sha512-VsmpngqYVVY57JcyQkNau62clV/hStWfBVAAhlDUvaOcci+j3Aj3hWj550klFlcud9btEQ2Kl+P6EHnq9bQWIw==} - engines: {node: '>=20'} - - '@waku/message-hash@0.1.16': - resolution: {integrity: sha512-Vwm4mWC3PSWf4YRjmfIR7SFzmps2JnF6ICbQJYGoTmLaS4AaxsbwrLmb747QMnpdfh9aemB0HbtM/cZEBrbWsA==} - engines: {node: '>=20'} - - '@waku/proto@0.0.6': - resolution: {integrity: sha512-KSlcpv8BRc/KeChIWfiz7Fska7N3FQhVOsgbV862/RMhj8dCiZPhWtNanuwipfe+GwWz5SMldowipBibukXSNA==} - engines: {node: '>=18'} - - '@waku/proto@0.0.7': - resolution: {integrity: sha512-yPwQO2m8tC28IEL4fFA/tRGr1TUk3yreXmDrR1/w2wGwnnGGs3IOnyortDvAm+bfWurib6lSnXTbcQgB0G/m0w==} - engines: {node: '>=18'} - - '@waku/proto@0.0.8': - resolution: {integrity: sha512-RPq8XLZf1xoKXCFyGKfL0j2ySfMS6MNimBwhMHKM53kRlGnszP3wBZnjWBApBY7G1pIHvxzvUBpFQzYdHMhIQA==} - engines: {node: '>=20'} - - '@waku/relay@0.0.11': - resolution: {integrity: sha512-+w4U2LPypgUq+OL4qTdtbceo5b80eUjuqRhPt/Yr5A6lgjoA0G0HSxyff/lCe4s7DoUorbVurK0DVIpErJX1dw==} - engines: {node: '>=18'} - peerDependencies: - '@chainsafe/libp2p-gossipsub': ^12.0.0 - '@waku/core': 0.0.27 - '@waku/interfaces': 0.0.22 - '@waku/proto': 0.0.6 - '@waku/utils': 0.0.15 - peerDependenciesMeta: - '@chainsafe/libp2p-gossipsub': - optional: true - '@waku/interfaces': - optional: true - - '@waku/sdk@0.0.26': - resolution: {integrity: sha512-IfsBiJYRZT7+VIxSi1y8CcqCeAg4fj4Q6iiQeVkula2+ibyXy+9+UzV3sgwY2uFCbVoOPRb5hA7KLf6utZvT8w==} - engines: {node: '>=18'} - peerDependencies: - '@libp2p/bootstrap': ^10 - '@waku/core': 0.0.28 - '@waku/interfaces': 0.0.23 - '@waku/message-hash': ^0.1.12 - '@waku/relay': 0.0.11 - '@waku/utils': 0.0.16 - peerDependenciesMeta: - '@libp2p/bootstrap': - optional: true - '@waku/interfaces': - optional: true - - '@waku/utils@0.0.15': - resolution: {integrity: sha512-zwRQcr3ECMM395umh0s17wMXkrjtcHW5xIw7CMOi/xsqV5ZAZi7P/SSMo2trngAsTxSJPDgeF60ChiwnsrsFbw==} - engines: {node: '>=18'} - - '@waku/utils@0.0.20': - resolution: {integrity: sha512-10s/1Mqnyc24ckJ5Abbg510KmQZRavVw4WF5LynR1nL4VwDQkJn9o1szzysLn+j+DwXtYWM5PDXspu7uHcXGcw==} - engines: {node: '>=20'} - '@webext-core/fake-browser@1.3.1': resolution: {integrity: sha512-NpBl0rXL6rT3msdl9Fb1GPLd/MKJEZ3pHpxuMdlu+qKW78T6SWJqDvyAVs8VjAmYs9RHoQJc+yObxQoGWdskXQ==} @@ -2270,10 +1733,6 @@ packages: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2344,10 +1803,6 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - any-signal@4.1.1: - resolution: {integrity: sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -2384,13 +1839,6 @@ packages: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} - asn1js@3.0.5: - resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} - engines: {node: '>=12.0.0'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - async-mutex@0.5.0: resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} @@ -2412,22 +1860,12 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - b4a@1.6.6: - resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} - bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.4.2: - resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} - - base64-arraybuffer@1.0.2: - resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} - engines: {node: '>= 0.6.0'} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -2445,15 +1883,9 @@ packages: birecord@0.1.1: resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} - bl@6.0.15: - resolution: {integrity: sha512-RGhjD1XCPS7ZdAH6cEJVaR3gLV4KJP2hvkQ49AH5kwScjiyd0jBM8RsP4oHKzcx+kNCON9752zPeRnuv0HHwzw==} - bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} @@ -2492,9 +1924,6 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -2515,9 +1944,6 @@ packages: engines: {'0': node >=0.10.0} hasBin: true - bytes.js@0.0.2: - resolution: {integrity: sha512-KrLm4hv5Qs9w6b0U7h1bCdqxrsf+e9QMsfHeyQFzAz94x/5Aqa+FTEUSNBtt5d2VuV3Hfiea3c4ti74RZDDYkg==} - c12@1.11.2: resolution: {integrity: sha512-oBs8a4uvSDO9dm8b7OCFW7+dgtVrwmwnrVXYzLm43ta7ep2jCn/0MhoUFygIWtxhyy6+/MG7/agvpY0U1Iemew==} peerDependencies: @@ -2564,10 +1990,6 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -2596,16 +2018,10 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} @@ -2724,9 +2140,6 @@ packages: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} - commist@3.2.0: - resolution: {integrity: sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==} - compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} @@ -2737,10 +2150,6 @@ packages: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} - concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} - confbox@0.1.7: resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} @@ -2892,9 +2301,6 @@ packages: resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} engines: {node: '>= 0.4'} - datastore-core@9.2.9: - resolution: {integrity: sha512-wraWTPsbtdE7FFaVo3pwPuTB/zXsgwGGAm8BgBYwYAuzZCTS0MfXmd/HH1vR9s0/NFFjOVmBkGiWCvKxZ+QjVw==} - date-fns@4.1.0: resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} @@ -2925,10 +2331,6 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -2978,10 +2380,6 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - delay@6.0.0: - resolution: {integrity: sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==} - engines: {node: '>=16'} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -2994,10 +2392,6 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} @@ -3014,14 +2408,6 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} - - dns-query@0.11.2: - resolution: {integrity: sha512-zF8qxQpqCB467o4A63DLpQClo77H642JEKMx0Ra9GFww7Rx0234Fo8NoG0LBoSBZxamWkXfLxhzDG19bTBHvXQ==} - hasBin: true - dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -3101,9 +2487,6 @@ packages: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} - err-code@3.0.1: - resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} - error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -3182,8 +2565,8 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-react-debug@1.15.2: - resolution: {integrity: sha512-k+4Z+Gel0Vh3eQ5fLTOe+wvHuvD6ApOzBDupIRISv+sU24KXykT3J0+xZLy3gu5OfhxQ0hE7b3gY8bZvYaW41w==} + eslint-plugin-react-debug@1.16.1: + resolution: {integrity: sha512-AijumibZ+3hBYCGBEeD3GQse5TPnq9z6bX0qfsFwCwWjkW+siL2EEGvaxT7UZp2mcFMvoRJT3E4Jsemn6g0AGw==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3192,8 +2575,8 @@ packages: typescript: optional: true - eslint-plugin-react-dom@1.15.2: - resolution: {integrity: sha512-strNT28BHy7yeQgdbBzPGUHDqRkZFI5IfKlkuiozk+vPSZfLj0K2X8L25DvNXr5eRMTyV6TlUsk1Y6xr6ZJgPg==} + eslint-plugin-react-dom@1.16.1: + resolution: {integrity: sha512-qJFfCR2Rofd5/V9/8EE4sg6a829HcI07DeK7qqTosYRPBYkwbfUUjvizzlTxneMAcPQuFfPZa1UMDTaejKStyg==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3202,8 +2585,8 @@ packages: typescript: optional: true - eslint-plugin-react-hooks-extra@1.15.2: - resolution: {integrity: sha512-v+PazTS64GPCCGj9dEvSirHc4oNQm74zhE/CpsEo+0IBre38CavN7Ausq/OAgipmnihoyEH7hMgUzJsCAABEmQ==} + eslint-plugin-react-hooks-extra@1.16.1: + resolution: {integrity: sha512-OJ4RJZ7n25XnF6+NaFC9dzrec2C+/o4zb4Brs+v6fVVbvQQZirgWamKZMOJo+I1HsHdOULtBo1uwopLfnVBihQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3212,8 +2595,8 @@ packages: typescript: optional: true - eslint-plugin-react-naming-convention@1.15.2: - resolution: {integrity: sha512-Vj4SOKlFAs0c+ICal0rVZHjVmEFAKEROhJV8xBu6ZO7JcVDb3Yc7N6t8/vTwhGJDk0jQ8quNSV0dPCX4gvLlDw==} + eslint-plugin-react-naming-convention@1.16.1: + resolution: {integrity: sha512-qyZ6YW82vLHHQEboc0LhE+9Uga2koCtwEV0XYEWxq3DI3Wg1SlwsfchPYQc7skRh2c/Jh9YG2gzRmNXG4Ul2Ww==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3222,8 +2605,8 @@ packages: typescript: optional: true - eslint-plugin-react-web-api@1.15.2: - resolution: {integrity: sha512-UIwuLvJn/2vbnB8IRnfNpsgcNQlJPJKfF/6/XwselRcRkgl5qk1B8pypapG/g3MqJ85jIAUj1Xn+bQu2BiTa7g==} + eslint-plugin-react-web-api@1.16.1: + resolution: {integrity: sha512-kQp8NlJESf87tVPyQnzyziVUwbqYhn0Xsrwj8joA8Bxnkt2bsylmDuMoBV0VntNYnfgoUvBj8D/OuZgb1IfLVQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3232,8 +2615,8 @@ packages: typescript: optional: true - eslint-plugin-react-x@1.15.2: - resolution: {integrity: sha512-HIpYzojk5fzalJ09UJRhtu1cJcFxM/YsTCdVPE/v3sqWb/1v8bzPVtUkQbR787G4o/M0wTUy+pBzTYAJeBRnOw==} + eslint-plugin-react-x@1.16.1: + resolution: {integrity: sha512-Oqu3DMLHXEisvXrAzk7lyZ57W6MlP8nOo3/PkcKtxImB5fCGYILKJY22Jz6hfWZ3MhTzEuVZru8x26Mev+9thQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3299,20 +2682,9 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - event-iterator@2.0.0: - resolution: {integrity: sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -3329,10 +2701,6 @@ packages: resolution: {integrity: sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==} engines: {node: ^18.19.0 || >=20.5.0} - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -3341,19 +2709,12 @@ packages: engines: {node: '>= 10.17.0'} hasBin: true - fast-check@3.22.0: - resolution: {integrity: sha512-8HKz3qXqnHYp/VCNn2qfjHdAdcI8zcSqOyX64GOMukp7SL2bfzfeDKjSd+UyECtejccaZv3LcvZTm9YDD22iCQ==} - engines: {node: '>=8.0.0'} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -3367,10 +2728,6 @@ packages: fast-shallow-equal@1.0.0: resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} - fast-unique-numbers@8.0.13: - resolution: {integrity: sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==} - engines: {node: '>=16.1.0'} - fast-uri@3.0.1: resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} @@ -3380,10 +2737,6 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -3427,9 +2780,6 @@ packages: resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==} engines: {node: '>=18'} - firebase@10.13.1: - resolution: {integrity: sha512-L5BSkmvB2dzCUMpr8i/O8WMJC3Nqj5Ld8Wj/qnak+tz2Ga+JH6/FO93xArg9IGhktCrPXVODoWp6t9ybdgmXCA==} - firefox-profile@4.6.0: resolution: {integrity: sha512-I9rAm1w8U3CdhgO4EzTJsCvgcbvynZn9lOySkZf78wUdUIQH2w9QOKf3pAX+THt2XMSSR3kJSuM8P7bYux9j8g==} hasBin: true @@ -3459,8 +2809,8 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - framer-motion@11.11.11: - resolution: {integrity: sha512-tuDH23ptJAKUHGydJQII9PhABNJBpB+z0P1bmgKK9QFIssHGlfPd6kxMq00LSKwE27WFsb2z0ovY0bpUyMvfRw==} + framer-motion@11.11.13: + resolution: {integrity: sha512-aoEA83gsqRRsnh4TN7S9YNcKVLrg+GtPNnxNMd9bGn23+pLmuKGQeccPnqffEKzlkgmy2MkMo0jRkK41S2LzWw==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 @@ -3476,9 +2826,6 @@ packages: from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} @@ -3526,16 +2873,10 @@ packages: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} - get-iterator@2.0.1: - resolution: {integrity: sha512-7HuY/hebu4gryTDT7O/XY/fvY9wRByEGdK6QOa4of8npTcv0+NS6frFKABcf6S9EBAsveTuKTsZQQBFMMNILIg==} - get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -3587,9 +2928,6 @@ packages: engines: {node: '>=16'} hasBin: true - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3630,8 +2968,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.11.0: - resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} + globals@15.12.0: + resolution: {integrity: sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==} engines: {node: '>=18'} globalthis@1.0.4: @@ -3702,9 +3040,6 @@ packages: resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hashlru@2.3.0: - resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -3715,12 +3050,6 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - help-me@5.0.0: - resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} - - hi-base32@0.5.1: - resolution: {integrity: sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==} - highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} @@ -3757,9 +3086,6 @@ packages: http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - http-parser-js@0.5.8: - resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} - http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -3803,9 +3129,6 @@ packages: idb-keyval@6.2.1: resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} - idb@7.1.1: - resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} - ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -3871,15 +3194,6 @@ packages: inline-style-prefixer@7.0.1: resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==} - interface-datastore@8.3.1: - resolution: {integrity: sha512-3r0ETmHIi6HmvM5sc09QQiCD3gUfwtEM/AAChOyAd/UAKT69uk8LXfTSUBufbUIO/dU65Vj8nb9O6QjwW8vDSQ==} - - interface-store@5.1.8: - resolution: {integrity: sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==} - - interface-store@6.0.2: - resolution: {integrity: sha512-KSFCXtBlNoG0hzwNa0RmhHtrdhzexp+S+UY2s0rWTBJyfdEIgn6i6Zl9otVqrcFYbYrneBT7hbmHQ8gE0C3umA==} - internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} @@ -3955,9 +3269,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true - is-electron@2.2.2: - resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -4000,9 +3311,6 @@ packages: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} - is-loopback-addr@2.0.2: - resolution: {integrity: sha512-26POf2KRCno/KTNL5Q0b/9TYnL00xEsSaLfiFRmjM7m7Lw7ZMmFybzzuX4CcsLAluZGd+niLUiMRxEooVE3aqg==} - is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -4027,10 +3335,6 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -4140,74 +3444,6 @@ packages: resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} engines: {node: ^18.17 || >=20.6.1} - it-all@3.0.6: - resolution: {integrity: sha512-HXZWbxCgQZJfrv5rXvaVeaayXED8nTKx9tj9fpBhmcUJcedVZshMMMqTj0RG2+scGypb9Ut1zd1ifbf3lA8L+Q==} - - it-byte-stream@1.1.0: - resolution: {integrity: sha512-WWponBWdKEa6o2U3NX+wGMY8X1EkWXcQvpC+3CUqKb4ZzK30q3EPqiTjFxLf9tNVgdF/MNAtx/XclpVfgaz9KQ==} - - it-drain@3.0.7: - resolution: {integrity: sha512-vy6S1JKjjHSIFHgBpLpD1zhkCRl3z1zYWUxE14+kAYf+BL9ssWSFImJfhl361IIcwr0ofw8etzg11VqqB+ntUA==} - - it-filter@3.1.1: - resolution: {integrity: sha512-TOXmVuaSkxlLp2hXKoMTra0WMZMKVFxE3vSsbIA+PbADNCBAHhjJ/lM31vBOUTddHMO34Ku++vU8T9PLlBxQtg==} - - it-first@3.0.6: - resolution: {integrity: sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ==} - - it-length-prefixed-stream@1.2.0: - resolution: {integrity: sha512-vX7dzSl/2UMYYsAr0FQdPNVR5xYEETaeboZ+eXxNBjgARuvxnWA6OedW8lC5/J3ebMTC98JhA3eH76eTijUOsA==} - - it-length-prefixed@9.1.0: - resolution: {integrity: sha512-kx2UTJuy7/lsT3QUzf50NjfxU1Z4P4wlvYp6YnR5Nc61P8XKfy+QtiJi1VLojA+Kea7vMbB4002rIij1Ol9hcw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - it-map@3.1.1: - resolution: {integrity: sha512-9bCSwKD1yN1wCOgJ9UOl+46NQtdatosPWzxxUk2NdTLwRPXLh+L7iwCC9QKsbgM60RQxT/nH8bKMqm3H/o8IHQ==} - - it-merge@3.0.5: - resolution: {integrity: sha512-2l7+mPf85pyRF5pqi0dKcA54E5Jm/2FyY5GsOaN51Ta0ipC7YZ3szuAsH8wOoB6eKY4XsU4k2X+mzPmFBMayEA==} - - it-pair@2.0.6: - resolution: {integrity: sha512-5M0t5RAcYEQYNG5BV7d7cqbdwbCAp5yLdzvkxsZmkuZsLbTdZzah6MQySYfaAQjNDCq6PUnDt0hqBZ4NwMfW6g==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - it-parallel@3.0.8: - resolution: {integrity: sha512-URLhs6eG4Hdr4OdvgBBPDzOjBeSSmI+Kqex2rv/aAyYClME26RYHirLVhZsZP5M+ZP6M34iRlXk8Wlqtezuqpg==} - - it-peekable@3.0.5: - resolution: {integrity: sha512-JWQOGMt6rKiPcY30zUVMR4g6YxkpueTwHVE7CMs/aGqCf4OydM6w+7ZM3PvmO1e0TocjuR4aL8xyZWR46cTqCQ==} - - it-pipe@3.0.1: - resolution: {integrity: sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - it-protobuf-stream@1.1.5: - resolution: {integrity: sha512-H70idW45As3cEbU4uSoZ9IYHUIV3YM69/2mmXYR7gOlPabWjuyNi3/abK11geiiq3la27Sos/mXr68JljjKtEQ==} - - it-pushable@3.2.3: - resolution: {integrity: sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==} - - it-queueless-pushable@1.0.0: - resolution: {integrity: sha512-HbcAbcuQj7a9EBxiRCZ+77FxWutgs/pY5ZvEyQnylWPGNFojCLAUwhcZjf5OuEQ9+y+vSa7w1GQBe8xJdmIn5A==} - - it-reader@6.0.4: - resolution: {integrity: sha512-XCWifEcNFFjjBHtor4Sfaj8rcpt+FkY0L6WdhD578SCDhV4VUm7fCkF3dv5a+fTcfQqvN9BsxBTvWbYO6iCjTg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - it-sort@3.0.6: - resolution: {integrity: sha512-aNrlZAXB8vWBd42tCpaXGL6CJVJNDW3OLczmdt6g0k/s9Z6evkTdgU2LjwW5SNNeX41sF+C8MjV+OcVf93PsPw==} - - it-stream-types@2.0.2: - resolution: {integrity: sha512-Rz/DEZ6Byn/r9+/SBCuJhpPATDF9D+dz5pbgSUyBsCDtza6wtNATrz/jz1gDyNanC3XdLboriHnOC925bZRBww==} - - it-take@3.0.6: - resolution: {integrity: sha512-uqw3MRzf9to1SOLxaureGa73lK8k8ZB/asOApTAkvrzUqCznGtKNgPFH7uYIWlt4UuWq/hU6I+U4Fm5xpjN8Vg==} - - it-ws@6.1.5: - resolution: {integrity: sha512-uWjMtpy5HqhSd/LlrlP3fhYrr7rUfJFFMABv0F5d6n13Q+0glhZthwUKpEAVhDrXY95Tb1RB5lLqqef+QbVNaw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -4230,12 +3466,6 @@ packages: js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} - js-sdsl@4.3.0: - resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} - - js-sha3@0.9.3: - resolution: {integrity: sha512-BcJPCQeLg6WjEx3FE591wVAevlli8lxsxm9/FzV4HXkV49TmBH38Yvrpce6fjbADGMKFrBMGTqrVz3qPIZ88Gg==} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -4303,9 +3533,6 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - libp2p@1.9.4: - resolution: {integrity: sha512-OCMQqJ0Po8jhgb4CilWhI5EWhppn9ENdhg63PQL8Yi1tk2rOwJJt+NBec85AU18zBc0jv7Q6SgQRkzCefAuyIQ==} - lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} @@ -4423,9 +3650,6 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} - long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -4433,9 +3657,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -4453,8 +3674,8 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lucide-react@0.454.0: - resolution: {integrity: sha512-hw7zMDwykCLnEzgncEEjHeA6+45aeEzRYuKHuyRSOPkhko+J3ySGjGIzu+mmMfDFG1vazHepMaYFYHbTFAZAAQ==} + lucide-react@0.456.0: + resolution: {integrity: sha512-DIIGJqTT5X05sbAsQ+OhA8OtJYyD4NsEMCA/HQW/Y6ToPQ7gwbtujIoeAaup4HpHzV35SQOarKAWH8LYglB6eA==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc @@ -4547,10 +3768,6 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} - merge-options@3.0.4: - resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} - engines: {node: '>=10'} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -4706,9 +3923,6 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -4729,38 +3943,16 @@ packages: moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - mortice@3.0.4: - resolution: {integrity: sha512-MUHRCAztSl4v/dAmK8vbYi5u1n9NZtQu4H3FsqS7qgMFQIAFw9lTpHiErd9kJpapqmvEdD1L3dUmiikifAvLsQ==} - - mqtt-packet@9.0.0: - resolution: {integrity: sha512-8v+HkX+fwbodsWAZIZTI074XIoxVBOmPeggQuDFCGg1SqNcC+uoRMWu7J6QlJPqIUIJXmjNYYHxBBLr1Y/Df4w==} - - mqtt@5.10.1: - resolution: {integrity: sha512-hXCOki8sANoQ7w+2OzJzg6qMBxTtrH9RlnVNV8panLZgnl+Gh0J/t4k6r8Az8+C7y3KAcyXtn0mmLixyUom8Sw==} - engines: {node: '>=16.0.0'} - hasBin: true - ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - ms@3.0.0-canary.1: - resolution: {integrity: sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==} - engines: {node: '>=12.13'} - - multiformats@13.3.0: - resolution: {integrity: sha512-CBiqvsufgmpo01VT5ze94O+uc+Pbf6f/sThlvWss0sBZmAOu6GQn5usrYV2sf2mr17FWYc0rO8c/CNe2T90QAA==} - multimatch@6.0.0: resolution: {integrity: sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - murmurhash3js-revisited@3.0.0: - resolution: {integrity: sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==} - engines: {node: '>=8.0.0'} - mv@2.1.1: resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} engines: {node: '>=0.8.0'} @@ -4795,9 +3987,6 @@ packages: engines: {node: ^18 || >=20} hasBin: true - napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -4811,35 +4000,15 @@ packages: nerf-dart@1.0.0: resolution: {integrity: sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==} - netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} - nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abi@3.67.0: - resolution: {integrity: sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==} - engines: {node: '>=10'} - node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-datachannel@0.10.1: - resolution: {integrity: sha512-rhxb1iQgbFLY6HMt3W6Xcs8Q1k4jIMgI7KduXcYvIn2UMKYK6e/eegya2caF/+XYAqTeo1743gOr11CXvJ/DJA==} - engines: {node: '>=16.0.0'} - - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - - node-domexception@2.0.1: - resolution: {integrity: sha512-M85rnSC7WQ7wnfQTARPT4LrK7nwCHLdDFOCcItZMhTQjyCebJH8GciKqYJNgaOFZs9nFmTmd/VMyi3OW5jA47w==} - engines: {node: '>=16'} - node-emoji@2.1.3: resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} engines: {node: '>=18'} @@ -4974,9 +4143,6 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - number-allocator@1.0.14: - resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==} - nypm@0.3.12: resolution: {integrity: sha512-D3pzNDWIvgA+7IORhD/IuWzEk4uXv6GsgOxiid4UU3h9oq5IqV1KtPDi63n4sZJ/xcWlr88c0QM2RgN5VbOhFA==} engines: {node: ^14.16.0 || >=16.10.0} @@ -5002,10 +4168,6 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} - observable-webworkers@2.0.1: - resolution: {integrity: sha512-JI1vB0u3pZjoQKOK1ROWzp0ygxSi7Yb0iR+7UNsw4/Zn4cQ0P3R7XL38zac/Dy2tEA7Lg88/wIJTjF8vYXZ0uw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - ofetch@1.3.4: resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} @@ -5062,18 +4224,10 @@ packages: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} - p-defer@4.0.1: - resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==} - engines: {node: '>=12'} - p-each-series@3.0.0: resolution: {integrity: sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==} engines: {node: '>=12'} - p-event@6.0.1: - resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} - engines: {node: '>=16.17'} - p-filter@4.1.0: resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} engines: {node: '>=18'} @@ -5110,10 +4264,6 @@ packages: resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} engines: {node: '>=18'} - p-queue@8.0.1: - resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} - engines: {node: '>=18'} - p-reduce@2.1.0: resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} engines: {node: '>=8'} @@ -5122,10 +4272,6 @@ packages: resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} engines: {node: '>=12'} - p-timeout@6.1.2: - resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} - engines: {node: '>=14.16'} - p-try@1.0.0: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} engines: {node: '>=4'} @@ -5230,9 +4376,6 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} @@ -5242,6 +4385,9 @@ packages: picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -5328,15 +4474,10 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} - prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} - engines: {node: '>=10'} - hasBin: true - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -5357,13 +4498,6 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - progress-events@1.0.1: - resolution: {integrity: sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw==} - promise-toolbox@0.21.0: resolution: {integrity: sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==} engines: {node: '>=6'} @@ -5378,13 +4512,6 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - protobufjs@7.4.0: - resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} - engines: {node: '>=12.0.0'} - - protons-runtime@5.5.0: - resolution: {integrity: sha512-EsALjF9QsrEk6gbCx3lmfHxVN0ah7nG3cY7GySD4xf4g8cr7g543zB88Foh897Sr1RQJ9yDCUsoT1i1H/cVUFA==} - publish-browser-extension@2.2.2: resolution: {integrity: sha512-+Kr6/S+X51PL6FhMg36yAiFxOFO9O+YQQRVNRD1ItG64Nt+QVmhSKUGJbyLrCwsS4lI0e6kqhxV8r9cy8sAWDQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -5401,32 +4528,13 @@ packages: resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} engines: {node: '>=12.20'} - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - - pvtsutils@1.3.5: - resolution: {integrity: sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==} - - pvutils@1.1.3: - resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} - engines: {node: '>=6.0.0'} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - race-event@1.3.0: - resolution: {integrity: sha512-kaLm7axfOnahIqD3jQ4l1e471FIFcEGebXEnhxyLscuUzV8C94xVHtWEqDDXxll7+yu/6lW0w1Ff4HbtvHvOHg==} - - race-signal@1.1.0: - resolution: {integrity: sha512-VqsW1uzCXfKBd2DhA3K3NhQlqQr04+5WQ7+kHpf1HzT01Q+ePSFWZdQHXKZPuLmm2eXTZM1XLO76cq15ZRAaEA==} - radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} @@ -5442,8 +4550,8 @@ packages: peerDependencies: react: ^18.3.1 - react-hook-form@7.53.1: - resolution: {integrity: sha512-6aiQeBda4zjcuaugWvim9WsGqisoUk+etmFEsSUMm451/Ic8L/UAb7sRtMj3V+Hdzm6mMjU1VhiSzYUZeBm0Vg==} + react-hook-form@7.53.2: + resolution: {integrity: sha512-YVel6fW5sOeedd1524pltpHX+jgU2u3DSDtXEaBORNdqiNrsX/nUI/iGXONegttg0mJVnfrIkiV0cmTU6Oo2xw==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 @@ -5533,10 +4641,6 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -5556,9 +4660,6 @@ packages: resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} engines: {node: '>=12'} - reinterval@1.1.0: - resolution: {integrity: sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==} - remark-breaks@4.0.0: resolution: {integrity: sha512-IjEjJOkH4FuJvHZVIW0QCDWxcG96kCq7An/KVH2NfJe6rKZU2AsHeB3OEjPNRxi4QC34Xdx7I2KGYn6IpT7gxQ==} @@ -5805,12 +4906,6 @@ packages: resolution: {integrity: sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==} engines: {node: '>=6'} - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -5926,9 +5021,6 @@ packages: stream-combiner2@1.1.1: resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} - streamx@2.20.1: - resolution: {integrity: sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==} - string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -6038,10 +5130,6 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-color@9.4.0: - resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} - engines: {node: '>=12'} - supports-hyperlinks@3.1.0: resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} engines: {node: '>=14.18'} @@ -6074,13 +5162,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} @@ -6093,9 +5174,6 @@ packages: resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} engines: {node: '>=14.16'} - text-decoder@1.2.0: - resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} - text-extensions@2.4.0: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} engines: {node: '>=8'} @@ -6149,9 +5227,6 @@ packages: toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - traverse@0.6.8: resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} engines: {node: '>= 0.4'} @@ -6162,9 +5237,6 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - trystero@0.20.0: - resolution: {integrity: sha512-lioKNKt4ubHAgAVjWuPHgy2rJlkTewT9TE4sKr/p24A3C3ixQkmLg9FJTqoV+Jpn0UYpqffrjQ8J0emHritXxg==} - ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -6188,17 +5260,10 @@ packages: tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -6237,8 +5302,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.12.2: - resolution: {integrity: sha512-UbuVUWSrHVR03q9CWx+JDHeO6B/Hr9p4U5lRH++5tq/EbFq1faYZe50ZSBePptgfIKLEti0aPQ3hFgnPVcd8ZQ==} + typescript-eslint@8.14.0: + resolution: {integrity: sha512-K8fBJHxVL3kxMmwByvz8hNdBJ8a0YqKzKDX6jRlrjMuNXyd5T2V02HIq37+OiWXvUUOXgOOGiSSOh26Mh8pC3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -6266,18 +5331,6 @@ packages: resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} engines: {node: '>=8'} - uint8-util@2.2.5: - resolution: {integrity: sha512-/QxVQD7CttWpVUKVPz9znO+3Dd4BdTSnFQ7pv/4drVhC9m4BaL2LFHTkJn6EsYoxT79VDq/2Gg8L0H22PrzyMw==} - - uint8-varint@2.0.4: - resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} - - uint8arraylist@2.4.8: - resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} - - uint8arrays@5.1.0: - resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} - unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -6287,10 +5340,6 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici@6.19.7: - resolution: {integrity: sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==} - engines: {node: '>=18.17'} - unenv@1.10.0: resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} @@ -6452,18 +5501,6 @@ packages: resolution: {integrity: sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==} engines: {node: '>=6.14.2'} - utf8-bytes@0.0.1: - resolution: {integrity: sha512-GifWmJAx2qAXT+lZLhbkWhBsy7pr6xWHiPWlVToDiELdWgZwt4Ogjf9tlgvKuALzTFR/d+EPQQI9ogJV3957Jg==} - - utf8-codec@1.0.0: - resolution: {integrity: sha512-S/QSLezp3qvG4ld5PUfXiH7mCFxLKjSVZRFkB3DOjgwHuJPFDkInAXc/anf7BAbHt/D38ozDzL+QMZ6/7gsI6w==} - - utf8-length@0.0.1: - resolution: {integrity: sha512-j/XH2ftofBiobnyApxlN/J6j/ixwT89WEjDcjT66d2i0+GIn9RZfzt8lpEXXE4jUe4NsjBSUq70kS2euQ4nnMw==} - - utf8-string-bytes@1.0.3: - resolution: {integrity: sha512-i/I1Omf6lADjVBlwJpQifZOePV15snHny9w04+lc71+3t8PyWuLC/7clyoOSHOBNGXFe2PAGxmTiZ+Z4HWsPyw==} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -6471,10 +5508,6 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - valibot@1.0.0-beta.0: resolution: {integrity: sha512-Q/oine+NPMXdIy3vwluw0vidHLk0mTPUQBRHc+EHZXnEWF3KzLx1YLsVHPVrgHaMGRfV58P9eGOgxJvi0a059w==} peerDependencies: @@ -6540,9 +5573,6 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - weald@1.0.2: - resolution: {integrity: sha512-iG5cIuBwsPe1ZcoGGd4X6QYlepU1vLr4l4oWpzQWqeJPSo9B8bxxyE6xlnj3TCmThtha7gyVL+uuZgUFkPyfDg==} - web-ext-run@0.2.1: resolution: {integrity: sha512-5D11VcjdGkA1/xax5UWL0YeAbDySKHzWFe6EpsoPNUMw5Uk9tKk9p6GUOfcaI5N7sINKfBMZYNsTBiu5dzJB9A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -6559,34 +5589,12 @@ packages: webextension-polyfill@0.9.0: resolution: {integrity: sha512-LTtHb0yR49xa9irkstDxba4GATDAcDw3ncnFH9RImoFwDlW47U95ME5sn5IiQX2ghfaECaf6xyXM8yvClIBkkw==} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webrtc-polyfill@1.1.8: - resolution: {integrity: sha512-ms2rE5MEg1KXQX45sjl2QaIIevhpPogqoFz7Z1MAJYxWUuxFfI3L0SoiifrTNrWJiJiuFn/Dsf5OIGUWJFdU5g==} - engines: {node: '>=16.0.0'} - - websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - - websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - when@3.7.7: resolution: {integrity: sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==} - wherearewe@2.0.1: - resolution: {integrity: sha512-XUguZbDxCA2wBn2LoFtcEhXL6AXo+hVjGonwhSTTTU9SzbWG8Xu3onNIpzf9j/mYUcJQ0f+m37SzG77G851uFw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -6621,15 +5629,6 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - worker-timers-broker@6.1.8: - resolution: {integrity: sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ==} - - worker-timers-worker@7.0.71: - resolution: {integrity: sha512-ks/5YKwZsto1c2vmljroppOKCivB/ma97g9y77MAAz2TBBjPPgpoOiS1qYQKIgvGTr2QYPT3XhJWIB6Rj2MVPQ==} - - worker-timers@7.1.8: - resolution: {integrity: sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw==} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -6901,45 +5900,14 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@chainsafe/as-chacha20poly1305@0.1.0': {} - - '@chainsafe/as-sha256@0.4.2': {} - - '@chainsafe/is-ip@2.0.2': {} - - '@chainsafe/libp2p-noise@14.1.0': - dependencies: - '@chainsafe/as-chacha20poly1305': 0.1.0 - '@chainsafe/as-sha256': 0.4.2 - '@libp2p/crypto': 3.0.4 - '@libp2p/interface': 1.7.0 - '@libp2p/peer-id': 4.2.4 - '@noble/ciphers': 0.4.1 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - it-byte-stream: 1.1.0 - it-length-prefixed: 9.1.0 - it-length-prefixed-stream: 1.2.0 - it-pair: 2.0.6 - it-pipe: 3.0.1 - it-stream-types: 2.0.2 - protons-runtime: 5.5.0 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - wherearewe: 2.0.1 - - '@chainsafe/netmask@2.0.0': - dependencies: - '@chainsafe/is-ip': 2.0.2 - '@colors/colors@1.5.0': optional: true - '@commitlint/cli@19.5.0(@types/node@22.8.7)(typescript@5.6.3)': + '@commitlint/cli@19.5.0(@types/node@22.9.0)(typescript@5.6.3)': dependencies: '@commitlint/format': 19.5.0 '@commitlint/lint': 19.5.0 - '@commitlint/load': 19.5.0(@types/node@22.8.7)(typescript@5.6.3) + '@commitlint/load': 19.5.0(@types/node@22.9.0)(typescript@5.6.3) '@commitlint/read': 19.5.0 '@commitlint/types': 19.5.0 tinyexec: 0.3.0 @@ -6986,7 +5954,7 @@ snapshots: '@commitlint/rules': 19.5.0 '@commitlint/types': 19.5.0 - '@commitlint/load@19.5.0(@types/node@22.8.7)(typescript@5.6.3)': + '@commitlint/load@19.5.0(@types/node@22.9.0)(typescript@5.6.3)': dependencies: '@commitlint/config-validator': 19.5.0 '@commitlint/execute-rule': 19.5.0 @@ -6994,7 +5962,7 @@ snapshots: '@commitlint/types': 19.5.0 chalk: 5.3.0 cosmiconfig: 9.0.0(typescript@5.6.3) - cosmiconfig-typescript-loader: 5.0.0(@types/node@22.8.7)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -7135,17 +6103,15 @@ snapshots: eslint: 9.14.0(jiti@2.4.0) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.1': {} - '@eslint-community/regexpp@4.12.1': {} - '@eslint-react/ast@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@eslint-react/ast@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: - '@eslint-react/tools': 1.15.2 - '@eslint-react/types': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/typescript-estree': 8.12.1(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@eslint-react/types': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) birecord: 0.1.1 string-ts: 2.2.0 ts-pattern: 5.5.0 @@ -7154,18 +6120,18 @@ snapshots: - supports-color - typescript - '@eslint-react/core@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@eslint-react/core@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: - '@eslint-react/ast': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/jsx': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/shared': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/tools': 1.15.2 - '@eslint-react/types': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/var': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/type-utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/ast': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/jsx': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/shared': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@eslint-react/types': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/var': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) birecord: 0.1.1 short-unique-id: 5.2.0 ts-pattern: 5.5.0 @@ -7174,72 +6140,72 @@ snapshots: - supports-color - typescript - '@eslint-react/eslint-plugin@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@eslint-react/eslint-plugin@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: - '@eslint-react/shared': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/tools': 1.15.2 - '@eslint-react/types': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/type-utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/shared': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@eslint-react/types': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) eslint: 9.14.0(jiti@2.4.0) - eslint-plugin-react-debug: 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - eslint-plugin-react-dom: 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - eslint-plugin-react-hooks-extra: 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - eslint-plugin-react-naming-convention: 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - eslint-plugin-react-web-api: 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - eslint-plugin-react-x: 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + eslint-plugin-react-debug: 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + eslint-plugin-react-dom: 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + eslint-plugin-react-hooks-extra: 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + eslint-plugin-react-naming-convention: 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + eslint-plugin-react-web-api: 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + eslint-plugin-react-x: 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@eslint-react/jsx@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@eslint-react/jsx@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: - '@eslint-react/ast': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/tools': 1.15.2 - '@eslint-react/types': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/var': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/ast': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@eslint-react/types': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/var': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) ts-pattern: 5.5.0 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@eslint-react/shared@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: - '@eslint-react/tools': 1.15.2 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) picomatch: 4.0.2 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/tools@1.15.2': {} + '@eslint-react/tools@1.16.1': {} - '@eslint-react/types@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@eslint-react/types@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: - '@eslint-react/tools': 1.15.2 - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@eslint-react/var@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: - '@eslint-react/ast': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/tools': 1.15.2 - '@eslint-react/types': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/ast': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@eslint-react/types': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) ts-pattern: 5.5.0 transitivePeerDependencies: - eslint @@ -7278,330 +6244,6 @@ snapshots: dependencies: levn: 0.4.1 - '@ethersproject/bytes@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/logger@5.7.0': {} - - '@ethersproject/rlp@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@firebase/analytics-compat@0.2.13(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10)': - dependencies: - '@firebase/analytics': 0.10.7(@firebase/app@0.10.10) - '@firebase/analytics-types': 0.8.2 - '@firebase/app-compat': 0.2.40 - '@firebase/component': 0.6.8 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/analytics-types@0.8.2': {} - - '@firebase/analytics@0.10.7(@firebase/app@0.10.10)': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/component': 0.6.8 - '@firebase/installations': 0.6.8(@firebase/app@0.10.10) - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - - '@firebase/app-check-compat@0.3.14(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10)': - dependencies: - '@firebase/app-check': 0.8.7(@firebase/app@0.10.10) - '@firebase/app-check-types': 0.5.2 - '@firebase/app-compat': 0.2.40 - '@firebase/component': 0.6.8 - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/app-check-interop-types@0.3.2': {} - - '@firebase/app-check-types@0.5.2': {} - - '@firebase/app-check@0.8.7(@firebase/app@0.10.10)': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/component': 0.6.8 - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - - '@firebase/app-compat@0.2.40': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/component': 0.6.8 - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - - '@firebase/app-types@0.9.2': {} - - '@firebase/app@0.10.10': - dependencies: - '@firebase/component': 0.6.8 - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - idb: 7.1.1 - tslib: 2.7.0 - - '@firebase/auth-compat@0.5.13(@firebase/app-compat@0.2.40)(@firebase/app-types@0.9.2)(@firebase/app@0.10.10)': - dependencies: - '@firebase/app-compat': 0.2.40 - '@firebase/auth': 1.7.8(@firebase/app@0.10.10) - '@firebase/auth-types': 0.12.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.7) - '@firebase/component': 0.6.8 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - undici: 6.19.7 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/app-types' - - '@react-native-async-storage/async-storage' - - '@firebase/auth-interop-types@0.2.3': {} - - '@firebase/auth-types@0.12.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.7)': - dependencies: - '@firebase/app-types': 0.9.2 - '@firebase/util': 1.9.7 - - '@firebase/auth@1.7.8(@firebase/app@0.10.10)': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/component': 0.6.8 - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - undici: 6.19.7 - - '@firebase/component@0.6.8': - dependencies: - '@firebase/util': 1.9.7 - tslib: 2.7.0 - - '@firebase/database-compat@1.0.7': - dependencies: - '@firebase/component': 0.6.8 - '@firebase/database': 1.0.7 - '@firebase/database-types': 1.0.4 - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - - '@firebase/database-types@1.0.4': - dependencies: - '@firebase/app-types': 0.9.2 - '@firebase/util': 1.9.7 - - '@firebase/database@1.0.7': - dependencies: - '@firebase/app-check-interop-types': 0.3.2 - '@firebase/auth-interop-types': 0.2.3 - '@firebase/component': 0.6.8 - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - faye-websocket: 0.11.4 - tslib: 2.7.0 - - '@firebase/firestore-compat@0.3.36(@firebase/app-compat@0.2.40)(@firebase/app-types@0.9.2)(@firebase/app@0.10.10)': - dependencies: - '@firebase/app-compat': 0.2.40 - '@firebase/component': 0.6.8 - '@firebase/firestore': 4.7.1(@firebase/app@0.10.10) - '@firebase/firestore-types': 3.0.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.7) - '@firebase/util': 1.9.7 - tslib: 2.7.0 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/app-types' - - '@firebase/firestore-types@3.0.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.7)': - dependencies: - '@firebase/app-types': 0.9.2 - '@firebase/util': 1.9.7 - - '@firebase/firestore@4.7.1(@firebase/app@0.10.10)': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/component': 0.6.8 - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - '@firebase/webchannel-wrapper': 1.0.1 - '@grpc/grpc-js': 1.9.15 - '@grpc/proto-loader': 0.7.13 - tslib: 2.7.0 - undici: 6.19.7 - - '@firebase/functions-compat@0.3.13(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10)': - dependencies: - '@firebase/app-compat': 0.2.40 - '@firebase/component': 0.6.8 - '@firebase/functions': 0.11.7(@firebase/app@0.10.10) - '@firebase/functions-types': 0.6.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/functions-types@0.6.2': {} - - '@firebase/functions@0.11.7(@firebase/app@0.10.10)': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/app-check-interop-types': 0.3.2 - '@firebase/auth-interop-types': 0.2.3 - '@firebase/component': 0.6.8 - '@firebase/messaging-interop-types': 0.2.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - undici: 6.19.7 - - '@firebase/installations-compat@0.2.8(@firebase/app-compat@0.2.40)(@firebase/app-types@0.9.2)(@firebase/app@0.10.10)': - dependencies: - '@firebase/app-compat': 0.2.40 - '@firebase/component': 0.6.8 - '@firebase/installations': 0.6.8(@firebase/app@0.10.10) - '@firebase/installations-types': 0.5.2(@firebase/app-types@0.9.2) - '@firebase/util': 1.9.7 - tslib: 2.7.0 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/app-types' - - '@firebase/installations-types@0.5.2(@firebase/app-types@0.9.2)': - dependencies: - '@firebase/app-types': 0.9.2 - - '@firebase/installations@0.6.8(@firebase/app@0.10.10)': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/component': 0.6.8 - '@firebase/util': 1.9.7 - idb: 7.1.1 - tslib: 2.7.0 - - '@firebase/logger@0.4.2': - dependencies: - tslib: 2.7.0 - - '@firebase/messaging-compat@0.2.10(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10)': - dependencies: - '@firebase/app-compat': 0.2.40 - '@firebase/component': 0.6.8 - '@firebase/messaging': 0.12.10(@firebase/app@0.10.10) - '@firebase/util': 1.9.7 - tslib: 2.7.0 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/messaging-interop-types@0.2.2': {} - - '@firebase/messaging@0.12.10(@firebase/app@0.10.10)': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/component': 0.6.8 - '@firebase/installations': 0.6.8(@firebase/app@0.10.10) - '@firebase/messaging-interop-types': 0.2.2 - '@firebase/util': 1.9.7 - idb: 7.1.1 - tslib: 2.7.0 - - '@firebase/performance-compat@0.2.8(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10)': - dependencies: - '@firebase/app-compat': 0.2.40 - '@firebase/component': 0.6.8 - '@firebase/logger': 0.4.2 - '@firebase/performance': 0.6.8(@firebase/app@0.10.10) - '@firebase/performance-types': 0.2.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/performance-types@0.2.2': {} - - '@firebase/performance@0.6.8(@firebase/app@0.10.10)': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/component': 0.6.8 - '@firebase/installations': 0.6.8(@firebase/app@0.10.10) - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - - '@firebase/remote-config-compat@0.2.8(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10)': - dependencies: - '@firebase/app-compat': 0.2.40 - '@firebase/component': 0.6.8 - '@firebase/logger': 0.4.2 - '@firebase/remote-config': 0.4.8(@firebase/app@0.10.10) - '@firebase/remote-config-types': 0.3.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/remote-config-types@0.3.2': {} - - '@firebase/remote-config@0.4.8(@firebase/app@0.10.10)': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/component': 0.6.8 - '@firebase/installations': 0.6.8(@firebase/app@0.10.10) - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - - '@firebase/storage-compat@0.3.11(@firebase/app-compat@0.2.40)(@firebase/app-types@0.9.2)(@firebase/app@0.10.10)': - dependencies: - '@firebase/app-compat': 0.2.40 - '@firebase/component': 0.6.8 - '@firebase/storage': 0.13.1(@firebase/app@0.10.10) - '@firebase/storage-types': 0.8.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.7) - '@firebase/util': 1.9.7 - tslib: 2.7.0 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/app-types' - - '@firebase/storage-types@0.8.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.7)': - dependencies: - '@firebase/app-types': 0.9.2 - '@firebase/util': 1.9.7 - - '@firebase/storage@0.13.1(@firebase/app@0.10.10)': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/component': 0.6.8 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - undici: 6.19.7 - - '@firebase/util@1.9.7': - dependencies: - tslib: 2.7.0 - - '@firebase/vertexai-preview@0.0.3(@firebase/app-types@0.9.2)(@firebase/app@0.10.10)': - dependencies: - '@firebase/app': 0.10.10 - '@firebase/app-check-interop-types': 0.3.2 - '@firebase/app-types': 0.9.2 - '@firebase/component': 0.6.8 - '@firebase/logger': 0.4.2 - '@firebase/util': 1.9.7 - tslib: 2.7.0 - - '@firebase/webchannel-wrapper@1.0.1': {} - '@floating-ui/core@1.6.8': dependencies: '@floating-ui/utils': 0.2.8 @@ -7619,21 +6261,9 @@ snapshots: '@floating-ui/utils@0.2.8': {} - '@grpc/grpc-js@1.9.15': + '@hookform/resolvers@3.9.1(react-hook-form@7.53.2(react@18.3.1))': dependencies: - '@grpc/proto-loader': 0.7.13 - '@types/node': 22.8.7 - - '@grpc/proto-loader@0.7.13': - dependencies: - lodash.camelcase: 4.3.0 - long: 5.2.3 - protobufjs: 7.4.0 - yargs: 17.7.2 - - '@hookform/resolvers@3.9.1(react-hook-form@7.53.1(react@18.3.1))': - dependencies: - react-hook-form: 7.53.1(react@18.3.1) + react-hook-form: 7.53.2(react@18.3.1) '@humanfs/core@0.19.1': {} @@ -7674,260 +6304,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@leichtgewicht/base64-codec@1.0.0': {} - - '@leichtgewicht/dns-packet@6.0.3': - dependencies: - '@leichtgewicht/ip-codec': 2.0.5 - bytes.js: 0.0.2 - utf8-bytes: 0.0.1 - utf8-codec: 1.0.0 - utf8-length: 0.0.1 - utf8-string-bytes: 1.0.3 - - '@leichtgewicht/dns-socket@5.0.0': - dependencies: - '@leichtgewicht/dns-packet': 6.0.3 - - '@leichtgewicht/ip-codec@2.0.5': {} - - '@libp2p/crypto@3.0.4': - dependencies: - '@libp2p/interface': 1.7.0 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - multiformats: 13.3.0 - node-forge: 1.3.1 - protons-runtime: 5.5.0 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - - '@libp2p/crypto@4.1.9': - dependencies: - '@libp2p/interface': 1.7.0 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - asn1js: 3.0.5 - multiformats: 13.3.0 - protons-runtime: 5.5.0 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - - '@libp2p/identify@1.0.21': - dependencies: - '@libp2p/interface': 1.7.0 - '@libp2p/interface-internal': 1.3.4 - '@libp2p/peer-id': 4.2.4 - '@libp2p/peer-record': 7.0.25 - '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-matcher': 1.2.4 - it-protobuf-stream: 1.1.5 - protons-runtime: 5.5.0 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - wherearewe: 2.0.1 - - '@libp2p/interface-internal@1.3.4': - dependencies: - '@libp2p/interface': 1.7.0 - '@libp2p/peer-collections': 5.2.9 - '@multiformats/multiaddr': 12.3.1 - progress-events: 1.0.1 - uint8arraylist: 2.4.8 - - '@libp2p/interface@1.7.0': - dependencies: - '@multiformats/multiaddr': 12.3.1 - it-pushable: 3.2.3 - it-stream-types: 2.0.2 - multiformats: 13.3.0 - progress-events: 1.0.1 - uint8arraylist: 2.4.8 - - '@libp2p/logger@4.0.20': - dependencies: - '@libp2p/interface': 1.7.0 - '@multiformats/multiaddr': 12.3.1 - interface-datastore: 8.3.1 - multiformats: 13.3.0 - weald: 1.0.2 - - '@libp2p/mplex@10.1.5': - dependencies: - '@libp2p/interface': 1.7.0 - '@libp2p/utils': 5.4.9 - it-pipe: 3.0.1 - it-pushable: 3.2.3 - it-stream-types: 2.0.2 - uint8-varint: 2.0.4 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - - '@libp2p/multistream-select@5.1.17': - dependencies: - '@libp2p/interface': 1.7.0 - it-length-prefixed: 9.1.0 - it-length-prefixed-stream: 1.2.0 - it-stream-types: 2.0.2 - p-defer: 4.0.1 - race-signal: 1.1.0 - uint8-varint: 2.0.4 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - - '@libp2p/peer-collections@5.2.9': - dependencies: - '@libp2p/interface': 1.7.0 - '@libp2p/peer-id': 4.2.4 - '@libp2p/utils': 5.4.9 - - '@libp2p/peer-id-factory@4.2.4': - dependencies: - '@libp2p/crypto': 4.1.9 - '@libp2p/interface': 1.7.0 - '@libp2p/peer-id': 4.2.4 - protons-runtime: 5.5.0 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - - '@libp2p/peer-id@4.2.4': - dependencies: - '@libp2p/interface': 1.7.0 - multiformats: 13.3.0 - uint8arrays: 5.1.0 - - '@libp2p/peer-record@7.0.25': - dependencies: - '@libp2p/crypto': 4.1.9 - '@libp2p/interface': 1.7.0 - '@libp2p/peer-id': 4.2.4 - '@libp2p/utils': 5.4.9 - '@multiformats/multiaddr': 12.3.1 - protons-runtime: 5.5.0 - uint8-varint: 2.0.4 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - - '@libp2p/peer-store@10.1.5': - dependencies: - '@libp2p/interface': 1.7.0 - '@libp2p/peer-collections': 5.2.9 - '@libp2p/peer-id': 4.2.4 - '@libp2p/peer-record': 7.0.25 - '@multiformats/multiaddr': 12.3.1 - interface-datastore: 8.3.1 - it-all: 3.0.6 - mortice: 3.0.4 - multiformats: 13.3.0 - protons-runtime: 5.5.0 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - - '@libp2p/ping@1.1.6': - dependencies: - '@libp2p/crypto': 4.1.9 - '@libp2p/interface': 1.7.0 - '@libp2p/interface-internal': 1.3.4 - '@multiformats/multiaddr': 12.3.1 - it-first: 3.0.6 - it-pipe: 3.0.1 - uint8arrays: 5.1.0 - - '@libp2p/utils@5.4.9': - dependencies: - '@chainsafe/is-ip': 2.0.2 - '@libp2p/crypto': 4.1.9 - '@libp2p/interface': 1.7.0 - '@libp2p/logger': 4.0.20 - '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-matcher': 1.2.4 - '@sindresorhus/fnv1a': 3.1.0 - '@types/murmurhash3js-revisited': 3.0.3 - any-signal: 4.1.1 - delay: 6.0.0 - get-iterator: 2.0.1 - is-loopback-addr: 2.0.2 - it-pushable: 3.2.3 - it-stream-types: 2.0.2 - murmurhash3js-revisited: 3.0.0 - netmask: 2.0.2 - p-defer: 4.0.1 - race-event: 1.3.0 - race-signal: 1.1.0 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - - '@libp2p/websockets@8.2.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)': - dependencies: - '@libp2p/interface': 1.7.0 - '@libp2p/utils': 5.4.9 - '@multiformats/mafmt': 12.1.6 - '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-to-uri': 10.1.0 - '@types/ws': 8.5.12 - it-ws: 6.1.5(bufferutil@4.0.8)(utf-8-validate@6.0.4) - p-defer: 4.0.1 - progress-events: 1.0.1 - race-signal: 1.1.0 - wherearewe: 2.0.1 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@lottiefiles/dotlottie-react@0.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@lottiefiles/dotlottie-web': 0.36.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@lottiefiles/dotlottie-web@0.36.1': {} - '@lukeed/csprng@1.1.0': {} - '@multiformats/dns@1.0.6': - dependencies: - '@types/dns-packet': 5.6.5 - buffer: 6.0.3 - dns-packet: 5.6.1 - hashlru: 2.3.0 - p-queue: 8.0.1 - progress-events: 1.0.1 - uint8arrays: 5.1.0 - - '@multiformats/mafmt@12.1.6': - dependencies: - '@multiformats/multiaddr': 12.3.1 - - '@multiformats/multiaddr-matcher@1.2.4': - dependencies: - '@chainsafe/is-ip': 2.0.2 - '@multiformats/multiaddr': 12.3.1 - multiformats: 13.3.0 - - '@multiformats/multiaddr-to-uri@10.1.0': - dependencies: - '@multiformats/multiaddr': 12.3.1 - - '@multiformats/multiaddr@12.3.1': - dependencies: - '@chainsafe/is-ip': 2.0.2 - '@chainsafe/netmask': 2.0.0 - '@multiformats/dns': 1.0.6 - multiformats: 13.3.0 - uint8-varint: 2.0.4 - uint8arrays: 5.1.0 - - '@noble/ciphers@0.4.1': {} - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@noble/secp256k1@1.7.1': {} - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -8084,29 +6462,6 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@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': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 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': {} - '@radix-ui/number@1.1.0': {} '@radix-ui/primitive@1.1.0': {} @@ -8397,7 +6752,7 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-scroll-area@1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-scroll-area@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/number': 1.1.0 '@radix-ui/primitive': 1.1.0 @@ -8670,8 +7025,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@sindresorhus/fnv1a@3.1.0': {} - '@sindresorhus/is@4.6.0': {} '@sindresorhus/is@5.6.0': {} @@ -8682,48 +7035,6 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@supabase/auth-js@2.65.0': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/functions-js@2.4.1': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/node-fetch@2.6.15': - dependencies: - whatwg-url: 5.0.0 - - '@supabase/postgrest-js@1.16.1': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/realtime-js@2.10.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)': - dependencies: - '@supabase/node-fetch': 2.6.15 - '@types/phoenix': 1.6.5 - '@types/ws': 8.5.12 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@supabase/storage-js@2.7.0': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/supabase-js@2.45.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)': - dependencies: - '@supabase/auth-js': 2.65.0 - '@supabase/functions-js': 2.4.1 - '@supabase/node-fetch': 2.6.15 - '@supabase/postgrest-js': 1.16.1 - '@supabase/realtime-js': 2.10.2(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@supabase/storage-js': 2.7.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -8806,16 +7117,6 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.4.14 - '@thaunknown/simple-peer@10.0.10': - dependencies: - debug: 4.3.7 - err-code: 3.0.1 - streamx: 2.20.1 - uint8-util: 2.2.5 - webrtc-polyfill: 1.1.8 - transitivePeerDependencies: - - supports-color - '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.25.6 @@ -8844,16 +7145,12 @@ snapshots: '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 22.8.7 + '@types/node': 22.9.0 '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 - '@types/dns-packet@5.6.5': - dependencies: - '@types/node': 22.8.7 - '@types/eslint-plugin-tailwindcss@3.17.0': dependencies: '@types/eslint': 9.6.1 @@ -8901,16 +7198,12 @@ snapshots: '@types/ms@0.7.34': {} - '@types/murmurhash3js-revisited@3.0.3': {} - - '@types/node@22.8.7': + '@types/node@22.9.0': dependencies: undici-types: 6.19.8 '@types/normalize-package-data@2.4.4': {} - '@types/phoenix@1.6.5': {} - '@types/prop-types@15.7.12': {} '@types/react-dom@18.3.1': @@ -8922,11 +7215,6 @@ snapshots: '@types/prop-types': 15.7.12 csstype: 3.1.3 - '@types/readable-stream@4.0.15': - dependencies: - '@types/node': 22.8.7 - safe-buffer: 5.1.2 - '@types/semver@7.5.8': {} '@types/unist@2.0.11': {} @@ -8937,23 +7225,19 @@ snapshots: '@types/webextension-polyfill@0.8.3': {} - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.8.7 - '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.8.7 + '@types/node': 22.9.0 optional: true - '@typescript-eslint/eslint-plugin@8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3))(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3))(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: - '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.2 - '@typescript-eslint/type-utils': 8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.12.2 + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.14.0 eslint: 9.14.0(jiti@2.4.0) graphemer: 1.4.0 ignore: 5.3.2 @@ -8964,12 +7248,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.12.2 - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.12.2 + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.14.0 debug: 4.3.7 eslint: 9.14.0(jiti@2.4.0) optionalDependencies: @@ -8977,20 +7261,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.12.1': + '@typescript-eslint/scope-manager@8.14.0': dependencies: - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/visitor-keys': 8.12.1 + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/visitor-keys': 8.14.0 - '@typescript-eslint/scope-manager@8.12.2': + '@typescript-eslint/type-utils@8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/visitor-keys': 8.12.2 - - '@typescript-eslint/type-utils@8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.12.1(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: @@ -8999,26 +7278,12 @@ snapshots: - eslint - supports-color - '@typescript-eslint/type-utils@8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@typescript-eslint/types@8.14.0': {} + + '@typescript-eslint/typescript-estree@8.14.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - debug: 4.3.7 - ts-api-utils: 1.3.0(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - eslint - - supports-color - - '@typescript-eslint/types@8.12.1': {} - - '@typescript-eslint/types@8.12.2': {} - - '@typescript-eslint/typescript-estree@8.12.1(typescript@5.6.3)': - dependencies: - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/visitor-keys': 8.12.1 + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/visitor-keys': 8.14.0 debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -9030,197 +7295,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.12.2(typescript@5.6.3)': - dependencies: - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/visitor-keys': 8.12.2 - debug: 4.3.7 - fast-glob: 3.3.2 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@typescript-eslint/utils@8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@2.4.0)) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/typescript-estree': 8.12.1(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3) eslint: 9.14.0(jiti@2.4.0) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3)': + '@typescript-eslint/visitor-keys@8.14.0': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@2.4.0)) - '@typescript-eslint/scope-manager': 8.12.2 - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) - eslint: 9.14.0(jiti@2.4.0) - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@8.12.1': - dependencies: - '@typescript-eslint/types': 8.12.1 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@8.12.2': - dependencies: - '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/types': 8.14.0 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@22.8.7))': + '@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@22.9.0))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.10(@types/node@22.8.7) - transitivePeerDependencies: - - supports-color - - '@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4)': - dependencies: - '@libp2p/ping': 1.1.6 - '@noble/hashes': 1.5.0 - '@waku/enr': 0.0.21 - '@waku/interfaces': 0.0.22 - '@waku/message-hash': 0.1.16 - '@waku/proto': 0.0.6 - '@waku/utils': 0.0.15 - debug: 4.3.7 - it-all: 3.0.6 - it-length-prefixed: 9.1.0 - it-pipe: 3.0.1 - libp2p: 1.9.4 - p-event: 6.0.1 - uint8arraylist: 2.4.8 - uuid: 9.0.1 - optionalDependencies: - '@multiformats/multiaddr': 12.3.1 - transitivePeerDependencies: - - supports-color - - '@waku/discovery@0.0.3(@libp2p/interface@1.7.0)(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/enr@0.0.21)(@waku/interfaces@0.0.22)(@waku/proto@0.0.7)(@waku/utils@0.0.20)': - dependencies: - '@waku/core': 0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4) - '@waku/enr': 0.0.21 - '@waku/proto': 0.0.7 - '@waku/utils': 0.0.20 - debug: 4.3.7 - dns-query: 0.11.2 - hi-base32: 0.5.1 - uint8arrays: 5.1.0 - optionalDependencies: - '@libp2p/interface': 1.7.0 - '@waku/interfaces': 0.0.22 - transitivePeerDependencies: - - supports-color - - '@waku/enr@0.0.21': - dependencies: - '@ethersproject/rlp': 5.7.0 - '@libp2p/crypto': 4.1.9 - '@libp2p/peer-id': 4.2.4 - '@multiformats/multiaddr': 12.3.1 - '@noble/secp256k1': 1.7.1 - '@waku/utils': 0.0.15 - debug: 4.3.7 - js-sha3: 0.9.3 - transitivePeerDependencies: - - supports-color - - '@waku/interfaces@0.0.22': {} - - '@waku/interfaces@0.0.27': - dependencies: - '@waku/proto': 0.0.8 - - '@waku/message-hash@0.1.16': - dependencies: - '@noble/hashes': 1.5.0 - '@waku/utils': 0.0.20 - transitivePeerDependencies: - - supports-color - - '@waku/proto@0.0.6': - dependencies: - protons-runtime: 5.5.0 - - '@waku/proto@0.0.7': - dependencies: - protons-runtime: 5.5.0 - - '@waku/proto@0.0.8': - dependencies: - protons-runtime: 5.5.0 - - '@waku/relay@0.0.11(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/interfaces@0.0.22)(@waku/proto@0.0.7)(@waku/utils@0.0.20)': - dependencies: - '@noble/hashes': 1.5.0 - '@waku/core': 0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4) - '@waku/proto': 0.0.7 - '@waku/utils': 0.0.20 - chai: 4.5.0 - debug: 4.3.7 - fast-check: 3.22.0 - optionalDependencies: - '@waku/interfaces': 0.0.22 - transitivePeerDependencies: - - supports-color - - '@waku/sdk@0.0.26(@libp2p/interface@1.7.0)(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/enr@0.0.21)(@waku/interfaces@0.0.22)(@waku/message-hash@0.1.16)(@waku/relay@0.0.11(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/interfaces@0.0.22)(@waku/proto@0.0.7)(@waku/utils@0.0.20))(@waku/utils@0.0.20)(bufferutil@4.0.8)(utf-8-validate@6.0.4)': - dependencies: - '@chainsafe/libp2p-noise': 14.1.0 - '@libp2p/identify': 1.0.21 - '@libp2p/mplex': 10.1.5 - '@libp2p/ping': 1.1.6 - '@libp2p/websockets': 8.2.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@noble/hashes': 1.5.0 - '@waku/core': 0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4) - '@waku/discovery': 0.0.3(@libp2p/interface@1.7.0)(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/enr@0.0.21)(@waku/interfaces@0.0.22)(@waku/proto@0.0.7)(@waku/utils@0.0.20) - '@waku/message-hash': 0.1.16 - '@waku/proto': 0.0.7 - '@waku/relay': 0.0.11(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/interfaces@0.0.22)(@waku/proto@0.0.7)(@waku/utils@0.0.20) - '@waku/utils': 0.0.20 - libp2p: 1.9.4 - optionalDependencies: - '@waku/interfaces': 0.0.22 - transitivePeerDependencies: - - '@libp2p/interface' - - '@waku/enr' - - bufferutil - - supports-color - - utf-8-validate - - '@waku/utils@0.0.15': - dependencies: - '@noble/hashes': 1.5.0 - '@waku/interfaces': 0.0.22 - chai: 4.5.0 - debug: 4.3.7 - uint8arrays: 5.1.0 - transitivePeerDependencies: - - supports-color - - '@waku/utils@0.0.20': - dependencies: - '@noble/hashes': 1.5.0 - '@waku/interfaces': 0.0.27 - chai: 4.5.0 - debug: 4.3.7 - uint8arrays: 5.1.0 + vite: 5.4.10(@types/node@22.9.0) transitivePeerDependencies: - supports-color @@ -9253,10 +7353,6 @@ snapshots: jsonparse: 1.3.1 through: 2.3.8 - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - acorn-jsx@5.3.2(acorn@8.14.0): dependencies: acorn: 8.14.0 @@ -9325,8 +7421,6 @@ snapshots: any-promise@1.3.0: {} - any-signal@4.1.1: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -9364,14 +7458,6 @@ snapshots: is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - asn1js@3.0.5: - dependencies: - pvtsutils: 1.3.5 - pvutils: 1.1.3 - tslib: 2.7.0 - - assertion-error@1.1.0: {} - async-mutex@0.5.0: dependencies: tslib: 2.7.0 @@ -9380,31 +7466,24 @@ snapshots: at-least-node@1.0.0: {} - autoprefixer@10.4.20(postcss@8.4.47): + autoprefixer@10.4.20(postcss@8.4.49): dependencies: browserslist: 4.23.3 caniuse-lite: 1.0.30001660 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.0 - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - b4a@1.6.6: {} - bail@2.0.2: {} balanced-match@1.0.2: {} - bare-events@2.4.2: - optional: true - - base64-arraybuffer@1.0.2: {} - base64-js@1.5.1: {} before-after-hook@3.0.2: {} @@ -9415,25 +7494,12 @@ snapshots: birecord@0.1.1: {} - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - bl@5.1.0: dependencies: buffer: 6.0.3 inherits: 2.0.4 readable-stream: 3.6.2 - bl@6.0.15: - dependencies: - '@types/readable-stream': 4.0.15 - buffer: 6.0.3 - inherits: 2.0.4 - readable-stream: 4.5.2 - bluebird@3.7.2: {} boolbase@1.0.0: {} @@ -9479,11 +7545,6 @@ snapshots: buffer-from@1.1.2: {} - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -9508,8 +7569,6 @@ snapshots: mv: 2.1.1 safe-json-stringify: 1.2.0 - bytes.js@0.0.2: {} - c12@1.11.2(magicast@0.3.5): dependencies: chokidar: 3.6.0 @@ -9561,16 +7620,6 @@ snapshots: ccount@2.0.1: {} - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -9594,10 +7643,6 @@ snapshots: character-reference-invalid@2.0.1: {} - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -9610,13 +7655,11 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chownr@1.1.4: {} - chownr@2.0.0: {} chrome-launcher@1.1.0: dependencies: - '@types/node': 22.8.7 + '@types/node': 22.9.0 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 2.0.1 @@ -9723,8 +7766,6 @@ snapshots: commander@9.5.0: {} - commist@3.2.0: {} - compare-func@2.0.0: dependencies: array-ify: 1.0.0 @@ -9739,13 +7780,6 @@ snapshots: readable-stream: 2.3.8 typedarray: 0.0.6 - concat-stream@2.0.0: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - confbox@0.1.7: {} config-chain@1.1.13: @@ -9808,9 +7842,9 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@5.0.0(@types/node@22.8.7)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): + cosmiconfig-typescript-loader@5.0.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): dependencies: - '@types/node': 22.8.7 + '@types/node': 22.9.0 cosmiconfig: 9.0.0(typescript@5.6.3) jiti: 1.21.6 typescript: 5.6.3 @@ -9909,21 +7943,6 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.1 - datastore-core@9.2.9: - dependencies: - '@libp2p/logger': 4.0.20 - err-code: 3.0.1 - interface-datastore: 8.3.1 - interface-store: 5.1.8 - it-drain: 3.0.7 - it-filter: 3.1.1 - it-map: 3.1.1 - it-merge: 3.0.5 - it-pipe: 3.0.1 - it-pushable: 3.2.3 - it-sort: 3.0.6 - it-take: 3.0.6 - date-fns@4.1.0: {} debounce@1.2.1: {} @@ -9944,10 +7963,6 @@ snapshots: dependencies: mimic-response: 3.1.0 - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - deep-extend@0.6.0: {} deep-is@0.1.4: {} @@ -9995,16 +8010,12 @@ snapshots: defu@6.1.4: {} - delay@6.0.0: {} - dequal@2.0.3: {} destr@2.0.3: {} detect-libc@1.0.3: {} - detect-libc@2.0.3: {} - detect-node-es@1.1.0: {} devlop@1.1.0: @@ -10019,18 +8030,6 @@ snapshots: dlv@1.1.3: {} - dns-packet@5.6.1: - dependencies: - '@leichtgewicht/ip-codec': 2.0.5 - - dns-query@0.11.2: - dependencies: - '@leichtgewicht/base64-codec': 1.0.0 - '@leichtgewicht/dns-packet': 6.0.3 - '@leichtgewicht/dns-socket': 5.0.0 - '@leichtgewicht/ip-codec': 2.0.5 - utf8-codec: 1.0.0 - dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -10114,8 +8113,6 @@ snapshots: environment@1.1.0: {} - err-code@3.0.1: {} - error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -10247,19 +8244,19 @@ snapshots: '@types/eslint': 9.6.1 eslint-config-prettier: 9.1.0(eslint@9.14.0(jiti@2.4.0)) - eslint-plugin-react-debug@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): + eslint-plugin-react-debug@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): dependencies: - '@eslint-react/ast': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/core': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/jsx': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/shared': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/tools': 1.15.2 - '@eslint-react/types': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/var': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/type-utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/ast': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/core': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/jsx': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/shared': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@eslint-react/types': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/var': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) eslint: 9.14.0(jiti@2.4.0) string-ts: 2.2.0 ts-pattern: 5.5.0 @@ -10268,18 +8265,18 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): + eslint-plugin-react-dom@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): dependencies: - '@eslint-react/ast': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/core': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/jsx': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/shared': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/tools': 1.15.2 - '@eslint-react/types': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/var': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/ast': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/core': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/jsx': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/shared': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@eslint-react/types': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/var': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) eslint: 9.14.0(jiti@2.4.0) ts-pattern: 5.5.0 optionalDependencies: @@ -10287,19 +8284,19 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): + eslint-plugin-react-hooks-extra@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): dependencies: - '@eslint-react/ast': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/core': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/jsx': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/shared': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/tools': 1.15.2 - '@eslint-react/types': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/var': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/type-utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/ast': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/core': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/jsx': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/shared': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@eslint-react/types': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/var': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) eslint: 9.14.0(jiti@2.4.0) ts-pattern: 5.5.0 optionalDependencies: @@ -10307,18 +8304,18 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-naming-convention@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): + eslint-plugin-react-naming-convention@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): dependencies: - '@eslint-react/ast': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/core': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/jsx': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/shared': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/tools': 1.15.2 - '@eslint-react/types': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/type-utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/ast': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/core': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/jsx': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/shared': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@eslint-react/types': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) eslint: 9.14.0(jiti@2.4.0) ts-pattern: 5.5.0 optionalDependencies: @@ -10326,18 +8323,18 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): + eslint-plugin-react-web-api@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): dependencies: - '@eslint-react/ast': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/core': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/jsx': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/shared': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/tools': 1.15.2 - '@eslint-react/types': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/var': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/ast': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/core': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/jsx': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/shared': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@eslint-react/types': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/var': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) birecord: 0.1.1 eslint: 9.14.0(jiti@2.4.0) ts-pattern: 5.5.0 @@ -10346,19 +8343,19 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): + eslint-plugin-react-x@1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): dependencies: - '@eslint-react/ast': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/core': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/jsx': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/shared': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/tools': 1.15.2 - '@eslint-react/types': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@eslint-react/var': 1.15.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/type-utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/ast': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/core': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/jsx': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/shared': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/tools': 1.16.1 + '@eslint-react/types': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@eslint-react/var': 1.16.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.14.0 + '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/types': 8.14.0 + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) eslint: 9.14.0(jiti@2.4.0) is-immutable-type: 5.0.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) ts-pattern: 5.5.0 @@ -10370,7 +8367,7 @@ snapshots: eslint-plugin-tailwindcss@3.17.5(tailwindcss@3.4.14): dependencies: fast-glob: 3.3.2 - postcss: 8.4.47 + postcss: 8.4.49 tailwindcss: 3.4.14 eslint-scope@8.2.0: @@ -10450,14 +8447,8 @@ snapshots: esutils@2.0.3: {} - event-iterator@2.0.0: {} - - event-target-shim@5.0.1: {} - eventemitter3@5.0.1: {} - events@3.3.0: {} - execa@5.1.1: dependencies: cross-spawn: 7.0.3 @@ -10509,8 +8500,6 @@ snapshots: strip-final-newline: 4.0.0 yoctocolors: 2.1.1 - expand-template@2.0.3: {} - extend@3.0.2: {} extract-zip@2.0.1: @@ -10523,16 +8512,10 @@ snapshots: transitivePeerDependencies: - supports-color - fast-check@3.22.0: - dependencies: - pure-rand: 6.1.0 - fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} - fast-fifo@1.3.2: {} - fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -10547,11 +8530,6 @@ snapshots: fast-shallow-equal@1.0.0: {} - fast-unique-numbers@8.0.13: - dependencies: - '@babel/runtime': 7.25.6 - tslib: 2.7.0 - fast-uri@3.0.1: {} fastest-stable-stringify@2.0.2: {} @@ -10560,10 +8538,6 @@ snapshots: dependencies: reusify: 1.0.4 - faye-websocket@0.11.4: - dependencies: - websocket-driver: 0.7.4 - fd-slicer@1.1.0: dependencies: pend: 1.2.0 @@ -10608,38 +8582,6 @@ snapshots: semver-regex: 4.0.5 super-regex: 1.0.0 - firebase@10.13.1: - dependencies: - '@firebase/analytics': 0.10.7(@firebase/app@0.10.10) - '@firebase/analytics-compat': 0.2.13(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10) - '@firebase/app': 0.10.10 - '@firebase/app-check': 0.8.7(@firebase/app@0.10.10) - '@firebase/app-check-compat': 0.3.14(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10) - '@firebase/app-compat': 0.2.40 - '@firebase/app-types': 0.9.2 - '@firebase/auth': 1.7.8(@firebase/app@0.10.10) - '@firebase/auth-compat': 0.5.13(@firebase/app-compat@0.2.40)(@firebase/app-types@0.9.2)(@firebase/app@0.10.10) - '@firebase/database': 1.0.7 - '@firebase/database-compat': 1.0.7 - '@firebase/firestore': 4.7.1(@firebase/app@0.10.10) - '@firebase/firestore-compat': 0.3.36(@firebase/app-compat@0.2.40)(@firebase/app-types@0.9.2)(@firebase/app@0.10.10) - '@firebase/functions': 0.11.7(@firebase/app@0.10.10) - '@firebase/functions-compat': 0.3.13(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10) - '@firebase/installations': 0.6.8(@firebase/app@0.10.10) - '@firebase/installations-compat': 0.2.8(@firebase/app-compat@0.2.40)(@firebase/app-types@0.9.2)(@firebase/app@0.10.10) - '@firebase/messaging': 0.12.10(@firebase/app@0.10.10) - '@firebase/messaging-compat': 0.2.10(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10) - '@firebase/performance': 0.6.8(@firebase/app@0.10.10) - '@firebase/performance-compat': 0.2.8(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10) - '@firebase/remote-config': 0.4.8(@firebase/app@0.10.10) - '@firebase/remote-config-compat': 0.2.8(@firebase/app-compat@0.2.40)(@firebase/app@0.10.10) - '@firebase/storage': 0.13.1(@firebase/app@0.10.10) - '@firebase/storage-compat': 0.3.11(@firebase/app-compat@0.2.40)(@firebase/app-types@0.9.2)(@firebase/app@0.10.10) - '@firebase/util': 1.9.7 - '@firebase/vertexai-preview': 0.0.3(@firebase/app-types@0.9.2)(@firebase/app@0.10.10) - transitivePeerDependencies: - - '@react-native-async-storage/async-storage' - firefox-profile@4.6.0: dependencies: adm-zip: 0.5.16 @@ -10670,7 +8612,7 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@11.11.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + framer-motion@11.11.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: tslib: 2.7.0 optionalDependencies: @@ -10682,8 +8624,6 @@ snapshots: inherits: 2.0.4 readable-stream: 2.3.8 - fs-constants@1.0.0: {} - fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 @@ -10732,8 +8672,6 @@ snapshots: get-east-asian-width@1.2.0: {} - get-func-name@2.0.2: {} - get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 @@ -10742,8 +8680,6 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 - get-iterator@2.0.1: {} - get-nonce@1.0.1: {} get-port-please@3.1.2: {} @@ -10801,8 +8737,6 @@ snapshots: meow: 12.1.1 split2: 4.2.0 - github-from-package@0.0.0: {} - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -10852,7 +8786,7 @@ snapshots: globals@14.0.0: {} - globals@15.11.0: {} + globals@15.12.0: {} globalthis@1.0.4: dependencies: @@ -10938,8 +8872,6 @@ snapshots: has-yarn@3.0.0: {} - hashlru@2.3.0: {} - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -10968,10 +8900,6 @@ snapshots: dependencies: '@types/hast': 3.0.4 - help-me@5.0.0: {} - - hi-base32@0.5.1: {} - highlight.js@10.7.3: {} hook-std@3.0.0: {} @@ -11005,8 +8933,6 @@ snapshots: http-cache-semantics@4.1.1: {} - http-parser-js@0.5.8: {} - http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 @@ -11042,8 +8968,6 @@ snapshots: idb-keyval@6.2.1: {} - idb@7.1.1: {} - ieee754@1.2.1: {} ignore@5.3.2: {} @@ -11094,15 +9018,6 @@ snapshots: dependencies: css-in-js-utils: 3.1.0 - interface-datastore@8.3.1: - dependencies: - interface-store: 6.0.2 - uint8arrays: 5.1.0 - - interface-store@5.1.8: {} - - interface-store@6.0.2: {} - internal-slot@1.0.7: dependencies: es-errors: 1.3.0 @@ -11175,8 +9090,6 @@ snapshots: is-docker@3.0.0: {} - is-electron@2.2.2: {} - is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -11195,7 +9108,7 @@ snapshots: is-immutable-type@5.0.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): dependencies: - '@typescript-eslint/type-utils': 8.12.1(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) eslint: 9.14.0(jiti@2.4.0) ts-api-utils: 1.3.0(typescript@5.6.3) ts-declaration-location: 1.0.4(typescript@5.6.3) @@ -11214,8 +9127,6 @@ snapshots: is-interactive@2.0.0: {} - is-loopback-addr@2.0.2: {} - is-negative-zero@2.0.3: {} is-npm@6.0.0: {} @@ -11230,8 +9141,6 @@ snapshots: is-path-inside@3.0.3: {} - is-plain-obj@2.1.0: {} - is-plain-obj@4.1.0: {} is-plain-object@2.0.4: @@ -11319,101 +9228,6 @@ snapshots: lodash.isstring: 4.0.1 lodash.uniqby: 4.7.0 - it-all@3.0.6: {} - - it-byte-stream@1.1.0: - dependencies: - it-queueless-pushable: 1.0.0 - it-stream-types: 2.0.2 - uint8arraylist: 2.4.8 - - it-drain@3.0.7: {} - - it-filter@3.1.1: - dependencies: - it-peekable: 3.0.5 - - it-first@3.0.6: {} - - it-length-prefixed-stream@1.2.0: - dependencies: - it-byte-stream: 1.1.0 - it-stream-types: 2.0.2 - uint8-varint: 2.0.4 - uint8arraylist: 2.4.8 - - it-length-prefixed@9.1.0: - dependencies: - it-reader: 6.0.4 - it-stream-types: 2.0.2 - uint8-varint: 2.0.4 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - - it-map@3.1.1: - dependencies: - it-peekable: 3.0.5 - - it-merge@3.0.5: - dependencies: - it-pushable: 3.2.3 - - it-pair@2.0.6: - dependencies: - it-stream-types: 2.0.2 - p-defer: 4.0.1 - - it-parallel@3.0.8: - dependencies: - p-defer: 4.0.1 - - it-peekable@3.0.5: {} - - it-pipe@3.0.1: - dependencies: - it-merge: 3.0.5 - it-pushable: 3.2.3 - it-stream-types: 2.0.2 - - it-protobuf-stream@1.1.5: - dependencies: - it-length-prefixed-stream: 1.2.0 - it-stream-types: 2.0.2 - uint8arraylist: 2.4.8 - - it-pushable@3.2.3: - dependencies: - p-defer: 4.0.1 - - it-queueless-pushable@1.0.0: - dependencies: - p-defer: 4.0.1 - race-signal: 1.1.0 - - it-reader@6.0.4: - dependencies: - it-stream-types: 2.0.2 - uint8arraylist: 2.4.8 - - it-sort@3.0.6: - dependencies: - it-all: 3.0.6 - - it-stream-types@2.0.2: {} - - it-take@3.0.6: {} - - it-ws@6.1.5(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - '@types/ws': 8.5.12 - event-iterator: 2.0.0 - it-stream-types: 2.0.2 - uint8arrays: 5.1.0 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -11432,10 +9246,6 @@ snapshots: js-cookie@2.2.1: {} - js-sdsl@4.3.0: {} - - js-sha3@0.9.3: {} - js-tokens@4.0.0: {} js-tokens@9.0.0: {} @@ -11492,35 +9302,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - libp2p@1.9.4: - dependencies: - '@libp2p/crypto': 4.1.9 - '@libp2p/interface': 1.7.0 - '@libp2p/interface-internal': 1.3.4 - '@libp2p/logger': 4.0.20 - '@libp2p/multistream-select': 5.1.17 - '@libp2p/peer-collections': 5.2.9 - '@libp2p/peer-id': 4.2.4 - '@libp2p/peer-id-factory': 4.2.4 - '@libp2p/peer-store': 10.1.5 - '@libp2p/utils': 5.4.9 - '@multiformats/dns': 1.0.6 - '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-matcher': 1.2.4 - any-signal: 4.1.1 - datastore-core: 9.2.9 - interface-datastore: 8.3.1 - it-byte-stream: 1.1.0 - it-merge: 3.0.5 - it-parallel: 3.0.8 - merge-options: 3.0.4 - multiformats: 13.3.0 - p-defer: 4.0.1 - progress-events: 1.0.1 - race-event: 1.3.0 - race-signal: 1.1.0 - uint8arrays: 5.1.0 - lie@3.3.0: dependencies: immediate: 3.0.6 @@ -11668,18 +9449,12 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 9.0.0 - long@5.2.3: {} - longest-streak@3.1.0: {} loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - lower-case@2.0.2: dependencies: tslib: 2.7.0 @@ -11694,7 +9469,7 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react@0.454.0(react@18.3.1): + lucide-react@0.456.0(react@18.3.1): dependencies: react: 18.3.1 @@ -11891,10 +9666,6 @@ snapshots: meow@13.2.0: {} - merge-options@3.0.4: - dependencies: - is-plain-obj: 2.1.0 - merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -12136,8 +9907,6 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - mkdirp-classic@0.5.3: {} - mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -12157,51 +9926,10 @@ snapshots: moment@2.30.1: optional: true - mortice@3.0.4: - dependencies: - observable-webworkers: 2.0.1 - p-queue: 8.0.1 - p-timeout: 6.1.2 - - mqtt-packet@9.0.0: - dependencies: - bl: 6.0.15 - debug: 4.3.7 - process-nextick-args: 2.0.1 - transitivePeerDependencies: - - supports-color - - mqtt@5.10.1(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - '@types/readable-stream': 4.0.15 - '@types/ws': 8.5.12 - commist: 3.2.0 - concat-stream: 2.0.0 - debug: 4.3.7 - help-me: 5.0.0 - lru-cache: 10.4.3 - minimist: 1.2.8 - mqtt-packet: 9.0.0 - number-allocator: 1.0.14 - readable-stream: 4.5.2 - reinterval: 1.1.0 - rfdc: 1.4.1 - split2: 4.2.0 - worker-timers: 7.1.8 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - ms@2.0.0: {} ms@2.1.3: {} - ms@3.0.0-canary.1: {} - - multiformats@13.3.0: {} - multimatch@6.0.0: dependencies: '@types/minimatch': 3.0.5 @@ -12209,8 +9937,6 @@ snapshots: array-union: 3.0.1 minimatch: 3.1.2 - murmurhash3js-revisited@3.0.0: {} - mv@2.1.1: dependencies: mkdirp: 0.5.6 @@ -12248,8 +9974,6 @@ snapshots: nanoid@5.0.8: {} - napi-build-utils@1.0.2: {} - natural-compare@1.4.0: {} ncp@2.0.0: @@ -12259,8 +9983,6 @@ snapshots: nerf-dart@1.0.0: {} - netmask@2.0.2: {} - nice-try@1.0.5: {} no-case@3.0.4: @@ -12268,21 +9990,8 @@ snapshots: lower-case: 2.0.2 tslib: 2.7.0 - node-abi@3.67.0: - dependencies: - semver: 7.6.3 - node-addon-api@7.1.1: {} - node-datachannel@0.10.1: - dependencies: - node-domexception: 2.0.1 - prebuild-install: 7.1.2 - - node-domexception@1.0.0: {} - - node-domexception@2.0.1: {} - node-emoji@2.1.3: dependencies: '@sindresorhus/is': 4.6.0 @@ -12357,13 +10066,6 @@ snapshots: dependencies: boolbase: 1.0.0 - number-allocator@1.0.14: - dependencies: - debug: 4.3.7 - js-sdsl: 4.3.0 - transitivePeerDependencies: - - supports-color - nypm@0.3.12: dependencies: citty: 0.1.6 @@ -12388,8 +10090,6 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 - observable-webworkers@2.0.1: {} - ofetch@1.3.4: dependencies: destr: 2.0.3 @@ -12477,14 +10177,8 @@ snapshots: p-cancelable@3.0.0: {} - p-defer@4.0.1: {} - p-each-series@3.0.0: {} - p-event@6.0.1: - dependencies: - p-timeout: 6.1.2 - p-filter@4.1.0: dependencies: p-map: 7.0.2 @@ -12517,17 +10211,10 @@ snapshots: p-map@7.0.2: {} - p-queue@8.0.1: - dependencies: - eventemitter3: 5.0.1 - p-timeout: 6.1.2 - p-reduce@2.1.0: {} p-reduce@3.0.0: {} - p-timeout@6.1.2: {} - p-try@1.0.0: {} package-json-from-dist@1.0.0: {} @@ -12629,14 +10316,14 @@ snapshots: pathe@1.1.2: {} - pathval@1.1.1: {} - pend@1.2.0: {} perfect-debounce@1.0.0: {} picocolors@1.1.0: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} picomatch@4.0.2: {} @@ -12664,28 +10351,28 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-import@15.1.0(postcss@8.4.47): + postcss-import@15.1.0(postcss@8.4.49): dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.47): + postcss-js@4.0.1(postcss@8.4.49): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.47 + postcss: 8.4.49 - postcss-load-config@4.0.2(postcss@8.4.47): + postcss-load-config@4.0.2(postcss@8.4.49): dependencies: lilconfig: 3.1.2 yaml: 2.5.1 optionalDependencies: - postcss: 8.4.47 + postcss: 8.4.49 - postcss-nested@6.2.0(postcss@8.4.47): + postcss-nested@6.2.0(postcss@8.4.49): dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-selector-parser: 6.1.2 postcss-rem-to-responsive-pixel@6.0.2: {} @@ -12702,27 +10389,12 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.47: + postcss@8.4.49: dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 - prebuild-install@7.1.2: - dependencies: - detect-libc: 2.0.3 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.67.0 - pump: 3.0.2 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.0: @@ -12737,10 +10409,6 @@ snapshots: process-nextick-args@2.0.1: {} - process@0.11.10: {} - - progress-events@1.0.1: {} - promise-toolbox@0.21.0: dependencies: make-error: 1.3.6 @@ -12754,27 +10422,6 @@ snapshots: proto-list@1.2.4: {} - protobufjs@7.4.0: - 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': 22.8.7 - long: 5.2.3 - - protons-runtime@5.5.0: - dependencies: - uint8-varint: 2.0.4 - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - publish-browser-extension@2.2.2: dependencies: cac: 6.7.14 @@ -12806,24 +10453,10 @@ snapshots: dependencies: escape-goat: 4.0.0 - pure-rand@6.1.0: {} - - pvtsutils@1.3.5: - dependencies: - tslib: 2.7.0 - - pvutils@1.1.3: {} - queue-microtask@1.2.3: {} - queue-tick@1.0.1: {} - quick-lru@5.1.1: {} - race-event@1.3.0: {} - - race-signal@1.1.0: {} - radix3@1.1.2: {} rc9@2.1.2: @@ -12844,7 +10477,7 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-hook-form@7.53.1(react@18.3.1): + react-hook-form@7.53.2(react@18.3.1): dependencies: react: 18.3.1 @@ -12968,14 +10601,6 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.5.2: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -12997,8 +10622,6 @@ snapshots: dependencies: rc: 1.2.8 - reinterval@1.1.0: {} - remark-breaks@4.0.0: dependencies: '@types/mdast': 4.0.4 @@ -13301,14 +10924,6 @@ snapshots: figures: 2.0.0 pkg-conf: 2.1.0 - simple-concat@1.0.1: {} - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - sisteransi@1.0.5: {} skin-tone@2.0.0: @@ -13433,14 +11048,6 @@ snapshots: duplexer2: 0.1.4 readable-stream: 2.3.8 - streamx@2.20.1: - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - text-decoder: 1.2.0 - optionalDependencies: - bare-events: 2.4.2 - string-argv@0.3.2: {} string-ts@2.2.0: {} @@ -13559,8 +11166,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-color@9.4.0: {} - supports-hyperlinks@3.1.0: dependencies: has-flag: 4.0.0 @@ -13599,32 +11204,17 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.0 - postcss: 8.4.47 - postcss-import: 15.1.0(postcss@8.4.47) - postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.2(postcss@8.4.47) - postcss-nested: 6.2.0(postcss@8.4.47) + postcss: 8.4.49 + postcss-import: 15.1.0(postcss@8.4.49) + postcss-js: 4.0.1(postcss@8.4.49) + postcss-load-config: 4.0.2(postcss@8.4.49) + postcss-nested: 6.2.0(postcss@8.4.49) postcss-selector-parser: 6.1.2 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: - ts-node - tar-fs@2.1.1: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.2 - tar-stream: 2.2.0 - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - tar@6.2.1: dependencies: chownr: 2.0.0 @@ -13643,10 +11233,6 @@ snapshots: type-fest: 2.19.0 unique-string: 3.0.0 - text-decoder@1.2.0: - dependencies: - b4a: 1.6.6 - text-extensions@2.4.0: {} text-table@0.2.0: {} @@ -13688,39 +11274,12 @@ snapshots: toggle-selection@1.0.6: {} - tr46@0.0.3: {} - traverse@0.6.8: {} trim-lines@3.0.1: {} trough@2.2.0: {} - trystero@0.20.0(@libp2p/interface@1.7.0)(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/enr@0.0.21)(@waku/interfaces@0.0.22)(@waku/message-hash@0.1.16)(@waku/proto@0.0.7)(@waku/relay@0.0.11(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/interfaces@0.0.22)(@waku/proto@0.0.7)(@waku/utils@0.0.20))(@waku/utils@0.0.20)(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - '@noble/curves': 1.6.0 - '@supabase/supabase-js': 2.45.4(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@thaunknown/simple-peer': 10.0.10 - '@waku/discovery': 0.0.3(@libp2p/interface@1.7.0)(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/enr@0.0.21)(@waku/interfaces@0.0.22)(@waku/proto@0.0.7)(@waku/utils@0.0.20) - '@waku/sdk': 0.0.26(@libp2p/interface@1.7.0)(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/enr@0.0.21)(@waku/interfaces@0.0.22)(@waku/message-hash@0.1.16)(@waku/relay@0.0.11(@waku/core@0.0.27(@multiformats/multiaddr@12.3.1)(libp2p@1.9.4))(@waku/interfaces@0.0.22)(@waku/proto@0.0.7)(@waku/utils@0.0.20))(@waku/utils@0.0.20)(bufferutil@4.0.8)(utf-8-validate@6.0.4) - firebase: 10.13.1 - libp2p: 1.9.4 - mqtt: 5.10.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - '@libp2p/bootstrap' - - '@libp2p/interface' - - '@react-native-async-storage/async-storage' - - '@waku/core' - - '@waku/enr' - - '@waku/interfaces' - - '@waku/message-hash' - - '@waku/proto' - - '@waku/relay' - - '@waku/utils' - - bufferutil - - supports-color - - utf-8-validate - ts-api-utils@1.3.0(typescript@5.6.3): dependencies: typescript: 5.6.3 @@ -13738,16 +11297,10 @@ snapshots: tslib@2.7.0: {} - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - type-detect@4.1.0: {} - type-fest@1.4.0: {} type-fest@2.19.0: {} @@ -13794,11 +11347,11 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): + typescript-eslint@8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3))(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/parser': 8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.2(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3))(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) + '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.0))(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -13818,23 +11371,6 @@ snapshots: dependencies: '@lukeed/csprng': 1.1.0 - uint8-util@2.2.5: - dependencies: - base64-arraybuffer: 1.0.2 - - uint8-varint@2.0.4: - dependencies: - uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 - - uint8arraylist@2.4.8: - dependencies: - uint8arrays: 5.1.0 - - uint8arrays@5.1.0: - dependencies: - multiformats: 13.3.0 - unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 @@ -13846,8 +11382,6 @@ snapshots: undici-types@6.19.8: {} - undici@6.19.7: {} - unenv@1.10.0: dependencies: consola: 3.2.3 @@ -14006,20 +11540,10 @@ snapshots: dependencies: node-gyp-build: 4.8.2 - utf8-bytes@0.0.1: {} - - utf8-codec@1.0.0: {} - - utf8-length@0.0.1: {} - - utf8-string-bytes@1.0.3: {} - util-deprecate@1.0.2: {} uuid@8.3.2: {} - uuid@9.0.1: {} - valibot@1.0.0-beta.0(typescript@5.6.3): optionalDependencies: typescript: 5.6.3 @@ -14039,12 +11563,12 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@2.1.3(@types/node@22.8.7): + vite-node@2.1.3(@types/node@22.9.0): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 - vite: 5.4.10(@types/node@22.8.7) + vite: 5.4.10(@types/node@22.9.0) transitivePeerDependencies: - '@types/node' - less @@ -14056,24 +11580,24 @@ snapshots: - supports-color - terser - vite-plugin-svgr@4.3.0(rollup@4.21.3)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.7)): + vite-plugin-svgr@4.3.0(rollup@4.21.3)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)): dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.21.3) '@svgr/core': 8.1.0(typescript@5.6.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3)) - vite: 5.4.10(@types/node@22.8.7) + vite: 5.4.10(@types/node@22.9.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite@5.4.10(@types/node@22.8.7): + vite@5.4.10(@types/node@22.9.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.47 + postcss: 8.4.49 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.8.7 + '@types/node': 22.9.0 fsevents: 2.3.3 watchpack@2.4.1: @@ -14085,11 +11609,6 @@ snapshots: dependencies: defaults: 1.0.4 - weald@1.0.2: - dependencies: - ms: 3.0.0-canary.1 - supports-color: 9.4.0 - web-ext-run@0.2.1(bufferutil@4.0.8)(utf-8-validate@6.0.4): dependencies: '@babel/runtime': 7.24.7 @@ -14135,34 +11654,10 @@ snapshots: webextension-polyfill@0.9.0: {} - webidl-conversions@3.0.1: {} - webpack-virtual-modules@0.6.2: {} - webrtc-polyfill@1.1.8: - dependencies: - node-datachannel: 0.10.1 - node-domexception: 1.0.0 - - websocket-driver@0.7.4: - dependencies: - http-parser-js: 0.5.8 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - - websocket-extensions@0.1.4: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - when@3.7.7: {} - wherearewe@2.0.1: - dependencies: - is-electron: 2.2.2 - which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 @@ -14202,25 +11697,6 @@ snapshots: wordwrap@1.0.0: {} - worker-timers-broker@6.1.8: - dependencies: - '@babel/runtime': 7.25.6 - fast-unique-numbers: 8.0.13 - tslib: 2.7.0 - worker-timers-worker: 7.0.71 - - worker-timers-worker@7.0.71: - dependencies: - '@babel/runtime': 7.25.6 - tslib: 2.7.0 - - worker-timers@7.1.8: - dependencies: - '@babel/runtime': 7.25.6 - tslib: 2.7.0 - worker-timers-broker: 6.1.8 - worker-timers-worker: 7.0.71 - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -14258,7 +11734,7 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 6.0.4 - wxt@0.19.13(@types/node@22.8.7)(bufferutil@4.0.8)(rollup@4.21.3)(utf-8-validate@6.0.4): + wxt@0.19.13(@types/node@22.9.0)(bufferutil@4.0.8)(rollup@4.21.3)(utf-8-validate@6.0.4): dependencies: '@aklinker1/rollup-plugin-visualizer': 5.12.0(rollup@4.21.3) '@types/chrome': 0.0.269 @@ -14301,8 +11777,8 @@ snapshots: publish-browser-extension: 2.2.2 scule: 1.3.0 unimport: 3.13.1(rollup@4.21.3) - vite: 5.4.10(@types/node@22.8.7) - vite-node: 2.1.3(@types/node@22.8.7) + vite: 5.4.10(@types/node@22.9.0) + vite-node: 2.1.3(@types/node@22.9.0) web-ext-run: 0.2.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) webextension-polyfill: 0.12.0 transitivePeerDependencies: diff --git a/src/app/content/App.tsx b/src/app/content/App.tsx index 0d51785..befa8c8 100644 --- a/src/app/content/App.tsx +++ b/src/app/content/App.tsx @@ -4,7 +4,7 @@ import Main from '@/app/content/views/Main' import AppButton from '@/app/content/views/AppButton' import AppMain from '@/app/content/views/AppMain' import { useRemeshDomain, useRemeshQuery, useRemeshSend } from 'remesh-react' -import RoomDomain from '@/domain/Room' +import ChatRoomDomain from '@/domain/ChatRoom' import UserInfoDomain from '@/domain/UserInfo' import Setup from '@/app/content/views/Setup' import MessageListDomain from '@/domain/MessageList' @@ -15,6 +15,7 @@ import DanmakuContainer from './components/DanmakuContainer' import DanmakuDomain from '@/domain/Danmaku' import AppStatusDomain from '@/domain/AppStatus' import { checkDarkMode, cn } from '@/utils' +import VirtualRoomDomain from '@/domain/VirtualRoom' /** * Fix requestAnimationFrame error in jest @@ -27,7 +28,8 @@ if (import.meta.env.FIREFOX) { export default function App() { const send = useRemeshSend() - const roomDomain = useRemeshDomain(RoomDomain()) + const chatRoomDomain = useRemeshDomain(ChatRoomDomain()) + const virtualRoomDomain = useRemeshDomain(VirtualRoomDomain()) const userInfoDomain = useRemeshDomain(UserInfoDomain()) const messageListDomain = useRemeshDomain(MessageListDomain()) const danmakuDomain = useRemeshDomain(DanmakuDomain()) @@ -37,19 +39,32 @@ export default function App() { const userInfoLoadFinished = useRemeshQuery(userInfoDomain.query.UserInfoLoadIsFinishedQuery()) const appStatusDomain = useRemeshDomain(AppStatusDomain()) const appStatusLoadIsFinished = useRemeshQuery(appStatusDomain.query.StatusLoadIsFinishedQuery()) + const chatRoomJoinIsFinished = useRemeshQuery(chatRoomDomain.query.JoinIsFinishedQuery()) + const virtualRoomJoinIsFinished = useRemeshQuery(virtualRoomDomain.query.JoinIsFinishedQuery()) const userInfo = useRemeshQuery(userInfoDomain.query.UserInfoQuery()) const notUserInfo = userInfoLoadFinished && !userInfoSetFinished + const joinRoom = () => { + send(chatRoomDomain.command.JoinRoomCommand()) + send(virtualRoomDomain.command.JoinRoomCommand()) + } + + const leaveRoom = () => { + chatRoomJoinIsFinished && send(chatRoomDomain.command.LeaveRoomCommand()) + virtualRoomJoinIsFinished && send(virtualRoomDomain.command.LeaveRoomCommand()) + } + useEffect(() => { if (messageListLoadFinished) { if (userInfoSetFinished) { - send(roomDomain.command.JoinRoomCommand()) + joinRoom() } else { // Clear simulated data when refreshing on the setup page send(messageListDomain.command.ClearListCommand()) } } + return () => leaveRoom() }, [userInfoSetFinished, messageListLoadFinished]) useEffect(() => { @@ -59,6 +74,13 @@ export default function App() { } }, [danmakuIsEnabled]) + useEffect(() => { + window.addEventListener('beforeunload', leaveRoom) + return () => { + window.removeEventListener('beforeunload', leaveRoom) + } + }, []) + const themeMode = userInfo?.themeMode === 'system' ? checkDarkMode() diff --git a/src/app/content/components/DanmakuMessage.tsx b/src/app/content/components/DanmakuMessage.tsx index 3ce3d46..162d52b 100644 --- a/src/app/content/components/DanmakuMessage.tsx +++ b/src/app/content/components/DanmakuMessage.tsx @@ -1,6 +1,6 @@ import { Avatar, AvatarFallback } from '@/components/ui/Avatar' import { Button } from '@/components/ui/Button' -import { TextMessage } from '@/domain/Room' +import { TextMessage } from '@/domain/ChatRoom' import { cn } from '@/utils' import { AvatarImage } from '@radix-ui/react-avatar' import { FC, MouseEvent } from 'react' diff --git a/src/app/content/index.tsx b/src/app/content/index.tsx index 1d317cb..871703f 100644 --- a/src/app/content/index.tsx +++ b/src/app/content/index.tsx @@ -11,8 +11,8 @@ import { LocalStorageImpl, IndexDBStorageImpl, BrowserSyncStorageImpl } from '@/ import { DanmakuImpl } from '@/domain/impls/Danmaku' import { NotificationImpl } from '@/domain/impls/Notification' import { ToastImpl } from '@/domain/impls/Toast' -// import { PeerRoomImpl } from '@/domain/impls/PeerRoom' -import { PeerRoomImpl } from '@/domain/impls/PeerRoom2' +import { ChatRoomImpl } from '@/domain/impls/ChatRoom' +import { VirtualRoomImpl } from '@/domain/impls/VirtualRoom' // Remove import after merging: https://github.com/emilkowalski/sonner/pull/508 import '@/assets/styles/sonner.css' import '@/assets/styles/overlay.css' @@ -38,7 +38,8 @@ export default defineContentScript({ LocalStorageImpl, IndexDBStorageImpl, BrowserSyncStorageImpl, - PeerRoomImpl, + ChatRoomImpl, + VirtualRoomImpl, ToastImpl, DanmakuImpl, NotificationImpl diff --git a/src/app/content/views/Footer/index.tsx b/src/app/content/views/Footer/index.tsx index b25c771..188da98 100644 --- a/src/app/content/views/Footer/index.tsx +++ b/src/app/content/views/Footer/index.tsx @@ -6,7 +6,7 @@ import EmojiButton from '../../components/EmojiButton' import { Button } from '@/components/ui/Button' import MessageInputDomain from '@/domain/MessageInput' import { MESSAGE_MAX_LENGTH, WEB_RTC_MAX_MESSAGE_SIZE } from '@/constants/config' -import RoomDomain from '@/domain/Room' +import ChatRoomDomain from '@/domain/ChatRoom' import useCursorPosition from '@/hooks/useCursorPosition' import useShareRef from '@/hooks/useShareRef' import { Presence } from '@radix-ui/react-presence' @@ -25,12 +25,12 @@ import { nanoid } from 'nanoid' const Footer: FC = () => { const send = useRemeshSend() const toastDomain = useRemeshDomain(ToastDomain()) - const roomDomain = useRemeshDomain(RoomDomain()) + const chatRoomDomain = useRemeshDomain(ChatRoomDomain()) const messageInputDomain = useRemeshDomain(MessageInputDomain()) const message = useRemeshQuery(messageInputDomain.query.MessageQuery()) const userInfoDomain = useRemeshDomain(UserInfoDomain()) const userInfo = useRemeshQuery(userInfoDomain.query.UserInfoQuery()) - const userList = useRemeshQuery(roomDomain.query.UserListQuery()) + const userList = useRemeshQuery(chatRoomDomain.query.UserListQuery()) const inputRef = useRef(null) const { x, y, selectionStart, selectionEnd, setRef } = useCursorPosition() @@ -143,7 +143,7 @@ const Footer: FC = () => { return send(toastDomain.command.WarningCommand('Message size cannot exceed 256KiB.')) } - send(roomDomain.command.SendTextMessageCommand({ body: transformedMessage, atUsers })) + send(chatRoomDomain.command.SendTextMessageCommand({ body: transformedMessage, atUsers })) send(messageInputDomain.command.ClearCommand()) } diff --git a/src/app/content/views/Header/index.tsx b/src/app/content/views/Header/index.tsx index cba55c2..b24c588 100644 --- a/src/app/content/views/Header/index.tsx +++ b/src/app/content/views/Header/index.tsx @@ -5,17 +5,39 @@ import { HoverCard, HoverCardContent, HoverCardTrigger } from '@/components/ui/H import { Button } from '@/components/ui/Button' import { cn, getSiteInfo } from '@/utils' import { useRemeshDomain, useRemeshQuery } from 'remesh-react' -import RoomDomain from '@/domain/Room' +import ChatRoomDomain from '@/domain/ChatRoom' +import VirtualRoomDomain, { FromInfo, RoomUser } from '@/domain/VirtualRoom' import { ScrollArea } from '@/components/ui/ScrollArea' import { Virtuoso } from 'react-virtuoso' +import AvatarCircles from '@/components/magicui/AvatarCircles' +import Link from '@/components/Link' const Header: FC = () => { const siteInfo = getSiteInfo() - const roomDomain = useRemeshDomain(RoomDomain()) - const userList = useRemeshQuery(roomDomain.query.UserListQuery()) - const onlineCount = userList.length + const chatRoomDomain = useRemeshDomain(ChatRoomDomain()) + const virtualRoomDomain = useRemeshDomain(VirtualRoomDomain()) + const chatUserList = useRemeshQuery(chatRoomDomain.query.UserListQuery()) + const virtualUserList = useRemeshQuery(virtualRoomDomain.query.UserListQuery()) + const chatOnlineCount = chatUserList.length - const [scrollParentRef, setScrollParentRef] = useState(null) + const virtualOnlineGroup = virtualUserList + .flatMap((user) => user.fromInfos.map((from) => ({ from, user }))) + .reduce<(FromInfo & { users: RoomUser[] })[]>((acc, item) => { + const existSite = acc.find((group) => group.origin === item.from.origin) + if (existSite) { + const existUser = existSite.users.find((user) => user.userId === item.user.userId) + !existUser && existSite.users.push(item.user) + } else { + acc.push({ ...item.from, users: [item.user] }) + } + return acc + }, []) + .sort((a, b) => b.users.length - a.users.length) + + const [chatUserListScrollParentRef, setChatUserListScrollParentRef] = useState(null) + const [virtualOnlineGroupScrollParentRef, setVirtualOnlineGroupScrollParentRef] = useState( + null + ) return (
@@ -33,23 +55,55 @@ const Header: FC = () => { - -
- - - - - - -
-

{siteInfo.title}

- {siteInfo.description && ( -

- {siteInfo.description} -

+ + + ( + + + + + + + +
+
+

{site.hostname.replace(/^www\./i, '')}

+
+
+ + 1 ? 'bg-green-400' : 'bg-orange-400' + )} + > + 1 ? 'bg-green-500' : 'bg-orange-500' + )} + > + + + ONLINE {site.users.length > 99 ? '99+' : site.users.length} + +
+
+
+ user.userAvatar)} /> +
+ )} -
-
+ > +
@@ -60,26 +114,26 @@ const Header: FC = () => { 1 ? 'bg-green-400' : 'bg-orange-400' + chatOnlineCount > 1 ? 'bg-green-400' : 'bg-orange-400' )} > 1 ? 'bg-green-500' : 'bg-orange-500' + 'relative inline-flex size-full rounded-full', + chatOnlineCount > 1 ? 'bg-green-500' : 'bg-orange-500' )} > - ONLINE {onlineCount > 99 ? '99+' : onlineCount} + ONLINE {chatOnlineCount > 99 ? '99+' : chatOnlineCount}
- + (
diff --git a/src/app/content/views/Main/index.tsx b/src/app/content/views/Main/index.tsx index f719116..ad00f01 100644 --- a/src/app/content/views/Main/index.tsx +++ b/src/app/content/views/Main/index.tsx @@ -5,13 +5,13 @@ import MessageList from '../../components/MessageList' import MessageItem from '../../components/MessageItem' import PromptItem from '../../components/PromptItem' import UserInfoDomain from '@/domain/UserInfo' -import RoomDomain, { MessageType } from '@/domain/Room' +import ChatRoomDomain, { MessageType } from '@/domain/ChatRoom' import MessageListDomain from '@/domain/MessageList' const Main: FC = () => { const send = useRemeshSend() const messageListDomain = useRemeshDomain(MessageListDomain()) - const roomDomain = useRemeshDomain(RoomDomain()) + const chatRoomDomain = useRemeshDomain(ChatRoomDomain()) const userInfoDomain = useRemeshDomain(UserInfoDomain()) const userInfo = useRemeshQuery(userInfoDomain.query.UserInfoQuery()) const _messageList = useRemeshQuery(messageListDomain.query.ListQuery()) @@ -29,11 +29,11 @@ const Main: FC = () => { .toSorted((a, b) => a.sendTime - b.sendTime) const handleLikeChange = (messageId: string) => { - send(roomDomain.command.SendLikeMessageCommand(messageId)) + send(chatRoomDomain.command.SendLikeMessageCommand(messageId)) } const handleHateChange = (messageId: string) => { - send(roomDomain.command.SendHateMessageCommand(messageId)) + send(chatRoomDomain.command.SendHateMessageCommand(messageId)) } return ( diff --git a/src/components/Link.tsx b/src/components/Link.tsx index a025e6d..a22e83e 100644 --- a/src/components/Link.tsx +++ b/src/components/Link.tsx @@ -5,11 +5,18 @@ export interface LinkProps { href: string className?: string children: ReactNode + underline?: boolean } -const Link = forwardRef(({ href, className, children }, ref) => { +const Link = forwardRef(({ href, className, children, underline = true }, ref) => { return ( - + {children} ) diff --git a/src/components/magicui/AvatarCircles.tsx b/src/components/magicui/AvatarCircles.tsx new file mode 100644 index 0000000..4da6f71 --- /dev/null +++ b/src/components/magicui/AvatarCircles.tsx @@ -0,0 +1,69 @@ +import { cva, type VariantProps } from 'class-variance-authority' + +import React from 'react' + +import { cn } from '@/utils/index' + +interface AvatarCirclesProps { + className?: string + avatarUrls: string[] + size?: VariantProps['size'] + max?: number +} + +const SizeVariants = cva('z-10 flex -space-x-4 rtl:space-x-reverse', { + variants: { + size: { + default: 'h-10 min-w-10', + sm: 'h-8 min-w-8', + xs: 'h-6 min-w-6', + lg: 'h-12 min-w-12' + }, + defaultVariants: { + size: 'default' + } + } +}) + +const spaceVariants = cva('flex -space-x-4 rtl:space-x-reverse', { + variants: { + size: { + default: '-space-x-4', + sm: '-space-x-3', + xs: '-space-x-2', + lg: '-space-x-5' + }, + defaultVariants: { + size: 'default' + } + } +}) + +const AvatarCircles = ({ className, avatarUrls, size, max = 10 }: AvatarCirclesProps) => { + return ( +
+ {avatarUrls.slice(0, max).map((url, index) => ( + {`Avatar + ))} +
+ +{avatarUrls.length} +
+
+ ) +} + +export default AvatarCircles diff --git a/src/constants/config.ts b/src/constants/config.ts index d509438..85e2baf 100644 --- a/src/constants/config.ts +++ b/src/constants/config.ts @@ -207,3 +207,5 @@ export const SYNC_HISTORY_MAX_DAYS = 30 as const * Message max size is 256KiB; if the message is too large, it will cause the connection to drop. */ export const WEB_RTC_MAX_MESSAGE_SIZE = 262144 as const + +export const VIRTUAL_ROOM_ID = 'WEB_CHAT_VIRTUAL_ROOM' as const diff --git a/src/domain/AppStatus.ts b/src/domain/AppStatus.ts index fb12dbf..5958913 100644 --- a/src/domain/AppStatus.ts +++ b/src/domain/AppStatus.ts @@ -3,7 +3,7 @@ import StatusModule from './modules/Status' import { LocalStorageExtern } from './externs/Storage' import { APP_STATUS_STORAGE_KEY } from '@/constants/config' import StorageEffect from './modules/StorageEffect' -import RoomDomain, { SendType } from './Room' +import ChatRoomDomain, { SendType } from '@/domain/ChatRoom' import { map } from 'rxjs' export interface AppStatus { @@ -26,7 +26,7 @@ const AppStatusDomain = Remesh.domain({ extern: LocalStorageExtern, key: APP_STATUS_STORAGE_KEY }) - const roomDomain = domain.getDomain(RoomDomain()) + const chatRoomDomain = domain.getDomain(ChatRoomDomain()) const StatusLoadModule = StatusModule(domain, { name: 'AppStatus.LoadStatusModule' @@ -131,7 +131,7 @@ const AppStatusDomain = Remesh.domain({ domain.effect({ name: 'OnMessageEffect', impl: ({ fromEvent, get }) => { - const onMessage$ = fromEvent(roomDomain.event.OnMessageEvent).pipe( + const onMessage$ = fromEvent(chatRoomDomain.event.OnMessageEvent).pipe( map((message) => { const status = get(StatusState()) if (!status.open && message.type === SendType.Text) { diff --git a/src/domain/Room.ts b/src/domain/ChatRoom.ts similarity index 92% rename from src/domain/Room.ts rename to src/domain/ChatRoom.ts index 3833d0d..eab9a17 100644 --- a/src/domain/Room.ts +++ b/src/domain/ChatRoom.ts @@ -1,7 +1,7 @@ import { Remesh } from 'remesh' -import { map, merge, of, EMPTY, mergeMap, fromEvent, fromEventPattern } from 'rxjs' +import { map, merge, of, EMPTY, mergeMap, fromEventPattern } from 'rxjs' import { AtUser, NormalMessage, type MessageUser } from './MessageList' -import { PeerRoomExtern } from '@/domain/externs/PeerRoom' +import { ChatRoomExtern } from '@/domain/externs/ChatRoom' import MessageListDomain, { MessageType } from '@/domain/MessageList' import UserInfoDomain from '@/domain/UserInfo' import { desert, getTextByteSize, upsert } from '@/utils' @@ -127,16 +127,16 @@ const RoomMessageSchema = v.union([ const checkMessageFormat = (message: v.InferInput) => v.safeParse(RoomMessageSchema, message).success -const RoomDomain = Remesh.domain({ - name: 'RoomDomain', +const ChatRoomDomain = Remesh.domain({ + name: 'ChatRoomDomain', impl: (domain) => { const messageListDomain = domain.getDomain(MessageListDomain()) const userInfoDomain = domain.getDomain(UserInfoDomain()) - const peerRoom = domain.getExtern(PeerRoomExtern) + const chatRoomExtern = domain.getExtern(ChatRoomExtern) const PeerIdState = domain.state({ name: 'Room.PeerIdState', - default: peerRoom.peerId + default: chatRoomExtern.peerId }) const PeerIdQuery = domain.query({ @@ -165,7 +165,7 @@ const RoomDomain = Remesh.domain({ const SelfUserQuery = domain.query({ name: 'Room.SelfUserQuery', impl: ({ get }) => { - return get(UserListQuery()).find((user) => user.peerIds.includes(peerRoom.peerId))! + return get(UserListQuery()).find((user) => user.peerIds.includes(chatRoomExtern.peerId))! } }) @@ -189,7 +189,7 @@ const RoomDomain = Remesh.domain({ return [ UpdateUserListCommand({ type: 'create', - user: { peerId: peerRoom.peerId, joinTime: Date.now(), userId, username, userAvatar } + user: { peerId: chatRoomExtern.peerId, joinTime: Date.now(), userId, username, userAvatar } }), messageListDomain.command.CreateItemCommand({ id: nanoid(), @@ -202,14 +202,14 @@ const RoomDomain = Remesh.domain({ receiveTime: Date.now() }), JoinStatusModule.command.SetFinishedCommand(), - JoinRoomEvent(peerRoom.roomId), - SelfJoinRoomEvent(peerRoom.roomId) + JoinRoomEvent(chatRoomExtern.roomId), + SelfJoinRoomEvent(chatRoomExtern.roomId) ] } }) JoinRoomCommand.after(() => { - peerRoom.joinRoom() + chatRoomExtern.joinRoom() return null }) @@ -230,17 +230,17 @@ const RoomDomain = Remesh.domain({ }), UpdateUserListCommand({ type: 'delete', - user: { peerId: peerRoom.peerId, joinTime: Date.now(), userId, username, userAvatar } + user: { peerId: chatRoomExtern.peerId, joinTime: Date.now(), userId, username, userAvatar } }), JoinStatusModule.command.SetInitialCommand(), - LeaveRoomEvent(peerRoom.roomId), - SelfLeaveRoomEvent(peerRoom.roomId) + LeaveRoomEvent(chatRoomExtern.roomId), + SelfLeaveRoomEvent(chatRoomExtern.roomId) ] } }) LeaveRoomCommand.after(() => { - peerRoom.leaveRoom() + chatRoomExtern.leaveRoom() return null }) @@ -267,7 +267,7 @@ const RoomDomain = Remesh.domain({ atUsers: typeof message === 'string' ? [] : message.atUsers } - peerRoom.sendMessage(textMessage) + chatRoomExtern.sendMessage(textMessage) return [messageListDomain.command.CreateItemCommand(listMessage), SendTextMessageEvent(textMessage)] } }) @@ -288,7 +288,7 @@ const RoomDomain = Remesh.domain({ ...localMessage, likeUsers: desert(localMessage.likeUsers, likeMessage, 'userId') } - peerRoom.sendMessage(likeMessage) + chatRoomExtern.sendMessage(likeMessage) return [messageListDomain.command.UpdateItemCommand(listMessage), SendLikeMessageEvent(likeMessage)] } }) @@ -309,7 +309,7 @@ const RoomDomain = Remesh.domain({ ...localMessage, hateUsers: desert(localMessage.hateUsers, hateMessage, 'userId') } - peerRoom.sendMessage(hateMessage) + chatRoomExtern.sendMessage(hateMessage) return [messageListDomain.command.UpdateItemCommand(listMessage), SendHateMessageEvent(hateMessage)] } }) @@ -323,13 +323,13 @@ const RoomDomain = Remesh.domain({ const syncUserMessage: SyncUserMessage = { ...self, id: nanoid(), - peerId: peerRoom.peerId, + peerId: chatRoomExtern.peerId, sendTime: Date.now(), lastMessageTime, type: SendType.SyncUser } - peerRoom.sendMessage(syncUserMessage, peerId) + chatRoomExtern.sendMessage(syncUserMessage, peerId) return [SendSyncUserMessageEvent(syncUserMessage)] } }) @@ -395,7 +395,7 @@ const RoomDomain = Remesh.domain({ }, []) return pushHistoryMessageList.map((message) => { - peerRoom.sendMessage(message, peerId) + chatRoomExtern.sendMessage(message, peerId) return SendSyncHistoryMessageEvent(message) }) } @@ -411,7 +411,7 @@ const RoomDomain = Remesh.domain({ UserListState().new( upsert( userList, - { ...action.user, peerIds: [...(existUser?.peerIds || []), action.user.peerId] }, + { ...action.user, peerIds: [...new Set(existUser?.peerIds || []), action.user.peerId] }, 'userId' ) ) @@ -492,10 +492,10 @@ const RoomDomain = Remesh.domain({ domain.effect({ name: 'Room.OnJoinRoomEffect', impl: () => { - const onJoinRoom$ = fromEventPattern(peerRoom.onJoinRoom).pipe( + const onJoinRoom$ = fromEventPattern(chatRoomExtern.onJoinRoom).pipe( mergeMap((peerId) => { // console.log('onJoinRoom', peerId) - if (peerRoom.peerId === peerId) { + if (chatRoomExtern.peerId === peerId) { return [OnJoinRoomEvent(peerId)] } else { return [SendSyncUserMessageCommand(peerId), OnJoinRoomEvent(peerId)] @@ -509,7 +509,7 @@ const RoomDomain = Remesh.domain({ domain.effect({ name: 'Room.OnMessageEffect', impl: ({ get }) => { - const onMessage$ = fromEventPattern(peerRoom.onMessage).pipe( + const onMessage$ = fromEventPattern(chatRoomExtern.onMessage).pipe( mergeMap((message) => { // Filter out messages that do not conform to the format if (!checkMessageFormat(message)) { @@ -606,7 +606,7 @@ const RoomDomain = Remesh.domain({ domain.effect({ name: 'Room.OnLeaveRoomEffect', impl: ({ get }) => { - const onLeaveRoom$ = fromEventPattern(peerRoom.onLeaveRoom).pipe( + const onLeaveRoom$ = fromEventPattern(chatRoomExtern.onLeaveRoom).pipe( map((peerId) => { if (get(JoinStatusModule.query.IsInitialQuery())) { return null @@ -642,7 +642,7 @@ const RoomDomain = Remesh.domain({ domain.effect({ name: 'Room.OnErrorEffect', impl: () => { - const onRoomError$ = fromEventPattern(peerRoom.onError).pipe( + const onRoomError$ = fromEventPattern(chatRoomExtern.onError).pipe( map((error) => { console.error(error) return OnErrorEvent(error) @@ -652,18 +652,6 @@ const RoomDomain = Remesh.domain({ } }) - domain.effect({ - name: 'Room.OnUnloadEffect', - impl: ({ get }) => { - const beforeUnload$ = fromEvent(window, 'beforeunload').pipe( - map(() => { - return get(JoinStatusModule.query.IsFinishedQuery()) ? LeaveRoomCommand() : null - }) - ) - return beforeUnload$ - } - }) - return { query: { PeerIdQuery, @@ -699,4 +687,4 @@ const RoomDomain = Remesh.domain({ } }) -export default RoomDomain +export default ChatRoomDomain diff --git a/src/domain/Danmaku.ts b/src/domain/Danmaku.ts index 8707494..b288223 100644 --- a/src/domain/Danmaku.ts +++ b/src/domain/Danmaku.ts @@ -1,15 +1,15 @@ import { Remesh } from 'remesh' import { DanmakuExtern } from './externs/Danmaku' -import RoomDomain, { TextMessage } from './Room' +import ChatRoomDomain, { TextMessage } from '@/domain/ChatRoom' import UserInfoDomain from './UserInfo' import { map, merge } from 'rxjs' const DanmakuDomain = Remesh.domain({ name: 'DanmakuDomain', impl: (domain) => { - const danmaku = domain.getExtern(DanmakuExtern) + const danmakuExtern = domain.getExtern(DanmakuExtern) const userInfoDomain = domain.getDomain(UserInfoDomain()) - const roomDomain = domain.getDomain(RoomDomain()) + const chatRoomDomain = domain.getDomain(ChatRoomDomain()) const MountState = domain.state({ name: 'Danmaku.MountState', @@ -49,7 +49,7 @@ const DanmakuDomain = Remesh.domain({ const PushCommand = domain.command({ name: 'Danmaku.PushCommand', impl: (_, message: TextMessage) => { - danmaku.push(message) + danmakuExtern.push(message) return [PushEvent(message)] } }) @@ -57,7 +57,7 @@ const DanmakuDomain = Remesh.domain({ const UnshiftCommand = domain.command({ name: 'Danmaku.UnshiftCommand', impl: (_, message: TextMessage) => { - danmaku.unshift(message) + danmakuExtern.unshift(message) return [UnshiftEvent(message)] } }) @@ -65,7 +65,7 @@ const DanmakuDomain = Remesh.domain({ const ClearCommand = domain.command({ name: 'Danmaku.ClearCommand', impl: () => { - danmaku.clear() + danmakuExtern.clear() return [ClearEvent()] } }) @@ -73,7 +73,7 @@ const DanmakuDomain = Remesh.domain({ const MountCommand = domain.command({ name: 'Danmaku.ClearCommand', impl: (_, container: HTMLElement) => { - danmaku.mount(container) + danmakuExtern.mount(container) return [MountEvent(container)] } }) @@ -81,7 +81,7 @@ const DanmakuDomain = Remesh.domain({ const UnmountCommand = domain.command({ name: 'Danmaku.UnmountCommand', impl: () => { - danmaku.unmount() + danmakuExtern.unmount() return [UnmountEvent()] } }) @@ -121,8 +121,8 @@ const DanmakuDomain = Remesh.domain({ domain.effect({ name: 'Danmaku.OnRoomMessageEffect', impl: ({ fromEvent, get }) => { - const sendTextMessage$ = fromEvent(roomDomain.event.SendTextMessageEvent) - const onTextMessage$ = fromEvent(roomDomain.event.OnTextMessageEvent) + const sendTextMessage$ = fromEvent(chatRoomDomain.event.SendTextMessageEvent) + const onTextMessage$ = fromEvent(chatRoomDomain.event.OnTextMessageEvent) const onMessage$ = merge(sendTextMessage$, onTextMessage$).pipe( map((message) => { diff --git a/src/domain/Notification.ts b/src/domain/Notification.ts index 64a2ebe..0b7adc9 100644 --- a/src/domain/Notification.ts +++ b/src/domain/Notification.ts @@ -1,15 +1,15 @@ import { Remesh } from 'remesh' import { NotificationExtern } from './externs/Notification' -import RoomDomain, { TextMessage } from './Room' +import ChatRoomDomain, { TextMessage } from '@/domain/ChatRoom' import UserInfoDomain from './UserInfo' import { map, merge } from 'rxjs' const NotificationDomain = Remesh.domain({ name: 'NotificationDomain', impl: (domain) => { - const notification = domain.getExtern(NotificationExtern) + const notificationExtern = domain.getExtern(NotificationExtern) const userInfoDomain = domain.getDomain(UserInfoDomain()) - const roomDomain = domain.getDomain(RoomDomain()) + const chatRoomDomain = domain.getDomain(ChatRoomDomain()) const NotificationEnabledState = domain.state({ name: 'Notification.EnabledState', @@ -40,7 +40,7 @@ const NotificationDomain = Remesh.domain({ const PushCommand = domain.command({ name: 'Notification.PushCommand', impl: (_, message: TextMessage) => { - notification.push(message) + notificationExtern.push(message) return [PushEvent(message)] } }) @@ -68,7 +68,7 @@ const NotificationDomain = Remesh.domain({ domain.effect({ name: 'Notification.OnRoomMessageEffect', impl: ({ fromEvent, get }) => { - const onTextMessage$ = fromEvent(roomDomain.event.OnTextMessageEvent) + const onTextMessage$ = fromEvent(chatRoomDomain.event.OnTextMessageEvent) const onMessage$ = merge(onTextMessage$).pipe( map((message) => { const notificationEnabled = get(IsEnabledQuery()) diff --git a/src/domain/Toast.ts b/src/domain/Toast.ts index fe43f11..0690426 100644 --- a/src/domain/Toast.ts +++ b/src/domain/Toast.ts @@ -1,18 +1,20 @@ import { Remesh } from 'remesh' import ToastModule from './modules/Toast' -import RoomDomain, { SendType } from './Room' -import { filter, map } from 'rxjs' +import ChatRoomDomain, { SendType } from './ChatRoom' +import VirtualRoomDomain from './VirtualRoom' +import { filter, map, merge } from 'rxjs' const ToastDomain = Remesh.domain({ name: 'ToastDomain', impl: (domain) => { - const roomDomain = domain.getDomain(RoomDomain()) + const chatRoomDomain = domain.getDomain(ChatRoomDomain()) + const virtualRoomDomain = domain.getDomain(VirtualRoomDomain()) const toastModule = ToastModule(domain) domain.effect({ name: 'Toast.OnRoomSelfJoinRoomEffect', impl: ({ fromEvent }) => { - const onRoomJoin$ = fromEvent(roomDomain.event.SelfJoinRoomEvent).pipe( + const onRoomJoin$ = fromEvent(chatRoomDomain.event.SelfJoinRoomEvent).pipe( map(() => toastModule.command.LoadingCommand({ message: 'Connected to the chat.', duration: 3000 })) ) @@ -23,7 +25,10 @@ const ToastDomain = Remesh.domain({ domain.effect({ name: 'Toast.OnRoomErrorEffect', impl: ({ fromEvent }) => { - const onRoomError$ = fromEvent(roomDomain.event.OnErrorEvent).pipe( + const onRoomError$ = merge( + fromEvent(chatRoomDomain.event.OnErrorEvent), + fromEvent(virtualRoomDomain.event.OnErrorEvent) + ).pipe( map((error) => { return toastModule.command.ErrorCommand(error.message) }) @@ -36,7 +41,7 @@ const ToastDomain = Remesh.domain({ domain.effect({ name: 'Toast.OnSyncHistoryEffect', impl: ({ fromEvent }) => { - const onSyncHistory$ = fromEvent(roomDomain.event.OnMessageEvent).pipe( + const onSyncHistory$ = fromEvent(chatRoomDomain.event.OnMessageEvent).pipe( filter((message) => message.type === SendType.SyncHistory), map(() => toastModule.command.SuccessCommand('Syncing history messages.')) ) diff --git a/src/domain/VirtualRoom.ts b/src/domain/VirtualRoom.ts new file mode 100644 index 0000000..69dffc9 --- /dev/null +++ b/src/domain/VirtualRoom.ts @@ -0,0 +1,381 @@ +import { Remesh } from 'remesh' +import { map, merge, of, EMPTY, mergeMap, fromEventPattern } from 'rxjs' +import { type MessageUser } from './MessageList' +import { VirtualRoomExtern } from '@/domain/externs/VirtualRoom' +import UserInfoDomain from '@/domain/UserInfo' +import { upsert } from '@/utils' +import { nanoid } from 'nanoid' +import StatusModule from '@/domain/modules/Status' +import * as v from 'valibot' +import getSiteInfo, { SiteInfo } from '@/utils/getSiteInfo' + +export enum SendType { + SyncUser = 'SyncUser' +} + +export interface FromInfo extends SiteInfo { + peerId: string +} + +export interface SyncUserMessage extends MessageUser { + type: SendType.SyncUser + id: string + peerId: string + joinTime: number + sendTime: number + fromInfo: FromInfo +} + +export type RoomMessage = SyncUserMessage + +export type RoomUser = MessageUser & { peerIds: string[]; fromInfos: FromInfo[]; joinTime: number } + +const MessageUserSchema = { + userId: v.string(), + username: v.string(), + userAvatar: v.string() +} + +const FromInfoSchema = { + peerId: v.string(), + host: v.string(), + hostname: v.string(), + href: v.string(), + origin: v.string(), + title: v.string(), + icon: v.string(), + description: v.string() +} + +const RoomMessageSchema = v.union([ + v.object({ + type: v.literal(SendType.SyncUser), + id: v.string(), + peerId: v.string(), + joinTime: v.number(), + sendTime: v.number(), + fromInfo: v.object(FromInfoSchema), + ...MessageUserSchema + }) +]) + +// Check if the message conforms to the format +const checkMessageFormat = (message: v.InferInput) => + v.safeParse(RoomMessageSchema, message).success + +const VirtualRoomDomain = Remesh.domain({ + name: 'VirtualRoomDomain', + impl: (domain) => { + const userInfoDomain = domain.getDomain(UserInfoDomain()) + const virtualRoomExtern = domain.getExtern(VirtualRoomExtern) + + const PeerIdState = domain.state({ + name: 'Room.PeerIdState', + default: virtualRoomExtern.peerId + }) + + const PeerIdQuery = domain.query({ + name: 'Room.PeerIdQuery', + impl: ({ get }) => { + return get(PeerIdState()) + } + }) + + const JoinStatusModule = StatusModule(domain, { + name: 'Room.JoinStatusModule' + }) + + const UserListState = domain.state({ + name: 'Room.UserListState', + default: [] + }) + + const UserListQuery = domain.query({ + name: 'Room.UserListQuery', + impl: ({ get }) => { + return get(UserListState()) + } + }) + + const SelfUserQuery = domain.query({ + name: 'Room.SelfUserQuery', + impl: ({ get }) => { + return get(UserListQuery()).find((user) => user.peerIds.includes(virtualRoomExtern.peerId))! + } + }) + + const JoinIsFinishedQuery = JoinStatusModule.query.IsFinishedQuery + + const JoinRoomCommand = domain.command({ + name: 'Room.JoinRoomCommand', + impl: ({ get }) => { + const { id: userId, name: username, avatar: userAvatar } = get(userInfoDomain.query.UserInfoQuery())! + return [ + UpdateUserListCommand({ + type: 'create', + user: { + peerId: virtualRoomExtern.peerId, + fromInfo: { ...getSiteInfo(), peerId: virtualRoomExtern.peerId }, + joinTime: Date.now(), + userId, + username, + userAvatar + } + }), + + JoinStatusModule.command.SetFinishedCommand(), + JoinRoomEvent(virtualRoomExtern.roomId), + SelfJoinRoomEvent(virtualRoomExtern.roomId) + ] + } + }) + + JoinRoomCommand.after(() => { + virtualRoomExtern.joinRoom() + return null + }) + + const LeaveRoomCommand = domain.command({ + name: 'Room.LeaveRoomCommand', + impl: ({ get }) => { + const { id: userId, name: username, avatar: userAvatar } = get(userInfoDomain.query.UserInfoQuery())! + return [ + UpdateUserListCommand({ + type: 'delete', + user: { + peerId: virtualRoomExtern.peerId, + fromInfo: { ...getSiteInfo(), peerId: virtualRoomExtern.peerId }, + joinTime: Date.now(), + userId, + username, + userAvatar + } + }), + JoinStatusModule.command.SetInitialCommand(), + LeaveRoomEvent(virtualRoomExtern.roomId), + SelfLeaveRoomEvent(virtualRoomExtern.roomId) + ] + } + }) + + LeaveRoomCommand.after(() => { + virtualRoomExtern.leaveRoom() + return null + }) + + const UpdateUserListCommand = domain.command({ + name: 'Room.UpdateUserListCommand', + impl: ( + { get }, + action: { + type: 'create' | 'delete' + user: Omit & { peerId: string; fromInfo: FromInfo } + } + ) => { + const userList = get(UserListState()) + const existUser = userList.find((user) => user.userId === action.user.userId) + if (action.type === 'create') { + return [ + UserListState().new( + upsert( + userList, + { + ...action.user, + peerIds: [...new Set(existUser?.peerIds || []), action.user.peerId], + fromInfos: upsert(existUser?.fromInfos || [], action.user.fromInfo, 'peerId') + }, + 'userId' + ) + ) + ] + } else { + return [ + UserListState().new( + upsert( + userList, + { + ...action.user, + peerIds: existUser?.peerIds?.filter((peerId) => peerId !== action.user.peerId) || [], + fromInfos: existUser?.fromInfos?.filter((fromInfo) => fromInfo.peerId !== action.user.peerId) || [] + }, + 'userId' + ).filter((user) => user.peerIds.length) + ) + ] + } + } + }) + + const SendSyncUserMessageCommand = domain.command({ + name: 'Room.SendSyncUserMessageCommand', + impl: ({ get }, peerId: string) => { + const self = get(SelfUserQuery()) + + const syncUserMessage: SyncUserMessage = { + ...self, + id: nanoid(), + peerId: virtualRoomExtern.peerId, + sendTime: Date.now(), + fromInfo: { ...getSiteInfo(), peerId: virtualRoomExtern.peerId }, + type: SendType.SyncUser + } + + virtualRoomExtern.sendMessage(syncUserMessage, peerId) + return [SendSyncUserMessageEvent(syncUserMessage)] + } + }) + + const SendSyncUserMessageEvent = domain.event({ + name: 'Room.SendSyncUserMessageEvent' + }) + + const JoinRoomEvent = domain.event({ + name: 'Room.JoinRoomEvent' + }) + + const LeaveRoomEvent = domain.event({ + name: 'Room.LeaveRoomEvent' + }) + + const OnMessageEvent = domain.event({ + name: 'Room.OnMessageEvent' + }) + + const OnJoinRoomEvent = domain.event({ + name: 'Room.OnJoinRoomEvent' + }) + + const SelfJoinRoomEvent = domain.event({ + name: 'Room.SelfJoinRoomEvent' + }) + + const OnLeaveRoomEvent = domain.event({ + name: 'Room.OnLeaveRoomEvent' + }) + + const SelfLeaveRoomEvent = domain.event({ + name: 'Room.SelfLeaveRoomEvent' + }) + + const OnErrorEvent = domain.event({ + name: 'Room.OnErrorEvent' + }) + + domain.effect({ + name: 'Room.OnJoinRoomEffect', + impl: () => { + const onJoinRoom$ = fromEventPattern(virtualRoomExtern.onJoinRoom).pipe( + mergeMap((peerId) => { + // console.log('onJoinRoom', peerId) + if (virtualRoomExtern.peerId === peerId) { + return [OnJoinRoomEvent(peerId)] + } else { + return [SendSyncUserMessageCommand(peerId), OnJoinRoomEvent(peerId)] + } + }) + ) + return onJoinRoom$ + } + }) + + domain.effect({ + name: 'Room.OnMessageEffect', + impl: () => { + const onMessage$ = fromEventPattern(virtualRoomExtern.onMessage).pipe( + mergeMap((message) => { + // Filter out messages that do not conform to the format + if (!checkMessageFormat(message)) { + console.warn('Invalid message format', message) + return EMPTY + } + + const messageEvent$ = of(OnMessageEvent(message)) + + const messageCommand$ = (() => { + switch (message.type) { + case SendType.SyncUser: { + return of(UpdateUserListCommand({ type: 'create', user: message })) + } + + default: + console.warn('Unsupported message type', message) + return EMPTY + } + })() + + return merge(messageEvent$, messageCommand$) + }) + ) + return onMessage$ + } + }) + + domain.effect({ + name: 'Room.OnLeaveRoomEffect', + impl: ({ get }) => { + const onLeaveRoom$ = fromEventPattern(virtualRoomExtern.onLeaveRoom).pipe( + map((peerId) => { + if (get(JoinStatusModule.query.IsInitialQuery())) { + return null + } + // console.log('onLeaveRoom', peerId) + + const existUser = get(UserListQuery()).find((user) => user.peerIds.includes(peerId)) + + if (existUser) { + return [ + UpdateUserListCommand({ + type: 'delete', + user: { ...existUser, peerId, fromInfo: { ...getSiteInfo(), peerId } } + }), + OnLeaveRoomEvent(peerId) + ] + } else { + return [OnLeaveRoomEvent(peerId)] + } + }) + ) + return onLeaveRoom$ + } + }) + + domain.effect({ + name: 'Room.OnErrorEffect', + impl: () => { + const onRoomError$ = fromEventPattern(virtualRoomExtern.onError).pipe( + map((error) => { + console.error(error) + return OnErrorEvent(error) + }) + ) + return onRoomError$ + } + }) + + return { + query: { + PeerIdQuery, + UserListQuery, + JoinIsFinishedQuery + }, + command: { + JoinRoomCommand, + LeaveRoomCommand, + SendSyncUserMessageCommand + }, + event: { + SendSyncUserMessageEvent, + JoinRoomEvent, + SelfJoinRoomEvent, + LeaveRoomEvent, + SelfLeaveRoomEvent, + OnMessageEvent, + OnJoinRoomEvent, + OnLeaveRoomEvent, + OnErrorEvent + } + } + } +}) + +export default VirtualRoomDomain diff --git a/src/domain/externs/PeerRoom.ts b/src/domain/externs/ChatRoom.ts similarity index 64% rename from src/domain/externs/PeerRoom.ts rename to src/domain/externs/ChatRoom.ts index 9e32627..771afa7 100644 --- a/src/domain/externs/PeerRoom.ts +++ b/src/domain/externs/ChatRoom.ts @@ -1,19 +1,19 @@ import { Remesh } from 'remesh' -import { RoomMessage } from '../Room' +import { RoomMessage } from '../ChatRoom' -export interface PeerRoom { +export interface ChatRoom { readonly peerId: string readonly roomId: string - joinRoom: () => PeerRoom - sendMessage: (message: RoomMessage, id?: string | string[]) => PeerRoom - onMessage: (callback: (message: RoomMessage) => void) => PeerRoom - leaveRoom: () => PeerRoom - onJoinRoom: (callback: (id: string) => void) => PeerRoom - onLeaveRoom: (callback: (id: string) => void) => PeerRoom - onError: (callback: (error: Error) => void) => PeerRoom + joinRoom: () => ChatRoom + sendMessage: (message: RoomMessage, id?: string | string[]) => ChatRoom + onMessage: (callback: (message: RoomMessage) => void) => ChatRoom + leaveRoom: () => ChatRoom + onJoinRoom: (callback: (id: string) => void) => ChatRoom + onLeaveRoom: (callback: (id: string) => void) => ChatRoom + onError: (callback: (error: Error) => void) => ChatRoom } -export const PeerRoomExtern = Remesh.extern({ +export const ChatRoomExtern = Remesh.extern({ default: { peerId: '', roomId: '', diff --git a/src/domain/externs/Danmaku.ts b/src/domain/externs/Danmaku.ts index 1341168..5fe4514 100644 --- a/src/domain/externs/Danmaku.ts +++ b/src/domain/externs/Danmaku.ts @@ -1,5 +1,5 @@ import { Remesh } from 'remesh' -import { TextMessage } from '../Room' +import { TextMessage } from '@/domain/ChatRoom' export interface Danmaku { push: (message: TextMessage) => void diff --git a/src/domain/externs/Notification.ts b/src/domain/externs/Notification.ts index 991116d..aa07675 100644 --- a/src/domain/externs/Notification.ts +++ b/src/domain/externs/Notification.ts @@ -1,5 +1,5 @@ import { Remesh } from 'remesh' -import { TextMessage } from '../Room' +import { TextMessage } from '@/domain/ChatRoom' export interface Notification { push: (message: TextMessage) => Promise diff --git a/src/domain/externs/VirtualRoom.ts b/src/domain/externs/VirtualRoom.ts new file mode 100644 index 0000000..78df791 --- /dev/null +++ b/src/domain/externs/VirtualRoom.ts @@ -0,0 +1,42 @@ +import { Remesh } from 'remesh' +import { RoomMessage } from '@/domain/VirtualRoom' + +export interface VirtualRoom { + readonly peerId: string + readonly roomId: string + joinRoom: () => VirtualRoom + sendMessage: (message: RoomMessage, id?: string | string[]) => VirtualRoom + onMessage: (callback: (message: RoomMessage) => void) => VirtualRoom + leaveRoom: () => VirtualRoom + onJoinRoom: (callback: (id: string) => void) => VirtualRoom + onLeaveRoom: (callback: (id: string) => void) => VirtualRoom + onError: (callback: (error: Error) => void) => VirtualRoom +} + +export const VirtualRoomExtern = Remesh.extern({ + default: { + peerId: '', + roomId: '', + joinRoom: () => { + throw new Error('"joinRoom" not implemented.') + }, + sendMessage: () => { + throw new Error('"sendMessage" not implemented.') + }, + onMessage: () => { + throw new Error('"onMessage" not implemented.') + }, + leaveRoom: () => { + throw new Error('"leaveRoom" not implemented.') + }, + onJoinRoom: () => { + throw new Error('"onJoinRoom" not implemented.') + }, + onLeaveRoom: () => { + throw new Error('"onLeaveRoom" not implemented.') + }, + onError: () => { + throw new Error('"onError" not implemented.') + } + } +}) diff --git a/src/domain/impls/PeerRoom2.ts b/src/domain/impls/ChatRoom.ts similarity index 79% rename from src/domain/impls/PeerRoom2.ts rename to src/domain/impls/ChatRoom.ts index 30dc665..90ab96e 100644 --- a/src/domain/impls/PeerRoom2.ts +++ b/src/domain/impls/ChatRoom.ts @@ -1,27 +1,28 @@ -import { Artico, Room } from '@rtco/client' +import { Room } from '@rtco/client' -import { PeerRoomExtern } from '@/domain/externs/PeerRoom' +import { ChatRoomExtern } from '@/domain/externs/ChatRoom' import { stringToHex } from '@/utils' -import { nanoid } from 'nanoid' import EventHub from '@resreq/event-hub' -import { RoomMessage } from '../Room' +import { RoomMessage } from '@/domain/ChatRoom' import { JSONR } from '@/utils' +import Peer from './Peer' export interface Config { - peerId?: string + peer: Peer roomId: string } -class PeerRoom extends EventHub { +class ChatRoom extends EventHub { + readonly peer: Peer readonly roomId: string - private rtco?: Artico readonly peerId: string private room?: Room constructor(config: Config) { super() + this.peer = config.peer this.roomId = config.roomId - this.peerId = config.peerId || nanoid() + this.peerId = config.peer.id this.joinRoom = this.joinRoom.bind(this) this.sendMessage = this.sendMessage.bind(this) this.onMessage = this.onMessage.bind(this) @@ -32,16 +33,18 @@ class PeerRoom extends EventHub { } joinRoom() { - if (!this.rtco) { - this.rtco = new Artico({ id: this.peerId }) - } if (this.room) { - this.room = this.rtco.join(this.roomId) + this.room = this.peer.join(this.roomId) } else { - this.rtco!.on('open', () => { - this.room = this.rtco!.join(this.roomId) + if (this.peer.state === 'ready') { + this.room = this.peer.join(this.roomId) this.emit('action') - }) + } else { + this.peer!.on('open', () => { + this.room = this.peer.join(this.roomId) + this.emit('action') + }) + } } return this } @@ -123,7 +126,7 @@ class PeerRoom extends EventHub { return this } onError(callback: (error: Error) => void) { - this.rtco?.on('error', (error) => callback(error)) + this.peer?.on('error', (error) => callback(error)) this.on('error', (error: Error) => callback(error)) return this } @@ -131,9 +134,9 @@ class PeerRoom extends EventHub { const hostRoomId = stringToHex(document.location.host) -const peerRoom = new PeerRoom({ roomId: hostRoomId }) +const chatRoom = new ChatRoom({ roomId: hostRoomId, peer: Peer.createInstance() }) -export const PeerRoomImpl = PeerRoomExtern.impl(peerRoom) +export const ChatRoomImpl = ChatRoomExtern.impl(chatRoom) // https://github.com/w3c/webextensions/issues/72 // https://issues.chromium.org/issues/40251342 diff --git a/src/domain/impls/Danmaku.ts b/src/domain/impls/Danmaku.ts index 5880ff7..c729a0d 100644 --- a/src/domain/impls/Danmaku.ts +++ b/src/domain/impls/Danmaku.ts @@ -1,6 +1,6 @@ import { DanmakuExtern } from '@/domain/externs/Danmaku' -import { TextMessage } from '@/domain/Room' +import { TextMessage } from '@/domain/ChatRoom' import { createElement } from 'react' import DanmakuMessage from '@/app/content/components/DanmakuMessage' import { createRoot } from 'react-dom/client' diff --git a/src/domain/impls/Notification.ts b/src/domain/impls/Notification.ts index 834a5fc..428fad8 100644 --- a/src/domain/impls/Notification.ts +++ b/src/domain/impls/Notification.ts @@ -1,5 +1,5 @@ import { NotificationExtern } from '@/domain/externs/Notification' -import { TextMessage } from '../Room' +import { TextMessage } from '@/domain/ChatRoom' import { EVENT } from '@/constants/event' import { messenger } from '@/messenger' diff --git a/src/domain/impls/Peer.ts b/src/domain/impls/Peer.ts new file mode 100644 index 0000000..151a744 --- /dev/null +++ b/src/domain/impls/Peer.ts @@ -0,0 +1,22 @@ +import { nanoid } from 'nanoid' +import { Artico } from '@rtco/client' + +export interface Config { + peerId?: string +} + +export default class Peer extends Artico { + private static instance: Peer | null = null + private constructor(config: Config = {}) { + const { peerId = nanoid() } = config + super({ id: peerId }) + } + + public static createInstance(config: Config = {}) { + return (this.instance ??= new Peer(config)) + } + + public static getInstance() { + return this.instance + } +} diff --git a/src/domain/impls/PeerRoom.ts b/src/domain/impls/VirtualRoom.ts similarity index 52% rename from src/domain/impls/PeerRoom.ts rename to src/domain/impls/VirtualRoom.ts index 1f234b6..928fa07 100644 --- a/src/domain/impls/PeerRoom.ts +++ b/src/domain/impls/VirtualRoom.ts @@ -1,27 +1,29 @@ -import { type DataPayload, type Room, joinRoom, selfId } from 'trystero' +import { Room } from '@rtco/client' -// import { joinRoom } from 'trystero/firebase' - -import { PeerRoomExtern } from '@/domain/externs/PeerRoom' +import { VirtualRoomExtern } from '@/domain/externs/VirtualRoom' import { stringToHex } from '@/utils' import EventHub from '@resreq/event-hub' -import { RoomMessage } from '../Room' +import { RoomMessage } from '@/domain/VirtualRoom' +import { JSONR } from '@/utils' +import { VIRTUAL_ROOM_ID } from '@/constants/config' +import Peer from './Peer' export interface Config { - peerId?: string + peer: Peer roomId: string } -class PeerRoom extends EventHub { - readonly appId: string - private room?: Room +class VirtualRoom extends EventHub { + readonly peer: Peer readonly roomId: string readonly peerId: string + private room?: Room + constructor(config: Config) { super() - this.appId = __NAME__ + this.peer = config.peer this.roomId = config.roomId - this.peerId = selfId + this.peerId = config.peer.id this.joinRoom = this.joinRoom.bind(this) this.sendMessage = this.sendMessage.bind(this) this.onMessage = this.onMessage.bind(this) @@ -32,16 +34,19 @@ class PeerRoom extends EventHub { } joinRoom() { - this.room = joinRoom({ appId: this.appId }, this.roomId) - /** - * If we wait to join, it will result in not being able to listen to our own join event. - * This might be related to the fact that: - * (If called more than once, only the latest callback registered is ever called.) - * Multiple listeners may overwrite each other. - * @see: https://github.com/dmotz/trystero?tab=readme-ov-file#onpeerjoincallback - */ - // this.room.onPeerJoin(() => this.emit('action')) - this.emit('action') + if (this.room) { + this.room = this.peer.join(this.roomId) + } else { + if (this.peer.state === 'ready') { + this.room = this.peer.join(this.roomId) + this.emit('action') + } else { + this.peer!.on('open', () => { + this.room = this.peer.join(this.roomId) + this.emit('action') + }) + } + } return this } @@ -51,15 +56,12 @@ class PeerRoom extends EventHub { if (!this.room) { this.emit('error', new Error('Room not joined')) } else { - const [send] = this.room.makeAction('MESSAGE') - send(message as any as DataPayload, id) + this.room.send(JSONR.stringify(message)!, id) } }) } else { - const [send] = this.room.makeAction('MESSAGE') - send(message as any as DataPayload, id) + this.room.send(JSONR.stringify(message)!, id) } - return this } @@ -69,13 +71,11 @@ class PeerRoom extends EventHub { if (!this.room) { this.emit('error', new Error('Room not joined')) } else { - const [, on] = this.room.makeAction('MESSAGE') - on((message) => callback(message as any as RoomMessage)) + this.room.on('message', (message) => callback(JSONR.parse(message) as RoomMessage)) } }) } else { - const [, on] = this.room.makeAction('MESSAGE') - on((message) => callback(message as any as RoomMessage)) + this.room.on('message', (message) => callback(JSONR.parse(message) as RoomMessage)) } return this } @@ -86,15 +86,11 @@ class PeerRoom extends EventHub { if (!this.room) { this.emit('error', new Error('Room not joined')) } else { - this.room.onPeerJoin((peerId) => { - callback(peerId) - }) + this.room.on('join', (id) => callback(id)) } }) } else { - this.room.onPeerJoin((peerId) => { - callback(peerId) - }) + this.room.on('join', (id) => callback(id)) } return this } @@ -105,11 +101,11 @@ class PeerRoom extends EventHub { if (!this.room) { this.emit('error', new Error('Room not joined')) } else { - this.room.onPeerLeave((peerId) => callback(peerId)) + this.room.on('leave', (id) => callback(id)) } }) } else { - this.room.onPeerLeave((peerId) => callback(peerId)) + this.room.on('leave', (id) => callback(id)) } return this } @@ -130,19 +126,15 @@ class PeerRoom extends EventHub { } return this } - onError(callback: (error: Error) => void) { + this.peer?.on('error', (error) => callback(error)) this.on('error', (error: Error) => callback(error)) return this } } -const hostRoomId = stringToHex(document.location.host) -const peerRoom = new PeerRoom({ roomId: hostRoomId }) +const hostRoomId = stringToHex(VIRTUAL_ROOM_ID) -export const PeerRoomImpl = PeerRoomExtern.impl(peerRoom) +const virtualRoom = new VirtualRoom({ roomId: hostRoomId, peer: Peer.createInstance() }) -// https://github.com/w3c/webextensions/issues/72 -// https://issues.chromium.org/issues/40251342 -// https://github.com/w3c/webrtc-extensions/issues/77 -// https://github.com/aklinker1/webext-core/pull/70 +export const VirtualRoomImpl = VirtualRoomExtern.impl(virtualRoom) diff --git a/src/domain/modules/Toast.ts b/src/domain/modules/Toast.ts index 788b08d..db1254f 100644 --- a/src/domain/modules/Toast.ts +++ b/src/domain/modules/Toast.ts @@ -6,7 +6,7 @@ export interface ToastOptions { } const ToastModule = (domain: RemeshDomainContext, options: ToastOptions = { name: 'MessageToastModule' }) => { - const toast = domain.getExtern(ToastExtern) + const toastExtern = domain.getExtern(ToastExtern) const SuccessEvent = domain.event({ name: `${options.name}.SuccessEvent` @@ -15,7 +15,7 @@ const ToastModule = (domain: RemeshDomainContext, options: ToastOptions = { name const SuccessCommand = domain.command({ name: `${options.name}.SuccessCommand`, impl: (_, message: string | { message: string; duration?: number }) => { - const id = toast.success( + const id = toastExtern.success( typeof message === 'string' ? message : message.message, typeof message === 'string' ? undefined : message.duration ) @@ -30,7 +30,7 @@ const ToastModule = (domain: RemeshDomainContext, options: ToastOptions = { name const ErrorCommand = domain.command({ name: `${options.name}.ErrorCommand`, impl: (_, message: string | { message: string; duration?: number }) => { - const id = toast.error( + const id = toastExtern.error( typeof message === 'string' ? message : message.message, typeof message === 'string' ? undefined : message.duration ) @@ -45,7 +45,7 @@ const ToastModule = (domain: RemeshDomainContext, options: ToastOptions = { name const InfoCommand = domain.command({ name: `${options.name}.InfoCommand`, impl: (_, message: string | { message: string; duration?: number }) => { - const id = toast.info( + const id = toastExtern.info( typeof message === 'string' ? message : message.message, typeof message === 'string' ? undefined : message.duration ) @@ -60,7 +60,7 @@ const ToastModule = (domain: RemeshDomainContext, options: ToastOptions = { name const WarningCommand = domain.command({ name: `${options.name}.WarningCommand`, impl: (_, message: string | { message: string; duration?: number }) => { - const id = toast.warning( + const id = toastExtern.warning( typeof message === 'string' ? message : message.message, typeof message === 'string' ? undefined : message.duration ) @@ -75,7 +75,7 @@ const ToastModule = (domain: RemeshDomainContext, options: ToastOptions = { name const LoadingCommand = domain.command({ name: `${options.name}.LoadingCommand`, impl: (_, message: string | { message: string; duration?: number }) => { - const id = toast.loading( + const id = toastExtern.loading( typeof message === 'string' ? message : message.message, typeof message === 'string' ? undefined : message.duration ) @@ -90,7 +90,7 @@ const ToastModule = (domain: RemeshDomainContext, options: ToastOptions = { name const CancelCommand = domain.command({ name: `${options.name}.CancelCommand`, impl: (_, id: number | string) => { - toast.cancel(id) + toastExtern.cancel(id) return [CancelEvent(id)] } }) diff --git a/src/messenger/index.ts b/src/messenger/index.ts index f38047b..5b0b668 100644 --- a/src/messenger/index.ts +++ b/src/messenger/index.ts @@ -1,6 +1,6 @@ import { EVENT } from '@/constants/event' import { defineExtensionMessaging } from '@webext-core/messaging' -import { TextMessage } from '@/domain/Room' +import { TextMessage } from '@/domain/ChatRoom' interface ProtocolMap { [EVENT.OPTIONS_PAGE_OPEN]: () => void diff --git a/src/utils/getSiteInfo.ts b/src/utils/getSiteInfo.ts index baa6c68..d32b9ba 100644 --- a/src/utils/getSiteInfo.ts +++ b/src/utils/getSiteInfo.ts @@ -1,3 +1,5 @@ +import { buildFullURL } from '@/utils' + export interface SiteInfo { host: string hostname: string @@ -15,15 +17,17 @@ const getSiteInfo = (): SiteInfo => { href: document.location.href, origin: document.location.origin, title: - document.querySelector('meta[rel="og:title i"]')?.getAttribute('content') ?? - document.querySelector('meta[rel="og:title i"]')?.getAttribute('content') ?? - document.querySelector('meta[rel="og:site_name i"]')?.getAttribute('content') ?? + document.querySelector('meta[property="og:site_name" i]')?.getAttribute('content') ?? + document.querySelector('meta[property="og:title" i]')?.getAttribute('content') ?? document.title, - icon: - document.querySelector('meta[property="og:image" i]')?.getAttribute('href') ?? + icon: buildFullURL( + document.location.origin, document.querySelector('link[rel="icon" i]')?.getAttribute('href') ?? - document.querySelector('link[rel="shortcut icon" i]')?.getAttribute('href') ?? - `${document.location.origin}/favicon.ico`, + document.querySelector('link[rel="shortcut icon" i]')?.getAttribute('href') ?? + document.querySelector('meta[property="og:image" i]')?.getAttribute('content') ?? + document.querySelector('link[rel="apple-touch-icon" i]')?.getAttribute('href') ?? + `/favicon.ico` + ), description: document.querySelector('meta[property="og:description i"]')?.getAttribute('content') ?? document.querySelector('meta[name="description" i]')?.getAttribute('content') ?? diff --git a/src/utils/index.ts b/src/utils/index.ts index a52912f..59ce61e 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -17,3 +17,5 @@ export { default as getRootNode } from './getRootNode' export { default as blobToBase64 } from './blobToBase64' export * as JSONR from './jsonr' export { getTextByteSize } from './getTextByteSize' +export { default as isEqual } from './isEqual' +export { cleanURL, isAbsoluteURL, assembleURL, buildFullURL } from './url' diff --git a/src/utils/isEqual.ts b/src/utils/isEqual.ts new file mode 100644 index 0000000..6f59922 --- /dev/null +++ b/src/utils/isEqual.ts @@ -0,0 +1,5 @@ +const isEqual = (a: object, b: object) => { + return JSON.stringify(a) === JSON.stringify(b) +} + +export default isEqual diff --git a/src/utils/url.ts b/src/utils/url.ts new file mode 100644 index 0000000..2b11ef3 --- /dev/null +++ b/src/utils/url.ts @@ -0,0 +1,36 @@ +export const cleanURL = (url: string) => url.replace(/([^:]\/)\/+/g, '$1').replace(/\/+$/, '') + +/** + * Determines whether the specified URL is absolute + * Reference: https://github.com/axios/axios/blob/v1.x/lib/helpers/isAbsoluteURL.js + */ +export const isAbsoluteURL = (url: string) => { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url) +} + +/** + * Add params to the URL + */ +export const assembleURL = (url: string, params: Record) => { + return Object.entries(params) + .reduce((url, [key, value]) => { + url.searchParams.append(key, value) + return url + }, new URL(url)) + .toString() +} + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * reference: https://github.com/axios/axios/blob/v1.x/lib/core/buildFullPath.js + */ +export const buildFullURL = (baseURL: string = '', pathURL: string = '', params: Record = {}) => { + const url = cleanURL(isAbsoluteURL(pathURL) ? pathURL : `${baseURL}/${pathURL}`) + return assembleURL(url, params) +} diff --git a/tailwind.config.ts b/tailwind.config.ts index 768a2f4..cd571de 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -11,6 +11,9 @@ export default { padding: '2rem' }, extend: { + fontSize: { + '2xs': '0.625rem' + }, zIndex: { infinity: 'calc(infinity)' },