@txnlab/use-wallet-svelte 4.6.0 → 5.0.0-rc.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.d.ts +57 -53
- package/dist/index.js +135 -161
- package/dist/index.js.map +1 -1
- package/package.json +20 -49
- package/dist/index.cjs +0 -210
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -62
package/dist/index.d.ts
CHANGED
|
@@ -1,62 +1,66 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import algosdk from "algosdk";
|
|
2
|
+
import * as _txnlab_use_wallet0 from "@txnlab/use-wallet";
|
|
3
|
+
import { AlgodConfig, NetworkId, SignDataResponse, SignMetadata, WalletAccount, WalletKey, WalletManager, WalletMetadata } from "@txnlab/use-wallet";
|
|
4
|
+
export * from "@txnlab/use-wallet";
|
|
5
5
|
|
|
6
|
+
//#region src/index.d.ts
|
|
6
7
|
declare const useWalletContext: (manager: WalletManager) => void;
|
|
7
8
|
declare const useWalletManager: () => WalletManager;
|
|
8
9
|
declare const useNetwork: () => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
activeNetwork: {
|
|
11
|
+
readonly current: string;
|
|
12
|
+
};
|
|
13
|
+
networkConfig: Record<string, _txnlab_use_wallet0.NetworkConfig>;
|
|
14
|
+
activeNetworkConfig: {
|
|
15
|
+
readonly current: _txnlab_use_wallet0.NetworkConfig;
|
|
16
|
+
};
|
|
17
|
+
setActiveNetwork: (networkId: NetworkId | string) => Promise<void>;
|
|
18
|
+
updateAlgodConfig: (networkId: string, config: Partial<AlgodConfig>) => void;
|
|
19
|
+
resetNetworkConfig: (networkId: string) => void;
|
|
19
20
|
};
|
|
20
21
|
interface Wallet {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
setActiveAccount: (address: string) => void;
|
|
22
|
+
id: string;
|
|
23
|
+
walletKey: WalletKey;
|
|
24
|
+
metadata: WalletMetadata;
|
|
25
|
+
accounts: {
|
|
26
|
+
current: WalletAccount[] | undefined;
|
|
27
|
+
};
|
|
28
|
+
isConnected: () => boolean;
|
|
29
|
+
isActive: () => boolean;
|
|
30
|
+
canSignData: boolean;
|
|
31
|
+
canUsePrivateKey: boolean;
|
|
32
|
+
connect: (args?: Record<string, any>) => Promise<WalletAccount[]>;
|
|
33
|
+
disconnect: () => Promise<void>;
|
|
34
|
+
setActive: () => void;
|
|
35
|
+
setActiveAccount: (address: string) => void;
|
|
36
36
|
}
|
|
37
37
|
declare const useWallet: () => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
38
|
+
wallets: Wallet[];
|
|
39
|
+
availableWallets: {
|
|
40
|
+
readonly current: Wallet[];
|
|
41
|
+
};
|
|
42
|
+
isReady: () => boolean;
|
|
43
|
+
algodClient: {
|
|
44
|
+
readonly current: algosdk.Algodv2;
|
|
45
|
+
};
|
|
46
|
+
activeWallet: () => Wallet | undefined;
|
|
47
|
+
activeWalletAccounts: {
|
|
48
|
+
readonly current: WalletAccount[] | undefined;
|
|
49
|
+
};
|
|
50
|
+
activeWalletAddresses: {
|
|
51
|
+
readonly current: string[] | undefined;
|
|
52
|
+
};
|
|
53
|
+
activeAccount: {
|
|
54
|
+
readonly current: WalletAccount | null | undefined;
|
|
55
|
+
};
|
|
56
|
+
activeAddress: {
|
|
57
|
+
readonly current: string | undefined;
|
|
58
|
+
};
|
|
59
|
+
signData: (data: string, metadata: SignMetadata) => Promise<SignDataResponse>;
|
|
60
|
+
withPrivateKey: <T>(callback: (secretKey: Uint8Array) => Promise<T>) => Promise<T>;
|
|
61
|
+
signTransactions: <T extends algosdk.Transaction[] | Uint8Array[]>(txnGroup: T | T[], indexesToSign?: number[]) => Promise<(Uint8Array | null)[]>;
|
|
62
|
+
transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
|
|
60
63
|
};
|
|
61
|
-
|
|
62
|
-
export {
|
|
64
|
+
//#endregion
|
|
65
|
+
export { Wallet, useNetwork, useWallet, useWalletContext, useWalletManager };
|
|
66
|
+
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,170 +1,144 @@
|
|
|
1
|
-
// src/index.ts
|
|
2
1
|
import { useStore } from "@tanstack/svelte-store";
|
|
3
2
|
import algosdk from "algosdk";
|
|
4
3
|
import { getContext, setContext } from "svelte";
|
|
5
4
|
export * from "@txnlab/use-wallet";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
//#region src/index.ts
|
|
6
|
+
const useWalletContext = (manager) => {
|
|
7
|
+
setContext("walletManager", manager);
|
|
8
|
+
manager.resumeSessions().catch((error) => {
|
|
9
|
+
console.error("Error resuming sessions:", error);
|
|
10
|
+
});
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
return manager;
|
|
12
|
+
const useWalletManager = () => {
|
|
13
|
+
const manager = getContext("walletManager");
|
|
14
|
+
if (!manager) throw new Error("useWalletManager must be used within a useWalletContext");
|
|
15
|
+
return manager;
|
|
18
16
|
};
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
activeNetwork,
|
|
73
|
-
networkConfig: manager.networkConfig,
|
|
74
|
-
activeNetworkConfig,
|
|
75
|
-
setActiveNetwork,
|
|
76
|
-
updateAlgodConfig,
|
|
77
|
-
resetNetworkConfig
|
|
78
|
-
};
|
|
17
|
+
const useNetwork = () => {
|
|
18
|
+
const manager = useWalletManager();
|
|
19
|
+
const activeNetwork = useStore(manager.store, (state) => state.activeNetwork);
|
|
20
|
+
const activeNetworkConfig = useStore(manager.store, (state) => state.networkConfig[activeNetwork.current]);
|
|
21
|
+
const setActiveNetwork = async (networkId) => {
|
|
22
|
+
if (networkId === activeNetwork.current) return;
|
|
23
|
+
if (!manager.networkConfig[networkId]) throw new Error(`Network "${networkId}" not found in network configuration`);
|
|
24
|
+
console.info(`[Svelte] Creating new Algodv2 client...`);
|
|
25
|
+
const { algod } = manager.networkConfig[networkId];
|
|
26
|
+
const { token = "", baseServer, port = "", headers = {} } = algod;
|
|
27
|
+
const newClient = new algosdk.Algodv2(token, baseServer, port, headers);
|
|
28
|
+
await manager.setActiveNetwork(networkId);
|
|
29
|
+
manager.store.setState((state) => ({
|
|
30
|
+
...state,
|
|
31
|
+
activeNetwork: networkId,
|
|
32
|
+
algodClient: newClient
|
|
33
|
+
}));
|
|
34
|
+
console.info(`[Svelte] ✅ Active network set to ${networkId}.`);
|
|
35
|
+
};
|
|
36
|
+
const updateAlgodConfig = (networkId, config) => {
|
|
37
|
+
manager.updateAlgodConfig(networkId, config);
|
|
38
|
+
if (networkId === activeNetwork.current) {
|
|
39
|
+
console.info(`[Svelte] Creating new Algodv2 client...`);
|
|
40
|
+
const { algod } = manager.networkConfig[networkId];
|
|
41
|
+
const { token = "", baseServer, port = "", headers = {} } = algod;
|
|
42
|
+
const newClient = new algosdk.Algodv2(token, baseServer, port, headers);
|
|
43
|
+
manager.store.setState((state) => ({
|
|
44
|
+
...state,
|
|
45
|
+
algodClient: newClient
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const resetNetworkConfig = (networkId) => {
|
|
50
|
+
manager.resetNetworkConfig(networkId);
|
|
51
|
+
if (networkId === activeNetwork.current) {
|
|
52
|
+
console.info(`[Svelte] Creating new Algodv2 client...`);
|
|
53
|
+
const { algod } = manager.networkConfig[networkId];
|
|
54
|
+
const { token = "", baseServer, port = "", headers = {} } = algod;
|
|
55
|
+
const newClient = new algosdk.Algodv2(token, baseServer, port, headers);
|
|
56
|
+
manager.store.setState((state) => ({
|
|
57
|
+
...state,
|
|
58
|
+
algodClient: newClient
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
return {
|
|
63
|
+
activeNetwork,
|
|
64
|
+
networkConfig: manager.networkConfig,
|
|
65
|
+
activeNetworkConfig,
|
|
66
|
+
setActiveNetwork,
|
|
67
|
+
updateAlgodConfig,
|
|
68
|
+
resetNetworkConfig
|
|
69
|
+
};
|
|
79
70
|
};
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
return {
|
|
150
|
-
wallets,
|
|
151
|
-
isReady,
|
|
152
|
-
algodClient,
|
|
153
|
-
activeWallet,
|
|
154
|
-
activeWalletAccounts,
|
|
155
|
-
activeWalletAddresses,
|
|
156
|
-
activeAccount,
|
|
157
|
-
activeAddress,
|
|
158
|
-
signData,
|
|
159
|
-
withPrivateKey,
|
|
160
|
-
signTransactions,
|
|
161
|
-
transactionSigner
|
|
162
|
-
};
|
|
163
|
-
};
|
|
164
|
-
export {
|
|
165
|
-
useNetwork,
|
|
166
|
-
useWallet,
|
|
167
|
-
useWalletContext,
|
|
168
|
-
useWalletManager
|
|
71
|
+
const useWallet = () => {
|
|
72
|
+
const manager = useWalletManager();
|
|
73
|
+
const walletStore = useStore(manager.store, (state) => state.wallets);
|
|
74
|
+
const transformToWallet = (wallet) => {
|
|
75
|
+
return {
|
|
76
|
+
id: wallet.id,
|
|
77
|
+
walletKey: wallet.walletKey,
|
|
78
|
+
metadata: wallet.metadata,
|
|
79
|
+
accounts: useStore(manager.store, (state) => state.wallets[wallet.walletKey]?.accounts),
|
|
80
|
+
isConnected: () => !!walletStore.current[wallet.walletKey],
|
|
81
|
+
isActive: () => wallet.walletKey === activeWalletId.current,
|
|
82
|
+
canSignData: wallet.canSignData ?? false,
|
|
83
|
+
canUsePrivateKey: wallet.canUsePrivateKey ?? false,
|
|
84
|
+
connect: (args) => wallet.connect(args),
|
|
85
|
+
disconnect: () => wallet.disconnect(),
|
|
86
|
+
setActive: () => wallet.setActive(),
|
|
87
|
+
setActiveAccount: (addr) => wallet.setActiveAccount(addr)
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
const wallets = [...manager.wallets].map(transformToWallet);
|
|
91
|
+
const activeNetwork = useStore(manager.store, (state) => state.activeNetwork);
|
|
92
|
+
const availableWallets = { get current() {
|
|
93
|
+
activeNetwork.current;
|
|
94
|
+
return wallets.filter((w) => manager.availableWallets.some((aw) => aw.walletKey === w.walletKey));
|
|
95
|
+
} };
|
|
96
|
+
const activeWalletId = useStore(manager.store, (state) => state.activeWallet);
|
|
97
|
+
const managerStatus = useStore(manager.store, (state) => state.managerStatus);
|
|
98
|
+
const isReady = () => managerStatus.current === "ready";
|
|
99
|
+
const algodClient = useStore(manager.store, (state) => state.algodClient);
|
|
100
|
+
const activeWallet = () => wallets.find((w) => w.walletKey === activeWalletId.current);
|
|
101
|
+
const activeWalletAccounts = useStore(manager.store, (state) => state.wallets[activeWalletId.current]?.accounts);
|
|
102
|
+
const activeWalletAddresses = useStore(manager.store, (state) => state.wallets[activeWalletId.current]?.accounts.map((account) => account.address));
|
|
103
|
+
const activeAccount = useStore(manager.store, (state) => state.wallets[activeWalletId.current]?.activeAccount);
|
|
104
|
+
const activeAddress = useStore(manager.store, (state) => state.wallets[activeWalletId.current]?.activeAccount?.address);
|
|
105
|
+
const signTransactions = (txnGroup, indexesToSign) => {
|
|
106
|
+
const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current);
|
|
107
|
+
if (!wallet) throw new Error("No active wallet");
|
|
108
|
+
return wallet.signTransactions(txnGroup, indexesToSign);
|
|
109
|
+
};
|
|
110
|
+
const transactionSigner = (txnGroup, indexesToSign) => {
|
|
111
|
+
const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current);
|
|
112
|
+
if (!wallet) throw new Error("No active wallet");
|
|
113
|
+
return wallet.transactionSigner(txnGroup, indexesToSign);
|
|
114
|
+
};
|
|
115
|
+
const signData = (data, metadata) => {
|
|
116
|
+
const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current);
|
|
117
|
+
if (!wallet) throw new Error("No active wallet");
|
|
118
|
+
return wallet.signData(data, metadata);
|
|
119
|
+
};
|
|
120
|
+
const withPrivateKey = (callback) => {
|
|
121
|
+
const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current);
|
|
122
|
+
if (!wallet) throw new Error("No active wallet");
|
|
123
|
+
return wallet.withPrivateKey(callback);
|
|
124
|
+
};
|
|
125
|
+
return {
|
|
126
|
+
wallets,
|
|
127
|
+
availableWallets,
|
|
128
|
+
isReady,
|
|
129
|
+
algodClient,
|
|
130
|
+
activeWallet,
|
|
131
|
+
activeWalletAccounts,
|
|
132
|
+
activeWalletAddresses,
|
|
133
|
+
activeAccount,
|
|
134
|
+
activeAddress,
|
|
135
|
+
signData,
|
|
136
|
+
withPrivateKey,
|
|
137
|
+
signTransactions,
|
|
138
|
+
transactionSigner
|
|
139
|
+
};
|
|
169
140
|
};
|
|
141
|
+
//#endregion
|
|
142
|
+
export { useNetwork, useWallet, useWalletContext, useWalletManager };
|
|
143
|
+
|
|
170
144
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { useStore } from '@tanstack/svelte-store'\nimport algosdk from 'algosdk'\nimport { getContext, setContext } from 'svelte'\nimport {\n type AlgodConfig,\n BaseWallet,\n NetworkId,\n type SignDataResponse,\n type SignMetadata,\n WalletAccount,\n WalletId,\n type WalletKey,\n WalletManager,\n WalletMetadata\n} from '@txnlab/use-wallet'\n\nexport * from '@txnlab/use-wallet'\n\nexport const useWalletContext = (manager: WalletManager) => {\n setContext('walletManager', manager)\n\n manager.resumeSessions().catch((error) => {\n console.error('Error resuming sessions:', error)\n })\n}\n\nexport const useWalletManager = (): WalletManager => {\n const manager: WalletManager = getContext('walletManager')\n if (!manager) {\n throw new Error('useWalletManager must be used within a useWalletContext')\n }\n return manager\n}\n\nexport const useNetwork = () => {\n const manager = useWalletManager()\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n const activeNetworkConfig = useStore(\n manager.store,\n (state) => state.networkConfig[activeNetwork.current]\n )\n\n const setActiveNetwork = async (networkId: NetworkId | string): Promise<void> => {\n if (networkId === activeNetwork.current) {\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(`[Svelte] 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\n await manager.setActiveNetwork(networkId)\n\n manager.store.setState((state) => ({\n ...state,\n activeNetwork: networkId,\n algodClient: newClient\n }))\n\n console.info(`[Svelte] ✅ 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.current) {\n console.info(`[Svelte] 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\n manager.store.setState((state) => ({\n ...state,\n algodClient: newClient\n }))\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.current) {\n console.info(`[Svelte] 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\n manager.store.setState((state) => ({\n ...state,\n algodClient: newClient\n }))\n }\n }\n\n return {\n activeNetwork,\n networkConfig: manager.networkConfig,\n activeNetworkConfig,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n\nexport interface Wallet {\n id: WalletId\n /** Unique key for this wallet instance. Used for skinned WalletConnect instances. */\n walletKey: WalletKey\n metadata: WalletMetadata\n accounts: { current: WalletAccount[] | undefined }\n isConnected: () => boolean\n isActive: () => boolean\n canSignData: boolean\n canUsePrivateKey: 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 manager = useWalletManager()\n const walletStore = useStore(manager.store, (state) => state.wallets)\n\n const transformToWallet = (wallet: BaseWallet): Wallet => {\n return {\n id: wallet.id,\n walletKey: wallet.walletKey,\n metadata: wallet.metadata,\n accounts: useStore(manager.store, (state) => state.wallets[wallet.walletKey]?.accounts),\n isConnected: () => !!walletStore.current[wallet.walletKey],\n isActive: () => wallet.walletKey === activeWalletId.current,\n canSignData: wallet.canSignData ?? false,\n canUsePrivateKey: wallet.canUsePrivateKey ?? false,\n connect: (args) => wallet.connect(args),\n disconnect: () => wallet.disconnect(),\n setActive: () => wallet.setActive(),\n setActiveAccount: (addr) => wallet.setActiveAccount(addr)\n }\n }\n\n const wallets = [...manager.wallets].map(transformToWallet)\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = () => managerStatus.current === 'ready'\n const algodClient = useStore(manager.store, (state) => state.algodClient)\n const activeWallet = () => wallets.find((w) => w.walletKey === activeWalletId.current)\n const activeWalletAccounts = useStore(\n manager.store,\n (state) => state.wallets[activeWalletId.current!]?.accounts\n )\n const activeWalletAddresses = useStore(manager.store, (state) =>\n state.wallets[activeWalletId.current!]?.accounts.map((account) => account.address)\n )\n const activeAccount = useStore(\n manager.store,\n (state) => state.wallets[activeWalletId.current!]?.activeAccount\n )\n const activeAddress = useStore(\n manager.store,\n (state) => state.wallets[activeWalletId.current!]?.activeAccount?.address\n )\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.transactionSigner(txnGroup, indexesToSign)\n }\n\n const signData = (data: string, metadata: SignMetadata): Promise<SignDataResponse> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.signData(data, metadata)\n }\n\n const withPrivateKey = <T>(callback: (secretKey: Uint8Array) => Promise<T>): Promise<T> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.withPrivateKey(callback)\n }\n\n return {\n wallets,\n isReady,\n algodClient,\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signData,\n withPrivateKey,\n signTransactions,\n transactionSigner\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { useStore } from '@tanstack/svelte-store'\nimport algosdk from 'algosdk'\nimport { getContext, setContext } from 'svelte'\nimport {\n type AlgodConfig,\n BaseWallet,\n NetworkId,\n type SignDataResponse,\n type SignMetadata,\n type WalletAccount,\n type WalletKey,\n WalletManager,\n type WalletMetadata\n} from '@txnlab/use-wallet'\n\nexport * from '@txnlab/use-wallet'\n\nexport const useWalletContext = (manager: WalletManager) => {\n setContext('walletManager', manager)\n\n manager.resumeSessions().catch((error) => {\n console.error('Error resuming sessions:', error)\n })\n}\n\nexport const useWalletManager = (): WalletManager => {\n const manager: WalletManager = getContext('walletManager')\n if (!manager) {\n throw new Error('useWalletManager must be used within a useWalletContext')\n }\n return manager\n}\n\nexport const useNetwork = () => {\n const manager = useWalletManager()\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n const activeNetworkConfig = useStore(\n manager.store,\n (state) => state.networkConfig[activeNetwork.current]\n )\n\n const setActiveNetwork = async (networkId: NetworkId | string): Promise<void> => {\n if (networkId === activeNetwork.current) {\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(`[Svelte] 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\n await manager.setActiveNetwork(networkId)\n\n manager.store.setState((state) => ({\n ...state,\n activeNetwork: networkId,\n algodClient: newClient\n }))\n\n console.info(`[Svelte] ✅ 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.current) {\n console.info(`[Svelte] 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\n manager.store.setState((state) => ({\n ...state,\n algodClient: newClient\n }))\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.current) {\n console.info(`[Svelte] 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\n manager.store.setState((state) => ({\n ...state,\n algodClient: newClient\n }))\n }\n }\n\n return {\n activeNetwork,\n networkConfig: manager.networkConfig,\n activeNetworkConfig,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n\nexport interface Wallet {\n id: string\n walletKey: WalletKey\n metadata: WalletMetadata\n accounts: { current: WalletAccount[] | undefined }\n isConnected: () => boolean\n isActive: () => boolean\n canSignData: boolean\n canUsePrivateKey: 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 manager = useWalletManager()\n const walletStore = useStore(manager.store, (state) => state.wallets)\n\n const transformToWallet = (wallet: BaseWallet): Wallet => {\n return {\n id: wallet.id,\n walletKey: wallet.walletKey,\n metadata: wallet.metadata,\n accounts: useStore(manager.store, (state) => state.wallets[wallet.walletKey]?.accounts),\n isConnected: () => !!walletStore.current[wallet.walletKey],\n isActive: () => wallet.walletKey === activeWalletId.current,\n canSignData: wallet.canSignData ?? false,\n canUsePrivateKey: wallet.canUsePrivateKey ?? false,\n connect: (args) => wallet.connect(args),\n disconnect: () => wallet.disconnect(),\n setActive: () => wallet.setActive(),\n setActiveAccount: (addr) => wallet.setActiveAccount(addr)\n }\n }\n\n const wallets = [...manager.wallets].map(transformToWallet)\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n const availableWallets = {\n get current() {\n // Access activeNetwork.current to ensure reactivity on network change\n void activeNetwork.current\n return wallets.filter((w) =>\n manager.availableWallets.some((aw) => aw.walletKey === w.walletKey)\n )\n }\n }\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = () => managerStatus.current === 'ready'\n const algodClient = useStore(manager.store, (state) => state.algodClient)\n const activeWallet = () => wallets.find((w) => w.walletKey === activeWalletId.current)\n const activeWalletAccounts = useStore(\n manager.store,\n (state) => state.wallets[activeWalletId.current!]?.accounts\n )\n const activeWalletAddresses = useStore(manager.store, (state) =>\n state.wallets[activeWalletId.current!]?.accounts.map((account) => account.address)\n )\n const activeAccount = useStore(\n manager.store,\n (state) => state.wallets[activeWalletId.current!]?.activeAccount\n )\n const activeAddress = useStore(\n manager.store,\n (state) => state.wallets[activeWalletId.current!]?.activeAccount?.address\n )\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.transactionSigner(txnGroup, indexesToSign)\n }\n\n const signData = (data: string, metadata: SignMetadata): Promise<SignDataResponse> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.signData(data, metadata)\n }\n\n const withPrivateKey = <T>(callback: (secretKey: Uint8Array) => Promise<T>): Promise<T> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.withPrivateKey(callback)\n }\n\n return {\n wallets,\n availableWallets,\n isReady,\n algodClient,\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signData,\n withPrivateKey,\n signTransactions,\n transactionSigner\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,85 +1,56 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@txnlab/use-wallet-svelte",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0-rc.1",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public",
|
|
6
|
+
"provenance": true
|
|
7
|
+
},
|
|
4
8
|
"description": "Svelte library for integrating Algorand wallets into decentralized applications",
|
|
5
9
|
"author": "Andrew Funk <acfunk@gmail.com>",
|
|
6
10
|
"license": "MIT",
|
|
7
11
|
"repository": {
|
|
8
12
|
"type": "git",
|
|
9
|
-
"url": "https://github.com/txnlab/use-wallet.git",
|
|
10
|
-
"directory": "packages/
|
|
13
|
+
"url": "git+https://github.com/txnlab/use-wallet.git",
|
|
14
|
+
"directory": "packages/frameworks/svelte"
|
|
11
15
|
},
|
|
12
16
|
"type": "module",
|
|
13
|
-
"main": "./dist/index.
|
|
14
|
-
"module": "./dist/index.js",
|
|
15
|
-
"exports": "./dist/index.js",
|
|
17
|
+
"main": "./dist/index.js",
|
|
16
18
|
"types": "./dist/index.d.ts",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"default": "./dist/index.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
17
25
|
"keywords": [
|
|
18
26
|
"algorand",
|
|
19
27
|
"wallet",
|
|
20
|
-
"walletconnect",
|
|
21
|
-
"pera",
|
|
22
|
-
"defly",
|
|
23
|
-
"exodus",
|
|
24
|
-
"algosdk",
|
|
25
|
-
"algokit",
|
|
26
|
-
"kmd",
|
|
27
28
|
"svelte"
|
|
28
29
|
],
|
|
29
30
|
"files": [
|
|
30
31
|
"dist"
|
|
31
32
|
],
|
|
32
33
|
"dependencies": {
|
|
33
|
-
"@tanstack/svelte-store": "0.
|
|
34
|
-
"@txnlab/use-wallet": "
|
|
34
|
+
"@tanstack/svelte-store": "0.10.1",
|
|
35
|
+
"@txnlab/use-wallet": "5.0.0-rc.1"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
37
38
|
"@testing-library/svelte": "5.3.1",
|
|
38
39
|
"algosdk": "3.5.2",
|
|
39
40
|
"svelte": "5.49.1",
|
|
40
|
-
"
|
|
41
|
+
"tsdown": "0.21.0",
|
|
41
42
|
"typescript": "5.9.3"
|
|
42
43
|
},
|
|
43
44
|
"peerDependencies": {
|
|
44
|
-
"@blockshake/defly-connect": "^1.2.1",
|
|
45
|
-
"@magic-ext/algorand": "^24.4.2",
|
|
46
|
-
"@perawallet/connect": "^1.4.1",
|
|
47
|
-
"@walletconnect/modal": "^2.7.0",
|
|
48
|
-
"@walletconnect/sign-client": "^2.23.4",
|
|
49
45
|
"algosdk": "^3.0.0",
|
|
50
|
-
"lute-connect": "^1.6.3",
|
|
51
|
-
"magic-sdk": "^29.4.2",
|
|
52
46
|
"svelte": "^5.0.0"
|
|
53
47
|
},
|
|
54
|
-
"peerDependenciesMeta": {
|
|
55
|
-
"@blockshake/defly-connect": {
|
|
56
|
-
"optional": true
|
|
57
|
-
},
|
|
58
|
-
"@magic-ext/algorand": {
|
|
59
|
-
"optional": true
|
|
60
|
-
},
|
|
61
|
-
"@perawallet/connect": {
|
|
62
|
-
"optional": true
|
|
63
|
-
},
|
|
64
|
-
"@walletconnect/modal": {
|
|
65
|
-
"optional": true
|
|
66
|
-
},
|
|
67
|
-
"@walletconnect/sign-client": {
|
|
68
|
-
"optional": true
|
|
69
|
-
},
|
|
70
|
-
"lute-connect": {
|
|
71
|
-
"optional": true
|
|
72
|
-
},
|
|
73
|
-
"magic-sdk": {
|
|
74
|
-
"optional": true
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
48
|
"scripts": {
|
|
78
|
-
"build": "
|
|
79
|
-
"start": "
|
|
49
|
+
"build": "tsdown",
|
|
50
|
+
"start": "tsdown --watch",
|
|
80
51
|
"test": "vitest run",
|
|
81
52
|
"test:watch": "vitest --watch",
|
|
82
|
-
"lint": "eslint
|
|
53
|
+
"lint": "eslint \"src/**/*.{js,ts}\"",
|
|
83
54
|
"typecheck": "tsc --noEmit"
|
|
84
55
|
}
|
|
85
56
|
}
|
package/dist/index.cjs
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
21
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
-
mod
|
|
28
|
-
));
|
|
29
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
-
|
|
31
|
-
// src/index.ts
|
|
32
|
-
var index_exports = {};
|
|
33
|
-
__export(index_exports, {
|
|
34
|
-
useNetwork: () => useNetwork,
|
|
35
|
-
useWallet: () => useWallet,
|
|
36
|
-
useWalletContext: () => useWalletContext,
|
|
37
|
-
useWalletManager: () => useWalletManager
|
|
38
|
-
});
|
|
39
|
-
module.exports = __toCommonJS(index_exports);
|
|
40
|
-
var import_svelte_store = require("@tanstack/svelte-store");
|
|
41
|
-
var import_algosdk = __toESM(require("algosdk"), 1);
|
|
42
|
-
var import_svelte = require("svelte");
|
|
43
|
-
__reExport(index_exports, require("@txnlab/use-wallet"), module.exports);
|
|
44
|
-
var useWalletContext = (manager) => {
|
|
45
|
-
(0, import_svelte.setContext)("walletManager", manager);
|
|
46
|
-
manager.resumeSessions().catch((error) => {
|
|
47
|
-
console.error("Error resuming sessions:", error);
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
var useWalletManager = () => {
|
|
51
|
-
const manager = (0, import_svelte.getContext)("walletManager");
|
|
52
|
-
if (!manager) {
|
|
53
|
-
throw new Error("useWalletManager must be used within a useWalletContext");
|
|
54
|
-
}
|
|
55
|
-
return manager;
|
|
56
|
-
};
|
|
57
|
-
var useNetwork = () => {
|
|
58
|
-
const manager = useWalletManager();
|
|
59
|
-
const activeNetwork = (0, import_svelte_store.useStore)(manager.store, (state) => state.activeNetwork);
|
|
60
|
-
const activeNetworkConfig = (0, import_svelte_store.useStore)(
|
|
61
|
-
manager.store,
|
|
62
|
-
(state) => state.networkConfig[activeNetwork.current]
|
|
63
|
-
);
|
|
64
|
-
const setActiveNetwork = async (networkId) => {
|
|
65
|
-
if (networkId === activeNetwork.current) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
if (!manager.networkConfig[networkId]) {
|
|
69
|
-
throw new Error(`Network "${networkId}" not found in network configuration`);
|
|
70
|
-
}
|
|
71
|
-
console.info(`[Svelte] Creating new Algodv2 client...`);
|
|
72
|
-
const { algod } = manager.networkConfig[networkId];
|
|
73
|
-
const { token = "", baseServer, port = "", headers = {} } = algod;
|
|
74
|
-
const newClient = new import_algosdk.default.Algodv2(token, baseServer, port, headers);
|
|
75
|
-
await manager.setActiveNetwork(networkId);
|
|
76
|
-
manager.store.setState((state) => ({
|
|
77
|
-
...state,
|
|
78
|
-
activeNetwork: networkId,
|
|
79
|
-
algodClient: newClient
|
|
80
|
-
}));
|
|
81
|
-
console.info(`[Svelte] \u2705 Active network set to ${networkId}.`);
|
|
82
|
-
};
|
|
83
|
-
const updateAlgodConfig = (networkId, config) => {
|
|
84
|
-
manager.updateAlgodConfig(networkId, config);
|
|
85
|
-
if (networkId === activeNetwork.current) {
|
|
86
|
-
console.info(`[Svelte] Creating new Algodv2 client...`);
|
|
87
|
-
const { algod } = manager.networkConfig[networkId];
|
|
88
|
-
const { token = "", baseServer, port = "", headers = {} } = algod;
|
|
89
|
-
const newClient = new import_algosdk.default.Algodv2(token, baseServer, port, headers);
|
|
90
|
-
manager.store.setState((state) => ({
|
|
91
|
-
...state,
|
|
92
|
-
algodClient: newClient
|
|
93
|
-
}));
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
const resetNetworkConfig = (networkId) => {
|
|
97
|
-
manager.resetNetworkConfig(networkId);
|
|
98
|
-
if (networkId === activeNetwork.current) {
|
|
99
|
-
console.info(`[Svelte] Creating new Algodv2 client...`);
|
|
100
|
-
const { algod } = manager.networkConfig[networkId];
|
|
101
|
-
const { token = "", baseServer, port = "", headers = {} } = algod;
|
|
102
|
-
const newClient = new import_algosdk.default.Algodv2(token, baseServer, port, headers);
|
|
103
|
-
manager.store.setState((state) => ({
|
|
104
|
-
...state,
|
|
105
|
-
algodClient: newClient
|
|
106
|
-
}));
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
return {
|
|
110
|
-
activeNetwork,
|
|
111
|
-
networkConfig: manager.networkConfig,
|
|
112
|
-
activeNetworkConfig,
|
|
113
|
-
setActiveNetwork,
|
|
114
|
-
updateAlgodConfig,
|
|
115
|
-
resetNetworkConfig
|
|
116
|
-
};
|
|
117
|
-
};
|
|
118
|
-
var useWallet = () => {
|
|
119
|
-
const manager = useWalletManager();
|
|
120
|
-
const walletStore = (0, import_svelte_store.useStore)(manager.store, (state) => state.wallets);
|
|
121
|
-
const transformToWallet = (wallet) => {
|
|
122
|
-
return {
|
|
123
|
-
id: wallet.id,
|
|
124
|
-
walletKey: wallet.walletKey,
|
|
125
|
-
metadata: wallet.metadata,
|
|
126
|
-
accounts: (0, import_svelte_store.useStore)(manager.store, (state) => state.wallets[wallet.walletKey]?.accounts),
|
|
127
|
-
isConnected: () => !!walletStore.current[wallet.walletKey],
|
|
128
|
-
isActive: () => wallet.walletKey === activeWalletId.current,
|
|
129
|
-
canSignData: wallet.canSignData ?? false,
|
|
130
|
-
canUsePrivateKey: wallet.canUsePrivateKey ?? false,
|
|
131
|
-
connect: (args) => wallet.connect(args),
|
|
132
|
-
disconnect: () => wallet.disconnect(),
|
|
133
|
-
setActive: () => wallet.setActive(),
|
|
134
|
-
setActiveAccount: (addr) => wallet.setActiveAccount(addr)
|
|
135
|
-
};
|
|
136
|
-
};
|
|
137
|
-
const wallets = [...manager.wallets].map(transformToWallet);
|
|
138
|
-
const activeWalletId = (0, import_svelte_store.useStore)(manager.store, (state) => state.activeWallet);
|
|
139
|
-
const managerStatus = (0, import_svelte_store.useStore)(manager.store, (state) => state.managerStatus);
|
|
140
|
-
const isReady = () => managerStatus.current === "ready";
|
|
141
|
-
const algodClient = (0, import_svelte_store.useStore)(manager.store, (state) => state.algodClient);
|
|
142
|
-
const activeWallet = () => wallets.find((w) => w.walletKey === activeWalletId.current);
|
|
143
|
-
const activeWalletAccounts = (0, import_svelte_store.useStore)(
|
|
144
|
-
manager.store,
|
|
145
|
-
(state) => state.wallets[activeWalletId.current]?.accounts
|
|
146
|
-
);
|
|
147
|
-
const activeWalletAddresses = (0, import_svelte_store.useStore)(
|
|
148
|
-
manager.store,
|
|
149
|
-
(state) => state.wallets[activeWalletId.current]?.accounts.map((account) => account.address)
|
|
150
|
-
);
|
|
151
|
-
const activeAccount = (0, import_svelte_store.useStore)(
|
|
152
|
-
manager.store,
|
|
153
|
-
(state) => state.wallets[activeWalletId.current]?.activeAccount
|
|
154
|
-
);
|
|
155
|
-
const activeAddress = (0, import_svelte_store.useStore)(
|
|
156
|
-
manager.store,
|
|
157
|
-
(state) => state.wallets[activeWalletId.current]?.activeAccount?.address
|
|
158
|
-
);
|
|
159
|
-
const signTransactions = (txnGroup, indexesToSign) => {
|
|
160
|
-
const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current);
|
|
161
|
-
if (!wallet) {
|
|
162
|
-
throw new Error("No active wallet");
|
|
163
|
-
}
|
|
164
|
-
return wallet.signTransactions(txnGroup, indexesToSign);
|
|
165
|
-
};
|
|
166
|
-
const transactionSigner = (txnGroup, indexesToSign) => {
|
|
167
|
-
const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current);
|
|
168
|
-
if (!wallet) {
|
|
169
|
-
throw new Error("No active wallet");
|
|
170
|
-
}
|
|
171
|
-
return wallet.transactionSigner(txnGroup, indexesToSign);
|
|
172
|
-
};
|
|
173
|
-
const signData = (data, metadata) => {
|
|
174
|
-
const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current);
|
|
175
|
-
if (!wallet) {
|
|
176
|
-
throw new Error("No active wallet");
|
|
177
|
-
}
|
|
178
|
-
return wallet.signData(data, metadata);
|
|
179
|
-
};
|
|
180
|
-
const withPrivateKey = (callback) => {
|
|
181
|
-
const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current);
|
|
182
|
-
if (!wallet) {
|
|
183
|
-
throw new Error("No active wallet");
|
|
184
|
-
}
|
|
185
|
-
return wallet.withPrivateKey(callback);
|
|
186
|
-
};
|
|
187
|
-
return {
|
|
188
|
-
wallets,
|
|
189
|
-
isReady,
|
|
190
|
-
algodClient,
|
|
191
|
-
activeWallet,
|
|
192
|
-
activeWalletAccounts,
|
|
193
|
-
activeWalletAddresses,
|
|
194
|
-
activeAccount,
|
|
195
|
-
activeAddress,
|
|
196
|
-
signData,
|
|
197
|
-
withPrivateKey,
|
|
198
|
-
signTransactions,
|
|
199
|
-
transactionSigner
|
|
200
|
-
};
|
|
201
|
-
};
|
|
202
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
203
|
-
0 && (module.exports = {
|
|
204
|
-
useNetwork,
|
|
205
|
-
useWallet,
|
|
206
|
-
useWalletContext,
|
|
207
|
-
useWalletManager,
|
|
208
|
-
...require("@txnlab/use-wallet")
|
|
209
|
-
});
|
|
210
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { useStore } from '@tanstack/svelte-store'\nimport algosdk from 'algosdk'\nimport { getContext, setContext } from 'svelte'\nimport {\n type AlgodConfig,\n BaseWallet,\n NetworkId,\n type SignDataResponse,\n type SignMetadata,\n WalletAccount,\n WalletId,\n type WalletKey,\n WalletManager,\n WalletMetadata\n} from '@txnlab/use-wallet'\n\nexport * from '@txnlab/use-wallet'\n\nexport const useWalletContext = (manager: WalletManager) => {\n setContext('walletManager', manager)\n\n manager.resumeSessions().catch((error) => {\n console.error('Error resuming sessions:', error)\n })\n}\n\nexport const useWalletManager = (): WalletManager => {\n const manager: WalletManager = getContext('walletManager')\n if (!manager) {\n throw new Error('useWalletManager must be used within a useWalletContext')\n }\n return manager\n}\n\nexport const useNetwork = () => {\n const manager = useWalletManager()\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n const activeNetworkConfig = useStore(\n manager.store,\n (state) => state.networkConfig[activeNetwork.current]\n )\n\n const setActiveNetwork = async (networkId: NetworkId | string): Promise<void> => {\n if (networkId === activeNetwork.current) {\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(`[Svelte] 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\n await manager.setActiveNetwork(networkId)\n\n manager.store.setState((state) => ({\n ...state,\n activeNetwork: networkId,\n algodClient: newClient\n }))\n\n console.info(`[Svelte] ✅ 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.current) {\n console.info(`[Svelte] 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\n manager.store.setState((state) => ({\n ...state,\n algodClient: newClient\n }))\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.current) {\n console.info(`[Svelte] 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\n manager.store.setState((state) => ({\n ...state,\n algodClient: newClient\n }))\n }\n }\n\n return {\n activeNetwork,\n networkConfig: manager.networkConfig,\n activeNetworkConfig,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n\nexport interface Wallet {\n id: WalletId\n /** Unique key for this wallet instance. Used for skinned WalletConnect instances. */\n walletKey: WalletKey\n metadata: WalletMetadata\n accounts: { current: WalletAccount[] | undefined }\n isConnected: () => boolean\n isActive: () => boolean\n canSignData: boolean\n canUsePrivateKey: 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 manager = useWalletManager()\n const walletStore = useStore(manager.store, (state) => state.wallets)\n\n const transformToWallet = (wallet: BaseWallet): Wallet => {\n return {\n id: wallet.id,\n walletKey: wallet.walletKey,\n metadata: wallet.metadata,\n accounts: useStore(manager.store, (state) => state.wallets[wallet.walletKey]?.accounts),\n isConnected: () => !!walletStore.current[wallet.walletKey],\n isActive: () => wallet.walletKey === activeWalletId.current,\n canSignData: wallet.canSignData ?? false,\n canUsePrivateKey: wallet.canUsePrivateKey ?? false,\n connect: (args) => wallet.connect(args),\n disconnect: () => wallet.disconnect(),\n setActive: () => wallet.setActive(),\n setActiveAccount: (addr) => wallet.setActiveAccount(addr)\n }\n }\n\n const wallets = [...manager.wallets].map(transformToWallet)\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = () => managerStatus.current === 'ready'\n const algodClient = useStore(manager.store, (state) => state.algodClient)\n const activeWallet = () => wallets.find((w) => w.walletKey === activeWalletId.current)\n const activeWalletAccounts = useStore(\n manager.store,\n (state) => state.wallets[activeWalletId.current!]?.accounts\n )\n const activeWalletAddresses = useStore(manager.store, (state) =>\n state.wallets[activeWalletId.current!]?.accounts.map((account) => account.address)\n )\n const activeAccount = useStore(\n manager.store,\n (state) => state.wallets[activeWalletId.current!]?.activeAccount\n )\n const activeAddress = useStore(\n manager.store,\n (state) => state.wallets[activeWalletId.current!]?.activeAccount?.address\n )\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.transactionSigner(txnGroup, indexesToSign)\n }\n\n const signData = (data: string, metadata: SignMetadata): Promise<SignDataResponse> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.signData(data, metadata)\n }\n\n const withPrivateKey = <T>(callback: (secretKey: Uint8Array) => Promise<T>): Promise<T> => {\n const wallet = manager.wallets.find((w) => w.walletKey === activeWalletId.current)\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.withPrivateKey(callback)\n }\n\n return {\n wallets,\n isReady,\n algodClient,\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signData,\n withPrivateKey,\n signTransactions,\n transactionSigner\n }\n}\n"],"mappings":"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","names":["algosdk"]}
|
package/dist/index.d.cts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import * as _txnlab_use_wallet from '@txnlab/use-wallet';
|
|
2
|
-
import { WalletId, WalletKey, WalletMetadata, WalletAccount, NetworkId, AlgodConfig, SignMetadata, SignDataResponse, WalletManager } from '@txnlab/use-wallet';
|
|
3
|
-
export * from '@txnlab/use-wallet';
|
|
4
|
-
import algosdk from 'algosdk';
|
|
5
|
-
|
|
6
|
-
declare const useWalletContext: (manager: WalletManager) => void;
|
|
7
|
-
declare const useWalletManager: () => WalletManager;
|
|
8
|
-
declare const useNetwork: () => {
|
|
9
|
-
activeNetwork: {
|
|
10
|
-
readonly current: string;
|
|
11
|
-
};
|
|
12
|
-
networkConfig: Record<string, _txnlab_use_wallet.NetworkConfig>;
|
|
13
|
-
activeNetworkConfig: {
|
|
14
|
-
readonly current: _txnlab_use_wallet.NetworkConfig;
|
|
15
|
-
};
|
|
16
|
-
setActiveNetwork: (networkId: NetworkId | string) => Promise<void>;
|
|
17
|
-
updateAlgodConfig: (networkId: string, config: Partial<AlgodConfig>) => void;
|
|
18
|
-
resetNetworkConfig: (networkId: string) => void;
|
|
19
|
-
};
|
|
20
|
-
interface Wallet {
|
|
21
|
-
id: WalletId;
|
|
22
|
-
/** Unique key for this wallet instance. Used for skinned WalletConnect instances. */
|
|
23
|
-
walletKey: WalletKey;
|
|
24
|
-
metadata: WalletMetadata;
|
|
25
|
-
accounts: {
|
|
26
|
-
current: WalletAccount[] | undefined;
|
|
27
|
-
};
|
|
28
|
-
isConnected: () => boolean;
|
|
29
|
-
isActive: () => boolean;
|
|
30
|
-
canSignData: boolean;
|
|
31
|
-
canUsePrivateKey: boolean;
|
|
32
|
-
connect: (args?: Record<string, any>) => Promise<WalletAccount[]>;
|
|
33
|
-
disconnect: () => Promise<void>;
|
|
34
|
-
setActive: () => void;
|
|
35
|
-
setActiveAccount: (address: string) => void;
|
|
36
|
-
}
|
|
37
|
-
declare const useWallet: () => {
|
|
38
|
-
wallets: Wallet[];
|
|
39
|
-
isReady: () => boolean;
|
|
40
|
-
algodClient: {
|
|
41
|
-
readonly current: algosdk.Algodv2;
|
|
42
|
-
};
|
|
43
|
-
activeWallet: () => Wallet | undefined;
|
|
44
|
-
activeWalletAccounts: {
|
|
45
|
-
readonly current: WalletAccount[] | undefined;
|
|
46
|
-
};
|
|
47
|
-
activeWalletAddresses: {
|
|
48
|
-
readonly current: string[] | undefined;
|
|
49
|
-
};
|
|
50
|
-
activeAccount: {
|
|
51
|
-
readonly current: WalletAccount | null | undefined;
|
|
52
|
-
};
|
|
53
|
-
activeAddress: {
|
|
54
|
-
readonly current: string | undefined;
|
|
55
|
-
};
|
|
56
|
-
signData: (data: string, metadata: SignMetadata) => Promise<SignDataResponse>;
|
|
57
|
-
withPrivateKey: <T>(callback: (secretKey: Uint8Array) => Promise<T>) => Promise<T>;
|
|
58
|
-
signTransactions: <T extends algosdk.Transaction[] | Uint8Array[]>(txnGroup: T | T[], indexesToSign?: number[]) => Promise<(Uint8Array | null)[]>;
|
|
59
|
-
transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export { type Wallet, useNetwork, useWallet, useWalletContext, useWalletManager };
|