Skip to content

Commit c5ee3fe

Browse files
committed
Drop string[] type for signatures saveWitnesses
1 parent 260bacb commit c5ee3fe

File tree

8 files changed

+22
-38
lines changed

8 files changed

+22
-38
lines changed

packages/sessions/src/tracker.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export interface ConfigTracker {
3434

3535
savePresignedConfiguration: (args: PresignedConfig) => Promise<void>
3636

37-
saveWitnesses: (args: { wallet: string; digest: string; chainId: ethers.BigNumberish; signatures: string[] | SignerSignature[] }) => Promise<void>
37+
saveWitnesses: (args: { wallet: string; digest: string; chainId: ethers.BigNumberish; signatures: SignerSignature[] }) => Promise<void>
3838

3939
configOfImageHash: (args: { imageHash: string; noCache?: boolean }) => Promise<commons.config.Config | undefined>
4040

packages/sessions/src/trackers/arweave.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ export class ArweaveReader implements ConfigTracker, migrator.PresignedMigration
231231
throw new Error('arweave backend does not support saving config updates')
232232
}
233233

234-
saveWitnesses(_args: { wallet: string; digest: string; chainId: ethers.BigNumberish; signatures: string[] | SignerSignature[] }): Promise<void> {
234+
saveWitnesses(_args: { wallet: string; digest: string; chainId: ethers.BigNumberish; signatures: SignerSignature[] }): Promise<void> {
235235
throw new Error('arweave backend does not support saving signatures')
236236
}
237237

packages/sessions/src/trackers/cached.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ export class CachedTracker implements migrator.PresignedMigrationTracker, Config
148148
wallet: string
149149
digest: string
150150
chainId: ethers.BigNumberish
151-
signatures: string[] | SignerSignature[]
151+
signatures: SignerSignature[]
152152
}): Promise<void> {
153153
await Promise.all([this.tracker.saveWitnesses(args), this.cache.saveWitnesses(args)])
154154
}

packages/sessions/src/trackers/debug.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export class DebugConfigTracker implements ConfigTracker, migrator.PresignedMigr
2323
return this.tracker.savePresignedConfiguration(args)
2424
}
2525

