Fetch library for decentralized web protocols (IPFS, IPNS, Arweave) with native protocol clients and verified content retrieval.
import { createDwebFetch } from '@1001-digital/dweb-fetch'
const dwebFetch = createDwebFetch()
// IPFS
const ipfsResponse = await dwebFetch('ipfs://bafyABC...')
// IPNS
const ipnsResponse = await dwebFetch('ipns://example.eth')
// Arweave
const arResponse = await dwebFetch('ar://txId123')
// HTTPS passthrough
const httpsResponse = await dwebFetch('https://example.com/data.json')const dwebFetch = createDwebFetch({
ipfs: {
gateways: ['https://my-gateway.io'],
routers: ['https://my-router.io'],
},
arweave: {
// Custom static gateways (tried first by default)
gateways: ['https://arweave.net', 'https://ar-io.dev'],
// Routing strategy for network discovery fallback: 'random' | 'fastest' | 'balanced' | 'preferred'
routingStrategy: 'fastest',
// Disable network discovery fallback entirely
useNetworkDiscovery: false,
},
})- IPFS/IPNS —
@helia/verified-fetchfor content-verified retrieval - Arweave — Static gateways first, falls back to
@ar.io/wayfinder-corenetwork discovery - HTTP/HTTPS — Native
fetchpassthrough
All backends are lazily initialized on first use.
Creates a fetch function that routes URLs to the appropriate protocol handler. Synchronous — backends initialize lazily on first fetch.
Extracts the URL scheme (e.g., 'ipfs', 'ar', 'https').
Parses a URL into scheme, raw URL, and path components.
DwebFetchError— Base error for all fetch failuresDwebUnsupportedProtocolError— Thrown for unknown URL schemes