@0xsequence/dapp-client 3.0.0-beta.1 → 3.0.0-beta.11
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 +2 -2
- package/CHANGELOG.md +110 -0
- package/dist/ChainSessionManager.d.ts +3 -0
- package/dist/ChainSessionManager.d.ts.map +1 -1
- package/dist/ChainSessionManager.js +48 -4
- package/dist/DappTransport.d.ts.map +1 -1
- package/dist/DappTransport.js +1 -2
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/index.d.ts +20 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +23 -1
- package/package.json +14 -14
- package/src/ChainSessionManager.ts +55 -4
- package/src/DappTransport.ts +1 -4
- package/src/index.ts +22 -3
- package/src/types/index.ts +1 -1
- package/src/utils/index.ts +48 -2
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,115 @@
|
|
|
1
1
|
# @0xsequence/dapp-client
|
|
2
2
|
|
|
3
|
+
## 3.0.0-beta.11
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3.0.0 beta
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @0xsequence/guard@3.0.0-beta.11
|
|
10
|
+
- @0xsequence/relayer@3.0.0-beta.11
|
|
11
|
+
- @0xsequence/wallet-core@3.0.0-beta.11
|
|
12
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.11
|
|
13
|
+
|
|
14
|
+
## 3.0.0-beta.10
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- dapp-client updates
|
|
19
|
+
- Updated dependencies
|
|
20
|
+
- @0xsequence/guard@3.0.0-beta.10
|
|
21
|
+
- @0xsequence/relayer@3.0.0-beta.10
|
|
22
|
+
- @0xsequence/wallet-core@3.0.0-beta.10
|
|
23
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.10
|
|
24
|
+
|
|
25
|
+
## 3.0.0-beta.9
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- dapp client updates for EOA login
|
|
30
|
+
- Updated dependencies
|
|
31
|
+
- @0xsequence/guard@3.0.0-beta.9
|
|
32
|
+
- @0xsequence/relayer@3.0.0-beta.9
|
|
33
|
+
- @0xsequence/wallet-core@3.0.0-beta.9
|
|
34
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.9
|
|
35
|
+
|
|
36
|
+
## 3.0.0-beta.8
|
|
37
|
+
|
|
38
|
+
### Patch Changes
|
|
39
|
+
|
|
40
|
+
- Apple auth fixes
|
|
41
|
+
- Updated dependencies
|
|
42
|
+
- @0xsequence/guard@3.0.0-beta.8
|
|
43
|
+
- @0xsequence/relayer@3.0.0-beta.8
|
|
44
|
+
- @0xsequence/wallet-core@3.0.0-beta.8
|
|
45
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.8
|
|
46
|
+
|
|
47
|
+
## 3.0.0-beta.7
|
|
48
|
+
|
|
49
|
+
### Patch Changes
|
|
50
|
+
|
|
51
|
+
- Apple auth fix
|
|
52
|
+
- Updated dependencies
|
|
53
|
+
- @0xsequence/guard@3.0.0-beta.7
|
|
54
|
+
- @0xsequence/relayer@3.0.0-beta.7
|
|
55
|
+
- @0xsequence/wallet-core@3.0.0-beta.7
|
|
56
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.7
|
|
57
|
+
|
|
58
|
+
## 3.0.0-beta.6
|
|
59
|
+
|
|
60
|
+
### Patch Changes
|
|
61
|
+
|
|
62
|
+
- Fix signer 404 error, minor fixes
|
|
63
|
+
- Updated dependencies
|
|
64
|
+
- @0xsequence/guard@3.0.0-beta.6
|
|
65
|
+
- @0xsequence/relayer@3.0.0-beta.6
|
|
66
|
+
- @0xsequence/wallet-core@3.0.0-beta.6
|
|
67
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.6
|
|
68
|
+
|
|
69
|
+
## 3.0.0-beta.5
|
|
70
|
+
|
|
71
|
+
### Patch Changes
|
|
72
|
+
|
|
73
|
+
- Beta release for v3
|
|
74
|
+
- Updated dependencies
|
|
75
|
+
- @0xsequence/guard@3.0.0-beta.5
|
|
76
|
+
- @0xsequence/relayer@3.0.0-beta.5
|
|
77
|
+
- @0xsequence/wallet-core@3.0.0-beta.5
|
|
78
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.5
|
|
79
|
+
|
|
80
|
+
## 3.0.0-beta.4
|
|
81
|
+
|
|
82
|
+
### Patch Changes
|
|
83
|
+
|
|
84
|
+
- RC5 upgrade
|
|
85
|
+
- Updated dependencies
|
|
86
|
+
- @0xsequence/guard@3.0.0-beta.4
|
|
87
|
+
- @0xsequence/relayer@3.0.0-beta.4
|
|
88
|
+
- @0xsequence/wallet-core@3.0.0-beta.4
|
|
89
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.4
|
|
90
|
+
|
|
91
|
+
## 3.0.0-beta.3
|
|
92
|
+
|
|
93
|
+
### Patch Changes
|
|
94
|
+
|
|
95
|
+
- 3.0.0-beta.3 with fixes
|
|
96
|
+
- Updated dependencies
|
|
97
|
+
- @0xsequence/guard@3.0.0-beta.3
|
|
98
|
+
- @0xsequence/relayer@3.0.0-beta.3
|
|
99
|
+
- @0xsequence/wallet-core@3.0.0-beta.3
|
|
100
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.3
|
|
101
|
+
|
|
102
|
+
## 3.0.0-beta.2
|
|
103
|
+
|
|
104
|
+
### Patch Changes
|
|
105
|
+
|
|
106
|
+
- 3.0.0-beta.2 with identity instrument updates
|
|
107
|
+
- Updated dependencies
|
|
108
|
+
- @0xsequence/guard@3.0.0-beta.2
|
|
109
|
+
- @0xsequence/relayer@3.0.0-beta.2
|
|
110
|
+
- @0xsequence/wallet-core@3.0.0-beta.2
|
|
111
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.2
|
|
112
|
+
|
|
3
113
|
## 3.0.0-beta.1
|
|
4
114
|
|
|
5
115
|
### Patch Changes
|
|
@@ -31,6 +31,7 @@ export declare class ChainSessionManager {
|
|
|
31
31
|
loginMethod: LoginMethod | null;
|
|
32
32
|
userEmail: string | null;
|
|
33
33
|
private guard?;
|
|
34
|
+
private lastSignedCallCache?;
|
|
34
35
|
/**
|
|
35
36
|
* @param chainId The ID of the chain this manager is responsible for.
|
|
36
37
|
* @param keyMachineUrl The URL of the key management service.
|
|
@@ -206,6 +207,8 @@ export declare class ChainSessionManager {
|
|
|
206
207
|
* @private Resets the internal state and clears all persisted session data from storage.
|
|
207
208
|
*/
|
|
208
209
|
private _resetStateAndClearCredentials;
|
|
210
|
+
private _getCachedSignedCall;
|
|
211
|
+
private _fingerprintCalls;
|
|
209
212
|
}
|
|
210
213
|
export {};
|
|
211
214
|
//# sourceMappingURL=ChainSessionManager.d.ts.map
|
|
@@ -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,EAKX,SAAS,EAGV,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAGpF,UAAU,2BAA2B;IACnC,uBAAuB,EAAE,4BAA4B,CAAA;CACtD;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAEnC,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IAEvD,OAAO,CAAC,cAAc,CAEhB;IAEN,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,eAAe,CAA+B;IAEtD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IACzB,SAAS,EAAE,aAAa,GAAG,IAAI,CAAO;IAC7C,OAAO,CAAC,eAAe,CAAiB;IACjC,aAAa,EAAE,OAAO,CAAQ;IACrC,OAAO,CAAC,cAAc,CAAiB;IAChC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAO;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IACtC,OAAO,CAAC,KAAK,CAAC,CAAa;
|
|
1
|
+
{"version":3,"file":"ChainSessionManager.d.ts","sourceRoot":"","sources":["../src/ChainSessionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ export class ChainSessionManager {
|
|
|
31
31
|
loginMethod = null;
|
|
32
32
|
userEmail = null;
|
|
33
33
|
guard;
|
|
34
|
+
lastSignedCallCache;
|
|
34
35
|
/**
|
|
35
36
|
* @param chainId The ID of the chain this manager is responsible for.
|
|
36
37
|
* @param keyMachineUrl The URL of the key management service.
|
|
@@ -136,7 +137,7 @@ export class ChainSessionManager {
|
|
|
136
137
|
stateProvider: this.stateProvider,
|
|
137
138
|
});
|
|
138
139
|
this.sessionManager = new Signers.SessionManager(this.wallet, {
|
|
139
|
-
sessionManagerAddress: Extensions.
|
|
140
|
+
sessionManagerAddress: Extensions.Rc5.sessions,
|
|
140
141
|
provider: this.provider,
|
|
141
142
|
});
|
|
142
143
|
this.isInitialized = true;
|
|
@@ -354,7 +355,7 @@ export class ChainSessionManager {
|
|
|
354
355
|
const { userEmail, loginMethod, guard } = connectResponse;
|
|
355
356
|
const savedRequest = await this.sequenceStorage.peekPendingRequest();
|
|
356
357
|
const savedPayload = savedRequest?.payload;
|
|
357
|
-
const explicitSessionRequested =
|
|
358
|
+
const explicitSessionRequested = (savedPayload?.session?.permissions?.length ?? 0) > 0;
|
|
358
359
|
const implicitSessionRequested = savedPayload?.includeImplicitSession ?? false;
|
|
359
360
|
const needsTempPk = explicitSessionRequested || implicitSessionRequested;
|
|
360
361
|
const tempPk = needsTempPk ? await this.sequenceStorage.getAndClearTempSessionPk() : null;
|
|
@@ -501,7 +502,7 @@ export class ChainSessionManager {
|
|
|
501
502
|
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
502
503
|
try {
|
|
503
504
|
const tempManager = new Signers.SessionManager(this.wallet, {
|
|
504
|
-
sessionManagerAddress: Extensions.
|
|
505
|
+
sessionManagerAddress: Extensions.Rc5.sessions,
|
|
505
506
|
provider: this.provider,
|
|
506
507
|
});
|
|
507
508
|
const topology = await tempManager.getTopology();
|
|
@@ -612,6 +613,14 @@ export class ChainSessionManager {
|
|
|
612
613
|
}));
|
|
613
614
|
try {
|
|
614
615
|
const signedCall = await this._buildAndSignCalls(callsToSend);
|
|
616
|
+
const fingerprint = this._fingerprintCalls(callsToSend);
|
|
617
|
+
if (fingerprint) {
|
|
618
|
+
this.lastSignedCallCache = {
|
|
619
|
+
fingerprint,
|
|
620
|
+
signedCall,
|
|
621
|
+
createdAtMs: Date.now(),
|
|
622
|
+
};
|
|
623
|
+
}
|
|
615
624
|
const feeOptions = await this.relayer.feeOptions(signedCall.to, this.chainId, callsToSend);
|
|
616
625
|
return feeOptions.options;
|
|
617
626
|
}
|
|
@@ -668,7 +677,7 @@ export class ChainSessionManager {
|
|
|
668
677
|
callsToSend.unshift(transferCall);
|
|
669
678
|
}
|
|
670
679
|
}
|
|
671
|
-
const signedCalls = await this._buildAndSignCalls(callsToSend);
|
|
680
|
+
const signedCalls = this._getCachedSignedCall(callsToSend) ?? (await this._buildAndSignCalls(callsToSend));
|
|
672
681
|
const hash = await this.relayer.relay(signedCalls.to, signedCalls.data, this.chainId);
|
|
673
682
|
const status = await this._waitForTransactionReceipt(hash.opHash, this.chainId);
|
|
674
683
|
if (status.status === 'confirmed') {
|
|
@@ -838,4 +847,39 @@ export class ChainSessionManager {
|
|
|
838
847
|
await this.sequenceStorage.clearExplicitSessions();
|
|
839
848
|
await this.sequenceStorage.clearSessionlessConnection();
|
|
840
849
|
}
|
|
850
|
+
_getCachedSignedCall(calls) {
|
|
851
|
+
if (!this.lastSignedCallCache) {
|
|
852
|
+
return null;
|
|
853
|
+
}
|
|
854
|
+
const ttlMs = 30_000;
|
|
855
|
+
if (Date.now() - this.lastSignedCallCache.createdAtMs > ttlMs) {
|
|
856
|
+
this.lastSignedCallCache = undefined;
|
|
857
|
+
return null;
|
|
858
|
+
}
|
|
859
|
+
const fingerprint = this._fingerprintCalls(calls);
|
|
860
|
+
if (!fingerprint) {
|
|
861
|
+
return null;
|
|
862
|
+
}
|
|
863
|
+
if (fingerprint !== this.lastSignedCallCache.fingerprint) {
|
|
864
|
+
return null;
|
|
865
|
+
}
|
|
866
|
+
return this.lastSignedCallCache.signedCall;
|
|
867
|
+
}
|
|
868
|
+
_fingerprintCalls(calls) {
|
|
869
|
+
try {
|
|
870
|
+
return JSON.stringify(calls.map((call) => ({
|
|
871
|
+
to: call.to,
|
|
872
|
+
value: call.value?.toString() ?? '0',
|
|
873
|
+
data: call.data ?? '0x',
|
|
874
|
+
gasLimit: call.gasLimit?.toString() ?? '0',
|
|
875
|
+
delegateCall: call.delegateCall ?? false,
|
|
876
|
+
onlyFallback: call.onlyFallback ?? false,
|
|
877
|
+
behaviorOnError: call.behaviorOnError ?? 'revert',
|
|
878
|
+
})));
|
|
879
|
+
}
|
|
880
|
+
catch (error) {
|
|
881
|
+
console.warn('ChainSessionManager._fingerprintCalls failed:', error);
|
|
882
|
+
return null;
|
|
883
|
+
}
|
|
884
|
+
}
|
|
841
885
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DappTransport.d.ts","sourceRoot":"","sources":["../src/DappTransport.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EAEtB,aAAa,EAEd,MAAM,kBAAkB,CAAA;AAgCzB,qBAAa,aAAa;aAqBN,SAAS,EAAE,MAAM;IACjC,QAAQ,CAAC,IAAI,EAAE,aAAa;IArB9B,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,eAAe,CAAgD;IACvE,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAkD;IAC5E,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAwB;IAC/D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAuB;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,SAAgB,YAAY,EAAE,MAAM,CAAA;gBAGlB,SAAS,EAAE,MAAM,EACxB,IAAI,GAAE,aAAmC,EAClD,gBAAgB,GAAE,gBAAqB,EACvC,sBAAsB,CAAC,EAAE,sBAAsB,EAC/C,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAwC/C,IAAI,YAAY,IAAI,OAAO,CAG1B;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAEK,WAAW,CAAC,SAAS,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAC/C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,SAAS,CAAC;IAoDR,qBAAqB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IAuBL,mBAAmB,CAAC,SAAS,GAAG,GAAG,EAC9C,UAAU,GAAE,OAAc,EAC1B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IA4EnF,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgExC,WAAW,IAAI,IAAI;IAgB1B,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"DappTransport.d.ts","sourceRoot":"","sources":["../src/DappTransport.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EAEtB,aAAa,EAEd,MAAM,kBAAkB,CAAA;AAgCzB,qBAAa,aAAa;aAqBN,SAAS,EAAE,MAAM;IACjC,QAAQ,CAAC,IAAI,EAAE,aAAa;IArB9B,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,eAAe,CAAgD;IACvE,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAkD;IAC5E,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAwB;IAC/D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAuB;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,SAAgB,YAAY,EAAE,MAAM,CAAA;gBAGlB,SAAS,EAAE,MAAM,EACxB,IAAI,GAAE,aAAmC,EAClD,gBAAgB,GAAE,gBAAqB,EACvC,sBAAsB,CAAC,EAAE,sBAAsB,EAC/C,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAwC/C,IAAI,YAAY,IAAI,OAAO,CAG1B;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAEK,WAAW,CAAC,SAAS,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAC/C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,SAAS,CAAC;IAoDR,qBAAqB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IAuBL,mBAAmB,CAAC,SAAS,GAAG,GAAG,EAC9C,UAAU,GAAE,OAAc,EAC1B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IA4EnF,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgExC,WAAW,IAAI,IAAI;IAgB1B,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,aAAa,CAoCpB;IAED,OAAO,CAAC,wBAAwB;IAiChC,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,mBAAmB;IAkD3B,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,UAAU;CAGnB"}
|
package/dist/DappTransport.js
CHANGED
|
@@ -318,8 +318,7 @@ export class DappTransport {
|
|
|
318
318
|
if (event.origin !== this.walletOrigin) {
|
|
319
319
|
return;
|
|
320
320
|
}
|
|
321
|
-
|
|
322
|
-
if (!isPotentiallyValidSource && event.data?.type !== MessageType.WALLET_OPENED) {
|
|
321
|
+
if (!this.walletWindow || event.source !== this.walletWindow) {
|
|
323
322
|
return;
|
|
324
323
|
}
|
|
325
324
|
const message = event.data;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
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, } from './types/index.js';
|
|
4
|
-
export { RequestActionType, TransportMode } 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, } from './types/index.js';
|
|
4
|
+
export { RequestActionType, TransportMode, MessageType } from './types/index.js';
|
|
5
5
|
export { FeeOptionError, TransactionError, AddExplicitSessionError, ConnectionError, InitializationError, SigningError, ModifyExplicitSessionError, } from './utils/errors.js';
|
|
6
|
-
export { getExplorerUrl, jsonReplacers, jsonRevivers } from './utils/index.js';
|
|
6
|
+
export { createExplicitSessionConfig, getExplorerUrl, getNetwork, getRelayerUrl, getRpcUrl, jsonReplacers, jsonRevivers, VALUE_FORWARDER_ADDRESS, } from './utils/index.js';
|
|
7
|
+
export type { ExplicitSessionParams, NativeTokenSpending, SessionDuration } from './utils/index.js';
|
|
7
8
|
export type { SequenceStorage, ExplicitSessionData, ImplicitSessionData, SessionlessConnectionData, PendingRequestContext, PendingPayload, } from './utils/storage.js';
|
|
8
9
|
export { WebStorage } from './utils/storage.js';
|
|
9
|
-
export { Attestation, Permission, Extensions, SessionConfig, Constants, Payload } from '@0xsequence/wallet-primitives';
|
|
10
|
+
export { Attestation, Permission, Extensions, SessionConfig, Constants, Payload, Network, } from '@0xsequence/wallet-primitives';
|
|
10
11
|
export type { ExplicitSessionConfig, ExplicitSession, ImplicitSession, Session } from '@0xsequence/wallet-core';
|
|
11
12
|
export { Signers, Wallet, Utils, Envelope, State } from '@0xsequence/wallet-core';
|
|
12
13
|
//# 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":"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,
|
|
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,GACjB,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/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { DappClient } from './DappClient.js';
|
|
2
|
-
export { RequestActionType, TransportMode } from './types/index.js';
|
|
2
|
+
export { RequestActionType, TransportMode, MessageType } from './types/index.js';
|
|
3
3
|
export { FeeOptionError, TransactionError, AddExplicitSessionError, ConnectionError, InitializationError, SigningError, ModifyExplicitSessionError, } from './utils/errors.js';
|
|
4
|
-
export { getExplorerUrl, jsonReplacers, jsonRevivers } from './utils/index.js';
|
|
4
|
+
export { createExplicitSessionConfig, getExplorerUrl, getNetwork, getRelayerUrl, getRpcUrl, jsonReplacers, jsonRevivers, VALUE_FORWARDER_ADDRESS, } from './utils/index.js';
|
|
5
5
|
export { WebStorage } from './utils/storage.js';
|
|
6
|
-
export { Attestation, Permission, Extensions, SessionConfig, Constants, Payload } from '@0xsequence/wallet-primitives';
|
|
6
|
+
export { Attestation, Permission, Extensions, SessionConfig, Constants, Payload, Network, } from '@0xsequence/wallet-primitives';
|
|
7
7
|
export { Signers, Wallet, Utils, Envelope, State } from '@0xsequence/wallet-core';
|
package/dist/types/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare const RequestActionType: {
|
|
|
15
15
|
readonly SIGN_TYPED_DATA: "signTypedData";
|
|
16
16
|
readonly SEND_WALLET_TRANSACTION: "sendWalletTransaction";
|
|
17
17
|
};
|
|
18
|
-
export type LoginMethod = 'google' | 'apple' | 'email' | 'passkey' | 'mnemonic';
|
|
18
|
+
export type LoginMethod = 'google' | 'apple' | 'email' | 'passkey' | 'mnemonic' | 'eoa';
|
|
19
19
|
export interface GuardConfig {
|
|
20
20
|
url: string;
|
|
21
21
|
moduleAddresses: Map<Address.Address, Address.Address>;
|
|
@@ -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,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,11 +1,29 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ExplicitSessionConfig } from '@0xsequence/wallet-core';
|
|
2
|
+
import { Network, Permission } from '@0xsequence/wallet-primitives';
|
|
3
|
+
import { type Address } from 'ox';
|
|
4
|
+
export { VALUE_FORWARDER_ADDRESS } from './constants.js';
|
|
2
5
|
type JsonReplacer = (key: string, value: any) => any;
|
|
3
6
|
type JsonReviver = (key: string, value: any) => any;
|
|
4
7
|
export declare const jsonRevivers: JsonReviver;
|
|
5
8
|
export declare const jsonReplacers: JsonReplacer;
|
|
9
|
+
export type SessionDuration = {
|
|
10
|
+
days?: number;
|
|
11
|
+
hours?: number;
|
|
12
|
+
minutes?: number;
|
|
13
|
+
};
|
|
14
|
+
export type NativeTokenSpending = {
|
|
15
|
+
valueLimit: bigint;
|
|
16
|
+
allowedRecipients?: Address.Address[];
|
|
17
|
+
};
|
|
18
|
+
export type ExplicitSessionParams = {
|
|
19
|
+
chainId: number;
|
|
20
|
+
expiresIn: SessionDuration;
|
|
21
|
+
permissions: Permission.Permission[];
|
|
22
|
+
nativeTokenSpending?: NativeTokenSpending;
|
|
23
|
+
};
|
|
24
|
+
export declare const createExplicitSessionConfig: (params: ExplicitSessionParams) => ExplicitSessionConfig;
|
|
6
25
|
export declare const getNetwork: (chainId: Network.ChainId | bigint | number) => Network.Network;
|
|
7
26
|
export declare const getRpcUrl: (chainId: Network.ChainId | bigint | number, nodesUrl: string, projectAccessKey: string) => string;
|
|
8
27
|
export declare const getRelayerUrl: (chainId: Network.ChainId | bigint | number, relayerUrl: string) => string;
|
|
9
28
|
export declare const getExplorerUrl: (chainId: Network.ChainId | bigint | number, txHash: string) => string;
|
|
10
|
-
export {};
|
|
11
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,IAAI,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAExD,KAAK,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AACpD,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AAsHnD,eAAO,MAAM,YAAY,aAAgE,CAAA;AACzF,eAAO,MAAM,aAAa,cAAoE,CAAA;AAE9F,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,eAAe,CAAA;IAC1B,WAAW,EAAE,UAAU,CAAC,UAAU,EAAE,CAAA;IACpC,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAI,QAAQ,qBAAqB,KAAG,qBAwB3E,CAAA;AAuBD,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,oBAQpE,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,UAAU,MAAM,EAAE,kBAAkB,MAAM,WAU/G,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,WAM3F,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,QAAQ,MAAM,WAQxF,CAAA"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
1
|
import { Network } from '@0xsequence/wallet-primitives';
|
|
3
2
|
import { Bytes, Hex } from 'ox';
|
|
3
|
+
export { VALUE_FORWARDER_ADDRESS } from './constants.js';
|
|
4
4
|
/**
|
|
5
5
|
* Creates a single JSON replacer by chaining multiple replacers.
|
|
6
6
|
* The first replacer to transform a value wins.
|
|
@@ -114,6 +114,28 @@ const uint8ArrayReviver = (key, value) => {
|
|
|
114
114
|
};
|
|
115
115
|
export const jsonRevivers = chainRevivers([mapReviver, bigIntReviver, uint8ArrayReviver]);
|
|
116
116
|
export const jsonReplacers = chainReplacers([mapReplacer, bigIntReplacer, uint8ArrayReplacer]);
|
|
117
|
+
export const createExplicitSessionConfig = (params) => {
|
|
118
|
+
const nowInSeconds = BigInt(Math.floor(Date.now() / 1000));
|
|
119
|
+
const { days = 0, hours = 0, minutes = 0 } = params.expiresIn;
|
|
120
|
+
const sessionLifetimeSeconds = days * 24 * 60 * 60 + hours * 60 * 60 + minutes * 60;
|
|
121
|
+
const deadline = nowInSeconds + BigInt(sessionLifetimeSeconds);
|
|
122
|
+
if (params.permissions.length === 0) {
|
|
123
|
+
throw new Error('createExplicitSessionConfig: At least one permission is required.');
|
|
124
|
+
}
|
|
125
|
+
const nativeTokenSpending = params.nativeTokenSpending;
|
|
126
|
+
const valueLimit = nativeTokenSpending?.valueLimit ?? 0n;
|
|
127
|
+
const nativeTokenReceivers = [...(nativeTokenSpending?.allowedRecipients || [])];
|
|
128
|
+
const nativeTokenSpendingPermissions = nativeTokenReceivers.map((receiver) => ({
|
|
129
|
+
target: receiver,
|
|
130
|
+
rules: [],
|
|
131
|
+
}));
|
|
132
|
+
return {
|
|
133
|
+
chainId: params.chainId,
|
|
134
|
+
valueLimit,
|
|
135
|
+
deadline,
|
|
136
|
+
permissions: [...params.permissions, ...nativeTokenSpendingPermissions],
|
|
137
|
+
};
|
|
138
|
+
};
|
|
117
139
|
/**
|
|
118
140
|
* Apply a template to a string.
|
|
119
141
|
*
|
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.11",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -14,21 +14,21 @@
|
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"@types/node": "^
|
|
18
|
-
"@vitest/coverage-v8": "^
|
|
19
|
-
"dotenv": "^
|
|
20
|
-
"fake-indexeddb": "^6.
|
|
21
|
-
"happy-dom": "^
|
|
22
|
-
"typescript": "^5.
|
|
23
|
-
"vitest": "^
|
|
24
|
-
"@repo/typescript-config": "^0.0.
|
|
17
|
+
"@types/node": "^25.0.2",
|
|
18
|
+
"@vitest/coverage-v8": "^4.0.15",
|
|
19
|
+
"dotenv": "^17.2.3",
|
|
20
|
+
"fake-indexeddb": "^6.2.5",
|
|
21
|
+
"happy-dom": "^20.0.11",
|
|
22
|
+
"typescript": "^5.9.3",
|
|
23
|
+
"vitest": "^4.0.15",
|
|
24
|
+
"@repo/typescript-config": "^0.0.1-beta.1"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"ox": "^0.
|
|
28
|
-
"@0xsequence/
|
|
29
|
-
"@0xsequence/
|
|
30
|
-
"@0xsequence/wallet-
|
|
31
|
-
"@0xsequence/
|
|
27
|
+
"ox": "^0.9.17",
|
|
28
|
+
"@0xsequence/wallet-primitives": "^3.0.0-beta.11",
|
|
29
|
+
"@0xsequence/guard": "^3.0.0-beta.11",
|
|
30
|
+
"@0xsequence/wallet-core": "^3.0.0-beta.11",
|
|
31
|
+
"@0xsequence/relayer": "^3.0.0-beta.11"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "tsc",
|
|
@@ -84,6 +84,11 @@ export class ChainSessionManager {
|
|
|
84
84
|
public loginMethod: LoginMethod | null = null
|
|
85
85
|
public userEmail: string | null = null
|
|
86
86
|
private guard?: GuardConfig
|
|
87
|
+
private lastSignedCallCache?: {
|
|
88
|
+
fingerprint: string
|
|
89
|
+
signedCall: { to: Address.Address; data: Hex.Hex }
|
|
90
|
+
createdAtMs: number
|
|
91
|
+
}
|
|
87
92
|
|
|
88
93
|
/**
|
|
89
94
|
* @param chainId The ID of the chain this manager is responsible for.
|
|
@@ -222,7 +227,7 @@ export class ChainSessionManager {
|
|
|
222
227
|
stateProvider: this.stateProvider,
|
|
223
228
|
})
|
|
224
229
|
this.sessionManager = new Signers.SessionManager(this.wallet, {
|
|
225
|
-
sessionManagerAddress: Extensions.
|
|
230
|
+
sessionManagerAddress: Extensions.Rc5.sessions,
|
|
226
231
|
provider: this.provider!,
|
|
227
232
|
})
|
|
228
233
|
this.isInitialized = true
|
|
@@ -538,7 +543,7 @@ export class ChainSessionManager {
|
|
|
538
543
|
const { userEmail, loginMethod, guard } = connectResponse
|
|
539
544
|
const savedRequest = await this.sequenceStorage.peekPendingRequest()
|
|
540
545
|
const savedPayload = savedRequest?.payload as CreateNewSessionPayload | undefined
|
|
541
|
-
const explicitSessionRequested =
|
|
546
|
+
const explicitSessionRequested = (savedPayload?.session?.permissions?.length ?? 0) > 0
|
|
542
547
|
const implicitSessionRequested = savedPayload?.includeImplicitSession ?? false
|
|
543
548
|
const needsTempPk = explicitSessionRequested || implicitSessionRequested
|
|
544
549
|
const tempPk = needsTempPk ? await this.sequenceStorage.getAndClearTempSessionPk() : null
|
|
@@ -731,7 +736,7 @@ export class ChainSessionManager {
|
|
|
731
736
|
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
732
737
|
try {
|
|
733
738
|
const tempManager = new Signers.SessionManager(this.wallet, {
|
|
734
|
-
sessionManagerAddress: Extensions.
|
|
739
|
+
sessionManagerAddress: Extensions.Rc5.sessions,
|
|
735
740
|
provider: this.provider,
|
|
736
741
|
})
|
|
737
742
|
const topology = await tempManager.getTopology()
|
|
@@ -851,6 +856,14 @@ export class ChainSessionManager {
|
|
|
851
856
|
}))
|
|
852
857
|
try {
|
|
853
858
|
const signedCall = await this._buildAndSignCalls(callsToSend)
|
|
859
|
+
const fingerprint = this._fingerprintCalls(callsToSend)
|
|
860
|
+
if (fingerprint) {
|
|
861
|
+
this.lastSignedCallCache = {
|
|
862
|
+
fingerprint,
|
|
863
|
+
signedCall,
|
|
864
|
+
createdAtMs: Date.now(),
|
|
865
|
+
}
|
|
866
|
+
}
|
|
854
867
|
const feeOptions = await this.relayer.feeOptions(signedCall.to, this.chainId, callsToSend)
|
|
855
868
|
return feeOptions.options
|
|
856
869
|
} catch (err) {
|
|
@@ -907,7 +920,7 @@ export class ChainSessionManager {
|
|
|
907
920
|
callsToSend.unshift(transferCall)
|
|
908
921
|
}
|
|
909
922
|
}
|
|
910
|
-
const signedCalls = await this._buildAndSignCalls(callsToSend)
|
|
923
|
+
const signedCalls = this._getCachedSignedCall(callsToSend) ?? (await this._buildAndSignCalls(callsToSend))
|
|
911
924
|
const hash = await this.relayer.relay(signedCalls.to, signedCalls.data, this.chainId)
|
|
912
925
|
const status = await this._waitForTransactionReceipt(hash.opHash, this.chainId)
|
|
913
926
|
if (status.status === 'confirmed') {
|
|
@@ -1101,4 +1114,42 @@ export class ChainSessionManager {
|
|
|
1101
1114
|
await this.sequenceStorage.clearExplicitSessions()
|
|
1102
1115
|
await this.sequenceStorage.clearSessionlessConnection()
|
|
1103
1116
|
}
|
|
1117
|
+
|
|
1118
|
+
private _getCachedSignedCall(calls: Payload.Call[]): { to: Address.Address; data: Hex.Hex } | null {
|
|
1119
|
+
if (!this.lastSignedCallCache) {
|
|
1120
|
+
return null
|
|
1121
|
+
}
|
|
1122
|
+
const ttlMs = 30_000
|
|
1123
|
+
if (Date.now() - this.lastSignedCallCache.createdAtMs > ttlMs) {
|
|
1124
|
+
this.lastSignedCallCache = undefined
|
|
1125
|
+
return null
|
|
1126
|
+
}
|
|
1127
|
+
const fingerprint = this._fingerprintCalls(calls)
|
|
1128
|
+
if (!fingerprint) {
|
|
1129
|
+
return null
|
|
1130
|
+
}
|
|
1131
|
+
if (fingerprint !== this.lastSignedCallCache.fingerprint) {
|
|
1132
|
+
return null
|
|
1133
|
+
}
|
|
1134
|
+
return this.lastSignedCallCache.signedCall
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
private _fingerprintCalls(calls: Payload.Call[]): string | null {
|
|
1138
|
+
try {
|
|
1139
|
+
return JSON.stringify(
|
|
1140
|
+
calls.map((call) => ({
|
|
1141
|
+
to: call.to,
|
|
1142
|
+
value: call.value?.toString() ?? '0',
|
|
1143
|
+
data: call.data ?? '0x',
|
|
1144
|
+
gasLimit: call.gasLimit?.toString() ?? '0',
|
|
1145
|
+
delegateCall: call.delegateCall ?? false,
|
|
1146
|
+
onlyFallback: call.onlyFallback ?? false,
|
|
1147
|
+
behaviorOnError: call.behaviorOnError ?? 'revert',
|
|
1148
|
+
})),
|
|
1149
|
+
)
|
|
1150
|
+
} catch (error) {
|
|
1151
|
+
console.warn('ChainSessionManager._fingerprintCalls failed:', error)
|
|
1152
|
+
return null
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1104
1155
|
}
|
package/src/DappTransport.ts
CHANGED
|
@@ -378,10 +378,7 @@ export class DappTransport {
|
|
|
378
378
|
return
|
|
379
379
|
}
|
|
380
380
|
|
|
381
|
-
|
|
382
|
-
this.walletWindow && (event.source === this.walletWindow || !this.walletWindow.closed)
|
|
383
|
-
|
|
384
|
-
if (!isPotentiallyValidSource && event.data?.type !== MessageType.WALLET_OPENED) {
|
|
381
|
+
if (!this.walletWindow || event.source !== this.walletWindow) {
|
|
385
382
|
return
|
|
386
383
|
}
|
|
387
384
|
|
package/src/index.ts
CHANGED
|
@@ -23,8 +23,9 @@ export type {
|
|
|
23
23
|
GetFeeTokensResponse,
|
|
24
24
|
FeeToken,
|
|
25
25
|
FeeOption,
|
|
26
|
+
TransportMessage,
|
|
26
27
|
} from './types/index.js'
|
|
27
|
-
export { RequestActionType, TransportMode } from './types/index.js'
|
|
28
|
+
export { RequestActionType, TransportMode, MessageType } from './types/index.js'
|
|
28
29
|
export {
|
|
29
30
|
FeeOptionError,
|
|
30
31
|
TransactionError,
|
|
@@ -34,7 +35,17 @@ export {
|
|
|
34
35
|
SigningError,
|
|
35
36
|
ModifyExplicitSessionError,
|
|
36
37
|
} from './utils/errors.js'
|
|
37
|
-
export {
|
|
38
|
+
export {
|
|
39
|
+
createExplicitSessionConfig,
|
|
40
|
+
getExplorerUrl,
|
|
41
|
+
getNetwork,
|
|
42
|
+
getRelayerUrl,
|
|
43
|
+
getRpcUrl,
|
|
44
|
+
jsonReplacers,
|
|
45
|
+
jsonRevivers,
|
|
46
|
+
VALUE_FORWARDER_ADDRESS,
|
|
47
|
+
} from './utils/index.js'
|
|
48
|
+
export type { ExplicitSessionParams, NativeTokenSpending, SessionDuration } from './utils/index.js'
|
|
38
49
|
export type {
|
|
39
50
|
SequenceStorage,
|
|
40
51
|
ExplicitSessionData,
|
|
@@ -45,6 +56,14 @@ export type {
|
|
|
45
56
|
} from './utils/storage.js'
|
|
46
57
|
export { WebStorage } from './utils/storage.js'
|
|
47
58
|
|
|
48
|
-
export {
|
|
59
|
+
export {
|
|
60
|
+
Attestation,
|
|
61
|
+
Permission,
|
|
62
|
+
Extensions,
|
|
63
|
+
SessionConfig,
|
|
64
|
+
Constants,
|
|
65
|
+
Payload,
|
|
66
|
+
Network,
|
|
67
|
+
} from '@0xsequence/wallet-primitives'
|
|
49
68
|
export type { ExplicitSessionConfig, ExplicitSession, ImplicitSession, Session } from '@0xsequence/wallet-core'
|
|
50
69
|
export { Signers, Wallet, Utils, Envelope, State } from '@0xsequence/wallet-core'
|
package/src/types/index.ts
CHANGED
|
@@ -21,7 +21,7 @@ export const RequestActionType = {
|
|
|
21
21
|
SEND_WALLET_TRANSACTION: 'sendWalletTransaction',
|
|
22
22
|
} as const
|
|
23
23
|
|
|
24
|
-
export type LoginMethod = 'google' | 'apple' | 'email' | 'passkey' | 'mnemonic'
|
|
24
|
+
export type LoginMethod = 'google' | 'apple' | 'email' | 'passkey' | 'mnemonic' | 'eoa'
|
|
25
25
|
|
|
26
26
|
export interface GuardConfig {
|
|
27
27
|
url: string
|
package/src/utils/index.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import type { ExplicitSessionConfig } from '@0xsequence/wallet-core'
|
|
3
|
+
import { Network, Permission } from '@0xsequence/wallet-primitives'
|
|
4
|
+
import { Bytes, Hex, type Address } from 'ox'
|
|
5
|
+
export { VALUE_FORWARDER_ADDRESS } from './constants.js'
|
|
4
6
|
|
|
5
7
|
type JsonReplacer = (key: string, value: any) => any
|
|
6
8
|
type JsonReviver = (key: string, value: any) => any
|
|
@@ -124,6 +126,50 @@ const uint8ArrayReviver: JsonReviver = (key, value) => {
|
|
|
124
126
|
export const jsonRevivers = chainRevivers([mapReviver, bigIntReviver, uint8ArrayReviver])
|
|
125
127
|
export const jsonReplacers = chainReplacers([mapReplacer, bigIntReplacer, uint8ArrayReplacer])
|
|
126
128
|
|
|
129
|
+
export type SessionDuration = {
|
|
130
|
+
days?: number
|
|
131
|
+
hours?: number
|
|
132
|
+
minutes?: number
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export type NativeTokenSpending = {
|
|
136
|
+
valueLimit: bigint
|
|
137
|
+
allowedRecipients?: Address.Address[]
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export type ExplicitSessionParams = {
|
|
141
|
+
chainId: number
|
|
142
|
+
expiresIn: SessionDuration
|
|
143
|
+
permissions: Permission.Permission[]
|
|
144
|
+
nativeTokenSpending?: NativeTokenSpending
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export const createExplicitSessionConfig = (params: ExplicitSessionParams): ExplicitSessionConfig => {
|
|
148
|
+
const nowInSeconds = BigInt(Math.floor(Date.now() / 1000))
|
|
149
|
+
const { days = 0, hours = 0, minutes = 0 } = params.expiresIn
|
|
150
|
+
const sessionLifetimeSeconds = days * 24 * 60 * 60 + hours * 60 * 60 + minutes * 60
|
|
151
|
+
const deadline = nowInSeconds + BigInt(sessionLifetimeSeconds)
|
|
152
|
+
|
|
153
|
+
if (params.permissions.length === 0) {
|
|
154
|
+
throw new Error('createExplicitSessionConfig: At least one permission is required.')
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const nativeTokenSpending = params.nativeTokenSpending
|
|
158
|
+
const valueLimit = nativeTokenSpending?.valueLimit ?? 0n
|
|
159
|
+
const nativeTokenReceivers = [...(nativeTokenSpending?.allowedRecipients || [])]
|
|
160
|
+
const nativeTokenSpendingPermissions = nativeTokenReceivers.map((receiver) => ({
|
|
161
|
+
target: receiver,
|
|
162
|
+
rules: [],
|
|
163
|
+
}))
|
|
164
|
+
|
|
165
|
+
return {
|
|
166
|
+
chainId: params.chainId,
|
|
167
|
+
valueLimit,
|
|
168
|
+
deadline,
|
|
169
|
+
permissions: [...params.permissions, ...nativeTokenSpendingPermissions],
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
127
173
|
/**
|
|
128
174
|
* Apply a template to a string.
|
|
129
175
|
*
|