@0xsequence/wallet-core 3.0.0-beta.9 → 3.0.1
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-test.log +290 -0
- package/.turbo/turbo-typecheck.log +4 -0
- package/CHANGELOG.md +158 -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 +5 -8
- package/dist/signers/session/implicit.d.ts.map +1 -1
- package/dist/signers/session/implicit.js +1 -1
- package/dist/signers/session/session.d.ts +1 -0
- package/dist/signers/session/session.d.ts.map +1 -1
- package/dist/signers/session/session.js +7 -0
- package/dist/signers/session-manager.d.ts +4 -0
- package/dist/signers/session-manager.d.ts.map +1 -1
- package/dist/signers/session-manager.js +65 -22
- 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 +5 -20
- package/src/signers/session/implicit.ts +1 -2
- package/src/signers/session/session.ts +10 -2
- package/src/signers/session-manager.ts +82 -25
- 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 +4 -0
- package/test/envelope.test.ts +0 -1
- package/test/session-manager.test.ts +345 -3
- 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 +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.
|
|
3
|
+
"version": "3.0.1",
|
|
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/
|
|
30
|
+
"@0xsequence/relayer": "^3.0.1",
|
|
31
|
+
"@0xsequence/wallet-primitives": "^3.0.1",
|
|
32
|
+
"@0xsequence/guard": "^3.0.1"
|
|
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,
|
package/src/env.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export type StorageLike = {
|
|
2
|
+
getItem: (key: string) => string | null
|
|
3
|
+
setItem: (key: string, value: string) => void
|
|
4
|
+
removeItem: (key: string) => void
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export type CryptoLike = {
|
|
8
|
+
subtle: SubtleCrypto
|
|
9
|
+
getRandomValues: <T extends ArrayBufferView>(array: T) => T
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type TextEncodingLike = {
|
|
13
|
+
TextEncoder: typeof TextEncoder
|
|
14
|
+
TextDecoder: typeof TextDecoder
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type CoreEnv = {
|
|
18
|
+
fetch?: typeof fetch
|
|
19
|
+
crypto?: CryptoLike
|
|
20
|
+
storage?: StorageLike
|
|
21
|
+
indexedDB?: IDBFactory
|
|
22
|
+
text?: Partial<TextEncodingLike>
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function isStorageLike(value: unknown): value is StorageLike {
|
|
26
|
+
if (!value || typeof value !== 'object') return false
|
|
27
|
+
const candidate = value as StorageLike
|
|
28
|
+
return (
|
|
29
|
+
typeof candidate.getItem === 'function' &&
|
|
30
|
+
typeof candidate.setItem === 'function' &&
|
|
31
|
+
typeof candidate.removeItem === 'function'
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function resolveCoreEnv(env?: CoreEnv): CoreEnv {
|
|
36
|
+
const globalObj = globalThis as any
|
|
37
|
+
const windowObj = typeof window !== 'undefined' ? window : (globalObj.window ?? {})
|
|
38
|
+
let storage: StorageLike | undefined
|
|
39
|
+
let text: Partial<TextEncodingLike> | undefined
|
|
40
|
+
|
|
41
|
+
if (isStorageLike(env?.storage)) {
|
|
42
|
+
storage = env.storage
|
|
43
|
+
} else if (isStorageLike(windowObj.localStorage)) {
|
|
44
|
+
storage = windowObj.localStorage
|
|
45
|
+
} else if (isStorageLike(globalObj.localStorage)) {
|
|
46
|
+
storage = globalObj.localStorage
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (env?.text) {
|
|
50
|
+
if (!env.text.TextEncoder || !env.text.TextDecoder) {
|
|
51
|
+
throw new Error('env.text must provide both TextEncoder and TextDecoder')
|
|
52
|
+
}
|
|
53
|
+
text = env.text
|
|
54
|
+
} else {
|
|
55
|
+
text = {
|
|
56
|
+
TextEncoder: windowObj.TextEncoder ?? globalObj.TextEncoder,
|
|
57
|
+
TextDecoder: windowObj.TextDecoder ?? globalObj.TextDecoder,
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
fetch: env?.fetch ?? windowObj.fetch ?? globalObj.fetch,
|
|
63
|
+
crypto: env?.crypto ?? windowObj.crypto ?? globalObj.crypto,
|
|
64
|
+
storage,
|
|
65
|
+
indexedDB: env?.indexedDB ?? windowObj.indexedDB ?? globalObj.indexedDB,
|
|
66
|
+
text,
|
|
67
|
+
}
|
|
68
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -5,6 +5,7 @@ export * as State from './state/index.js'
|
|
|
5
5
|
export * as Bundler from './bundler/index.js'
|
|
6
6
|
export * as Envelope from './envelope.js'
|
|
7
7
|
export * as Utils from './utils/index.js'
|
|
8
|
+
export * from './env.js'
|
|
8
9
|
export {
|
|
9
10
|
type ExplicitSessionConfig,
|
|
10
11
|
type ExplicitSession,
|
package/src/signers/index.ts
CHANGED
|
@@ -31,7 +31,7 @@ export interface SapientSigner {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
export interface Witnessable {
|
|
34
|
-
witness: (stateWriter: State.Writer, wallet: Address.Address, extra?:
|
|
34
|
+
witness: (stateWriter: State.Writer, wallet: Address.Address, extra?: object) => Promise<void>
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
type MaybePromise<T> = T | Promise<T>
|
package/src/signers/passkey.ts
CHANGED
|
@@ -5,12 +5,15 @@ import { WebAuthnP256 } from 'ox'
|
|
|
5
5
|
import { State } from '../index.js'
|
|
6
6
|
import { SapientSigner, Witnessable } from './index.js'
|
|
7
7
|
|
|
8
|
+
export type WebAuthnLike = Pick<typeof WebAuthnP256, 'createCredential' | 'sign'>
|
|
9
|
+
|
|
8
10
|
export type PasskeyOptions = {
|
|
9
11
|
extensions: Pick<Extensions.Extensions, 'passkeys'>
|
|
10
12
|
publicKey: Extensions.Passkeys.PublicKey
|
|
11
13
|
credentialId: string
|
|
12
14
|
embedMetadata?: boolean
|
|
13
15
|
metadata?: Extensions.Passkeys.PasskeyMetadata
|
|
16
|
+
webauthn?: WebAuthnLike
|
|
14
17
|
}
|
|
15
18
|
|
|
16
19
|
export type CreatePasskeyOptions = {
|
|
@@ -18,6 +21,11 @@ export type CreatePasskeyOptions = {
|
|
|
18
21
|
requireUserVerification?: boolean
|
|
19
22
|
credentialName?: string
|
|
20
23
|
embedMetadata?: boolean
|
|
24
|
+
webauthn?: WebAuthnLike
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type FindPasskeyOptions = {
|
|
28
|
+
webauthn?: WebAuthnLike
|
|
21
29
|
}
|
|
22
30
|
|
|
23
31
|
export type WitnessMessage = {
|
|
@@ -45,6 +53,7 @@ export class Passkey implements SapientSigner, Witnessable {
|
|
|
45
53
|
public readonly imageHash: Hex.Hex
|
|
46
54
|
public readonly embedMetadata: boolean
|
|
47
55
|
public readonly metadata?: Extensions.Passkeys.PasskeyMetadata
|
|
56
|
+
private readonly webauthn: WebAuthnLike
|
|
48
57
|
|
|
49
58
|
constructor(options: PasskeyOptions) {
|
|
50
59
|
this.address = options.extensions.passkeys
|
|
@@ -53,6 +62,7 @@ export class Passkey implements SapientSigner, Witnessable {
|
|
|
53
62
|
this.embedMetadata = options.embedMetadata ?? false
|
|
54
63
|
this.imageHash = Extensions.Passkeys.rootFor(options.publicKey)
|
|
55
64
|
this.metadata = options.metadata
|
|
65
|
+
this.webauthn = options.webauthn ?? WebAuthnP256
|
|
56
66
|
}
|
|
57
67
|
|
|
58
68
|
static async loadFromWitness(
|
|
@@ -60,6 +70,7 @@ export class Passkey implements SapientSigner, Witnessable {
|
|
|
60
70
|
extensions: Pick<Extensions.Extensions, 'passkeys'>,
|
|
61
71
|
wallet: Address.Address,
|
|
62
72
|
imageHash: Hex.Hex,
|
|
73
|
+
options?: FindPasskeyOptions,
|
|
63
74
|
) {
|
|
64
75
|
// In the witness we will find the public key, and may find the credential id
|
|
65
76
|
const witness = await stateReader.getWitnessForSapient(wallet, extensions.passkeys, imageHash)
|
|
@@ -90,13 +101,15 @@ export class Passkey implements SapientSigner, Witnessable {
|
|
|
90
101
|
publicKey: message.publicKey,
|
|
91
102
|
embedMetadata: decodedSignature.embedMetadata,
|
|
92
103
|
metadata,
|
|
104
|
+
webauthn: options?.webauthn,
|
|
93
105
|
})
|
|
94
106
|
}
|
|
95
107
|
|
|
96
108
|
static async create(extensions: Pick<Extensions.Extensions, 'passkeys'>, options?: CreatePasskeyOptions) {
|
|
109
|
+
const webauthn = options?.webauthn ?? WebAuthnP256
|
|
97
110
|
const name = options?.credentialName ?? `Sequence (${Date.now()})`
|
|
98
111
|
|
|
99
|
-
const credential = await
|
|
112
|
+
const credential = await webauthn.createCredential({
|
|
100
113
|
user: {
|
|
101
114
|
name,
|
|
102
115
|
},
|
|
@@ -120,6 +133,7 @@ export class Passkey implements SapientSigner, Witnessable {
|
|
|
120
133
|
},
|
|
121
134
|
embedMetadata: options?.embedMetadata,
|
|
122
135
|
metadata,
|
|
136
|
+
webauthn,
|
|
123
137
|
})
|
|
124
138
|
|
|
125
139
|
if (options?.stateProvider) {
|
|
@@ -132,8 +146,10 @@ export class Passkey implements SapientSigner, Witnessable {
|
|
|
132
146
|
static async find(
|
|
133
147
|
stateReader: State.Reader,
|
|
134
148
|
extensions: Pick<Extensions.Extensions, 'passkeys'>,
|
|
149
|
+
options?: FindPasskeyOptions,
|
|
135
150
|
): Promise<Passkey | undefined> {
|
|
136
|
-
const
|
|
151
|
+
const webauthn = options?.webauthn ?? WebAuthnP256
|
|
152
|
+
const response = await webauthn.sign({ challenge: Hex.random(32) })
|
|
137
153
|
if (!response.raw) throw new Error('No credential returned')
|
|
138
154
|
|
|
139
155
|
const authenticatorDataBytes = Bytes.fromHex(response.metadata.authenticatorData)
|
|
@@ -218,7 +234,7 @@ export class Passkey implements SapientSigner, Witnessable {
|
|
|
218
234
|
console.warn('Multiple signers found for passkey', flattened)
|
|
219
235
|
}
|
|
220
236
|
|
|
221
|
-
return Passkey.loadFromWitness(stateReader, extensions, flattened[0]!.wallet, flattened[0]!.imageHash)
|
|
237
|
+
return Passkey.loadFromWitness(stateReader, extensions, flattened[0]!.wallet, flattened[0]!.imageHash, options)
|
|
222
238
|
}
|
|
223
239
|
|
|
224
240
|
async signSapient(
|
|
@@ -234,7 +250,7 @@ export class Passkey implements SapientSigner, Witnessable {
|
|
|
234
250
|
|
|
235
251
|
const challenge = Hex.fromBytes(Payload.hash(wallet, chainId, payload))
|
|
236
252
|
|
|
237
|
-
const response = await
|
|
253
|
+
const response = await this.webauthn.sign({
|
|
238
254
|
challenge,
|
|
239
255
|
credentialId: this.credentialId,
|
|
240
256
|
userVerification: this.publicKey.requireUserVerification ? 'required' : 'discouraged',
|
|
@@ -260,7 +276,7 @@ export class Passkey implements SapientSigner, Witnessable {
|
|
|
260
276
|
}
|
|
261
277
|
}
|
|
262
278
|
|
|
263
|
-
async witness(stateWriter: State.Writer, wallet: Address.Address, extra?:
|
|
279
|
+
async witness(stateWriter: State.Writer, wallet: Address.Address, extra?: object): Promise<void> {
|
|
264
280
|
const payload = Payload.fromMessage(
|
|
265
281
|
Hex.fromString(
|
|
266
282
|
JSON.stringify({
|