@miden-sdk/miden-wallet-adapter-react 0.13.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.
Files changed (38) hide show
  1. package/MidenFiSignerProvider.tsx +732 -0
  2. package/WalletProvider.tsx +443 -0
  3. package/__tests__/MidenFiSignerProvider.test.tsx +426 -0
  4. package/dist/MidenFiSignerProvider.d.ts +113 -0
  5. package/dist/MidenFiSignerProvider.js +501 -0
  6. package/dist/MidenFiSignerProvider.js.map +1 -0
  7. package/dist/WalletProvider.d.ts +13 -0
  8. package/dist/WalletProvider.js +302 -0
  9. package/dist/WalletProvider.js.map +1 -0
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.js +7 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/useLocalStorage.d.ts +2 -0
  14. package/dist/useLocalStorage.js +39 -0
  15. package/dist/useLocalStorage.js.map +1 -0
  16. package/dist/useWallet.d.ts +30 -0
  17. package/dist/useWallet.js +81 -0
  18. package/dist/useWallet.js.map +1 -0
  19. package/dist/vitest.config.d.ts +2 -0
  20. package/dist/vitest.config.js +8 -0
  21. package/dist/vitest.config.js.map +1 -0
  22. package/docs/README.md +30 -0
  23. package/docs/functions/useLocalStorage.md +29 -0
  24. package/docs/functions/useMidenFiWallet.md +28 -0
  25. package/docs/functions/useWallet.md +13 -0
  26. package/docs/interfaces/MidenFiSignerProviderProps.md +87 -0
  27. package/docs/interfaces/Wallet.md +19 -0
  28. package/docs/interfaces/WalletContextState.md +235 -0
  29. package/docs/interfaces/WalletProviderProps.md +65 -0
  30. package/docs/variables/MidenFiSignerProvider.md +54 -0
  31. package/docs/variables/WalletContext.md +9 -0
  32. package/docs/variables/WalletProvider.md +9 -0
  33. package/index.ts +15 -0
  34. package/package.json +42 -0
  35. package/tsconfig.json +16 -0
  36. package/useLocalStorage.ts +39 -0
  37. package/useWallet.ts +197 -0
  38. package/vitest.config.ts +8 -0
