UNPKG

betfair-node

Version:

A comprehensive Node.js TypeScript library for the Betfair Exchange API, providing both JSON-RPC API integration and real-time Exchange Stream API support for automated betting and trading applications.

103 lines 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getHeartbeatInterval = exports.isHeartbeatActive = exports.updateHeartbeatInterval = exports.refreshHeartbeat = exports.stopHeartbeat = exports.startHeartbeat = exports.createHeartbeatState = void 0; /** * Creates a new heartbeat state * @param heartbeatMs - Heartbeat interval in milliseconds * @param onHeartAttack - Callback function when heartbeat fails * @returns Initial heartbeat state */ const createHeartbeatState = (heartbeatMs, onHeartAttack) => ({ isBeating: false, heartbeatMs, onHeartAttack, }); exports.createHeartbeatState = createHeartbeatState; /** * Starts the heartbeat monitoring * @param state - Current heartbeat state * @returns Updated heartbeat state */ const startHeartbeat = (state) => { if (state.isBeating) { return state; // Already beating } // Starting heartbeat // Add extra 2 seconds to reduce chance of accidental heart attack const timeout = setTimeout(state.onHeartAttack, state.heartbeatMs + 2000); return { ...state, isBeating: true, timeout, }; }; exports.startHeartbeat = startHeartbeat; /** * Stops the heartbeat monitoring * @param state - Current heartbeat state * @returns Updated heartbeat state */ const stopHeartbeat = (state) => { if (!state.isBeating) { return state; // Already stopped } // Stopping heartbeat if (state.timeout) { clearTimeout(state.timeout); } return { ...state, isBeating: false, timeout: undefined, }; }; exports.stopHeartbeat = stopHeartbeat; /** * Refreshes the heartbeat timer by stopping and restarting it * @param state - Current heartbeat state * @returns Updated heartbeat state */ const refreshHeartbeat = (state) => { if (!state.isBeating) { return state; // Don't warn - just return if not beating } // Stop and restart for a more reliable refresh const stoppedState = (0, exports.stopHeartbeat)(state); return (0, exports.startHeartbeat)(stoppedState); }; exports.refreshHeartbeat = refreshHeartbeat; /** * Updates the heartbeat interval * @param state - Current heartbeat state * @param newHeartbeatMs - New heartbeat interval in milliseconds * @returns Updated heartbeat state */ const updateHeartbeatInterval = (state, newHeartbeatMs) => { const updatedState = { ...state, heartbeatMs: newHeartbeatMs }; if (state.isBeating) { // Restart with new interval const stoppedState = (0, exports.stopHeartbeat)(updatedState); return (0, exports.startHeartbeat)(stoppedState); } return updatedState; }; exports.updateHeartbeatInterval = updateHeartbeatInterval; /** * Checks if the heartbeat is currently active * @param state - Current heartbeat state * @returns True if heartbeat is active */ const isHeartbeatActive = (state) => { return state.isBeating; }; exports.isHeartbeatActive = isHeartbeatActive; /** * Gets the current heartbeat interval * @param state - Current heartbeat state * @returns Heartbeat interval in milliseconds */ const getHeartbeatInterval = (state) => { return state.heartbeatMs; }; exports.getHeartbeatInterval = getHeartbeatInterval; //# sourceMappingURL=heartbeat.js.map