}, 10000)
try {
const res = await fetch(req)
- const { status, statusText } = res
+ const status = res.status
+ const statusText = res.statusText ? ` ${res.statusText}` : ''
+ if (status !== 200) {
+ throw new Error(`${status} ${statusText}`, { cause: JSON.stringify(res) })
+ }
const resBody = await res.json()
- const { error, message } = resBody
- if (status !== 200 || error != null) {
- throw new Error(`${status} ${statusText}`, { cause: { error, message } })
+ const code = resBody.code ? `${resBody.code} ` : ''
+ const error = resBody.error ? `${resBody.error}\n` : ''
+ const message = resBody.message ?? ''
+ if (error) {
+ throw new Error(`${code}${error}${message}`, { cause: JSON.stringify(resBody) })
}
return resBody
} catch (err) {
}
const { balances } = await rpc.post('accounts_balances', data) as { balances?: { [address: string]: { balance: string, receivable: string } } }
const { frontiers } = await rpc.post('accounts_frontiers', data) as { frontiers: { [address: string]: string } }
- const { representatives } = await rpc.post('accounts_representatives', data) as { representatives: { [address: string]: string } }
const { blocks } = await rpc.post('blocks_info', { json_block: true, hashes: Object.values(frontiers) }) as BlockInfo
for (const account of accounts.values()) {
account.balance = balances?.[account.address]?.balance ?? 0
account.receivable = balances?.[account.address]?.receivable ?? 0
- account.representative = representatives?.[account.address]
if (frontiers[account.address] != null) {
- const { representative: accountRepresentative } = await rpc.post('account_representative', { account: account.address }) as { representative: string }
- account.representative ??= accountRepresentative
account.frontier = frontiers[account.address]
const { subtype, contents: { balance, link, previous, representative, signature } } = blocks[account.frontier]
+ account.representative = representative
const frontierBlock = new Block(account, balance, previous, representative)
if (typeof frontierBlock[subtype] !== 'function') {
throw new TypeError('Unknown frontier block subtype', { cause: subtype })