UNPKG

twitch2ma

Version:

Twitch chat bot that runs commands on the MA GrandMA2 using Telnet.

62 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CommandSocket = exports.SocketError = void 0; const typed_event_emitter_1 = require("@d-fischer/typed-event-emitter"); const ipc = require("node-ipc"); class SocketError extends Error { constructor(message) { super(message); Object.setPrototypeOf(this, SocketError.prototype); this.name = SocketError.name; } } exports.SocketError = SocketError; class CommandSocket extends typed_event_emitter_1.EventEmitter { constructor() { super(); this.onExitCommand = this.registerEvent(); this.onReloadConfigCommand = this.registerEvent(); this.onError = this.registerEvent(); ipc.config.appspace = "twitch2ma."; ipc.config.id = "main"; ipc.config.silent = true; } start() { return this.checkSocketExists() .then(() => { ipc.serve(() => { ipc.server.on("error", error => { this.emit(this.onError, error); }); ipc.server.on("exit", () => { this.emit(this.onExitCommand); }); ipc.server.on("reloadConfig", newConfigFile => { this.emit(this.onReloadConfigCommand, newConfigFile); }); }); ipc.server.start(); }); } stop() { if (ipc.server && ipc.server.stop) { ipc.server.stop(); } } checkSocketExists() { return new Promise((resolve, reject) => { ipc.connectTo("main", () => { ipc.of.main.on("connect", () => { ipc.disconnect("main"); reject(new SocketError("Socket exists! Is twitch2ma already running?")); }); ipc.of.main.on("error", () => { ipc.disconnect("main"); resolve(); }); }); }); } } exports.CommandSocket = CommandSocket; //# sourceMappingURL=CommandSocket.js.map