@etherplay/connect 0.0.10 → 0.0.12
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/dist/index.d.ts +34 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +101 -27
- package/dist/index.js.map +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +6 -5
- package/dist/provider.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +146 -33
- package/src/provider.ts +7 -5
package/dist/index.d.ts
CHANGED
|
@@ -29,30 +29,57 @@ export type Connection = {
|
|
|
29
29
|
} & ({
|
|
30
30
|
step: 'Idle';
|
|
31
31
|
loading: boolean;
|
|
32
|
+
wallet: undefined;
|
|
32
33
|
} | {
|
|
33
34
|
step: 'MechanismToChoose';
|
|
35
|
+
wallet: undefined;
|
|
34
36
|
} | {
|
|
35
37
|
step: 'PopupLaunched';
|
|
38
|
+
wallet: undefined;
|
|
36
39
|
popupClosed: boolean;
|
|
37
40
|
mechanism: AlchemyMechanism;
|
|
38
41
|
} | {
|
|
39
42
|
step: 'WalletToChoose';
|
|
43
|
+
wallet: undefined;
|
|
40
44
|
mechanism: WalletMechanism<undefined, undefined>;
|
|
41
45
|
} | {
|
|
42
46
|
step: 'WaitingForWalletConnection';
|
|
47
|
+
wallet: undefined;
|
|
43
48
|
mechanism: WalletMechanism<string, undefined>;
|
|
44
49
|
} | {
|
|
45
|
-
step: '
|
|
50
|
+
step: 'WalletConnected';
|
|
46
51
|
mechanism: WalletMechanism<string, `0x${string}`>;
|
|
52
|
+
wallet: {
|
|
53
|
+
provider: EIP1193WindowWalletProvider;
|
|
54
|
+
locked: boolean;
|
|
55
|
+
accountChanged?: `0x${string}`;
|
|
56
|
+
chainId: string;
|
|
57
|
+
invalidChainId: boolean;
|
|
58
|
+
switchingChain: 'addingChain' | 'switchingChain' | false;
|
|
59
|
+
};
|
|
47
60
|
} | {
|
|
48
61
|
step: 'WaitingForSignature';
|
|
49
62
|
mechanism: WalletMechanism<string, `0x${string}`>;
|
|
63
|
+
wallet: {
|
|
64
|
+
provider: EIP1193WindowWalletProvider;
|
|
65
|
+
locked: boolean;
|
|
66
|
+
accountChanged?: `0x${string}`;
|
|
67
|
+
chainId: string;
|
|
68
|
+
invalidChainId: boolean;
|
|
69
|
+
switchingChain: 'addingChain' | 'switchingChain' | false;
|
|
70
|
+
};
|
|
71
|
+
} | {
|
|
72
|
+
step: 'SignedIn';
|
|
73
|
+
mechanism: AlchemyMechanism;
|
|
74
|
+
account: OriginAccount;
|
|
75
|
+
wallet: undefined;
|
|
50
76
|
} | {
|
|
51
77
|
step: 'SignedIn';
|
|
52
|
-
mechanism:
|
|
78
|
+
mechanism: WalletMechanism<string, `0x${string}`>;
|
|
53
79
|
account: OriginAccount;
|
|
54
|
-
wallet
|
|
80
|
+
wallet: {
|
|
55
81
|
provider: EIP1193WindowWalletProvider;
|
|
82
|
+
locked: boolean;
|
|
56
83
|
accountChanged?: `0x${string}`;
|
|
57
84
|
chainId: string;
|
|
58
85
|
invalidChainId: boolean;
|
|
@@ -76,6 +103,7 @@ export interface EIP6963AnnounceProviderEvent extends CustomEvent {
|
|
|
76
103
|
export declare function createConnection(settings: {
|
|
77
104
|
walletHost: string;
|
|
78
105
|
autoConnect?: boolean;
|
|
106
|
+
requestSignatureAutomaticallyIfPossible?: boolean;
|
|
79
107
|
node: {
|
|
80
108
|
url: string;
|
|
81
109
|
chainId: string;
|
|
@@ -85,7 +113,7 @@ export declare function createConnection(settings: {
|
|
|
85
113
|
}): {
|
|
86
114
|
subscribe: (this: void, run: import("svelte/store").Subscriber<Connection>, invalidate?: () => void) => import("svelte/store").Unsubscriber;
|
|
87
115
|
connect: (mechanism?: Mechanism, options?: {
|
|
88
|
-
|
|
116
|
+
requireUserConfirmationBeforeSignatureRequest?: boolean;
|
|
89
117
|
doNotStoreLocally?: boolean;
|
|
90
118
|
requestSignatureRightAway?: boolean;
|
|
91
119
|
}) => Promise<void>;
|
|
@@ -106,6 +134,7 @@ export declare function createConnection(settings: {
|
|
|
106
134
|
decimals: number;
|
|
107
135
|
};
|
|
108
136
|
}) => Promise<void>;
|
|
137
|
+
unlock: () => Promise<void>;
|
|
109
138
|
provider: {
|
|
110
139
|
call: (method: "eth_accounts") => () => Promise<{
|
|
111
140
|
success: false;
|
|
@@ -151,7 +180,7 @@ export declare function createConnection(settings: {
|
|
|
151
180
|
value: import("eip-1193").EIP1193Accounts;
|
|
152
181
|
}>;
|
|
153
182
|
} & {
|
|
154
|
-
callUnknown: <
|
|
183
|
+
callUnknown: <UnknownRequest extends import("remote-procedure-call").RPCRequestData>(method: string) => UnknownRequest["params"] extends [] ? () => Promise<import("remote-procedure-call").Result<UnknownRequest["result"], UnknownRequest["errors"] | import("remote-procedure-call").RPCErrors>> : (params: import("remote-procedure-call").DeepReadonly<UnknownRequest["params"]>) => Promise<import("remote-procedure-call").Result<UnknownRequest["result"], UnknownRequest["errors"] | import("remote-procedure-call").RPCErrors>>;
|
|
155
184
|
} & {
|
|
156
185
|
call(method: "eth_sign"): (params: readonly [`0x${string}`, `0x${string}`]) => Promise<{
|
|
157
186
|
success: false;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAGxE,OAAO,KAAK,EAAC,cAAc,EAAE,2BAA2B,EAAC,MAAM,UAAU,CAAC;AAC1E,OAAO,EACN,wBAAwB,EAGxB,gBAAgB,EAChB,iCAAiC,EACjC,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAC,wBAAwB,EAAE,iCAAiC,EAAE,gBAAgB,EAAC,CAAC;AACvF,YAAY,EAAC,aAAa,EAAC,CAAC;AAE5B,MAAM,MAAM,aAAa,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,gBAAgB,CAAC;CAE5B,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,UAAU,SAAS,MAAM,GAAG,SAAS,EAAE,OAAO,SAAS,KAAK,MAAM,EAAE,GAAG,SAAS,IAAI;IAC/G,IAAI,EAAE,QAAQ,CAAC;CACf,GAAG,CAAC,UAAU,SAAS,SAAS,GAAG;IAAC,IAAI,CAAC,EAAE,SAAS,CAAA;CAAC,GAAG;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,CAAC,GAC3E,CAAC,OAAO,SAAS,SAAS,GAAG;IAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAC,GAAG;IAAC,OAAO,EAAE,OAAO,CAAA;CAAC,CAAC,CAAC;AAE1E,MAAM,MAAM,SAAS,GAAG,gBAAgB,GAAG,eAAe,CAAC,MAAM,GAAG,SAAS,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AAE1G,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC,CAAC;AAE5F,MAAM,MAAM,UAAU,GAAG;IAIxB,KAAK,CAAC,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,CAAA;KAAC,CAAC;IAEvC,OAAO,EAAE,qBAAqB,EAAE,CAAC;CACjC,GAAG,CACD;IACA,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA5yBsB,CAAC;kBAAqB,CAAC;;;;;;;;;;EAk9B/C;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,8 @@ export function createConnection(settings) {
|
|
|
17
17
|
if (typeof settings.autoConnect !== 'undefined') {
|
|
18
18
|
autoConnect = settings.autoConnect;
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
const requestSignatureAutomaticallyIfPossible = settings.requestSignatureAutomaticallyIfPossible || false;
|
|
21
|
+
let $connection = { step: 'Idle', loading: true, wallet: undefined, wallets: [] };
|
|
21
22
|
const _store = writable($connection);
|
|
22
23
|
function set(connection) {
|
|
23
24
|
$connection = connection;
|
|
@@ -82,8 +83,9 @@ export function createConnection(settings) {
|
|
|
82
83
|
const existingAccount = getOriginAccount();
|
|
83
84
|
if (existingAccount) {
|
|
84
85
|
if (existingAccount.signer) {
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
const mechanismUsed = existingAccount.mechanismUsed;
|
|
87
|
+
if (mechanismUsed.type == 'wallet') {
|
|
88
|
+
const walletMechanism = mechanismUsed;
|
|
87
89
|
waitForWallet(walletMechanism.name)
|
|
88
90
|
.then(async (walletDetails) => {
|
|
89
91
|
const walletProvider = walletDetails.provider;
|
|
@@ -95,10 +97,11 @@ export function createConnection(settings) {
|
|
|
95
97
|
set({
|
|
96
98
|
step: 'SignedIn',
|
|
97
99
|
account: existingAccount,
|
|
98
|
-
mechanism:
|
|
100
|
+
mechanism: walletMechanism,
|
|
99
101
|
wallets: $connection.wallets,
|
|
100
102
|
wallet: {
|
|
101
103
|
provider: walletProvider,
|
|
104
|
+
locked: false, // TODO should fetch eth_account first
|
|
102
105
|
accountChanged: undefined,
|
|
103
106
|
chainId,
|
|
104
107
|
invalidChainId: alwaysOnChainId != chainId,
|
|
@@ -109,34 +112,34 @@ export function createConnection(settings) {
|
|
|
109
112
|
watchForAccountChange(walletProvider);
|
|
110
113
|
})
|
|
111
114
|
.catch((err) => {
|
|
112
|
-
set({ step: 'Idle', loading: false, wallets: $connection.wallets });
|
|
115
|
+
set({ step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets });
|
|
113
116
|
});
|
|
114
117
|
}
|
|
115
118
|
else {
|
|
116
119
|
set({
|
|
117
120
|
step: 'SignedIn',
|
|
118
121
|
account: existingAccount,
|
|
119
|
-
mechanism:
|
|
122
|
+
mechanism: mechanismUsed,
|
|
120
123
|
wallets: $connection.wallets,
|
|
121
124
|
wallet: undefined,
|
|
122
125
|
});
|
|
123
126
|
}
|
|
124
127
|
}
|
|
125
128
|
else {
|
|
126
|
-
set({ step: 'Idle', loading: false, wallets: $connection.wallets });
|
|
129
|
+
set({ step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets });
|
|
127
130
|
}
|
|
128
131
|
}
|
|
129
132
|
else {
|
|
130
|
-
set({ step: 'Idle', loading: false, wallets: $connection.wallets });
|
|
133
|
+
set({ step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets });
|
|
131
134
|
}
|
|
132
135
|
}
|
|
133
136
|
catch {
|
|
134
|
-
set({ step: 'Idle', loading: false, wallets: $connection.wallets });
|
|
137
|
+
set({ step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets });
|
|
135
138
|
}
|
|
136
139
|
}
|
|
137
140
|
}
|
|
138
141
|
else {
|
|
139
|
-
set({ step: 'Idle', loading: false, wallets: $connection.wallets });
|
|
142
|
+
set({ step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets });
|
|
140
143
|
}
|
|
141
144
|
fetchWallets();
|
|
142
145
|
function getOriginAccount() {
|
|
@@ -155,8 +158,8 @@ export function createConnection(settings) {
|
|
|
155
158
|
localStorage.removeItem(storageAccountKey);
|
|
156
159
|
}
|
|
157
160
|
async function requestSignature() {
|
|
158
|
-
if ($connection.step !== '
|
|
159
|
-
throw new Error(`invalid step: ${$connection.step}, needs to be
|
|
161
|
+
if ($connection.step !== 'WalletConnected') {
|
|
162
|
+
throw new Error(`invalid step: ${$connection.step}, needs to be WalletConnected`);
|
|
160
163
|
}
|
|
161
164
|
if (!_wallet) {
|
|
162
165
|
// TODO error ?
|
|
@@ -182,7 +185,7 @@ export function createConnection(settings) {
|
|
|
182
185
|
// TODO handle rejection (code: 4001 ?)
|
|
183
186
|
set({
|
|
184
187
|
...$connection,
|
|
185
|
-
step: '
|
|
188
|
+
step: 'WalletConnected',
|
|
186
189
|
mechanism: {
|
|
187
190
|
type: 'wallet',
|
|
188
191
|
name: $connection.mechanism.name,
|
|
@@ -220,6 +223,7 @@ export function createConnection(settings) {
|
|
|
220
223
|
wallet: {
|
|
221
224
|
chainId,
|
|
222
225
|
provider: provider,
|
|
226
|
+
locked: false,
|
|
223
227
|
accountChanged: undefined, // TODO check account list
|
|
224
228
|
invalidChainId: alwaysOnChainId != chainId,
|
|
225
229
|
switchingChain: false,
|
|
@@ -246,7 +250,10 @@ export function createConnection(settings) {
|
|
|
246
250
|
if (_wallet) {
|
|
247
251
|
_wallet.chainId = chainId;
|
|
248
252
|
}
|
|
249
|
-
if ($connection.step === 'SignedIn' &&
|
|
253
|
+
if ($connection.step === 'SignedIn' &&
|
|
254
|
+
$connection.mechanism.type === 'wallet' &&
|
|
255
|
+
$connection.wallet &&
|
|
256
|
+
$connection.wallet.chainId != chainId) {
|
|
250
257
|
set({
|
|
251
258
|
...$connection,
|
|
252
259
|
wallet: {
|
|
@@ -259,6 +266,24 @@ export function createConnection(settings) {
|
|
|
259
266
|
}
|
|
260
267
|
function onAccountChanged(accounts) {
|
|
261
268
|
const accountsFormated = accounts.map((a) => a.toLowerCase());
|
|
269
|
+
if (accountsFormated.length === 0 && $connection.wallet) {
|
|
270
|
+
set({
|
|
271
|
+
...$connection,
|
|
272
|
+
wallet: {
|
|
273
|
+
...$connection.wallet,
|
|
274
|
+
locked: true,
|
|
275
|
+
},
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
else if (accountsFormated.length > 0 && $connection.wallet?.locked) {
|
|
279
|
+
set({
|
|
280
|
+
...$connection,
|
|
281
|
+
wallet: {
|
|
282
|
+
...$connection.wallet,
|
|
283
|
+
locked: false,
|
|
284
|
+
},
|
|
285
|
+
});
|
|
286
|
+
}
|
|
262
287
|
if ($connection.step === 'SignedIn' && $connection.mechanism.type === 'wallet') {
|
|
263
288
|
// TODO if auto-connect and saved-signature ?
|
|
264
289
|
// connect(
|
|
@@ -267,7 +292,7 @@ export function createConnection(settings) {
|
|
|
267
292
|
// address: accounts[0],
|
|
268
293
|
// name: $connection.mechanism.name
|
|
269
294
|
// },
|
|
270
|
-
// {
|
|
295
|
+
// { requireUserConfirmationBeforeSignatureRequest: true }
|
|
271
296
|
// );
|
|
272
297
|
if ($connection.wallet && accountsFormated.length > 0 && accountsFormated[0] != $connection.account.address) {
|
|
273
298
|
set({
|
|
@@ -324,6 +349,7 @@ export function createConnection(settings) {
|
|
|
324
349
|
step: 'WaitingForWalletConnection', // TODO FetchingAccounts
|
|
325
350
|
mechanism,
|
|
326
351
|
wallets: $connection.wallets,
|
|
352
|
+
wallet: undefined,
|
|
327
353
|
});
|
|
328
354
|
const provider = wallet.provider;
|
|
329
355
|
const chainIdAsHex = await provider.request({ method: 'eth_chainId' });
|
|
@@ -338,9 +364,10 @@ export function createConnection(settings) {
|
|
|
338
364
|
accounts = accounts.map((v) => v.toLowerCase());
|
|
339
365
|
if (accounts.length === 0) {
|
|
340
366
|
set({
|
|
341
|
-
step: 'WaitingForWalletConnection',
|
|
367
|
+
step: 'WaitingForWalletConnection', // TODO add another step to unlock ?
|
|
342
368
|
mechanism,
|
|
343
369
|
wallets: $connection.wallets,
|
|
370
|
+
wallet: undefined,
|
|
344
371
|
});
|
|
345
372
|
accounts = await provider.request({ method: 'eth_requestAccounts' });
|
|
346
373
|
accounts = accounts.map((v) => v.toLowerCase());
|
|
@@ -348,23 +375,39 @@ export function createConnection(settings) {
|
|
|
348
375
|
if (options?.requestSignatureRightAway) {
|
|
349
376
|
watchForAccountChange(_wallet.provider);
|
|
350
377
|
set({
|
|
351
|
-
step: '
|
|
378
|
+
step: 'WalletConnected',
|
|
352
379
|
mechanism: {
|
|
353
380
|
...mechanism,
|
|
354
381
|
address: accounts[0],
|
|
355
382
|
},
|
|
356
383
|
wallets: $connection.wallets,
|
|
384
|
+
wallet: {
|
|
385
|
+
provider: _wallet.provider,
|
|
386
|
+
locked: false,
|
|
387
|
+
accountChanged: undefined,
|
|
388
|
+
chainId,
|
|
389
|
+
invalidChainId: alwaysOnChainId != chainId,
|
|
390
|
+
switchingChain: false,
|
|
391
|
+
},
|
|
357
392
|
});
|
|
358
393
|
await requestSignature();
|
|
359
394
|
}
|
|
360
395
|
else {
|
|
361
396
|
set({
|
|
362
|
-
step: '
|
|
397
|
+
step: 'WalletConnected',
|
|
363
398
|
mechanism: {
|
|
364
399
|
...mechanism,
|
|
365
400
|
address: accounts[0],
|
|
366
401
|
},
|
|
367
402
|
wallets: $connection.wallets,
|
|
403
|
+
wallet: {
|
|
404
|
+
provider: _wallet.provider,
|
|
405
|
+
locked: false,
|
|
406
|
+
accountChanged: undefined,
|
|
407
|
+
chainId,
|
|
408
|
+
invalidChainId: alwaysOnChainId != chainId,
|
|
409
|
+
switchingChain: false,
|
|
410
|
+
},
|
|
368
411
|
});
|
|
369
412
|
watchForAccountChange(_wallet.provider);
|
|
370
413
|
}
|
|
@@ -373,31 +416,48 @@ export function createConnection(settings) {
|
|
|
373
416
|
set({
|
|
374
417
|
step: 'MechanismToChoose',
|
|
375
418
|
wallets: $connection.wallets,
|
|
419
|
+
wallet: undefined,
|
|
376
420
|
error: { message: 'could not get any accounts' },
|
|
377
421
|
});
|
|
378
422
|
}
|
|
379
423
|
}
|
|
380
424
|
else {
|
|
381
|
-
if (options?.
|
|
425
|
+
if (!requestSignatureAutomaticallyIfPossible || options?.requireUserConfirmationBeforeSignatureRequest) {
|
|
382
426
|
set({
|
|
383
|
-
step: '
|
|
427
|
+
step: 'WalletConnected',
|
|
384
428
|
mechanism: {
|
|
385
429
|
...mechanism,
|
|
386
430
|
address: accounts[0],
|
|
387
431
|
},
|
|
388
432
|
wallets: $connection.wallets,
|
|
433
|
+
wallet: {
|
|
434
|
+
provider: _wallet.provider,
|
|
435
|
+
locked: false,
|
|
436
|
+
accountChanged: undefined,
|
|
437
|
+
chainId,
|
|
438
|
+
invalidChainId: alwaysOnChainId != chainId,
|
|
439
|
+
switchingChain: false,
|
|
440
|
+
},
|
|
389
441
|
});
|
|
390
442
|
watchForAccountChange(_wallet.provider);
|
|
391
443
|
}
|
|
392
444
|
else {
|
|
393
445
|
watchForAccountChange(_wallet.provider);
|
|
394
446
|
set({
|
|
395
|
-
step: '
|
|
447
|
+
step: 'WalletConnected',
|
|
396
448
|
mechanism: {
|
|
397
449
|
...mechanism,
|
|
398
450
|
address: accounts[0],
|
|
399
451
|
},
|
|
400
452
|
wallets: $connection.wallets,
|
|
453
|
+
wallet: {
|
|
454
|
+
provider: _wallet.provider,
|
|
455
|
+
locked: false,
|
|
456
|
+
accountChanged: undefined,
|
|
457
|
+
chainId,
|
|
458
|
+
invalidChainId: alwaysOnChainId != chainId,
|
|
459
|
+
switchingChain: false,
|
|
460
|
+
},
|
|
401
461
|
});
|
|
402
462
|
await requestSignature();
|
|
403
463
|
}
|
|
@@ -408,6 +468,7 @@ export function createConnection(settings) {
|
|
|
408
468
|
set({
|
|
409
469
|
step: 'MechanismToChoose',
|
|
410
470
|
wallets: $connection.wallets,
|
|
471
|
+
wallet: undefined,
|
|
411
472
|
error: { message: `failed to get wallet ${walletName}` },
|
|
412
473
|
});
|
|
413
474
|
}
|
|
@@ -421,6 +482,7 @@ export function createConnection(settings) {
|
|
|
421
482
|
set({
|
|
422
483
|
step: 'WalletToChoose',
|
|
423
484
|
mechanism: { type: 'wallet' },
|
|
485
|
+
wallet: undefined,
|
|
424
486
|
wallets: $connection.wallets,
|
|
425
487
|
});
|
|
426
488
|
}
|
|
@@ -435,6 +497,7 @@ export function createConnection(settings) {
|
|
|
435
497
|
popupClosed: false,
|
|
436
498
|
mechanism,
|
|
437
499
|
wallets: $connection.wallets,
|
|
500
|
+
wallet: undefined,
|
|
438
501
|
});
|
|
439
502
|
const unsubscribe = popup.subscribe(($popup) => {
|
|
440
503
|
if ($connection?.step === 'PopupLaunched') {
|
|
@@ -462,7 +525,7 @@ export function createConnection(settings) {
|
|
|
462
525
|
}
|
|
463
526
|
catch (err) {
|
|
464
527
|
console.log({ error: err });
|
|
465
|
-
set({ step: 'Idle', loading: false, wallets: $connection.wallets });
|
|
528
|
+
set({ step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets });
|
|
466
529
|
}
|
|
467
530
|
finally {
|
|
468
531
|
unsubscribe();
|
|
@@ -473,6 +536,7 @@ export function createConnection(settings) {
|
|
|
473
536
|
set({
|
|
474
537
|
step: 'MechanismToChoose',
|
|
475
538
|
wallets: $connection.wallets,
|
|
539
|
+
wallet: undefined,
|
|
476
540
|
});
|
|
477
541
|
}
|
|
478
542
|
}
|
|
@@ -487,19 +551,20 @@ export function createConnection(settings) {
|
|
|
487
551
|
set({
|
|
488
552
|
step: 'Idle',
|
|
489
553
|
loading: false,
|
|
554
|
+
wallet: undefined,
|
|
490
555
|
wallets: $connection.wallets,
|
|
491
556
|
});
|
|
492
557
|
}
|
|
493
558
|
function back(step) {
|
|
494
559
|
popup?.cancel();
|
|
495
560
|
if (step === 'MechanismToChoose') {
|
|
496
|
-
set({ step, wallets: $connection.wallets });
|
|
561
|
+
set({ step, wallets: $connection.wallets, wallet: undefined });
|
|
497
562
|
}
|
|
498
563
|
else if (step === 'Idle') {
|
|
499
|
-
set({ step, loading: false, wallets: $connection.wallets });
|
|
564
|
+
set({ step, loading: false, wallet: undefined, wallets: $connection.wallets });
|
|
500
565
|
}
|
|
501
566
|
else if (step === 'WalletToChoose') {
|
|
502
|
-
set({ step, wallets: $connection.wallets, mechanism: { type: 'wallet' } });
|
|
567
|
+
set({ step, wallet: undefined, wallets: $connection.wallets, mechanism: { type: 'wallet' } });
|
|
503
568
|
}
|
|
504
569
|
}
|
|
505
570
|
const popupLauncher = createPopupLauncher();
|
|
@@ -559,7 +624,7 @@ export function createConnection(settings) {
|
|
|
559
624
|
}
|
|
560
625
|
function cancel() {
|
|
561
626
|
popup?.cancel();
|
|
562
|
-
set({ step: 'Idle', loading: false, wallets: $connection.wallets });
|
|
627
|
+
set({ step: 'Idle', wallet: undefined, loading: false, wallets: $connection.wallets });
|
|
563
628
|
}
|
|
564
629
|
function getSignatureForPublicKeyPublication() {
|
|
565
630
|
if ($connection.step !== 'SignedIn') {
|
|
@@ -584,8 +649,16 @@ export function createConnection(settings) {
|
|
|
584
649
|
// this would require saving mnemonic or privatekey on etherplay localstorage though
|
|
585
650
|
throw new Error(`no saved public key publication signature for ${account.address}`);
|
|
586
651
|
}
|
|
652
|
+
async function unlock() {
|
|
653
|
+
if (!$connection.wallet) {
|
|
654
|
+
throw new Error(`invali state`);
|
|
655
|
+
}
|
|
656
|
+
const wallet = $connection.wallet;
|
|
657
|
+
// TODO unlocking state
|
|
658
|
+
await wallet.provider.request({ method: 'eth_requestAccounts' }).then(onAccountChanged);
|
|
659
|
+
}
|
|
587
660
|
async function switchWalletChain(chainId, config) {
|
|
588
|
-
if (
|
|
661
|
+
if (!$connection.wallet) {
|
|
589
662
|
throw new Error(`invali state`);
|
|
590
663
|
}
|
|
591
664
|
const wallet = $connection.wallet;
|
|
@@ -747,6 +820,7 @@ export function createConnection(settings) {
|
|
|
747
820
|
disconnect,
|
|
748
821
|
getSignatureForPublicKeyPublication,
|
|
749
822
|
switchWalletChain,
|
|
823
|
+
unlock,
|
|
750
824
|
provider: alwaysOnProvider,
|
|
751
825
|
};
|
|
752
826
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,2BAA2B,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAC1F,OAAO,EAAuB,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAevE,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG;IAAC,iBAAiB,EAAE,CAAC,cAAc,EAAE,2BAA2B,GAAG,SAAS,KAAK,IAAI,CAAA;CAAC,GAAG;IAClH,OAAO,EAAE,MAAM,CAAC;CAChB,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,2BAA2B,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAC1F,OAAO,EAAuB,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAevE,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG;IAAC,iBAAiB,EAAE,CAAC,cAAc,EAAE,2BAA2B,GAAG,SAAS,KAAK,IAAI,CAAA;CAAC,GAAG;IAClH,OAAO,EAAE,MAAM,CAAC;CAChB,CA8CA"}
|
package/dist/provider.js
CHANGED
|
@@ -13,18 +13,18 @@ export function createProvider(params) {
|
|
|
13
13
|
const { endpoint, chainId, prioritizeWalletProvider, requestsPerSecond } = params;
|
|
14
14
|
const jsonRPC = createCurriedJSONRPC(endpoint);
|
|
15
15
|
let walletProvider;
|
|
16
|
-
function setWalletProvider(
|
|
17
|
-
walletProvider =
|
|
16
|
+
function setWalletProvider(newWalletProvider) {
|
|
17
|
+
walletProvider = newWalletProvider;
|
|
18
18
|
}
|
|
19
19
|
const provider = {
|
|
20
|
-
request(req) {
|
|
20
|
+
async request(req) {
|
|
21
21
|
if (walletProvider) {
|
|
22
22
|
const signingMethod = signerMethods.includes(req.method) ||
|
|
23
23
|
connectedAccountMethods.includes(req.method) ||
|
|
24
24
|
walletOnlyMethods.includes(req.method) ||
|
|
25
25
|
req.method.indexOf('sign') != -1;
|
|
26
26
|
if (prioritizeWalletProvider || signingMethod) {
|
|
27
|
-
const currentChainIdAsHex = walletProvider.request({
|
|
27
|
+
const currentChainIdAsHex = await walletProvider.request({
|
|
28
28
|
method: 'eth_chainId',
|
|
29
29
|
});
|
|
30
30
|
const currentChainId = Number(currentChainIdAsHex).toString();
|
|
@@ -43,6 +43,7 @@ export function createProvider(params) {
|
|
|
43
43
|
return jsonRPC.request(req);
|
|
44
44
|
},
|
|
45
45
|
};
|
|
46
|
-
|
|
46
|
+
const curriedRPC = createCurriedJSONRPC(provider, { requestsPerSecond });
|
|
47
|
+
return { ...curriedRPC, setWalletProvider, chainId };
|
|
47
48
|
}
|
|
48
49
|
//# sourceMappingURL=provider.js.map
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,oBAAoB,EAAa,MAAM,uBAAuB,CAAC;AAEvE,MAAM,aAAa,GAAG;IACrB,cAAc;IACd,UAAU;IACV,qBAAqB;IACrB,eAAe;IACf,sBAAsB;IACtB,mBAAmB;CACnB,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAExD,MAAM,iBAAiB,GAAG,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,yBAAyB,CAAC,CAAC;AAE3G,MAAM,UAAU,cAAc,CAAC,MAK9B;IAGA,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAC,GAAG,MAAM,CAAC;IAChF,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,cAAuD,CAAC;IAE5D,SAAS,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,oBAAoB,EAAa,MAAM,uBAAuB,CAAC;AAEvE,MAAM,aAAa,GAAG;IACrB,cAAc;IACd,UAAU;IACV,qBAAqB;IACrB,eAAe;IACf,sBAAsB;IACtB,mBAAmB;CACnB,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAExD,MAAM,iBAAiB,GAAG,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,yBAAyB,CAAC,CAAC;AAE3G,MAAM,UAAU,cAAc,CAAC,MAK9B;IAGA,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAC,GAAG,MAAM,CAAC;IAChF,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,cAAuD,CAAC;IAE5D,SAAS,iBAAiB,CAAC,iBAA0D;QACpF,cAAc,GAAG,iBAAiB,CAAC;IACpC,CAAC;IAED,MAAM,QAAQ,GAAG;QAChB,KAAK,CAAC,OAAO,CAAC,GAAqC;YAClD,IAAI,cAAc,EAAE,CAAC;gBACpB,MAAM,aAAa,GAClB,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;oBAClC,uBAAuB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC5C,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;oBACtC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAElC,IAAI,wBAAwB,IAAI,aAAa,EAAE,CAAC;oBAC/C,MAAM,mBAAmB,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC;wBACxD,MAAM,EAAE,aAAa;qBACrB,CAAC,CAAC;oBACH,MAAM,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAC9D,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;wBAChC,IAAI,aAAa,EAAE,CAAC;4BACnB,OAAO,OAAO,CAAC,MAAM,CACpB,IAAI,KAAK,CACR,+DAA+D,OAAO,YAAY,cAAc,EAAE,CAClG,CACD,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACP,mEAAmE;4BACnE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBAC7B,CAAC;oBACF,CAAC;oBACD,OAAO,cAAc,CAAC,OAAO,CAAC,GAAU,CAAC,CAAC;gBAC3C,CAAC;YACF,CAAC;YAED,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;KACmC,CAAC;IAEtC,MAAM,UAAU,GAAG,oBAAoB,CAAU,QAAe,EAAE,EAAC,iBAAiB,EAAC,CAAC,CAAC;IACvF,OAAO,EAAC,GAAG,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAC,CAAC;AACpD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@etherplay/connect",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"@noble/hashes": "^1.7.1",
|
|
34
34
|
"@scure/bip32": "^1.6.2",
|
|
35
35
|
"@scure/bip39": "^1.5.4",
|
|
36
|
-
"remote-procedure-call": "^0.0
|
|
36
|
+
"remote-procedure-call": "^0.1.0",
|
|
37
37
|
"zustand": "^5.0.3",
|
|
38
|
-
"@etherplay/alchemy": "0.0.
|
|
38
|
+
"@etherplay/alchemy": "0.0.9"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsc --project tsconfig.json",
|
package/src/index.ts
CHANGED
|
@@ -41,48 +41,78 @@ export type Connection = {
|
|
|
41
41
|
| {
|
|
42
42
|
step: 'Idle';
|
|
43
43
|
loading: boolean;
|
|
44
|
+
wallet: undefined;
|
|
44
45
|
}
|
|
45
46
|
// It can then end up in MechanismToChoose if no specific connection mechanism was chosen upon clicking "connect"
|
|
46
47
|
| {
|
|
47
48
|
step: 'MechanismToChoose';
|
|
49
|
+
wallet: undefined;
|
|
48
50
|
}
|
|
49
|
-
// if a social/email login mechanism was
|
|
51
|
+
// if a social/email login mechanism was chosen, a popup will be launched
|
|
50
52
|
// popupClosed can be true and this means the popup has been closed and the user has to cancel the process to continue further
|
|
51
53
|
| {
|
|
52
54
|
step: 'PopupLaunched';
|
|
55
|
+
wallet: undefined;
|
|
53
56
|
popupClosed: boolean;
|
|
54
57
|
mechanism: AlchemyMechanism;
|
|
55
58
|
}
|
|
56
59
|
// If the user has chosen to use web3-wallet there might be multi-choice for it
|
|
57
60
|
| {
|
|
58
61
|
step: 'WalletToChoose';
|
|
62
|
+
wallet: undefined;
|
|
59
63
|
mechanism: WalletMechanism<undefined, undefined>;
|
|
60
64
|
}
|
|
61
65
|
// Once a user has chosen a wallet, the system will try to connect to it
|
|
62
66
|
| {
|
|
63
67
|
step: 'WaitingForWalletConnection';
|
|
68
|
+
wallet: undefined;
|
|
64
69
|
mechanism: WalletMechanism<string, undefined>;
|
|
65
70
|
}
|
|
66
71
|
// Once the wallet is connected, the system will need a signature
|
|
67
72
|
// this state represent the fact and require another user interaction to request the signature
|
|
68
73
|
| {
|
|
69
|
-
step: '
|
|
74
|
+
step: 'WalletConnected';
|
|
70
75
|
mechanism: WalletMechanism<string, `0x${string}`>;
|
|
76
|
+
wallet: {
|
|
77
|
+
provider: EIP1193WindowWalletProvider;
|
|
78
|
+
locked: boolean;
|
|
79
|
+
accountChanged?: `0x${string}`;
|
|
80
|
+
chainId: string;
|
|
81
|
+
invalidChainId: boolean;
|
|
82
|
+
switchingChain: 'addingChain' | 'switchingChain' | false;
|
|
83
|
+
};
|
|
71
84
|
}
|
|
72
85
|
// This state is triggered once the signature is requested, the user will have to confirm with its wallet
|
|
73
86
|
| {
|
|
74
87
|
step: 'WaitingForSignature';
|
|
75
88
|
mechanism: WalletMechanism<string, `0x${string}`>;
|
|
89
|
+
wallet: {
|
|
90
|
+
provider: EIP1193WindowWalletProvider;
|
|
91
|
+
locked: boolean;
|
|
92
|
+
accountChanged?: `0x${string}`;
|
|
93
|
+
chainId: string;
|
|
94
|
+
invalidChainId: boolean;
|
|
95
|
+
switchingChain: 'addingChain' | 'switchingChain' | false;
|
|
96
|
+
};
|
|
76
97
|
}
|
|
77
98
|
// Finally the user is fully signed in
|
|
78
|
-
//
|
|
99
|
+
// wallet?.accountChanged if set, represent the fact that the user has changed its web3-wallet accounnt.
|
|
100
|
+
// wallet?.invalidChainId if set, represent the fact that the wallet is connected to a different chain.
|
|
101
|
+
// wallet?.switchingChain if set, represent the fact that the user is currently switching chain.
|
|
79
102
|
// a notification could be shown to the user so that he can switch the app to use that other account.
|
|
80
103
|
| {
|
|
81
104
|
step: 'SignedIn';
|
|
82
|
-
mechanism:
|
|
105
|
+
mechanism: AlchemyMechanism;
|
|
106
|
+
account: OriginAccount;
|
|
107
|
+
wallet: undefined;
|
|
108
|
+
}
|
|
109
|
+
| {
|
|
110
|
+
step: 'SignedIn';
|
|
111
|
+
mechanism: WalletMechanism<string, `0x${string}`>;
|
|
83
112
|
account: OriginAccount;
|
|
84
|
-
wallet
|
|
113
|
+
wallet: {
|
|
85
114
|
provider: EIP1193WindowWalletProvider;
|
|
115
|
+
locked: boolean;
|
|
86
116
|
accountChanged?: `0x${string}`;
|
|
87
117
|
chainId: string;
|
|
88
118
|
invalidChainId: boolean;
|
|
@@ -112,6 +142,7 @@ const storageAccountKey = '__origin_account';
|
|
|
112
142
|
export function createConnection(settings: {
|
|
113
143
|
walletHost: string;
|
|
114
144
|
autoConnect?: boolean;
|
|
145
|
+
requestSignatureAutomaticallyIfPossible?: boolean;
|
|
115
146
|
node: {url: string; chainId: string; prioritizeWalletProvider?: boolean; requestsPerSecond?: number};
|
|
116
147
|
}) {
|
|
117
148
|
const alwaysOnChainId = settings.node.chainId;
|
|
@@ -125,8 +156,9 @@ export function createConnection(settings: {
|
|
|
125
156
|
if (typeof settings.autoConnect !== 'undefined') {
|
|
126
157
|
autoConnect = settings.autoConnect;
|
|
127
158
|
}
|
|
159
|
+
const requestSignatureAutomaticallyIfPossible = settings.requestSignatureAutomaticallyIfPossible || false;
|
|
128
160
|
|
|
129
|
-
let $connection: Connection = {step: 'Idle', loading: true, wallets: []};
|
|
161
|
+
let $connection: Connection = {step: 'Idle', loading: true, wallet: undefined, wallets: []};
|
|
130
162
|
const _store = writable<Connection>($connection);
|
|
131
163
|
function set(connection: Connection) {
|
|
132
164
|
$connection = connection;
|
|
@@ -196,8 +228,11 @@ export function createConnection(settings: {
|
|
|
196
228
|
const existingAccount = getOriginAccount();
|
|
197
229
|
if (existingAccount) {
|
|
198
230
|
if (existingAccount.signer) {
|
|
199
|
-
|
|
200
|
-
|
|
231
|
+
const mechanismUsed = existingAccount.mechanismUsed as
|
|
232
|
+
| AlchemyMechanism
|
|
233
|
+
| WalletMechanism<string, `0x${string}`>;
|
|
234
|
+
if (mechanismUsed.type == 'wallet') {
|
|
235
|
+
const walletMechanism = mechanismUsed as WalletMechanism<string, `0x${string}`>;
|
|
201
236
|
waitForWallet(walletMechanism.name)
|
|
202
237
|
.then(async (walletDetails: EIP6963ProviderDetail) => {
|
|
203
238
|
const walletProvider = walletDetails.provider;
|
|
@@ -209,10 +244,11 @@ export function createConnection(settings: {
|
|
|
209
244
|
set({
|
|
210
245
|
step: 'SignedIn',
|
|
211
246
|
account: existingAccount,
|
|
212
|
-
mechanism:
|
|
247
|
+
mechanism: walletMechanism,
|
|
213
248
|
wallets: $connection.wallets,
|
|
214
249
|
wallet: {
|
|
215
250
|
provider: walletProvider,
|
|
251
|
+
locked: false, // TODO should fetch eth_account first
|
|
216
252
|
accountChanged: undefined,
|
|
217
253
|
chainId,
|
|
218
254
|
invalidChainId: alwaysOnChainId != chainId,
|
|
@@ -223,29 +259,29 @@ export function createConnection(settings: {
|
|
|
223
259
|
watchForAccountChange(walletProvider);
|
|
224
260
|
})
|
|
225
261
|
.catch((err) => {
|
|
226
|
-
set({step: 'Idle', loading: false, wallets: $connection.wallets});
|
|
262
|
+
set({step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets});
|
|
227
263
|
});
|
|
228
264
|
} else {
|
|
229
265
|
set({
|
|
230
266
|
step: 'SignedIn',
|
|
231
267
|
account: existingAccount,
|
|
232
|
-
mechanism:
|
|
268
|
+
mechanism: mechanismUsed,
|
|
233
269
|
wallets: $connection.wallets,
|
|
234
270
|
wallet: undefined,
|
|
235
271
|
});
|
|
236
272
|
}
|
|
237
273
|
} else {
|
|
238
|
-
set({step: 'Idle', loading: false, wallets: $connection.wallets});
|
|
274
|
+
set({step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets});
|
|
239
275
|
}
|
|
240
276
|
} else {
|
|
241
|
-
set({step: 'Idle', loading: false, wallets: $connection.wallets});
|
|
277
|
+
set({step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets});
|
|
242
278
|
}
|
|
243
279
|
} catch {
|
|
244
|
-
set({step: 'Idle', loading: false, wallets: $connection.wallets});
|
|
280
|
+
set({step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets});
|
|
245
281
|
}
|
|
246
282
|
}
|
|
247
283
|
} else {
|
|
248
|
-
set({step: 'Idle', loading: false, wallets: $connection.wallets});
|
|
284
|
+
set({step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets});
|
|
249
285
|
}
|
|
250
286
|
fetchWallets();
|
|
251
287
|
|
|
@@ -266,8 +302,8 @@ export function createConnection(settings: {
|
|
|
266
302
|
}
|
|
267
303
|
|
|
268
304
|
async function requestSignature() {
|
|
269
|
-
if ($connection.step !== '
|
|
270
|
-
throw new Error(`invalid step: ${$connection.step}, needs to be
|
|
305
|
+
if ($connection.step !== 'WalletConnected') {
|
|
306
|
+
throw new Error(`invalid step: ${$connection.step}, needs to be WalletConnected`);
|
|
271
307
|
}
|
|
272
308
|
|
|
273
309
|
if (!_wallet) {
|
|
@@ -295,7 +331,7 @@ export function createConnection(settings: {
|
|
|
295
331
|
// TODO handle rejection (code: 4001 ?)
|
|
296
332
|
set({
|
|
297
333
|
...$connection,
|
|
298
|
-
step: '
|
|
334
|
+
step: 'WalletConnected',
|
|
299
335
|
mechanism: {
|
|
300
336
|
type: 'wallet',
|
|
301
337
|
name: $connection.mechanism.name,
|
|
@@ -335,6 +371,7 @@ export function createConnection(settings: {
|
|
|
335
371
|
wallet: {
|
|
336
372
|
chainId,
|
|
337
373
|
provider: provider,
|
|
374
|
+
locked: false,
|
|
338
375
|
accountChanged: undefined, // TODO check account list
|
|
339
376
|
invalidChainId: alwaysOnChainId != chainId,
|
|
340
377
|
switchingChain: false,
|
|
@@ -362,7 +399,12 @@ export function createConnection(settings: {
|
|
|
362
399
|
if (_wallet) {
|
|
363
400
|
_wallet.chainId = chainId;
|
|
364
401
|
}
|
|
365
|
-
if (
|
|
402
|
+
if (
|
|
403
|
+
$connection.step === 'SignedIn' &&
|
|
404
|
+
$connection.mechanism.type === 'wallet' &&
|
|
405
|
+
$connection.wallet &&
|
|
406
|
+
$connection.wallet.chainId != chainId
|
|
407
|
+
) {
|
|
366
408
|
set({
|
|
367
409
|
...$connection,
|
|
368
410
|
wallet: {
|
|
@@ -376,6 +418,25 @@ export function createConnection(settings: {
|
|
|
376
418
|
|
|
377
419
|
function onAccountChanged(accounts: `0x${string}`[]) {
|
|
378
420
|
const accountsFormated = accounts.map((a) => a.toLowerCase()) as `0x${string}`[];
|
|
421
|
+
|
|
422
|
+
if (accountsFormated.length === 0 && $connection.wallet) {
|
|
423
|
+
set({
|
|
424
|
+
...$connection,
|
|
425
|
+
wallet: {
|
|
426
|
+
...$connection.wallet,
|
|
427
|
+
locked: true,
|
|
428
|
+
},
|
|
429
|
+
});
|
|
430
|
+
} else if (accountsFormated.length > 0 && $connection.wallet?.locked) {
|
|
431
|
+
set({
|
|
432
|
+
...$connection,
|
|
433
|
+
wallet: {
|
|
434
|
+
...$connection.wallet,
|
|
435
|
+
locked: false,
|
|
436
|
+
},
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
|
|
379
440
|
if ($connection.step === 'SignedIn' && $connection.mechanism.type === 'wallet') {
|
|
380
441
|
// TODO if auto-connect and saved-signature ?
|
|
381
442
|
// connect(
|
|
@@ -384,7 +445,7 @@ export function createConnection(settings: {
|
|
|
384
445
|
// address: accounts[0],
|
|
385
446
|
// name: $connection.mechanism.name
|
|
386
447
|
// },
|
|
387
|
-
// {
|
|
448
|
+
// { requireUserConfirmationBeforeSignatureRequest: true }
|
|
388
449
|
// );
|
|
389
450
|
|
|
390
451
|
if ($connection.wallet && accountsFormated.length > 0 && accountsFormated[0] != $connection.account.address) {
|
|
@@ -427,7 +488,7 @@ export function createConnection(settings: {
|
|
|
427
488
|
async function connect(
|
|
428
489
|
mechanism?: Mechanism,
|
|
429
490
|
options?: {
|
|
430
|
-
|
|
491
|
+
requireUserConfirmationBeforeSignatureRequest?: boolean;
|
|
431
492
|
doNotStoreLocally?: boolean;
|
|
432
493
|
requestSignatureRightAway?: boolean;
|
|
433
494
|
},
|
|
@@ -454,6 +515,7 @@ export function createConnection(settings: {
|
|
|
454
515
|
step: 'WaitingForWalletConnection', // TODO FetchingAccounts
|
|
455
516
|
mechanism,
|
|
456
517
|
wallets: $connection.wallets,
|
|
518
|
+
wallet: undefined,
|
|
457
519
|
});
|
|
458
520
|
const provider = wallet.provider;
|
|
459
521
|
const chainIdAsHex = await provider.request({method: 'eth_chainId'});
|
|
@@ -468,9 +530,10 @@ export function createConnection(settings: {
|
|
|
468
530
|
accounts = accounts.map((v) => v.toLowerCase()) as `0x${string}`[];
|
|
469
531
|
if (accounts.length === 0) {
|
|
470
532
|
set({
|
|
471
|
-
step: 'WaitingForWalletConnection',
|
|
533
|
+
step: 'WaitingForWalletConnection', // TODO add another step to unlock ?
|
|
472
534
|
mechanism,
|
|
473
535
|
wallets: $connection.wallets,
|
|
536
|
+
wallet: undefined,
|
|
474
537
|
});
|
|
475
538
|
accounts = await provider.request({method: 'eth_requestAccounts'});
|
|
476
539
|
accounts = accounts.map((v) => v.toLowerCase()) as `0x${string}`[];
|
|
@@ -478,22 +541,38 @@ export function createConnection(settings: {
|
|
|
478
541
|
if (options?.requestSignatureRightAway) {
|
|
479
542
|
watchForAccountChange(_wallet.provider);
|
|
480
543
|
set({
|
|
481
|
-
step: '
|
|
544
|
+
step: 'WalletConnected',
|
|
482
545
|
mechanism: {
|
|
483
546
|
...mechanism,
|
|
484
547
|
address: accounts[0],
|
|
485
548
|
},
|
|
486
549
|
wallets: $connection.wallets,
|
|
550
|
+
wallet: {
|
|
551
|
+
provider: _wallet.provider,
|
|
552
|
+
locked: false,
|
|
553
|
+
accountChanged: undefined,
|
|
554
|
+
chainId,
|
|
555
|
+
invalidChainId: alwaysOnChainId != chainId,
|
|
556
|
+
switchingChain: false,
|
|
557
|
+
},
|
|
487
558
|
});
|
|
488
559
|
await requestSignature();
|
|
489
560
|
} else {
|
|
490
561
|
set({
|
|
491
|
-
step: '
|
|
562
|
+
step: 'WalletConnected',
|
|
492
563
|
mechanism: {
|
|
493
564
|
...mechanism,
|
|
494
565
|
address: accounts[0],
|
|
495
566
|
},
|
|
496
567
|
wallets: $connection.wallets,
|
|
568
|
+
wallet: {
|
|
569
|
+
provider: _wallet.provider,
|
|
570
|
+
locked: false,
|
|
571
|
+
accountChanged: undefined,
|
|
572
|
+
chainId,
|
|
573
|
+
invalidChainId: alwaysOnChainId != chainId,
|
|
574
|
+
switchingChain: false,
|
|
575
|
+
},
|
|
497
576
|
});
|
|
498
577
|
watchForAccountChange(_wallet.provider);
|
|
499
578
|
}
|
|
@@ -501,29 +580,46 @@ export function createConnection(settings: {
|
|
|
501
580
|
set({
|
|
502
581
|
step: 'MechanismToChoose',
|
|
503
582
|
wallets: $connection.wallets,
|
|
583
|
+
wallet: undefined,
|
|
504
584
|
error: {message: 'could not get any accounts'},
|
|
505
585
|
});
|
|
506
586
|
}
|
|
507
587
|
} else {
|
|
508
|
-
if (options?.
|
|
588
|
+
if (!requestSignatureAutomaticallyIfPossible || options?.requireUserConfirmationBeforeSignatureRequest) {
|
|
509
589
|
set({
|
|
510
|
-
step: '
|
|
590
|
+
step: 'WalletConnected',
|
|
511
591
|
mechanism: {
|
|
512
592
|
...mechanism,
|
|
513
593
|
address: accounts[0],
|
|
514
594
|
},
|
|
515
595
|
wallets: $connection.wallets,
|
|
596
|
+
wallet: {
|
|
597
|
+
provider: _wallet.provider,
|
|
598
|
+
locked: false,
|
|
599
|
+
accountChanged: undefined,
|
|
600
|
+
chainId,
|
|
601
|
+
invalidChainId: alwaysOnChainId != chainId,
|
|
602
|
+
switchingChain: false,
|
|
603
|
+
},
|
|
516
604
|
});
|
|
517
605
|
watchForAccountChange(_wallet.provider);
|
|
518
606
|
} else {
|
|
519
607
|
watchForAccountChange(_wallet.provider);
|
|
520
608
|
set({
|
|
521
|
-
step: '
|
|
609
|
+
step: 'WalletConnected',
|
|
522
610
|
mechanism: {
|
|
523
611
|
...mechanism,
|
|
524
612
|
address: accounts[0],
|
|
525
613
|
},
|
|
526
614
|
wallets: $connection.wallets,
|
|
615
|
+
wallet: {
|
|
616
|
+
provider: _wallet.provider,
|
|
617
|
+
locked: false,
|
|
618
|
+
accountChanged: undefined,
|
|
619
|
+
chainId,
|
|
620
|
+
invalidChainId: alwaysOnChainId != chainId,
|
|
621
|
+
switchingChain: false,
|
|
622
|
+
},
|
|
527
623
|
});
|
|
528
624
|
await requestSignature();
|
|
529
625
|
}
|
|
@@ -533,6 +629,7 @@ export function createConnection(settings: {
|
|
|
533
629
|
set({
|
|
534
630
|
step: 'MechanismToChoose',
|
|
535
631
|
wallets: $connection.wallets,
|
|
632
|
+
wallet: undefined,
|
|
536
633
|
error: {message: `failed to get wallet ${walletName}`},
|
|
537
634
|
});
|
|
538
635
|
}
|
|
@@ -546,6 +643,7 @@ export function createConnection(settings: {
|
|
|
546
643
|
set({
|
|
547
644
|
step: 'WalletToChoose',
|
|
548
645
|
mechanism: {type: 'wallet'},
|
|
646
|
+
wallet: undefined,
|
|
549
647
|
wallets: $connection.wallets,
|
|
550
648
|
});
|
|
551
649
|
}
|
|
@@ -559,6 +657,7 @@ export function createConnection(settings: {
|
|
|
559
657
|
popupClosed: false,
|
|
560
658
|
mechanism,
|
|
561
659
|
wallets: $connection.wallets,
|
|
660
|
+
wallet: undefined,
|
|
562
661
|
});
|
|
563
662
|
|
|
564
663
|
const unsubscribe = popup.subscribe(($popup) => {
|
|
@@ -586,7 +685,7 @@ export function createConnection(settings: {
|
|
|
586
685
|
}
|
|
587
686
|
} catch (err) {
|
|
588
687
|
console.log({error: err});
|
|
589
|
-
set({step: 'Idle', loading: false, wallets: $connection.wallets});
|
|
688
|
+
set({step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets});
|
|
590
689
|
} finally {
|
|
591
690
|
unsubscribe();
|
|
592
691
|
}
|
|
@@ -595,6 +694,7 @@ export function createConnection(settings: {
|
|
|
595
694
|
set({
|
|
596
695
|
step: 'MechanismToChoose',
|
|
597
696
|
wallets: $connection.wallets,
|
|
697
|
+
wallet: undefined,
|
|
598
698
|
});
|
|
599
699
|
}
|
|
600
700
|
}
|
|
@@ -610,6 +710,7 @@ export function createConnection(settings: {
|
|
|
610
710
|
set({
|
|
611
711
|
step: 'Idle',
|
|
612
712
|
loading: false,
|
|
713
|
+
wallet: undefined,
|
|
613
714
|
wallets: $connection.wallets,
|
|
614
715
|
});
|
|
615
716
|
}
|
|
@@ -617,11 +718,11 @@ export function createConnection(settings: {
|
|
|
617
718
|
function back(step: 'MechanismToChoose' | 'Idle' | 'WalletToChoose') {
|
|
618
719
|
popup?.cancel();
|
|
619
720
|
if (step === 'MechanismToChoose') {
|
|
620
|
-
set({step, wallets: $connection.wallets});
|
|
721
|
+
set({step, wallets: $connection.wallets, wallet: undefined});
|
|
621
722
|
} else if (step === 'Idle') {
|
|
622
|
-
set({step, loading: false, wallets: $connection.wallets});
|
|
723
|
+
set({step, loading: false, wallet: undefined, wallets: $connection.wallets});
|
|
623
724
|
} else if (step === 'WalletToChoose') {
|
|
624
|
-
set({step, wallets: $connection.wallets, mechanism: {type: 'wallet'}});
|
|
725
|
+
set({step, wallet: undefined, wallets: $connection.wallets, mechanism: {type: 'wallet'}});
|
|
625
726
|
}
|
|
626
727
|
}
|
|
627
728
|
|
|
@@ -687,7 +788,7 @@ export function createConnection(settings: {
|
|
|
687
788
|
|
|
688
789
|
function cancel() {
|
|
689
790
|
popup?.cancel();
|
|
690
|
-
set({step: 'Idle', loading: false, wallets: $connection.wallets});
|
|
791
|
+
set({step: 'Idle', wallet: undefined, loading: false, wallets: $connection.wallets});
|
|
691
792
|
}
|
|
692
793
|
|
|
693
794
|
function getSignatureForPublicKeyPublication(): Promise<`0x${string}`> {
|
|
@@ -716,6 +817,17 @@ export function createConnection(settings: {
|
|
|
716
817
|
throw new Error(`no saved public key publication signature for ${account.address}`);
|
|
717
818
|
}
|
|
718
819
|
|
|
820
|
+
async function unlock() {
|
|
821
|
+
if (!$connection.wallet) {
|
|
822
|
+
throw new Error(`invali state`);
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
const wallet = $connection.wallet;
|
|
826
|
+
|
|
827
|
+
// TODO unlocking state
|
|
828
|
+
await wallet.provider.request({method: 'eth_requestAccounts'}).then(onAccountChanged);
|
|
829
|
+
}
|
|
830
|
+
|
|
719
831
|
async function switchWalletChain(
|
|
720
832
|
chainId: string,
|
|
721
833
|
config?: {
|
|
@@ -730,7 +842,7 @@ export function createConnection(settings: {
|
|
|
730
842
|
};
|
|
731
843
|
},
|
|
732
844
|
) {
|
|
733
|
-
if (
|
|
845
|
+
if (!$connection.wallet) {
|
|
734
846
|
throw new Error(`invali state`);
|
|
735
847
|
}
|
|
736
848
|
|
|
@@ -891,6 +1003,7 @@ export function createConnection(settings: {
|
|
|
891
1003
|
disconnect,
|
|
892
1004
|
getSignatureForPublicKeyPublication,
|
|
893
1005
|
switchWalletChain,
|
|
1006
|
+
unlock,
|
|
894
1007
|
provider: alwaysOnProvider,
|
|
895
1008
|
};
|
|
896
1009
|
}
|
package/src/provider.ts
CHANGED
|
@@ -27,20 +27,21 @@ export function createProvider(params: {
|
|
|
27
27
|
|
|
28
28
|
let walletProvider: EIP1193WindowWalletProvider | undefined;
|
|
29
29
|
|
|
30
|
-
function setWalletProvider(
|
|
31
|
-
walletProvider =
|
|
30
|
+
function setWalletProvider(newWalletProvider: EIP1193WindowWalletProvider | undefined) {
|
|
31
|
+
walletProvider = newWalletProvider;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
const provider = {
|
|
35
|
-
request(req: {method: string; params?: any[]}) {
|
|
35
|
+
async request(req: {method: string; params?: any[]}) {
|
|
36
36
|
if (walletProvider) {
|
|
37
37
|
const signingMethod =
|
|
38
38
|
signerMethods.includes(req.method) ||
|
|
39
39
|
connectedAccountMethods.includes(req.method) ||
|
|
40
40
|
walletOnlyMethods.includes(req.method) ||
|
|
41
41
|
req.method.indexOf('sign') != -1;
|
|
42
|
+
|
|
42
43
|
if (prioritizeWalletProvider || signingMethod) {
|
|
43
|
-
const currentChainIdAsHex = walletProvider.request({
|
|
44
|
+
const currentChainIdAsHex = await walletProvider.request({
|
|
44
45
|
method: 'eth_chainId',
|
|
45
46
|
});
|
|
46
47
|
const currentChainId = Number(currentChainIdAsHex).toString();
|
|
@@ -64,5 +65,6 @@ export function createProvider(params: {
|
|
|
64
65
|
},
|
|
65
66
|
} as unknown as EIP1193WalletProvider;
|
|
66
67
|
|
|
67
|
-
|
|
68
|
+
const curriedRPC = createCurriedJSONRPC<Methods>(provider as any, {requestsPerSecond});
|
|
69
|
+
return {...curriedRPC, setWalletProvider, chainId};
|
|
68
70
|
}
|