import { matchEvent, bindEagerlyTo } from '@marblejs/core';
import { createServer, ServerEvent, HttpServerEffect } from '@marblejs/http';
import { mapToServer } from '@marblejs/websockets';
import { merge } from 'rxjs';
import { WebSocketServerToken } from './tokens';
import { listener } from './http.listener';
import { webSocketServer } from './ws.listener';
const upgrade$: HttpServerEffect = (event$, ctx) =>
matchEvent(ServerEvent.upgrade),
path: '/api/:version/ws',
server: ctx.ask(WsServerToken),
const server = createServer({
bindEageryTo(WebSocketServerToken)(async () =>
await (await webSocketServer)()
event$: (...args) => merge(