diff --git a/package.json b/package.json index a6ebd9385..41464e991 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "rxjs": "^7.8.1", "three": "^0.170.0", "three-spritetext": "^1.9.2", - "three-stdlib": "^2.34.0", + "three-stdlib": "^2.34.1", "tiny-lru": "^11.2.11", "unified": "^11.0.5", "vite-plugin-funding": "^0.1.0", @@ -133,8 +133,8 @@ "@types/leaflet.locatecontrol": "^0.74.6", "@types/lodash.throttle": "^4.1.9", "@types/ngeohash": "^0.6.8", - "@types/react": "^18.3.14", - "@types/react-dom": "^18.3.3", + "@types/react": "^18.3.16", + "@types/react-dom": "^18.3.5", "@types/react-window": "^1.8.8", "@types/three": "^0.160.0", "@types/webscopeio__react-textarea-autocomplete": "^4.7.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86a33f085..6ea12a875 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,13 +23,13 @@ importers: version: 2.0.8 '@chakra-ui/icons': specifier: ^2.2.4 - version: 2.2.4(@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 2.2.4(@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@chakra-ui/media-query': specifier: ^3.3.0 - version: 3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1))(react@18.3.1))(react@18.3.1) '@chakra-ui/react': specifier: ^2.10.4 - version: 2.10.4(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.10.4(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@chakra-ui/shared-utils': specifier: ^2.0.4 version: 2.0.4 @@ -53,16 +53,16 @@ importers: version: 6.35.3 '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@18.3.14)(react@18.3.1) + version: 11.14.0(@types/react@18.3.16)(react@18.3.1) '@emotion/styled': specifier: ^11.14.0 - version: 11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1) + version: 11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1) '@getalby/bitcoin-connect': specifier: ^3.6.3 - version: 3.6.3(@types/react@18.3.14)(react@18.3.1)(typescript@5.7.2) + version: 3.6.3(@types/react@18.3.16)(react@18.3.1)(typescript@5.7.2) '@getalby/bitcoin-connect-react': specifier: ^3.6.3 - version: 3.6.3(@types/react@18.3.14)(react@18.3.1)(typescript@5.7.2) + version: 3.6.3(@types/react@18.3.16)(react@18.3.1)(typescript@5.7.2) '@noble/ciphers': specifier: ^1.1.3 version: 1.1.3 @@ -92,28 +92,28 @@ importers: version: 4.9.2(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) applesauce-channel: specifier: next - version: 0.0.0-next-20241210193522(typescript@5.7.2) + version: 0.0.0-next-20241211183908(typescript@5.7.2) applesauce-content: specifier: next - version: 0.0.0-next-20241210193522(typescript@5.7.2) + version: 0.0.0-next-20241211183908(typescript@5.7.2) applesauce-core: specifier: next - version: 0.0.0-next-20241210193522(typescript@5.7.2) + version: 0.0.0-next-20241211183908(typescript@5.7.2) applesauce-factory: specifier: next - version: 0.0.0-next-20241210193522(typescript@5.7.2) + version: 0.0.0-next-20241211183908(typescript@5.7.2) applesauce-lists: specifier: next - version: 0.0.0-next-20241210193522(typescript@5.7.2) + version: 0.0.0-next-20241211183908(typescript@5.7.2) applesauce-net: specifier: next - version: 0.0.0-next-20241210193522(typescript@5.7.2) + version: 0.0.0-next-20241211183908(typescript@5.7.2) applesauce-react: specifier: next - version: 0.0.0-next-20241210193522(typescript@5.7.2) + version: 0.0.0-next-20241211183908(typescript@5.7.2) applesauce-signer: specifier: next - version: 0.0.0-next-20241210193522(typescript@5.7.2) + version: 0.0.0-next-20241211183908(typescript@5.7.2) bech32: specifier: ^2.0.0 version: 2.0.0 @@ -248,10 +248,10 @@ importers: version: 7.54.0(react@18.3.1) react-markdown: specifier: ^9.0.1 - version: 9.0.1(@types/react@18.3.14)(react@18.3.1) + version: 9.0.1(@types/react@18.3.16)(react@18.3.1) react-mosaic-component: specifier: ^6.1.0 - version: 6.1.0(@types/react@18.3.14)(dnd-core@16.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 6.1.0(@types/react@18.3.16)(dnd-core@16.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-photo-album: specifier: ^2.4.1 version: 2.4.1(react@18.3.1) @@ -295,8 +295,8 @@ importers: specifier: ^1.9.2 version: 1.9.2(three@0.170.0) three-stdlib: - specifier: ^2.34.0 - version: 2.34.0(three@0.170.0) + specifier: ^2.34.1 + version: 2.34.1(three@0.170.0) tiny-lru: specifier: ^11.2.11 version: 11.2.11 @@ -360,10 +360,10 @@ importers: version: 0.6.8 '@types/react': specifier: ^18.2.22 - version: 18.3.14 + version: 18.3.16 '@types/react-dom': specifier: ^18.2.7 - version: 18.3.3(@types/react@18.3.14) + version: 18.3.5(@types/react@18.3.16) '@types/react-window': specifier: ^1.8.8 version: 1.8.8 @@ -1652,8 +1652,8 @@ packages: '@shikijs/types@1.24.2': resolution: {integrity: sha512-bdeWZiDtajGLG9BudI0AHet0b6e7FbR0EsE4jpGaI0YwHm/XJunI9+3uZnzFtX65gsyJ6ngCIWUfA4NWRPnBkQ==} - '@shikijs/vscode-textmate@9.3.0': - resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} + '@shikijs/vscode-textmate@9.3.1': + resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} '@snort/worker-relay@1.3.0': resolution: {integrity: sha512-o6RuXCgwF4jG6lLATGTHXRRB1kllZMp7WnpMA4GzaY5fAI6uixSXFFna76WPwte6TMQ04uDM25hpByZrs2/L5Q==} @@ -1773,16 +1773,16 @@ packages: '@types/prop-types@15.7.14': resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} - '@types/react-dom@18.3.3': - resolution: {integrity: sha512-uTYkxTLkYp41nq/ULXyXMtkNT1vu5fXJoqad6uTNCOGat5t9cLgF4vMNLBXsTOXpdOI44XzKPY1M5RRm0bQHuw==} + '@types/react-dom@18.3.5': + resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} peerDependencies: '@types/react': ^18.2.22 '@types/react-window@1.8.8': resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==} - '@types/react@18.3.14': - resolution: {integrity: sha512-NzahNKvjNhVjuPBQ+2G7WlxstQ+47kXZNHlUvFakDViuIEfGY926GqhMueQFZ7woG+sPiQKlF36XfrIUVSUfFg==} + '@types/react@18.3.16': + resolution: {integrity: sha512-oh8AMIC4Y2ciKufU8hnKgs+ufgbA/dhPTACaZPM86AbwX9QwnFtSoPWEeRUj8fge+v6kFt78BXcDhAU1SrrAsw==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -1905,29 +1905,29 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - applesauce-channel@0.0.0-next-20241210193522: - resolution: {integrity: sha512-doSJufHgtN2YK2JmO2pkgoq21qh4Pmxu7Uy9PV8cpcPHIyghSEUqgYpSh6nxG3523Yv3w9SGhiYjNRbkJzVWcA==} + applesauce-channel@0.0.0-next-20241211183908: + resolution: {integrity: sha512-Orj5Oux3OtGjPQIn5JSau3rSdTnjDFJPnknXAYi25UC8qQ07rBg8QFIBxakYAcF9aXwWc+bihnIuYXp80XPiMQ==} - applesauce-content@0.0.0-next-20241210193522: - resolution: {integrity: sha512-QOx6V0etuwZzKCecoR24Ylrb+Q1bIHTBiQve4LGthww84KiarWfXIWTSzZ2a5/kctOkVxOWdn/qHv2JKSGEdeA==} + applesauce-content@0.0.0-next-20241211183908: + resolution: {integrity: sha512-0sVG8VemADeDtHzaGP+csAzWyj9qnGhtnlhFpbJGklN+QrIh94vJw4GGJM5t5GrH+62bPBzEHq/ofcUTdVccAQ==} - applesauce-core@0.0.0-next-20241210193522: - resolution: {integrity: sha512-Pc14Eq7WeGozgQjRlKRiOfBmoDtzO0sY9F69FlebZVxbnN1yc/aHi/T54hRWo92rAtY+LRp4ONggfsDgNHIrjw==} + applesauce-core@0.0.0-next-20241211183908: + resolution: {integrity: sha512-nSIp3aetUYPbn+1+qqkiAteSuocEzXzxGDkZCQdL13B4+5ynTxAWLNSb4KdNgzulAryXMm5PWvGX/voY7fCxcw==} - applesauce-factory@0.0.0-next-20241210193522: - resolution: {integrity: sha512-s/yyoI+iLy84pOPH6FRbS0bKESKyAYZh/XYPtybkbYWjkFz0B8/sflIrH1l0Q+/SaVzoTNo67UXeKjkq3uBWNg==} + applesauce-factory@0.0.0-next-20241211183908: + resolution: {integrity: sha512-hl22o7hNh0oG0ANuVi5x9Jfoe/BWfA+N2C83UAZjHoMZAxBNaZEnZBQl4K49Xz139dG/LORCNHEVy2A2SE43bQ==} - applesauce-lists@0.0.0-next-20241210193522: - resolution: {integrity: sha512-bMVKK0eyFDAyQgSs0XAnD32OqJ13hGJB0a7gyBtdsJET2fry54OEU/O6bgnmv6Ygv2VzOPif9JNzDPDY0oThKg==} + applesauce-lists@0.0.0-next-20241211183908: + resolution: {integrity: sha512-NOivXJIQvOW5Q7d7KUaardp6A/P26Y4QdImE1WmQy7svrU/qV/bHrtCm9iT4KVH++iIOUGBCEzpyj3/i41kKcQ==} - applesauce-net@0.0.0-next-20241210193522: - resolution: {integrity: sha512-3dd+bCybnDtd6/uXXTF5f8BSQk/bnIIEPk95p+O57K5DQectoJHkbKTOd7fxLP/NDz/96trlQbkQPW8kezTAWQ==} + applesauce-net@0.0.0-next-20241211183908: + resolution: {integrity: sha512-P0jF3oJkdWm6a+Y7S8mx5/KrzsmVfRDmZAOy7y7kxZxT9UxwPqUY3arf/JErrNw8NyPKIozsL57/9nGcvyarzg==} - applesauce-react@0.0.0-next-20241210193522: - resolution: {integrity: sha512-Qo7vJUlcResa3MdjJNigNv/pX9lHdAYkCgbVlGwGcw5xkf20moHnUsOJfaQxEd678ATXVqJeUFNjvzIdb1GLAg==} + applesauce-react@0.0.0-next-20241211183908: + resolution: {integrity: sha512-0mtfSZZ2QkzQsB6x9Vfgemybt4WTZK24kUrsE6j+mgxGnaX616LgMTkdDl4SJwNjKPr9ZyMemTbalZkqF42iMA==} - applesauce-signer@0.0.0-next-20241210193522: - resolution: {integrity: sha512-Hq6EzpxGwlbqhUwe2+sILO6qZtywIdpvnN5Lt2VRZvQJEpG99DbqQEwtxzlCBII0+gOXc50rWSmaPGAz8PbZhw==} + applesauce-signer@0.0.0-next-20241211183908: + resolution: {integrity: sha512-uKdM0nGh214Pkoxyh8pwm1DF8YNcqCgeo2LOfVtTCMBYmuBbYWPU6peAc/Vb1R9ry5Chel1tEOvIHwPfyuIXNQ==} argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -2048,6 +2048,10 @@ packages: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} + call-bound@1.0.2: + resolution: {integrity: sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2974,6 +2978,11 @@ packages: engines: {node: '>=6'} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -3947,8 +3956,20 @@ packages: shiki@1.24.2: resolution: {integrity: sha512-TR1fi6mkRrzW+SKT5G6uKuc32Dj2EEa7Kj0k8kGqiBINb+C1TiflVOiT9ta6GqOJtC4fraxO5SLUaKBcSY38Fg==} - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} signal-exit@4.1.0: @@ -4022,8 +4043,9 @@ packages: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} @@ -4106,8 +4128,8 @@ packages: peerDependencies: three: '>=0.86.0' - three-stdlib@2.34.0: - resolution: {integrity: sha512-U5qJYWgUKBFJqr1coMSbczA964uvouzBjQbtJlaI9LfMwy7hr+kc1Mfh0gqi/2872KmGu9utgff6lj8Oti8+VQ==} + three-stdlib@2.34.1: + resolution: {integrity: sha512-Ck1eXTyd0Ii+/X9eGqOBxijHwy0fjyQbaZMBxdCrX7C1J7+nvueDsZqddny7Rh6KZwX+YBD8PplCzAoWY3mIXg==} peerDependencies: three: '>=0.128.0' @@ -4564,7 +4586,7 @@ snapshots: '@babel/types': 7.26.3 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 + jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.25.9': dependencies: @@ -5218,17 +5240,17 @@ snapshots: framesync: 6.1.2 react: 18.3.1 - '@chakra-ui/icons@2.2.4(@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@chakra-ui/icons@2.2.4(@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@chakra-ui/react': 2.10.4(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@chakra-ui/react': 2.10.4(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 - '@chakra-ui/media-query@3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@chakra-ui/media-query@3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@chakra-ui/breakpoint-utils': 2.0.8 '@chakra-ui/react-env': 3.1.0(react@18.3.1) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.2(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(react@18.3.1) + '@chakra-ui/system': 2.6.2(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1))(react@18.3.1) react: 18.3.1 '@chakra-ui/object-utils@2.1.0': {} @@ -5247,14 +5269,14 @@ snapshots: '@chakra-ui/utils': 2.0.15 react: 18.3.1 - '@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@chakra-ui/hooks': 2.4.3(react@18.3.1) '@chakra-ui/styled-system': 2.12.1(react@18.3.1) '@chakra-ui/theme': 3.4.7(@chakra-ui/styled-system@2.12.1(react@18.3.1))(react@18.3.1) '@chakra-ui/utils': 2.2.3(react@18.3.1) - '@emotion/react': 11.14.0(@types/react@18.3.14)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.16)(react@18.3.1) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1) '@popperjs/core': 2.11.8 '@zag-js/focus-visible': 0.31.1 aria-hidden: 1.2.4 @@ -5262,8 +5284,8 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-fast-compare: 3.2.2 - react-focus-lock: 2.13.2(@types/react@18.3.14)(react@18.3.1) - react-remove-scroll: 2.6.0(@types/react@18.3.14)(react@18.3.1) + react-focus-lock: 2.13.2(@types/react@18.3.16)(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.16)(react@18.3.1) transitivePeerDependencies: - '@types/react' @@ -5291,7 +5313,7 @@ snapshots: csstype: 3.1.3 lodash.mergewith: 4.6.2 - '@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(react@18.3.1)': + '@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1))(react@18.3.1)': dependencies: '@chakra-ui/color-mode': 2.2.0(react@18.3.1) '@chakra-ui/object-utils': 2.1.0 @@ -5299,8 +5321,8 @@ snapshots: '@chakra-ui/styled-system': 2.9.2 '@chakra-ui/theme-utils': 2.0.21 '@chakra-ui/utils': 2.0.15 - '@emotion/react': 11.14.0(@types/react@18.3.14)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.16)(react@18.3.1) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1) react: 18.3.1 react-fast-compare: 3.2.2 @@ -5633,7 +5655,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1)': + '@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.13.5 @@ -5645,7 +5667,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 transitivePeerDependencies: - supports-color @@ -5659,18 +5681,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1)': + '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.16)(react@18.3.1))(@types/react@18.3.16)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.3.1 - '@emotion/react': 11.14.0(@types/react@18.3.14)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.16)(react@18.3.1) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) '@emotion/utils': 1.4.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 transitivePeerDependencies: - supports-color @@ -5753,22 +5775,22 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@getalby/bitcoin-connect-react@3.6.3(@types/react@18.3.14)(react@18.3.1)(typescript@5.7.2)': + '@getalby/bitcoin-connect-react@3.6.3(@types/react@18.3.16)(react@18.3.1)(typescript@5.7.2)': dependencies: - '@getalby/bitcoin-connect': 3.6.3(@types/react@18.3.14)(react@18.3.1)(typescript@5.7.2) + '@getalby/bitcoin-connect': 3.6.3(@types/react@18.3.16)(react@18.3.1)(typescript@5.7.2) react: 18.3.1 transitivePeerDependencies: - '@types/react' - immer - typescript - '@getalby/bitcoin-connect@3.6.3(@types/react@18.3.14)(react@18.3.1)(typescript@5.7.2)': + '@getalby/bitcoin-connect@3.6.3(@types/react@18.3.16)(react@18.3.1)(typescript@5.7.2)': dependencies: '@getalby/lightning-tools': 5.1.2 '@getalby/sdk': 3.8.2(typescript@5.7.2) '@lightninglabs/lnc-web': 0.3.2-alpha qrcode-generator: 1.4.4 - zustand: 4.5.5(@types/react@18.3.14)(react@18.3.1) + zustand: 4.5.5(@types/react@18.3.16)(react@18.3.1) transitivePeerDependencies: - '@types/react' - immer @@ -6049,20 +6071,20 @@ snapshots: '@shikijs/engine-javascript': 1.24.2 '@shikijs/engine-oniguruma': 1.24.2 '@shikijs/types': 1.24.2 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 '@shikijs/engine-javascript@1.24.2': dependencies: '@shikijs/types': 1.24.2 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/vscode-textmate': 9.3.1 oniguruma-to-es: 0.7.0 '@shikijs/engine-oniguruma@1.24.2': dependencies: '@shikijs/types': 1.24.2 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/vscode-textmate': 9.3.1 '@shikijs/markdown-it@1.24.2': dependencies: @@ -6071,10 +6093,10 @@ snapshots: '@shikijs/types@1.24.2': dependencies: - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 - '@shikijs/vscode-textmate@9.3.0': {} + '@shikijs/vscode-textmate@9.3.1': {} '@snort/worker-relay@1.3.0': dependencies: @@ -6200,15 +6222,15 @@ snapshots: '@types/prop-types@15.7.14': {} - '@types/react-dom@18.3.3(@types/react@18.3.14)': + '@types/react-dom@18.3.5(@types/react@18.3.16)': dependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 '@types/react-window@1.8.8': dependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 - '@types/react@18.3.14': + '@types/react@18.3.16': dependencies: '@types/prop-types': 15.7.14 csstype: 3.1.3 @@ -6236,7 +6258,7 @@ snapshots: '@types/webscopeio__react-textarea-autocomplete@4.7.5': dependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 '@types/webxr@0.5.20': {} @@ -6342,22 +6364,22 @@ snapshots: dependencies: color-convert: 2.0.1 - applesauce-channel@0.0.0-next-20241210193522(typescript@5.7.2): + applesauce-channel@0.0.0-next-20241211183908(typescript@5.7.2): dependencies: - applesauce-core: 0.0.0-next-20241210193522(typescript@5.7.2) + applesauce-core: 0.0.0-next-20241211183908(typescript@5.7.2) nostr-tools: 2.10.4(typescript@5.7.2) rxjs: 7.8.1 transitivePeerDependencies: - supports-color - typescript - applesauce-content@0.0.0-next-20241210193522(typescript@5.7.2): + applesauce-content@0.0.0-next-20241211183908(typescript@5.7.2): dependencies: '@cashu/cashu-ts': 2.0.0-rc1 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - applesauce-core: 0.0.0-next-20241210193522(typescript@5.7.2) + applesauce-core: 0.0.0-next-20241211183908(typescript@5.7.2) mdast-util-find-and-replace: 3.0.1 nostr-tools: 2.10.4(typescript@5.7.2) remark: 15.0.1 @@ -6368,7 +6390,7 @@ snapshots: - supports-color - typescript - applesauce-core@0.0.0-next-20241210193522(typescript@5.7.2): + applesauce-core@0.0.0-next-20241211183908(typescript@5.7.2): dependencies: '@scure/base': 1.2.1 debug: 4.4.0 @@ -6382,22 +6404,22 @@ snapshots: - supports-color - typescript - applesauce-factory@0.0.0-next-20241210193522(typescript@5.7.2): + applesauce-factory@0.0.0-next-20241211183908(typescript@5.7.2): dependencies: - applesauce-content: 0.0.0-next-20241210193522(typescript@5.7.2) - applesauce-core: 0.0.0-next-20241210193522(typescript@5.7.2) + applesauce-content: 0.0.0-next-20241211183908(typescript@5.7.2) + applesauce-core: 0.0.0-next-20241211183908(typescript@5.7.2) nostr-tools: 2.10.4(typescript@5.7.2) transitivePeerDependencies: - supports-color - typescript - applesauce-lists@0.0.0-next-20241210193522(typescript@5.7.2): + applesauce-lists@0.0.0-next-20241211183908(typescript@5.7.2): dependencies: '@noble/hashes': 1.6.1 '@noble/secp256k1': 1.7.1 '@scure/base': 1.2.1 '@types/dom-serial': 1.0.6 - applesauce-core: 0.0.0-next-20241210193522(typescript@5.7.2) + applesauce-core: 0.0.0-next-20241211183908(typescript@5.7.2) debug: 4.4.0 nostr-tools: 2.10.4(typescript@5.7.2) rxjs: 7.8.1 @@ -6405,9 +6427,9 @@ snapshots: - supports-color - typescript - applesauce-net@0.0.0-next-20241210193522(typescript@5.7.2): + applesauce-net@0.0.0-next-20241211183908(typescript@5.7.2): dependencies: - applesauce-core: 0.0.0-next-20241210193522(typescript@5.7.2) + applesauce-core: 0.0.0-next-20241211183908(typescript@5.7.2) nanoid: 5.0.9 nostr-tools: 2.10.4(typescript@5.7.2) rxjs: 7.8.1 @@ -6415,11 +6437,11 @@ snapshots: - supports-color - typescript - applesauce-react@0.0.0-next-20241210193522(typescript@5.7.2): + applesauce-react@0.0.0-next-20241211183908(typescript@5.7.2): dependencies: - applesauce-content: 0.0.0-next-20241210193522(typescript@5.7.2) - applesauce-core: 0.0.0-next-20241210193522(typescript@5.7.2) - applesauce-factory: 0.0.0-next-20241210193522(typescript@5.7.2) + applesauce-content: 0.0.0-next-20241211183908(typescript@5.7.2) + applesauce-core: 0.0.0-next-20241211183908(typescript@5.7.2) + applesauce-factory: 0.0.0-next-20241211183908(typescript@5.7.2) nostr-tools: 2.10.4(typescript@5.7.2) react: 18.3.1 rxjs: 7.8.1 @@ -6427,14 +6449,14 @@ snapshots: - supports-color - typescript - applesauce-signer@0.0.0-next-20241210193522(typescript@5.7.2): + applesauce-signer@0.0.0-next-20241211183908(typescript@5.7.2): dependencies: '@noble/hashes': 1.6.1 '@noble/secp256k1': 1.7.1 '@scure/base': 1.2.1 '@types/dom-serial': 1.0.6 - applesauce-core: 0.0.0-next-20241210193522(typescript@5.7.2) - applesauce-net: 0.0.0-next-20241210193522(typescript@5.7.2) + applesauce-core: 0.0.0-next-20241211183908(typescript@5.7.2) + applesauce-net: 0.0.0-next-20241211183908(typescript@5.7.2) debug: 4.4.0 nanoid: 5.0.9 nostr-tools: 2.10.4(typescript@5.7.2) @@ -6592,6 +6614,11 @@ snapshots: get-intrinsic: 1.2.5 set-function-length: 1.2.2 + call-bound@1.0.2: + dependencies: + call-bind: 1.0.8 + get-intrinsic: 1.2.5 + callsites@3.1.0: {} camelcase@8.0.0: {} @@ -7056,7 +7083,7 @@ snapshots: safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 + string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 @@ -7452,7 +7479,7 @@ snapshots: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 internmap@2.0.3: {} @@ -7622,6 +7649,8 @@ snapshots: jsesc@3.0.2: {} + jsesc@3.1.0: {} + json-parse-even-better-errors@2.3.1: {} json-schema-library@9.3.5: @@ -8418,26 +8447,26 @@ snapshots: dependencies: dnd-core: 16.0.1 - react-dnd-multi-backend@8.0.3(dnd-core@16.0.1)(react-dnd@16.0.1(@types/react@18.3.14)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-dnd-multi-backend@8.0.3(dnd-core@16.0.1)(react-dnd@16.0.1(@types/react@18.3.16)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: dnd-core: 16.0.1 dnd-multi-backend: 8.0.3(dnd-core@16.0.1) react: 18.3.1 - react-dnd: 16.0.1(@types/react@18.3.14)(react@18.3.1) - react-dnd-preview: 8.0.3(react-dnd@16.0.1(@types/react@18.3.14)(react@18.3.1))(react@18.3.1) + react-dnd: 16.0.1(@types/react@18.3.16)(react@18.3.1) + react-dnd-preview: 8.0.3(react-dnd@16.0.1(@types/react@18.3.16)(react@18.3.1))(react@18.3.1) react-dom: 18.3.1(react@18.3.1) - react-dnd-preview@8.0.3(react-dnd@16.0.1(@types/react@18.3.14)(react@18.3.1))(react@18.3.1): + react-dnd-preview@8.0.3(react-dnd@16.0.1(@types/react@18.3.16)(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 - react-dnd: 16.0.1(@types/react@18.3.14)(react@18.3.1) + react-dnd: 16.0.1(@types/react@18.3.16)(react@18.3.1) react-dnd-touch-backend@16.0.1: dependencies: '@react-dnd/invariant': 4.0.2 dnd-core: 16.0.1 - react-dnd@16.0.1(@types/react@18.3.14)(react@18.3.1): + react-dnd@16.0.1(@types/react@18.3.16)(react@18.3.1): dependencies: '@react-dnd/invariant': 4.0.2 '@react-dnd/shallowequal': 4.0.2 @@ -8446,7 +8475,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 react-dom@18.3.1(react@18.3.1): dependencies: @@ -8461,17 +8490,17 @@ snapshots: react-fast-compare@3.2.2: {} - react-focus-lock@2.13.2(@types/react@18.3.14)(react@18.3.1): + react-focus-lock@2.13.2(@types/react@18.3.16)(react@18.3.1): dependencies: '@babel/runtime': 7.26.0 focus-lock: 1.3.5 prop-types: 15.8.1 react: 18.3.1 react-clientside-effect: 1.2.6(react@18.3.1) - use-callback-ref: 1.3.2(@types/react@18.3.14)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.14)(react@18.3.1) + use-callback-ref: 1.3.2(@types/react@18.3.16)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.16)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 react-force-graph-2d@1.26.1(react@18.3.1): dependencies: @@ -8498,10 +8527,10 @@ snapshots: jerrypick: 1.1.1 react: 18.3.1 - react-markdown@9.0.1(@types/react@18.3.14)(react@18.3.1): + react-markdown@9.0.1(@types/react@18.3.16)(react@18.3.1): dependencies: '@types/hast': 3.0.4 - '@types/react': 18.3.14 + '@types/react': 18.3.16 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.2 html-url-attributes: 3.0.1 @@ -8515,7 +8544,7 @@ snapshots: transitivePeerDependencies: - supports-color - react-mosaic-component@6.1.0(@types/react@18.3.14)(dnd-core@16.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-mosaic-component@6.1.0(@types/react@18.3.16)(dnd-core@16.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: classnames: 2.5.1 immutability-helper: 3.1.1 @@ -8523,9 +8552,9 @@ snapshots: prop-types: 15.8.1 rdndmb-html5-to-touch: 8.0.3(dnd-core@16.0.1) react: 18.3.1 - react-dnd: 16.0.1(@types/react@18.3.14)(react@18.3.1) + react-dnd: 16.0.1(@types/react@18.3.16)(react@18.3.1) react-dnd-html5-backend: 16.0.1 - react-dnd-multi-backend: 8.0.3(dnd-core@16.0.1)(react-dnd@16.0.1(@types/react@18.3.14)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-dnd-multi-backend: 8.0.3(dnd-core@16.0.1)(react-dnd@16.0.1(@types/react@18.3.16)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-dnd-touch-backend: 16.0.1 uuid: 9.0.1 transitivePeerDependencies: @@ -8541,7 +8570,7 @@ snapshots: react-qr-barcode-scanner@2.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 '@zxing/library': 0.21.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -8549,24 +8578,24 @@ snapshots: react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.6(@types/react@18.3.14)(react@18.3.1): + react-remove-scroll-bar@2.3.6(@types/react@18.3.16)(react@18.3.1): dependencies: react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.14)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.16)(react@18.3.1) tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 - react-remove-scroll@2.6.0(@types/react@18.3.14)(react@18.3.1): + react-remove-scroll@2.6.0(@types/react@18.3.16)(react@18.3.1): dependencies: react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.14)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.14)(react@18.3.1) + react-remove-scroll-bar: 2.3.6(@types/react@18.3.16)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.16)(react@18.3.1) tslib: 2.8.1 - use-callback-ref: 1.3.2(@types/react@18.3.14)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.14)(react@18.3.1) + use-callback-ref: 1.3.2(@types/react@18.3.16)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.16)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 react-router-dom@6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -8593,14 +8622,14 @@ snapshots: optionalDependencies: react-dom: 18.3.1(react@18.3.1) - react-style-singleton@2.2.1(@types/react@18.3.14)(react@18.3.1): + react-style-singleton@2.2.1(@types/react@18.3.16)(react@18.3.1): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 react-universal-interface@0.6.2(react@18.3.1)(tslib@2.8.1): dependencies: @@ -8891,15 +8920,36 @@ snapshots: '@shikijs/engine-javascript': 1.24.2 '@shikijs/engine-oniguruma': 1.24.2 '@shikijs/types': 1.24.2 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 - side-channel@1.0.6: + side-channel-list@1.0.0: dependencies: - call-bind: 1.0.8 + es-errors: 1.3.0 + object-inspect: 1.13.3 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.5 + object-inspect: 1.13.3 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.2 es-errors: 1.3.0 get-intrinsic: 1.2.5 object-inspect: 1.13.3 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 signal-exit@4.1.0: {} @@ -8969,7 +9019,7 @@ snapshots: internal-slot: 1.0.7 regexp.prototype.flags: 1.5.3 set-function-name: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 string.prototype.trim@1.2.9: dependencies: @@ -8978,9 +9028,10 @@ snapshots: es-abstract: 1.23.5 es-object-atoms: 1.0.0 - string.prototype.trimend@1.0.8: + string.prototype.trimend@1.0.9: dependencies: call-bind: 1.0.8 + call-bound: 1.0.2 define-properties: 1.2.1 es-object-atoms: 1.0.0 @@ -9071,7 +9122,7 @@ snapshots: dependencies: three: 0.170.0 - three-stdlib@2.34.0(three@0.170.0): + three-stdlib@2.34.1(three@0.170.0): dependencies: '@types/draco3d': 1.4.10 '@types/offscreencanvas': 2019.7.3 @@ -9237,20 +9288,20 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - use-callback-ref@1.3.2(@types/react@18.3.14)(react@18.3.1): + use-callback-ref@1.3.2(@types/react@18.3.16)(react@18.3.1): dependencies: react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 - use-sidecar@1.1.2(@types/react@18.3.14)(react@18.3.1): + use-sidecar@1.1.2(@types/react@18.3.16)(react@18.3.1): dependencies: detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 use-sync-external-store@1.2.2(react@18.3.1): dependencies: @@ -9508,11 +9559,11 @@ snapshots: zen-observable@0.10.0: {} - zustand@4.5.5(@types/react@18.3.14)(react@18.3.1): + zustand@4.5.5(@types/react@18.3.16)(react@18.3.1): dependencies: use-sync-external-store: 1.2.2(react@18.3.1) optionalDependencies: - '@types/react': 18.3.14 + '@types/react': 18.3.16 react: 18.3.1 zwitch@1.0.5: {} diff --git a/src/components/common-menu-items/copy-embed-code.tsx b/src/components/common-menu-items/copy-embed-code.tsx index e7f1ec58a..c4394d565 100644 --- a/src/components/common-menu-items/copy-embed-code.tsx +++ b/src/components/common-menu-items/copy-embed-code.tsx @@ -2,7 +2,7 @@ import { MenuItem } from "@chakra-ui/react"; import { NostrEvent } from "../../types/nostr-event"; import { CopyToClipboardIcon } from "../icons"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; export default function CopyEmbedCodeMenuItem({ event }: { event: NostrEvent }) { const address = getSharableEventAddress(event); diff --git a/src/components/common-menu-items/open-in-app.tsx b/src/components/common-menu-items/open-in-app.tsx index 3ef3dfb5c..2d391aa1a 100644 --- a/src/components/common-menu-items/open-in-app.tsx +++ b/src/components/common-menu-items/open-in-app.tsx @@ -4,7 +4,7 @@ import { MenuItem } from "@chakra-ui/react"; import { NostrEvent } from "../../types/nostr-event"; import { ExternalLinkIcon } from "../icons"; import { AppHandlerContext } from "../../providers/route/app-handler-provider"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; export default function OpenInAppMenuItem({ event }: { event: NostrEvent }) { const address = useMemo(() => getSharableEventAddress(event), [event]); diff --git a/src/components/common-menu-items/quote-event.tsx b/src/components/common-menu-items/quote-event.tsx index 5de3f241d..2ebe82b6a 100644 --- a/src/components/common-menu-items/quote-event.tsx +++ b/src/components/common-menu-items/quote-event.tsx @@ -7,7 +7,7 @@ import { NostrEvent } from "../../types/nostr-event"; import { QuoteEventIcon } from "../icons"; import useUserProfile from "../../hooks/use-user-profile"; import { PostModalContext } from "../../providers/route/post-modal-provider"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; export default function QuoteEventMenuItem({ event }: { event: NostrEvent }) { const toast = useToast(); diff --git a/src/components/debug-modal/event-debug-modal.tsx b/src/components/debug-modal/event-debug-modal.tsx index 5052345bd..74aafe4fa 100644 --- a/src/components/debug-modal/event-debug-modal.tsx +++ b/src/components/debug-modal/event-debug-modal.tsx @@ -18,7 +18,7 @@ import { ModalProps } from "@chakra-ui/react"; import { NostrEvent } from "../../types/nostr-event"; import RawValue from "./raw-value"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; import { CodeIcon, RelayIcon, ThreadIcon } from "../icons"; import RawJsonPage from "./pages/raw"; import PenTool01 from "../icons/pen-tool-01"; diff --git a/src/components/embed-event/event-types/embedded-badge.tsx b/src/components/embed-event/event-types/embedded-badge.tsx index 19f9642cf..33aab6b9e 100644 --- a/src/components/embed-event/event-types/embedded-badge.tsx +++ b/src/components/embed-event/event-types/embedded-badge.tsx @@ -17,7 +17,7 @@ import UserAvatarLink from "../../user/user-avatar-link"; import UserLink from "../../user/user-link"; import { NostrEvent } from "../../../types/nostr-event"; import { getBadgeDescription, getBadgeImage, getBadgeName } from "../../../helpers/nostr/badges"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; export default function EmbeddedBadge({ badge, ...props }: Omit & { badge: NostrEvent }) { const naddr = useMemo(() => getSharableEventAddress(badge), [badge]); diff --git a/src/components/embed-event/event-types/embedded-emoji-pack.tsx b/src/components/embed-event/event-types/embedded-emoji-pack.tsx index cfd07c48e..849a2161b 100644 --- a/src/components/embed-event/event-types/embedded-emoji-pack.tsx +++ b/src/components/embed-event/event-types/embedded-emoji-pack.tsx @@ -20,7 +20,7 @@ import EmojiPackFavoriteButton from "../../../views/emoji-packs/components/emoji import EmojiPackMenu from "../../../views/emoji-packs/components/emoji-pack-menu"; import { NostrEvent } from "../../../types/nostr-event"; import Timestamp from "../../timestamp"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; export default function EmbeddedEmojiPack({ pack, ...props }: Omit & { pack: NostrEvent }) { const emojis = getEmojis(pack); diff --git a/src/components/embed-event/event-types/embedded-flare-video.tsx b/src/components/embed-event/event-types/embedded-flare-video.tsx index 439aa9334..1acb9b6b3 100644 --- a/src/components/embed-event/event-types/embedded-flare-video.tsx +++ b/src/components/embed-event/event-types/embedded-flare-video.tsx @@ -7,7 +7,7 @@ import UserLink from "../../user/user-link"; import UserAvatar from "../../user/user-avatar"; import { useBreakpointValue } from "../../../providers/global/breakpoint-provider"; import { getVideoDuration, getVideoImages, getVideoSummary, getVideoTitle } from "../../../helpers/nostr/video"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; export default function EmbeddedFlareVideo({ video, ...props }: Omit & { video: NostrEvent }) { const navigate = useNavigate(); diff --git a/src/components/embed-event/event-types/embedded-goal.tsx b/src/components/embed-event/event-types/embedded-goal.tsx index 408e7bf00..2177bc632 100644 --- a/src/components/embed-event/event-types/embedded-goal.tsx +++ b/src/components/embed-event/event-types/embedded-goal.tsx @@ -9,7 +9,7 @@ import UserLink from "../../user/user-link"; import GoalProgress from "../../../views/goals/components/goal-progress"; import GoalZapButton from "../../../views/goals/components/goal-zap-button"; import GoalTopZappers from "../../../views/goals/components/goal-top-zappers"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; export type EmbeddedGoalOptions = { showActions?: boolean; diff --git a/src/components/embed-event/event-types/embedded-list.tsx b/src/components/embed-event/event-types/embedded-list.tsx index 64aa2d234..8e3ca8634 100644 --- a/src/components/embed-event/event-types/embedded-list.tsx +++ b/src/components/embed-event/event-types/embedded-list.tsx @@ -8,7 +8,7 @@ import UserLink from "../../user/user-link"; import ListFeedButton from "../../../views/lists/components/list-feed-button"; import { ListCardContent } from "../../../views/lists/components/list-card"; import { createCoordinate } from "../../../classes/batch-kind-pubkey-loader"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; export default function EmbeddedSetOrList({ list, ...props }: Omit & { list: NostrEvent }) { const link = isSpecialListKind(list.kind) ? createCoordinate(list.kind, list.pubkey) : getSharableEventAddress(list); diff --git a/src/components/embed-event/event-types/embedded-note.tsx b/src/components/embed-event/event-types/embedded-note.tsx index c418a706a..738fbab2c 100644 --- a/src/components/embed-event/event-types/embedded-note.tsx +++ b/src/components/embed-event/event-types/embedded-note.tsx @@ -14,7 +14,7 @@ import { CompactNoteContent } from "../../compact-note-content"; import { useNavigateInDrawer } from "../../../providers/drawer-sub-view-provider"; import HoverLinkOverlay from "../../hover-link-overlay"; import singleEventService from "../../../services/single-event"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; import localSettings from "../../../services/local-settings"; import useAppSettings from "../../../hooks/use-app-settings"; diff --git a/src/components/embed-event/event-types/embedded-stream-message.tsx b/src/components/embed-event/event-types/embedded-stream-message.tsx index 4eaae7c6c..129d65086 100644 --- a/src/components/embed-event/event-types/embedded-stream-message.tsx +++ b/src/components/embed-event/event-types/embedded-stream-message.tsx @@ -8,7 +8,7 @@ import UserAvatar from "../../user/user-avatar"; import ChatMessageContent from "../../../views/streams/stream/stream-chat/chat-message-content"; import useReplaceableEvent from "../../../hooks/use-replaceable-event"; import StreamStatusBadge from "../../../views/streams/components/status-badge"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; import { getStreamTitle } from "../../../helpers/nostr/stream"; export default function EmbeddedStreamMessage({ diff --git a/src/components/embed-event/event-types/embedded-torrent.tsx b/src/components/embed-event/event-types/embedded-torrent.tsx index 874d2bc0b..ba7c38e1c 100644 --- a/src/components/embed-event/event-types/embedded-torrent.tsx +++ b/src/components/embed-event/event-types/embedded-torrent.tsx @@ -26,7 +26,7 @@ import { getTorrentMagnetLink, getTorrentSize, getTorrentTitle } from "../../../ import { formatBytes } from "../../../helpers/number"; import { useNavigateInDrawer } from "../../../providers/drawer-sub-view-provider"; import HoverLinkOverlay from "../../hover-link-overlay"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; import localSettings from "../../../services/local-settings"; export default function EmbeddedTorrent({ torrent, ...props }: Omit & { torrent: NostrEvent }) { diff --git a/src/components/embed-event/event-types/embedded-unknown.tsx b/src/components/embed-event/event-types/embedded-unknown.tsx index 6cb22f0c4..d533b677b 100644 --- a/src/components/embed-event/event-types/embedded-unknown.tsx +++ b/src/components/embed-event/event-types/embedded-unknown.tsx @@ -12,7 +12,7 @@ import { renderAudioUrl } from "../../content/links/audio"; import DebugEventButton from "../../debug-modal/debug-event-button"; import DebugEventTags from "../../debug-modal/event-tags"; import { AppHandlerContext } from "../../../providers/route/app-handler-provider"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; export default function EmbeddedUnknown({ event, ...props }: Omit & { event: NostrEvent }) { const address = useMemo(() => getSharableEventAddress(event), [event]); diff --git a/src/components/embed-event/event-types/embedded-wiki-page.tsx b/src/components/embed-event/event-types/embedded-wiki-page.tsx index f2b85a9a0..4b4892f5f 100644 --- a/src/components/embed-event/event-types/embedded-wiki-page.tsx +++ b/src/components/embed-event/event-types/embedded-wiki-page.tsx @@ -21,7 +21,7 @@ import HoverLinkOverlay from "../../hover-link-overlay"; import Timestamp from "../../timestamp"; import GitBranch01 from "../../icons/git-branch-01"; import UserName from "../../user/user-name"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; export default function EmbeddedWikiPage({ page: page, ...props }: Omit & { page: NostrEvent }) { const { address } = useMemo(() => getPageForks(page), [page]); diff --git a/src/components/event-reactions/common-hooks.tsx b/src/components/event-reactions/common-hooks.tsx index 358b74131..bf55892e1 100644 --- a/src/components/event-reactions/common-hooks.tsx +++ b/src/components/event-reactions/common-hooks.tsx @@ -1,23 +1,28 @@ import { useCallback } from "react"; +import { Emoji } from "applesauce-core/helpers"; -import { ReactionGroup, draftEventReaction } from "../../helpers/nostr/reactions"; +import { ReactionGroup } from "../../helpers/nostr/reactions"; import useCurrentAccount from "../../hooks/use-current-account"; import { NostrEvent } from "../../types/nostr-event"; import { usePublishEvent } from "../../providers/global/publish-provider"; +import { useEventFactory } from "applesauce-react/hooks"; +import { useSigningContext } from "../../providers/global/signing-provider"; export function useAddReaction(event: NostrEvent, grouped: ReactionGroup[]) { const account = useCurrentAccount(); const publish = usePublishEvent(); + const factory = useEventFactory()!; + const { requestSignature } = useSigningContext(); return useCallback( - async (emoji = "+", url?: string) => { + async (emoji: string | Emoji = "+") => { const group = grouped.find((g) => g.emoji === emoji); if (account && group && group.pubkeys.includes(account?.pubkey)) return; - const draft = draftEventReaction(event, emoji, url); - - await publish("Reaction", draft); + const draft = await factory.reaction(event, emoji); + const signed = await requestSignature(draft); + await publish("Reaction", signed); }, - [grouped, account, publish], + [grouped, account, publish, event, factory, requestSignature], ); } diff --git a/src/components/event-reactions/event-reactions.tsx b/src/components/event-reactions/event-reactions.tsx index 730ae0b86..e100fb647 100644 --- a/src/components/event-reactions/event-reactions.tsx +++ b/src/components/event-reactions/event-reactions.tsx @@ -31,7 +31,11 @@ export default function EventReactionButtons({ event, max }: { event: NostrEvent isLoading={loading === group.emoji} onClick={() => { setLoading(group.emoji); - addReaction(group.emoji, group.url).finally(() => setLoading(undefined)); + if (group.url) { + addReaction({ name: group.emoji, url: group.url }).finally(() => setLoading(undefined)); + } else { + addReaction(group.emoji).finally(() => setLoading(undefined)); + } }} colorScheme={account && group.pubkeys.includes(account?.pubkey) ? "primary" : undefined} /> diff --git a/src/components/event-zap-modal/index.tsx b/src/components/event-zap-modal/index.tsx index 3d8247231..d29f9ad22 100644 --- a/src/components/event-zap-modal/index.tsx +++ b/src/components/event-zap-modal/index.tsx @@ -25,7 +25,7 @@ import signingService from "../../services/signing"; import accountService from "../../services/account"; import PayStep from "./pay-step"; import UserLink from "../user/user-link"; -import { getEventRelayHints } from "../../services/event-relay-hint"; +import { getEventRelayHints } from "../../services/relay-hints"; import { eventStore, queryStore } from "../../services/event-store"; export type PayRequest = { invoice?: string; pubkey: string; error?: any }; diff --git a/src/components/layout/ghost/timeline.tsx b/src/components/layout/ghost/timeline.tsx index c9e5a369b..be306f20a 100644 --- a/src/components/layout/ghost/timeline.tsx +++ b/src/components/layout/ghost/timeline.tsx @@ -13,7 +13,7 @@ import { getDMRecipient, getDMSender } from "../../../helpers/nostr/dms"; import UserName from "../../user/user-name"; import HoverLinkOverlay from "../../hover-link-overlay"; import useEventIntersectionRef from "../../../hooks/use-event-intersection-ref"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; const kindColors: Record = { [kinds.ShortTextNote]: "blue.500", diff --git a/src/components/lightbox-provider.tsx b/src/components/lightbox-provider.tsx index 2750e3931..2439d7674 100644 --- a/src/components/lightbox-provider.tsx +++ b/src/components/lightbox-provider.tsx @@ -33,7 +33,7 @@ declare module "yet-another-react-lightbox" { import { NostrEvent } from "../types/nostr-event"; import UserAvatarLink from "./user/user-avatar-link"; import UserLink from "./user/user-link"; -import { getSharableEventAddress } from "../services/event-relay-hint"; +import { getSharableEventAddress } from "../services/relay-hints"; type RefType = MutableRefObject; diff --git a/src/components/media-post/media-post-card.tsx b/src/components/media-post/media-post-card.tsx index db7edcd02..6a4dcd5e3 100644 --- a/src/components/media-post/media-post-card.tsx +++ b/src/components/media-post/media-post-card.tsx @@ -13,7 +13,7 @@ import RepostButton from "../note/timeline-note/components/repost-button"; import QuoteEventButton from "../note/quote-event-button"; import MediaPostSlides from "./media-slides"; import MediaPostContents from "./media-post-content"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; import { ThreadIcon } from "../icons"; import EventZapIconButton from "../zap/event-zap-icon-button"; import Timestamp from "../timestamp"; diff --git a/src/components/note/note-link.tsx b/src/components/note/note-link.tsx index 479706c3c..2db5095e5 100644 --- a/src/components/note/note-link.tsx +++ b/src/components/note/note-link.tsx @@ -4,7 +4,7 @@ import { Link as RouterLink } from "react-router-dom"; import { nip19 } from "nostr-tools"; import { truncatedId } from "../../helpers/nostr/event"; -import { getEventPointerRelayHints } from "../../services/event-relay-hint"; +import { getEventPointerRelayHints } from "../../services/relay-hints"; export type NoteLinkProps = LinkProps & { noteId: string; diff --git a/src/components/note/note-menu.tsx b/src/components/note/note-menu.tsx index b4c6a8278..740d1a937 100644 --- a/src/components/note/note-menu.tsx +++ b/src/components/note/note-menu.tsx @@ -16,7 +16,7 @@ import CopyEmbedCodeMenuItem from "../common-menu-items/copy-embed-code"; import Recording02 from "../icons/recording-02"; import { usePublishEvent } from "../../providers/global/publish-provider"; import DebugEventMenuItem from "../debug-modal/debug-event-menu-item"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; export default function NoteMenu({ event, ...props }: { event: NostrEvent } & Omit) { const translationsModal = useDisclosure(); diff --git a/src/components/note/quote-event-button.tsx b/src/components/note/quote-event-button.tsx index ee87de7e3..8a3a145f2 100644 --- a/src/components/note/quote-event-button.tsx +++ b/src/components/note/quote-event-button.tsx @@ -4,7 +4,7 @@ import { NostrEvent } from "nostr-tools"; import { QuoteEventIcon } from "../icons"; import { PostModalContext } from "../../providers/route/post-modal-provider"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; export default function QuoteEventButton({ event, diff --git a/src/components/note/timeline-note/components/repost-modal.tsx b/src/components/note/timeline-note/components/repost-modal.tsx index f5f0b6948..d34a0b862 100644 --- a/src/components/note/timeline-note/components/repost-modal.tsx +++ b/src/components/note/timeline-note/components/repost-modal.tsx @@ -17,7 +17,7 @@ import dayjs from "dayjs"; import type { AddressPointer } from "nostr-tools/nip19"; import { ChevronDownIcon, ChevronUpIcon, ExternalLinkIcon } from "../../../icons"; -import { getAddressPointerRelayHints, getEventRelayHint } from "../../../../services/event-relay-hint"; +import { getAddressPointerRelayHints, getEventRelayHint } from "../../../../services/relay-hints"; import { usePublishEvent } from "../../../../providers/global/publish-provider"; import useCurrentAccount from "../../../../hooks/use-current-account"; import useUserCommunitiesList from "../../../../hooks/use-user-communities-list"; diff --git a/src/components/note/timeline-note/index.tsx b/src/components/note/timeline-note/index.tsx index 923960c34..3abd7680e 100644 --- a/src/components/note/timeline-note/index.tsx +++ b/src/components/note/timeline-note/index.tsx @@ -44,7 +44,7 @@ import POWIcon from "../../pow/pow-icon"; import ReplyContext from "./components/reply-context"; import ZapBubbles from "./components/zap-bubbles"; import useEventIntersectionRef from "../../../hooks/use-event-intersection-ref"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; import localSettings from "../../../services/local-settings"; import NotePublishedUsing from "../note-published-using"; import useAppSettings from "../../../hooks/use-app-settings"; diff --git a/src/helpers/nostr/post.ts b/src/helpers/nostr/post.ts index 7ed03bdf1..44e23f92c 100644 --- a/src/helpers/nostr/post.ts +++ b/src/helpers/nostr/post.ts @@ -10,7 +10,7 @@ import { Emoji } from "../../providers/global/emoji-provider"; import { EventSplit } from "./zaps"; import { unique } from "../array"; -import { getEventPointerRelayHint } from "../../services/event-relay-hint"; +import { getEventPointerRelayHint } from "../../services/relay-hints"; import { eventStore } from "../../services/event-store"; function addTag(tags: Tag[], tag: Tag, overwrite = false) { @@ -86,7 +86,7 @@ export function ensureNotifyPubkeys(draft: EventTemplate, pubkeys: string[]) { } export function correctContentMentions(content: string) { - return content.replaceAll(/(\s|^)(?:@)?(npub1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{58})/gi, "$1nostr:$2"); + return content.replaceAll(/(?<=^|\s)(?:@)?(npub1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{58})/gi, "nostr:$1"); } export function getPubkeysMentionedInContent(content: string, direct = false) { @@ -196,30 +196,10 @@ export function setZapSplit(draft: EventTemplate, split: EventSplit) { return updatedDraft; } -export function addPubkeyRelayHints(draft: EventTemplate) { - return { - ...draft, - tags: draft.tags.map((t) => { - if (isPTag(t) && !t[2]) { - const mailboxes = eventStore.getReplaceable(kinds.RelayList, t[1]); - const inbox = mailboxes && getInboxes(mailboxes); - if (inbox && inbox.length > 0) { - const newTag = [...t]; - // TODO: Pick the best mailbox for the user - newTag[2] = inbox[0]; - return newTag; - } else return t; - } - return t; - }), - }; -} - /** @deprecated use event factory instead */ export function finalizeNote(draft: EventTemplate) { let updated: EventTemplate = { ...draft, tags: Array.from(draft.tags) }; updated.content = correctContentMentions(updated.content); - updated = addPubkeyRelayHints(updated); updated = ensureTagContentMentions(updated); return updated; } diff --git a/src/helpers/nostr/reactions.ts b/src/helpers/nostr/reactions.ts index a668ffce8..e93d39bd2 100644 --- a/src/helpers/nostr/reactions.ts +++ b/src/helpers/nostr/reactions.ts @@ -1,6 +1,7 @@ import { kinds } from "nostr-tools"; -import { DraftNostrEvent, NostrEvent, Tag } from "../../types/nostr-event"; import dayjs from "dayjs"; + +import { DraftNostrEvent, NostrEvent, Tag } from "../../types/nostr-event"; import { getEventCoordinate, isReplaceable } from "./event"; export type ReactionGroup = { emoji: string; url?: string; name?: string; count: number; pubkeys: string[] }; diff --git a/src/hooks/use-shareable-event-address.ts b/src/hooks/use-shareable-event-address.ts index 4d062ed2d..b4f12c680 100644 --- a/src/hooks/use-shareable-event-address.ts +++ b/src/hooks/use-shareable-event-address.ts @@ -1,6 +1,6 @@ import { useMemo } from "react"; import { NostrEvent } from "../types/nostr-event"; -import { getSharableEventAddress } from "../services/event-relay-hint"; +import { getSharableEventAddress } from "../services/relay-hints"; import useUserMailboxes from "./use-user-mailboxes"; export default function useShareableEventAddress(event: NostrEvent, overrideRelays?: string[]) { diff --git a/src/providers/global/publish-provider.tsx b/src/providers/global/publish-provider.tsx index 3586adc6f..825e266ba 100644 --- a/src/providers/global/publish-provider.tsx +++ b/src/providers/global/publish-provider.tsx @@ -2,6 +2,7 @@ import { PropsWithChildren, createContext, useCallback, useContext, useMemo, use import { useToast } from "@chakra-ui/react"; import { EventTemplate, NostrEvent, UnsignedEvent, kinds } from "nostr-tools"; import { includeClientTag } from "applesauce-factory/operations"; +import { addSeenRelay } from "applesauce-core/helpers"; import { useSigningContext } from "./signing-provider"; import { DraftNostrEvent } from "../../types/nostr-event"; @@ -15,10 +16,8 @@ import deleteEventService from "../../services/delete-events"; import localSettings from "../../services/local-settings"; import { NEVER_ATTACH_CLIENT_TAG, NIP_89_CLIENT_APP } from "../../const"; import { eventStore } from "../../services/event-store"; -import { addPubkeyRelayHints } from "../../helpers/nostr/post"; import useCurrentAccount from "../../hooks/use-current-account"; import { useUserOutbox } from "../../hooks/use-user-mailboxes"; -import { addSeenRelay } from "applesauce-core/helpers"; type PublishContextType = { log: PublishAction[]; @@ -73,9 +72,6 @@ export default function PublishProvider({ children }: PropsWithChildren) { async (event: EventTemplate | NostrEvent) => { let draft = cloneEvent(event.kind, event); - // add pubkey relay hints - draft = addPubkeyRelayHints(draft); - // add client tag if ( localSettings.addClientTag.value && diff --git a/src/services/event-factory.ts b/src/services/event-factory.ts index 741ea0d1e..acceaa5e7 100644 --- a/src/services/event-factory.ts +++ b/src/services/event-factory.ts @@ -1,7 +1,7 @@ import { BehaviorSubject, Observable } from "rxjs"; import { EventFactory } from "applesauce-factory"; import { Account } from "../classes/accounts/account"; -import { getEventRelayHint, getPubkeyRelayHint } from "./event-relay-hint"; +import { getEventRelayHint, getPubkeyRelayHint } from "./relay-hints"; import { NIP_89_CLIENT_APP } from "../const"; import accountService from "./account"; diff --git a/src/services/event-relay-hint.ts b/src/services/relay-hints.ts similarity index 100% rename from src/services/event-relay-hint.ts rename to src/services/relay-hints.ts diff --git a/src/views/emoji-packs/components/create-modal.tsx b/src/views/emoji-packs/components/create-modal.tsx index 25d3889c5..63ecc0e48 100644 --- a/src/views/emoji-packs/components/create-modal.tsx +++ b/src/views/emoji-packs/components/create-modal.tsx @@ -19,7 +19,7 @@ import dayjs from "dayjs"; import { DraftNostrEvent } from "../../../types/nostr-event"; import { usePublishEvent } from "../../../providers/global/publish-provider"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; export default function EmojiPackCreateModal({ onClose, ...props }: Omit) { const publish = usePublishEvent(); diff --git a/src/views/lists/components/list-card.tsx b/src/views/lists/components/list-card.tsx index 499859614..5d3ca14ec 100644 --- a/src/views/lists/components/list-card.tsx +++ b/src/views/lists/components/list-card.tsx @@ -38,7 +38,7 @@ import File02 from "../../../components/icons/file-02"; import SimpleLikeButton from "../../../components/event-reactions/simple-like-button"; import { createCoordinate } from "../../../classes/batch-kind-pubkey-loader"; import useEventIntersectionRef from "../../../hooks/use-event-intersection-ref"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; export function ListCardContent({ list, ...props }: Omit & { list: NostrEvent }) { const people = getPubkeysFromList(list); diff --git a/src/views/lists/index.tsx b/src/views/lists/index.tsx index 01bf52a06..d248a70ca 100644 --- a/src/views/lists/index.tsx +++ b/src/views/lists/index.tsx @@ -9,7 +9,7 @@ import useUserSets from "../../hooks/use-user-lists"; import NewSetModal from "./components/new-set-modal"; import useFavoriteLists from "../../hooks/use-favorite-lists"; import VerticalPageLayout from "../../components/vertical-page-layout"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; import Plus from "../../components/icons/plus"; function ListsHomePage() { diff --git a/src/views/streams/components/stream-goal.tsx b/src/views/streams/components/stream-goal.tsx index f1f3a21c4..87b0e8f96 100644 --- a/src/views/streams/components/stream-goal.tsx +++ b/src/views/streams/components/stream-goal.tsx @@ -7,7 +7,7 @@ import GoalProgress from "../../goals/components/goal-progress"; import GoalTopZappers from "../../goals/components/goal-top-zappers"; import GoalZapButton from "../../goals/components/goal-zap-button"; import useStreamGoal from "../../../hooks/use-stream-goal"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; export default function StreamGoal({ stream, ...props }: Omit & { stream: NostrEvent }) { const goal = useStreamGoal(stream); diff --git a/src/views/thread/components/thread-post.tsx b/src/views/thread/components/thread-post.tsx index 21864375f..27f706235 100644 --- a/src/views/thread/components/thread-post.tsx +++ b/src/views/thread/components/thread-post.tsx @@ -30,7 +30,7 @@ import NoteReactions from "../../../components/note/timeline-note/components/not import ZapBubbles from "../../../components/note/timeline-note/components/zap-bubbles"; import DetailsTabs from "./details-tabs"; import useEventIntersectionRef from "../../../hooks/use-event-intersection-ref"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; import NotePublishedUsing from "../../../components/note/note-published-using"; export type ThreadItemProps = { diff --git a/src/views/thread/index.tsx b/src/views/thread/index.tsx index 025966c49..42630283e 100644 --- a/src/views/thread/index.tsx +++ b/src/views/thread/index.tsx @@ -18,7 +18,7 @@ import UserName from "../../components/user/user-name"; import UserAvatarLink from "../../components/user/user-avatar-link"; import { ReplyIcon } from "../../components/icons"; import TimelineNote from "../../components/note/timeline-note"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; function CollapsedReplies({ pointer, diff --git a/src/views/user/about/user-profile-badges.tsx b/src/views/user/about/user-profile-badges.tsx index 7e59d1ea7..77662dab0 100644 --- a/src/views/user/about/user-profile-badges.tsx +++ b/src/views/user/about/user-profile-badges.tsx @@ -26,7 +26,7 @@ import { NostrEvent } from "../../../types/nostr-event"; import UserAvatarLink from "../../../components/user/user-avatar-link"; import UserLink from "../../../components/user/user-link"; import Timestamp from "../../../components/timestamp"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; function Badge({ pubkey, badge, award }: { pubkey: string; badge: NostrEvent; award: NostrEvent }) { const naddr = getSharableEventAddress(badge); diff --git a/src/views/user/about/user-recent-events.tsx b/src/views/user/about/user-recent-events.tsx index bc910d98c..d1d8b76a4 100644 --- a/src/views/user/about/user-recent-events.tsx +++ b/src/views/user/about/user-recent-events.tsx @@ -15,7 +15,7 @@ import { RepostIcon, } from "../../../components/icons"; import AnnotationQuestion from "../../../components/icons/annotation-question"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; import { npubEncode } from "nostr-tools/nip19"; import useTimelineLoader from "../../../hooks/use-timeline-loader"; import { useUserOutbox } from "../../../hooks/use-user-mailboxes"; diff --git a/src/views/wiki/components/wiki-page-result.tsx b/src/views/wiki/components/wiki-page-result.tsx index 797c02d75..04b4fe430 100644 --- a/src/views/wiki/components/wiki-page-result.tsx +++ b/src/views/wiki/components/wiki-page-result.tsx @@ -10,7 +10,7 @@ import FileSearch01 from "../../../components/icons/file-search-01"; import GitBranch01 from "../../../components/icons/git-branch-01"; import UserName from "../../../components/user/user-name"; import UserAvatar from "../../../components/user/user-avatar"; -import { getSharableEventAddress } from "../../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../../services/relay-hints"; export default function WikiPageResult({ page, compare }: { page: NostrEvent; compare?: NostrEvent }) { const topic = getPageTopic(page); diff --git a/src/views/wiki/create.tsx b/src/views/wiki/create.tsx index 2789cfb25..0804c1dcb 100644 --- a/src/views/wiki/create.tsx +++ b/src/views/wiki/create.tsx @@ -32,7 +32,7 @@ import UserName from "../../components/user/user-name"; import { getEventCoordinate } from "../../helpers/nostr/event"; import FormatButton from "./components/format-toolbar"; import dictionaryService from "../../services/dictionary"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; export default function CreateWikiPageView() { const toast = useToast(); diff --git a/src/views/wiki/edit.tsx b/src/views/wiki/edit.tsx index 039c4d91c..5ebdafe52 100644 --- a/src/views/wiki/edit.tsx +++ b/src/views/wiki/edit.tsx @@ -26,7 +26,7 @@ import { ErrorBoundary } from "../../components/error-boundary"; import { cloneEvent, replaceOrAddSimpleTag } from "../../helpers/nostr/event"; import FormatButton from "./components/format-toolbar"; import dictionaryService from "../../services/dictionary"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; function EditWikiPagePage({ page }: { page: NostrEvent }) { const toast = useToast(); diff --git a/src/views/wiki/page.tsx b/src/views/wiki/page.tsx index 7314ca04d..02ebf8d1e 100644 --- a/src/views/wiki/page.tsx +++ b/src/views/wiki/page.tsx @@ -38,7 +38,7 @@ import useCurrentAccount from "../../hooks/use-current-account"; import dictionaryService from "../../services/dictionary"; import { useReadRelays } from "../../hooks/use-client-relays"; import { useWebOfTrust } from "../../providers/global/web-of-trust-provider"; -import { getSharableEventAddress } from "../../services/event-relay-hint"; +import { getSharableEventAddress } from "../../services/relay-hints"; function ForkAlert({ page, address }: { page: NostrEvent; address: nip19.AddressPointer }) { const topic = getPageTopic(page);