@txnlab/use-wallet-vue 4.4.0 → 4.6.0
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/LICENSE +21 -0
- package/dist/index.cjs +8 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/LICENSE.md +0 -20
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 TxnLab, Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/index.cjs
CHANGED
|
@@ -87,6 +87,7 @@ function useWallet() {
|
|
|
87
87
|
isConnected: !!walletState,
|
|
88
88
|
isActive: wallet.walletKey === activeWalletId.value,
|
|
89
89
|
canSignData: wallet.canSignData ?? false,
|
|
90
|
+
canUsePrivateKey: wallet.canUsePrivateKey ?? false,
|
|
90
91
|
connect: (args) => wallet.connect(args),
|
|
91
92
|
disconnect: () => wallet.disconnect(),
|
|
92
93
|
setActive: () => wallet.setActive(),
|
|
@@ -137,6 +138,12 @@ function useWallet() {
|
|
|
137
138
|
}
|
|
138
139
|
return activeBaseWallet.value.signData(data, metadata);
|
|
139
140
|
};
|
|
141
|
+
const withPrivateKey = (callback) => {
|
|
142
|
+
if (!activeBaseWallet.value) {
|
|
143
|
+
throw new Error("No active wallet");
|
|
144
|
+
}
|
|
145
|
+
return activeBaseWallet.value.withPrivateKey(callback);
|
|
146
|
+
};
|
|
140
147
|
return {
|
|
141
148
|
wallets,
|
|
142
149
|
isReady,
|
|
@@ -152,6 +159,7 @@ function useWallet() {
|
|
|
152
159
|
activeAccount,
|
|
153
160
|
activeAddress,
|
|
154
161
|
signData,
|
|
162
|
+
withPrivateKey,
|
|
155
163
|
signTransactions,
|
|
156
164
|
transactionSigner
|
|
157
165
|
};
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/walletManagerPlugin.ts","../src/useWallet.ts","../src/useNetwork.ts"],"sourcesContent":["export * from '@txnlab/use-wallet'\nexport { WalletManagerPlugin } from './walletManagerPlugin'\nexport { useWallet, type Wallet } from './useWallet'\nexport { useNetwork } from './useNetwork'\n","import { WalletManager, type WalletManagerConfig } from '@txnlab/use-wallet'\nimport { ref } from 'vue'\nimport type algosdk from 'algosdk'\n\nexport const WalletManagerPlugin = {\n install(app: any, options: WalletManagerConfig) {\n const manager = new WalletManager(options)\n const algodClient = ref(manager.algodClient)\n\n const setAlgodClient = (client: algosdk.Algodv2) => {\n algodClient.value = client\n manager.algodClient = client\n }\n\n app.provide('walletManager', manager)\n app.provide('algodClient', algodClient)\n app.provide('setAlgodClient', setAlgodClient)\n\n manager.resumeSessions().catch((error) => {\n console.error('Error resuming sessions:', error)\n })\n }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport {\n BaseWallet,\n WalletManager,\n type WalletAccount,\n type WalletKey,\n type WalletMetadata,\n type WalletId,\n type SignMetadata,\n type SignDataResponse\n} from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\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: 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 canSignData: boolean\n}\n\nexport type SetAlgodClient = (client: algosdk.Algodv2) => void\n\nexport function useWallet() {\n const manager = inject<WalletManager>('walletManager')\n const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n\n if (!manager) {\n throw new Error('WalletManager plugin is not properly installed')\n }\n if (!algodClient) {\n throw new Error('Algod client not properly installed')\n }\n\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = computed(() => managerStatus.value === 'ready')\n\n const walletStateMap = useStore(manager.store, (state) => state.wallets)\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n\n const transformToWallet = (wallet: BaseWallet): Wallet => {\n const walletState = walletStateMap.value[wallet.walletKey]\n return {\n id: wallet.id,\n walletKey: wallet.walletKey,\n metadata: wallet.metadata,\n accounts: walletState?.accounts ?? [],\n activeAccount: walletState?.activeAccount ?? null,\n isConnected: !!walletState,\n isActive: wallet.walletKey === activeWalletId.value,\n canSignData: wallet.canSignData ?? 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 = computed(() => {\n return [...manager.wallets.values()].map(transformToWallet)\n })\n\n const activeWallet = computed(() => {\n const wallet = activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n return wallet ? transformToWallet(wallet) : null\n })\n\n const activeBaseWallet = computed(() => {\n return activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n })\n\n const activeWalletState = computed(() => {\n const wallet = activeWallet.value\n return wallet ? walletStateMap.value[wallet.walletKey] || null : null\n })\n\n const activeWalletAccounts = computed(() => {\n return activeWalletState.value?.accounts ?? null\n })\n\n const activeWalletAddresses = computed(() => {\n return activeWalletAccounts.value?.map((account) => account.address) ?? null\n })\n\n const activeAccount = computed(() => {\n return activeWalletState.value?.activeAccount ?? null\n })\n\n const activeAddress = computed(() => {\n return activeAccount.value?.address ?? null\n })\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.transactionSigner(txnGroup, indexesToSign)\n }\n\n const signData = (data: string, metadata: SignMetadata): Promise<SignDataResponse> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.signData(data, metadata)\n }\n\n return {\n wallets,\n isReady,\n algodClient: computed(() => {\n if (!algodClient.value) {\n throw new Error('Algod client is undefined')\n }\n return algodClient.value\n }),\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signData,\n signTransactions,\n transactionSigner\n }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport { WalletManager, type AlgodConfig } from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\nimport type { SetAlgodClient } from './useWallet'\n\nexport function useNetwork() {\n const manager = inject<WalletManager>('walletManager')\n const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n const setAlgodClient = inject<SetAlgodClient>('setAlgodClient')\n\n if (!manager) {\n throw new Error('WalletManager plugin is not properly installed')\n }\n if (!algodClient || !setAlgodClient) {\n throw new Error('Algod client or setter not properly installed')\n }\n\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n\n // Create a reactive store for network config\n const networkConfig = useStore(manager.store, (state) => ({\n networks: { ...manager.networkConfig },\n activeNetwork: state.activeNetwork\n }))\n\n const activeNetworkConfig = computed(\n () => networkConfig.value.networks[networkConfig.value.activeNetwork]\n )\n\n const setActiveNetwork = async (networkId: string): Promise<void> => {\n if (networkId === activeNetwork.value) {\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(`[Vue] 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 setAlgodClient(newClient)\n\n console.info(`[Vue] ✅ Active network set to ${networkId}.`)\n }\n\n const updateAlgodConfig = (networkId: string, config: Partial<AlgodConfig>): void => {\n manager.updateAlgodConfig(networkId, config)\n manager.store.setState((state) => ({ ...state }))\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork.value) {\n console.info(`[Vue] 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 manager.store.setState((state) => ({ ...state }))\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork.value) {\n console.info(`[Vue] 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,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n"],"mappings":"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","names":["import_use_wallet","import_vue","import_vue_store","import_use_wallet","import_algosdk","import_vue","algosdk"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/walletManagerPlugin.ts","../src/useWallet.ts","../src/useNetwork.ts"],"sourcesContent":["export * from '@txnlab/use-wallet'\nexport { WalletManagerPlugin } from './walletManagerPlugin'\nexport { useWallet, type Wallet } from './useWallet'\nexport { useNetwork } from './useNetwork'\n","import { WalletManager, type WalletManagerConfig } from '@txnlab/use-wallet'\nimport { ref } from 'vue'\nimport type algosdk from 'algosdk'\n\nexport const WalletManagerPlugin = {\n install(app: any, options: WalletManagerConfig) {\n const manager = new WalletManager(options)\n const algodClient = ref(manager.algodClient)\n\n const setAlgodClient = (client: algosdk.Algodv2) => {\n algodClient.value = client\n manager.algodClient = client\n }\n\n app.provide('walletManager', manager)\n app.provide('algodClient', algodClient)\n app.provide('setAlgodClient', setAlgodClient)\n\n manager.resumeSessions().catch((error) => {\n console.error('Error resuming sessions:', error)\n })\n }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport {\n BaseWallet,\n WalletManager,\n type WalletAccount,\n type WalletKey,\n type WalletMetadata,\n type WalletId,\n type SignMetadata,\n type SignDataResponse\n} from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\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: 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 canSignData: boolean\n canUsePrivateKey: boolean\n}\n\nexport type SetAlgodClient = (client: algosdk.Algodv2) => void\n\nexport function useWallet() {\n const manager = inject<WalletManager>('walletManager')\n const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n\n if (!manager) {\n throw new Error('WalletManager plugin is not properly installed')\n }\n if (!algodClient) {\n throw new Error('Algod client not properly installed')\n }\n\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = computed(() => managerStatus.value === 'ready')\n\n const walletStateMap = useStore(manager.store, (state) => state.wallets)\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n\n const transformToWallet = (wallet: BaseWallet): Wallet => {\n const walletState = walletStateMap.value[wallet.walletKey]\n return {\n id: wallet.id,\n walletKey: wallet.walletKey,\n metadata: wallet.metadata,\n accounts: walletState?.accounts ?? [],\n activeAccount: walletState?.activeAccount ?? null,\n isConnected: !!walletState,\n isActive: wallet.walletKey === activeWalletId.value,\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 = computed(() => {\n return [...manager.wallets.values()].map(transformToWallet)\n })\n\n const activeWallet = computed(() => {\n const wallet = activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n return wallet ? transformToWallet(wallet) : null\n })\n\n const activeBaseWallet = computed(() => {\n return activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n })\n\n const activeWalletState = computed(() => {\n const wallet = activeWallet.value\n return wallet ? walletStateMap.value[wallet.walletKey] || null : null\n })\n\n const activeWalletAccounts = computed(() => {\n return activeWalletState.value?.accounts ?? null\n })\n\n const activeWalletAddresses = computed(() => {\n return activeWalletAccounts.value?.map((account) => account.address) ?? null\n })\n\n const activeAccount = computed(() => {\n return activeWalletState.value?.activeAccount ?? null\n })\n\n const activeAddress = computed(() => {\n return activeAccount.value?.address ?? null\n })\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.transactionSigner(txnGroup, indexesToSign)\n }\n\n const signData = (data: string, metadata: SignMetadata): Promise<SignDataResponse> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.signData(data, metadata)\n }\n\n const withPrivateKey = <T>(callback: (secretKey: Uint8Array) => Promise<T>): Promise<T> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.withPrivateKey(callback)\n }\n\n return {\n wallets,\n isReady,\n algodClient: computed(() => {\n if (!algodClient.value) {\n throw new Error('Algod client is undefined')\n }\n return algodClient.value\n }),\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signData,\n withPrivateKey,\n signTransactions,\n transactionSigner\n }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport { WalletManager, type AlgodConfig } from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\nimport type { SetAlgodClient } from './useWallet'\n\nexport function useNetwork() {\n const manager = inject<WalletManager>('walletManager')\n const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n const setAlgodClient = inject<SetAlgodClient>('setAlgodClient')\n\n if (!manager) {\n throw new Error('WalletManager plugin is not properly installed')\n }\n if (!algodClient || !setAlgodClient) {\n throw new Error('Algod client or setter not properly installed')\n }\n\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n\n // Create a reactive store for network config\n const networkConfig = useStore(manager.store, (state) => ({\n networks: { ...manager.networkConfig },\n activeNetwork: state.activeNetwork\n }))\n\n const activeNetworkConfig = computed(\n () => networkConfig.value.networks[networkConfig.value.activeNetwork]\n )\n\n const setActiveNetwork = async (networkId: string): Promise<void> => {\n if (networkId === activeNetwork.value) {\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(`[Vue] 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 setAlgodClient(newClient)\n\n console.info(`[Vue] ✅ Active network set to ${networkId}.`)\n }\n\n const updateAlgodConfig = (networkId: string, config: Partial<AlgodConfig>): void => {\n manager.updateAlgodConfig(networkId, config)\n manager.store.setState((state) => ({ ...state }))\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork.value) {\n console.info(`[Vue] 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 manager.store.setState((state) => ({ ...state }))\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork.value) {\n console.info(`[Vue] 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,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n"],"mappings":"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","names":["import_use_wallet","import_vue","import_vue_store","import_use_wallet","import_algosdk","import_vue","algosdk"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -22,6 +22,7 @@ interface Wallet {
|
|
|
22
22
|
setActive: () => void;
|
|
23
23
|
setActiveAccount: (address: string) => void;
|
|
24
24
|
canSignData: boolean;
|
|
25
|
+
canUsePrivateKey: boolean;
|
|
25
26
|
}
|
|
26
27
|
declare function useWallet(): {
|
|
27
28
|
wallets: vue.ComputedRef<Wallet[]>;
|
|
@@ -33,6 +34,7 @@ declare function useWallet(): {
|
|
|
33
34
|
activeAccount: vue.ComputedRef<WalletAccount | null>;
|
|
34
35
|
activeAddress: vue.ComputedRef<string | null>;
|
|
35
36
|
signData: (data: string, metadata: SignMetadata) => Promise<SignDataResponse>;
|
|
37
|
+
withPrivateKey: <T>(callback: (secretKey: Uint8Array) => Promise<T>) => Promise<T>;
|
|
36
38
|
signTransactions: <T extends algosdk.Transaction[] | Uint8Array[]>(txnGroup: T | T[], indexesToSign?: number[]) => Promise<(Uint8Array | null)[]>;
|
|
37
39
|
transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
|
|
38
40
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ interface Wallet {
|
|
|
22
22
|
setActive: () => void;
|
|
23
23
|
setActiveAccount: (address: string) => void;
|
|
24
24
|
canSignData: boolean;
|
|
25
|
+
canUsePrivateKey: boolean;
|
|
25
26
|
}
|
|
26
27
|
declare function useWallet(): {
|
|
27
28
|
wallets: vue.ComputedRef<Wallet[]>;
|
|
@@ -33,6 +34,7 @@ declare function useWallet(): {
|
|
|
33
34
|
activeAccount: vue.ComputedRef<WalletAccount | null>;
|
|
34
35
|
activeAddress: vue.ComputedRef<string | null>;
|
|
35
36
|
signData: (data: string, metadata: SignMetadata) => Promise<SignDataResponse>;
|
|
37
|
+
withPrivateKey: <T>(callback: (secretKey: Uint8Array) => Promise<T>) => Promise<T>;
|
|
36
38
|
signTransactions: <T extends algosdk.Transaction[] | Uint8Array[]>(txnGroup: T | T[], indexesToSign?: number[]) => Promise<(Uint8Array | null)[]>;
|
|
37
39
|
transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
|
|
38
40
|
};
|
package/dist/index.js
CHANGED
|
@@ -50,6 +50,7 @@ function useWallet() {
|
|
|
50
50
|
isConnected: !!walletState,
|
|
51
51
|
isActive: wallet.walletKey === activeWalletId.value,
|
|
52
52
|
canSignData: wallet.canSignData ?? false,
|
|
53
|
+
canUsePrivateKey: wallet.canUsePrivateKey ?? false,
|
|
53
54
|
connect: (args) => wallet.connect(args),
|
|
54
55
|
disconnect: () => wallet.disconnect(),
|
|
55
56
|
setActive: () => wallet.setActive(),
|
|
@@ -100,6 +101,12 @@ function useWallet() {
|
|
|
100
101
|
}
|
|
101
102
|
return activeBaseWallet.value.signData(data, metadata);
|
|
102
103
|
};
|
|
104
|
+
const withPrivateKey = (callback) => {
|
|
105
|
+
if (!activeBaseWallet.value) {
|
|
106
|
+
throw new Error("No active wallet");
|
|
107
|
+
}
|
|
108
|
+
return activeBaseWallet.value.withPrivateKey(callback);
|
|
109
|
+
};
|
|
103
110
|
return {
|
|
104
111
|
wallets,
|
|
105
112
|
isReady,
|
|
@@ -115,6 +122,7 @@ function useWallet() {
|
|
|
115
122
|
activeAccount,
|
|
116
123
|
activeAddress,
|
|
117
124
|
signData,
|
|
125
|
+
withPrivateKey,
|
|
118
126
|
signTransactions,
|
|
119
127
|
transactionSigner
|
|
120
128
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/walletManagerPlugin.ts","../src/useWallet.ts","../src/useNetwork.ts"],"sourcesContent":["export * from '@txnlab/use-wallet'\nexport { WalletManagerPlugin } from './walletManagerPlugin'\nexport { useWallet, type Wallet } from './useWallet'\nexport { useNetwork } from './useNetwork'\n","import { WalletManager, type WalletManagerConfig } from '@txnlab/use-wallet'\nimport { ref } from 'vue'\nimport type algosdk from 'algosdk'\n\nexport const WalletManagerPlugin = {\n install(app: any, options: WalletManagerConfig) {\n const manager = new WalletManager(options)\n const algodClient = ref(manager.algodClient)\n\n const setAlgodClient = (client: algosdk.Algodv2) => {\n algodClient.value = client\n manager.algodClient = client\n }\n\n app.provide('walletManager', manager)\n app.provide('algodClient', algodClient)\n app.provide('setAlgodClient', setAlgodClient)\n\n manager.resumeSessions().catch((error) => {\n console.error('Error resuming sessions:', error)\n })\n }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport {\n BaseWallet,\n WalletManager,\n type WalletAccount,\n type WalletKey,\n type WalletMetadata,\n type WalletId,\n type SignMetadata,\n type SignDataResponse\n} from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\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: 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 canSignData: boolean\n}\n\nexport type SetAlgodClient = (client: algosdk.Algodv2) => void\n\nexport function useWallet() {\n const manager = inject<WalletManager>('walletManager')\n const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n\n if (!manager) {\n throw new Error('WalletManager plugin is not properly installed')\n }\n if (!algodClient) {\n throw new Error('Algod client not properly installed')\n }\n\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = computed(() => managerStatus.value === 'ready')\n\n const walletStateMap = useStore(manager.store, (state) => state.wallets)\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n\n const transformToWallet = (wallet: BaseWallet): Wallet => {\n const walletState = walletStateMap.value[wallet.walletKey]\n return {\n id: wallet.id,\n walletKey: wallet.walletKey,\n metadata: wallet.metadata,\n accounts: walletState?.accounts ?? [],\n activeAccount: walletState?.activeAccount ?? null,\n isConnected: !!walletState,\n isActive: wallet.walletKey === activeWalletId.value,\n canSignData: wallet.canSignData ?? 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 = computed(() => {\n return [...manager.wallets.values()].map(transformToWallet)\n })\n\n const activeWallet = computed(() => {\n const wallet = activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n return wallet ? transformToWallet(wallet) : null\n })\n\n const activeBaseWallet = computed(() => {\n return activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n })\n\n const activeWalletState = computed(() => {\n const wallet = activeWallet.value\n return wallet ? walletStateMap.value[wallet.walletKey] || null : null\n })\n\n const activeWalletAccounts = computed(() => {\n return activeWalletState.value?.accounts ?? null\n })\n\n const activeWalletAddresses = computed(() => {\n return activeWalletAccounts.value?.map((account) => account.address) ?? null\n })\n\n const activeAccount = computed(() => {\n return activeWalletState.value?.activeAccount ?? null\n })\n\n const activeAddress = computed(() => {\n return activeAccount.value?.address ?? null\n })\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.transactionSigner(txnGroup, indexesToSign)\n }\n\n const signData = (data: string, metadata: SignMetadata): Promise<SignDataResponse> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.signData(data, metadata)\n }\n\n return {\n wallets,\n isReady,\n algodClient: computed(() => {\n if (!algodClient.value) {\n throw new Error('Algod client is undefined')\n }\n return algodClient.value\n }),\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signData,\n signTransactions,\n transactionSigner\n }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport { WalletManager, type AlgodConfig } from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\nimport type { SetAlgodClient } from './useWallet'\n\nexport function useNetwork() {\n const manager = inject<WalletManager>('walletManager')\n const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n const setAlgodClient = inject<SetAlgodClient>('setAlgodClient')\n\n if (!manager) {\n throw new Error('WalletManager plugin is not properly installed')\n }\n if (!algodClient || !setAlgodClient) {\n throw new Error('Algod client or setter not properly installed')\n }\n\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n\n // Create a reactive store for network config\n const networkConfig = useStore(manager.store, (state) => ({\n networks: { ...manager.networkConfig },\n activeNetwork: state.activeNetwork\n }))\n\n const activeNetworkConfig = computed(\n () => networkConfig.value.networks[networkConfig.value.activeNetwork]\n )\n\n const setActiveNetwork = async (networkId: string): Promise<void> => {\n if (networkId === activeNetwork.value) {\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(`[Vue] 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 setAlgodClient(newClient)\n\n console.info(`[Vue] ✅ Active network set to ${networkId}.`)\n }\n\n const updateAlgodConfig = (networkId: string, config: Partial<AlgodConfig>): void => {\n manager.updateAlgodConfig(networkId, config)\n manager.store.setState((state) => ({ ...state }))\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork.value) {\n console.info(`[Vue] 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 manager.store.setState((state) => ({ ...state }))\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork.value) {\n console.info(`[Vue] 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,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n"],"mappings":"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","names":["useStore","algosdk","computed","inject"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/walletManagerPlugin.ts","../src/useWallet.ts","../src/useNetwork.ts"],"sourcesContent":["export * from '@txnlab/use-wallet'\nexport { WalletManagerPlugin } from './walletManagerPlugin'\nexport { useWallet, type Wallet } from './useWallet'\nexport { useNetwork } from './useNetwork'\n","import { WalletManager, type WalletManagerConfig } from '@txnlab/use-wallet'\nimport { ref } from 'vue'\nimport type algosdk from 'algosdk'\n\nexport const WalletManagerPlugin = {\n install(app: any, options: WalletManagerConfig) {\n const manager = new WalletManager(options)\n const algodClient = ref(manager.algodClient)\n\n const setAlgodClient = (client: algosdk.Algodv2) => {\n algodClient.value = client\n manager.algodClient = client\n }\n\n app.provide('walletManager', manager)\n app.provide('algodClient', algodClient)\n app.provide('setAlgodClient', setAlgodClient)\n\n manager.resumeSessions().catch((error) => {\n console.error('Error resuming sessions:', error)\n })\n }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport {\n BaseWallet,\n WalletManager,\n type WalletAccount,\n type WalletKey,\n type WalletMetadata,\n type WalletId,\n type SignMetadata,\n type SignDataResponse\n} from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\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: 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 canSignData: boolean\n canUsePrivateKey: boolean\n}\n\nexport type SetAlgodClient = (client: algosdk.Algodv2) => void\n\nexport function useWallet() {\n const manager = inject<WalletManager>('walletManager')\n const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n\n if (!manager) {\n throw new Error('WalletManager plugin is not properly installed')\n }\n if (!algodClient) {\n throw new Error('Algod client not properly installed')\n }\n\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = computed(() => managerStatus.value === 'ready')\n\n const walletStateMap = useStore(manager.store, (state) => state.wallets)\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n\n const transformToWallet = (wallet: BaseWallet): Wallet => {\n const walletState = walletStateMap.value[wallet.walletKey]\n return {\n id: wallet.id,\n walletKey: wallet.walletKey,\n metadata: wallet.metadata,\n accounts: walletState?.accounts ?? [],\n activeAccount: walletState?.activeAccount ?? null,\n isConnected: !!walletState,\n isActive: wallet.walletKey === activeWalletId.value,\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 = computed(() => {\n return [...manager.wallets.values()].map(transformToWallet)\n })\n\n const activeWallet = computed(() => {\n const wallet = activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n return wallet ? transformToWallet(wallet) : null\n })\n\n const activeBaseWallet = computed(() => {\n return activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n })\n\n const activeWalletState = computed(() => {\n const wallet = activeWallet.value\n return wallet ? walletStateMap.value[wallet.walletKey] || null : null\n })\n\n const activeWalletAccounts = computed(() => {\n return activeWalletState.value?.accounts ?? null\n })\n\n const activeWalletAddresses = computed(() => {\n return activeWalletAccounts.value?.map((account) => account.address) ?? null\n })\n\n const activeAccount = computed(() => {\n return activeWalletState.value?.activeAccount ?? null\n })\n\n const activeAddress = computed(() => {\n return activeAccount.value?.address ?? null\n })\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.transactionSigner(txnGroup, indexesToSign)\n }\n\n const signData = (data: string, metadata: SignMetadata): Promise<SignDataResponse> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.signData(data, metadata)\n }\n\n const withPrivateKey = <T>(callback: (secretKey: Uint8Array) => Promise<T>): Promise<T> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.withPrivateKey(callback)\n }\n\n return {\n wallets,\n isReady,\n algodClient: computed(() => {\n if (!algodClient.value) {\n throw new Error('Algod client is undefined')\n }\n return algodClient.value\n }),\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signData,\n withPrivateKey,\n signTransactions,\n transactionSigner\n }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport { WalletManager, type AlgodConfig } from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\nimport type { SetAlgodClient } from './useWallet'\n\nexport function useNetwork() {\n const manager = inject<WalletManager>('walletManager')\n const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n const setAlgodClient = inject<SetAlgodClient>('setAlgodClient')\n\n if (!manager) {\n throw new Error('WalletManager plugin is not properly installed')\n }\n if (!algodClient || !setAlgodClient) {\n throw new Error('Algod client or setter not properly installed')\n }\n\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n\n // Create a reactive store for network config\n const networkConfig = useStore(manager.store, (state) => ({\n networks: { ...manager.networkConfig },\n activeNetwork: state.activeNetwork\n }))\n\n const activeNetworkConfig = computed(\n () => networkConfig.value.networks[networkConfig.value.activeNetwork]\n )\n\n const setActiveNetwork = async (networkId: string): Promise<void> => {\n if (networkId === activeNetwork.value) {\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(`[Vue] 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 setAlgodClient(newClient)\n\n console.info(`[Vue] ✅ Active network set to ${networkId}.`)\n }\n\n const updateAlgodConfig = (networkId: string, config: Partial<AlgodConfig>): void => {\n manager.updateAlgodConfig(networkId, config)\n manager.store.setState((state) => ({ ...state }))\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork.value) {\n console.info(`[Vue] 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 manager.store.setState((state) => ({ ...state }))\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork.value) {\n console.info(`[Vue] 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,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n"],"mappings":"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","names":["useStore","algosdk","computed","inject"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@txnlab/use-wallet-vue",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.6.0",
|
|
4
4
|
"description": "Vue library for integrating Algorand wallets into decentralized applications",
|
|
5
5
|
"author": "Doug Richar <drichar@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -31,20 +31,20 @@
|
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@tanstack/vue-store": "0.8.0",
|
|
34
|
-
"@txnlab/use-wallet": "4.
|
|
34
|
+
"@txnlab/use-wallet": "4.6.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"algosdk": "3.5.2",
|
|
38
38
|
"tsup": "8.5.1",
|
|
39
39
|
"typescript": "5.9.3",
|
|
40
|
-
"vue": "3.5.
|
|
40
|
+
"vue": "3.5.27"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
43
|
"@blockshake/defly-connect": "^1.2.1",
|
|
44
44
|
"@magic-ext/algorand": "^24.4.2",
|
|
45
45
|
"@perawallet/connect": "^1.4.1",
|
|
46
46
|
"@walletconnect/modal": "^2.7.0",
|
|
47
|
-
"@walletconnect/sign-client": "^2.23.
|
|
47
|
+
"@walletconnect/sign-client": "^2.23.4",
|
|
48
48
|
"algosdk": "^3.0.0",
|
|
49
49
|
"lute-connect": "^1.6.3",
|
|
50
50
|
"magic-sdk": "^29.4.2",
|
package/LICENSE.md
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
Copyright (c) 2024 TxnLab Inc.
|
|
2
|
-
|
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
-
a copy of this software and associated documentation files (the
|
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
-
the following conditions:
|
|
10
|
-
|
|
11
|
-
The above copyright notice and this permission notice shall be
|
|
12
|
-
included in all copies or substantial portions of the Software.
|
|
13
|
-
|
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|