@tuwaio/satellite-react 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -93,7 +93,7 @@ Connect a wallet with `useSatelliteConnectStore((state) => state.connect)`. Read
93
93
 
94
94
  The provider's store saves the last connection and the recently connected wallets to `localStorage`, and removes the impersonated address, through `@tuwaio/orbit-core`. The keys, their content and when they change are listed on the [`@tuwaio/satellite-core`](https://satellite.docs.tuwa.io/packages/satellite-core) page. The store state itself is not persisted: server rendering and the first client render start with no connection, and `initializeAutoConnect` restores it after mount (it waits 300 ms and disconnects the wallets of every adapter first). Read `isAutoConnectFinished` from the store before treating a missing connection as a disconnect.
95
95
 
96
- `EVMConnectorsWatcher` hydrates a wagmi config created with `ssr: true` (unless `WagmiProvider` does): wagmi reads its saved state from the `storage` of the config (`localStorage` by default) and the watcher clears the saved wagmi connections.
96
+ `EVMConnectorsWatcher` hydrates a wagmi config created with `ssr: true` (unless `WagmiProvider` does): wagmi reads its saved state from the `storage` of the config (`localStorage` by default) and the watcher clears the saved wagmi connections. To keep nothing of wagmi in the browser, create the config with `storage: createStorage({ storage: noopStorage })` from `@wagmi/core`; with `storage: null` wagmi cannot hydrate the config, and the watcher only adds the installed wallets found through EIP-6963.
97
97
 
98
98
  ---
99
99
 
