MCPcopy
hub / github.com/vitest-dev/vitest / createChannel

Function createChannel

test/browser/specs/inspect.test.ts:51–102  ·  view source on GitHub ↗
(url: string)

Source from the content-addressed store, hash-verified

49}, 60_000)
50
51async function createChannel(url: string) {
52 const ws = new WebSocket(url)
53
54 let id = 1
55 let listeners = []
56
57 ws.onmessage = (message) => {
58 const response = JSON.parse(message.data.toString())
59 listeners.forEach(listener => listener(response))
60 }
61
62 async function receive(methodOrId?: string | { id: number }): Promise<Message> {
63 const { promise, resolve, reject } = withResolvers()
64 listeners.push(listener)
65 ws.onerror = reject
66
67 function listener(message) {
68 const filter = typeof methodOrId === 'string' ? { method: methodOrId } : { id: methodOrId.id }
69
70 const methodMatch = message.method && message.method === filter.method
71 const idMatch = message.id && message.id === filter.id
72
73 if (methodMatch || idMatch) {
74 resolve(message)
75 listeners = listeners.filter(l => l !== listener)
76 ws.onerror = undefined
77 }
78 else if (!filter.id && !filter.method) {
79 resolve(message)
80 }
81 }
82
83 return promise
84 }
85
86 async function send(message: Message): Promise<any> {
87 const currentId = id++
88 const json = JSON.stringify({ ...message, id: currentId })
89
90 const receiver = receive({ id: currentId })
91 ws.send(json)
92
93 return receiver
94 }
95
96 await new Promise((resolve, reject) => {
97 ws.onerror = reject
98 ws.on('open', resolve)
99 })
100
101 return { receive, send }
102}
103
104function withResolvers() {
105 let reject: (error: unknown) => void

Callers 1

inspect.test.tsFile · 0.70

Calls 3

listenerFunction · 0.85
toStringMethod · 0.45
onMethod · 0.45

Tested by

no test coverage detected