@@ -0,0 +1,302 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { AllowedPrivateData, PrivateDataPermission, WalletAdapterNetwork, WalletNotConnectedError, WalletNotReadyError, WalletNotSelectedError, WalletReadyState, } from '@miden-sdk/miden-wallet-adapter-base';
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { useLocalStorage } from './useLocalStorage';
5
+ import { WalletContext } from './useWallet';
6
+ const initialState = {
7
+ wallet: null,
8
+ adapter: null,
9
+ address: null,
10
+ publicKey: null,
11
+ connected: false,
12
+ };
13
+ export const WalletProvider = ({ children, wallets: adapters, autoConnect = false, privateDataPermission = PrivateDataPermission.UponRequest, network = WalletAdapterNetwork.Testnet, onError, localStorageKey = 'walletName', allowedPrivateData = AllowedPrivateData.None, }) => {
14
+ const [name, setName] = useLocalStorage(localStorageKey, null);
15
+ const [{ wallet, adapter, address, publicKey, connected }, setState] = useState(initialState);
16
+ const readyState = adapter?.readyState || WalletReadyState.Unsupported;
17
+ const [connecting, setConnecting] = useState(false);
18
+ const [disconnecting, setDisconnecting] = useState(false);
19
+ const isConnecting = useRef(false);
20
+ const isDisconnecting = useRef(false);
21
+ const isUnloading = useRef(false);
22
+ // Wrap adapters to conform to the `Wallet` interface
23
+ const [wallets, setWallets] = useState(() => adapters.map((adapter) => ({
24
+ adapter,
25
+ readyState: adapter.readyState,
26
+ })));
27
+ // When the adapters change, start to listen for changes to their `readyState`
28
+ useEffect(() => {
29
+ // When the adapters change, wrap them to conform to the `Wallet` interface
30
+ setWallets((wallets) => adapters.map((adapter, index) => {
31
+ const wallet = wallets[index];
32
+ // If the wallet hasn't changed, return the same instance
33
+ return wallet &&
34
+ wallet.adapter === adapter &&
35
+ wallet.readyState === adapter.readyState
36
+ ? wallet
37
+ : {
38
+ adapter: adapter,
39
+ readyState: adapter.readyState,
40
+ };
41
+ }));
42
+ function handleReadyStateChange(readyState) {
43
+ setWallets((prevWallets) => {
44
+ const index = prevWallets.findIndex(({ adapter }) => adapter === this);
45
+ if (index === -1)
46
+ return prevWallets;
47
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
48
+ const { adapter } = prevWallets[index];
49
+ return [
50
+ ...prevWallets.slice(0, index),
51
+ { adapter, readyState },
52
+ ...prevWallets.slice(index + 1),
53
+ ];
54
+ });
55
+ }
56
+ adapters.forEach((adapter) => adapter.on('readyStateChange', handleReadyStateChange, adapter));
57
+ return () => adapters.forEach((adapter) => adapter.off('readyStateChange', handleReadyStateChange, adapter));
58
+ }, [adapters]);
59
+ // When the selected wallet changes, initialize the state
60
+ useEffect(() => {
61
+ const wallet = name && wallets.find(({ adapter }) => adapter.name === name);
62
+ if (wallet) {
63
+ setState({
64
+ wallet,
65
+ adapter: wallet.adapter,
66
+ connected: wallet.adapter.connected,
67
+ address: wallet.adapter.address,
68
+ publicKey: wallet.adapter.publicKey,
69
+ });
70
+ }
71
+ else {
72
+ setState(initialState);
73
+ }
74
+ }, [name, wallets]);
75
+ // If the window is closing or reloading, ignore disconnect and error events from the adapter
76
+ useEffect(() => {
77
+ function listener() {
78
+ isUnloading.current = true;
79
+ }
80
+ window.addEventListener('beforeunload', listener);
81
+ return () => window.removeEventListener('beforeunload', listener);
82
+ }, [isUnloading]);
83
+ // Handle the adapter's connect event
84
+ const handleConnect = useCallback(() => {
85
+ if (!adapter)
86
+ return;
87
+ setState((state) => ({
88
+ ...state,
89
+ connected: adapter.connected,
90
+ address: adapter.address,
91
+ publicKey: adapter.publicKey,
92
+ }));
93
+ }, [adapter]);
94
+ // Handle the adapter's disconnect event
95
+ const handleDisconnect = useCallback(() => {
96
+ // Clear the selected wallet unless the window is unloading
97
+ if (!isUnloading.current)
98
+ setName(null);
99
+ }, [isUnloading, setName]);
100
+ // Handle the adapter's error event, and local errors
101
+ const handleError = useCallback((error) => {
102
+ // Call onError unless the window is unloading
103
+ if (!isUnloading.current)
104
+ (onError || console.error)(error);
105
+ return error;
106
+ }, [isUnloading, onError]);
107
+ // Setup and teardown event listeners when the adapter changes
108
+ useEffect(() => {
109
+ if (adapter) {
110
+ adapter.on('connect', handleConnect);
111
+ adapter.on('disconnect', handleDisconnect);
112
+ adapter.on('error', handleError);
113
+ return () => {
114
+ adapter.off('connect', handleConnect);
115
+ adapter.off('disconnect', handleDisconnect);
116
+ adapter.off('error', handleError);
117
+ };
118
+ }
119
+ }, [adapter, handleConnect, handleDisconnect, handleError]);
120
+ // When the adapter changes, disconnect the old one
121
+ useEffect(() => {
122
+ return () => {
123
+ adapter?.disconnect();
124
+ };
125
+ }, [adapter]);
126
+ // If autoConnect is enabled, try to connect when the adapter changes and is ready
127
+ useEffect(() => {
128
+ if (isConnecting.current ||
129
+ connected ||
130
+ !autoConnect ||
131
+ !adapter ||
132
+ !(readyState === WalletReadyState.Installed ||
133
+ readyState === WalletReadyState.Loadable))
134
+ return;
135
+ (async function () {
136
+ isConnecting.current = true;
137
+ setConnecting(true);
138
+ try {
139
+ await adapter.connect(privateDataPermission, network, allowedPrivateData);
140
+ }
141
+ catch (error) {
142
+ // Clear the selected wallet
143
+ setName(null);
144
+ // Don't throw error, but handleError will still be called
145
+ }
146
+ finally {
147
+ setConnecting(false);
148
+ isConnecting.current = false;
149
+ }
150
+ })();
151
+ }, [isConnecting, connected, autoConnect, adapter, readyState, setName]);
152
+ // Connect the adapter to the wallet
153
+ const connect = useCallback(async () => {
154
+ if (isConnecting.current || isDisconnecting.current || connected)
155
+ return;
156
+ if (!adapter)
157
+ throw handleError(new WalletNotSelectedError());
158
+ if (!(readyState === WalletReadyState.Installed ||
159
+ readyState === WalletReadyState.Loadable)) {
160
+ // Clear the selected wallet
161
+ setName(null);
162
+ if (typeof window !== 'undefined') {
163
+ window.open(adapter.url, '_blank');
164
+ }
165
+ throw handleError(new WalletNotReadyError());
166
+ }
167
+ isConnecting.current = true;
168
+ setConnecting(true);
169
+ try {
170
+ await adapter.connect(privateDataPermission, network, allowedPrivateData);
171
+ }
172
+ catch (error) {
173
+ // Clear the selected wallet
174
+ setName(null);
175
+ // Rethrow the error, and handleError will also be called
176
+ throw error;
177
+ }
178
+ finally {
179
+ setConnecting(false);
180
+ isConnecting.current = false;
181
+ }
182
+ }, [
183
+ isConnecting,
184
+ isDisconnecting,
185
+ connected,
186
+ adapter,
187
+ readyState,
188
+ handleError,
189
+ setName,
190
+ ]);
191
+ // Disconnect the adapter from the wallet
192
+ const disconnect = useCallback(async () => {
193
+ if (isDisconnecting.current)
194
+ return;
195
+ if (!adapter)
196
+ return setName(null);
197
+ isDisconnecting.current = true;
198
+ setDisconnecting(true);
199
+ try {
200
+ await adapter.disconnect();
201
+ }
202
+ catch (error) {
203
+ // Clear the selected wallet
204
+ setName(null);
205
+ // Rethrow the error, and handleError will also be called
206
+ throw error;
207
+ }
208
+ finally {
209
+ setDisconnecting(false);
210
+ isDisconnecting.current = false;
211
+ }
212
+ }, [isDisconnecting, adapter, setName]);
213
+ // Request transaction
214
+ const requestTransaction = useMemo(() => adapter && 'requestTransaction' in adapter
215
+ ? async (transaction) => {
216
+ if (!connected)
217
+ throw handleError(new WalletNotConnectedError());
218
+ return await adapter.requestTransaction(transaction);
219
+ }
220
+ : undefined, [adapter, handleError, connected]);
221
+ // Request assets
222
+ const requestAssets = useMemo(() => adapter && 'requestAssets' in adapter
223
+ ? async () => {
224
+ if (!connected)
225
+ throw handleError(new WalletNotConnectedError());
226
+ return await adapter.requestAssets();
227
+ }
228
+ : undefined, [adapter, handleError, connected]);
229
+ // Request private notes
230
+ const requestPrivateNotes = useMemo(() => adapter && 'requestPrivateNotes' in adapter
231
+ ? async (noteFilterType, noteIds) => {
232
+ if (!connected)
233
+ throw handleError(new WalletNotConnectedError());
234
+ return await adapter.requestPrivateNotes(noteFilterType, noteIds);
235
+ }
236
+ : undefined, [adapter, handleError, connected]);
237
+ const signBytes = useMemo(() => adapter && 'signBytes' in adapter
238
+ ? async (message, kind) => {
239
+ if (!connected)
240
+ throw handleError(new WalletNotConnectedError());
241
+ return await adapter.signBytes(message, kind);
242
+ }
243
+ : undefined, [adapter, handleError, connected]);
244
+ const importPrivateNote = useMemo(() => adapter && 'importPrivateNote' in adapter
245
+ ? async (note) => {
246
+ if (!connected)
247
+ throw handleError(new WalletNotConnectedError());
248
+ return await adapter.importPrivateNote(note);
249
+ }
250
+ : undefined, [adapter, handleError, connected]);
251
+ const requestConsumableNotes = useMemo(() => adapter && 'requestConsumableNotes' in adapter
252
+ ? async () => {
253
+ if (!connected)
254
+ throw handleError(new WalletNotConnectedError());
255
+ return await adapter.requestConsumableNotes();
256
+ }
257
+ : undefined, [adapter, handleError, connected]);
258
+ const waitForTransaction = useMemo(() => adapter && 'waitForTransaction' in adapter
259
+ ? async (txId, timeout) => {
260
+ if (!connected)
261
+ throw handleError(new WalletNotConnectedError());
262
+ return await adapter.waitForTransaction(txId, timeout);
263
+ }
264
+ : undefined, [adapter, handleError, connected]);
265
+ const requestSend = useMemo(() => adapter && 'requestSend' in adapter
266
+ ? async (transaction) => {
267
+ if (!connected)
268
+ throw handleError(new WalletNotConnectedError());
269
+ return await adapter.requestSend(transaction);
270
+ }
271
+ : undefined, [adapter, handleError, connected]);
272
+ const requestConsume = useMemo(() => adapter && 'requestConsume' in adapter
273
+ ? async (transaction) => {
274
+ if (!connected)
275
+ throw handleError(new WalletNotConnectedError());
276
+ return await adapter.requestConsume(transaction);
277
+ }
278
+ : undefined, [adapter, handleError, connected]);
279
+ return (_jsx(WalletContext.Provider, { value: {
280
+ autoConnect,
281
+ wallets,
282
+ wallet,
283
+ address,
284
+ publicKey,
285
+ connected,
286
+ connecting,
287
+ disconnecting,
288
+ select: setName,
289
+ connect,
290
+ disconnect,
291
+ requestTransaction,
292
+ requestAssets,
293
+ requestPrivateNotes,
294
+ signBytes,
295
+ importPrivateNote,
296
+ requestConsumableNotes,
297
+ waitForTransaction,
298
+ requestSend,
299
+ requestConsume,
300
+ }, children: children }));
301
+ };
302
+ //# sourceMappingURL=WalletProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletProvider.js","sourceRoot":"","sources":["../WalletProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './WalletProvider';
2
+ export * from './useLocalStorage';
3
+ export * from './useWallet';
4
+ export { MidenFiSignerProvider, useMidenFiWallet, WalletContext, type MidenFiSignerProviderProps, type Wallet, type WalletContextState, type MidenFiWalletContextState, } from './MidenFiSignerProvider';
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ // Legacy exports for backward compatibility
2
+ export * from './WalletProvider';
3
+ export * from './useLocalStorage';
4
+ export * from './useWallet';
5
+ // MidenFi Signer Provider - unified provider for @miden-sdk/react integration
6
+ export { MidenFiSignerProvider, useMidenFiWallet, WalletContext, } from './MidenFiSignerProvider';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAE5B,8EAA8E;AAC9E,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GAKd,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Dispatch, SetStateAction } from 'react';
2
+ export declare function useLocalStorage<T>(key: string, defaultState: T): [T, Dispatch<SetStateAction<T>>];
@@ -0,0 +1,39 @@
1
+ import { useEffect, useRef, useState } from 'react';
2
+ export function useLocalStorage(key, defaultState) {
3
+ const state = useState(() => {
4
+ try {
5
+ const value = localStorage.getItem(key);
6
+ if (value)
7
+ return JSON.parse(value);
8
+ }
9
+ catch (error) {
10
+ if (typeof window !== 'undefined') {
11
+ console.error(error);
12
+ }
13
+ }
14
+ return defaultState;
15
+ });
16
+ const value = state[0];
17
+ const isFirstRender = useRef(true);
18
+ useEffect(() => {
19
+ if (isFirstRender.current) {
20
+ isFirstRender.current = false;
21
+ return;
22
+ }
23
+ try {
24
+ if (value === null) {
25
+ localStorage.removeItem(key);
26
+ }
27
+ else {
28
+ localStorage.setItem(key, JSON.stringify(value));
29
+ }
30
+ }
31
+ catch (error) {
32
+ if (typeof window !== 'undefined') {
33
+ console.error(error);
34
+ }
35
+ }
36
+ }, [value, key]);
37
+ return state;
38
+ }
39
+ //# sourceMappingURL=useLocalStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocalStorage.js","sourceRoot":"","sources":["../useLocalStorage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,MAAM,UAAU,eAAe,CAAI,GAAW,EAAE,YAAe;IAC3D,MAAM,KAAK,GAAG,QAAQ,CAAI,GAAG,EAAE;QAC3B,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEvB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YACxB,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,OAAO;QACX,CAAC;QACD,IAAI,CAAC;YACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACJ,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjB,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Adapter, AllowedPrivateData, MessageSignerWalletAdapterProps, PrivateDataPermission, WalletAdapterNetwork, WalletName, WalletReadyState } from '@miden-sdk/miden-wallet-adapter-base';
2
+ export interface Wallet {
3
+ adapter: Adapter;
4
+ readyState: WalletReadyState;
5
+ }
6
+ export interface WalletContextState {
7
+ autoConnect: boolean;
8
+ wallets: Wallet[];
9
+ wallet: Wallet | null;
10
+ address: string | null;
11
+ publicKey: Uint8Array | null;
12
+ connecting: boolean;
13
+ connected: boolean;
14
+ disconnecting: boolean;
15
+ privateDataPermission?: PrivateDataPermission;
16
+ select(walletName: WalletName): void;
17
+ connect(privateDataPermission: PrivateDataPermission, network: WalletAdapterNetwork, allowedPrivateData?: AllowedPrivateData): Promise<void>;
18
+ disconnect(): Promise<void>;
19
+ requestTransaction: MessageSignerWalletAdapterProps['requestTransaction'] | undefined;
20
+ requestSend: MessageSignerWalletAdapterProps['requestSend'] | undefined;
21
+ requestConsume: MessageSignerWalletAdapterProps['requestConsume'] | undefined;
22
+ requestAssets: MessageSignerWalletAdapterProps['requestAssets'] | undefined;
23
+ requestPrivateNotes: MessageSignerWalletAdapterProps['requestPrivateNotes'] | undefined;
24
+ signBytes: MessageSignerWalletAdapterProps['signBytes'] | undefined;
25
+ importPrivateNote: MessageSignerWalletAdapterProps['importPrivateNote'] | undefined;
26
+ requestConsumableNotes: MessageSignerWalletAdapterProps['requestConsumableNotes'] | undefined;
27
+ waitForTransaction: MessageSignerWalletAdapterProps['waitForTransaction'] | undefined;
28
+ }
29
+ export declare const WalletContext: import("react").Context<WalletContextState>;
30
+ export declare function useWallet(): WalletContextState;
@@ -0,0 +1,81 @@
1
+ import { createContext, useContext } from 'react';
2
+ const EMPTY_ARRAY = [];
3
+ const DEFAULT_CONTEXT = {
4
+ autoConnect: false,
5
+ connecting: false,
6
+ connected: false,
7
+ disconnecting: false,
8
+ select(_name) {
9
+ console.error(constructMissingProviderErrorMessage('get', 'select'));
10
+ },
11
+ connect(_privateDataPermission, _network, _allowedPrivateData) {
12
+ return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'connect')));
13
+ },
14
+ disconnect() {
15
+ return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'disconnect')));
16
+ },
17
+ requestTransaction(_transaction) {
18
+ return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestTransaction')));
19
+ },
20
+ requestAssets() {
21
+ return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestAssets')));
22
+ },
23
+ requestPrivateNotes(_noteFilterType, _noteIds) {
24
+ return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestPrivateNotes')));
25
+ },
26
+ signBytes(_message, _kind) {
27
+ return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'signBytes')));
28
+ },
29
+ importPrivateNote(_note) {
30
+ return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'importPrivateNote')));
31
+ },
32
+ requestConsumableNotes() {
33
+ return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestConsumableNotes')));
34
+ },
35
+ waitForTransaction(_txId, _timeout) {
36
+ return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'waitForTransaction')));
37
+ },
38
+ requestSend(_transaction) {
39
+ return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestSend')));
40
+ },
41
+ requestConsume(_transaction) {
42
+ return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestConsume')));
43
+ },
44
+ };
45
+ Object.defineProperty(DEFAULT_CONTEXT, 'wallets', {
46
+ get() {
47
+ console.error(constructMissingProviderErrorMessage('read', 'wallets'));
48
+ return EMPTY_ARRAY;
49
+ },
50
+ });
51
+ Object.defineProperty(DEFAULT_CONTEXT, 'wallet', {
52
+ get() {
53
+ console.error(constructMissingProviderErrorMessage('read', 'wallet'));
54
+ return null;
55
+ },
56
+ });
57
+ Object.defineProperty(DEFAULT_CONTEXT, 'address', {
58
+ get() {
59
+ console.error(constructMissingProviderErrorMessage('read', 'address'));
60
+ return null;
61
+ },
62
+ });
63
+ Object.defineProperty(DEFAULT_CONTEXT, 'publicKey', {
64
+ get() {
65
+ console.error(constructMissingProviderErrorMessage('read', 'publicKey'));
66
+ return null;
67
+ },
68
+ });
69
+ function constructMissingProviderErrorMessage(action, valueName) {
70
+ return ('You have tried to ' +
71
+ ` ${action} "${valueName}"` +
72
+ ' on a WalletContext without providing one.' +
73
+ ' Make sure to render a WalletProvider' +
74
+ ' as an ancestor of the component that uses ' +
75
+ 'WalletContext');
76
+ }
77
+ export const WalletContext = createContext(DEFAULT_CONTEXT);
78
+ export function useWallet() {
79
+ return useContext(WalletContext);
80
+ }
81
+ //# sourceMappingURL=useWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../useWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAmElD,MAAM,WAAW,GAAY,EAAE,CAAC;AAEhC,MAAM,eAAe,GAAG;IACtB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,KAAK;IACpB,MAAM,CAAC,KAAiB;QACtB,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,CACL,sBAA6C,EAC7C,QAA8B,EAC9B,mBAAwC;QAExC,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CACtE,CAAC;IACJ,CAAC;IACD,UAAU;QACR,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CACzE,CAAC;IACJ,CAAC;IACD,kBAAkB,CAAC,YAA8B;QAC/C,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,KAAK,CACX,oCAAoC,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAClE,CACF,CAAC;IACJ,CAAC;IACD,aAAa;QACX,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,KAAK,CACX,oCAAoC,CAAC,KAAK,EAAE,eAAe,CAAC,CAC7D,CACF,CAAC;IACJ,CAAC;IACD,mBAAmB,CAAC,eAAgC,EAAE,QAAmB;QACvE,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,KAAK,CACX,oCAAoC,CAAC,KAAK,EAAE,qBAAqB,CAAC,CACnE,CACF,CAAC;IACJ,CAAC;IACD,SAAS,CAAC,QAAoB,EAAE,KAAe;QAC7C,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;IACD,iBAAiB,CAAC,KAAiB;QACjC,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,KAAK,CACX,oCAAoC,CAAC,KAAK,EAAE,mBAAmB,CAAC,CACjE,CACF,CAAC;IACJ,CAAC;IACD,sBAAsB;QACpB,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,KAAK,CACX,oCAAoC,CAAC,KAAK,EAAE,wBAAwB,CAAC,CACtE,CACF,CAAC;IACJ,CAAC;IACD,kBAAkB,CAAC,KAAa,EAAE,QAAiB;QACjD,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,KAAK,CACX,oCAAoC,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAClE,CACF,CAAC;IACJ,CAAC;IACD,WAAW,CAAC,YAAY;QACtB,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAC1E,CAAC;IACJ,CAAC;IACD,cAAc,CAAC,YAAY;QACzB,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,KAAK,CACX,oCAAoC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAC9D,CACF,CAAC;IACJ,CAAC;CACoB,CAAC;AACxB,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE;IAChD,GAAG;QACD,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC;IACrB,CAAC;CACF,CAAC,CAAC;AACH,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,QAAQ,EAAE;IAC/C,GAAG;QACD,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC;AACH,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE;IAChD,GAAG;QACD,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC;AACH,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,WAAW,EAAE;IAClD,GAAG;QACD,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC;AAEH,SAAS,oCAAoC,CAC3C,MAAc,EACd,SAAiB;IAEjB,OAAO,CACL,oBAAoB;QACpB,IAAI,MAAM,KAAK,SAAS,GAAG;QAC3B,4CAA4C;QAC5C,uCAAuC;QACvC,6CAA6C;QAC7C,eAAe,CAChB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CACxC,eAAqC,CACtC,CAAC;AAEF,MAAM,UAAU,SAAS;IACvB,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import { defineConfig } from 'vitest/config';
2
+ export default defineConfig({
3
+ test: {
4
+ environment: 'jsdom',
5
+ globals: true,
6
+ },
7
+ });
8
+ //# sourceMappingURL=vitest.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE;QACJ,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,IAAI;KACd;CACF,CAAC,CAAC"}
package/docs/README.md ADDED
@@ -0,0 +1,30 @@
1
+ **@miden-sdk/miden-wallet-adapter-react**
2
+
3
+ ***
4
+
5
+ # @miden-sdk/miden-wallet-adapter-react
6
+
7
+ ## Interfaces
8
+
9
+ - [MidenFiSignerProviderProps](interfaces/MidenFiSignerProviderProps.md)
10
+ - [Wallet](interfaces/Wallet.md)
11
+ - [WalletContextState](interfaces/WalletContextState.md)
12
+ - [WalletProviderProps](interfaces/WalletProviderProps.md)
13
+
14
+ ## Variables
15
+
16
+ - [MidenFiSignerProvider](variables/MidenFiSignerProvider.md)
17
+ - [WalletContext](variables/WalletContext.md)
18
+ - [WalletProvider](variables/WalletProvider.md)
19
+
20
+ ## Functions
21
+
22
+ - [useLocalStorage](functions/useLocalStorage.md)
23
+ - [useMidenFiWallet](functions/useMidenFiWallet.md)
24
+ - [useWallet](functions/useWallet.md)
25
+
26
+ ## References
27
+
28
+ ### MidenFiWalletContextState
29
+
30
+ Renames and re-exports [WalletContextState](interfaces/WalletContextState.md)
@@ -0,0 +1,29 @@
1
+ [**@miden-sdk/miden-wallet-adapter-react**](../README.md)
2
+
3
+ ***
4
+
5
+ [@miden-sdk/miden-wallet-adapter-react](../README.md) / useLocalStorage
6
+
7
+ # Function: useLocalStorage()
8
+
9
+ > **useLocalStorage**\<`T`\>(`key`, `defaultState`): \[`T`, `Dispatch`\<`SetStateAction`\<`T`\>\>\]
10
+
11
+ ## Type Parameters
12
+
13
+ ### T
14
+
15
+ `T`
16
+
17
+ ## Parameters
18
+
19
+ ### key
20
+
21
+ `string`
22
+
23
+ ### defaultState
24
+
25
+ `T`
26
+
27
+ ## Returns
28
+
29
+ \[`T`, `Dispatch`\<`SetStateAction`\<`T`\>\>\]
@@ -0,0 +1,28 @@
1
+ [**@miden-sdk/miden-wallet-adapter-react**](../README.md)
2
+
3
+ ***
4
+
5
+ [@miden-sdk/miden-wallet-adapter-react](../README.md) / useMidenFiWallet
6
+
7
+ # Function: useMidenFiWallet()
8
+
9
+ > **useMidenFiWallet**(): [`WalletContextState`](../interfaces/WalletContextState.md)
10
+
11
+ Hook for MidenFi wallet operations beyond the unified useSigner interface.
12
+ Use this to access wallet-specific methods like requestTransaction, requestAssets, etc.
13
+
14
+ ## Returns
15
+
16
+ [`WalletContextState`](../interfaces/WalletContextState.md)
17
+
18
+ ## Example
19
+
20
+ ```tsx
21
+ const { connected, connect, disconnect, wallets, select } = useMidenFiWallet();
22
+
23
+ // Connect
24
+ await connect();
25
+
26
+ // Request a transaction
27
+ const txId = await requestTransaction({ ... });
28
+ ```
@@ -0,0 +1,13 @@
1
+ [**@miden-sdk/miden-wallet-adapter-react**](../README.md)
2
+
3
+ ***
4
+
5
+ [@miden-sdk/miden-wallet-adapter-react](../README.md) / useWallet
6
+
7
+ # Function: useWallet()
8
+
9
+ > **useWallet**(): `WalletContextState`
10
+
11
+ ## Returns
12
+
13
+ `WalletContextState`