@etherplay/connect 0.0.35 → 0.0.37
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 +121 -68
- package/dist/index.js.map +1 -1
- package/package.json +31 -4
- package/src/index.ts +349 -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 });
|
|
@@ -471,6 +478,9 @@ export function createConnection(settings) {
|
|
|
471
478
|
}
|
|
472
479
|
let remember = false;
|
|
473
480
|
async function connect(mechanism, options) {
|
|
481
|
+
if (!mechanism && (targetStep === 'WalletConnected' || walletOnly)) {
|
|
482
|
+
mechanism = { type: 'wallet' };
|
|
483
|
+
}
|
|
474
484
|
remember = !(options?.doNotStoreLocally || false);
|
|
475
485
|
if (mechanism) {
|
|
476
486
|
if (mechanism.type === 'wallet') {
|
|
@@ -688,6 +698,10 @@ export function createConnection(settings) {
|
|
|
688
698
|
}
|
|
689
699
|
}
|
|
690
700
|
else {
|
|
701
|
+
// Popup-based auth requires walletHost
|
|
702
|
+
if (!settings.walletHost) {
|
|
703
|
+
throw new Error('walletHost is required for popup-based authentication (email, oauth, mnemonic)');
|
|
704
|
+
}
|
|
691
705
|
popup = connectViaPopup({
|
|
692
706
|
mechanism,
|
|
693
707
|
walletHost: settings.walletHost,
|
|
@@ -740,18 +754,37 @@ export function createConnection(settings) {
|
|
|
740
754
|
});
|
|
741
755
|
}
|
|
742
756
|
}
|
|
743
|
-
async function ensureConnected(
|
|
744
|
-
|
|
745
|
-
let
|
|
757
|
+
async function ensureConnected(stepOrMechanismOrOptions, mechanismOrOptions, options) {
|
|
758
|
+
// Determine if first arg is a step string, mechanism, or options
|
|
759
|
+
let step;
|
|
760
|
+
let mechanism;
|
|
761
|
+
let opts;
|
|
762
|
+
if (typeof stepOrMechanismOrOptions === 'string') {
|
|
763
|
+
// First arg is a step
|
|
764
|
+
step = stepOrMechanismOrOptions;
|
|
765
|
+
mechanism = mechanismOrOptions;
|
|
766
|
+
opts = options;
|
|
767
|
+
}
|
|
768
|
+
else if (stepOrMechanismOrOptions && 'type' in stepOrMechanismOrOptions) {
|
|
769
|
+
// First arg is a mechanism
|
|
770
|
+
step = targetStep; // Use configured target as default
|
|
771
|
+
mechanism = stepOrMechanismOrOptions;
|
|
772
|
+
opts = mechanismOrOptions;
|
|
773
|
+
}
|
|
774
|
+
else {
|
|
775
|
+
// First arg is options or undefined
|
|
776
|
+
step = targetStep; // Use configured target as default
|
|
777
|
+
mechanism = undefined;
|
|
778
|
+
opts = stepOrMechanismOrOptions;
|
|
779
|
+
}
|
|
780
|
+
// For WalletConnected step, default to wallet mechanism
|
|
746
781
|
if (!mechanism && step === 'WalletConnected') {
|
|
747
782
|
mechanism = { type: 'wallet' };
|
|
748
783
|
}
|
|
749
|
-
options = typeof stepOrMechanism === 'string' ? options : mechanismOrOptions;
|
|
750
784
|
const promise = new Promise((resolve, reject) => {
|
|
751
785
|
let forceConnect = false;
|
|
752
786
|
if ($connection.step == 'WalletConnected' &&
|
|
753
787
|
($connection.wallet.status == 'locked' || $connection.wallet.status === 'disconnected')) {
|
|
754
|
-
// console.log(`locked / disconnected : we assume it needs reconnection`);
|
|
755
788
|
forceConnect = true;
|
|
756
789
|
mechanism = $connection.mechanism; // we reuse existing mechanism as we just want to reconnect
|
|
757
790
|
}
|
|
@@ -761,7 +794,7 @@ export function createConnection(settings) {
|
|
|
761
794
|
}
|
|
762
795
|
let idlePassed = $connection.step != 'Idle';
|
|
763
796
|
if (!idlePassed || forceConnect) {
|
|
764
|
-
connect(mechanism,
|
|
797
|
+
connect(mechanism, opts);
|
|
765
798
|
}
|
|
766
799
|
const unsubscribe = _store.subscribe((connection) => {
|
|
767
800
|
if (connection.step === 'Idle' && idlePassed) {
|
|
@@ -1063,7 +1096,23 @@ export function createConnection(settings) {
|
|
|
1063
1096
|
}
|
|
1064
1097
|
}
|
|
1065
1098
|
}
|
|
1066
|
-
|
|
1099
|
+
// Determine walletOnly (defaults to false, but true implies WalletConnected target behavior for mechanism)
|
|
1100
|
+
const walletOnly = settings.walletOnly || targetStep === 'WalletConnected';
|
|
1101
|
+
// Method on the store to check if target step is reached
|
|
1102
|
+
function storeIsTargetStepReached(connection) {
|
|
1103
|
+
if (targetStep === 'WalletConnected') {
|
|
1104
|
+
// For WalletConnected target, accept WalletConnected OR SignedIn-with-wallet
|
|
1105
|
+
return (connection.step === 'WalletConnected' || (connection.step === 'SignedIn' && connection.wallet !== undefined));
|
|
1106
|
+
}
|
|
1107
|
+
// For SignedIn target
|
|
1108
|
+
if (walletOnly) {
|
|
1109
|
+
// With walletOnly, only accept SignedIn-with-wallet
|
|
1110
|
+
return connection.step === 'SignedIn' && connection.wallet !== undefined;
|
|
1111
|
+
}
|
|
1112
|
+
// Accept any SignedIn variant
|
|
1113
|
+
return connection.step === 'SignedIn';
|
|
1114
|
+
}
|
|
1115
|
+
const store = {
|
|
1067
1116
|
subscribe: _store.subscribe,
|
|
1068
1117
|
connect,
|
|
1069
1118
|
cancel,
|
|
@@ -1074,10 +1123,14 @@ export function createConnection(settings) {
|
|
|
1074
1123
|
getSignatureForPublicKeyPublication,
|
|
1075
1124
|
switchWalletChain,
|
|
1076
1125
|
unlock,
|
|
1077
|
-
ensureConnected,
|
|
1126
|
+
ensureConnected: ensureConnected, // Cast to bypass complex conditional typing
|
|
1127
|
+
isTargetStepReached: storeIsTargetStepReached, // Cast for type guard
|
|
1128
|
+
targetStep,
|
|
1129
|
+
walletOnly,
|
|
1078
1130
|
provider: alwaysOnProviderWrapper.provider,
|
|
1079
1131
|
chainId: '' + settings.chainInfo.id,
|
|
1080
1132
|
chainInfo: settings.chainInfo,
|
|
1081
1133
|
};
|
|
1134
|
+
return store;
|
|
1082
1135
|
}
|
|
1083
1136
|
//# sourceMappingURL=index.js.map
|