@@ -12,6 +12,7 @@ const MAIN_MODULE_ABI = [
12
12
export interface Options {
13
13
readonly namespace ?: string
14
14
readonly owners ?: string [ ]
15
+ readonly arweaveUrl ?: string
15
16
readonly graphqlUrl ?: string
16
17
readonly eip5719Provider ?: ethers . Provider
17
18
readonly rateLimitRetryDelayMs ?: number
@@ -20,6 +21,7 @@ export interface Options {
20
21
export const defaults = {
21
22
namespace : 'Sequence-Sessions' ,
22
23
owners : [ 'AZ6R2mG8zxW9q7--iZXGrBknjegHoPzmG5IG-nxvMaM' ] ,
24
+ arweaveUrl : 'https://arweave.net' ,
23
25
graphqlUrl : 'https://arweave.net/graphql' ,
24
26
eip5719Provider : undefined ,
25
27
rateLimitRetryDelayMs : 5 * 60 * 1000
@@ -175,7 +177,7 @@ export class ArweaveReader implements ConfigTracker, migrator.PresignedMigration
175
177
nextCandidateSigners . map ( async signer => {
176
178
const { id, subdigest, signatureType } = nextCandidateItems . get ( signer ) !
177
179
try {
178
- let signature = await ( await fetchItem ( id , this . options . rateLimitRetryDelayMs ) ) . text ( )
180
+ let signature = await ( await fetchItem ( id , this . options . rateLimitRetryDelayMs , this . options . arweaveUrl ) ) . text ( )
179
181
switch ( signatureType ) {
180
182
case 'eip-712' :
181
183
signature += '01'
@@ -276,7 +278,10 @@ export class ArweaveReader implements ConfigTracker, migrator.PresignedMigration
276
278
277
279
for ( const { id, version } of items ) {
278
280
try {
279
- const config = { ...( await ( await fetchItem ( id , this . options . rateLimitRetryDelayMs ) ) . json ( ) ) , version }
281
+ const config = {
282
+ ...( await ( await fetchItem ( id , this . options . rateLimitRetryDelayMs , this . options . arweaveUrl ) ) . json ( ) ) ,
283
+ version
284
+ }
280
285
if ( config . tree ) {
281
286
config . tree = toTopology ( config . tree )
282
287
}
@@ -401,7 +406,7 @@ export class ArweaveReader implements ConfigTracker, migrator.PresignedMigration
401
406
throw new Error ( 'incorrect subdigest' )
402
407
}
403
408
404
- const signature = fetchItem ( id , this . options . rateLimitRetryDelayMs ) . then ( async response => {
409
+ const signature = fetchItem ( id , this . options . rateLimitRetryDelayMs , this . options . arweaveUrl ) . then ( async response => {
405
410
const signature = ( await response . text ( ) ) + signatureType
406
411
if ( this . eip5719 ) {
407
412
try {
@@ -488,7 +493,7 @@ export class ArweaveReader implements ConfigTracker, migrator.PresignedMigration
488
493
const { id, toVersion, toImageHash, executor } = items [ 0 ]
489
494
490
495
const [ data , toConfig ] = await Promise . all ( [
491
- fetchItem ( id , this . options . rateLimitRetryDelayMs ) . then ( response => response . text ( ) ) ,
496
+ fetchItem ( id , this . options . rateLimitRetryDelayMs , this . options . arweaveUrl ) . then ( response => response . text ( ) ) ,
492
497
this . configOfImageHash ( { imageHash : toImageHash } )
493
498
] )
494
499
@@ -568,7 +573,7 @@ async function findItems(
568
573
break
569
574
}
570
575
console . warn (
571
- `rate limited by arweave.net , trying again in ${ rateLimitRetryDelayMs / 1000 } seconds at ${ new Date ( Date . now ( ) + rateLimitRetryDelayMs ) . toLocaleTimeString ( ) } `
576
+ `rate limited by ${ graphqlUrl } , trying again in ${ rateLimitRetryDelayMs / 1000 } seconds at ${ new Date ( Date . now ( ) + rateLimitRetryDelayMs ) . toLocaleTimeString ( ) } `
572
577
)
573
578
await new Promise ( resolve => setTimeout ( resolve , rateLimitRetryDelayMs ) )
574
579
}
@@ -595,14 +600,18 @@ async function findItems(
595
600
)
596
601
}
597
602
598
- async function fetchItem ( id : string , rateLimitRetryDelayMs = defaults . rateLimitRetryDelayMs ) : Promise < Response > {
603
+ async function fetchItem (
604
+ id : string ,
605
+ rateLimitRetryDelayMs = defaults . rateLimitRetryDelayMs ,
606
+ arweaveUrl = defaults . arweaveUrl
607
+ ) : Promise < Response > {
599
608
while ( true ) {
600
- const response = await fetch ( `https://arweave.net /${ id } ` , { redirect : 'follow' } )
609
+ const response = await fetch ( `${ arweaveUrl } /${ id } ` , { redirect : 'follow' } )
601
610
if ( response . status !== 429 ) {
602
611
return response
603
612
}
604
613
console . warn (
605
- `rate limited by arweave.net , trying again in ${ rateLimitRetryDelayMs / 1000 } seconds at ${ new Date ( Date . now ( ) + rateLimitRetryDelayMs ) . toLocaleTimeString ( ) } `
614
+ `rate limited by ${ arweaveUrl } , trying again in ${ rateLimitRetryDelayMs / 1000 } seconds at ${ new Date ( Date . now ( ) + rateLimitRetryDelayMs ) . toLocaleTimeString ( ) } `
606
615
)
607
616
await new Promise ( resolve => setTimeout ( resolve , rateLimitRetryDelayMs ) )
608
617
}
0 commit comments