| 113 | }; |
| 114 | |
| 115 | type MessagePortListener = (...args: unknown[]) => void; |
| 116 | |
| 117 | type BridgedMessagePort = { |
| 118 | close: () => void; |
| 119 | on: (event: string, listener: MessagePortListener) => unknown; |
| 120 | postMessage: (message: unknown) => void; |
| 121 | start: () => void; |
| 122 | }; |
| 123 | |
| 124 | class WebSocketMessagePort implements BridgedMessagePort { |
| 125 | private closed = false; |
| 126 | private readonly listeners = new Map<string, Set<MessagePortListener>>(); |
| 127 | |
| 128 | constructor( |
| 129 | private readonly portId: string, |
| 130 | private readonly sendToRenderer: (message: MainToRendererMessage) => void, |
| 131 | private readonly onClosed: () => void, |
| 132 | ) {} |
| 133 | |