@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.
Files changed (113) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/.turbo/turbo-lint.log +4 -0
  3. package/.turbo/turbo-typecheck.log +4 -0
  4. package/CHANGELOG.md +170 -0
  5. package/dist/dbs/auth-commitments.d.ts.map +1 -1
  6. package/dist/dbs/auth-keys.d.ts +3 -1
  7. package/dist/dbs/auth-keys.d.ts.map +1 -1
  8. package/dist/dbs/auth-keys.js +16 -4
  9. package/dist/dbs/messages.d.ts.map +1 -1
  10. package/dist/dbs/passkey-credentials.d.ts.map +1 -1
  11. package/dist/dbs/recovery.d.ts.map +1 -1
  12. package/dist/dbs/signatures.d.ts.map +1 -1
  13. package/dist/dbs/transactions.d.ts.map +1 -1
  14. package/dist/dbs/wallets.d.ts.map +1 -1
  15. package/dist/env.d.ts +22 -0
  16. package/dist/env.d.ts.map +1 -0
  17. package/dist/env.js +30 -0
  18. package/dist/identity/signer.d.ts +5 -4
  19. package/dist/identity/signer.d.ts.map +1 -1
  20. package/dist/identity/signer.js +11 -4
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -0
  24. package/dist/sequence/cron.d.ts +3 -0
  25. package/dist/sequence/cron.d.ts.map +1 -1
  26. package/dist/sequence/cron.js +72 -39
  27. package/dist/sequence/handlers/authcode-pkce.d.ts +2 -1
  28. package/dist/sequence/handlers/authcode-pkce.d.ts.map +1 -1
  29. package/dist/sequence/handlers/authcode-pkce.js +4 -4
  30. package/dist/sequence/handlers/authcode.d.ts +4 -1
  31. package/dist/sequence/handlers/authcode.d.ts.map +1 -1
  32. package/dist/sequence/handlers/authcode.js +23 -6
  33. package/dist/sequence/handlers/devices.d.ts +1 -1
  34. package/dist/sequence/handlers/devices.d.ts.map +1 -1
  35. package/dist/sequence/handlers/devices.js +1 -1
  36. package/dist/sequence/handlers/guard.d.ts +1 -1
  37. package/dist/sequence/handlers/guard.d.ts.map +1 -1
  38. package/dist/sequence/handlers/guard.js +22 -19
  39. package/dist/sequence/handlers/identity.d.ts +3 -1
  40. package/dist/sequence/handlers/identity.d.ts.map +1 -1
  41. package/dist/sequence/handlers/identity.js +14 -7
  42. package/dist/sequence/handlers/mnemonic.d.ts.map +1 -1
  43. package/dist/sequence/handlers/mnemonic.js +21 -18
  44. package/dist/sequence/handlers/otp.d.ts +2 -1
  45. package/dist/sequence/handlers/otp.d.ts.map +1 -1
  46. package/dist/sequence/handlers/otp.js +4 -3
  47. package/dist/sequence/handlers/passkeys.d.ts +6 -4
  48. package/dist/sequence/handlers/passkeys.d.ts.map +1 -1
  49. package/dist/sequence/handlers/passkeys.js +8 -5
  50. package/dist/sequence/handlers/recovery.js +1 -1
  51. package/dist/sequence/index.d.ts +2 -0
  52. package/dist/sequence/index.d.ts.map +1 -1
  53. package/dist/sequence/index.js +1 -0
  54. package/dist/sequence/manager.d.ts +67 -55
  55. package/dist/sequence/manager.d.ts.map +1 -1
  56. package/dist/sequence/manager.js +77 -17
  57. package/dist/sequence/messages.js +1 -1
  58. package/dist/sequence/passkeys-provider.d.ts +24 -0
  59. package/dist/sequence/passkeys-provider.d.ts.map +1 -0
  60. package/dist/sequence/passkeys-provider.js +15 -0
  61. package/dist/sequence/recovery.d.ts +2 -0
  62. package/dist/sequence/recovery.d.ts.map +1 -1
  63. package/dist/sequence/recovery.js +100 -34
  64. package/dist/sequence/signers.d.ts.map +1 -1
  65. package/dist/sequence/signers.js +3 -1
  66. package/dist/sequence/transactions.d.ts.map +1 -1
  67. package/dist/sequence/transactions.js +5 -2
  68. package/dist/sequence/wallets.d.ts +2 -1
  69. package/dist/sequence/wallets.d.ts.map +1 -1
  70. package/dist/sequence/wallets.js +32 -22
  71. package/eslint.config.js +12 -0
  72. package/package.json +16 -14
  73. package/src/dbs/auth-commitments.ts +1 -1
  74. package/src/dbs/auth-keys.ts +20 -6
  75. package/src/dbs/messages.ts +1 -1
  76. package/src/dbs/passkey-credentials.ts +1 -1
  77. package/src/dbs/recovery.ts +1 -1
  78. package/src/dbs/signatures.ts +1 -1
  79. package/src/dbs/transactions.ts +1 -1
  80. package/src/dbs/wallets.ts +1 -1
  81. package/src/env.ts +58 -0
  82. package/src/identity/signer.ts +13 -7
  83. package/src/index.ts +1 -0
  84. package/src/sequence/cron.ts +75 -42
  85. package/src/sequence/handlers/authcode-pkce.ts +6 -4
  86. package/src/sequence/handlers/authcode.ts +26 -5
  87. package/src/sequence/handlers/devices.ts +1 -1
  88. package/src/sequence/handlers/guard.ts +6 -4
  89. package/src/sequence/handlers/identity.ts +18 -8
  90. package/src/sequence/handlers/mnemonic.ts +5 -3
  91. package/src/sequence/handlers/otp.ts +5 -3
  92. package/src/sequence/handlers/passkeys.ts +13 -13
  93. package/src/sequence/handlers/recovery.ts +1 -1
  94. package/src/sequence/index.ts +2 -0
  95. package/src/sequence/manager.ts +168 -14
  96. package/src/sequence/messages.ts +1 -1
  97. package/src/sequence/passkeys-provider.ts +55 -0
  98. package/src/sequence/recovery.ts +165 -56
  99. package/src/sequence/signers.ts +3 -1
  100. package/src/sequence/transactions.ts +6 -2
  101. package/src/sequence/wallets.ts +39 -25
  102. package/test/authcode-pkce.test.ts +2 -3
  103. package/test/authcode.test.ts +6 -8
  104. package/test/constants.ts +4 -2
  105. package/test/guard.test.ts +5 -5
  106. package/test/identity-signer.test.ts +1 -1
  107. package/test/otp.test.ts +1 -1
  108. package/test/passkeys.test.ts +1 -1
  109. package/test/recovery.test.ts +3 -3
  110. package/test/sessions.test.ts +1 -1
  111. package/test/{test-ssr-safety.mjs → test-ssr-safety.js} +143 -137
  112. package/test/transactions.test.ts +3 -3
  113. 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 !== address);
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) => (chainId ? network.chainId === chainId : true))
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
- for (const signer of signers) {
279
- for (const { chainId, provider } of providers) {
280
- const totalPayloads = await Extensions.Recovery.totalQueuedPayloads(provider, this.shared.sequence.extensions.recovery, wallet, signer.address);
281
- for (let i = 0n; i < totalPayloads; i++) {
282
- const payloadHash = await Extensions.Recovery.queuedPayloadHashOf(provider, this.shared.sequence.extensions.recovery, wallet, signer.address, i);
283
- const timestamp = await Extensions.Recovery.timestampForQueuedPayload(provider, this.shared.sequence.extensions.recovery, wallet, signer.address, payloadHash);
284
- const payload = await this.shared.sequence.stateProvider.getPayload(payloadHash);
285
- // If ready, we need to check if it was executed already
286
- // for this, we check if the wallet nonce for the given space
287
- // is greater than the nonce in the payload
288
- if (timestamp < Date.now() / 1000 && payload && Payload.isCalls(payload.payload)) {
289
- const nonce = await this.shared.modules.wallets.getNonce(chainId, wallet, payload.payload.space);
290
- if (nonce > i) {
291
- continue;
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;IA2DzG,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"}
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"}
@@ -66,7 +66,9 @@ export class Signers {
66
66
  return toKnownKind(message.signerKind);
67
67
  }
68
68
  }
69
- catch { }
69
+ catch {
70
+ // ignore
71
+ }
70
72
  return undefined;
71
73
  }
72
74
  async resolveKinds(wallet, signers) {
@@ -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
- const feeOptions = await relayer.feeOptions(tx.wallet, tx.envelope.chainId, tx.envelope.payload.calls);
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 (e) {
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, options?: {
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":"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"}
1
+ {"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/sequence/wallets.ts"],"names":[],"mappings":"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"}
@@ -61,17 +61,17 @@ function buildCappedTree(members) {
61
61
  })),
62
62
  };
63
63
  }
64
- function buildCappedTreeFromTopology(weight, 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
- }
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 Signers.Passkey.Passkey.create(this.shared.sequence.extensions, {
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
- case 'mnemonic':
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
- let modules = [];
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 instanceof Signers.Passkey.Passkey) {
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 = new Signers.Passkey.Passkey({
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 Signers.Passkey.Passkey.find(this.shared.sequence.stateProvider, this.shared.sequence.extensions);
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, options) {
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) {
@@ -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-beta.9",
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.2",
18
- "@vitest/coverage-v8": "^4.0.15",
19
- "dotenv": "^17.2.3",
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.11",
21
+ "happy-dom": "^20.7.0",
22
22
  "typescript": "^5.9.3",
23
- "vitest": "^4.0.15",
24
- "@repo/typescript-config": "^0.0.1-beta.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-beta.9",
33
- "@0xsequence/identity-instrument": "^3.0.0-beta.9",
34
- "@0xsequence/relayer": "^3.0.0-beta.9",
35
- "@0xsequence/wallet-core": "^3.0.0-beta.9",
36
- "@0xsequence/wallet-primitives": "^3.0.0-beta.9"
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.mjs",
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
  }
@@ -1,4 +1,4 @@
1
- import { Generic, Migration } from './generic.js'
1
+ import { Generic } from './generic.js'
2
2
  import { IDBPDatabase, IDBPTransaction } from 'idb'
3
3
 
4
4
  const TABLE_NAME = 'auth-commitments'
@@ -1,5 +1,6 @@
1
- import { Generic, Migration } from './generic.js'
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, number>()
15
+ private expirationTimers = new Map<string, ReturnType<typeof setTimeout>>()
15
16
 
16
- constructor(dbName: string = 'sequence-auth-keys') {
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
- await new Promise((resolve) => setTimeout(resolve, 50))
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 timer = window.setTimeout(() => {
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
- window.clearTimeout(timer)
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
  }
@@ -1,5 +1,5 @@
1
1
  import { Message } from '../sequence/types/message-request.js'
2
- import { Generic, Migration } from './generic.js'
2
+ import { Generic } from './generic.js'
3
3
  import { IDBPDatabase, IDBPTransaction } from 'idb'
4
4
 
5
5
  const TABLE_NAME = 'messages'
@@ -1,4 +1,4 @@
1
- import { Generic, Migration } from './generic.js'
1
+ import { Generic } from './generic.js'
2
2
  import { IDBPDatabase, IDBPTransaction } from 'idb'
3
3
  import { Address } from 'ox'
4
4
  import { Extensions } from '@0xsequence/wallet-primitives'
@@ -1,4 +1,4 @@
1
- import { Generic, Migration } from './generic.js'
1
+ import { Generic } from './generic.js'
2
2
  import { QueuedRecoveryPayload } from '../sequence/types/recovery.js'
3
3
  import { IDBPDatabase, IDBPTransaction } from 'idb'
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { BaseSignatureRequest } from '../sequence/index.js'
2
- import { Generic, Migration } from './generic.js'
2
+ import { Generic } from './generic.js'
3
3
  import { IDBPDatabase, IDBPTransaction } from 'idb'
4
4
 
5
5
  const TABLE_NAME = 'envelopes'
@@ -1,5 +1,5 @@
1
1
  import { Transaction } from '../sequence/types/transaction-request.js'
2
- import { Generic, Migration } from './generic.js'
2
+ import { Generic } from './generic.js'
3
3
  import { IDBPDatabase, IDBPTransaction } from 'idb'
4
4
 
5
5
  const TABLE_NAME = 'transactions'
@@ -1,4 +1,4 @@
1
- import { Generic, Migration } from './generic.js'
1
+ import { Generic } from './generic.js'
2
2
  import { Wallet } from '../sequence/types/wallet.js'
3
3
  import { IDBPDatabase, IDBPTransaction } from 'idb'
4
4