@@ -1 +1 @@
1
- 'use strict';var chunkLSWAATDN_cjs=require('../chunk-LSWAATDN.cjs'),chunkHEG6FP5Z_cjs=require('../chunk-HEG6FP5Z.cjs'),core=require('@wagmi/core'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var d=new WeakSet;function g(e){react.useEffect(()=>{let{ssr:o,store:c}=e._internal,{persist:t}=c;if(!o||!t||t.hasHydrated()||d.has(e))return;let n=false,i=t.onHydrate(()=>{n=true;}),s=setTimeout(()=>{i(),!(n||t.hasHydrated()||d.has(e))&&(d.add(e),core.hydrate(e,{reconnectOnMount:false}).onMount().catch(l=>console.warn("Failed to hydrate the wagmi config:",l)));},0);return ()=>{clearTimeout(s),i();}},[e]);}function A({createWatcher:e,wagmiConfig:o,siwx:c,siwe:t}){let n=chunkHEG6FP5Z_cjs.b(r=>r.activeConnection),i=chunkHEG6FP5Z_cjs.b(r=>r.disconnect),s=chunkHEG6FP5Z_cjs.b(r=>r.connectionError),l=chunkHEG6FP5Z_cjs.b(r=>r.updateActiveConnection),p=react.useContext(chunkHEG6FP5Z_cjs.a),C=chunkLSWAATDN_cjs.a(c),f=t!==void 0,h=t?.enabled,S=t?.isSignedIn,m=t?.isRejected,E=react.useMemo(()=>f?{enabled:h,isSignedIn:S,isRejected:m}:void 0,[f,h,S,m]);return react.useEffect(()=>e({wagmiConfig:o,siwx:C,siwe:E},{disconnect:i,updateActiveConnection:l,getState:()=>p?.getState()??{activeConnection:n,connectionError:s}}),[e,p,o,C,E,n?.connectorType,s,i,l]),null}function R(e){let[o,c]=react.useState(null);return g(e.wagmiConfig),react.useEffect(()=>{let t=true;return import('@tuwaio/satellite-evm').then(n=>{t&&c(()=>n.createEVMConnectionsWatcher);}).catch(n=>console.warn("Failed to load EVM watcher:",n)),()=>{t=false;}},[]),o?jsxRuntime.jsx(A,{createWatcher:o,...e}):null}exports.EVMConnectorsWatcher=R;
1
+ 'use strict';var chunkLSWAATDN_cjs=require('../chunk-LSWAATDN.cjs'),chunkHEG6FP5Z_cjs=require('../chunk-HEG6FP5Z.cjs'),core=require('@wagmi/core'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var d=new WeakSet;function v(e){let{mipd:r,connectors:i}=e._internal;r&&i.setState(t=>{let o=new Set(t.flatMap(n=>[n.id,...n.rdns===void 0?[]:[n.rdns].flat()])),s=r.getProviders().filter(n=>!o.has(n.info.rdns)).map(n=>i.setup(i.providerDetailToConnector(n)));return [...t,...s]});}function A(e){react.useEffect(()=>{let{ssr:r,store:i}=e._internal;if(!r||d.has(e))return;let{persist:t}=i;if(!t){let c=setTimeout(()=>{d.has(e)||(d.add(e),v(e));},0);return ()=>clearTimeout(c)}if(t.hasHydrated())return;let o=false,s=t.onHydrate(()=>{o=true;}),n=setTimeout(()=>{s(),!(o||t.hasHydrated()||d.has(e))&&(d.add(e),core.hydrate(e,{reconnectOnMount:false}).onMount().catch(c=>console.warn("Failed to hydrate the wagmi config:",c)));},0);return ()=>{clearTimeout(n),s();}},[e]);}function I({createWatcher:e,wagmiConfig:r,siwx:i,siwe:t}){let o=chunkHEG6FP5Z_cjs.b(a=>a.activeConnection),s=chunkHEG6FP5Z_cjs.b(a=>a.disconnect),n=chunkHEG6FP5Z_cjs.b(a=>a.connectionError),c=chunkHEG6FP5Z_cjs.b(a=>a.updateActiveConnection),f=react.useContext(chunkHEG6FP5Z_cjs.a),p=chunkLSWAATDN_cjs.a(i),h=t!==void 0,C=t?.enabled,S=t?.isSignedIn,m=t?.isRejected,E=react.useMemo(()=>h?{enabled:C,isSignedIn:S,isRejected:m}:void 0,[h,C,S,m]);return react.useEffect(()=>e({wagmiConfig:r,siwx:p,siwe:E},{disconnect:s,updateActiveConnection:c,getState:()=>f?.getState()??{activeConnection:o,connectionError:n}}),[e,f,r,p,E,o?.connectorType,n,s,c]),null}function O(e){let[r,i]=react.useState(null);return A(e.wagmiConfig),react.useEffect(()=>{let t=true;return import('@tuwaio/satellite-evm').then(o=>{t&&i(()=>o.createEVMConnectionsWatcher);}).catch(o=>console.warn("Failed to load EVM watcher:",o)),()=>{t=false;}},[]),r?jsxRuntime.jsx(I,{createWatcher:r,...e}):null}exports.EVMConnectorsWatcher=O;
@@ -48,7 +48,9 @@ interface EVMConnectorsWatcherProps {
48
48
  * around the app), the watcher calls `hydrate(wagmiConfig, { reconnectOnMount: false }).onMount()` from `@wagmi/core`
49
49
  * once per config. It reads the saved wagmi state from the `storage` of the config (`localStorage` by default), adds
50
50
  * the EIP-6963 wallets and clears the saved wagmi connections; the last wallet is reconnected by
51
- * `SatelliteConnectProvider`, not by wagmi. If the hydration fails, a warning is logged.
51
+ * `SatelliteConnectProvider`, not by wagmi. If the hydration fails, a warning is logged. A config created with
52
+ * `storage: null` keeps nothing in the browser and cannot be hydrated by wagmi: the watcher only adds its EIP-6963
53
+ * wallets, at the same moment.
52
54
  *
53
55
  * @param props - The component props. See {@link EVMConnectorsWatcherProps}.
54
56
  * @returns `null`; the component renders nothing.
@@ -48,7 +48,9 @@ interface EVMConnectorsWatcherProps {
48
48
  * around the app), the watcher calls `hydrate(wagmiConfig, { reconnectOnMount: false }).onMount()` from `@wagmi/core`
49
49
  * once per config. It reads the saved wagmi state from the `storage` of the config (`localStorage` by default), adds
50
50
  * the EIP-6963 wallets and clears the saved wagmi connections; the last wallet is reconnected by
51
- * `SatelliteConnectProvider`, not by wagmi. If the hydration fails, a warning is logged.
51
+ * `SatelliteConnectProvider`, not by wagmi. If the hydration fails, a warning is logged. A config created with
52
+ * `storage: null` keeps nothing in the browser and cannot be hydrated by wagmi: the watcher only adds its EIP-6963
53
+ * wallets, at the same moment.
52
54
  *
53
55
  * @param props - The component props. See {@link EVMConnectorsWatcherProps}.
54
56
  * @returns `null`; the component renders nothing.
package/dist/evm/index.js CHANGED
@@ -1 +1 @@
1
- import {a as a$1}from'../chunk-FBHCKH6M.js';import {b,a}from'../chunk-4A4PSLAK.js';import {hydrate}from'@wagmi/core';import {useState,useEffect,useContext,useMemo}from'react';import {jsx}from'react/jsx-runtime';var d=new WeakSet;function A(e){useEffect(()=>{let{ssr:o,store:c}=e._internal,{persist:t}=c;if(!o||!t||t.hasHydrated()||d.has(e))return;let n=false,i=t.onHydrate(()=>{n=true;}),s=setTimeout(()=>{i(),!(n||t.hasHydrated()||d.has(e))&&(d.add(e),hydrate(e,{reconnectOnMount:false}).onMount().catch(l=>console.warn("Failed to hydrate the wagmi config:",l)));},0);return ()=>{clearTimeout(s),i();}},[e]);}function v({createWatcher:e,wagmiConfig:o,siwx:c,siwe:t}){let n=b(r=>r.activeConnection),i=b(r=>r.disconnect),s=b(r=>r.connectionError),l=b(r=>r.updateActiveConnection),p=useContext(a),C=a$1(c),f=t!==void 0,h=t?.enabled,S=t?.isSignedIn,m=t?.isRejected,E=useMemo(()=>f?{enabled:h,isSignedIn:S,isRejected:m}:void 0,[f,h,S,m]);return useEffect(()=>e({wagmiConfig:o,siwx:C,siwe:E},{disconnect:i,updateActiveConnection:l,getState:()=>p?.getState()??{activeConnection:n,connectionError:s}}),[e,p,o,C,E,n?.connectorType,s,i,l]),null}function j(e){let[o,c]=useState(null);return A(e.wagmiConfig),useEffect(()=>{let t=true;return import('@tuwaio/satellite-evm').then(n=>{t&&c(()=>n.createEVMConnectionsWatcher);}).catch(n=>console.warn("Failed to load EVM watcher:",n)),()=>{t=false;}},[]),o?jsx(v,{createWatcher:o,...e}):null}export{j as EVMConnectorsWatcher};
1
+ import {a as a$1}from'../chunk-FBHCKH6M.js';import {b,a}from'../chunk-4A4PSLAK.js';import {hydrate}from'@wagmi/core';import {useState,useEffect,useContext,useMemo}from'react';import {jsx}from'react/jsx-runtime';var d=new WeakSet;function A(e){let{mipd:r,connectors:i}=e._internal;r&&i.setState(t=>{let o=new Set(t.flatMap(n=>[n.id,...n.rdns===void 0?[]:[n.rdns].flat()])),s=r.getProviders().filter(n=>!o.has(n.info.rdns)).map(n=>i.setup(i.providerDetailToConnector(n)));return [...t,...s]});}function I(e){useEffect(()=>{let{ssr:r,store:i}=e._internal;if(!r||d.has(e))return;let{persist:t}=i;if(!t){let c=setTimeout(()=>{d.has(e)||(d.add(e),A(e));},0);return ()=>clearTimeout(c)}if(t.hasHydrated())return;let o=false,s=t.onHydrate(()=>{o=true;}),n=setTimeout(()=>{s(),!(o||t.hasHydrated()||d.has(e))&&(d.add(e),hydrate(e,{reconnectOnMount:false}).onMount().catch(c=>console.warn("Failed to hydrate the wagmi config:",c)));},0);return ()=>{clearTimeout(n),s();}},[e]);}function g({createWatcher:e,wagmiConfig:r,siwx:i,siwe:t}){let o=b(a=>a.activeConnection),s=b(a=>a.disconnect),n=b(a=>a.connectionError),c=b(a=>a.updateActiveConnection),f=useContext(a),p=a$1(i),h=t!==void 0,C=t?.enabled,S=t?.isSignedIn,m=t?.isRejected,E=useMemo(()=>h?{enabled:C,isSignedIn:S,isRejected:m}:void 0,[h,C,S,m]);return useEffect(()=>e({wagmiConfig:r,siwx:p,siwe:E},{disconnect:s,updateActiveConnection:c,getState:()=>f?.getState()??{activeConnection:o,connectionError:n}}),[e,f,r,p,E,o?.connectorType,n,s,c]),null}function R(e){let[r,i]=useState(null);return I(e.wagmiConfig),useEffect(()=>{let t=true;return import('@tuwaio/satellite-evm').then(o=>{t&&i(()=>o.createEVMConnectionsWatcher);}).catch(o=>console.warn("Failed to load EVM watcher:",o)),()=>{t=false;}},[]),r?jsx(g,{createWatcher:r,...e}):null}export{R as EVMConnectorsWatcher};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tuwaio/satellite-react",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "private": false,
5
5
  "author": "Oleksandr Tkach",
6
6
  "license": "Apache-2.0",
@@ -94,7 +94,7 @@
94
94
  "@tuwaio/orbit-core": "^0.5.1",
95
95
  "@tuwaio/satellite-core": "^0.9.0",
96
96
  "@tuwaio/satellite-evm": "^0.9.0",
97
- "@tuwaio/satellite-solana": "^0.9.0",
97
+ "@tuwaio/satellite-solana": "^0.9.1",
98
98
  "@types/react": "^19.3.0",
99
99
  "@wagmi/core": "^3.6.5",
100
100
  "@wallet-standard/react": "^1.0.3",