@txnlab/use-wallet-defly 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/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.
@@ -0,0 +1,31 @@
1
+ import algosdk from "algosdk";
2
+ import { AdapterConstructorParams, BaseWallet, WalletAccount, WalletMetadata } from "@txnlab/use-wallet/adapter";
3
+ import { WalletAdapterConfig } from "@txnlab/use-wallet";
4
+
5
+ //#region src/adapter.d.ts
6
+ interface DeflyOptions {
7
+ bridge?: string;
8
+ shouldShowSignTxnToast?: boolean;
9
+ chainId?: 416001 | 416002 | 416003 | 4160;
10
+ }
11
+ declare class DeflyAdapter extends BaseWallet<DeflyOptions> {
12
+ private client;
13
+ constructor(params: AdapterConstructorParams<DeflyOptions>);
14
+ static defaultMetadata: WalletMetadata;
15
+ private initializeClient;
16
+ private manageWalletConnectSession;
17
+ connect: () => Promise<WalletAccount[]>;
18
+ disconnect: () => Promise<void>;
19
+ setActive: () => void;
20
+ resumeSession: () => Promise<void>;
21
+ private processTxns;
22
+ private processEncodedTxns;
23
+ signTransactions: <T extends algosdk.Transaction[] | Uint8Array[]>(txnGroup: T | T[], indexesToSign?: number[]) => Promise<(Uint8Array | null)[]>;
24
+ }
25
+ //#endregion
26
+ //#region src/index.d.ts
27
+ declare const WALLET_ID: "defly";
28
+ declare function defly(options?: DeflyOptions): WalletAdapterConfig;
29
+ //#endregion
30
+ export { DeflyAdapter, type DeflyOptions, WALLET_ID, defly };
31
+ //# sourceMappingURL=index.d.ts.map
package/dist/index.js ADDED
@@ -0,0 +1,206 @@
1
+ import algosdk from "algosdk";
2
+ import { BaseWallet, compareAccounts, flattenTxnGroup, isSignedTxn, isTransactionArray } from "@txnlab/use-wallet/adapter";
3
+ //#endregion
4
+ //#region src/adapter.ts
5
+ const ICON = `data:image/svg+xml;base64,${btoa(`
6
+ <svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
7
+ <rect width="1024" height="1024" />
8
+ <path fill="#FFFFFF" d="M779.9,684.4L512,230L244.1,684.4L512,529.5L779.9,684.4z" />
9
+ <path fill="#FFFFFF" d="M733.1,730L512,613.5L290.9,730L512,658L733.1,730z" />
10
+ </svg>
11
+ `)}`;
12
+ var DeflyAdapter = class extends BaseWallet {
13
+ client = null;
14
+ constructor(params) {
15
+ super(params);
16
+ }
17
+ static defaultMetadata = {
18
+ name: "Defly",
19
+ icon: ICON
20
+ };
21
+ async initializeClient() {
22
+ this.logger.info("Initializing client...");
23
+ const { DeflyWalletConnect } = await import("@blockshake/defly-connect");
24
+ const client = new DeflyWalletConnect(this.options);
25
+ this.client = client;
26
+ this.logger.info("Client initialized");
27
+ return client;
28
+ }
29
+ manageWalletConnectSession(action, targetWalletKey) {
30
+ const key = targetWalletKey || this.walletKey;
31
+ if (typeof localStorage === "undefined") return;
32
+ if (action === "backup") {
33
+ const data = localStorage.getItem("walletconnect");
34
+ if (data) {
35
+ localStorage.setItem(`walletconnect-${key}`, data);
36
+ localStorage.removeItem("walletconnect");
37
+ this.logger.debug(`Backed up WalletConnect session for ${key}`);
38
+ }
39
+ } else if (action === "restore") {
40
+ const data = localStorage.getItem(`walletconnect-${key}`);
41
+ if (data) {
42
+ localStorage.setItem("walletconnect", data);
43
+ localStorage.removeItem(`walletconnect-${key}`);
44
+ this.logger.debug(`Restored WalletConnect session for ${key}`);
45
+ }
46
+ }
47
+ }
48
+ connect = async () => {
49
+ this.logger.info("Connecting...");
50
+ const currentActiveWallet = this.store.getActiveWallet();
51
+ if (currentActiveWallet && currentActiveWallet !== this.id) this.manageWalletConnectSession("backup", currentActiveWallet);
52
+ const client = this.client || await this.initializeClient();
53
+ const accounts = await client.connect();
54
+ client.connector?.on("disconnect", this.onDisconnect);
55
+ if (accounts.length === 0) {
56
+ this.logger.error("No accounts found!");
57
+ throw new Error("No accounts found!");
58
+ }
59
+ const walletAccounts = accounts.map((address, idx) => ({
60
+ name: `${this.metadata.name} Account ${idx + 1}`,
61
+ address
62
+ }));
63
+ const walletState = {
64
+ accounts: walletAccounts,
65
+ activeAccount: walletAccounts[0]
66
+ };
67
+ this.store.addWallet(walletState);
68
+ this.logger.info("Connected successfully", walletState);
69
+ return walletAccounts;
70
+ };
71
+ disconnect = async () => {
72
+ this.logger.info("Disconnecting...");
73
+ const client = this.client || await this.initializeClient();
74
+ const currentActiveWallet = this.store.getActiveWallet();
75
+ if (currentActiveWallet && currentActiveWallet !== this.id) {
76
+ this.manageWalletConnectSession("backup", currentActiveWallet);
77
+ this.manageWalletConnectSession("restore", this.id);
78
+ await client.disconnect();
79
+ await new Promise((resolve) => setTimeout(resolve, 500));
80
+ this.manageWalletConnectSession("restore", currentActiveWallet);
81
+ } else await client.disconnect();
82
+ this.onDisconnect();
83
+ this.logger.info("Disconnected");
84
+ };
85
+ setActive = () => {
86
+ this.logger.info(`Set active wallet: ${this.id}`);
87
+ const currentActiveWallet = this.store.getActiveWallet();
88
+ if (currentActiveWallet && currentActiveWallet === "pera") this.manageWalletConnectSession("backup", currentActiveWallet);
89
+ this.manageWalletConnectSession("restore");
90
+ this.store.setActive();
91
+ };
92
+ resumeSession = async () => {
93
+ try {
94
+ const walletState = this.store.getWalletState();
95
+ if (!walletState) {
96
+ this.logger.info("No session to resume");
97
+ return;
98
+ }
99
+ if (this.store.getActiveWallet() === "pera") {
100
+ this.logger.info("Skipping reconnectSession for Defly (inactive)");
101
+ return;
102
+ }
103
+ this.logger.info("Resuming session...");
104
+ const accounts = await (this.client || await this.initializeClient()).reconnectSession();
105
+ if (accounts.length === 0) {
106
+ this.logger.error("No accounts found!");
107
+ throw new Error("No accounts found!");
108
+ }
109
+ const walletAccounts = accounts.map((address, idx) => ({
110
+ name: `${this.metadata.name} Account ${idx + 1}`,
111
+ address
112
+ }));
113
+ if (!compareAccounts(walletAccounts, walletState.accounts)) {
114
+ this.logger.warn("Session accounts mismatch, updating accounts", {
115
+ prev: walletState.accounts,
116
+ current: walletAccounts
117
+ });
118
+ this.store.setAccounts(walletAccounts);
119
+ }
120
+ this.logger.info("Session resumed successfully");
121
+ } catch (error) {
122
+ this.logger.error("Error resuming session:", error.message);
123
+ this.onDisconnect();
124
+ throw error;
125
+ }
126
+ };
127
+ processTxns(txnGroup, indexesToSign) {
128
+ const txnsToSign = [];
129
+ txnGroup.forEach((txn, index) => {
130
+ const isIndexMatch = !indexesToSign || indexesToSign.includes(index);
131
+ const signer = txn.sender.toString();
132
+ const canSignTxn = this.addresses.includes(signer);
133
+ if (isIndexMatch && canSignTxn) txnsToSign.push({ txn });
134
+ else txnsToSign.push({
135
+ txn,
136
+ signers: []
137
+ });
138
+ });
139
+ return txnsToSign;
140
+ }
141
+ processEncodedTxns(txnGroup, indexesToSign) {
142
+ const txnsToSign = [];
143
+ txnGroup.forEach((txnBuffer, index) => {
144
+ const isSigned = isSignedTxn(algosdk.msgpackRawDecode(txnBuffer));
145
+ const txn = isSigned ? algosdk.decodeSignedTransaction(txnBuffer).txn : algosdk.decodeUnsignedTransaction(txnBuffer);
146
+ const isIndexMatch = !indexesToSign || indexesToSign.includes(index);
147
+ const signer = txn.sender.toString();
148
+ const canSignTxn = !isSigned && this.addresses.includes(signer);
149
+ if (isIndexMatch && canSignTxn) txnsToSign.push({ txn });
150
+ else txnsToSign.push({
151
+ txn,
152
+ signers: []
153
+ });
154
+ });
155
+ return txnsToSign;
156
+ }
157
+ signTransactions = async (txnGroup, indexesToSign) => {
158
+ try {
159
+ this.logger.debug("Signing transactions...", {
160
+ txnGroup,
161
+ indexesToSign
162
+ });
163
+ let txnsToSign = [];
164
+ if (isTransactionArray(txnGroup)) {
165
+ const flatTxns = flattenTxnGroup(txnGroup);
166
+ txnsToSign = this.processTxns(flatTxns, indexesToSign);
167
+ } else {
168
+ const flatTxns = flattenTxnGroup(txnGroup);
169
+ txnsToSign = this.processEncodedTxns(flatTxns, indexesToSign);
170
+ }
171
+ const client = this.client || await this.initializeClient();
172
+ this.logger.debug("Sending processed transactions to wallet...", [txnsToSign]);
173
+ const signedTxns = await client.signTransaction([txnsToSign]);
174
+ this.logger.debug("Received signed transactions from wallet", signedTxns);
175
+ const result = txnsToSign.reduce((acc, txn) => {
176
+ if (txn.signers && txn.signers.length == 0) acc.push(null);
177
+ else {
178
+ const signedTxn = signedTxns.shift();
179
+ if (signedTxn) acc.push(signedTxn);
180
+ }
181
+ return acc;
182
+ }, []);
183
+ this.logger.debug("Transactions signed successfully", result);
184
+ return result;
185
+ } catch (error) {
186
+ this.logger.error("Error signing transactions:", error.message);
187
+ throw error;
188
+ }
189
+ };
190
+ };
191
+ //#endregion
192
+ //#region src/index.ts
193
+ const WALLET_ID = "defly";
194
+ function defly(options) {
195
+ return {
196
+ id: WALLET_ID,
197
+ metadata: DeflyAdapter.defaultMetadata,
198
+ Adapter: DeflyAdapter,
199
+ options,
200
+ capabilities: { supportedNetworks: ["mainnet", "testnet"] }
201
+ };
202
+ }
203
+ //#endregion
204
+ export { DeflyAdapter, WALLET_ID, defly };
205
+
206
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/icon.ts","../src/adapter.ts","../src/index.ts"],"sourcesContent":["export const icon = `\n<svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"1024\" height=\"1024\" />\n <path fill=\"#FFFFFF\" d=\"M779.9,684.4L512,230L244.1,684.4L512,529.5L779.9,684.4z\" />\n <path fill=\"#FFFFFF\" d=\"M733.1,730L512,613.5L290.9,730L512,658L733.1,730z\" />\n</svg>\n`\n","import algosdk from 'algosdk'\nimport {\n BaseWallet,\n compareAccounts,\n flattenTxnGroup,\n isSignedTxn,\n isTransactionArray,\n type AdapterConstructorParams,\n type SignerTransaction,\n type WalletAccount,\n type WalletMetadata,\n type WalletState\n} from '@txnlab/use-wallet/adapter'\nimport type { DeflyWalletConnect } from '@blockshake/defly-connect'\n\nexport interface DeflyOptions {\n bridge?: string\n shouldShowSignTxnToast?: boolean\n chainId?: 416001 | 416002 | 416003 | 4160\n}\n\nimport { icon } from './icon'\n\nconst ICON = `data:image/svg+xml;base64,${btoa(icon)}`\n\nexport class DeflyAdapter extends BaseWallet<DeflyOptions> {\n private client: DeflyWalletConnect | null = null\n\n constructor(params: AdapterConstructorParams<DeflyOptions>) {\n super(params)\n }\n\n static defaultMetadata: WalletMetadata = {\n name: 'Defly',\n icon: ICON\n }\n\n private async initializeClient(): Promise<DeflyWalletConnect> {\n this.logger.info('Initializing client...')\n const { DeflyWalletConnect } = await import('@blockshake/defly-connect')\n const client = new DeflyWalletConnect(this.options)\n this.client = client\n this.logger.info('Client initialized')\n return client\n }\n\n private manageWalletConnectSession(action: 'backup' | 'restore', targetWalletKey?: string): void {\n const key = targetWalletKey || this.walletKey\n if (typeof localStorage === 'undefined') return\n\n if (action === 'backup') {\n const data = localStorage.getItem('walletconnect')\n if (data) {\n localStorage.setItem(`walletconnect-${key}`, data)\n localStorage.removeItem('walletconnect')\n this.logger.debug(`Backed up WalletConnect session for ${key}`)\n }\n } else if (action === 'restore') {\n const data = localStorage.getItem(`walletconnect-${key}`)\n if (data) {\n localStorage.setItem('walletconnect', data)\n localStorage.removeItem(`walletconnect-${key}`)\n this.logger.debug(`Restored WalletConnect session for ${key}`)\n }\n }\n }\n\n public connect = async (): Promise<WalletAccount[]> => {\n this.logger.info('Connecting...')\n const currentActiveWallet = this.store.getActiveWallet()\n if (currentActiveWallet && currentActiveWallet !== this.id) {\n this.manageWalletConnectSession('backup', currentActiveWallet)\n }\n const client = this.client || (await this.initializeClient())\n const accounts = await client.connect()\n\n // Listen for disconnect event\n client.connector?.on('disconnect', this.onDisconnect)\n\n if (accounts.length === 0) {\n this.logger.error('No accounts found!')\n throw new Error('No accounts found!')\n }\n\n const walletAccounts = accounts.map((address: string, idx: number) => ({\n name: `${this.metadata.name} Account ${idx + 1}`,\n address\n }))\n\n const activeAccount = walletAccounts[0]\n\n const walletState: WalletState = {\n accounts: walletAccounts,\n activeAccount\n }\n\n this.store.addWallet(walletState)\n\n this.logger.info('Connected successfully', walletState)\n return walletAccounts\n }\n\n public disconnect = async (): Promise<void> => {\n this.logger.info('Disconnecting...')\n const client = this.client || (await this.initializeClient())\n\n const currentActiveWallet = this.store.getActiveWallet()\n if (currentActiveWallet && currentActiveWallet !== this.id) {\n this.manageWalletConnectSession('backup', currentActiveWallet)\n this.manageWalletConnectSession('restore', this.id)\n await client.disconnect()\n // Wait for the disconnect to complete (race condition)\n await new Promise((resolve) => setTimeout(resolve, 500))\n this.manageWalletConnectSession('restore', currentActiveWallet)\n } else {\n await client.disconnect()\n }\n\n this.onDisconnect()\n this.logger.info('Disconnected')\n }\n\n public setActive = (): void => {\n this.logger.info(`Set active wallet: ${this.id}`)\n const currentActiveWallet = this.store.getActiveWallet()\n if (currentActiveWallet && currentActiveWallet === 'pera') {\n this.manageWalletConnectSession('backup', currentActiveWallet)\n }\n this.manageWalletConnectSession('restore')\n this.store.setActive()\n }\n\n public resumeSession = async (): Promise<void> => {\n try {\n const walletState = this.store.getWalletState()\n\n // No session to resume\n if (!walletState) {\n this.logger.info('No session to resume')\n return\n }\n\n // If Pera is active, skip reconnectSession for Defly\n if (this.store.getActiveWallet() === 'pera') {\n this.logger.info('Skipping reconnectSession for Defly (inactive)')\n return\n }\n\n this.logger.info('Resuming session...')\n\n const client = this.client || (await this.initializeClient())\n const accounts = await client.reconnectSession()\n\n if (accounts.length === 0) {\n this.logger.error('No accounts found!')\n throw new Error('No accounts found!')\n }\n\n const walletAccounts = accounts.map((address: string, idx: number) => ({\n name: `${this.metadata.name} Account ${idx + 1}`,\n address\n }))\n\n const match = compareAccounts(walletAccounts, walletState.accounts)\n\n if (!match) {\n this.logger.warn('Session accounts mismatch, updating accounts', {\n prev: walletState.accounts,\n current: walletAccounts\n })\n this.store.setAccounts(walletAccounts)\n }\n this.logger.info('Session resumed successfully')\n } catch (error: any) {\n this.logger.error('Error resuming session:', error.message)\n this.onDisconnect()\n throw error\n }\n }\n\n private processTxns(\n txnGroup: algosdk.Transaction[],\n indexesToSign?: number[]\n ): SignerTransaction[] {\n const txnsToSign: SignerTransaction[] = []\n\n txnGroup.forEach((txn, index) => {\n const isIndexMatch = !indexesToSign || indexesToSign.includes(index)\n const signer = txn.sender.toString()\n const canSignTxn = this.addresses.includes(signer)\n\n if (isIndexMatch && canSignTxn) {\n txnsToSign.push({ txn })\n } else {\n txnsToSign.push({ txn, signers: [] })\n }\n })\n\n return txnsToSign\n }\n\n private processEncodedTxns(\n txnGroup: Uint8Array[],\n indexesToSign?: number[]\n ): SignerTransaction[] {\n const txnsToSign: SignerTransaction[] = []\n\n txnGroup.forEach((txnBuffer, index) => {\n const decodedObj = algosdk.msgpackRawDecode(txnBuffer)\n const isSigned = isSignedTxn(decodedObj)\n\n const txn: algosdk.Transaction = isSigned\n ? algosdk.decodeSignedTransaction(txnBuffer).txn\n : algosdk.decodeUnsignedTransaction(txnBuffer)\n\n const isIndexMatch = !indexesToSign || indexesToSign.includes(index)\n const signer = txn.sender.toString()\n const canSignTxn = !isSigned && this.addresses.includes(signer)\n\n if (isIndexMatch && canSignTxn) {\n txnsToSign.push({ txn })\n } else {\n txnsToSign.push({ txn, signers: [] })\n }\n })\n\n return txnsToSign\n }\n\n public signTransactions = async <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n try {\n this.logger.debug('Signing transactions...', { txnGroup, indexesToSign })\n let txnsToSign: SignerTransaction[] = []\n\n // Determine type and process transactions for signing\n if (isTransactionArray(txnGroup)) {\n const flatTxns: algosdk.Transaction[] = flattenTxnGroup(txnGroup)\n txnsToSign = this.processTxns(flatTxns, indexesToSign)\n } else {\n const flatTxns: Uint8Array[] = flattenTxnGroup(txnGroup as Uint8Array[])\n txnsToSign = this.processEncodedTxns(flatTxns, indexesToSign)\n }\n\n const client = this.client || (await this.initializeClient())\n\n this.logger.debug('Sending processed transactions to wallet...', [txnsToSign])\n\n // Sign transactions\n const signedTxns = await client.signTransaction([txnsToSign])\n this.logger.debug('Received signed transactions from wallet', signedTxns)\n\n // ARC-0001 - Return null for unsigned transactions\n const result = txnsToSign.reduce<(Uint8Array | null)[]>((acc, txn) => {\n if (txn.signers && txn.signers.length == 0) {\n acc.push(null)\n } else {\n const signedTxn = signedTxns.shift()\n if (signedTxn) {\n acc.push(signedTxn)\n }\n }\n return acc\n }, [])\n\n this.logger.debug('Transactions signed successfully', result)\n return result\n } catch (error: any) {\n this.logger.error('Error signing transactions:', error.message)\n throw error\n }\n }\n}\n","import { DeflyAdapter } from './adapter'\nimport type { DeflyOptions } from './adapter'\nimport type { WalletAdapterConfig } from '@txnlab/use-wallet'\n\nexport const WALLET_ID = 'defly' as const\n\nexport function defly(options?: DeflyOptions): WalletAdapterConfig {\n return {\n id: WALLET_ID,\n metadata: DeflyAdapter.defaultMetadata,\n Adapter: DeflyAdapter as unknown as WalletAdapterConfig['Adapter'],\n options: options as unknown as Record<string, unknown> | undefined,\n capabilities: { supportedNetworks: ['mainnet', 'testnet'] }\n }\n}\n\nexport { DeflyAdapter }\nexport type { DeflyOptions }\n"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@txnlab/use-wallet-defly",
3
+ "version": "5.0.0-rc.1",
4
+ "publishConfig": {
5
+ "access": "public",
6
+ "provenance": true
7
+ },
8
+ "description": "Defly Wallet adapter for @txnlab/use-wallet",
9
+ "author": "Doug Richar <drichar@gmail.com>",
10
+ "license": "MIT",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/txnlab/use-wallet.git",
14
+ "directory": "packages/wallets/defly"
15
+ },
16
+ "type": "module",
17
+ "main": "./dist/index.js",
18
+ "types": "./dist/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "default": "./dist/index.js"
23
+ }
24
+ },
25
+ "files": [
26
+ "dist"
27
+ ],
28
+ "peerDependencies": {
29
+ "@txnlab/use-wallet": "^5.0.0",
30
+ "algosdk": "^3.0.0"
31
+ },
32
+ "dependencies": {
33
+ "@blockshake/defly-connect": "1.2.1"
34
+ },
35
+ "devDependencies": {
36
+ "@txnlab/use-wallet": "5.0.0-rc.1",
37
+ "algosdk": "3.5.2",
38
+ "tsdown": "0.21.0",
39
+ "typescript": "5.9.3"
40
+ },
41
+ "scripts": {
42
+ "build": "tsdown",
43
+ "start": "tsdown --watch",
44
+ "test": "vitest run",
45
+ "test:watch": "vitest --watch",
46
+ "lint": "eslint \"src/**/*.{js,ts}\"",
47
+ "typecheck": "tsc --noEmit"
48
+ }
49
+ }