@txnlab/use-wallet-react 4.0.0-beta.6 → 4.0.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/dist/index.cjs +20 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +20 -13
- package/dist/index.js.map +1 -1
- package/package.json +12 -12
package/dist/index.cjs
CHANGED
|
@@ -40,6 +40,7 @@ var import_react_store = require("@tanstack/react-store");
|
|
|
40
40
|
var import_algosdk = __toESM(require("algosdk"), 1);
|
|
41
41
|
var React = __toESM(require("react"), 1);
|
|
42
42
|
__reExport(index_exports, require("@txnlab/use-wallet"), module.exports);
|
|
43
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
43
44
|
var WalletContext = React.createContext(void 0);
|
|
44
45
|
var WalletProvider = ({ manager, children }) => {
|
|
45
46
|
const [algodClient, setAlgodClient] = React.useState(manager.algodClient);
|
|
@@ -53,7 +54,7 @@ var WalletProvider = ({ manager, children }) => {
|
|
|
53
54
|
resumedRef.current = true;
|
|
54
55
|
}
|
|
55
56
|
}, [manager]);
|
|
56
|
-
return /* @__PURE__ */
|
|
57
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WalletContext.Provider, { value: { manager, algodClient, setAlgodClient }, children });
|
|
57
58
|
};
|
|
58
59
|
var useNetwork = () => {
|
|
59
60
|
const context = React.useContext(WalletContext);
|
|
@@ -119,8 +120,8 @@ var useWallet = () => {
|
|
|
119
120
|
const isReady = managerStatus === "ready";
|
|
120
121
|
const walletStateMap = (0, import_react_store.useStore)(manager.store, (state) => state.wallets);
|
|
121
122
|
const activeWalletId = (0, import_react_store.useStore)(manager.store, (state) => state.activeWallet);
|
|
122
|
-
const
|
|
123
|
-
|
|
123
|
+
const transformToWallet = React.useCallback(
|
|
124
|
+
(wallet) => {
|
|
124
125
|
const walletState = walletStateMap[wallet.id];
|
|
125
126
|
return {
|
|
126
127
|
id: wallet.id,
|
|
@@ -134,25 +135,31 @@ var useWallet = () => {
|
|
|
134
135
|
setActive: () => wallet.setActive(),
|
|
135
136
|
setActiveAccount: (addr) => wallet.setActiveAccount(addr)
|
|
136
137
|
};
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
138
|
+
},
|
|
139
|
+
[walletStateMap, activeWalletId]
|
|
140
|
+
);
|
|
141
|
+
const wallets = React.useMemo(() => {
|
|
142
|
+
return [...manager.wallets.values()].map(transformToWallet);
|
|
143
|
+
}, [manager, transformToWallet]);
|
|
144
|
+
const activeBaseWallet = activeWalletId ? manager.getWallet(activeWalletId) || null : null;
|
|
145
|
+
const activeWallet = React.useMemo(() => {
|
|
146
|
+
return activeBaseWallet ? transformToWallet(activeBaseWallet) : null;
|
|
147
|
+
}, [activeBaseWallet, transformToWallet]);
|
|
148
|
+
const activeWalletAccounts = activeWallet?.accounts ?? null;
|
|
142
149
|
const activeWalletAddresses = activeWalletAccounts?.map((account) => account.address) ?? null;
|
|
143
|
-
const activeAccount =
|
|
150
|
+
const activeAccount = activeWallet?.activeAccount ?? null;
|
|
144
151
|
const activeAddress = activeAccount?.address ?? null;
|
|
145
152
|
const signTransactions = (txnGroup, indexesToSign) => {
|
|
146
|
-
if (!
|
|
153
|
+
if (!activeBaseWallet) {
|
|
147
154
|
throw new Error("No active wallet");
|
|
148
155
|
}
|
|
149
|
-
return
|
|
156
|
+
return activeBaseWallet.signTransactions(txnGroup, indexesToSign);
|
|
150
157
|
};
|
|
151
158
|
const transactionSigner = (txnGroup, indexesToSign) => {
|
|
152
|
-
if (!
|
|
159
|
+
if (!activeBaseWallet) {
|
|
153
160
|
throw new Error("No active wallet");
|
|
154
161
|
}
|
|
155
|
-
return
|
|
162
|
+
return activeBaseWallet.transactionSigner(txnGroup, indexesToSign);
|
|
156
163
|
};
|
|
157
164
|
return {
|
|
158
165
|
wallets,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx"],"sourcesContent":["import { useStore } from '@tanstack/react-store'\nimport {\n NetworkId,\n WalletManager,\n type AlgodConfig,\n type WalletAccount,\n type WalletMetadata\n} from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport * as React from 'react'\n\nexport * from '@txnlab/use-wallet'\n\ninterface IWalletContext {\n manager: WalletManager\n algodClient: algosdk.Algodv2\n setAlgodClient: React.Dispatch<React.SetStateAction<algosdk.Algodv2>>\n}\n\nconst WalletContext = React.createContext<IWalletContext | undefined>(undefined)\n\ninterface WalletProviderProps {\n manager: WalletManager\n children: React.ReactNode\n}\n\nexport const WalletProvider = ({ manager, children }: WalletProviderProps): JSX.Element => {\n const [algodClient, setAlgodClient] = React.useState(manager.algodClient)\n\n React.useEffect(() => {\n manager.algodClient = algodClient\n }, [algodClient, manager])\n\n const resumedRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!resumedRef.current) {\n manager.resumeSessions()\n resumedRef.current = true\n }\n }, [manager])\n\n return (\n <WalletContext.Provider value={{ manager, algodClient, setAlgodClient }}>\n {children}\n </WalletContext.Provider>\n )\n}\n\nexport const useNetwork = () => {\n const context = React.useContext(WalletContext)\n\n if (!context) {\n throw new Error('useNetwork must be used within the WalletProvider')\n }\n\n const { manager, setAlgodClient } = context\n\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n\n const setActiveNetwork = async (networkId: NetworkId | string): Promise<void> => {\n if (networkId === activeNetwork) {\n return\n }\n\n if (!manager.networkConfig[networkId]) {\n throw new Error(`Network \"${networkId}\" not found in network configuration`)\n }\n\n console.info(`[React] Creating new Algodv2 client...`)\n\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n\n manager.store.setState((state) => ({\n ...state,\n activeNetwork: networkId\n }))\n\n console.info(`[React] ✅ Active network set to ${networkId}.`)\n }\n\n const updateAlgodConfig = (networkId: string, config: Partial<AlgodConfig>): void => {\n manager.updateAlgodConfig(networkId, config)\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork) {\n console.info(`[React] Creating new Algodv2 client...`)\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n }\n }\n\n const resetNetworkConfig = (networkId: string): void => {\n manager.resetNetworkConfig(networkId)\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork) {\n console.info(`[React] Creating new Algodv2 client...`)\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n }\n }\n\n return {\n activeNetwork,\n networkConfig: manager.networkConfig,\n activeNetworkConfig: manager.activeNetworkConfig,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n\nexport interface Wallet {\n id: string\n metadata: WalletMetadata\n accounts: WalletAccount[]\n activeAccount: WalletAccount | null\n isConnected: boolean\n isActive: boolean\n connect: (args?: Record<string, any>) => Promise<WalletAccount[]>\n disconnect: () => Promise<void>\n setActive: () => void\n setActiveAccount: (address: string) => void\n}\n\nexport const useWallet = () => {\n const context = React.useContext(WalletContext)\n\n if (!context) {\n throw new Error('useWallet must be used within the WalletProvider')\n }\n\n const { manager, algodClient, setAlgodClient } = context\n\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = managerStatus === 'ready'\n\n const walletStateMap = useStore(manager.store, (state) => state.wallets)\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n\n const wallets = React.useMemo(() => {\n return [...manager.wallets.values()].map((wallet): Wallet => {\n const walletState = walletStateMap[wallet.id]\n\n return {\n id: wallet.id,\n metadata: wallet.metadata,\n accounts: walletState?.accounts ?? [],\n activeAccount: walletState?.activeAccount ?? null,\n isConnected: !!walletState,\n isActive: wallet.id === activeWalletId,\n connect: (args) => wallet.connect(args),\n disconnect: () => wallet.disconnect(),\n setActive: () => wallet.setActive(),\n setActiveAccount: (addr) => wallet.setActiveAccount(addr)\n }\n })\n }, [manager, walletStateMap, activeWalletId])\n\n const activeWallet = activeWalletId ? manager.getWallet(activeWalletId) || null : null\n const activeWalletState = activeWalletId ? walletStateMap[activeWalletId] || null : null\n\n const activeWalletAccounts = activeWalletState?.accounts ?? null\n const activeWalletAddresses = activeWalletAccounts?.map((account) => account.address) ?? null\n const activeAccount = activeWalletState?.activeAccount ?? null\n const activeAddress = activeAccount?.address ?? null\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n if (!activeWallet) {\n throw new Error('No active wallet')\n }\n return activeWallet.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n if (!activeWallet) {\n throw new Error('No active wallet')\n }\n return activeWallet.transactionSigner(txnGroup, indexesToSign)\n }\n\n return {\n wallets,\n isReady,\n algodClient,\n setAlgodClient,\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signTransactions,\n transactionSigner\n }\n}\n"],"mappings":"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","names":["algosdk"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx"],"sourcesContent":["import { useStore } from '@tanstack/react-store'\nimport {\n NetworkId,\n WalletId,\n WalletManager,\n type AlgodConfig,\n type BaseWallet,\n type WalletAccount,\n type WalletMetadata\n} from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport * as React from 'react'\n\nexport * from '@txnlab/use-wallet'\n\ninterface IWalletContext {\n manager: WalletManager\n algodClient: algosdk.Algodv2\n setAlgodClient: React.Dispatch<React.SetStateAction<algosdk.Algodv2>>\n}\n\nconst WalletContext = React.createContext<IWalletContext | undefined>(undefined)\n\ninterface WalletProviderProps {\n manager: WalletManager\n children: React.ReactNode\n}\n\nexport const WalletProvider = ({ manager, children }: WalletProviderProps): JSX.Element => {\n const [algodClient, setAlgodClient] = React.useState(manager.algodClient)\n\n React.useEffect(() => {\n manager.algodClient = algodClient\n }, [algodClient, manager])\n\n const resumedRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!resumedRef.current) {\n manager.resumeSessions()\n resumedRef.current = true\n }\n }, [manager])\n\n return (\n <WalletContext.Provider value={{ manager, algodClient, setAlgodClient }}>\n {children}\n </WalletContext.Provider>\n )\n}\n\nexport const useNetwork = () => {\n const context = React.useContext(WalletContext)\n\n if (!context) {\n throw new Error('useNetwork must be used within the WalletProvider')\n }\n\n const { manager, setAlgodClient } = context\n\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n\n const setActiveNetwork = async (networkId: NetworkId | string): Promise<void> => {\n if (networkId === activeNetwork) {\n return\n }\n\n if (!manager.networkConfig[networkId]) {\n throw new Error(`Network \"${networkId}\" not found in network configuration`)\n }\n\n console.info(`[React] Creating new Algodv2 client...`)\n\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n\n manager.store.setState((state) => ({\n ...state,\n activeNetwork: networkId\n }))\n\n console.info(`[React] ✅ Active network set to ${networkId}.`)\n }\n\n const updateAlgodConfig = (networkId: string, config: Partial<AlgodConfig>): void => {\n manager.updateAlgodConfig(networkId, config)\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork) {\n console.info(`[React] Creating new Algodv2 client...`)\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n }\n }\n\n const resetNetworkConfig = (networkId: string): void => {\n manager.resetNetworkConfig(networkId)\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork) {\n console.info(`[React] Creating new Algodv2 client...`)\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n }\n }\n\n return {\n activeNetwork,\n networkConfig: manager.networkConfig,\n activeNetworkConfig: manager.activeNetworkConfig,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n\nexport interface Wallet {\n id: WalletId\n metadata: WalletMetadata\n accounts: WalletAccount[]\n activeAccount: WalletAccount | null\n isConnected: boolean\n isActive: boolean\n connect: (args?: Record<string, any>) => Promise<WalletAccount[]>\n disconnect: () => Promise<void>\n setActive: () => void\n setActiveAccount: (address: string) => void\n}\n\nexport const useWallet = () => {\n const context = React.useContext(WalletContext)\n\n if (!context) {\n throw new Error('useWallet must be used within the WalletProvider')\n }\n\n const { manager, algodClient, setAlgodClient } = context\n\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = managerStatus === 'ready'\n\n const walletStateMap = useStore(manager.store, (state) => state.wallets)\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n\n const transformToWallet = React.useCallback(\n (wallet: BaseWallet): Wallet => {\n const walletState = walletStateMap[wallet.id]\n return {\n id: wallet.id,\n metadata: wallet.metadata,\n accounts: walletState?.accounts ?? [],\n activeAccount: walletState?.activeAccount ?? null,\n isConnected: !!walletState,\n isActive: wallet.id === activeWalletId,\n connect: (args) => wallet.connect(args),\n disconnect: () => wallet.disconnect(),\n setActive: () => wallet.setActive(),\n setActiveAccount: (addr) => wallet.setActiveAccount(addr)\n }\n },\n [walletStateMap, activeWalletId]\n )\n\n const wallets = React.useMemo(() => {\n return [...manager.wallets.values()].map(transformToWallet)\n }, [manager, transformToWallet])\n\n const activeBaseWallet = activeWalletId ? manager.getWallet(activeWalletId) || null : null\n const activeWallet = React.useMemo(() => {\n return activeBaseWallet ? transformToWallet(activeBaseWallet) : null\n }, [activeBaseWallet, transformToWallet])\n\n const activeWalletAccounts = activeWallet?.accounts ?? null\n const activeWalletAddresses = activeWalletAccounts?.map((account) => account.address) ?? null\n const activeAccount = activeWallet?.activeAccount ?? null\n const activeAddress = activeAccount?.address ?? null\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n if (!activeBaseWallet) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n if (!activeBaseWallet) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.transactionSigner(txnGroup, indexesToSign)\n }\n\n return {\n wallets,\n isReady,\n algodClient,\n setAlgodClient,\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signTransactions,\n transactionSigner\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAyB;AAUzB,qBAAoB;AACpB,YAAuB;AAEvB,0BAAc,+BAbd;AA6CI;AAxBJ,IAAM,gBAAsB,oBAA0C,MAAS;AAOxE,IAAM,iBAAiB,CAAC,EAAE,SAAS,SAAS,MAAwC;AACzF,QAAM,CAAC,aAAa,cAAc,IAAU,eAAS,QAAQ,WAAW;AAExE,EAAM,gBAAU,MAAM;AACpB,YAAQ,cAAc;AAAA,EACxB,GAAG,CAAC,aAAa,OAAO,CAAC;AAEzB,QAAM,aAAmB,aAAO,KAAK;AAErC,EAAM,gBAAU,MAAM;AACpB,QAAI,CAAC,WAAW,SAAS;AACvB,cAAQ,eAAe;AACvB,iBAAW,UAAU;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,SACE,4CAAC,cAAc,UAAd,EAAuB,OAAO,EAAE,SAAS,aAAa,eAAe,GACnE,UACH;AAEJ;AAEO,IAAM,aAAa,MAAM;AAC9B,QAAM,UAAgB,iBAAW,aAAa;AAE9C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAEA,QAAM,EAAE,SAAS,eAAe,IAAI;AAEpC,QAAM,oBAAgB,6BAAS,QAAQ,OAAO,CAAC,UAAU,MAAM,aAAa;AAE5E,QAAM,mBAAmB,OAAO,cAAiD;AAC/E,QAAI,cAAc,eAAe;AAC/B;AAAA,IACF;AAEA,QAAI,CAAC,QAAQ,cAAc,SAAS,GAAG;AACrC,YAAM,IAAI,MAAM,YAAY,SAAS,sCAAsC;AAAA,IAC7E;AAEA,YAAQ,KAAK,wCAAwC;AAErD,UAAM,EAAE,MAAM,IAAI,QAAQ,cAAc,SAAS;AACjD,UAAM,EAAE,QAAQ,IAAI,YAAY,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI;AAC5D,UAAM,YAAY,IAAI,eAAAA,QAAQ,QAAQ,OAAO,YAAY,MAAM,OAAO;AACtE,mBAAe,SAAS;AAExB,YAAQ,MAAM,SAAS,CAAC,WAAW;AAAA,MACjC,GAAG;AAAA,MACH,eAAe;AAAA,IACjB,EAAE;AAEF,YAAQ,KAAK,wCAAmC,SAAS,GAAG;AAAA,EAC9D;AAEA,QAAM,oBAAoB,CAAC,WAAmB,WAAuC;AACnF,YAAQ,kBAAkB,WAAW,MAAM;AAG3C,QAAI,cAAc,eAAe;AAC/B,cAAQ,KAAK,wCAAwC;AACrD,YAAM,EAAE,MAAM,IAAI,QAAQ,cAAc,SAAS;AACjD,YAAM,EAAE,QAAQ,IAAI,YAAY,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI;AAC5D,YAAM,YAAY,IAAI,eAAAA,QAAQ,QAAQ,OAAO,YAAY,MAAM,OAAO;AACtE,qBAAe,SAAS;AAAA,IAC1B;AAAA,EACF;AAEA,QAAM,qBAAqB,CAAC,cAA4B;AACtD,YAAQ,mBAAmB,SAAS;AAGpC,QAAI,cAAc,eAAe;AAC/B,cAAQ,KAAK,wCAAwC;AACrD,YAAM,EAAE,MAAM,IAAI,QAAQ,cAAc,SAAS;AACjD,YAAM,EAAE,QAAQ,IAAI,YAAY,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI;AAC5D,YAAM,YAAY,IAAI,eAAAA,QAAQ,QAAQ,OAAO,YAAY,MAAM,OAAO;AACtE,qBAAe,SAAS;AAAA,IAC1B;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,eAAe,QAAQ;AAAA,IACvB,qBAAqB,QAAQ;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAeO,IAAM,YAAY,MAAM;AAC7B,QAAM,UAAgB,iBAAW,aAAa;AAE9C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AAEA,QAAM,EAAE,SAAS,aAAa,eAAe,IAAI;AAEjD,QAAM,oBAAgB,6BAAS,QAAQ,OAAO,CAAC,UAAU,MAAM,aAAa;AAC5E,QAAM,UAAU,kBAAkB;AAElC,QAAM,qBAAiB,6BAAS,QAAQ,OAAO,CAAC,UAAU,MAAM,OAAO;AACvE,QAAM,qBAAiB,6BAAS,QAAQ,OAAO,CAAC,UAAU,MAAM,YAAY;AAE5E,QAAM,oBAA0B;AAAA,IAC9B,CAAC,WAA+B;AAC9B,YAAM,cAAc,eAAe,OAAO,EAAE;AAC5C,aAAO;AAAA,QACL,IAAI,OAAO;AAAA,QACX,UAAU,OAAO;AAAA,QACjB,UAAU,aAAa,YAAY,CAAC;AAAA,QACpC,eAAe,aAAa,iBAAiB;AAAA,QAC7C,aAAa,CAAC,CAAC;AAAA,QACf,UAAU,OAAO,OAAO;AAAA,QACxB,SAAS,CAAC,SAAS,OAAO,QAAQ,IAAI;AAAA,QACtC,YAAY,MAAM,OAAO,WAAW;AAAA,QACpC,WAAW,MAAM,OAAO,UAAU;AAAA,QAClC,kBAAkB,CAAC,SAAS,OAAO,iBAAiB,IAAI;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,cAAc;AAAA,EACjC;AAEA,QAAM,UAAgB,cAAQ,MAAM;AAClC,WAAO,CAAC,GAAG,QAAQ,QAAQ,OAAO,CAAC,EAAE,IAAI,iBAAiB;AAAA,EAC5D,GAAG,CAAC,SAAS,iBAAiB,CAAC;AAE/B,QAAM,mBAAmB,iBAAiB,QAAQ,UAAU,cAAc,KAAK,OAAO;AACtF,QAAM,eAAqB,cAAQ,MAAM;AACvC,WAAO,mBAAmB,kBAAkB,gBAAgB,IAAI;AAAA,EAClE,GAAG,CAAC,kBAAkB,iBAAiB,CAAC;AAExC,QAAM,uBAAuB,cAAc,YAAY;AACvD,QAAM,wBAAwB,sBAAsB,IAAI,CAAC,YAAY,QAAQ,OAAO,KAAK;AACzF,QAAM,gBAAgB,cAAc,iBAAiB;AACrD,QAAM,gBAAgB,eAAe,WAAW;AAEhD,QAAM,mBAAmB,CACvB,UACA,kBACmC;AACnC,QAAI,CAAC,kBAAkB;AACrB,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AACA,WAAO,iBAAiB,iBAAiB,UAAU,aAAa;AAAA,EAClE;AAEA,QAAM,oBAAoB,CACxB,UACA,kBAC0B;AAC1B,QAAI,CAAC,kBAAkB;AACrB,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AACA,WAAO,iBAAiB,kBAAkB,UAAU,aAAa;AAAA,EACnE;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":["algosdk"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _txnlab_use_wallet from '@txnlab/use-wallet';
|
|
2
|
-
import { NetworkId, AlgodConfig, WalletMetadata, WalletAccount
|
|
2
|
+
import { WalletManager, NetworkId, AlgodConfig, WalletId, WalletMetadata, WalletAccount } from '@txnlab/use-wallet';
|
|
3
3
|
export * from '@txnlab/use-wallet';
|
|
4
4
|
import algosdk from 'algosdk';
|
|
5
5
|
import * as React from 'react';
|
|
@@ -18,7 +18,7 @@ declare const useNetwork: () => {
|
|
|
18
18
|
resetNetworkConfig: (networkId: string) => void;
|
|
19
19
|
};
|
|
20
20
|
interface Wallet {
|
|
21
|
-
id:
|
|
21
|
+
id: WalletId;
|
|
22
22
|
metadata: WalletMetadata;
|
|
23
23
|
accounts: WalletAccount[];
|
|
24
24
|
activeAccount: WalletAccount | null;
|
|
@@ -34,7 +34,7 @@ declare const useWallet: () => {
|
|
|
34
34
|
isReady: boolean;
|
|
35
35
|
algodClient: algosdk.Algodv2;
|
|
36
36
|
setAlgodClient: React.Dispatch<React.SetStateAction<algosdk.Algodv2>>;
|
|
37
|
-
activeWallet:
|
|
37
|
+
activeWallet: Wallet | null;
|
|
38
38
|
activeWalletAccounts: WalletAccount[] | null;
|
|
39
39
|
activeWalletAddresses: string[] | null;
|
|
40
40
|
activeAccount: WalletAccount | null;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _txnlab_use_wallet from '@txnlab/use-wallet';
|
|
2
|
-
import { NetworkId, AlgodConfig, WalletMetadata, WalletAccount
|
|
2
|
+
import { WalletManager, NetworkId, AlgodConfig, WalletId, WalletMetadata, WalletAccount } from '@txnlab/use-wallet';
|
|
3
3
|
export * from '@txnlab/use-wallet';
|
|
4
4
|
import algosdk from 'algosdk';
|
|
5
5
|
import * as React from 'react';
|
|
@@ -18,7 +18,7 @@ declare const useNetwork: () => {
|
|
|
18
18
|
resetNetworkConfig: (networkId: string) => void;
|
|
19
19
|
};
|
|
20
20
|
interface Wallet {
|
|
21
|
-
id:
|
|
21
|
+
id: WalletId;
|
|
22
22
|
metadata: WalletMetadata;
|
|
23
23
|
accounts: WalletAccount[];
|
|
24
24
|
activeAccount: WalletAccount | null;
|
|
@@ -34,7 +34,7 @@ declare const useWallet: () => {
|
|
|
34
34
|
isReady: boolean;
|
|
35
35
|
algodClient: algosdk.Algodv2;
|
|
36
36
|
setAlgodClient: React.Dispatch<React.SetStateAction<algosdk.Algodv2>>;
|
|
37
|
-
activeWallet:
|
|
37
|
+
activeWallet: Wallet | null;
|
|
38
38
|
activeWalletAccounts: WalletAccount[] | null;
|
|
39
39
|
activeWalletAddresses: string[] | null;
|
|
40
40
|
activeAccount: WalletAccount | null;
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { useStore } from "@tanstack/react-store";
|
|
|
3
3
|
import algosdk from "algosdk";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
export * from "@txnlab/use-wallet";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
7
|
var WalletContext = React.createContext(void 0);
|
|
7
8
|
var WalletProvider = ({ manager, children }) => {
|
|
8
9
|
const [algodClient, setAlgodClient] = React.useState(manager.algodClient);
|
|
@@ -16,7 +17,7 @@ var WalletProvider = ({ manager, children }) => {
|
|
|
16
17
|
resumedRef.current = true;
|
|
17
18
|
}
|
|
18
19
|
}, [manager]);
|
|
19
|
-
return /* @__PURE__ */
|
|
20
|
+
return /* @__PURE__ */ jsx(WalletContext.Provider, { value: { manager, algodClient, setAlgodClient }, children });
|
|
20
21
|
};
|
|
21
22
|
var useNetwork = () => {
|
|
22
23
|
const context = React.useContext(WalletContext);
|
|
@@ -82,8 +83,8 @@ var useWallet = () => {
|
|
|
82
83
|
const isReady = managerStatus === "ready";
|
|
83
84
|
const walletStateMap = useStore(manager.store, (state) => state.wallets);
|
|
84
85
|
const activeWalletId = useStore(manager.store, (state) => state.activeWallet);
|
|
85
|
-
const
|
|
86
|
-
|
|
86
|
+
const transformToWallet = React.useCallback(
|
|
87
|
+
(wallet) => {
|
|
87
88
|
const walletState = walletStateMap[wallet.id];
|
|
88
89
|
return {
|
|
89
90
|
id: wallet.id,
|
|
@@ -97,25 +98,31 @@ var useWallet = () => {
|
|
|
97
98
|
setActive: () => wallet.setActive(),
|
|
98
99
|
setActiveAccount: (addr) => wallet.setActiveAccount(addr)
|
|
99
100
|
};
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
|
|
101
|
+
},
|
|
102
|
+
[walletStateMap, activeWalletId]
|
|
103
|
+
);
|
|
104
|
+
const wallets = React.useMemo(() => {
|
|
105
|
+
return [...manager.wallets.values()].map(transformToWallet);
|
|
106
|
+
}, [manager, transformToWallet]);
|
|
107
|
+
const activeBaseWallet = activeWalletId ? manager.getWallet(activeWalletId) || null : null;
|
|
108
|
+
const activeWallet = React.useMemo(() => {
|
|
109
|
+
return activeBaseWallet ? transformToWallet(activeBaseWallet) : null;
|
|
110
|
+
}, [activeBaseWallet, transformToWallet]);
|
|
111
|
+
const activeWalletAccounts = activeWallet?.accounts ?? null;
|
|
105
112
|
const activeWalletAddresses = activeWalletAccounts?.map((account) => account.address) ?? null;
|
|
106
|
-
const activeAccount =
|
|
113
|
+
const activeAccount = activeWallet?.activeAccount ?? null;
|
|
107
114
|
const activeAddress = activeAccount?.address ?? null;
|
|
108
115
|
const signTransactions = (txnGroup, indexesToSign) => {
|
|
109
|
-
if (!
|
|
116
|
+
if (!activeBaseWallet) {
|
|
110
117
|
throw new Error("No active wallet");
|
|
111
118
|
}
|
|
112
|
-
return
|
|
119
|
+
return activeBaseWallet.signTransactions(txnGroup, indexesToSign);
|
|
113
120
|
};
|
|
114
121
|
const transactionSigner = (txnGroup, indexesToSign) => {
|
|
115
|
-
if (!
|
|
122
|
+
if (!activeBaseWallet) {
|
|
116
123
|
throw new Error("No active wallet");
|
|
117
124
|
}
|
|
118
|
-
return
|
|
125
|
+
return activeBaseWallet.transactionSigner(txnGroup, indexesToSign);
|
|
119
126
|
};
|
|
120
127
|
return {
|
|
121
128
|
wallets,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx"],"sourcesContent":["import { useStore } from '@tanstack/react-store'\nimport {\n NetworkId,\n WalletManager,\n type AlgodConfig,\n type WalletAccount,\n type WalletMetadata\n} from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport * as React from 'react'\n\nexport * from '@txnlab/use-wallet'\n\ninterface IWalletContext {\n manager: WalletManager\n algodClient: algosdk.Algodv2\n setAlgodClient: React.Dispatch<React.SetStateAction<algosdk.Algodv2>>\n}\n\nconst WalletContext = React.createContext<IWalletContext | undefined>(undefined)\n\ninterface WalletProviderProps {\n manager: WalletManager\n children: React.ReactNode\n}\n\nexport const WalletProvider = ({ manager, children }: WalletProviderProps): JSX.Element => {\n const [algodClient, setAlgodClient] = React.useState(manager.algodClient)\n\n React.useEffect(() => {\n manager.algodClient = algodClient\n }, [algodClient, manager])\n\n const resumedRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!resumedRef.current) {\n manager.resumeSessions()\n resumedRef.current = true\n }\n }, [manager])\n\n return (\n <WalletContext.Provider value={{ manager, algodClient, setAlgodClient }}>\n {children}\n </WalletContext.Provider>\n )\n}\n\nexport const useNetwork = () => {\n const context = React.useContext(WalletContext)\n\n if (!context) {\n throw new Error('useNetwork must be used within the WalletProvider')\n }\n\n const { manager, setAlgodClient } = context\n\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n\n const setActiveNetwork = async (networkId: NetworkId | string): Promise<void> => {\n if (networkId === activeNetwork) {\n return\n }\n\n if (!manager.networkConfig[networkId]) {\n throw new Error(`Network \"${networkId}\" not found in network configuration`)\n }\n\n console.info(`[React] Creating new Algodv2 client...`)\n\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n\n manager.store.setState((state) => ({\n ...state,\n activeNetwork: networkId\n }))\n\n console.info(`[React] ✅ Active network set to ${networkId}.`)\n }\n\n const updateAlgodConfig = (networkId: string, config: Partial<AlgodConfig>): void => {\n manager.updateAlgodConfig(networkId, config)\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork) {\n console.info(`[React] Creating new Algodv2 client...`)\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n }\n }\n\n const resetNetworkConfig = (networkId: string): void => {\n manager.resetNetworkConfig(networkId)\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork) {\n console.info(`[React] Creating new Algodv2 client...`)\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n }\n }\n\n return {\n activeNetwork,\n networkConfig: manager.networkConfig,\n activeNetworkConfig: manager.activeNetworkConfig,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n\nexport interface Wallet {\n id: string\n metadata: WalletMetadata\n accounts: WalletAccount[]\n activeAccount: WalletAccount | null\n isConnected: boolean\n isActive: boolean\n connect: (args?: Record<string, any>) => Promise<WalletAccount[]>\n disconnect: () => Promise<void>\n setActive: () => void\n setActiveAccount: (address: string) => void\n}\n\nexport const useWallet = () => {\n const context = React.useContext(WalletContext)\n\n if (!context) {\n throw new Error('useWallet must be used within the WalletProvider')\n }\n\n const { manager, algodClient, setAlgodClient } = context\n\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = managerStatus === 'ready'\n\n const walletStateMap = useStore(manager.store, (state) => state.wallets)\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n\n const wallets = React.useMemo(() => {\n return [...manager.wallets.values()].map((wallet): Wallet => {\n const walletState = walletStateMap[wallet.id]\n\n return {\n id: wallet.id,\n metadata: wallet.metadata,\n accounts: walletState?.accounts ?? [],\n activeAccount: walletState?.activeAccount ?? null,\n isConnected: !!walletState,\n isActive: wallet.id === activeWalletId,\n connect: (args) => wallet.connect(args),\n disconnect: () => wallet.disconnect(),\n setActive: () => wallet.setActive(),\n setActiveAccount: (addr) => wallet.setActiveAccount(addr)\n }\n })\n }, [manager, walletStateMap, activeWalletId])\n\n const activeWallet = activeWalletId ? manager.getWallet(activeWalletId) || null : null\n const activeWalletState = activeWalletId ? walletStateMap[activeWalletId] || null : null\n\n const activeWalletAccounts = activeWalletState?.accounts ?? null\n const activeWalletAddresses = activeWalletAccounts?.map((account) => account.address) ?? null\n const activeAccount = activeWalletState?.activeAccount ?? null\n const activeAddress = activeAccount?.address ?? null\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n if (!activeWallet) {\n throw new Error('No active wallet')\n }\n return activeWallet.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n if (!activeWallet) {\n throw new Error('No active wallet')\n }\n return activeWallet.transactionSigner(txnGroup, indexesToSign)\n }\n\n return {\n wallets,\n isReady,\n algodClient,\n setAlgodClient,\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signTransactions,\n transactionSigner\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx"],"sourcesContent":["import { useStore } from '@tanstack/react-store'\nimport {\n NetworkId,\n WalletId,\n WalletManager,\n type AlgodConfig,\n type BaseWallet,\n type WalletAccount,\n type WalletMetadata\n} from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport * as React from 'react'\n\nexport * from '@txnlab/use-wallet'\n\ninterface IWalletContext {\n manager: WalletManager\n algodClient: algosdk.Algodv2\n setAlgodClient: React.Dispatch<React.SetStateAction<algosdk.Algodv2>>\n}\n\nconst WalletContext = React.createContext<IWalletContext | undefined>(undefined)\n\ninterface WalletProviderProps {\n manager: WalletManager\n children: React.ReactNode\n}\n\nexport const WalletProvider = ({ manager, children }: WalletProviderProps): JSX.Element => {\n const [algodClient, setAlgodClient] = React.useState(manager.algodClient)\n\n React.useEffect(() => {\n manager.algodClient = algodClient\n }, [algodClient, manager])\n\n const resumedRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!resumedRef.current) {\n manager.resumeSessions()\n resumedRef.current = true\n }\n }, [manager])\n\n return (\n <WalletContext.Provider value={{ manager, algodClient, setAlgodClient }}>\n {children}\n </WalletContext.Provider>\n )\n}\n\nexport const useNetwork = () => {\n const context = React.useContext(WalletContext)\n\n if (!context) {\n throw new Error('useNetwork must be used within the WalletProvider')\n }\n\n const { manager, setAlgodClient } = context\n\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n\n const setActiveNetwork = async (networkId: NetworkId | string): Promise<void> => {\n if (networkId === activeNetwork) {\n return\n }\n\n if (!manager.networkConfig[networkId]) {\n throw new Error(`Network \"${networkId}\" not found in network configuration`)\n }\n\n console.info(`[React] Creating new Algodv2 client...`)\n\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n\n manager.store.setState((state) => ({\n ...state,\n activeNetwork: networkId\n }))\n\n console.info(`[React] ✅ Active network set to ${networkId}.`)\n }\n\n const updateAlgodConfig = (networkId: string, config: Partial<AlgodConfig>): void => {\n manager.updateAlgodConfig(networkId, config)\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork) {\n console.info(`[React] Creating new Algodv2 client...`)\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n }\n }\n\n const resetNetworkConfig = (networkId: string): void => {\n manager.resetNetworkConfig(networkId)\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork) {\n console.info(`[React] Creating new Algodv2 client...`)\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n }\n }\n\n return {\n activeNetwork,\n networkConfig: manager.networkConfig,\n activeNetworkConfig: manager.activeNetworkConfig,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n\nexport interface Wallet {\n id: WalletId\n metadata: WalletMetadata\n accounts: WalletAccount[]\n activeAccount: WalletAccount | null\n isConnected: boolean\n isActive: boolean\n connect: (args?: Record<string, any>) => Promise<WalletAccount[]>\n disconnect: () => Promise<void>\n setActive: () => void\n setActiveAccount: (address: string) => void\n}\n\nexport const useWallet = () => {\n const context = React.useContext(WalletContext)\n\n if (!context) {\n throw new Error('useWallet must be used within the WalletProvider')\n }\n\n const { manager, algodClient, setAlgodClient } = context\n\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = managerStatus === 'ready'\n\n const walletStateMap = useStore(manager.store, (state) => state.wallets)\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n\n const transformToWallet = React.useCallback(\n (wallet: BaseWallet): Wallet => {\n const walletState = walletStateMap[wallet.id]\n return {\n id: wallet.id,\n metadata: wallet.metadata,\n accounts: walletState?.accounts ?? [],\n activeAccount: walletState?.activeAccount ?? null,\n isConnected: !!walletState,\n isActive: wallet.id === activeWalletId,\n connect: (args) => wallet.connect(args),\n disconnect: () => wallet.disconnect(),\n setActive: () => wallet.setActive(),\n setActiveAccount: (addr) => wallet.setActiveAccount(addr)\n }\n },\n [walletStateMap, activeWalletId]\n )\n\n const wallets = React.useMemo(() => {\n return [...manager.wallets.values()].map(transformToWallet)\n }, [manager, transformToWallet])\n\n const activeBaseWallet = activeWalletId ? manager.getWallet(activeWalletId) || null : null\n const activeWallet = React.useMemo(() => {\n return activeBaseWallet ? transformToWallet(activeBaseWallet) : null\n }, [activeBaseWallet, transformToWallet])\n\n const activeWalletAccounts = activeWallet?.accounts ?? null\n const activeWalletAddresses = activeWalletAccounts?.map((account) => account.address) ?? null\n const activeAccount = activeWallet?.activeAccount ?? null\n const activeAddress = activeAccount?.address ?? null\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n if (!activeBaseWallet) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n if (!activeBaseWallet) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.transactionSigner(txnGroup, indexesToSign)\n }\n\n return {\n wallets,\n isReady,\n algodClient,\n setAlgodClient,\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signTransactions,\n transactionSigner\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@txnlab/use-wallet-react",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "React library for integrating Algorand wallets into decentralized applications",
|
|
5
5
|
"author": "Doug Richar <drichar@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -31,28 +31,28 @@
|
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@tanstack/react-store": "0.7.0",
|
|
34
|
-
"@txnlab/use-wallet": "4.0.
|
|
34
|
+
"@txnlab/use-wallet": "4.0.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@types/react": "18.3.
|
|
38
|
-
"algosdk": "3.
|
|
39
|
-
"jsdom": "
|
|
37
|
+
"@types/react": "18.3.20",
|
|
38
|
+
"algosdk": "3.2.0",
|
|
39
|
+
"jsdom": "26.0.0",
|
|
40
40
|
"react": "18.3.1",
|
|
41
41
|
"react-dom": "18.3.1",
|
|
42
|
-
"tsup": "8.
|
|
43
|
-
"typescript": "5.
|
|
42
|
+
"tsup": "8.4.0",
|
|
43
|
+
"typescript": "5.8.2"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"@blockshake/defly-connect": "^1.2.1",
|
|
47
47
|
"@magic-ext/algorand": "^23.20.0",
|
|
48
48
|
"@walletconnect/modal": "^2.7.0",
|
|
49
49
|
"@perawallet/connect": "^1.4.1",
|
|
50
|
-
"@walletconnect/sign-client": "^2.
|
|
50
|
+
"@walletconnect/sign-client": "^2.19.2",
|
|
51
51
|
"algosdk": "^3.0.0",
|
|
52
|
-
"lute-connect": "^1.
|
|
53
|
-
"magic-sdk": "^28.21.
|
|
54
|
-
"react": "^17.0.0 || ^18.0.0",
|
|
55
|
-
"react-dom": "^17.0.0 || ^18.0.0"
|
|
52
|
+
"lute-connect": "^1.5.1",
|
|
53
|
+
"magic-sdk": "^28.21.1",
|
|
54
|
+
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
55
|
+
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
|
56
56
|
},
|
|
57
57
|
"peerDependenciesMeta": {
|
|
58
58
|
"@blockshake/defly-connect": {
|