@0xsequence/dapp-client 3.0.0-beta.15 → 3.0.0-beta.16
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +11 -0
- package/dist/ChainSessionManager.d.ts +3 -1
- package/dist/ChainSessionManager.d.ts.map +1 -1
- package/dist/ChainSessionManager.js +13 -0
- package/dist/DappClient.d.ts +7 -1
- package/dist/DappClient.d.ts.map +1 -1
- package/dist/DappClient.js +6 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/storage.d.ts +7 -1
- package/dist/utils/storage.d.ts.map +1 -1
- package/dist/utils/storage.js +29 -0
- package/package.json +5 -5
- package/src/ChainSessionManager.ts +19 -0
- package/src/DappClient.ts +11 -0
- package/src/index.ts +2 -0
- package/src/types/index.ts +21 -0
- package/src/utils/storage.ts +34 -0
- package/test/ethauth-proof.test.ts +208 -0
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @0xsequence/dapp-client
|
|
2
2
|
|
|
3
|
+
## 3.0.0-beta.16
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- ethauth support
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @0xsequence/guard@3.0.0-beta.16
|
|
10
|
+
- @0xsequence/relayer@3.0.0-beta.16
|
|
11
|
+
- @0xsequence/wallet-core@3.0.0-beta.16
|
|
12
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.16
|
|
13
|
+
|
|
3
14
|
## 3.0.0-beta.15
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address, Hex } from 'ox';
|
|
2
2
|
import { DappTransport } from './DappTransport.js';
|
|
3
3
|
import { SequenceStorage } from './utils/storage.js';
|
|
4
|
-
import { ExplicitSessionEventListener, LoginMethod, RandomPrivateKeyFn, Transaction, GuardConfig, FeeOption } from './types/index.js';
|
|
4
|
+
import { ExplicitSessionEventListener, LoginMethod, RandomPrivateKeyFn, Transaction, GuardConfig, EthAuthSettings, FeeOption } from './types/index.js';
|
|
5
5
|
import { ExplicitSession, ImplicitSession, ExplicitSessionConfig } from './index.js';
|
|
6
6
|
interface ChainSessionManagerEventMap {
|
|
7
7
|
explicitSessionResponse: ExplicitSessionEventListener;
|
|
@@ -87,6 +87,7 @@ export declare class ChainSessionManager {
|
|
|
87
87
|
preferredLoginMethod?: LoginMethod;
|
|
88
88
|
email?: string;
|
|
89
89
|
includeImplicitSession?: boolean;
|
|
90
|
+
ethAuth?: EthAuthSettings;
|
|
90
91
|
}): Promise<void>;
|
|
91
92
|
/**
|
|
92
93
|
* Initiates the addition of a new explicit session by sending a request to the wallet.
|
|
@@ -207,6 +208,7 @@ export declare class ChainSessionManager {
|
|
|
207
208
|
* @private Resets the internal state and clears all persisted session data from storage.
|
|
208
209
|
*/
|
|
209
210
|
private _resetStateAndClearCredentials;
|
|
211
|
+
private _saveEthAuthProofIfProvided;
|
|
210
212
|
private _getCachedSignedCall;
|
|
211
213
|
private _fingerprintCalls;
|
|
212
214
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChainSessionManager.d.ts","sourceRoot":"","sources":["../src/ChainSessionManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,OAAO,EAAE,GAAG,EAAqC,MAAM,IAAI,CAAA;AAcjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAWlD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD,OAAO,EAEL,4BAA4B,EAC5B,WAAW,EACX,kBAAkB,EAElB,WAAW,EAEX,WAAW,
|
|
1
|
+
{"version":3,"file":"ChainSessionManager.d.ts","sourceRoot":"","sources":["../src/ChainSessionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -185,6 +185,7 @@ export class ChainSessionManager {
|
|
|
185
185
|
origin,
|
|
186
186
|
session: completeSession,
|
|
187
187
|
includeImplicitSession: options.includeImplicitSession ?? false,
|
|
188
|
+
ethAuth: options.ethAuth,
|
|
188
189
|
preferredLoginMethod: options.preferredLoginMethod,
|
|
189
190
|
email: options.preferredLoginMethod === 'email' ? options.email : undefined,
|
|
190
191
|
};
|
|
@@ -229,6 +230,9 @@ export class ChainSessionManager {
|
|
|
229
230
|
this.userEmail = userEmail ?? null;
|
|
230
231
|
this.guard = guard;
|
|
231
232
|
}
|
|
233
|
+
if (payload.ethAuth) {
|
|
234
|
+
await this._saveEthAuthProofIfProvided(connectResponse.ethAuthProof);
|
|
235
|
+
}
|
|
232
236
|
if (this.transport.mode === TransportMode.POPUP) {
|
|
233
237
|
this.transport.closeWallet();
|
|
234
238
|
}
|
|
@@ -391,6 +395,9 @@ export class ChainSessionManager {
|
|
|
391
395
|
this.userEmail = userEmail ?? null;
|
|
392
396
|
this.guard = guard;
|
|
393
397
|
}
|
|
398
|
+
if (savedPayload?.ethAuth) {
|
|
399
|
+
await this._saveEthAuthProofIfProvided(connectResponse.ethAuthProof);
|
|
400
|
+
}
|
|
394
401
|
}
|
|
395
402
|
else if (response.action === RequestActionType.ADD_EXPLICIT_SESSION) {
|
|
396
403
|
if (!this.walletAddress || !Address.isEqual(receivedAddress, this.walletAddress)) {
|
|
@@ -836,6 +843,12 @@ export class ChainSessionManager {
|
|
|
836
843
|
await this.sequenceStorage.clearExplicitSessions();
|
|
837
844
|
await this.sequenceStorage.clearSessionlessConnection();
|
|
838
845
|
}
|
|
846
|
+
async _saveEthAuthProofIfProvided(ethAuthProof) {
|
|
847
|
+
if (!ethAuthProof) {
|
|
848
|
+
return;
|
|
849
|
+
}
|
|
850
|
+
await this.sequenceStorage.saveEthAuthProof(ethAuthProof);
|
|
851
|
+
}
|
|
839
852
|
_getCachedSignedCall(calls) {
|
|
840
853
|
if (!this.lastSignedCallCache) {
|
|
841
854
|
return null;
|
package/dist/DappClient.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address, Hex } from 'ox';
|
|
2
2
|
import { type ExplicitSession, type ExplicitSessionConfig, type ImplicitSession, type Session } from './index.js';
|
|
3
3
|
import { SequenceStorage, type SessionlessConnectionData } from './utils/storage.js';
|
|
4
|
-
import { DappClientExplicitSessionEventListener, DappClientWalletActionEventListener, FeeOption, GetFeeTokensResponse, GuardConfig, LoginMethod, RandomPrivateKeyFn, SequenceSessionStorage, Transaction, TransactionRequest, TransportMode } from './types/index.js';
|
|
4
|
+
import { DappClientExplicitSessionEventListener, DappClientWalletActionEventListener, FeeOption, GetFeeTokensResponse, GuardConfig, LoginMethod, EthAuthSettings, RandomPrivateKeyFn, ETHAuthProof, SequenceSessionStorage, Transaction, TransactionRequest, TransportMode } from './types/index.js';
|
|
5
5
|
import { TypedData } from 'ox/TypedData';
|
|
6
6
|
export type DappClientEventListener = (data?: any) => void;
|
|
7
7
|
interface DappClientEventMap {
|
|
@@ -183,6 +183,10 @@ export declare class DappClient {
|
|
|
183
183
|
* @returns The cached sessionless connection or null if none is available.
|
|
184
184
|
*/
|
|
185
185
|
getSessionlessConnectionInfo(): Promise<SessionlessConnectionData | null>;
|
|
186
|
+
/**
|
|
187
|
+
* Returns the latest persisted ETHAuth proof, if one has been received from the wallet.
|
|
188
|
+
*/
|
|
189
|
+
getEthAuthProof(): Promise<ETHAuthProof | null>;
|
|
186
190
|
/**
|
|
187
191
|
* Restores a sessionless connection that was previously persisted via {@link disconnect} or a connect flow.
|
|
188
192
|
* @returns A promise that resolves to true if a sessionless connection was applied.
|
|
@@ -222,6 +226,7 @@ export declare class DappClient {
|
|
|
222
226
|
preferredLoginMethod?: LoginMethod;
|
|
223
227
|
email?: string;
|
|
224
228
|
includeImplicitSession?: boolean;
|
|
229
|
+
ethAuth?: EthAuthSettings;
|
|
225
230
|
}): Promise<void>;
|
|
226
231
|
/**
|
|
227
232
|
* Upgrades an existing sessionless connection by creating implicit and/or explicit sessions.
|
|
@@ -237,6 +242,7 @@ export declare class DappClient {
|
|
|
237
242
|
preferredLoginMethod?: LoginMethod;
|
|
238
243
|
email?: string;
|
|
239
244
|
includeImplicitSession?: boolean;
|
|
245
|
+
ethAuth?: EthAuthSettings;
|
|
240
246
|
}): Promise<void>;
|
|
241
247
|
/**
|
|
242
248
|
* Adds a new explicit session for a given chain to an existing wallet.
|
package/dist/DappClient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DappClient.d.ts","sourceRoot":"","sources":["../src/DappClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AAEjC,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAA;AAKjH,OAAO,EAAE,eAAe,EAAc,KAAK,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAChG,OAAO,EAEL,sCAAsC,EACtC,mCAAmC,EACnC,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,kBAAkB,
|
|
1
|
+
{"version":3,"file":"DappClient.d.ts","sourceRoot":"","sources":["../src/DappClient.ts"],"names":[],"mappings":"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"}
|
package/dist/DappClient.js
CHANGED
|
@@ -321,6 +321,12 @@ export class DappClient {
|
|
|
321
321
|
guard: this.cachedSessionlessConnection.guard,
|
|
322
322
|
};
|
|
323
323
|
}
|
|
324
|
+
/**
|
|
325
|
+
* Returns the latest persisted ETHAuth proof, if one has been received from the wallet.
|
|
326
|
+
*/
|
|
327
|
+
async getEthAuthProof() {
|
|
328
|
+
return this.sequenceStorage.getEthAuthProof();
|
|
329
|
+
}
|
|
324
330
|
/**
|
|
325
331
|
* Restores a sessionless connection that was previously persisted via {@link disconnect} or a connect flow.
|
|
326
332
|
* @returns A promise that resolves to true if a sessionless connection was applied.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { DappClient } from './DappClient.js';
|
|
2
2
|
export type { DappClientEventListener } from './DappClient.js';
|
|
3
|
-
export type { LoginMethod, GuardConfig, Transaction, SignatureResponse, SequenceSessionStorage, RandomPrivateKeyFn, SignMessagePayload, SessionResponse, AddExplicitSessionPayload, CreateNewSessionPayload, CreateNewSessionResponse, SignTypedDataPayload, ModifyExplicitSessionPayload, DappClientWalletActionEventListener, DappClientExplicitSessionEventListener, TransactionRequest, SendWalletTransactionPayload, SendWalletTransactionResponse, WalletActionResponse, GetFeeTokensResponse, FeeToken, FeeOption, TransportMessage, } from './types/index.js';
|
|
3
|
+
export type { LoginMethod, GuardConfig, Transaction, SignatureResponse, SequenceSessionStorage, RandomPrivateKeyFn, SignMessagePayload, SessionResponse, AddExplicitSessionPayload, CreateNewSessionPayload, CreateNewSessionResponse, SignTypedDataPayload, ModifyExplicitSessionPayload, DappClientWalletActionEventListener, DappClientExplicitSessionEventListener, TransactionRequest, SendWalletTransactionPayload, SendWalletTransactionResponse, WalletActionResponse, GetFeeTokensResponse, FeeToken, FeeOption, TransportMessage, EthAuthSettings, ETHAuthProof, } from './types/index.js';
|
|
4
4
|
export { RequestActionType, TransportMode, MessageType } from './types/index.js';
|
|
5
5
|
export { FeeOptionError, TransactionError, AddExplicitSessionError, ConnectionError, InitializationError, SigningError, ModifyExplicitSessionError, } from './utils/errors.js';
|
|
6
6
|
export { createExplicitSessionConfig, getExplorerUrl, getNetwork, getRelayerUrl, getRpcUrl, jsonReplacers, jsonRevivers, VALUE_FORWARDER_ADDRESS, } from './utils/index.js';
|
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,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9D,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,mCAAmC,EACnC,sCAAsC,EACtC,kBAAkB,EAClB,4BAA4B,EAC5B,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,QAAQ,EACR,SAAS,EACT,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9D,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,mCAAmC,EACnC,sCAAsC,EACtC,kBAAkB,EAClB,4BAA4B,EAC5B,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,YAAY,GACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACZ,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACnG,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,cAAc,GACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,OAAO,EACP,OAAO,GACR,MAAM,+BAA+B,CAAA;AACtC,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAC/G,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -20,10 +20,25 @@ export interface GuardConfig {
|
|
|
20
20
|
url: string;
|
|
21
21
|
moduleAddresses: Map<Address.Address, Address.Address>;
|
|
22
22
|
}
|
|
23
|
+
export interface EthAuthSettings {
|
|
24
|
+
app?: string;
|
|
25
|
+
/** expiry number (in seconds) that is used for ETHAuth proof. Default is 1 week in seconds. */
|
|
26
|
+
expiry?: number;
|
|
27
|
+
/** origin hint of the dapp's host opening the wallet. This value will automatically
|
|
28
|
+
* be determined and verified for integrity, and can be omitted. */
|
|
29
|
+
origin?: string;
|
|
30
|
+
/** authorizeNonce is an optional number to be passed as ETHAuth's nonce claim for replay protection. **/
|
|
31
|
+
nonce?: number;
|
|
32
|
+
}
|
|
33
|
+
export interface ETHAuthProof {
|
|
34
|
+
typedData: Payload.TypedDataToSign;
|
|
35
|
+
ewtString: string;
|
|
36
|
+
}
|
|
23
37
|
export interface CreateNewSessionPayload {
|
|
24
38
|
origin?: string;
|
|
25
39
|
session?: ExplicitSession;
|
|
26
40
|
includeImplicitSession?: boolean;
|
|
41
|
+
ethAuth?: EthAuthSettings;
|
|
27
42
|
preferredLoginMethod?: LoginMethod;
|
|
28
43
|
email?: string;
|
|
29
44
|
}
|
|
@@ -64,6 +79,7 @@ export interface CreateNewSessionResponse {
|
|
|
64
79
|
userEmail?: string;
|
|
65
80
|
loginMethod?: LoginMethod;
|
|
66
81
|
guard?: GuardConfig;
|
|
82
|
+
ethAuthProof?: ETHAuthProof;
|
|
67
83
|
}
|
|
68
84
|
export interface SignatureResponse {
|
|
69
85
|
signature: Hex.Hex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAI7C,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;AACvC,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;AACzC,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAA;AACjE,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAA;AAErD,eAAO,MAAM,iBAAiB;;;;;;;CAOpB,CAAA;AAEV,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAA;AAEvF,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CACvD;AAID,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,oBAAoB,CAAC,EAAE,WAAW,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,eAAe,CAAA;IACxB,oBAAoB,CAAC,EAAE,WAAW,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,4BAA4B;IAC3C,aAAa,EAAE,OAAO,CAAC,OAAO,CAAA;IAC9B,OAAO,EAAE,eAAe,CAAA;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,OAAO,CAAC,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC,WAAW,CAAA;IACrC,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,CAAC,EAAE,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/storage.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Address, Hex } from 'ox';
|
|
2
|
-
import { LoginMethod, SignMessagePayload, SignTypedDataPayload, GuardConfig, SendWalletTransactionPayload, ModifyExplicitSessionPayload, CreateNewSessionPayload, AddExplicitSessionPayload } from '../types/index.js';
|
|
2
|
+
import { LoginMethod, SignMessagePayload, SignTypedDataPayload, GuardConfig, ETHAuthProof, SendWalletTransactionPayload, ModifyExplicitSessionPayload, CreateNewSessionPayload, AddExplicitSessionPayload } from '../types/index.js';
|
|
3
3
|
import { Attestation } from '../index.js';
|
|
4
4
|
export interface ExplicitSessionData {
|
|
5
5
|
pk: Hex.Hex;
|
|
@@ -48,6 +48,9 @@ export interface SequenceStorage {
|
|
|
48
48
|
saveSessionlessConnection(sessionData: SessionlessConnectionData): Promise<void>;
|
|
49
49
|
getSessionlessConnection(): Promise<SessionlessConnectionData | null>;
|
|
50
50
|
clearSessionlessConnection(): Promise<void>;
|
|
51
|
+
saveEthAuthProof(proof: ETHAuthProof): Promise<void>;
|
|
52
|
+
getEthAuthProof(): Promise<ETHAuthProof | null>;
|
|
53
|
+
clearEthAuthProof(): Promise<void>;
|
|
51
54
|
saveSessionlessConnectionSnapshot?(sessionData: SessionlessConnectionData): Promise<void>;
|
|
52
55
|
getSessionlessConnectionSnapshot?(): Promise<SessionlessConnectionData | null>;
|
|
53
56
|
clearSessionlessConnectionSnapshot?(): Promise<void>;
|
|
@@ -73,8 +76,11 @@ export declare class WebStorage implements SequenceStorage {
|
|
|
73
76
|
getImplicitSession(): Promise<ImplicitSessionData | null>;
|
|
74
77
|
clearImplicitSession(): Promise<void>;
|
|
75
78
|
saveSessionlessConnection(sessionData: SessionlessConnectionData): Promise<void>;
|
|
79
|
+
saveEthAuthProof(proof: ETHAuthProof): Promise<void>;
|
|
76
80
|
getSessionlessConnection(): Promise<SessionlessConnectionData | null>;
|
|
81
|
+
getEthAuthProof(): Promise<ETHAuthProof | null>;
|
|
77
82
|
clearSessionlessConnection(): Promise<void>;
|
|
83
|
+
clearEthAuthProof(): Promise<void>;
|
|
78
84
|
saveSessionlessConnectionSnapshot(sessionData: SessionlessConnectionData): Promise<void>;
|
|
79
85
|
getSessionlessConnectionSnapshot(): Promise<SessionlessConnectionData | null>;
|
|
80
86
|
clearSessionlessConnectionSnapshot(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/utils/storage.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/utils/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/storage.js
CHANGED
|
@@ -9,6 +9,7 @@ const STORE_NAME = 'userKeys';
|
|
|
9
9
|
const IMPLICIT_SESSIONS_IDB_KEY = 'SequenceImplicitSession';
|
|
10
10
|
const EXPLICIT_SESSIONS_IDB_KEY = 'SequenceExplicitSession';
|
|
11
11
|
const SESSIONLESS_CONNECTION_IDB_KEY = 'SequenceSessionlessConnection';
|
|
12
|
+
const ETH_AUTH_PROOF_IDB_KEY = 'SequenceEthAuthProof';
|
|
12
13
|
const SESSIONLESS_CONNECTION_SNAPSHOT_IDB_KEY = 'SequenceSessionlessConnectionSnapshot';
|
|
13
14
|
const PENDING_REDIRECT_REQUEST_KEY = 'SequencePendingRedirect';
|
|
14
15
|
const TEMP_SESSION_PK_KEY = 'SequencePendingTempSessionPk';
|
|
@@ -219,6 +220,15 @@ export class WebStorage {
|
|
|
219
220
|
throw error;
|
|
220
221
|
}
|
|
221
222
|
}
|
|
223
|
+
async saveEthAuthProof(proof) {
|
|
224
|
+
try {
|
|
225
|
+
await this.setIDBItem(ETH_AUTH_PROOF_IDB_KEY, proof);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
console.error('Failed to save ETHAuth proof:', error);
|
|
229
|
+
throw error;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
222
232
|
async getSessionlessConnection() {
|
|
223
233
|
try {
|
|
224
234
|
return (await this.getIDBItem(SESSIONLESS_CONNECTION_IDB_KEY)) ?? null;
|
|
@@ -228,6 +238,15 @@ export class WebStorage {
|
|
|
228
238
|
return null;
|
|
229
239
|
}
|
|
230
240
|
}
|
|
241
|
+
async getEthAuthProof() {
|
|
242
|
+
try {
|
|
243
|
+
return (await this.getIDBItem(ETH_AUTH_PROOF_IDB_KEY)) ?? null;
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
console.error('Failed to retrieve ETHAuth proof:', error);
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
231
250
|
async clearSessionlessConnection() {
|
|
232
251
|
try {
|
|
233
252
|
await this.deleteIDBItem(SESSIONLESS_CONNECTION_IDB_KEY);
|
|
@@ -237,6 +256,15 @@ export class WebStorage {
|
|
|
237
256
|
throw error;
|
|
238
257
|
}
|
|
239
258
|
}
|
|
259
|
+
async clearEthAuthProof() {
|
|
260
|
+
try {
|
|
261
|
+
await this.deleteIDBItem(ETH_AUTH_PROOF_IDB_KEY);
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
console.error('Failed to clear ETHAuth proof:', error);
|
|
265
|
+
throw error;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
240
268
|
async saveSessionlessConnectionSnapshot(sessionData) {
|
|
241
269
|
try {
|
|
242
270
|
await this.setIDBItem(SESSIONLESS_CONNECTION_SNAPSHOT_IDB_KEY, sessionData);
|
|
@@ -276,6 +304,7 @@ export class WebStorage {
|
|
|
276
304
|
await this.clearExplicitSessions();
|
|
277
305
|
await this.clearImplicitSession();
|
|
278
306
|
await this.clearSessionlessConnection();
|
|
307
|
+
await this.clearEthAuthProof();
|
|
279
308
|
await this.clearSessionlessConnectionSnapshot();
|
|
280
309
|
}
|
|
281
310
|
catch (error) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0xsequence/dapp-client",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.16",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"ox": "^0.9.17",
|
|
28
|
-
"@0xsequence/guard": "^3.0.0-beta.
|
|
29
|
-
"@0xsequence/
|
|
30
|
-
"@0xsequence/wallet-core": "^3.0.0-beta.
|
|
31
|
-
"@0xsequence/
|
|
28
|
+
"@0xsequence/guard": "^3.0.0-beta.16",
|
|
29
|
+
"@0xsequence/wallet-primitives": "^3.0.0-beta.16",
|
|
30
|
+
"@0xsequence/wallet-core": "^3.0.0-beta.16",
|
|
31
|
+
"@0xsequence/relayer": "^3.0.0-beta.16"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "tsc",
|
|
@@ -37,12 +37,14 @@ import {
|
|
|
37
37
|
TransportMode,
|
|
38
38
|
GuardConfig,
|
|
39
39
|
CreateNewSessionPayload,
|
|
40
|
+
EthAuthSettings,
|
|
40
41
|
ModifyExplicitSessionPayload,
|
|
41
42
|
SessionResponse,
|
|
42
43
|
AddExplicitSessionPayload,
|
|
43
44
|
FeeOption,
|
|
44
45
|
OperationFailedStatus,
|
|
45
46
|
OperationStatus,
|
|
47
|
+
ETHAuthProof,
|
|
46
48
|
} from './types/index.js'
|
|
47
49
|
import { CACHE_DB_NAME, VALUE_FORWARDER_ADDRESS } from './utils/constants.js'
|
|
48
50
|
import { ExplicitSession, ImplicitSession, ExplicitSessionConfig } from './index.js'
|
|
@@ -285,6 +287,7 @@ export class ChainSessionManager {
|
|
|
285
287
|
preferredLoginMethod?: LoginMethod
|
|
286
288
|
email?: string
|
|
287
289
|
includeImplicitSession?: boolean
|
|
290
|
+
ethAuth?: EthAuthSettings
|
|
288
291
|
} = {},
|
|
289
292
|
): Promise<void> {
|
|
290
293
|
if (this.isInitialized) {
|
|
@@ -311,6 +314,7 @@ export class ChainSessionManager {
|
|
|
311
314
|
origin,
|
|
312
315
|
session: completeSession as ExplicitSession | undefined,
|
|
313
316
|
includeImplicitSession: options.includeImplicitSession ?? false,
|
|
317
|
+
ethAuth: options.ethAuth,
|
|
314
318
|
preferredLoginMethod: options.preferredLoginMethod,
|
|
315
319
|
email: options.preferredLoginMethod === 'email' ? options.email : undefined,
|
|
316
320
|
}
|
|
@@ -377,6 +381,10 @@ export class ChainSessionManager {
|
|
|
377
381
|
this.guard = guard
|
|
378
382
|
}
|
|
379
383
|
|
|
384
|
+
if (payload.ethAuth) {
|
|
385
|
+
await this._saveEthAuthProofIfProvided(connectResponse.ethAuthProof)
|
|
386
|
+
}
|
|
387
|
+
|
|
380
388
|
if (this.transport.mode === TransportMode.POPUP) {
|
|
381
389
|
this.transport.closeWallet()
|
|
382
390
|
}
|
|
@@ -596,6 +604,10 @@ export class ChainSessionManager {
|
|
|
596
604
|
this.userEmail = userEmail ?? null
|
|
597
605
|
this.guard = guard
|
|
598
606
|
}
|
|
607
|
+
|
|
608
|
+
if (savedPayload?.ethAuth) {
|
|
609
|
+
await this._saveEthAuthProofIfProvided(connectResponse.ethAuthProof)
|
|
610
|
+
}
|
|
599
611
|
} else if (response.action === RequestActionType.ADD_EXPLICIT_SESSION) {
|
|
600
612
|
if (!this.walletAddress || !Address.isEqual(receivedAddress, this.walletAddress)) {
|
|
601
613
|
throw new InitializationError('Received an explicit session for a wallet that is not active.')
|
|
@@ -1104,6 +1116,13 @@ export class ChainSessionManager {
|
|
|
1104
1116
|
await this.sequenceStorage.clearSessionlessConnection()
|
|
1105
1117
|
}
|
|
1106
1118
|
|
|
1119
|
+
private async _saveEthAuthProofIfProvided(ethAuthProof?: ETHAuthProof): Promise<void> {
|
|
1120
|
+
if (!ethAuthProof) {
|
|
1121
|
+
return
|
|
1122
|
+
}
|
|
1123
|
+
await this.sequenceStorage.saveEthAuthProof(ethAuthProof)
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1107
1126
|
private _getCachedSignedCall(calls: Payload.Call[]): { to: Address.Address; data: Hex.Hex } | null {
|
|
1108
1127
|
if (!this.lastSignedCallCache) {
|
|
1109
1128
|
return null
|
package/src/DappClient.ts
CHANGED
|
@@ -14,8 +14,10 @@ import {
|
|
|
14
14
|
GetFeeTokensResponse,
|
|
15
15
|
GuardConfig,
|
|
16
16
|
LoginMethod,
|
|
17
|
+
EthAuthSettings,
|
|
17
18
|
RandomPrivateKeyFn,
|
|
18
19
|
RequestActionType,
|
|
20
|
+
ETHAuthProof,
|
|
19
21
|
SendWalletTransactionPayload,
|
|
20
22
|
SequenceSessionStorage,
|
|
21
23
|
SignMessagePayload,
|
|
@@ -407,6 +409,13 @@ export class DappClient {
|
|
|
407
409
|
}
|
|
408
410
|
}
|
|
409
411
|
|
|
412
|
+
/**
|
|
413
|
+
* Returns the latest persisted ETHAuth proof, if one has been received from the wallet.
|
|
414
|
+
*/
|
|
415
|
+
public async getEthAuthProof(): Promise<ETHAuthProof | null> {
|
|
416
|
+
return this.sequenceStorage.getEthAuthProof()
|
|
417
|
+
}
|
|
418
|
+
|
|
410
419
|
/**
|
|
411
420
|
* Restores a sessionless connection that was previously persisted via {@link disconnect} or a connect flow.
|
|
412
421
|
* @returns A promise that resolves to true if a sessionless connection was applied.
|
|
@@ -559,6 +568,7 @@ export class DappClient {
|
|
|
559
568
|
preferredLoginMethod?: LoginMethod
|
|
560
569
|
email?: string
|
|
561
570
|
includeImplicitSession?: boolean
|
|
571
|
+
ethAuth?: EthAuthSettings
|
|
562
572
|
} = {},
|
|
563
573
|
): Promise<void> {
|
|
564
574
|
if (this.isInitialized) {
|
|
@@ -614,6 +624,7 @@ export class DappClient {
|
|
|
614
624
|
preferredLoginMethod?: LoginMethod
|
|
615
625
|
email?: string
|
|
616
626
|
includeImplicitSession?: boolean
|
|
627
|
+
ethAuth?: EthAuthSettings
|
|
617
628
|
} = {},
|
|
618
629
|
): Promise<void> {
|
|
619
630
|
if (!this.isInitialized || !this.hasSessionlessConnection || !this.walletAddress) {
|
package/src/index.ts
CHANGED
package/src/types/index.ts
CHANGED
|
@@ -28,12 +28,32 @@ export interface GuardConfig {
|
|
|
28
28
|
moduleAddresses: Map<Address.Address, Address.Address>
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
export interface EthAuthSettings {
|
|
32
|
+
app?: string
|
|
33
|
+
/** expiry number (in seconds) that is used for ETHAuth proof. Default is 1 week in seconds. */
|
|
34
|
+
expiry?: number
|
|
35
|
+
/** origin hint of the dapp's host opening the wallet. This value will automatically
|
|
36
|
+
* be determined and verified for integrity, and can be omitted. */
|
|
37
|
+
origin?: string
|
|
38
|
+
/** authorizeNonce is an optional number to be passed as ETHAuth's nonce claim for replay protection. **/
|
|
39
|
+
nonce?: number
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface ETHAuthProof {
|
|
43
|
+
// eip712 typed-data payload for ETHAuth domain as input
|
|
44
|
+
typedData: Payload.TypedDataToSign
|
|
45
|
+
|
|
46
|
+
// signature encoded in an ETHAuth proof string
|
|
47
|
+
ewtString: string
|
|
48
|
+
}
|
|
49
|
+
|
|
31
50
|
// --- Payloads for Transport ---
|
|
32
51
|
|
|
33
52
|
export interface CreateNewSessionPayload {
|
|
34
53
|
origin?: string
|
|
35
54
|
session?: ExplicitSession
|
|
36
55
|
includeImplicitSession?: boolean
|
|
56
|
+
ethAuth?: EthAuthSettings
|
|
37
57
|
preferredLoginMethod?: LoginMethod
|
|
38
58
|
email?: string
|
|
39
59
|
}
|
|
@@ -81,6 +101,7 @@ export interface CreateNewSessionResponse {
|
|
|
81
101
|
userEmail?: string
|
|
82
102
|
loginMethod?: LoginMethod
|
|
83
103
|
guard?: GuardConfig
|
|
104
|
+
ethAuthProof?: ETHAuthProof
|
|
84
105
|
}
|
|
85
106
|
|
|
86
107
|
export interface SignatureResponse {
|
package/src/utils/storage.ts
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
SignMessagePayload,
|
|
6
6
|
SignTypedDataPayload,
|
|
7
7
|
GuardConfig,
|
|
8
|
+
ETHAuthProof,
|
|
8
9
|
SendWalletTransactionPayload,
|
|
9
10
|
ModifyExplicitSessionPayload,
|
|
10
11
|
CreateNewSessionPayload,
|
|
@@ -81,6 +82,10 @@ export interface SequenceStorage {
|
|
|
81
82
|
getSessionlessConnection(): Promise<SessionlessConnectionData | null>
|
|
82
83
|
clearSessionlessConnection(): Promise<void>
|
|
83
84
|
|
|
85
|
+
saveEthAuthProof(proof: ETHAuthProof): Promise<void>
|
|
86
|
+
getEthAuthProof(): Promise<ETHAuthProof | null>
|
|
87
|
+
clearEthAuthProof(): Promise<void>
|
|
88
|
+
|
|
84
89
|
saveSessionlessConnectionSnapshot?(sessionData: SessionlessConnectionData): Promise<void>
|
|
85
90
|
getSessionlessConnectionSnapshot?(): Promise<SessionlessConnectionData | null>
|
|
86
91
|
clearSessionlessConnectionSnapshot?(): Promise<void>
|
|
@@ -94,6 +99,7 @@ const STORE_NAME = 'userKeys'
|
|
|
94
99
|
const IMPLICIT_SESSIONS_IDB_KEY = 'SequenceImplicitSession'
|
|
95
100
|
const EXPLICIT_SESSIONS_IDB_KEY = 'SequenceExplicitSession'
|
|
96
101
|
const SESSIONLESS_CONNECTION_IDB_KEY = 'SequenceSessionlessConnection'
|
|
102
|
+
const ETH_AUTH_PROOF_IDB_KEY = 'SequenceEthAuthProof'
|
|
97
103
|
const SESSIONLESS_CONNECTION_SNAPSHOT_IDB_KEY = 'SequenceSessionlessConnectionSnapshot'
|
|
98
104
|
|
|
99
105
|
const PENDING_REDIRECT_REQUEST_KEY = 'SequencePendingRedirect'
|
|
@@ -305,6 +311,15 @@ export class WebStorage implements SequenceStorage {
|
|
|
305
311
|
}
|
|
306
312
|
}
|
|
307
313
|
|
|
314
|
+
async saveEthAuthProof(proof: ETHAuthProof): Promise<void> {
|
|
315
|
+
try {
|
|
316
|
+
await this.setIDBItem(ETH_AUTH_PROOF_IDB_KEY, proof)
|
|
317
|
+
} catch (error) {
|
|
318
|
+
console.error('Failed to save ETHAuth proof:', error)
|
|
319
|
+
throw error
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
308
323
|
async getSessionlessConnection(): Promise<SessionlessConnectionData | null> {
|
|
309
324
|
try {
|
|
310
325
|
return (await this.getIDBItem<SessionlessConnectionData>(SESSIONLESS_CONNECTION_IDB_KEY)) ?? null
|
|
@@ -314,6 +329,15 @@ export class WebStorage implements SequenceStorage {
|
|
|
314
329
|
}
|
|
315
330
|
}
|
|
316
331
|
|
|
332
|
+
async getEthAuthProof(): Promise<ETHAuthProof | null> {
|
|
333
|
+
try {
|
|
334
|
+
return (await this.getIDBItem<ETHAuthProof>(ETH_AUTH_PROOF_IDB_KEY)) ?? null
|
|
335
|
+
} catch (error) {
|
|
336
|
+
console.error('Failed to retrieve ETHAuth proof:', error)
|
|
337
|
+
return null
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
317
341
|
async clearSessionlessConnection(): Promise<void> {
|
|
318
342
|
try {
|
|
319
343
|
await this.deleteIDBItem(SESSIONLESS_CONNECTION_IDB_KEY)
|
|
@@ -323,6 +347,15 @@ export class WebStorage implements SequenceStorage {
|
|
|
323
347
|
}
|
|
324
348
|
}
|
|
325
349
|
|
|
350
|
+
async clearEthAuthProof(): Promise<void> {
|
|
351
|
+
try {
|
|
352
|
+
await this.deleteIDBItem(ETH_AUTH_PROOF_IDB_KEY)
|
|
353
|
+
} catch (error) {
|
|
354
|
+
console.error('Failed to clear ETHAuth proof:', error)
|
|
355
|
+
throw error
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
326
359
|
async saveSessionlessConnectionSnapshot(sessionData: SessionlessConnectionData): Promise<void> {
|
|
327
360
|
try {
|
|
328
361
|
await this.setIDBItem(SESSIONLESS_CONNECTION_SNAPSHOT_IDB_KEY, sessionData)
|
|
@@ -363,6 +396,7 @@ export class WebStorage implements SequenceStorage {
|
|
|
363
396
|
await this.clearExplicitSessions()
|
|
364
397
|
await this.clearImplicitSession()
|
|
365
398
|
await this.clearSessionlessConnection()
|
|
399
|
+
await this.clearEthAuthProof()
|
|
366
400
|
await this.clearSessionlessConnectionSnapshot()
|
|
367
401
|
} catch (error) {
|
|
368
402
|
console.error('Failed to clear all data:', error)
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import { DappClient } from '../src/DappClient.js'
|
|
4
|
+
import { DappTransport } from '../src/DappTransport.js'
|
|
5
|
+
import { RequestActionType, TransportMode } from '../src/types/index.js'
|
|
6
|
+
import { WebStorage } from '../src/utils/storage.js'
|
|
7
|
+
|
|
8
|
+
describe('ETHAuth proof persistence', () => {
|
|
9
|
+
afterEach(() => {
|
|
10
|
+
vi.restoreAllMocks()
|
|
11
|
+
vi.unstubAllGlobals()
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const createSequenceStorageMock = () =>
|
|
15
|
+
({
|
|
16
|
+
setPendingRedirectRequest: vi.fn().mockResolvedValue(undefined),
|
|
17
|
+
isRedirectRequestPending: vi.fn().mockResolvedValue(false),
|
|
18
|
+
saveTempSessionPk: vi.fn().mockResolvedValue(undefined),
|
|
19
|
+
getAndClearTempSessionPk: vi.fn().mockResolvedValue(null),
|
|
20
|
+
savePendingRequest: vi.fn().mockResolvedValue(undefined),
|
|
21
|
+
getAndClearPendingRequest: vi.fn().mockResolvedValue(null),
|
|
22
|
+
peekPendingRequest: vi.fn().mockResolvedValue(null),
|
|
23
|
+
saveExplicitSession: vi.fn().mockResolvedValue(undefined),
|
|
24
|
+
getExplicitSessions: vi.fn().mockResolvedValue([]),
|
|
25
|
+
clearExplicitSessions: vi.fn().mockResolvedValue(undefined),
|
|
26
|
+
saveImplicitSession: vi.fn().mockResolvedValue(undefined),
|
|
27
|
+
getImplicitSession: vi.fn().mockResolvedValue(null),
|
|
28
|
+
clearImplicitSession: vi.fn().mockResolvedValue(undefined),
|
|
29
|
+
saveSessionlessConnection: vi.fn().mockResolvedValue(undefined),
|
|
30
|
+
getSessionlessConnection: vi.fn().mockResolvedValue(null),
|
|
31
|
+
clearSessionlessConnection: vi.fn().mockResolvedValue(undefined),
|
|
32
|
+
saveEthAuthProof: vi.fn().mockResolvedValue(undefined),
|
|
33
|
+
getEthAuthProof: vi.fn().mockResolvedValue(null),
|
|
34
|
+
clearEthAuthProof: vi.fn().mockResolvedValue(undefined),
|
|
35
|
+
clearAllData: vi.fn().mockResolvedValue(undefined),
|
|
36
|
+
}) as any
|
|
37
|
+
|
|
38
|
+
it('persists ETHAuth proof when connect requests ethAuth in redirect mode', async () => {
|
|
39
|
+
const fetchMock = vi.fn()
|
|
40
|
+
vi.stubGlobal('fetch', fetchMock)
|
|
41
|
+
vi.stubGlobal('window', { fetch: fetchMock } as any)
|
|
42
|
+
|
|
43
|
+
const ethAuthProof = {
|
|
44
|
+
typedData: {
|
|
45
|
+
domain: {},
|
|
46
|
+
types: {},
|
|
47
|
+
message: {},
|
|
48
|
+
},
|
|
49
|
+
ewtString: 'proof-string',
|
|
50
|
+
} as any
|
|
51
|
+
|
|
52
|
+
const sequenceStorage = createSequenceStorageMock()
|
|
53
|
+
const sendRequestMock = vi.spyOn(DappTransport.prototype, 'sendRequest').mockResolvedValue({
|
|
54
|
+
walletAddress: '0x1111111111111111111111111111111111111111',
|
|
55
|
+
ethAuthProof,
|
|
56
|
+
} as any)
|
|
57
|
+
|
|
58
|
+
const client = new DappClient('https://wallet.example', 'https://dapp.example', 'test-project-access-key', {
|
|
59
|
+
sequenceStorage,
|
|
60
|
+
transportMode: TransportMode.REDIRECT,
|
|
61
|
+
canUseIndexedDb: false,
|
|
62
|
+
redirectActionHandler: vi.fn(),
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
await client.connect(1, undefined, {
|
|
66
|
+
ethAuth: {
|
|
67
|
+
app: 'app-name',
|
|
68
|
+
},
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
expect(sendRequestMock).toHaveBeenCalledWith(
|
|
72
|
+
RequestActionType.CREATE_NEW_SESSION,
|
|
73
|
+
'https://dapp.example',
|
|
74
|
+
expect.objectContaining({
|
|
75
|
+
ethAuth: {
|
|
76
|
+
app: 'app-name',
|
|
77
|
+
},
|
|
78
|
+
}),
|
|
79
|
+
expect.any(Object),
|
|
80
|
+
)
|
|
81
|
+
expect(sequenceStorage.saveEthAuthProof).toHaveBeenCalledWith(ethAuthProof)
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
it('persists ETHAuth proof when connect requests ethAuth in popup mode', async () => {
|
|
85
|
+
const fetchMock = vi.fn()
|
|
86
|
+
vi.stubGlobal('fetch', fetchMock)
|
|
87
|
+
vi.stubGlobal('window', { fetch: fetchMock } as any)
|
|
88
|
+
vi.stubGlobal('document', {} as any)
|
|
89
|
+
|
|
90
|
+
const ethAuthProof = {
|
|
91
|
+
typedData: {
|
|
92
|
+
domain: {},
|
|
93
|
+
types: {},
|
|
94
|
+
message: {},
|
|
95
|
+
},
|
|
96
|
+
ewtString: 'proof-string',
|
|
97
|
+
} as any
|
|
98
|
+
|
|
99
|
+
const sequenceStorage = createSequenceStorageMock()
|
|
100
|
+
const sendRequestMock = vi.spyOn(DappTransport.prototype, 'sendRequest').mockResolvedValue({
|
|
101
|
+
walletAddress: '0x1111111111111111111111111111111111111111',
|
|
102
|
+
ethAuthProof,
|
|
103
|
+
} as any)
|
|
104
|
+
|
|
105
|
+
const client = new DappClient('https://wallet.example', 'https://dapp.example', 'test-project-access-key', {
|
|
106
|
+
sequenceStorage,
|
|
107
|
+
transportMode: TransportMode.POPUP,
|
|
108
|
+
canUseIndexedDb: false,
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
await client.connect(1, undefined, {
|
|
112
|
+
ethAuth: {
|
|
113
|
+
app: 'app-name',
|
|
114
|
+
},
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
expect(sendRequestMock).toHaveBeenCalledWith(
|
|
118
|
+
RequestActionType.CREATE_NEW_SESSION,
|
|
119
|
+
'https://dapp.example',
|
|
120
|
+
expect.objectContaining({
|
|
121
|
+
ethAuth: {
|
|
122
|
+
app: 'app-name',
|
|
123
|
+
},
|
|
124
|
+
}),
|
|
125
|
+
expect.any(Object),
|
|
126
|
+
)
|
|
127
|
+
expect(sequenceStorage.saveEthAuthProof).toHaveBeenCalledWith(ethAuthProof)
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
it('does not persist ETHAuth proof when connect does not request ethAuth', async () => {
|
|
131
|
+
const fetchMock = vi.fn()
|
|
132
|
+
vi.stubGlobal('fetch', fetchMock)
|
|
133
|
+
vi.stubGlobal('window', { fetch: fetchMock } as any)
|
|
134
|
+
|
|
135
|
+
const ethAuthProof = {
|
|
136
|
+
typedData: {
|
|
137
|
+
domain: {},
|
|
138
|
+
types: {},
|
|
139
|
+
message: {},
|
|
140
|
+
},
|
|
141
|
+
ewtString: 'proof-string',
|
|
142
|
+
} as any
|
|
143
|
+
|
|
144
|
+
const sequenceStorage = createSequenceStorageMock()
|
|
145
|
+
const sendRequestMock = vi.spyOn(DappTransport.prototype, 'sendRequest').mockResolvedValue({
|
|
146
|
+
walletAddress: '0x1111111111111111111111111111111111111111',
|
|
147
|
+
ethAuthProof,
|
|
148
|
+
} as any)
|
|
149
|
+
|
|
150
|
+
const client = new DappClient('https://wallet.example', 'https://dapp.example', 'test-project-access-key', {
|
|
151
|
+
sequenceStorage,
|
|
152
|
+
transportMode: TransportMode.REDIRECT,
|
|
153
|
+
canUseIndexedDb: false,
|
|
154
|
+
redirectActionHandler: vi.fn(),
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
await client.connect(1)
|
|
158
|
+
|
|
159
|
+
expect(sendRequestMock).toHaveBeenCalledWith(
|
|
160
|
+
RequestActionType.CREATE_NEW_SESSION,
|
|
161
|
+
'https://dapp.example',
|
|
162
|
+
expect.not.objectContaining({
|
|
163
|
+
ethAuth: expect.anything(),
|
|
164
|
+
}),
|
|
165
|
+
expect.any(Object),
|
|
166
|
+
)
|
|
167
|
+
expect(sequenceStorage.saveEthAuthProof).not.toHaveBeenCalled()
|
|
168
|
+
})
|
|
169
|
+
|
|
170
|
+
it('clears ETHAuth proof on disconnect', async () => {
|
|
171
|
+
const fetchMock = vi.fn()
|
|
172
|
+
vi.stubGlobal('fetch', fetchMock)
|
|
173
|
+
vi.stubGlobal('window', { fetch: fetchMock } as any)
|
|
174
|
+
|
|
175
|
+
const ethAuthProof = {
|
|
176
|
+
typedData: {
|
|
177
|
+
domain: {},
|
|
178
|
+
types: {},
|
|
179
|
+
message: {},
|
|
180
|
+
},
|
|
181
|
+
ewtString: 'proof-string',
|
|
182
|
+
} as any
|
|
183
|
+
|
|
184
|
+
vi.spyOn(DappTransport.prototype, 'sendRequest').mockResolvedValue({
|
|
185
|
+
walletAddress: '0x1111111111111111111111111111111111111111',
|
|
186
|
+
ethAuthProof,
|
|
187
|
+
} as any)
|
|
188
|
+
|
|
189
|
+
const client = new DappClient('https://wallet.example', 'https://dapp.example', 'test-project-access-key', {
|
|
190
|
+
sequenceStorage: new WebStorage(),
|
|
191
|
+
transportMode: TransportMode.REDIRECT,
|
|
192
|
+
canUseIndexedDb: false,
|
|
193
|
+
redirectActionHandler: vi.fn(),
|
|
194
|
+
})
|
|
195
|
+
|
|
196
|
+
await client.connect(1, undefined, {
|
|
197
|
+
ethAuth: {
|
|
198
|
+
app: 'app-name',
|
|
199
|
+
},
|
|
200
|
+
})
|
|
201
|
+
|
|
202
|
+
expect(await client.getEthAuthProof()).toEqual(ethAuthProof)
|
|
203
|
+
|
|
204
|
+
await client.disconnect()
|
|
205
|
+
|
|
206
|
+
expect(await client.getEthAuthProof()).toBeNull()
|
|
207
|
+
})
|
|
208
|
+
})
|