@manahippo/aptos-wallet-adapter 0.4.3 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. package/README.md +5 -2
  2. package/dist/WalletAdapters/AptosSnap.d.ts +42 -0
  3. package/dist/WalletAdapters/AptosSnap.d.ts.map +1 -0
  4. package/dist/WalletAdapters/AptosSnap.js +185 -0
  5. package/dist/WalletAdapters/AptosSnap.js.map +1 -0
  6. package/dist/WalletAdapters/FletchWallet.d.ts +57 -0
  7. package/dist/WalletAdapters/FletchWallet.d.ts.map +1 -0
  8. package/dist/WalletAdapters/FletchWallet.js +178 -0
  9. package/dist/WalletAdapters/FletchWallet.js.map +1 -0
  10. package/dist/WalletAdapters/NightlyWallet.d.ts +52 -0
  11. package/dist/WalletAdapters/NightlyWallet.d.ts.map +1 -1
  12. package/dist/WalletAdapters/NightlyWallet.js +270 -230
  13. package/dist/WalletAdapters/NightlyWallet.js.map +1 -1
  14. package/dist/WalletAdapters/PetraWallet.d.ts.map +1 -1
  15. package/dist/WalletAdapters/PetraWallet.js +1 -1
  16. package/dist/WalletAdapters/PetraWallet.js.map +1 -1
  17. package/dist/WalletAdapters/PontemWallet.d.ts +4 -6
  18. package/dist/WalletAdapters/PontemWallet.d.ts.map +1 -1
  19. package/dist/WalletAdapters/PontemWallet.js +4 -5
  20. package/dist/WalletAdapters/PontemWallet.js.map +1 -1
  21. package/dist/WalletAdapters/RiseWallet.d.ts +3 -5
  22. package/dist/WalletAdapters/RiseWallet.d.ts.map +1 -1
  23. package/dist/WalletAdapters/RiseWallet.js +7 -5
  24. package/dist/WalletAdapters/RiseWallet.js.map +1 -1
  25. package/dist/WalletAdapters/index.d.ts +3 -0
  26. package/dist/WalletAdapters/index.d.ts.map +1 -1
  27. package/dist/WalletAdapters/index.js +3 -1
  28. package/dist/WalletAdapters/index.js.map +1 -1
  29. package/dist/WalletProviders/WalletProvider.d.ts.map +1 -1
  30. package/dist/WalletProviders/WalletProvider.js +12 -5
  31. package/dist/WalletProviders/WalletProvider.js.map +1 -1
  32. package/package.json +5 -3
  33. package/src/WalletAdapters/AptosSnap.ts +235 -0
  34. package/src/WalletAdapters/FletchWallet.ts +223 -0
  35. package/src/WalletAdapters/NightlyWallet.ts +285 -260
  36. package/src/WalletAdapters/PetraWallet.ts +2 -1
  37. package/src/WalletAdapters/PontemWallet.ts +8 -9
  38. package/src/WalletAdapters/RiseWallet.ts +10 -7
  39. package/src/WalletAdapters/index.ts +3 -1
  40. package/src/WalletProviders/WalletProvider.tsx +14 -7
