@etherplay/connect 0.0.35 → 0.0.36
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 +96 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +118 -68
- package/dist/index.js.map +1 -1
- package/package.json +31 -4
- package/src/index.ts +346 -152
package/dist/index.d.ts
CHANGED
|
@@ -54,6 +54,7 @@ export type WalletMechanism<WalletName extends string | undefined, Address exten
|
|
|
54
54
|
});
|
|
55
55
|
export type Mechanism = AlchemyMechanism | WalletMechanism<string | undefined, `0x${string}` | undefined>;
|
|
56
56
|
export type FullfilledMechanism = AlchemyMechanism | WalletMechanism<string, `0x${string}`>;
|
|
57
|
+
export type TargetStep = 'WalletConnected' | 'SignedIn';
|
|
57
58
|
export type WalletState<WalletProviderType> = {
|
|
58
59
|
provider: WalletProvider<WalletProviderType>;
|
|
59
60
|
accounts: `0x${string}`[];
|
|
@@ -70,11 +71,16 @@ export type WalletState<WalletProviderType> = {
|
|
|
70
71
|
status: 'disconnected';
|
|
71
72
|
connecting: boolean;
|
|
72
73
|
});
|
|
73
|
-
type
|
|
74
|
+
type WaitingForSignature<WalletProviderType> = {
|
|
74
75
|
step: 'WaitingForSignature';
|
|
75
76
|
mechanism: WalletMechanism<string, `0x${string}`>;
|
|
76
77
|
wallet: WalletState<WalletProviderType>;
|
|
77
78
|
};
|
|
79
|
+
type WalletConnected<WalletProviderType> = {
|
|
80
|
+
step: 'WalletConnected';
|
|
81
|
+
mechanism: WalletMechanism<string, `0x${string}`>;
|
|
82
|
+
wallet: WalletState<WalletProviderType>;
|
|
83
|
+
};
|
|
78
84
|
type SignedIn<WalletProviderType> = {
|
|
79
85
|
step: 'SignedIn';
|
|
80
86
|
mechanism: AlchemyMechanism;
|
|
@@ -116,18 +122,27 @@ export type Connection<WalletProviderType> = {
|
|
|
116
122
|
step: 'ChooseWalletAccount';
|
|
117
123
|
mechanism: WalletMechanism<string, undefined>;
|
|
118
124
|
wallet: WalletState<WalletProviderType>;
|
|
119
|
-
} |
|
|
120
|
-
|
|
121
|
-
|
|
125
|
+
} | WalletConnected<WalletProviderType> | WaitingForSignature<WalletProviderType> | SignedIn<WalletProviderType>);
|
|
126
|
+
export type SignedInWithWallet<WalletProviderType> = Extract<Connection<WalletProviderType>, {
|
|
127
|
+
step: 'SignedIn';
|
|
122
128
|
wallet: WalletState<WalletProviderType>;
|
|
123
|
-
}
|
|
124
|
-
export type
|
|
129
|
+
}>;
|
|
130
|
+
export type WalletConnectedState<WalletProviderType> = Extract<Connection<WalletProviderType>, {
|
|
131
|
+
step: 'WalletConnected';
|
|
132
|
+
}>;
|
|
133
|
+
export type ConnectedWithWallet<WalletProviderType> = WalletConnectedState<WalletProviderType> | SignedInWithWallet<WalletProviderType>;
|
|
134
|
+
export type SignedInState<WalletProviderType> = Extract<Connection<WalletProviderType>, {
|
|
135
|
+
step: 'SignedIn';
|
|
136
|
+
}>;
|
|
137
|
+
export declare function isTargetStepReached<WalletProviderType, Target extends TargetStep, WalletOnly extends boolean = false>(connection: Connection<WalletProviderType>, targetStep: Target, walletOnly?: WalletOnly): connection is Target extends 'WalletConnected' ? ConnectedWithWallet<WalletProviderType> : WalletOnly extends true ? SignedInWithWallet<WalletProviderType> : SignedInState<WalletProviderType>;
|
|
138
|
+
export type ConnectionOptions = {
|
|
139
|
+
requireUserConfirmationBeforeSignatureRequest?: boolean;
|
|
140
|
+
doNotStoreLocally?: boolean;
|
|
141
|
+
requestSignatureRightAway?: boolean;
|
|
142
|
+
};
|
|
143
|
+
export type ConnectionStore<WalletProviderType, Target extends TargetStep = 'SignedIn', WalletOnly extends boolean = false> = {
|
|
125
144
|
subscribe: (run: (value: Connection<WalletProviderType>) => void) => () => void;
|
|
126
|
-
connect: (mechanism?: Mechanism, options?:
|
|
127
|
-
requireUserConfirmationBeforeSignatureRequest?: boolean;
|
|
128
|
-
doNotStoreLocally?: boolean;
|
|
129
|
-
requestSignatureRightAway?: boolean;
|
|
130
|
-
}) => Promise<void>;
|
|
145
|
+
connect: (mechanism?: Target extends 'WalletConnected' ? WalletMechanism<string | undefined, `0x${string}` | undefined> : WalletOnly extends true ? WalletMechanism<string | undefined, `0x${string}` | undefined> : Mechanism, options?: ConnectionOptions) => Promise<void>;
|
|
131
146
|
cancel: () => void;
|
|
132
147
|
back: (step: 'MechanismToChoose' | 'Idle' | 'WalletToChoose') => void;
|
|
133
148
|
requestSignature: () => Promise<void>;
|
|
@@ -138,49 +153,95 @@ export type ConnectionStore<WalletProviderType> = {
|
|
|
138
153
|
getSignatureForPublicKeyPublication: () => Promise<`0x${string}`>;
|
|
139
154
|
switchWalletChain: (chainInfo?: BasicChainInfo) => Promise<void>;
|
|
140
155
|
unlock: () => Promise<void>;
|
|
141
|
-
ensureConnected: {
|
|
142
|
-
(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}): Promise<WalletConnected<WalletProviderType>>;
|
|
147
|
-
(step: 'SignedIn', mechanism?:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
(mechanism?: Mechanism, options?: {
|
|
153
|
-
requireUserConfirmationBeforeSignatureRequest?: boolean;
|
|
154
|
-
doNotStoreLocally?: boolean;
|
|
155
|
-
requestSignatureRightAway?: boolean;
|
|
156
|
-
}): Promise<SignedIn<WalletProviderType>>;
|
|
156
|
+
ensureConnected: Target extends 'WalletConnected' ? {
|
|
157
|
+
(options?: ConnectionOptions): Promise<WalletConnected<WalletProviderType>>;
|
|
158
|
+
(step: 'WalletConnected', mechanism?: WalletMechanism<string | undefined, `0x${string}` | undefined>, options?: ConnectionOptions): Promise<WalletConnected<WalletProviderType>>;
|
|
159
|
+
} : WalletOnly extends true ? {
|
|
160
|
+
(options?: ConnectionOptions): Promise<SignedInWithWallet<WalletProviderType>>;
|
|
161
|
+
(step: 'WalletConnected', mechanism?: WalletMechanism<string | undefined, `0x${string}` | undefined>, options?: ConnectionOptions): Promise<WalletConnected<WalletProviderType>>;
|
|
162
|
+
(step: 'SignedIn', mechanism?: WalletMechanism<string | undefined, `0x${string}` | undefined>, options?: ConnectionOptions): Promise<SignedInWithWallet<WalletProviderType>>;
|
|
163
|
+
} : {
|
|
164
|
+
(options?: ConnectionOptions): Promise<SignedIn<WalletProviderType>>;
|
|
165
|
+
(step: 'WalletConnected', mechanism?: WalletMechanism<string | undefined, `0x${string}` | undefined>, options?: ConnectionOptions): Promise<WalletConnected<WalletProviderType>>;
|
|
166
|
+
(step: 'SignedIn', mechanism?: Mechanism, options?: ConnectionOptions): Promise<SignedIn<WalletProviderType>>;
|
|
157
167
|
};
|
|
168
|
+
isTargetStepReached: (connection: Connection<WalletProviderType>) => connection is Target extends 'WalletConnected' ? ConnectedWithWallet<WalletProviderType> : WalletOnly extends true ? SignedInWithWallet<WalletProviderType> : SignedInState<WalletProviderType>;
|
|
169
|
+
targetStep: Target;
|
|
170
|
+
walletOnly: WalletOnly;
|
|
158
171
|
provider: WalletProviderType;
|
|
159
172
|
chainId: string;
|
|
160
173
|
chainInfo: ChainInfo<WalletProviderType>;
|
|
161
174
|
};
|
|
162
175
|
export declare function createConnection<WalletProviderType>(settings: {
|
|
163
|
-
|
|
164
|
-
walletHost
|
|
176
|
+
targetStep: 'WalletConnected';
|
|
177
|
+
walletHost?: string;
|
|
178
|
+
chainInfo: ChainInfo<WalletProviderType>;
|
|
179
|
+
walletConnector: WalletConnector<WalletProviderType>;
|
|
165
180
|
autoConnect?: boolean;
|
|
166
|
-
|
|
181
|
+
alwaysUseCurrentAccount?: boolean;
|
|
182
|
+
prioritizeWalletProvider?: boolean;
|
|
183
|
+
requestsPerSecond?: number;
|
|
184
|
+
}): ConnectionStore<WalletProviderType, 'WalletConnected'>;
|
|
185
|
+
export declare function createConnection(settings: {
|
|
186
|
+
targetStep: 'WalletConnected';
|
|
187
|
+
walletHost?: string;
|
|
188
|
+
chainInfo: ChainInfo<UnderlyingEthereumProvider>;
|
|
189
|
+
walletConnector?: undefined;
|
|
190
|
+
autoConnect?: boolean;
|
|
191
|
+
alwaysUseCurrentAccount?: boolean;
|
|
192
|
+
prioritizeWalletProvider?: boolean;
|
|
193
|
+
requestsPerSecond?: number;
|
|
194
|
+
}): ConnectionStore<UnderlyingEthereumProvider, 'WalletConnected', true>;
|
|
195
|
+
export declare function createConnection<WalletProviderType>(settings: {
|
|
196
|
+
targetStep?: 'SignedIn';
|
|
197
|
+
walletOnly: true;
|
|
198
|
+
walletHost?: string;
|
|
199
|
+
chainInfo: ChainInfo<WalletProviderType>;
|
|
167
200
|
walletConnector: WalletConnector<WalletProviderType>;
|
|
201
|
+
signingOrigin?: string;
|
|
202
|
+
autoConnect?: boolean;
|
|
168
203
|
requestSignatureAutomaticallyIfPossible?: boolean;
|
|
169
204
|
alwaysUseCurrentAccount?: boolean;
|
|
170
|
-
chainInfo: ChainInfo<WalletProviderType>;
|
|
171
205
|
prioritizeWalletProvider?: boolean;
|
|
172
206
|
requestsPerSecond?: number;
|
|
173
|
-
}): ConnectionStore<WalletProviderType>;
|
|
207
|
+
}): ConnectionStore<WalletProviderType, 'SignedIn', true>;
|
|
174
208
|
export declare function createConnection(settings: {
|
|
209
|
+
targetStep?: 'SignedIn';
|
|
210
|
+
walletOnly: true;
|
|
211
|
+
walletHost?: string;
|
|
212
|
+
chainInfo: ChainInfo<UnderlyingEthereumProvider>;
|
|
213
|
+
walletConnector?: undefined;
|
|
175
214
|
signingOrigin?: string;
|
|
215
|
+
autoConnect?: boolean;
|
|
216
|
+
requestSignatureAutomaticallyIfPossible?: boolean;
|
|
217
|
+
alwaysUseCurrentAccount?: boolean;
|
|
218
|
+
prioritizeWalletProvider?: boolean;
|
|
219
|
+
requestsPerSecond?: number;
|
|
220
|
+
}): ConnectionStore<UnderlyingEthereumProvider, 'SignedIn', true>;
|
|
221
|
+
export declare function createConnection<WalletProviderType>(settings: {
|
|
222
|
+
targetStep?: 'SignedIn';
|
|
223
|
+
walletOnly?: false;
|
|
176
224
|
walletHost: string;
|
|
225
|
+
chainInfo: ChainInfo<WalletProviderType>;
|
|
226
|
+
walletConnector: WalletConnector<WalletProviderType>;
|
|
227
|
+
signingOrigin?: string;
|
|
177
228
|
autoConnect?: boolean;
|
|
178
|
-
autoConnectWallet?: boolean;
|
|
179
|
-
walletConnector?: undefined;
|
|
180
229
|
requestSignatureAutomaticallyIfPossible?: boolean;
|
|
181
230
|
alwaysUseCurrentAccount?: boolean;
|
|
231
|
+
prioritizeWalletProvider?: boolean;
|
|
232
|
+
requestsPerSecond?: number;
|
|
233
|
+
}): ConnectionStore<WalletProviderType, 'SignedIn', false>;
|
|
234
|
+
export declare function createConnection(settings: {
|
|
235
|
+
targetStep?: 'SignedIn';
|
|
236
|
+
walletOnly?: false;
|
|
237
|
+
walletHost: string;
|
|
182
238
|
chainInfo: ChainInfo<UnderlyingEthereumProvider>;
|
|
239
|
+
walletConnector?: undefined;
|
|
240
|
+
signingOrigin?: string;
|
|
241
|
+
autoConnect?: boolean;
|
|
242
|
+
requestSignatureAutomaticallyIfPossible?: boolean;
|
|
243
|
+
alwaysUseCurrentAccount?: boolean;
|
|
183
244
|
prioritizeWalletProvider?: boolean;
|
|
184
245
|
requestsPerSecond?: number;
|
|
185
|
-
}): ConnectionStore<UnderlyingEthereumProvider>;
|
|
246
|
+
}): ConnectionStore<UnderlyingEthereumProvider, 'SignedIn', false>;
|
|
186
247
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,24 @@ import { createPopupLauncher } from './popup.js';
|
|
|
4
4
|
import { fromEntropyKeyToMnemonic, fromSignatureToKey, originKeyMessage, originPublicKeyPublicationMessage, } from '@etherplay/alchemy';
|
|
5
5
|
import { withTimeout } from './utils.js';
|
|
6
6
|
export { fromEntropyKeyToMnemonic, originPublicKeyPublicationMessage, originKeyMessage };
|
|
7
|
+
// Type guard - narrows Connection based on targetStep and walletOnly
|
|
8
|
+
// For 'WalletConnected' target: narrows to ConnectedWithWallet (WalletConnected | SignedIn-with-wallet)
|
|
9
|
+
// For 'SignedIn' target with walletOnly: narrows to SignedInWithWallet
|
|
10
|
+
// For 'SignedIn' target (default): narrows to SignedIn
|
|
11
|
+
export function isTargetStepReached(connection, targetStep, walletOnly) {
|
|
12
|
+
if (targetStep === 'WalletConnected') {
|
|
13
|
+
// For WalletConnected target, accept WalletConnected OR SignedIn-with-wallet
|
|
14
|
+
return connection.step === 'WalletConnected' || (connection.step === 'SignedIn' && connection.wallet !== undefined);
|
|
15
|
+
}
|
|
16
|
+
// For SignedIn target (regardless of walletOnly), only accept SignedIn
|
|
17
|
+
// walletOnly affects the return type narrowing, not the step check
|
|
18
|
+
if (walletOnly) {
|
|
19
|
+
// For SignedIn + walletOnly, only accept SignedIn-with-wallet
|
|
20
|
+
return connection.step === 'SignedIn' && connection.wallet !== undefined;
|
|
21
|
+
}
|
|
22
|
+
// For SignedIn target, accept any SignedIn variant
|
|
23
|
+
return connection.step === 'SignedIn';
|
|
24
|
+
}
|
|
7
25
|
function viemChainInfoToSwitchChainInfo(chainInfo) {
|
|
8
26
|
return {
|
|
9
27
|
chainId: `0x${Number(chainInfo.id).toString(16)}`,
|
|
@@ -15,6 +33,7 @@ function viemChainInfoToSwitchChainInfo(chainInfo) {
|
|
|
15
33
|
}
|
|
16
34
|
const storageKeyAccount = '__origin_account';
|
|
17
35
|
const storageKeyLastWallet = '__last_wallet';
|
|
36
|
+
// Implementation signature
|
|
18
37
|
export function createConnection(settings) {
|
|
19
38
|
function originToSignWith() {
|
|
20
39
|
return settings.signingOrigin || origin;
|
|
@@ -27,15 +46,15 @@ export function createConnection(settings) {
|
|
|
27
46
|
prioritizeWalletProvider: settings.prioritizeWalletProvider,
|
|
28
47
|
requestsPerSecond: settings.requestsPerSecond,
|
|
29
48
|
});
|
|
49
|
+
// Determine target step (defaults to 'SignedIn')
|
|
50
|
+
const targetStep = settings.targetStep || 'SignedIn';
|
|
30
51
|
let autoConnect = true;
|
|
31
52
|
if (typeof settings.autoConnect !== 'undefined') {
|
|
32
53
|
autoConnect = settings.autoConnect;
|
|
33
54
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
const requestSignatureAutomaticallyIfPossible = settings.requestSignatureAutomaticallyIfPossible || false;
|
|
55
|
+
// For SignedIn target, we can auto-request signature if configured
|
|
56
|
+
// For WalletConnected target, this is always false (we never auto-request signature)
|
|
57
|
+
const requestSignatureAutomaticallyIfPossible = targetStep === 'SignedIn' ? settings.requestSignatureAutomaticallyIfPossible || false : false;
|
|
39
58
|
let $connection = { step: 'Idle', loading: true, wallet: undefined, wallets: [] };
|
|
40
59
|
const _store = writable($connection);
|
|
41
60
|
function set(connection) {
|
|
@@ -82,13 +101,18 @@ export function createConnection(settings) {
|
|
|
82
101
|
}, 100);
|
|
83
102
|
});
|
|
84
103
|
}
|
|
104
|
+
// Auto-connect logic based on targetStep
|
|
105
|
+
// When targetStep: 'WalletConnected' - only check lastWallet
|
|
106
|
+
// When targetStep: 'SignedIn' - check originAccount first, then fallback to lastWallet
|
|
107
|
+
let autoConnectHandled = false;
|
|
85
108
|
if (autoConnect) {
|
|
86
109
|
if (typeof window !== 'undefined') {
|
|
87
|
-
// set({step: 'Idle', loading: true, wallets: $connection.wallets});
|
|
88
110
|
try {
|
|
89
|
-
|
|
90
|
-
if (
|
|
91
|
-
|
|
111
|
+
// For SignedIn target, check for existing account first
|
|
112
|
+
if (targetStep === 'SignedIn') {
|
|
113
|
+
const existingAccount = getOriginAccount();
|
|
114
|
+
if (existingAccount && existingAccount.signer) {
|
|
115
|
+
autoConnectHandled = true;
|
|
92
116
|
const mechanismUsed = existingAccount.mechanismUsed;
|
|
93
117
|
if (mechanismUsed.type == 'wallet') {
|
|
94
118
|
const walletMechanism = mechanismUsed;
|
|
@@ -98,15 +122,11 @@ export function createConnection(settings) {
|
|
|
98
122
|
const chainIdAsHex = await withTimeout(walletProvider.getChainId());
|
|
99
123
|
const chainId = Number(chainIdAsHex).toString();
|
|
100
124
|
_wallet = { provider: walletProvider, chainId };
|
|
101
|
-
// TODO
|
|
102
125
|
alwaysOnProviderWrapper.setWalletProvider(walletProvider.underlyingProvider);
|
|
103
126
|
watchForChainIdChange(_wallet.provider);
|
|
104
127
|
let accounts = [];
|
|
105
|
-
// try {
|
|
106
128
|
accounts = await withTimeout(walletProvider.getAccounts());
|
|
107
129
|
accounts = accounts.map((v) => v.toLowerCase());
|
|
108
|
-
// } catch {}
|
|
109
|
-
// // TODO try catch ? and use logic of onAccountChanged
|
|
110
130
|
set({
|
|
111
131
|
step: 'SignedIn',
|
|
112
132
|
account: existingAccount,
|
|
@@ -123,7 +143,6 @@ export function createConnection(settings) {
|
|
|
123
143
|
},
|
|
124
144
|
});
|
|
125
145
|
alwaysOnProviderWrapper.setWalletStatus('connected');
|
|
126
|
-
// TODO use the same logic before hand
|
|
127
146
|
onAccountChanged(accounts);
|
|
128
147
|
watchForAccountChange(walletProvider);
|
|
129
148
|
})
|
|
@@ -141,55 +160,43 @@ export function createConnection(settings) {
|
|
|
141
160
|
});
|
|
142
161
|
}
|
|
143
162
|
}
|
|
144
|
-
else {
|
|
145
|
-
set({ step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets });
|
|
146
|
-
}
|
|
147
163
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
chainId,
|
|
177
|
-
invalidChainId: alwaysOnChainId != chainId,
|
|
178
|
-
switchingChain: false,
|
|
179
|
-
},
|
|
180
|
-
});
|
|
181
|
-
alwaysOnProviderWrapper.setWalletStatus('connected');
|
|
182
|
-
// TODO use the same logic before hand
|
|
183
|
-
onAccountChanged(accounts);
|
|
184
|
-
watchForAccountChange(walletProvider);
|
|
185
|
-
})
|
|
186
|
-
.catch((err) => {
|
|
187
|
-
set({ step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets });
|
|
164
|
+
// For both targets, fallback to lastWallet if no account found (or WalletConnected target)
|
|
165
|
+
if (!autoConnectHandled) {
|
|
166
|
+
const lastWallet = getLastWallet();
|
|
167
|
+
if (lastWallet) {
|
|
168
|
+
waitForWallet(lastWallet.name)
|
|
169
|
+
.then(async (walletDetails) => {
|
|
170
|
+
const walletProvider = walletDetails.walletProvider;
|
|
171
|
+
const chainIdAsHex = await withTimeout(walletProvider.getChainId());
|
|
172
|
+
const chainId = Number(chainIdAsHex).toString();
|
|
173
|
+
_wallet = { provider: walletProvider, chainId };
|
|
174
|
+
alwaysOnProviderWrapper.setWalletProvider(walletProvider.underlyingProvider);
|
|
175
|
+
watchForChainIdChange(_wallet.provider);
|
|
176
|
+
let accounts = [];
|
|
177
|
+
accounts = await withTimeout(walletProvider.getAccounts());
|
|
178
|
+
accounts = accounts.map((v) => v.toLowerCase());
|
|
179
|
+
set({
|
|
180
|
+
step: 'WalletConnected',
|
|
181
|
+
mechanism: lastWallet,
|
|
182
|
+
wallets: $connection.wallets,
|
|
183
|
+
wallet: {
|
|
184
|
+
provider: walletProvider,
|
|
185
|
+
accounts,
|
|
186
|
+
status: 'connected',
|
|
187
|
+
accountChanged: undefined,
|
|
188
|
+
chainId,
|
|
189
|
+
invalidChainId: alwaysOnChainId != chainId,
|
|
190
|
+
switchingChain: false,
|
|
191
|
+
},
|
|
188
192
|
});
|
|
189
|
-
|
|
190
|
-
|
|
193
|
+
alwaysOnProviderWrapper.setWalletStatus('connected');
|
|
194
|
+
onAccountChanged(accounts);
|
|
195
|
+
watchForAccountChange(walletProvider);
|
|
196
|
+
})
|
|
197
|
+
.catch((err) => {
|
|
191
198
|
set({ step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets });
|
|
192
|
-
}
|
|
199
|
+
});
|
|
193
200
|
}
|
|
194
201
|
else {
|
|
195
202
|
set({ step: 'Idle', loading: false, wallet: undefined, wallets: $connection.wallets });
|
|
@@ -688,6 +695,10 @@ export function createConnection(settings) {
|
|
|
688
695
|
}
|
|
689
696
|
}
|
|
690
697
|
else {
|
|
698
|
+
// Popup-based auth requires walletHost
|
|
699
|
+
if (!settings.walletHost) {
|
|
700
|
+
throw new Error('walletHost is required for popup-based authentication (email, oauth, mnemonic)');
|
|
701
|
+
}
|
|
691
702
|
popup = connectViaPopup({
|
|
692
703
|
mechanism,
|
|
693
704
|
walletHost: settings.walletHost,
|
|
@@ -740,18 +751,37 @@ export function createConnection(settings) {
|
|
|
740
751
|
});
|
|
741
752
|
}
|
|
742
753
|
}
|
|
743
|
-
async function ensureConnected(
|
|
744
|
-
|
|
745
|
-
let
|
|
754
|
+
async function ensureConnected(stepOrMechanismOrOptions, mechanismOrOptions, options) {
|
|
755
|
+
// Determine if first arg is a step string, mechanism, or options
|
|
756
|
+
let step;
|
|
757
|
+
let mechanism;
|
|
758
|
+
let opts;
|
|
759
|
+
if (typeof stepOrMechanismOrOptions === 'string') {
|
|
760
|
+
// First arg is a step
|
|
761
|
+
step = stepOrMechanismOrOptions;
|
|
762
|
+
mechanism = mechanismOrOptions;
|
|
763
|
+
opts = options;
|
|
764
|
+
}
|
|
765
|
+
else if (stepOrMechanismOrOptions && 'type' in stepOrMechanismOrOptions) {
|
|
766
|
+
// First arg is a mechanism
|
|
767
|
+
step = targetStep; // Use configured target as default
|
|
768
|
+
mechanism = stepOrMechanismOrOptions;
|
|
769
|
+
opts = mechanismOrOptions;
|
|
770
|
+
}
|
|
771
|
+
else {
|
|
772
|
+
// First arg is options or undefined
|
|
773
|
+
step = targetStep; // Use configured target as default
|
|
774
|
+
mechanism = undefined;
|
|
775
|
+
opts = stepOrMechanismOrOptions;
|
|
776
|
+
}
|
|
777
|
+
// For WalletConnected step, default to wallet mechanism
|
|
746
778
|
if (!mechanism && step === 'WalletConnected') {
|
|
747
779
|
mechanism = { type: 'wallet' };
|
|
748
780
|
}
|
|
749
|
-
options = typeof stepOrMechanism === 'string' ? options : mechanismOrOptions;
|
|
750
781
|
const promise = new Promise((resolve, reject) => {
|
|
751
782
|
let forceConnect = false;
|
|
752
783
|
if ($connection.step == 'WalletConnected' &&
|
|
753
784
|
($connection.wallet.status == 'locked' || $connection.wallet.status === 'disconnected')) {
|
|
754
|
-
// console.log(`locked / disconnected : we assume it needs reconnection`);
|
|
755
785
|
forceConnect = true;
|
|
756
786
|
mechanism = $connection.mechanism; // we reuse existing mechanism as we just want to reconnect
|
|
757
787
|
}
|
|
@@ -761,7 +791,7 @@ export function createConnection(settings) {
|
|
|
761
791
|
}
|
|
762
792
|
let idlePassed = $connection.step != 'Idle';
|
|
763
793
|
if (!idlePassed || forceConnect) {
|
|
764
|
-
connect(mechanism,
|
|
794
|
+
connect(mechanism, opts);
|
|
765
795
|
}
|
|
766
796
|
const unsubscribe = _store.subscribe((connection) => {
|
|
767
797
|
if (connection.step === 'Idle' && idlePassed) {
|
|
@@ -1063,7 +1093,23 @@ export function createConnection(settings) {
|
|
|
1063
1093
|
}
|
|
1064
1094
|
}
|
|
1065
1095
|
}
|
|
1066
|
-
|
|
1096
|
+
// Determine walletOnly (defaults to false, but true implies WalletConnected target behavior for mechanism)
|
|
1097
|
+
const walletOnly = settings.walletOnly || targetStep === 'WalletConnected';
|
|
1098
|
+
// Method on the store to check if target step is reached
|
|
1099
|
+
function storeIsTargetStepReached(connection) {
|
|
1100
|
+
if (targetStep === 'WalletConnected') {
|
|
1101
|
+
// For WalletConnected target, accept WalletConnected OR SignedIn-with-wallet
|
|
1102
|
+
return (connection.step === 'WalletConnected' || (connection.step === 'SignedIn' && connection.wallet !== undefined));
|
|
1103
|
+
}
|
|
1104
|
+
// For SignedIn target
|
|
1105
|
+
if (walletOnly) {
|
|
1106
|
+
// With walletOnly, only accept SignedIn-with-wallet
|
|
1107
|
+
return connection.step === 'SignedIn' && connection.wallet !== undefined;
|
|
1108
|
+
}
|
|
1109
|
+
// Accept any SignedIn variant
|
|
1110
|
+
return connection.step === 'SignedIn';
|
|
1111
|
+
}
|
|
1112
|
+
const store = {
|
|
1067
1113
|
subscribe: _store.subscribe,
|
|
1068
1114
|
connect,
|
|
1069
1115
|
cancel,
|
|
@@ -1074,10 +1120,14 @@ export function createConnection(settings) {
|
|
|
1074
1120
|
getSignatureForPublicKeyPublication,
|
|
1075
1121
|
switchWalletChain,
|
|
1076
1122
|
unlock,
|
|
1077
|
-
ensureConnected,
|
|
1123
|
+
ensureConnected: ensureConnected, // Cast to bypass complex conditional typing
|
|
1124
|
+
isTargetStepReached: storeIsTargetStepReached, // Cast for type guard
|
|
1125
|
+
targetStep,
|
|
1126
|
+
walletOnly,
|
|
1078
1127
|
provider: alwaysOnProviderWrapper.provider,
|
|
1079
1128
|
chainId: '' + settings.chainInfo.id,
|
|
1080
1129
|
chainInfo: settings.chainInfo,
|
|
1081
1130
|
};
|
|
1131
|
+
return store;
|
|
1082
1132
|
}
|
|
1083
1133
|
//# sourceMappingURL=index.js.map
|