@txnlab/use-wallet-w3wallet 5.0.0-rc.3 → 5.0.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/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # @txnlab/use-wallet-w3wallet
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@txnlab/use-wallet-w3wallet)](https://www.npmjs.com/package/@txnlab/use-wallet-w3wallet)
4
+ [![License](https://img.shields.io/github/license/TxnLab/use-wallet)](https://github.com/TxnLab/use-wallet/blob/main/LICENSE)
5
+
6
+ W3 Wallet adapter for [use-wallet](https://github.com/TxnLab/use-wallet), the Algorand wallet integration library.
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ npm install @txnlab/use-wallet @txnlab/use-wallet-w3wallet
12
+ ```
13
+
14
+ If you use a framework adapter (`@txnlab/use-wallet-react`, `-vue`, `-solid`, or `-svelte`), install it in place of `@txnlab/use-wallet`.
15
+
16
+ ## Usage
17
+
18
+ ```typescript
19
+ import { WalletManager } from '@txnlab/use-wallet'
20
+ import { w3wallet } from '@txnlab/use-wallet-w3wallet'
21
+
22
+ const manager = new WalletManager({
23
+ wallets: [w3wallet()]
24
+ })
25
+ ```
26
+
27
+ Multi-currency wallet with desktop, mobile, and browser extension support. Supports MainNet only.
28
+
29
+ The factory also accepts an optional `metadata` option to override the wallet's display name and icon.
30
+
31
+ ### Visit [txnlab.gitbook.io/use-wallet](https://txnlab.gitbook.io/use-wallet) for docs, guides, and examples!
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import algosdk from "algosdk";
2
2
  import { AdapterConstructorParams, BaseWallet, WalletAccount, WalletMetadata, WalletTransaction } from "@txnlab/use-wallet/adapter";
3
- import { WalletAdapterConfig } from "@txnlab/use-wallet";
3
+ import { WalletAdapterConfig, WalletFactoryOptions } from "@txnlab/use-wallet";
4
4
 
5
5
  //#region src/adapter.d.ts
6
6
  interface W3WalletProvider {
@@ -23,7 +23,7 @@ declare class W3WalletAdapter extends BaseWallet {
23
23
  //#endregion
24
24
  //#region src/index.d.ts
25
25
  declare const WALLET_ID: "w3wallet";
26
- declare function w3wallet(): WalletAdapterConfig;
26
+ declare function w3wallet(options?: WalletFactoryOptions): WalletAdapterConfig;
27
27
  //#endregion
28
28
  export { W3WalletAdapter, type W3WalletProvider, WALLET_ID, w3wallet };
29
29
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -127,10 +127,13 @@ var W3WalletAdapter = class extends BaseWallet {
127
127
  //#endregion
128
128
  //#region src/index.ts
129
129
  const WALLET_ID = "w3wallet";
130
- function w3wallet() {
130
+ function w3wallet(options) {
131
131
  return {
132
132
  id: WALLET_ID,
133
- metadata: W3WalletAdapter.defaultMetadata,
133
+ metadata: {
134
+ ...W3WalletAdapter.defaultMetadata,
135
+ ...options?.metadata
136
+ },
134
137
  Adapter: W3WalletAdapter,
135
138
  capabilities: { supportedNetworks: ["mainnet"] }
136
139
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/icon.ts","../src/adapter.ts","../src/index.ts"],"sourcesContent":["export const icon = `\n<svg width=\"860\" height=\"860\" viewBox=\"0 0 860 860\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"860\" height=\"860\" rx=\"30\" fill=\"#151923\"/>\n <path d=\"M766 207L496.627 623.406C463.521 675.336 382.014 652.248 382.014 590.941V432.568L260.638 623.28C227.559 675.255 146 652.186 146 590.854V274.844H234.646V499.761L356.022 309.049C389.101 257.074 470.66 280.143 470.66 341.475V499.978L660.146 207L766 207Z\" fill=\"#4BB7D1\"/>\n</svg>\n`\n","import algosdk from 'algosdk'\nimport {\n BaseWallet,\n base64ToByteArray,\n byteArrayToBase64,\n flattenTxnGroup,\n isSignedTxn,\n isTransactionArray,\n type AdapterConstructorParams,\n type WalletAccount,\n type WalletMetadata,\n type WalletState,\n type WalletTransaction\n} from '@txnlab/use-wallet/adapter'\n\nexport interface W3WalletProvider {\n isConnected: () => Promise<boolean>\n account: () => Promise<WalletAccount>\n signTxns: (transactions: WalletTransaction[]) => Promise<(string | null)[]>\n}\n\ntype WindowExtended = { w3walletAlgorand: W3WalletProvider } & Window & typeof globalThis\n\nimport { icon } from './icon'\n\nconst ICON = `data:image/svg+xml;base64,${btoa(icon)}`\n\nexport class W3WalletAdapter extends BaseWallet {\n private client: W3WalletProvider | null = null\n\n constructor(params: AdapterConstructorParams) {\n super(params)\n }\n\n static defaultMetadata: WalletMetadata = {\n name: 'W3 Wallet',\n icon: ICON\n }\n\n private async initializeClient(): Promise<W3WalletProvider> {\n this.logger.info('Initializing client...')\n if (\n typeof window === 'undefined' ||\n (window as WindowExtended).w3walletAlgorand === undefined\n ) {\n this.logger.error('W3 Wallet is not available.')\n throw new Error('W3 Wallet is not available.')\n }\n const client = (window as WindowExtended).w3walletAlgorand\n this.client = client\n this.logger.info('Client initialized')\n return client\n }\n\n public connect = async (): Promise<WalletAccount[]> => {\n this.logger.info('Connecting...')\n const client = this.client || (await this.initializeClient())\n\n const activeAccount = await client.account()\n\n const walletState: WalletState = {\n accounts: [activeAccount],\n activeAccount\n }\n\n this.store.addWallet(walletState)\n\n this.logger.info('Connected successfully', walletState)\n return [activeAccount]\n }\n\n public disconnect = async (): Promise<void> => {\n this.logger.info('Disconnecting...')\n this.onDisconnect()\n this.logger.info('Disconnected')\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 this.logger.info('Resuming session...')\n const client = await this.initializeClient()\n const isConnected = await client.isConnected()\n\n if (!isConnected) {\n this.logger.error('W3 Wallet is not connected.')\n throw new Error('W3 Wallet is not connected.')\n }\n this.logger.info('Session resumed')\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 ): WalletTransaction[] {\n const txnsToSign: WalletTransaction[] = []\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 const txnString = byteArrayToBase64(txn.toByte())\n\n if (isIndexMatch && canSignTxn) {\n txnsToSign.push({ txn: txnString })\n } else {\n txnsToSign.push({ txn: txnString, signers: [] })\n }\n })\n\n return txnsToSign\n }\n\n private processEncodedTxns(\n txnGroup: Uint8Array[],\n indexesToSign?: number[]\n ): WalletTransaction[] {\n const txnsToSign: WalletTransaction[] = []\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 const txnString = byteArrayToBase64(txn.toByte())\n\n if (isIndexMatch && canSignTxn) {\n txnsToSign.push({ txn: txnString })\n } else {\n txnsToSign.push({ txn: txnString, 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: WalletTransaction[] = []\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 signTxnsResult = await client.signTxns(txnsToSign)\n this.logger.debug('Received signed transactions from wallet', signTxnsResult)\n\n // Convert base64 to Uint8Array\n const result = signTxnsResult.map((value) => {\n if (value === null) {\n return null\n }\n return base64ToByteArray(value)\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 { W3WalletAdapter } from './adapter'\nimport type { WalletAdapterConfig } from '@txnlab/use-wallet'\n\nexport const WALLET_ID = 'w3wallet' as const\n\nexport function w3wallet(): WalletAdapterConfig {\n return {\n id: WALLET_ID,\n metadata: W3WalletAdapter.defaultMetadata,\n Adapter: W3WalletAdapter as unknown as WalletAdapterConfig['Adapter'],\n capabilities: { supportedNetworks: ['mainnet'] }\n }\n}\n\nexport { W3WalletAdapter }\nexport type { W3WalletProvider } from './adapter'\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/icon.ts","../src/adapter.ts","../src/index.ts"],"sourcesContent":["export const icon = `\n<svg width=\"860\" height=\"860\" viewBox=\"0 0 860 860\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"860\" height=\"860\" rx=\"30\" fill=\"#151923\"/>\n <path d=\"M766 207L496.627 623.406C463.521 675.336 382.014 652.248 382.014 590.941V432.568L260.638 623.28C227.559 675.255 146 652.186 146 590.854V274.844H234.646V499.761L356.022 309.049C389.101 257.074 470.66 280.143 470.66 341.475V499.978L660.146 207L766 207Z\" fill=\"#4BB7D1\"/>\n</svg>\n`\n","import algosdk from 'algosdk'\nimport {\n BaseWallet,\n base64ToByteArray,\n byteArrayToBase64,\n flattenTxnGroup,\n isSignedTxn,\n isTransactionArray,\n type AdapterConstructorParams,\n type WalletAccount,\n type WalletMetadata,\n type WalletState,\n type WalletTransaction\n} from '@txnlab/use-wallet/adapter'\n\nexport interface W3WalletProvider {\n isConnected: () => Promise<boolean>\n account: () => Promise<WalletAccount>\n signTxns: (transactions: WalletTransaction[]) => Promise<(string | null)[]>\n}\n\ntype WindowExtended = { w3walletAlgorand: W3WalletProvider } & Window & typeof globalThis\n\nimport { icon } from './icon'\n\nconst ICON = `data:image/svg+xml;base64,${btoa(icon)}`\n\nexport class W3WalletAdapter extends BaseWallet {\n private client: W3WalletProvider | null = null\n\n constructor(params: AdapterConstructorParams) {\n super(params)\n }\n\n static defaultMetadata: WalletMetadata = {\n name: 'W3 Wallet',\n icon: ICON\n }\n\n private async initializeClient(): Promise<W3WalletProvider> {\n this.logger.info('Initializing client...')\n if (\n typeof window === 'undefined' ||\n (window as WindowExtended).w3walletAlgorand === undefined\n ) {\n this.logger.error('W3 Wallet is not available.')\n throw new Error('W3 Wallet is not available.')\n }\n const client = (window as WindowExtended).w3walletAlgorand\n this.client = client\n this.logger.info('Client initialized')\n return client\n }\n\n public connect = async (): Promise<WalletAccount[]> => {\n this.logger.info('Connecting...')\n const client = this.client || (await this.initializeClient())\n\n const activeAccount = await client.account()\n\n const walletState: WalletState = {\n accounts: [activeAccount],\n activeAccount\n }\n\n this.store.addWallet(walletState)\n\n this.logger.info('Connected successfully', walletState)\n return [activeAccount]\n }\n\n public disconnect = async (): Promise<void> => {\n this.logger.info('Disconnecting...')\n this.onDisconnect()\n this.logger.info('Disconnected')\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 this.logger.info('Resuming session...')\n const client = await this.initializeClient()\n const isConnected = await client.isConnected()\n\n if (!isConnected) {\n this.logger.error('W3 Wallet is not connected.')\n throw new Error('W3 Wallet is not connected.')\n }\n this.logger.info('Session resumed')\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 ): WalletTransaction[] {\n const txnsToSign: WalletTransaction[] = []\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 const txnString = byteArrayToBase64(txn.toByte())\n\n if (isIndexMatch && canSignTxn) {\n txnsToSign.push({ txn: txnString })\n } else {\n txnsToSign.push({ txn: txnString, signers: [] })\n }\n })\n\n return txnsToSign\n }\n\n private processEncodedTxns(\n txnGroup: Uint8Array[],\n indexesToSign?: number[]\n ): WalletTransaction[] {\n const txnsToSign: WalletTransaction[] = []\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 const txnString = byteArrayToBase64(txn.toByte())\n\n if (isIndexMatch && canSignTxn) {\n txnsToSign.push({ txn: txnString })\n } else {\n txnsToSign.push({ txn: txnString, 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: WalletTransaction[] = []\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 signTxnsResult = await client.signTxns(txnsToSign)\n this.logger.debug('Received signed transactions from wallet', signTxnsResult)\n\n // Convert base64 to Uint8Array\n const result = signTxnsResult.map((value) => {\n if (value === null) {\n return null\n }\n return base64ToByteArray(value)\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 { W3WalletAdapter } from './adapter'\nimport type { WalletAdapterConfig, WalletFactoryOptions } from '@txnlab/use-wallet'\n\nexport const WALLET_ID = 'w3wallet' as const\n\nexport function w3wallet(options?: WalletFactoryOptions): WalletAdapterConfig {\n return {\n id: WALLET_ID,\n metadata: { ...W3WalletAdapter.defaultMetadata, ...options?.metadata },\n Adapter: W3WalletAdapter as unknown as WalletAdapterConfig['Adapter'],\n capabilities: { supportedNetworks: ['mainnet'] }\n }\n}\n\nexport { W3WalletAdapter }\nexport type { W3WalletProvider } from './adapter'\n"],"mappings":";;;;ACyBA,MAAM,OAAO,6BAA6B,KDzBtB;;;;;ECyBgC;AAEpD,IAAa,kBAAb,cAAqC,WAAW;CAC9C,SAA0C;CAE1C,YAAY,QAAkC;AAC5C,QAAM,OAAO;;CAGf,OAAO,kBAAkC;EACvC,MAAM;EACN,MAAM;EACP;CAED,MAAc,mBAA8C;AAC1D,OAAK,OAAO,KAAK,yBAAyB;AAC1C,MACE,OAAO,WAAW,eACjB,OAA0B,qBAAqB,KAAA,GAChD;AACA,QAAK,OAAO,MAAM,8BAA8B;AAChD,SAAM,IAAI,MAAM,8BAA8B;;EAEhD,MAAM,SAAU,OAA0B;AAC1C,OAAK,SAAS;AACd,OAAK,OAAO,KAAK,qBAAqB;AACtC,SAAO;;CAGT,UAAiB,YAAsC;AACrD,OAAK,OAAO,KAAK,gBAAgB;EAGjC,MAAM,gBAAgB,OAFP,KAAK,UAAW,MAAM,KAAK,kBAAkB,EAEzB,SAAS;EAE5C,MAAM,cAA2B;GAC/B,UAAU,CAAC,cAAc;GACzB;GACD;AAED,OAAK,MAAM,UAAU,YAAY;AAEjC,OAAK,OAAO,KAAK,0BAA0B,YAAY;AACvD,SAAO,CAAC,cAAc;;CAGxB,aAAoB,YAA2B;AAC7C,OAAK,OAAO,KAAK,mBAAmB;AACpC,OAAK,cAAc;AACnB,OAAK,OAAO,KAAK,eAAe;;CAGlC,gBAAuB,YAA2B;AAChD,MAAI;AAIF,OAAI,CAHgB,KAAK,MAAM,gBAAgB,EAG7B;AAChB,SAAK,OAAO,KAAK,uBAAuB;AACxC;;AAGF,QAAK,OAAO,KAAK,sBAAsB;AAIvC,OAAI,CAFgB,OADL,MAAM,KAAK,kBAAkB,EACX,aAAa,EAE5B;AAChB,SAAK,OAAO,MAAM,8BAA8B;AAChD,UAAM,IAAI,MAAM,8BAA8B;;AAEhD,QAAK,OAAO,KAAK,kBAAkB;WAC5B,OAAY;AACnB,QAAK,OAAO,MAAM,2BAA2B,MAAM,QAAQ;AAC3D,QAAK,cAAc;AACnB,SAAM;;;CAIV,YACE,UACA,eACqB;EACrB,MAAM,aAAkC,EAAE;AAE1C,WAAS,SAAS,KAAK,UAAU;GAC/B,MAAM,eAAe,CAAC,iBAAiB,cAAc,SAAS,MAAM;GACpE,MAAM,SAAS,IAAI,OAAO,UAAU;GACpC,MAAM,aAAa,KAAK,UAAU,SAAS,OAAO;GAElD,MAAM,YAAY,kBAAkB,IAAI,QAAQ,CAAC;AAEjD,OAAI,gBAAgB,WAClB,YAAW,KAAK,EAAE,KAAK,WAAW,CAAC;OAEnC,YAAW,KAAK;IAAE,KAAK;IAAW,SAAS,EAAE;IAAE,CAAC;IAElD;AAEF,SAAO;;CAGT,mBACE,UACA,eACqB;EACrB,MAAM,aAAkC,EAAE;AAE1C,WAAS,SAAS,WAAW,UAAU;GAErC,MAAM,WAAW,YADE,QAAQ,iBAAiB,UAAU,CACd;GAExC,MAAM,MAA2B,WAC7B,QAAQ,wBAAwB,UAAU,CAAC,MAC3C,QAAQ,0BAA0B,UAAU;GAEhD,MAAM,eAAe,CAAC,iBAAiB,cAAc,SAAS,MAAM;GACpE,MAAM,SAAS,IAAI,OAAO,UAAU;GACpC,MAAM,aAAa,CAAC,YAAY,KAAK,UAAU,SAAS,OAAO;GAE/D,MAAM,YAAY,kBAAkB,IAAI,QAAQ,CAAC;AAEjD,OAAI,gBAAgB,WAClB,YAAW,KAAK,EAAE,KAAK,WAAW,CAAC;OAEnC,YAAW,KAAK;IAAE,KAAK;IAAW,SAAS,EAAE;IAAE,CAAC;IAElD;AAEF,SAAO;;CAGT,mBAA0B,OACxB,UACA,kBACmC;AACnC,MAAI;AACF,QAAK,OAAO,MAAM,2BAA2B;IAAE;IAAU;IAAe,CAAC;GACzE,IAAI,aAAkC,EAAE;AAGxC,OAAI,mBAAmB,SAAS,EAAE;IAChC,MAAM,WAAkC,gBAAgB,SAAS;AACjE,iBAAa,KAAK,YAAY,UAAU,cAAc;UACjD;IACL,MAAM,WAAyB,gBAAgB,SAAyB;AACxE,iBAAa,KAAK,mBAAmB,UAAU,cAAc;;GAG/D,MAAM,SAAS,KAAK,UAAW,MAAM,KAAK,kBAAkB;AAE5D,QAAK,OAAO,MAAM,+CAA+C,WAAW;GAG5E,MAAM,iBAAiB,MAAM,OAAO,SAAS,WAAW;AACxD,QAAK,OAAO,MAAM,4CAA4C,eAAe;GAG7E,MAAM,SAAS,eAAe,KAAK,UAAU;AAC3C,QAAI,UAAU,KACZ,QAAO;AAET,WAAO,kBAAkB,MAAM;KAC/B;AAEF,QAAK,OAAO,MAAM,oCAAoC,OAAO;AAC7D,UAAO;WACA,OAAY;AACnB,QAAK,OAAO,MAAM,+BAA+B,MAAM,QAAQ;AAC/D,SAAM;;;;;;AC9LZ,MAAa,YAAY;AAEzB,SAAgB,SAAS,SAAqD;AAC5E,QAAO;EACL,IAAI;EACJ,UAAU;GAAE,GAAG,gBAAgB;GAAiB,GAAG,SAAS;GAAU;EACtE,SAAS;EACT,cAAc,EAAE,mBAAmB,CAAC,UAAU,EAAE;EACjD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@txnlab/use-wallet-w3wallet",
3
- "version": "5.0.0-rc.3",
3
+ "version": "5.0.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -8,12 +8,16 @@
8
8
  "description": "W3 Wallet adapter for @txnlab/use-wallet",
9
9
  "author": "Doug Richar <drichar@gmail.com>",
10
10
  "license": "MIT",
11
+ "engines": {
12
+ "node": ">=22"
13
+ },
11
14
  "repository": {
12
15
  "type": "git",
13
16
  "url": "git+https://github.com/TxnLab/use-wallet.git",
14
17
  "directory": "packages/wallets/w3wallet"
15
18
  },
16
19
  "type": "module",
20
+ "sideEffects": false,
17
21
  "main": "./dist/index.js",
18
22
  "types": "./dist/index.d.ts",
19
23
  "exports": {
@@ -30,10 +34,10 @@
30
34
  "algosdk": "^3.0.0"
31
35
  },
32
36
  "devDependencies": {
33
- "algosdk": "3.5.2",
37
+ "algosdk": "3.6.0",
34
38
  "tsdown": "0.21.0",
35
39
  "typescript": "5.9.3",
36
- "@txnlab/use-wallet": "5.0.0-rc.3"
40
+ "@txnlab/use-wallet": "5.0.0"
37
41
  },
38
42
  "scripts": {
39
43
  "build": "tsdown",