40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { WebSocketHandler, ServerWebSocket, Server } from 'bun';
|
|
import { Adapter, AdapterInstance, Peer, AdapterOptions } from '../index.js';
|
|
import '../shared/crossws.BQXMA5bH.js';
|
|
|
|
interface BunAdapter extends AdapterInstance {
|
|
websocket: WebSocketHandler<ContextData>;
|
|
handleUpgrade(req: Request, server: Server): Promise<Response | undefined>;
|
|
}
|
|
interface BunOptions extends AdapterOptions {
|
|
}
|
|
type ContextData = {
|
|
peer?: BunPeer;
|
|
request: Request;
|
|
server?: Server;
|
|
context: Peer["context"];
|
|
};
|
|
declare const bunAdapter: Adapter<BunAdapter, BunOptions>;
|
|
|
|
declare class BunPeer extends Peer<{
|
|
ws: ServerWebSocket<ContextData>;
|
|
request: Request;
|
|
peers: Set<BunPeer>;
|
|
}> {
|
|
get remoteAddress(): string;
|
|
get context(): Peer["context"];
|
|
send(data: unknown, options?: {
|
|
compress?: boolean;
|
|
}): number;
|
|
publish(topic: string, data: unknown, options?: {
|
|
compress?: boolean;
|
|
}): number;
|
|
subscribe(topic: string): void;
|
|
unsubscribe(topic: string): void;
|
|
close(code?: number, reason?: string): void;
|
|
terminate(): void;
|
|
}
|
|
|
|
export { bunAdapter as default };
|
|
export type { BunAdapter, BunOptions };
|