@0xsequence/wallet-wdk 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 +170 -0
- package/dist/dbs/auth-commitments.d.ts.map +1 -1
- package/dist/dbs/auth-keys.d.ts +3 -1
- package/dist/dbs/auth-keys.d.ts.map +1 -1
- package/dist/dbs/auth-keys.js +16 -4
- package/dist/dbs/messages.d.ts.map +1 -1
- package/dist/dbs/passkey-credentials.d.ts.map +1 -1
- package/dist/dbs/recovery.d.ts.map +1 -1
- package/dist/dbs/signatures.d.ts.map +1 -1
- package/dist/dbs/transactions.d.ts.map +1 -1
- package/dist/dbs/wallets.d.ts.map +1 -1
- package/dist/env.d.ts +22 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +30 -0
- package/dist/identity/signer.d.ts +5 -4
- package/dist/identity/signer.d.ts.map +1 -1
- package/dist/identity/signer.js +11 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/sequence/cron.d.ts +3 -0
- package/dist/sequence/cron.d.ts.map +1 -1
- package/dist/sequence/cron.js +72 -39
- package/dist/sequence/handlers/authcode-pkce.d.ts +2 -1
- package/dist/sequence/handlers/authcode-pkce.d.ts.map +1 -1
- package/dist/sequence/handlers/authcode-pkce.js +4 -4
- package/dist/sequence/handlers/authcode.d.ts +4 -1
- package/dist/sequence/handlers/authcode.d.ts.map +1 -1
- package/dist/sequence/handlers/authcode.js +23 -6
- package/dist/sequence/handlers/devices.d.ts +1 -1
- package/dist/sequence/handlers/devices.d.ts.map +1 -1
- package/dist/sequence/handlers/devices.js +1 -1
- package/dist/sequence/handlers/guard.d.ts +1 -1
- package/dist/sequence/handlers/guard.d.ts.map +1 -1
- package/dist/sequence/handlers/guard.js +22 -19
- package/dist/sequence/handlers/identity.d.ts +3 -1
- package/dist/sequence/handlers/identity.d.ts.map +1 -1
- package/dist/sequence/handlers/identity.js +14 -7
- package/dist/sequence/handlers/mnemonic.d.ts.map +1 -1
- package/dist/sequence/handlers/mnemonic.js +21 -18
- package/dist/sequence/handlers/otp.d.ts +2 -1
- package/dist/sequence/handlers/otp.d.ts.map +1 -1
- package/dist/sequence/handlers/otp.js +4 -3
- package/dist/sequence/handlers/passkeys.d.ts +6 -4
- package/dist/sequence/handlers/passkeys.d.ts.map +1 -1
- package/dist/sequence/handlers/passkeys.js +8 -5
- package/dist/sequence/handlers/recovery.js +1 -1
- package/dist/sequence/index.d.ts +2 -0
- package/dist/sequence/index.d.ts.map +1 -1
- package/dist/sequence/index.js +1 -0
- package/dist/sequence/manager.d.ts +67 -55
- package/dist/sequence/manager.d.ts.map +1 -1
- package/dist/sequence/manager.js +77 -17
- package/dist/sequence/messages.js +1 -1
- package/dist/sequence/passkeys-provider.d.ts +24 -0
- package/dist/sequence/passkeys-provider.d.ts.map +1 -0
- package/dist/sequence/passkeys-provider.js +15 -0
- package/dist/sequence/recovery.d.ts +2 -0
- package/dist/sequence/recovery.d.ts.map +1 -1
- package/dist/sequence/recovery.js +100 -34
- package/dist/sequence/signers.d.ts.map +1 -1
- package/dist/sequence/signers.js +3 -1
- package/dist/sequence/transactions.d.ts.map +1 -1
- package/dist/sequence/transactions.js +5 -2
- package/dist/sequence/wallets.d.ts +2 -1
- package/dist/sequence/wallets.d.ts.map +1 -1
- package/dist/sequence/wallets.js +32 -22
- package/eslint.config.js +12 -0
- package/package.json +16 -14
- package/src/dbs/auth-commitments.ts +1 -1
- package/src/dbs/auth-keys.ts +20 -6
- package/src/dbs/messages.ts +1 -1
- package/src/dbs/passkey-credentials.ts +1 -1
- package/src/dbs/recovery.ts +1 -1
- package/src/dbs/signatures.ts +1 -1
- package/src/dbs/transactions.ts +1 -1
- package/src/dbs/wallets.ts +1 -1
- package/src/env.ts +58 -0
- package/src/identity/signer.ts +13 -7
- package/src/index.ts +1 -0
- package/src/sequence/cron.ts +75 -42
- package/src/sequence/handlers/authcode-pkce.ts +6 -4
- package/src/sequence/handlers/authcode.ts +26 -5
- package/src/sequence/handlers/devices.ts +1 -1
- package/src/sequence/handlers/guard.ts +6 -4
- package/src/sequence/handlers/identity.ts +18 -8
- package/src/sequence/handlers/mnemonic.ts +5 -3
- package/src/sequence/handlers/otp.ts +5 -3
- package/src/sequence/handlers/passkeys.ts +13 -13
- package/src/sequence/handlers/recovery.ts +1 -1
- package/src/sequence/index.ts +2 -0
- package/src/sequence/manager.ts +168 -14
- package/src/sequence/messages.ts +1 -1
- package/src/sequence/passkeys-provider.ts +55 -0
- package/src/sequence/recovery.ts +165 -56
- package/src/sequence/signers.ts +3 -1
- package/src/sequence/transactions.ts +6 -2
- package/src/sequence/wallets.ts +39 -25
- package/test/authcode-pkce.test.ts +2 -3
- package/test/authcode.test.ts +6 -8
- package/test/constants.ts +4 -2
- package/test/guard.test.ts +5 -5
- package/test/identity-signer.test.ts +1 -1
- package/test/otp.test.ts +1 -1
- package/test/passkeys.test.ts +1 -1
- package/test/recovery.test.ts +3 -3
- package/test/sessions.test.ts +1 -1
- package/test/{test-ssr-safety.mjs → test-ssr-safety.js} +143 -137
- package/test/transactions.test.ts +3 -3
- package/test/wallets.test.ts +5 -5
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { Envelope } from '@0xsequence/wallet-core';
|
|
2
2
|
import { Config, Constants, Extensions, GenericTree, Payload } from '@0xsequence/wallet-primitives';
|
|
3
|
-
import { Address, Provider, RpcTransport } from 'ox';
|
|
3
|
+
import { Abi, AbiFunction, Address, Hex, Provider, RpcTransport } from 'ox';
|
|
4
4
|
import { MnemonicHandler } from './handlers/mnemonic.js';
|
|
5
5
|
import { Actions } from './types/index.js';
|
|
6
6
|
import { Kinds } from './types/signer.js';
|
|
7
|
+
const AGGREGATE3 = Abi.from([
|
|
8
|
+
'function aggregate3((address target, bool allowFailure, bytes callData)[] calls) external payable returns ((bool success, bytes returnData)[])',
|
|
9
|
+
])[0];
|
|
7
10
|
export class Recovery {
|
|
8
11
|
shared;
|
|
9
12
|
constructor(shared) {
|
|
@@ -97,7 +100,7 @@ export class Recovery {
|
|
|
97
100
|
throw new Error('recovery-module-not-enabled');
|
|
98
101
|
}
|
|
99
102
|
await this.updateRecoveryModule(modules, (leaves) => {
|
|
100
|
-
const next = leaves.filter((l) => l.signer
|
|
103
|
+
const next = leaves.filter((l) => !Address.isEqual(l.signer, address));
|
|
101
104
|
if (next.length === 0) {
|
|
102
105
|
return [
|
|
103
106
|
{
|
|
@@ -264,9 +267,14 @@ export class Recovery {
|
|
|
264
267
|
async fetchQueuedPayloads(wallet, chainId) {
|
|
265
268
|
// Create providers for each network
|
|
266
269
|
const providers = this.shared.sequence.networks
|
|
267
|
-
.filter((network) =>
|
|
270
|
+
.filter((network) => chainId
|
|
271
|
+
? network.chainId === chainId
|
|
272
|
+
: !this.shared.sequence.defaultRecoverySettings.includeTestnets
|
|
273
|
+
? network.type !== 'testnet'
|
|
274
|
+
: true)
|
|
268
275
|
.map((network) => ({
|
|
269
276
|
chainId: network.chainId,
|
|
277
|
+
multicall3Address: network.contracts?.multicall3,
|
|
270
278
|
provider: Provider.from(RpcTransport.fromHttp(network.rpcUrl)),
|
|
271
279
|
}));
|
|
272
280
|
// See if they have any recover signers
|
|
@@ -274,44 +282,102 @@ export class Recovery {
|
|
|
274
282
|
if (!signers || signers.length === 0) {
|
|
275
283
|
return [];
|
|
276
284
|
}
|
|
285
|
+
const recoveryExtension = this.shared.sequence.extensions.recovery;
|
|
277
286
|
const payloads = [];
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
287
|
+
await Promise.all(providers.map(async ({ chainId, provider, multicall3Address }) => {
|
|
288
|
+
try {
|
|
289
|
+
let totalPayloadsBySigner;
|
|
290
|
+
if (multicall3Address) {
|
|
291
|
+
try {
|
|
292
|
+
// Batch all totalQueuedPayloads calls for every signer into a single Multicall3 request.
|
|
293
|
+
// This reduces N signer calls per network down to 1 call per network.
|
|
294
|
+
totalPayloadsBySigner = await this.fetchTotalQueuedPayloadsBatched(provider, recoveryExtension, wallet, signers, multicall3Address);
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
console.error(`Recovery.fetchQueuedPayloads multicall3 failed for chainId ${chainId}, retrying with individual calls:`, err);
|
|
298
|
+
totalPayloadsBySigner = await this.fetchTotalQueuedPayloadsFallback(provider, recoveryExtension, wallet, signers);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
totalPayloadsBySigner = await this.fetchTotalQueuedPayloadsFallback(provider, recoveryExtension, wallet, signers);
|
|
303
|
+
}
|
|
304
|
+
for (let s = 0; s < signers.length; s++) {
|
|
305
|
+
const signer = signers[s];
|
|
306
|
+
const totalPayloads = totalPayloadsBySigner[s];
|
|
307
|
+
if (totalPayloads === 0n)
|
|
308
|
+
continue;
|
|
309
|
+
// Only make individual calls for the rare case where payloads actually exist
|
|
310
|
+
for (let i = 0n; i < totalPayloads; i++) {
|
|
311
|
+
const payloadHash = await Extensions.Recovery.queuedPayloadHashOf(provider, recoveryExtension, wallet, signer.address, i);
|
|
312
|
+
const timestamp = await Extensions.Recovery.timestampForQueuedPayload(provider, recoveryExtension, wallet, signer.address, payloadHash);
|
|
313
|
+
const payload = await this.shared.sequence.stateProvider.getPayload(payloadHash);
|
|
314
|
+
// If ready, we need to check if it was executed already
|
|
315
|
+
// for this, we check if the wallet nonce for the given space
|
|
316
|
+
// is greater than the nonce in the payload
|
|
317
|
+
if (timestamp < Date.now() / 1000 && payload && Payload.isCalls(payload.payload)) {
|
|
318
|
+
const nonce = await this.shared.modules.wallets.getNonce(chainId, wallet, payload.payload.space);
|
|
319
|
+
if (nonce > i) {
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
292
322
|
}
|
|
323
|
+
// The id is the index + signer address + chainId + wallet address
|
|
324
|
+
const id = `${i}-${signer.address}-${chainId}-${wallet}`;
|
|
325
|
+
const payloadEntry = {
|
|
326
|
+
id,
|
|
327
|
+
index: i,
|
|
328
|
+
recoveryModule: recoveryExtension,
|
|
329
|
+
wallet: wallet,
|
|
330
|
+
signer: signer.address,
|
|
331
|
+
chainId,
|
|
332
|
+
startTimestamp: timestamp,
|
|
333
|
+
endTimestamp: timestamp + signer.requiredDeltaTime,
|
|
334
|
+
payloadHash,
|
|
335
|
+
payload: payload?.payload,
|
|
336
|
+
};
|
|
337
|
+
payloads.push(payloadEntry);
|
|
293
338
|
}
|
|
294
|
-
// The id is the index + signer address + chainId + wallet address
|
|
295
|
-
const id = `${i}-${signer.address}-${chainId}-${wallet}`;
|
|
296
|
-
// Create a new payload
|
|
297
|
-
const payloadEntry = {
|
|
298
|
-
id,
|
|
299
|
-
index: i,
|
|
300
|
-
recoveryModule: this.shared.sequence.extensions.recovery,
|
|
301
|
-
wallet: wallet,
|
|
302
|
-
signer: signer.address,
|
|
303
|
-
chainId,
|
|
304
|
-
startTimestamp: timestamp,
|
|
305
|
-
endTimestamp: timestamp + signer.requiredDeltaTime,
|
|
306
|
-
payloadHash,
|
|
307
|
-
payload: payload?.payload,
|
|
308
|
-
};
|
|
309
|
-
payloads.push(payloadEntry);
|
|
310
339
|
}
|
|
311
340
|
}
|
|
312
|
-
|
|
341
|
+
catch (err) {
|
|
342
|
+
console.error(`Recovery.fetchQueuedPayloads error for chainId ${chainId}:`, err);
|
|
343
|
+
}
|
|
344
|
+
}));
|
|
313
345
|
return payloads;
|
|
314
346
|
}
|
|
347
|
+
async fetchTotalQueuedPayloadsBatched(provider, recoveryExtension, wallet, signers, multicall3Address) {
|
|
348
|
+
const calls = signers.map((signer) => ({
|
|
349
|
+
target: recoveryExtension,
|
|
350
|
+
allowFailure: true,
|
|
351
|
+
callData: AbiFunction.encodeData(Extensions.Recovery.TOTAL_QUEUED_PAYLOADS, [wallet, signer.address]),
|
|
352
|
+
}));
|
|
353
|
+
const response = await provider.request({
|
|
354
|
+
method: 'eth_call',
|
|
355
|
+
params: [
|
|
356
|
+
{
|
|
357
|
+
to: multicall3Address,
|
|
358
|
+
data: AbiFunction.encodeData(AGGREGATE3, [calls]),
|
|
359
|
+
},
|
|
360
|
+
'latest',
|
|
361
|
+
],
|
|
362
|
+
});
|
|
363
|
+
const results = AbiFunction.decodeResult(AGGREGATE3, response);
|
|
364
|
+
return results.map((result) => {
|
|
365
|
+
if (!result.success || result.returnData === '0x') {
|
|
366
|
+
return 0n;
|
|
367
|
+
}
|
|
368
|
+
return Hex.toBigInt(result.returnData);
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
fetchTotalQueuedPayloadsFallback = async (provider, recoveryExtension, wallet, signers) => {
|
|
372
|
+
const result = signers.map(() => 0n);
|
|
373
|
+
// Fallback to individual calls if the multicall3 call fails
|
|
374
|
+
for (let s = 0; s < signers.length; s++) {
|
|
375
|
+
const signer = signers[s];
|
|
376
|
+
const totalPayloads = await Extensions.Recovery.totalQueuedPayloads(provider, recoveryExtension, wallet, signer.address);
|
|
377
|
+
result[s] = totalPayloads;
|
|
378
|
+
}
|
|
379
|
+
return result;
|
|
380
|
+
};
|
|
315
381
|
async encodeRecoverySignature(imageHash, signer) {
|
|
316
382
|
const genericTree = await this.shared.sequence.stateProvider.getTree(imageHash);
|
|
317
383
|
if (!genericTree) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signers.d.ts","sourceRoot":"","sources":["../../src/sequence/signers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAS,cAAc,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAEvF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,sBAAsB,CAEpF;AAmBD,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAErC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"signers.d.ts","sourceRoot":"","sources":["../../src/sequence/signers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAS,cAAc,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAEvF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,sBAAsB,CAEpF;AAmBD,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAErC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IA6DzG,YAAY,CAChB,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;QAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAA;KAAE,CAAC,EAAE,GAC9E,OAAO,CAAC,cAAc,EAAE,CAAC;CAoB7B"}
|
package/dist/sequence/signers.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../src/sequence/transactions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../src/sequence/transactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -146,7 +146,10 @@ export class Transactions {
|
|
|
146
146
|
if (!ifAvailable) {
|
|
147
147
|
return [];
|
|
148
148
|
}
|
|
149
|
-
|
|
149
|
+
// Determine the to address for the built transaction
|
|
150
|
+
const walletStatus = await wallet.getStatus(provider);
|
|
151
|
+
const to = walletStatus.isDeployed ? wallet.address : wallet.guest;
|
|
152
|
+
const feeOptions = await relayer.feeOptions(tx.wallet, tx.envelope.chainId, to, tx.envelope.payload.calls);
|
|
150
153
|
if (feeOptions.options.length === 0) {
|
|
151
154
|
const { name, icon } = relayer instanceof Relayer.EIP6963.EIP6963Relayer ? relayer.info : {};
|
|
152
155
|
return [
|
|
@@ -275,7 +278,7 @@ export class Transactions {
|
|
|
275
278
|
try {
|
|
276
279
|
tx = await this.get(transactionOrSignatureId);
|
|
277
280
|
}
|
|
278
|
-
catch
|
|
281
|
+
catch {
|
|
279
282
|
// If not found, it might be a signature ID
|
|
280
283
|
const signature = await this.shared.modules.signatures.get(transactionOrSignatureId);
|
|
281
284
|
if (!signature) {
|
|
@@ -357,6 +357,7 @@ export declare class Wallets implements WalletsInterface {
|
|
|
357
357
|
requestConfigurationUpdate(address: Address.Address, changes: Partial<ReturnType<typeof fromConfig>>, action: Action, origin?: string): Promise<string>;
|
|
358
358
|
completeConfigurationUpdate(requestId: string): Promise<void>;
|
|
359
359
|
login(args: LoginArgs): Promise<string>;
|
|
360
|
+
private isPasskeySigner;
|
|
360
361
|
completeLogin(requestId: string): Promise<void>;
|
|
361
362
|
logout<T extends {
|
|
362
363
|
skipRemoveDevice?: boolean;
|
|
@@ -364,7 +365,7 @@ export declare class Wallets implements WalletsInterface {
|
|
|
364
365
|
skipRemoveDevice: true;
|
|
365
366
|
} ? undefined : string>;
|
|
366
367
|
remoteLogout(wallet: Address.Address, deviceAddress: Address.Address): Promise<string>;
|
|
367
|
-
completeLogout(requestId: string,
|
|
368
|
+
completeLogout(requestId: string, _options?: {
|
|
368
369
|
skipValidateSave?: boolean;
|
|
369
370
|
}): Promise<void>;
|
|
370
371
|
getConfiguration(wallet: Address.Address): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/sequence/wallets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/sequence/wallets.ts"],"names":[],"mappings":"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"}
|
package/dist/sequence/wallets.js
CHANGED
|
@@ -61,17 +61,17 @@ function buildCappedTree(members) {
|
|
|
61
61
|
})),
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
|
-
function buildCappedTreeFromTopology(weight, topology) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
64
|
+
// function buildCappedTreeFromTopology(weight: bigint, topology: Config.Topology): Config.Topology {
|
|
65
|
+
// // We may optimize this for some topology types
|
|
66
|
+
// // but it is not worth it, because the topology
|
|
67
|
+
// // that we will use for prod won't be optimizable
|
|
68
|
+
// return {
|
|
69
|
+
// type: 'nested',
|
|
70
|
+
// weight: weight,
|
|
71
|
+
// threshold: weight,
|
|
72
|
+
// tree: topology,
|
|
73
|
+
// }
|
|
74
|
+
// }
|
|
75
75
|
function toConfig(checkpoint, loginTopology, devicesTopology, modules, guardTopology) {
|
|
76
76
|
if (!guardTopology) {
|
|
77
77
|
return {
|
|
@@ -236,8 +236,8 @@ export class Wallets {
|
|
|
236
236
|
}
|
|
237
237
|
async prepareSignUp(args) {
|
|
238
238
|
switch (args.kind) {
|
|
239
|
-
case 'passkey':
|
|
240
|
-
const passkeySigner = await
|
|
239
|
+
case 'passkey': {
|
|
240
|
+
const passkeySigner = await this.shared.passkeyProvider.create(this.shared.sequence.extensions, {
|
|
241
241
|
stateProvider: this.shared.sequence.stateProvider,
|
|
242
242
|
credentialName: args.name,
|
|
243
243
|
});
|
|
@@ -248,7 +248,8 @@ export class Wallets {
|
|
|
248
248
|
signerKind: Kinds.LoginPasskey,
|
|
249
249
|
},
|
|
250
250
|
};
|
|
251
|
-
|
|
251
|
+
}
|
|
252
|
+
case 'mnemonic': {
|
|
252
253
|
const mnemonicSigner = MnemonicHandler.toSigner(args.mnemonic);
|
|
253
254
|
if (!mnemonicSigner) {
|
|
254
255
|
throw new Error('invalid-mnemonic');
|
|
@@ -260,6 +261,7 @@ export class Wallets {
|
|
|
260
261
|
signerKind: Kinds.LoginMnemonic,
|
|
261
262
|
},
|
|
262
263
|
};
|
|
264
|
+
}
|
|
263
265
|
case 'email-otp': {
|
|
264
266
|
const handler = this.shared.handlers.get(Kinds.LoginEmailOtp);
|
|
265
267
|
if (!handler) {
|
|
@@ -415,7 +417,7 @@ export class Wallets {
|
|
|
415
417
|
const walletGuardTopology = args.noGuard ? undefined : this.shared.modules.guards.topology('wallet');
|
|
416
418
|
const sessionsGuardTopology = args.noGuard ? undefined : this.shared.modules.guards.topology('sessions');
|
|
417
419
|
// Add modules
|
|
418
|
-
|
|
420
|
+
const modules = [];
|
|
419
421
|
if (!args.noSessionManager) {
|
|
420
422
|
const identitySigners = [device.address];
|
|
421
423
|
if (!Signers.isSapientSigner(loginSigner.signer)) {
|
|
@@ -462,7 +464,7 @@ export class Wallets {
|
|
|
462
464
|
throw error;
|
|
463
465
|
}
|
|
464
466
|
// Store passkey credential ID mapping if this is a passkey signup
|
|
465
|
-
if (args.kind === 'passkey' && loginSigner.signer
|
|
467
|
+
if (args.kind === 'passkey' && this.isPasskeySigner(loginSigner.signer)) {
|
|
466
468
|
try {
|
|
467
469
|
await this.shared.databases.passkeyCredentials.saveCredential(loginSigner.signer.credentialId, loginSigner.signer.publicKey, wallet.address);
|
|
468
470
|
this.shared.modules.logger.log('Stored passkey credential mapping for wallet:', wallet.address);
|
|
@@ -566,9 +568,6 @@ export class Wallets {
|
|
|
566
568
|
});
|
|
567
569
|
return requestId;
|
|
568
570
|
}
|
|
569
|
-
catch (error) {
|
|
570
|
-
throw error;
|
|
571
|
-
}
|
|
572
571
|
finally {
|
|
573
572
|
this.pendingMnemonicOrPasskeyLogin = undefined;
|
|
574
573
|
}
|
|
@@ -602,7 +601,7 @@ export class Wallets {
|
|
|
602
601
|
throw new Error('credential-not-found');
|
|
603
602
|
}
|
|
604
603
|
// Create passkey signer from stored credential
|
|
605
|
-
passkeySigner =
|
|
604
|
+
passkeySigner = this.shared.passkeyProvider.fromCredential({
|
|
606
605
|
credentialId: credential.credentialId,
|
|
607
606
|
publicKey: credential.publicKey,
|
|
608
607
|
extensions: this.shared.sequence.extensions,
|
|
@@ -613,7 +612,7 @@ export class Wallets {
|
|
|
613
612
|
else {
|
|
614
613
|
// Default discovery behavior: use WebAuthn discovery
|
|
615
614
|
this.shared.modules.logger.log('No credentialId provided, using discovery method');
|
|
616
|
-
const foundPasskeySigner = await
|
|
615
|
+
const foundPasskeySigner = await this.shared.passkeyProvider.find(this.shared.sequence.stateProvider, this.shared.sequence.extensions);
|
|
617
616
|
if (!foundPasskeySigner) {
|
|
618
617
|
throw new Error('no-passkey-found');
|
|
619
618
|
}
|
|
@@ -652,6 +651,17 @@ export class Wallets {
|
|
|
652
651
|
}
|
|
653
652
|
throw new Error('invalid-login-args');
|
|
654
653
|
}
|
|
654
|
+
isPasskeySigner(signer) {
|
|
655
|
+
const guard = this.shared.passkeyProvider.isSigner;
|
|
656
|
+
if (guard) {
|
|
657
|
+
return guard(signer);
|
|
658
|
+
}
|
|
659
|
+
return (typeof signer === 'object' &&
|
|
660
|
+
signer !== null &&
|
|
661
|
+
'credentialId' in signer &&
|
|
662
|
+
'publicKey' in signer &&
|
|
663
|
+
'imageHash' in signer);
|
|
664
|
+
}
|
|
655
665
|
async completeLogin(requestId) {
|
|
656
666
|
const request = await this.shared.modules.signatures.get(requestId);
|
|
657
667
|
const walletEntry = await this.shared.databases.manager.get(request.wallet);
|
|
@@ -701,7 +711,7 @@ export class Wallets {
|
|
|
701
711
|
const requestId = await this._prepareDeviceRemovalUpdate(wallet, deviceAddress, 'remote-logout');
|
|
702
712
|
return requestId;
|
|
703
713
|
}
|
|
704
|
-
async completeLogout(requestId,
|
|
714
|
+
async completeLogout(requestId, _options) {
|
|
705
715
|
const request = await this.shared.modules.signatures.get(requestId);
|
|
706
716
|
const walletEntry = await this.shared.databases.manager.get(request.wallet);
|
|
707
717
|
if (!walletEntry) {
|
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-wdk",
|
|
3
|
-
"version": "3.0.0
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -14,14 +14,15 @@
|
|
|
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
|
-
"happy-dom": "^20.0
|
|
21
|
+
"happy-dom": "^20.7.0",
|
|
22
22
|
"typescript": "^5.9.3",
|
|
23
|
-
"vitest": "^4.0.
|
|
24
|
-
"@repo/typescript-config": "^0.0.1
|
|
23
|
+
"vitest": "^4.0.18",
|
|
24
|
+
"@repo/typescript-config": "^0.0.1",
|
|
25
|
+
"@repo/eslint-config": "^0.0.1"
|
|
25
26
|
},
|
|
26
27
|
"dependencies": {
|
|
27
28
|
"@0xsequence/tee-verifier": "^0.1.2",
|
|
@@ -29,19 +30,20 @@
|
|
|
29
30
|
"jwt-decode": "^4.0.0",
|
|
30
31
|
"ox": "^0.9.17",
|
|
31
32
|
"uuid": "^13.0.0",
|
|
32
|
-
"@0xsequence/guard": "^3.0.0
|
|
33
|
-
"@0xsequence/
|
|
34
|
-
"@0xsequence/
|
|
35
|
-
"@0xsequence/
|
|
36
|
-
"@0xsequence/wallet-primitives": "^3.0.0
|
|
33
|
+
"@0xsequence/guard": "^3.0.0",
|
|
34
|
+
"@0xsequence/wallet-core": "^3.0.0",
|
|
35
|
+
"@0xsequence/identity-instrument": "^3.0.0",
|
|
36
|
+
"@0xsequence/relayer": "^3.0.0",
|
|
37
|
+
"@0xsequence/wallet-primitives": "^3.0.0"
|
|
37
38
|
},
|
|
38
39
|
"scripts": {
|
|
39
40
|
"build": "tsc",
|
|
40
41
|
"dev": "tsc --watch",
|
|
41
42
|
"test": "vitest run && npm run test:ssr",
|
|
42
43
|
"test:coverage": "vitest run --coverage",
|
|
43
|
-
"test:ssr": "node test/test-ssr-safety.
|
|
44
|
+
"test:ssr": "node test/test-ssr-safety.js",
|
|
44
45
|
"typecheck": "tsc --noEmit",
|
|
45
|
-
"clean": "rimraf dist"
|
|
46
|
+
"clean": "rimraf dist",
|
|
47
|
+
"lint": "eslint . --max-warnings 0"
|
|
46
48
|
}
|
|
47
49
|
}
|
package/src/dbs/auth-keys.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Generic
|
|
1
|
+
import { Generic } from './generic.js'
|
|
2
2
|
import { IDBPDatabase, IDBPTransaction } from 'idb'
|
|
3
|
+
import type { WdkEnv } from '../env.js'
|
|
3
4
|
|
|
4
5
|
const TABLE_NAME = 'auth-keys'
|
|
5
6
|
|
|
@@ -11,9 +12,12 @@ export type AuthKey = {
|
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
export class AuthKeys extends Generic<AuthKey, 'address'> {
|
|
14
|
-
private expirationTimers = new Map<string,
|
|
15
|
+
private expirationTimers = new Map<string, ReturnType<typeof setTimeout>>()
|
|
15
16
|
|
|
16
|
-
constructor(
|
|
17
|
+
constructor(
|
|
18
|
+
dbName: string = 'sequence-auth-keys',
|
|
19
|
+
private readonly env?: WdkEnv,
|
|
20
|
+
) {
|
|
17
21
|
super(dbName, TABLE_NAME, 'address', [
|
|
18
22
|
(
|
|
19
23
|
db: IDBPDatabase<unknown>,
|
|
@@ -64,7 +68,10 @@ export class AuthKeys extends Generic<AuthKey, 'address'> {
|
|
|
64
68
|
if (result !== undefined) {
|
|
65
69
|
return result
|
|
66
70
|
} else if (attempt < 2) {
|
|
67
|
-
|
|
71
|
+
const setTimeoutFn = this.env?.timers?.setTimeout ?? (globalThis as any).setTimeout
|
|
72
|
+
if (setTimeoutFn) {
|
|
73
|
+
await new Promise((resolve) => setTimeoutFn(resolve, 50))
|
|
74
|
+
}
|
|
68
75
|
return this.getBySigner(signer, attempt + 1)
|
|
69
76
|
} else {
|
|
70
77
|
try {
|
|
@@ -108,7 +115,11 @@ export class AuthKeys extends Generic<AuthKey, 'address'> {
|
|
|
108
115
|
await this.del(authKey.address.toLowerCase())
|
|
109
116
|
return
|
|
110
117
|
}
|
|
111
|
-
const
|
|
118
|
+
const setTimeoutFn = this.env?.timers?.setTimeout ?? (globalThis as any).setTimeout
|
|
119
|
+
if (!setTimeoutFn) {
|
|
120
|
+
return
|
|
121
|
+
}
|
|
122
|
+
const timer = setTimeoutFn(() => {
|
|
112
123
|
console.log('removing expired auth key', authKey)
|
|
113
124
|
this.del(authKey.address.toLowerCase())
|
|
114
125
|
}, delay)
|
|
@@ -118,7 +129,10 @@ export class AuthKeys extends Generic<AuthKey, 'address'> {
|
|
|
118
129
|
private clearExpiration(address: string): void {
|
|
119
130
|
const timer = this.expirationTimers.get(address.toLowerCase())
|
|
120
131
|
if (timer) {
|
|
121
|
-
|
|
132
|
+
const clearTimeoutFn = this.env?.timers?.clearTimeout ?? (globalThis as any).clearTimeout
|
|
133
|
+
if (clearTimeoutFn) {
|
|
134
|
+
clearTimeoutFn(timer)
|
|
135
|
+
}
|
|
122
136
|
this.expirationTimers.delete(address.toLowerCase())
|
|
123
137
|
}
|
|
124
138
|
}
|
package/src/dbs/messages.ts
CHANGED
package/src/dbs/recovery.ts
CHANGED
package/src/dbs/signatures.ts
CHANGED
package/src/dbs/transactions.ts
CHANGED
package/src/dbs/wallets.ts
CHANGED