UNPKG

chia-agent

Version:
58 lines (57 loc) 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultTimeoutInMs = void 0; exports.open = open; const fs_1 = require("fs"); const config_1 = require("../config"); const WS = require("ws"); const logger_1 = require("../logger"); function create(url) { const daemonCertPath = (0, config_1.getPathFromConfig)("/daemon_ssl/private_crt") || config_1.defaultDaemonCertPath; const daemonKeyPath = (0, config_1.getPathFromConfig)("/daemon_ssl/private_key") || config_1.defaultDaemonKeyPath; if (!(0, fs_1.existsSync)(daemonCertPath)) { (0, logger_1.getLogger)().error("daemon cert file was not found at: " + daemonCertPath); throw new Error("Cert file not found"); } if (!(0, fs_1.existsSync)(daemonCertPath)) { (0, logger_1.getLogger)().error("daemon key file was not found at: " + daemonCertPath); throw new Error("Key file not found"); } const cert = (0, fs_1.readFileSync)(daemonCertPath); const key = (0, fs_1.readFileSync)(daemonKeyPath); const options = { cert, key, rejectUnauthorized: false, }; return new WS(url, options); } exports.defaultTimeoutInMs = 50000; function open(url, timeoutMs) { return new Promise((resolve, reject) => { const ws = create(url); let timer = null; timeoutMs = typeof timeoutMs === "number" ? timeoutMs : exports.defaultTimeoutInMs; let opened = false; timer = setTimeout(() => { timer = null; (0, logger_1.getLogger)().error("Request to open connection timed out"); reject("Timeout"); }, timeoutMs); const onOpenError = (err) => { if (!opened) { reject(err); } }; ws.on("open", (openEvent) => { opened = true; ws.off("error", onOpenError); if (timer !== null) { clearTimeout(timer); timer = null; resolve({ ws, openEvent }); } }); ws.on("error", onOpenError); }); }