@@ -0,0 +1,223 @@
1
+ import { HexEncodedBytes, TransactionPayload } from 'aptos/src/generated';
2
+ import {
3
+ WalletDisconnectionError,
4
+ WalletNotConnectedError,
5
+ WalletNotReadyError,
6
+ WalletSignAndSubmitMessageError,
7
+ WalletSignMessageError,
8
+ WalletSignTransactionError
9
+ } from '../WalletProviders/errors';
10
+ import {
11
+ AccountKeys,
12
+ BaseWalletAdapter,
13
+ scopePollingDetectionStrategy,
14
+ SignMessagePayload,
15
+ SignMessageResponse,
16
+ WalletName,
17
+ WalletReadyState
18
+ } from './BaseAdapter';
19
+
20
+ interface IFletchWallet {
21
+ connect: () => Promise<{ Address: string; PublicKey: string, code: number, error?: any }>;
22
+ account: () => Promise<string>;
23
+ isConnected: () => Promise<boolean>;
24
+ signAndSubmitTransaction(transaction: any): Promise<{ code: number, error?: any, hash: string }>;
25
+ signTransaction(payload: any): Promise<{ code: number, error?: any, tx: Uint8Array }>;
26
+ signMessage(message: SignMessagePayload): Promise<{ code: number, error?: any, signedMessage: SignMessageResponse }>;
27
+ disconnect(): Promise<void>;
28
+ }
29
+
30
+ interface AptosWindow extends Window {
31
+ fletch?: IFletchWallet;
32
+ }
33
+
34
+ declare const window: AptosWindow;
35
+
36
+ export const FletchWalletName = 'Fletch' as WalletName<'Fletch'>;
37
+
38
+ export interface FletchWalletAdapterConfig {
39
+ provider?: IFletchWallet;
40
+ // network?: WalletAdapterNetwork;
41
+ timeout?: number;
42
+ }
43
+
44
+ export class FletchWalletAdapter extends BaseWalletAdapter {
45
+ name = FletchWalletName;
46
+
47
+ url = 'http://fletchwallet.io';
48
+
49
+ icon = 'http://fletchwallet.io/img/fletch-white.svg';
50
+
51
+ protected _provider: IFletchWallet;
52
+
53
+ // protected _network: WalletAdapterNetwork;
54
+ protected _timeout: number;
55
+
56
+ protected _readyState: WalletReadyState =
57
+ typeof window === 'undefined' || typeof document === 'undefined'
58
+ ? WalletReadyState.Unsupported
59
+ : WalletReadyState.NotDetected;
60
+
61
+ protected _connecting: boolean;
62
+
63
+ protected _wallet: any | null;
64
+
65
+ constructor({
66
+ // provider,
67
+ // network = WalletAdapterNetwork.Mainnet,
68
+ timeout = 10000
69
+ }: FletchWalletAdapterConfig = {}) {
70
+ super();
71
+
72
+ this._provider = typeof window !== 'undefined' ? window.fletch : undefined;
73
+ // this._network = network;
74
+ this._timeout = timeout;
75
+ this._connecting = false;
76
+ this._wallet = null;
77
+
78
+ if (typeof window !== 'undefined' && this._readyState !== WalletReadyState.Unsupported) {
79
+ scopePollingDetectionStrategy(() => {
80
+ if (window.fletch) {
81
+ this._readyState = WalletReadyState.Installed;
82
+ this.emit('readyStateChange', this._readyState);
83
+ return true;
84
+ }
85
+ return false;
86
+ });
87
+ }
88
+ }
89
+
90
+ get publicAccount(): AccountKeys {
91
+ return {
92
+ publicKey: this._wallet?.publicKey || null,
93
+ address: this._wallet?.address || null,
94
+ authKey: this._wallet?.authKey || null
95
+ };
96
+ }
97
+
98
+ get connecting(): boolean {
99
+ return this._connecting;
100
+ }
101
+
102
+ get connected(): boolean {
103
+ return !!this._wallet?.isConnected;
104
+ }
105
+
106
+ get readyState(): WalletReadyState {
107
+ return this._readyState;
108
+ }
109
+
110
+ async connect(): Promise<void> {
111
+ try {
112
+ if (this.connected || this.connecting) return;
113
+ if (
114
+ !(
115
+ this._readyState === WalletReadyState.Loadable ||
116
+ this._readyState === WalletReadyState.Installed
117
+ )
118
+ )
119
+ throw new WalletNotReadyError();
120
+ this._connecting = true;
121
+
122
+ const provider = this._provider || window.fletch;
123
+ const isConnected = await this._provider?.isConnected();
124
+ if (isConnected === true) {
125
+ await provider?.disconnect();
126
+ }
127
+
128
+ const response = await provider?.connect();
129
+ if (response.code != 200) {
130
+ throw response.error
131
+ }
132
+ this._wallet = {
133
+ address: response?.Address,
134
+ publicKey: response?.PublicKey,
135
+ isConnected: true
136
+ };
137
+
138
+ this.emit('connect', this._wallet.publicKey);
139
+ } catch (error: any) {
140
+ this.emit('error', error);
141
+ throw error;
142
+ } finally {
143
+ this._connecting = false;
144
+ }
145
+ }
146
+
147
+ async disconnect(): Promise<void> {
148
+ const wallet = this._wallet;
149
+ const provider = this._provider || window.fletch;
150
+ if (wallet) {
151
+ this._wallet = null;
152
+
153
+ try {
154
+ await provider?.disconnect();
155
+ } catch (error: any) {
156
+ this.emit('error', new WalletDisconnectionError(error?.message, error));
157
+ }
158
+ }
159
+
160
+ this.emit('disconnect');
161
+ }
162
+
163
+ async signTransaction(transaction: TransactionPayload): Promise<Uint8Array> {
164
+ try {
165
+ const wallet = this._wallet;
166
+ const provider = this._provider || window.fletch;
167
+ if (!wallet || !provider) throw new WalletNotConnectedError();
168
+
169
+ const response = await provider.signTransaction(transaction);
170
+ if (response.code != 200) {
171
+ throw response.error
172
+ }
173
+ return response.tx;
174
+ } catch (error: any) {
175
+ const errMsg = error.message;
176
+ this.emit('error', new WalletSignTransactionError(errMsg));
177
+ throw error;
178
+ }
179
+ }
180
+
181
+ async signAndSubmitTransaction(
182
+ transaction: TransactionPayload
183
+ ): Promise<{ hash: HexEncodedBytes }> {
184
+ try {
185
+ const wallet = this._wallet;
186
+ const provider = this._provider || window.fletch;
187
+ if (!wallet || !provider) throw new WalletNotConnectedError();
188
+ const response = await provider.signAndSubmitTransaction(transaction);
189
+ if (response.code == 200) {
190
+ return { hash: response.hash };
191
+ }
192
+
193
+ throw response.error
194
+
195
+ } catch (error: any) {
196
+ const errMsg = error.message;
197
+ this.emit('error', new WalletSignAndSubmitMessageError(errMsg));
198
+ throw error;
199
+ }
200
+ }
201
+
202
+ async signMessage(msgPayload: SignMessagePayload): Promise<SignMessageResponse> {
203
+ try {
204
+ const wallet = this._wallet;
205
+ const provider = this._provider || window.fletch;
206
+ if (!wallet || !provider) throw new WalletNotConnectedError();
207
+ if (typeof msgPayload !== 'object' || !msgPayload.nonce) {
208
+ throw new WalletSignMessageError('Invalid signMessage Payload');
209
+ }
210
+
211
+ const response = await provider?.signMessage(msgPayload);
212
+ if (response.code == 200) {
213
+ return response.signedMessage;
214
+ }
215
+
216
+ throw response.error
217
+ } catch (error: any) {
218
+ const errMsg = error.message;
219
+ this.emit('error', new WalletSignMessageError(errMsg));
220
+ throw error;
221
+ }
222
+ }
223
+ }