Files
welshman/packages/net/target/Local.ts
T
2024-05-15 09:15:46 -07:00

31 lines
599 B
TypeScript

import {Emitter} from '@welshman/lib'
import {Relay, LOCAL_RELAY_URL} from '@welshman/util'
import type {Message} from '../Socket'
export class Local extends Emitter {
constructor(readonly relay: Relay) {
super()
relay.on('*', this.onMessage)
}
get connections() {
return []
}
send(...payload: Message) {
this.relay.send(...payload)
}
onMessage = (...message: Message) => {
const [verb, ...payload] = message
this.emit(verb, LOCAL_RELAY_URL, ...payload)
}
cleanup = () => {
this.removeAllListeners()
this.relay.off('*', this.onMessage)
}
}