26-
saveWitnesses(args: { wallet: string; digest: string; chainId: ethers.BigNumberish; signatures: string[] | SignerSignature[] }): Promise<void> {
26+
saveWitnesses(args: { wallet: string; digest: string; chainId: ethers.BigNumberish; signatures: SignerSignature[] }): Promise<void> {
2727
console.debug('? saveWitnesses')
2828
debug(args, '? ')
2929
return this.tracker.saveWitnesses(args)

packages/sessions/src/trackers/deduped.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export class DedupedTracker implements migrator.PresignedMigrationTracker, Confi
6363
return this.cache.do('savePresignedConfiguration', undefined, args => this.tracker.savePresignedConfiguration(args), args)
6464
}
6565

66-
saveWitnesses(args: { wallet: string; digest: string; chainId: ethers.BigNumberish; signatures: string[] | SignerSignature[] }): Promise<void> {
66+
saveWitnesses(args: { wallet: string; digest: string; chainId: ethers.BigNumberish; signatures: SignerSignature[] }): Promise<void> {
6767
return this.cache.do('saveWitnesses', undefined, args => this.tracker.saveWitnesses(args), args)
6868
}
6969

packages/sessions/src/trackers/local.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ export class LocalConfigTracker implements ConfigTracker, migrator.PresignedMigr
393393
wallet: string
394394
digest: string
395395
chainId: ethers.BigNumberish
396-
signatures: string[] | SignerSignature[]
396+
signatures: SignerSignature[]
397397
}): Promise<void> => {
398398
const payload = {
399399
digest: args.digest,
@@ -406,7 +406,7 @@ export class LocalConfigTracker implements ConfigTracker, migrator.PresignedMigr
406406
await Promise.all([
407407
this.savePayload({ payload }),
408408
...args.signatures
409-
.map(s => (typeof s === 'string' ? s : s.signature))
409+
.map(s => s.signature)
410410
.filter(signature => {
411411
// We don't support saving witnesses for non-recoverable signatures
412412
// we could change this eventually, but the issue is that the witness may become invalid

packages/sessions/src/trackers/multiple.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -132,17 +132,17 @@ export class MultipleTracker implements migrator.PresignedMigrationTracker, Conf
132132

133133
const result = Object.keys(wallets).map(w => ({ wallet: w, proof: wallets[w] }))
134134

135-
const witnesses = new Map<string, { wallet: string; digest: string; chainId: bigint; signatures: string[] }>()
135+
const witnesses = new Map<string, { wallet: string; digest: string; chainId: bigint; signatures: SignerSignature[] }>()
136136
result.forEach(({ wallet, proof: { digest, chainId, signature } }) => {
137137
const key = `${wallet}-${digest}-${chainId}`
138138
let signatures = witnesses.get(key)
139139
if (!signatures) {
140140
signatures = { wallet, digest, chainId, signatures: [] }
141141
witnesses.set(key, signatures)
142142
}
143-
signatures.signatures.push(signature)
143+
signatures.signatures.push({ address: args.signer, signature, referenceChainId: chainId })
144144
})
145-
witnesses.forEach(witnesses => this.saveWitnesses(witnesses))
145+
witnesses.forEach(witness => this.saveWitnesses(witness))
146146

147147
return result
148148
}
@@ -151,7 +151,7 @@ export class MultipleTracker implements migrator.PresignedMigrationTracker, Conf
151151
wallet: string
152152
digest: string
153153
chainId: ethers.BigNumberish
154-
signatures: string[] | SignerSignature[]
154+
signatures: SignerSignature[]
155155
}): Promise<void> {
156156
await Promise.all(this.trackers.map(t => t.saveWitnesses(args)))
157157
}

packages/sessions/src/trackers/remote/index.ts

+11-27
Original file line numberDiff line numberDiff line change
@@ -56,38 +56,22 @@ export class RemoteConfigTracker implements ConfigTracker, migrator.PresignedMig
5656
wallet: string
5757
digest: string
5858
chainId: ethers.BigNumberish
59-
signatures: string[] | SignerSignature[]
59+
signatures: SignerSignature[]
6060
}): Promise<void> {
6161
let filteredSignatures = args.signatures
6262
if (this.onlyRecoverable) {
63-
filteredSignatures = filteredSignatures.filter(signature => {
64-
if (typeof signature === 'string') {
65-
return commons.signer.canRecover(signature)
66-
} else {
67-
return !!signature.address
68-
}
69-
}) as string[] | SignerSignature[]
63+
filteredSignatures = filteredSignatures.filter(signature => !!signature.address)
7064
}
7165

72-
if (filteredSignatures.some(sig => typeof sig === 'string') && filteredSignatures.some(sig => typeof sig === 'object')) {
73-
throw new Error('Signatures must be string[] | SignerSignature[]')
74-
}
75-
if (filteredSignatures.length === 0 || typeof args.signatures[0] === 'string') {
76-
await this.sessions.saveSignerSignatures({
77-
wallet: args.wallet,
78-
digest: args.digest,
79-
chainID: numberString(args.chainId),
80-
signatures: filteredSignatures as string[]
81-
})
82-
} else {
83-
await this.sessions.saveSignerSignatures2({
84-
wallet: args.wallet,
85-
digest: args.digest,
86-
chainID: numberString(args.chainId),
87-
// Rename "address" to "signer"
88-
signatures: (filteredSignatures as SignerSignature[]).map(({ address, signature, referenceChainId }) => ({ signer: address, signature, referenceChainId: referenceChainId?.toString() }))
89-
})
90-
}
66+
// Rename "address" to "signer"
67+
const mappedSignatures = filteredSignatures.map(({ address, signature, referenceChainId }) => ({ signer: address, signature, referenceChainId: referenceChainId?.toString() }))
68+
69+
await this.sessions.saveSignerSignatures2({
70+
wallet: args.wallet,
71+
digest: args.digest,
72+
chainID: numberString(args.chainId),
73+
signatures: mappedSignatures
74+
})
9175
}
9276

9377
async configOfImageHash(args: { imageHash: string }): Promise<commons.config.Config | undefined> {

0 commit comments

Comments
 (0)