main
ts 21 lines 623 Bytes
Raw
1 import { base64 } from 'multiformats/bases/base64'
2 import { toObject } from './to-object.js'
3 import type { Peer } from '../rpc/index.js'
4 import type { PeerId, PeerStore } from '@libp2p/interface'
5
6 export interface Components {
7 peerId: PeerId
8 peerStore: PeerStore
9 }
10
11 export async function getSelf (components: Components): Promise<Peer> {
12 const peer = await components.peerStore.get(components.peerId)
13
14 return {
15 id: peer.id,
16 addresses: peer.addresses,
17 protocols: [...peer.protocols],
18 tags: toObject(peer.tags, (t) => t.value),
19 metadata: toObject(peer.metadata, (buf) => base64.encode(buf))
20 }
21 }