diff --git a/.changeset/arweave-graphql-errors.md b/.changeset/arweave-graphql-errors.md new file mode 100644 index 0000000000..8bafee70e5 --- /dev/null +++ b/.changeset/arweave-graphql-errors.md @@ -0,0 +1,5 @@ +--- +'@0xsequence/sessions': patch +--- + +Throw a descriptive error when the Arweave GraphQL gateway returns a non-2xx response, instead of failing to parse an HTML error page as JSON diff --git a/packages/sessions/src/trackers/arweave.ts b/packages/sessions/src/trackers/arweave.ts index d0919964cb..2f57ead2cc 100644 --- a/packages/sessions/src/trackers/arweave.ts +++ b/packages/sessions/src/trackers/arweave.ts @@ -578,6 +578,10 @@ async function findItems( await new Promise(resolve => setTimeout(resolve, rateLimitRetryDelayMs)) } + if (!response.ok) { + throw new Error(`${graphqlUrl} returned ${response.status} ${response.statusText}`) + } + const { data: { transactions } } = await response.json() diff --git a/packages/sessions/tests/arweave.spec.ts b/packages/sessions/tests/arweave.spec.ts index 44bc4692b0..a2ee62cbf7 100644 --- a/packages/sessions/tests/arweave.spec.ts +++ b/packages/sessions/tests/arweave.spec.ts @@ -15,7 +15,7 @@ class MockProvider extends ethers.AbstractProvider { } describe('Arweave config reader', () => { - const options = { namespace: 'xOovxYFkIwBpEwSi', owners: ['lJYCA4xBPJeZSgr9AF_4pHp4HVGvTOa4NYKJRoMBP5c'] } + const options = { namespace: 'xOovxYFkIwBpEwSi', owners: ['0xB5c3023dbEcE7a6Bb78014000CD1C8ce940B50a0'] } const arweave = new trackers.arweave.ArweaveReader(options) const sessions = new trackers.remote.RemoteConfigTracker('http://localhost:5555') const provider = new MockProvider()