@0xsequence/wallet-core 3.0.0-beta.9 → 3.0.0
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/.turbo/turbo-lint.log +4 -0
- package/.turbo/turbo-typecheck.log +4 -0
- package/CHANGELOG.md +148 -0
- package/dist/bundler/bundlers/pimlico.d.ts +3 -2
- package/dist/bundler/bundlers/pimlico.d.ts.map +1 -1
- package/dist/bundler/bundlers/pimlico.js +9 -3
- package/dist/env.d.ts +22 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +42 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/signers/index.d.ts +1 -1
- package/dist/signers/passkey.d.ts +11 -3
- package/dist/signers/passkey.d.ts.map +1 -1
- package/dist/signers/passkey.js +12 -6
- package/dist/signers/pk/encrypted.d.ts +13 -2
- package/dist/signers/pk/encrypted.d.ts.map +1 -1
- package/dist/signers/pk/encrypted.js +94 -15
- package/dist/signers/pk/index.d.ts +1 -1
- package/dist/signers/session/explicit.d.ts.map +1 -1
- package/dist/signers/session/explicit.js +2 -2
- package/dist/signers/session/implicit.d.ts.map +1 -1
- package/dist/signers/session/implicit.js +1 -1
- package/dist/state/local/index.d.ts.map +1 -1
- package/dist/state/local/index.js +3 -2
- package/dist/state/local/indexed-db.d.ts +4 -1
- package/dist/state/local/indexed-db.d.ts.map +1 -1
- package/dist/state/local/indexed-db.js +12 -2
- package/dist/state/remote/dev-http.d.ts +2 -1
- package/dist/state/remote/dev-http.d.ts.map +1 -1
- package/dist/state/remote/dev-http.js +11 -5
- package/dist/state/sequence/index.d.ts +2 -1
- package/dist/state/sequence/index.d.ts.map +1 -1
- package/dist/state/sequence/index.js +14 -5
- package/dist/wallet.js +2 -2
- package/eslint.config.js +12 -0
- package/package.json +12 -10
- package/src/bundler/bundlers/pimlico.ts +10 -4
- package/src/env.ts +68 -0
- package/src/index.ts +1 -0
- package/src/signers/index.ts +1 -1
- package/src/signers/passkey.ts +21 -5
- package/src/signers/pk/encrypted.ts +103 -14
- package/src/signers/pk/index.ts +1 -1
- package/src/signers/session/explicit.ts +2 -9
- package/src/signers/session/implicit.ts +1 -2
- package/src/state/local/index.ts +4 -2
- package/src/state/local/indexed-db.ts +15 -2
- package/src/state/remote/dev-http.ts +11 -5
- package/src/state/sequence/index.ts +15 -6
- package/src/wallet.ts +2 -2
- package/test/constants.ts +2 -0
- package/test/envelope.test.ts +0 -1
- package/test/signers-pk.test.ts +1 -1
- package/test/signers-session-implicit.test.ts +0 -2
- package/test/state/debug.test.ts +2 -3
|
@@ -1,19 +1,67 @@
|
|
|
1
1
|
import { Hex, Address, Secp256k1 } from 'ox';
|
|
2
|
+
import { resolveCoreEnv } from '../../env.js';
|
|
2
3
|
export class EncryptedPksDb {
|
|
3
4
|
localStorageKeyPrefix;
|
|
5
|
+
env;
|
|
4
6
|
tableName;
|
|
5
7
|
dbName = 'pk-db';
|
|
6
8
|
dbVersion = 1;
|
|
7
|
-
constructor(localStorageKeyPrefix = 'e_pk_key_', tableName = 'e_pk') {
|
|
9
|
+
constructor(localStorageKeyPrefix = 'e_pk_key_', tableName = 'e_pk', env) {
|
|
8
10
|
this.localStorageKeyPrefix = localStorageKeyPrefix;
|
|
11
|
+
this.env = env;
|
|
9
12
|
this.tableName = tableName;
|
|
10
13
|
}
|
|
11
14
|
computeDbKey(address) {
|
|
12
15
|
return `pk_${address.toLowerCase()}`;
|
|
13
16
|
}
|
|
17
|
+
getIndexedDB() {
|
|
18
|
+
const globalObj = globalThis;
|
|
19
|
+
const indexedDb = this.env?.indexedDB ?? globalObj.indexedDB ?? globalObj.window?.indexedDB;
|
|
20
|
+
if (!indexedDb) {
|
|
21
|
+
throw new Error('indexedDB is not available');
|
|
22
|
+
}
|
|
23
|
+
return indexedDb;
|
|
24
|
+
}
|
|
25
|
+
getStorage() {
|
|
26
|
+
const storage = resolveCoreEnv(this.env).storage;
|
|
27
|
+
if (!storage) {
|
|
28
|
+
throw new Error('storage is not available');
|
|
29
|
+
}
|
|
30
|
+
return storage;
|
|
31
|
+
}
|
|
32
|
+
getCrypto() {
|
|
33
|
+
const globalObj = globalThis;
|
|
34
|
+
const crypto = this.env?.crypto ?? globalObj.crypto ?? globalObj.window?.crypto;
|
|
35
|
+
if (!crypto?.subtle || !crypto?.getRandomValues) {
|
|
36
|
+
throw new Error('crypto.subtle is not available');
|
|
37
|
+
}
|
|
38
|
+
return crypto;
|
|
39
|
+
}
|
|
40
|
+
getTextEncoderCtor() {
|
|
41
|
+
const globalObj = globalThis;
|
|
42
|
+
if (this.env?.text && (!this.env.text.TextEncoder || !this.env.text.TextDecoder)) {
|
|
43
|
+
throw new Error('env.text must provide both TextEncoder and TextDecoder');
|
|
44
|
+
}
|
|
45
|
+
const encoderCtor = this.env?.text?.TextEncoder ?? globalObj.TextEncoder ?? globalObj.window?.TextEncoder;
|
|
46
|
+
if (!encoderCtor) {
|
|
47
|
+
throw new Error('TextEncoder is not available');
|
|
48
|
+
}
|
|
49
|
+
return encoderCtor;
|
|
50
|
+
}
|
|
51
|
+
getTextDecoderCtor() {
|
|
52
|
+
const globalObj = globalThis;
|
|
53
|
+
if (this.env?.text && (!this.env.text.TextEncoder || !this.env.text.TextDecoder)) {
|
|
54
|
+
throw new Error('env.text must provide both TextEncoder and TextDecoder');
|
|
55
|
+
}
|
|
56
|
+
const decoderCtor = this.env?.text?.TextDecoder ?? globalObj.TextDecoder ?? globalObj.window?.TextDecoder;
|
|
57
|
+
if (!decoderCtor) {
|
|
58
|
+
throw new Error('TextDecoder is not available');
|
|
59
|
+
}
|
|
60
|
+
return decoderCtor;
|
|
61
|
+
}
|
|
14
62
|
openDB() {
|
|
15
63
|
return new Promise((resolve, reject) => {
|
|
16
|
-
const request =
|
|
64
|
+
const request = this.getIndexedDB().open(this.dbName, this.dbVersion);
|
|
17
65
|
request.onupgradeneeded = () => {
|
|
18
66
|
const db = request.result;
|
|
19
67
|
if (!db.objectStoreNames.contains(this.tableName)) {
|
|
@@ -55,7 +103,10 @@ export class EncryptedPksDb {
|
|
|
55
103
|
});
|
|
56
104
|
}
|
|
57
105
|
async generateAndStore() {
|
|
58
|
-
const
|
|
106
|
+
const crypto = this.getCrypto();
|
|
107
|
+
const storage = this.getStorage();
|
|
108
|
+
const TextEncoderCtor = this.getTextEncoderCtor();
|
|
109
|
+
const encryptionKey = await crypto.subtle.generateKey({ name: 'AES-GCM', length: 256 }, true, [
|
|
59
110
|
'encrypt',
|
|
60
111
|
'decrypt',
|
|
61
112
|
]);
|
|
@@ -63,12 +114,12 @@ export class EncryptedPksDb {
|
|
|
63
114
|
const publicKey = Secp256k1.getPublicKey({ privateKey });
|
|
64
115
|
const address = Address.fromPublicKey(publicKey);
|
|
65
116
|
const keyPointer = this.localStorageKeyPrefix + address;
|
|
66
|
-
const exportedKey = await
|
|
67
|
-
|
|
68
|
-
const encoder = new
|
|
117
|
+
const exportedKey = await crypto.subtle.exportKey('jwk', encryptionKey);
|
|
118
|
+
storage.setItem(keyPointer, JSON.stringify(exportedKey));
|
|
119
|
+
const encoder = new TextEncoderCtor();
|
|
69
120
|
const encodedPk = encoder.encode(privateKey);
|
|
70
|
-
const iv =
|
|
71
|
-
const encryptedBuffer = await
|
|
121
|
+
const iv = crypto.getRandomValues(new Uint8Array(12));
|
|
122
|
+
const encryptedBuffer = await crypto.subtle.encrypt({ name: 'AES-GCM', iv }, encryptionKey, encodedPk);
|
|
72
123
|
const encrypted = {
|
|
73
124
|
iv,
|
|
74
125
|
data: encryptedBuffer,
|
|
@@ -88,7 +139,7 @@ export class EncryptedPksDb {
|
|
|
88
139
|
const entry = await this.getEncryptedEntry(address);
|
|
89
140
|
if (!entry)
|
|
90
141
|
return;
|
|
91
|
-
return new EncryptedPkStore(entry);
|
|
142
|
+
return new EncryptedPkStore(entry, this.env);
|
|
92
143
|
}
|
|
93
144
|
async listAddresses() {
|
|
94
145
|
const allEntries = await this.getAllData();
|
|
@@ -98,13 +149,38 @@ export class EncryptedPksDb {
|
|
|
98
149
|
const dbKey = this.computeDbKey(address);
|
|
99
150
|
await this.putData(dbKey, undefined);
|
|
100
151
|
const keyPointer = this.localStorageKeyPrefix + address;
|
|
101
|
-
|
|
152
|
+
this.getStorage().removeItem(keyPointer);
|
|
102
153
|
}
|
|
103
154
|
}
|
|
104
155
|
export class EncryptedPkStore {
|
|
105
156
|
encrypted;
|
|
106
|
-
|
|
157
|
+
env;
|
|
158
|
+
constructor(encrypted, env) {
|
|
107
159
|
this.encrypted = encrypted;
|
|
160
|
+
this.env = env;
|
|
161
|
+
}
|
|
162
|
+
getStorage() {
|
|
163
|
+
const storage = resolveCoreEnv(this.env).storage;
|
|
164
|
+
if (!storage) {
|
|
165
|
+
throw new Error('storage is not available');
|
|
166
|
+
}
|
|
167
|
+
return storage;
|
|
168
|
+
}
|
|
169
|
+
getCrypto() {
|
|
170
|
+
const globalObj = globalThis;
|
|
171
|
+
const crypto = this.env?.crypto ?? globalObj.crypto ?? globalObj.window?.crypto;
|
|
172
|
+
if (!crypto?.subtle) {
|
|
173
|
+
throw new Error('crypto.subtle is not available');
|
|
174
|
+
}
|
|
175
|
+
return crypto;
|
|
176
|
+
}
|
|
177
|
+
getTextDecoderCtor() {
|
|
178
|
+
const globalObj = globalThis;
|
|
179
|
+
const decoderCtor = this.env?.text?.TextDecoder ?? globalObj.TextDecoder ?? globalObj.window?.TextDecoder;
|
|
180
|
+
if (!decoderCtor) {
|
|
181
|
+
throw new Error('TextDecoder is not available');
|
|
182
|
+
}
|
|
183
|
+
return decoderCtor;
|
|
108
184
|
}
|
|
109
185
|
address() {
|
|
110
186
|
return this.encrypted.address;
|
|
@@ -113,13 +189,16 @@ export class EncryptedPkStore {
|
|
|
113
189
|
return this.encrypted.publicKey;
|
|
114
190
|
}
|
|
115
191
|
async signDigest(digest) {
|
|
116
|
-
const
|
|
192
|
+
const storage = this.getStorage();
|
|
193
|
+
const crypto = this.getCrypto();
|
|
194
|
+
const TextDecoderCtor = this.getTextDecoderCtor();
|
|
195
|
+
const keyJson = storage.getItem(this.encrypted.keyPointer);
|
|
117
196
|
if (!keyJson)
|
|
118
197
|
throw new Error('Encryption key not found in localStorage');
|
|
119
198
|
const jwk = JSON.parse(keyJson);
|
|
120
|
-
const encryptionKey = await
|
|
121
|
-
const decryptedBuffer = await
|
|
122
|
-
const decoder = new
|
|
199
|
+
const encryptionKey = await crypto.subtle.importKey('jwk', jwk, { name: 'AES-GCM' }, false, ['decrypt']);
|
|
200
|
+
const decryptedBuffer = await crypto.subtle.decrypt({ name: 'AES-GCM', iv: this.encrypted.iv }, encryptionKey, this.encrypted.data);
|
|
201
|
+
const decoder = new TextDecoderCtor();
|
|
123
202
|
const privateKey = decoder.decode(decryptedBuffer);
|
|
124
203
|
return Secp256k1.sign({ payload: digest, privateKey });
|
|
125
204
|
}
|
|
@@ -29,7 +29,7 @@ export declare class Pk implements SignerInterface, Witnessable {
|
|
|
29
29
|
constructor(privateKey: Hex.Hex | PkStore);
|
|
30
30
|
sign(wallet: Address.Address, chainId: number, payload: PayloadTypes.Parented): Promise<SignatureTypes.SignatureOfSignerLeaf>;
|
|
31
31
|
signDigest(digest: Bytes.Bytes): Promise<SignatureTypes.SignatureOfSignerLeaf>;
|
|
32
|
-
witness(stateWriter: State.Writer, wallet: Address.Address, extra?:
|
|
32
|
+
witness(stateWriter: State.Writer, wallet: Address.Address, extra?: object): Promise<void>;
|
|
33
33
|
}
|
|
34
34
|
export * as Encrypted from './encrypted.js';
|
|
35
35
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explicit.d.ts","sourceRoot":"","sources":["../../../src/signers/session/explicit.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"explicit.d.ts","sourceRoot":"","sources":["../../../src/signers/session/explicit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAC/G,OAAO,EAA8B,OAAO,EAAe,GAAG,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;AACpF,OAAO,EAAiB,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEvF,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;AAI1E,qBAAa,QAAS,YAAW,qBAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,SAAgB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxC,SAAgB,kBAAkB,EAAE,UAAU,CAAC,kBAAkB,CAAA;gBAErD,UAAU,EAAE,GAAG,CAAC,GAAG,GAAG,OAAO,EAAE,kBAAkB,EAAE,cAAc;IAS7E,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,qBAAqB;IA+C1F,uBAAuB,CAC3B,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,qBAAqB,EAAE,OAAO,CAAC,OAAO,EACtC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAC3B,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;IAmC7C,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,iBAAiB;IAYnB,kBAAkB,CACtB,UAAU,EAAE,UAAU,CAAC,UAAU,EACjC,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,qBAAqB,EAAE,OAAO,CAAC,OAAO,EACtC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAC3B,OAAO,CAAC,OAAO,CAAC;IAsDb,aAAa,CACjB,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,qBAAqB,EAAE,OAAO,CAAC,OAAO,EACtC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAC3B,OAAO,CAAC,OAAO,CAAC;IAiBb,QAAQ,CACZ,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,KAAK,EACtB,OAAO,EAAE,MAAM,EACf,qBAAqB,EAAE,OAAO,CAAC,OAAO,EACtC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAC3B,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;YAiCnC,qBAAqB;IAwB7B,iBAAiB,CACrB,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,EACrB,qBAAqB,EAAE,OAAO,CAAC,OAAO,EACtC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAC1B,OAAO,CAAC,UAAU,EAAE,CAAC;CA8EzB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Constants, Permission, SessionConfig, SessionSignature
|
|
1
|
+
import { Constants, Permission, SessionConfig, SessionSignature } from '@0xsequence/wallet-primitives';
|
|
2
2
|
import { AbiFunction, AbiParameters, Address, Bytes, Hash, Hex } from 'ox';
|
|
3
3
|
import { MemoryPkStore } from '../pk/index.js';
|
|
4
4
|
const VALUE_TRACKING_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';
|
|
@@ -220,7 +220,7 @@ export class Explicit {
|
|
|
220
220
|
}
|
|
221
221
|
// Extract the masked value
|
|
222
222
|
const callDataValue = Bytes.padRight(Bytes.fromHex(call.data).slice(Number(rule.offset), Number(rule.offset) + 32), 32);
|
|
223
|
-
|
|
223
|
+
const value = callDataValue.map((b, i) => b & rule.mask[i]);
|
|
224
224
|
if (Bytes.toBigInt(value) === 0n)
|
|
225
225
|
continue;
|
|
226
226
|
// Add to list
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implicit.d.ts","sourceRoot":"","sources":["../../../src/signers/session/implicit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"implicit.d.ts","sourceRoot":"","sources":["../../../src/signers/session/implicit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,SAAS,IAAI,iBAAiB,EAC9B,aAAa,EACb,gBAAgB,EACjB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAe,OAAO,EAAS,GAAG,EAAE,QAAQ,EAAwB,MAAM,IAAI,CAAA;AACrF,OAAO,EAAiB,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAE3E,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAA;AAE/E,qBAAa,QAAS,YAAW,qBAAqB;IAOlD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IARlC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAuB;IAC1D,SAAgB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;gBAGtC,UAAU,EAAE,GAAG,CAAC,GAAG,GAAG,OAAO,EACZ,YAAY,EAAE,WAAW,CAAC,WAAW,EACtD,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EACjC,eAAe,EAAE,OAAO,CAAC,OAAO;IAcnD,IAAI,cAAc,IAAI,OAAO,CAAC,OAAO,CAKpC;IAED,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,qBAAqB;IAa3F,aAAa,CACjB,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,sBAAsB,EAAE,OAAO,CAAC,OAAO,EACvC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAC3B,OAAO,CAAC,OAAO,CAAC;IAyCb,QAAQ,CACZ,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,KAAK,EACtB,OAAO,EAAE,MAAM,EACf,qBAAqB,EAAE,OAAO,CAAC,OAAO,EACtC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAC3B,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;CAclD"}
|
|
@@ -73,7 +73,7 @@ export class Implicit {
|
|
|
73
73
|
const expectedResult = Bytes.toHex(Attestation.generateImplicitRequestMagic(this._attestation, wallet));
|
|
74
74
|
return acceptImplicitRequest === expectedResult;
|
|
75
75
|
}
|
|
76
|
-
catch
|
|
76
|
+
catch {
|
|
77
77
|
// console.log('implicit signer unsupported call', call, error)
|
|
78
78
|
return false;
|
|
79
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/state/local/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/state/local/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,7 +83,7 @@ export class Provider {
|
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
85
85
|
async getConfigurationUpdates(wallet, fromImageHash, options) {
|
|
86
|
-
|
|
86
|
+
const fromConfig = await this.store.loadConfig(fromImageHash);
|
|
87
87
|
if (!fromConfig) {
|
|
88
88
|
return [];
|
|
89
89
|
}
|
|
@@ -219,12 +219,13 @@ export class Provider {
|
|
|
219
219
|
}
|
|
220
220
|
if (Signature.isSignatureOfSapientSignerLeaf(topology.signature)) {
|
|
221
221
|
switch (topology.signature.address.toLowerCase()) {
|
|
222
|
-
case this.extensions.passkeys.toLowerCase():
|
|
222
|
+
case this.extensions.passkeys.toLowerCase(): {
|
|
223
223
|
const decoded = Extensions.Passkeys.decode(Bytes.fromHex(topology.signature.data));
|
|
224
224
|
if (!Extensions.Passkeys.isValidSignature(subdigest, decoded)) {
|
|
225
225
|
throw new Error('Invalid passkey signature');
|
|
226
226
|
}
|
|
227
227
|
return this.store.saveSapientSignatureOfSubdigest(topology.signature.address, subdigest, Extensions.Passkeys.rootFor(decoded.publicKey), topology.signature);
|
|
228
|
+
}
|
|
228
229
|
default:
|
|
229
230
|
throw new Error(`Unsupported sapient signer: ${topology.signature.address}`);
|
|
230
231
|
}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Context, Payload, Signature, Config, GenericTree } from '@0xsequence/wallet-primitives';
|
|
2
2
|
import { Address, Hex } from 'ox';
|
|
3
|
+
import type { CoreEnv } from '../../env.js';
|
|
3
4
|
import { Store } from './index.js';
|
|
4
5
|
export declare class IndexedDbStore implements Store {
|
|
6
|
+
private readonly env?;
|
|
5
7
|
private _db;
|
|
6
8
|
private dbName;
|
|
7
|
-
constructor(dbName?: string);
|
|
9
|
+
constructor(dbName?: string, env?: CoreEnv | undefined);
|
|
10
|
+
private getIndexedDB;
|
|
8
11
|
private openDB;
|
|
9
12
|
private get;
|
|
10
13
|
private put;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexed-db.d.ts","sourceRoot":"","sources":["../../../src/state/local/indexed-db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChG,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAYlC,qBAAa,cAAe,YAAW,KAAK;
|
|
1
|
+
{"version":3,"file":"indexed-db.d.ts","sourceRoot":"","sources":["../../../src/state/local/indexed-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,16 +8,26 @@ const STORE_SAPIENT_SIGNER_SUBDIGESTS = 'sapientSignerSubdigests';
|
|
|
8
8
|
const STORE_SAPIENT_SIGNATURES = 'sapientSignatures';
|
|
9
9
|
const STORE_TREES = 'trees';
|
|
10
10
|
export class IndexedDbStore {
|
|
11
|
+
env;
|
|
11
12
|
_db = null;
|
|
12
13
|
dbName;
|
|
13
|
-
constructor(dbName = 'sequence-indexeddb') {
|
|
14
|
+
constructor(dbName = 'sequence-indexeddb', env) {
|
|
15
|
+
this.env = env;
|
|
14
16
|
this.dbName = dbName;
|
|
15
17
|
}
|
|
18
|
+
getIndexedDB() {
|
|
19
|
+
const globalObj = globalThis;
|
|
20
|
+
const indexedDb = this.env?.indexedDB ?? globalObj.indexedDB ?? globalObj.window?.indexedDB;
|
|
21
|
+
if (!indexedDb) {
|
|
22
|
+
throw new Error('indexedDB is not available');
|
|
23
|
+
}
|
|
24
|
+
return indexedDb;
|
|
25
|
+
}
|
|
16
26
|
async openDB() {
|
|
17
27
|
if (this._db)
|
|
18
28
|
return this._db;
|
|
19
29
|
return new Promise((resolve, reject) => {
|
|
20
|
-
const request =
|
|
30
|
+
const request = this.getIndexedDB().open(this.dbName, DB_VERSION);
|
|
21
31
|
request.onupgradeneeded = () => {
|
|
22
32
|
const db = request.result;
|
|
23
33
|
if (!db.objectStoreNames.contains(STORE_CONFIGS)) {
|
|
@@ -3,7 +3,8 @@ import { Config, Context, GenericTree, Payload, Signature } from '@0xsequence/wa
|
|
|
3
3
|
import { Provider } from '../index.js';
|
|
4
4
|
export declare class DevHttpProvider implements Provider {
|
|
5
5
|
private readonly baseUrl;
|
|
6
|
-
|
|
6
|
+
private readonly fetcher;
|
|
7
|
+
constructor(baseUrl: string, fetcher?: typeof fetch);
|
|
7
8
|
private request;
|
|
8
9
|
getConfiguration(imageHash: Hex.Hex): Promise<Config.Config | undefined>;
|
|
9
10
|
getDeploy(wallet: Address.Address): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-http.d.ts","sourceRoot":"","sources":["../../../src/state/remote/dev-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAS,MAAM,+BAA+B,CAAA;AACvG,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;
|
|
1
|
+
{"version":3,"file":"dev-http.d.ts","sourceRoot":"","sources":["../../../src/state/remote/dev-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { Utils } from '@0xsequence/wallet-primitives';
|
|
2
2
|
export class DevHttpProvider {
|
|
3
3
|
baseUrl;
|
|
4
|
-
|
|
4
|
+
fetcher;
|
|
5
|
+
constructor(baseUrl, fetcher) {
|
|
5
6
|
// Remove trailing slash if present
|
|
6
7
|
this.baseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
|
|
8
|
+
const resolvedFetch = fetcher ?? globalThis.fetch;
|
|
9
|
+
if (!resolvedFetch) {
|
|
10
|
+
throw new Error('fetch is not available');
|
|
11
|
+
}
|
|
12
|
+
this.fetcher = resolvedFetch;
|
|
7
13
|
}
|
|
8
14
|
async request(method, path, body) {
|
|
9
15
|
const url = `${this.baseUrl}${path}`;
|
|
@@ -17,7 +23,7 @@ export class DevHttpProvider {
|
|
|
17
23
|
}
|
|
18
24
|
let response;
|
|
19
25
|
try {
|
|
20
|
-
response = await
|
|
26
|
+
response = await this.fetcher(url, options);
|
|
21
27
|
}
|
|
22
28
|
catch (networkError) {
|
|
23
29
|
// Handle immediate network errors (e.g., DNS resolution failure, refused connection)
|
|
@@ -32,13 +38,13 @@ export class DevHttpProvider {
|
|
|
32
38
|
const errorJson = await Utils.fromJSON(errorText);
|
|
33
39
|
errorPayload = { ...errorPayload, ...errorJson };
|
|
34
40
|
}
|
|
35
|
-
catch
|
|
41
|
+
catch {
|
|
36
42
|
try {
|
|
37
43
|
// If JSON parsing fails, try getting text for better error message
|
|
38
44
|
const errorText = await response.text();
|
|
39
45
|
errorPayload.body = errorText;
|
|
40
46
|
}
|
|
41
|
-
catch
|
|
47
|
+
catch {
|
|
42
48
|
// Ignore if reading text also fails
|
|
43
49
|
}
|
|
44
50
|
}
|
|
@@ -91,7 +97,7 @@ export class DevHttpProvider {
|
|
|
91
97
|
const text = await response.text(); // Try reading original response if not already done
|
|
92
98
|
throw new Error(`Failed to parse JSON response from server. Status: ${response.status}. Body: "${text}". Original error: ${error instanceof Error ? error.message : String(error)}`);
|
|
93
99
|
}
|
|
94
|
-
catch
|
|
100
|
+
catch {
|
|
95
101
|
throw new Error(`Failed to parse JSON response from server and could not read response body as text. Status: ${response.status}. Original error: ${error instanceof Error ? error.message : String(error)}`);
|
|
96
102
|
}
|
|
97
103
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Config, Context, GenericTree, Payload, Signature } from '@0xsequence/wallet-primitives';
|
|
2
2
|
import { Address, Hex } from 'ox';
|
|
3
3
|
import { Provider as ProviderInterface } from '../index.js';
|
|
4
|
+
import { type Fetch } from './sessions.gen.js';
|
|
4
5
|
export declare class Provider implements ProviderInterface {
|
|
5
6
|
private readonly service;
|
|
6
|
-
constructor(host?: string);
|
|
7
|
+
constructor(host?: string, fetcher?: Fetch);
|
|
7
8
|
getConfiguration(imageHash: Hex.Hex): Promise<Config.Config | undefined>;
|
|
8
9
|
getDeploy(wallet: Address.Address): Promise<{
|
|
9
10
|
imageHash: Hex.Hex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/state/sequence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,OAAO,EAAc,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACvH,OAAO,EAEL,OAAO,EAEP,GAAG,EAIJ,MAAM,IAAI,CAAA;AACX,OAAO,EAAwB,QAAQ,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/state/sequence/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,12 @@ import { normalizeAddressKeys } from '../index.js';
|
|
|
4
4
|
import { Sessions, SignatureType } from './sessions.gen.js';
|
|
5
5
|
export class Provider {
|
|
6
6
|
service;
|
|
7
|
-
constructor(host = 'https://keymachine.sequence.app') {
|
|
8
|
-
|
|
7
|
+
constructor(host = 'https://keymachine.sequence.app', fetcher) {
|
|
8
|
+
const resolvedFetch = fetcher ?? globalThis.fetch;
|
|
9
|
+
if (!resolvedFetch) {
|
|
10
|
+
throw new Error('fetch is not available');
|
|
11
|
+
}
|
|
12
|
+
this.service = new Sessions(host, resolvedFetch);
|
|
9
13
|
}
|
|
10
14
|
async getConfiguration(imageHash) {
|
|
11
15
|
const { version, config } = await this.service.config({ imageHash });
|
|
@@ -135,7 +139,9 @@ export class Provider {
|
|
|
135
139
|
throw new Error(`unexpected compact sapient signature by ${signer}`);
|
|
136
140
|
}
|
|
137
141
|
}
|
|
138
|
-
catch {
|
|
142
|
+
catch {
|
|
143
|
+
// ignore
|
|
144
|
+
}
|
|
139
145
|
}
|
|
140
146
|
async getWitnessForSapient(wallet, signer, imageHash) {
|
|
141
147
|
try {
|
|
@@ -162,7 +168,9 @@ export class Provider {
|
|
|
162
168
|
};
|
|
163
169
|
}
|
|
164
170
|
}
|
|
165
|
-
catch {
|
|
171
|
+
catch {
|
|
172
|
+
// ignore
|
|
173
|
+
}
|
|
166
174
|
}
|
|
167
175
|
async getConfigurationUpdates(wallet, fromImageHash, options) {
|
|
168
176
|
const { updates } = await this.service.configUpdates({ wallet, fromImageHash, allUpdates: options?.allUpdates });
|
|
@@ -280,7 +288,7 @@ const recoverSapientSignatureCompactFunction = AbiFunction.from(recoverSapientSi
|
|
|
280
288
|
class PasskeySignatureValidator {
|
|
281
289
|
request = (async (request) => {
|
|
282
290
|
switch (request.method) {
|
|
283
|
-
case 'eth_call':
|
|
291
|
+
case 'eth_call': {
|
|
284
292
|
if (!request.params || !Array.isArray(request.params) || request.params.length === 0) {
|
|
285
293
|
throw new Error('eth_call requires transaction parameters');
|
|
286
294
|
}
|
|
@@ -299,6 +307,7 @@ class PasskeySignatureValidator {
|
|
|
299
307
|
else {
|
|
300
308
|
throw new Error(`invalid passkey signature ${signature} for digest ${digest}`);
|
|
301
309
|
}
|
|
310
|
+
}
|
|
302
311
|
default:
|
|
303
312
|
throw new Error(`method ${request.method} not implemented`);
|
|
304
313
|
}
|
package/dist/wallet.js
CHANGED
|
@@ -253,7 +253,7 @@ export class Wallet {
|
|
|
253
253
|
if (!status.context.capabilities?.erc4337?.entrypoint) {
|
|
254
254
|
throw new Error('4337 is not enabled in this wallet');
|
|
255
255
|
}
|
|
256
|
-
const noncePromise = this.get4337Nonce(provider, status.context.capabilities
|
|
256
|
+
const noncePromise = this.get4337Nonce(provider, status.context.capabilities.erc4337.entrypoint, space);
|
|
257
257
|
// If the wallet is not deployed, then we need to include the initCode on
|
|
258
258
|
// the 4337 transaction
|
|
259
259
|
let factory;
|
|
@@ -425,7 +425,7 @@ export class Wallet {
|
|
|
425
425
|
encodedMessage = TypedData.encode(message);
|
|
426
426
|
}
|
|
427
427
|
else {
|
|
428
|
-
|
|
428
|
+
const hexMessage = Hex.validate(message) ? message : Hex.fromString(message);
|
|
429
429
|
const messageSize = Hex.size(hexMessage);
|
|
430
430
|
encodedMessage = Hex.concat(Hex.fromString(`${`\x19Ethereum Signed Message:\n${messageSize}`}`), hexMessage);
|
|
431
431
|
}
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { config as baseConfig } from '@repo/eslint-config/base'
|
|
2
|
+
|
|
3
|
+
/** @type {import("eslint").Linter.Config} */
|
|
4
|
+
export default [
|
|
5
|
+
...baseConfig,
|
|
6
|
+
{
|
|
7
|
+
// files: ['**/*.{test,spec}.ts'],
|
|
8
|
+
rules: {
|
|
9
|
+
'@typescript-eslint/no-explicit-any': 'off',
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0xsequence/wallet-core",
|
|
3
|
-
"version": "3.0.0
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -14,21 +14,22 @@
|
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"@types/node": "^25.0
|
|
18
|
-
"@vitest/coverage-v8": "^4.0.
|
|
19
|
-
"dotenv": "^17.
|
|
17
|
+
"@types/node": "^25.3.0",
|
|
18
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
19
|
+
"dotenv": "^17.3.1",
|
|
20
20
|
"fake-indexeddb": "^6.2.5",
|
|
21
21
|
"typescript": "^5.9.3",
|
|
22
|
-
"vitest": "^4.0.
|
|
23
|
-
"@repo/
|
|
22
|
+
"vitest": "^4.0.18",
|
|
23
|
+
"@repo/eslint-config": "^0.0.1",
|
|
24
|
+
"@repo/typescript-config": "^0.0.1"
|
|
24
25
|
},
|
|
25
26
|
"dependencies": {
|
|
26
27
|
"mipd": "^0.0.7",
|
|
27
28
|
"ox": "^0.9.17",
|
|
28
29
|
"viem": "^2.40.3",
|
|
29
|
-
"@0xsequence/
|
|
30
|
-
"@0xsequence/
|
|
31
|
-
"@0xsequence/relayer": "^3.0.0
|
|
30
|
+
"@0xsequence/guard": "^3.0.0",
|
|
31
|
+
"@0xsequence/wallet-primitives": "^3.0.0",
|
|
32
|
+
"@0xsequence/relayer": "^3.0.0"
|
|
32
33
|
},
|
|
33
34
|
"scripts": {
|
|
34
35
|
"build": "tsc",
|
|
@@ -36,6 +37,7 @@
|
|
|
36
37
|
"test": "vitest run",
|
|
37
38
|
"test:coverage": "vitest run --coverage",
|
|
38
39
|
"typecheck": "tsc --noEmit",
|
|
39
|
-
"clean": "rimraf dist"
|
|
40
|
+
"clean": "rimraf dist",
|
|
41
|
+
"lint": "eslint . --max-warnings 0"
|
|
40
42
|
}
|
|
41
43
|
}
|
|
@@ -16,16 +16,22 @@ type PimlicoGasPrice = {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export class PimlicoBundler implements Bundler {
|
|
19
|
-
public readonly kind
|
|
19
|
+
public readonly kind = 'bundler'
|
|
20
20
|
public readonly id: string
|
|
21
21
|
|
|
22
22
|
public readonly provider: Provider.Provider
|
|
23
23
|
public readonly bundlerRpcUrl: string
|
|
24
|
+
private readonly fetcher: typeof fetch
|
|
24
25
|
|
|
25
|
-
constructor(bundlerRpcUrl: string, provider: Provider.Provider | string) {
|
|
26
|
+
constructor(bundlerRpcUrl: string, provider: Provider.Provider | string, fetcher?: typeof fetch) {
|
|
26
27
|
this.id = `pimlico-erc4337-${bundlerRpcUrl}`
|
|
27
28
|
this.provider = typeof provider === 'string' ? Provider.from(RpcTransport.fromHttp(provider)) : provider
|
|
28
29
|
this.bundlerRpcUrl = bundlerRpcUrl
|
|
30
|
+
const resolvedFetch = fetcher ?? (globalThis as any).fetch
|
|
31
|
+
if (!resolvedFetch) {
|
|
32
|
+
throw new Error('fetch is not available')
|
|
33
|
+
}
|
|
34
|
+
this.fetcher = resolvedFetch
|
|
29
35
|
}
|
|
30
36
|
|
|
31
37
|
async isAvailable(entrypoint: Address.Address, chainId: number): Promise<boolean> {
|
|
@@ -113,7 +119,7 @@ export class PimlicoBundler implements Bundler {
|
|
|
113
119
|
let pimlico: PimlicoStatusResp | undefined
|
|
114
120
|
try {
|
|
115
121
|
pimlico = await this.bundlerRpc<PimlicoStatusResp>('pimlico_getUserOperationStatus', [opHash])
|
|
116
|
-
} catch
|
|
122
|
+
} catch {
|
|
117
123
|
/* ignore - not Pimlico or endpoint down */
|
|
118
124
|
}
|
|
119
125
|
|
|
@@ -165,7 +171,7 @@ export class PimlicoBundler implements Bundler {
|
|
|
165
171
|
|
|
166
172
|
private async bundlerRpc<T>(method: string, params: any[]): Promise<T> {
|
|
167
173
|
const body = JSON.stringify({ jsonrpc: '2.0', id: 1, method, params })
|
|
168
|
-
const res = await
|
|
174
|
+
const res = await this.fetcher(this.bundlerRpcUrl, {
|
|
169
175
|
method: 'POST',
|
|
170
176
|
headers: { 'content-type': 'application/json' },
|
|
171
177
|
body,
|