main
ts 53 lines 1.33 KB
Raw
1 import { peerIdFromString } from '@libp2p/peer-id'
2 import { multiaddr } from '@multiformats/multiaddr'
3 import type { InspectorIPC, InspectTarget } from '../ipc/index.ts'
4 import type { PeerId } from '@libp2p/interface'
5
6 declare global {
7 var inspector: InspectorIPC
8 }
9
10 class RendererIPC implements InspectorIPC {
11 onTargets (callback: (targets: InspectTarget[]) => void): void {
12 // register for updates from main thread
13 globalThis.inspector.onTargets((targets: any[]) => {
14 callback(targets.map(node => ({
15 ...node,
16 id: peerIdFromString(node.id),
17 multiaddrs: node.multiaddrs.map((ma: string) => multiaddr(ma))
18 })))
19 })
20 }
21
22 onConnected (callback: (err: Error | undefined) => void): void {
23 globalThis.inspector.onConnected((err) => {
24 callback(err)
25 })
26 }
27
28 onRPC (callback: (message: Uint8Array) => void): void {
29 globalThis.inspector.onRPC((message) => {
30 callback(message)
31 })
32 }
33
34 connect (address: string | PeerId): void {
35 globalThis.inspector.connect(address.toString())
36 }
37
38 cancelConnect (): void {
39 globalThis.inspector.cancelConnect()
40 }
41
42 disconnect (): void {
43 globalThis.inspector.disconnect()
44 }
45
46 sendRPC (message: Uint8Array): void {
47 globalThis.inspector.sendRPC(message)
48 }
49 }
50
51 export function rendererIPC (): InspectorIPC {
52 return new RendererIPC()
53 }