Rename everything to welshman

This commit is contained in:
Jon Staab
2024-04-22 13:18:56 -07:00
parent eb5ffe873e
commit 16b1f22a95
40 changed files with 144 additions and 161 deletions
+26
View File
@@ -0,0 +1,26 @@
import {Emitter} from '@welshman/lib'
import type {Message} from '@welshman/util'
import type {Target} from '../Executor'
export class Multi extends Emitter {
constructor(readonly targets: Target[]) {
super()
targets.forEach(t => {
t.on('*', (verb, ...args) => this.emit(verb, ...args))
})
}
get connections() {
return this.targets.flatMap(t => t.connections)
}
send(...payload: Message) {
this.targets.forEach(t => t.send(...payload))
}
cleanup = () => {
this.removeAllListeners()
this.targets.forEach(t => t.cleanup())
}
}
+29
View File
@@ -0,0 +1,29 @@
import {Emitter} from '@welshman/lib'
import type {Message} from '@welshman/util'
import type {PlexMessage} from '../Socket'
import type {Connection} from '../Connection'
export class Plex extends Emitter {
constructor(readonly urls: string[], readonly connection: Connection) {
super()
this.connection.on('receive', this.onMessage)
}
get connections() {
return [this.connection]
}
send = (...payload: Message) => {
this.connection.send([{relays: this.urls}, payload])
}
onMessage = (connection: Connection, [{relays}, [verb, ...payload]]: PlexMessage) => {
this.emit(verb, relays[0], ...payload)
}
cleanup = () => {
this.removeAllListeners()
this.connection.off('receive', this.onMessage)
}
}
+28
View File
@@ -0,0 +1,28 @@
import {Emitter} from '@welshman/lib'
import type {Message} from '@welshman/util'
import type {Connection} from '../Connection'
export class Relay extends Emitter {
constructor(readonly connection: Connection) {
super()
this.connection.on('receive', this.onMessage)
}
get connections() {
return [this.connection]
}
send(...payload: Message) {
this.connection.send(payload)
}
onMessage = (connection: Connection, [verb, ...payload]: Message) => {
this.emit(verb, connection.url, ...payload)
}
cleanup = () => {
this.removeAllListeners()
this.connection.off('receive', this.onMessage)
}
}
+30
View File
@@ -0,0 +1,30 @@
import {Emitter} from '@welshman/lib'
import type {Message} from '@welshman/util'
import type {Connection} from '../Connection'
export class Relays extends Emitter {
constructor(readonly connections: Connection[]) {
super()
connections.forEach(connection => {
connection.on('receive', this.onMessage)
})
}
send = (...payload: Message) => {
this.connections.forEach(connection => {
connection.send(payload)
})
}
onMessage = (connection: Connection, [verb, ...payload]: Message) => {
this.emit(verb, connection.url, ...payload)
}
cleanup = () => {
this.removeAllListeners()
this.connections.forEach(connection => {
connection.off('receive', this.onMessage)
})
}
}