libp2p
    Preparing search index...

    Module @libp2p/fetch

    An implementation of the Fetch protocol as described here: https://github.com/libp2p/specs/tree/master/fetch

    The fetch protocol is a simple protocol for requesting a value corresponding to a key from a peer.

    import { createLibp2p } from 'libp2p'
    import { fetch } from '@libp2p/fetch'
    import { peerIdFromString } from '@libp2p/peer-id'

    const libp2p = await createLibp2p({
    services: {
    fetch: fetch()
    }
    })

    // Given a key (as a Uint8Array) returns a value (as a Uint8Array), or
    // undefined if the key isn't found.
    //
    // All keys must be prefixed by the same prefix, which will be used to find
    // the appropriate key lookup function.
    async function my_subsystem_key_lookup (key: Uint8Array): Promise<Uint8Array | undefined> {
    // app specific callback to lookup key-value pairs.
    return Uint8Array.from([0, 1, 2, 3, 4])
    }

    // Enable this peer to respond to fetch requests for keys that begin with
    // '/my_subsystem_key_prefix/'
    libp2p.services.fetch.registerLookupFunction('/my_subsystem_key_prefix/', my_subsystem_key_lookup)

    const key = '/my_subsystem_key_prefix/{...}'
    const peerDst = peerIdFromString('Qmfoo...')

    // Load the value from the remote peer, timing out after 10s
    const value = await libp2p.services.fetch.fetch(peerDst, key, {
    signal: AbortSignal.timeout(10_000)
    })

    @libp2p/fetch

    libp2p.io Discuss codecov CI

    Implementation of the Fetch Protocol

    About

    An implementation of the Fetch protocol as described here: https://github.com/libp2p/specs/tree/master/fetch

    The fetch protocol is a simple protocol for requesting a value corresponding to a key from a peer.

    import { createLibp2p } from 'libp2p'
    import { fetch } from '@libp2p/fetch'
    import { peerIdFromString } from '@libp2p/peer-id'

    const libp2p = await createLibp2p({
    services: {
    fetch: fetch()
    }
    })

    // Given a key (as a Uint8Array) returns a value (as a Uint8Array), or
    // undefined if the key isn't found.
    //
    // All keys must be prefixed by the same prefix, which will be used to find
    // the appropriate key lookup function.
    async function my_subsystem_key_lookup (key: Uint8Array): Promise<Uint8Array | undefined> {
    // app specific callback to lookup key-value pairs.
    return Uint8Array.from([0, 1, 2, 3, 4])
    }

    // Enable this peer to respond to fetch requests for keys that begin with
    // '/my_subsystem_key_prefix/'
    libp2p.services.fetch.registerLookupFunction('/my_subsystem_key_prefix/', my_subsystem_key_lookup)

    const key = '/my_subsystem_key_prefix/{...}'
    const peerDst = peerIdFromString('Qmfoo...')

    // Load the value from the remote peer, timing out after 10s
    const value = await libp2p.services.fetch.fetch(peerDst, key, {
    signal: AbortSignal.timeout(10_000)
    })

    Install

    $ npm i @libp2p/fetch
    

    Loading this module through a script tag will make its exports available as Libp2pFetch in the global namespace.

    <script src="https://unpkg.com/@libp2p/fetch/dist/index.min.js"></script>
    

    API Docs

    License

    Licensed under either of

    Contribution

    Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

    Interfaces

    Fetch
    FetchComponents
    FetchInit
    LookupFunction

    Functions

    fetch