UNPKG

@renegade-fi/node

Version:
79 lines 2.51 kB
import { AuthType, RelayerWebsocket, WS_WALLET_ORDERS_ROUTE, getWalletId, } from "@renegade-fi/core"; export function createOrderWebSocket(options) { return new OrderWebSocketImpl(options); } class OrderWebSocketImpl { constructor(options) { Object.defineProperty(this, "config", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "ws", { enumerable: true, configurable: true, writable: true, value: null }); Object.defineProperty(this, "callback", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "walletId", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.config = options.config; this.callback = options.onUpdate; this.walletId = getWalletId(this.config); } connect() { if (this.ws) return; this.ws = new RelayerWebsocket({ config: this.config, topic: WS_WALLET_ORDERS_ROUTE(this.walletId), authType: AuthType.Wallet, onmessage: (event) => this.handleMessage(event), oncloseCallback: () => this.handleClose(), onerrorCallback: () => this.handleError(), }); this.ws.connect(); } disconnect() { this.ws?.close(); this.ws = null; } handleMessage(event) { try { const message = JSON.parse(event.data, (key, value) => { if (typeof value === "number" && key !== "price") { return BigInt(value); } return value; }); if (message.topic === WS_WALLET_ORDERS_ROUTE(this.walletId) && message.event?.type === "OrderMetadataUpdated" && message.event?.order) { this.callback(message.event.order); } } catch (error) { console.error("Error processing WebSocket message:", error); } } handleClose() { console.log("WebSocket connection closed"); this.ws = null; } handleError() { console.error("WebSocket connection error"); this.ws = null; } } //# sourceMappingURL=orderWebSocket.js.map