@txnlab/use-wallet-solid 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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.jsx","names":[],"sources":["../src/index.tsx"],"sourcesContent":["import { useStore } from '@tanstack/solid-store'\nimport algosdk from 'algosdk'\nimport { JSX, createContext, createMemo, onMount, useContext } from 'solid-js'\nimport type {\n AlgodConfig,\n BaseWallet,\n NetworkId,\n SignDataResponse,\n SignMetadata,\n WalletAccount,\n WalletManager,\n WalletMetadata,\n WalletKey\n} from '@txnlab/use-wallet'\n\nexport * from '@txnlab/use-wallet'\n\nexport interface Wallet {\n id: string\n walletKey: WalletKey\n metadata: WalletMetadata\n readonly accounts: WalletAccount[]\n readonly activeAccount: WalletAccount | null\n readonly isConnected: boolean\n readonly 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\ninterface WalletProviderProps {\n manager: WalletManager\n children: JSX.Element\n}\n\nconst WalletContext = createContext<() => WalletManager>()\n\nexport const WalletProvider = (props: WalletProviderProps): JSX.Element => {\n const store = () => props.manager\n\n onMount(async () => {\n try {\n await props.manager.resumeSessions()\n } catch (error) {\n console.error('Error resuming sessions:', error)\n }\n })\n\n return <WalletContext.Provider value={store}>{props.children}</WalletContext.Provider>\n}\n\nexport const useWalletManager = (): WalletManager => {\n const manager = useContext(WalletContext)\n if (!manager) {\n throw new Error('useWalletManager must be used within a WalletProvider')\n }\n return manager()\n}\n\nexport const useNetwork = () => {\n const manager = createMemo(() => useWalletManager())\n const activeNetwork = useStore(manager().store, (state) => state.activeNetwork)\n const activeNetworkConfig = () => {\n const store = useStore(manager().store)\n return store().networkConfig[activeNetwork()]\n }\n\n const setActiveNetwork = async (networkId: NetworkId | string): Promise<void> => {\n if (networkId === activeNetwork()) {\n return\n }\n\n if (!manager().networkConfig[networkId]) {\n throw new Error(`Network \"${networkId}\" not found in network configuration`)\n }\n\n console.info(`[Solid] 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(`[Solid] ✅ Active network set to ${networkId}.`)\n }\n\n const updateAlgodConfig = (networkId: string, config: Partial<AlgodConfig>): void => {\n manager().updateAlgodConfig(networkId, config)\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork()) {\n console.info(`[Solid] 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()) {\n console.info(`[Solid] 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 const useWallet = () => {\n const manager = createMemo(() => useWalletManager())\n\n const managerStatus = useStore(manager().store, (state) => state.managerStatus)\n const isReady = createMemo(() => managerStatus() === 'ready')\n const algodClient = useStore(manager().store, (state) => state.algodClient)\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 return {\n id: wallet.id,\n walletKey: wallet.walletKey,\n metadata: wallet.metadata,\n get accounts() {\n return walletStateMap()[wallet.walletKey]?.accounts ?? []\n },\n get activeAccount() {\n return walletStateMap()[wallet.walletKey]?.activeAccount ?? null\n },\n get isConnected() {\n return !!walletStateMap()[wallet.walletKey]\n },\n get isActive() {\n return wallet.walletKey === activeWalletId()\n },\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\n const activeNetwork = useStore(manager().store, (state) => state.activeNetwork)\n\n const availableWallets = createMemo(() => {\n // Access activeNetwork() to trigger recomputation on network change\n void activeNetwork()\n return wallets.filter((w) =>\n manager().availableWallets.some((aw) => aw.walletKey === w.walletKey)\n )\n })\n\n const activeBaseWallet = createMemo(() => {\n const id = activeWalletId()\n return id ? manager().getWallet(id) || null : null\n })\n\n const activeWallet = createMemo(() => {\n const id = activeWalletId()\n return id ? (wallets.find((w) => w.walletKey === id) ?? null) : null\n })\n\n const activeWalletAccounts = createMemo(() => {\n const state = walletStateMap()[activeWalletId()!]\n return state?.accounts ?? null\n })\n const activeWalletAddresses = createMemo(\n () => activeWalletAccounts()?.map((account) => account.address) ?? null\n )\n const activeAccount = createMemo(() => {\n const state = walletStateMap()[activeWalletId()!]\n return state?.activeAccount ?? null\n })\n const activeAddress = createMemo(() => activeAccount()?.address ?? null)\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n const wallet = activeBaseWallet()\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 = activeBaseWallet()\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 = activeBaseWallet()\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 = activeBaseWallet()\n if (!wallet) {\n throw new Error('No active wallet')\n }\n return wallet.withPrivateKey(callback)\n }\n\n return {\n wallets: () => 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,110 +1,63 @@
1
1
  {
2
2
  "name": "@txnlab/use-wallet-solid",
3
- "version": "4.6.0",
3
+ "version": "5.0.0-rc.1",
4
+ "publishConfig": {
5
+ "access": "public",
6
+ "provenance": true
7
+ },
4
8
  "description": "Solid.js library for integrating Algorand wallets into decentralized applications",
5
9
  "author": "Doug Richar <drichar@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/use-wallet-solid"
13
+ "url": "git+https://github.com/txnlab/use-wallet.git",
14
+ "directory": "packages/frameworks/solid"
11
15
  },
12
16
  "type": "module",
13
- "main": "./dist/index.cjs",
14
- "module": "./dist/index.js",
17
+ "main": "./dist/index.js",
18
+ "types": "./dist/index.d.ts",
15
19
  "exports": {
16
- "solid": {
17
- "development": "./dist/dev.jsx",
18
- "import": "./dist/index.jsx"
19
- },
20
- "development": {
21
- "import": {
20
+ ".": {
21
+ "solid": {
22
+ "development": "./dist/dev.jsx",
23
+ "import": "./dist/index.jsx"
24
+ },
25
+ "development": {
22
26
  "types": "./dist/index.d.ts",
23
27
  "default": "./dist/dev.js"
24
28
  },
25
- "require": {
26
- "types": "./dist/index.d.cts",
27
- "default": "./dist/dev.cjs"
28
- }
29
- },
30
- "import": {
31
29
  "types": "./dist/index.d.ts",
32
30
  "default": "./dist/index.js"
33
- },
34
- "require": {
35
- "types": "./dist/index.d.cts",
36
- "default": "./dist/index.cjs"
37
31
  }
38
32
  },
39
- "types": "./dist/index.d.ts",
40
33
  "keywords": [
41
34
  "algorand",
42
35
  "wallet",
43
- "walletconnect",
44
- "pera",
45
- "defly",
46
- "exodus",
47
- "algosdk",
48
- "algokit",
49
- "kmd",
50
36
  "solid.js"
51
37
  ],
52
38
  "files": [
53
39
  "dist"
54
40
  ],
55
41
  "dependencies": {
56
- "@tanstack/solid-store": "0.8.0",
57
- "@txnlab/use-wallet": "4.6.0"
42
+ "@tanstack/solid-store": "0.9.1",
43
+ "@txnlab/use-wallet": "5.0.0-rc.1"
58
44
  },
59
45
  "devDependencies": {
60
46
  "@solidjs/testing-library": "0.8.10",
61
47
  "algosdk": "3.5.2",
62
48
  "solid-js": "1.9.11",
63
- "tsup": "8.5.1",
64
- "tsup-preset-solid": "2.2.0",
49
+ "tsdown": "0.21.0",
65
50
  "typescript": "5.9.3"
66
51
  },
67
52
  "peerDependencies": {
68
- "@blockshake/defly-connect": "^1.2.1",
69
- "@magic-ext/algorand": "^24.4.2",
70
- "@perawallet/connect": "^1.4.1",
71
- "@walletconnect/modal": "^2.7.0",
72
- "@walletconnect/sign-client": "^2.23.4",
73
- "algosdk": "^3.0.0",
74
- "lute-connect": "^1.6.3",
75
- "magic-sdk": "^29.4.2"
76
- },
77
- "peerDependenciesMeta": {
78
- "@blockshake/defly-connect": {
79
- "optional": true
80
- },
81
- "@magic-ext/algorand": {
82
- "optional": true
83
- },
84
- "@perawallet/connect": {
85
- "optional": true
86
- },
87
- "@walletconnect/modal": {
88
- "optional": true
89
- },
90
- "@walletconnect/sign-client": {
91
- "optional": true
92
- },
93
- "lute-connect": {
94
- "optional": true
95
- },
96
- "magic-sdk": {
97
- "optional": true
98
- }
53
+ "algosdk": "^3.0.0"
99
54
  },
100
- "browser": {},
101
- "typesVersions": {},
102
55
  "scripts": {
103
- "build": "tsup",
104
- "start": "tsup src/index.tsx --watch",
56
+ "build": "tsdown",
57
+ "start": "tsdown --watch",
105
58
  "test": "vitest run",
106
59
  "test:watch": "vitest --watch",
107
- "lint": "eslint -c \"../../.eslintrc.json\" \"**/*.{js,ts}\"",
60
+ "lint": "eslint \"src/**/*.{js,ts,tsx}\"",
108
61
  "typecheck": "tsc --noEmit"
109
62
  }
110
63
  }