@helia/http
Version:
A lightweight implementation of IPFS over HTTP in JavaScript
39 lines (35 loc) • 1.24 kB
text/typescript
import { delegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client'
import { keychain } from '@libp2p/keychain'
import { userAgent } from 'libp2p/user-agent'
import type { Libp2pHTTPDefaultOptions } from './libp2p.ts'
import type { Keychain } from '@libp2p/keychain'
import type { Libp2pOptions } from 'libp2p'
export interface DefaultLibp2pHTTPServices extends Record<string, unknown> {
delegatedRouting: unknown
keychain: Keychain
}
export function libp2pDefaults (options: Libp2pHTTPDefaultOptions = {}): Libp2pOptions<DefaultLibp2pHTTPServices> & Required<Pick<Libp2pOptions<DefaultLibp2pHTTPServices>, 'services'>> {
const agentVersion = `@helia/http ${userAgent()}`
return {
privateKey: options.privateKey,
dns: options.dns,
nodeInfo: {
userAgent: agentVersion
},
addresses: {
listen: []
},
transports: [],
connectionEncrypters: [],
streamMuxers: [],
peerDiscovery: [],
services: {
delegatedRouting: delegatedRoutingV1HttpApiClient({
url: 'https://delegated-ipfs.dev',
filterAddrs: ['https'],
filterProtocols: ['transport-ipfs-gateway-http']
}),
keychain: keychain(options.keychain)
}
}
}