twitch2ma
Version:
Twitch chat bot that runs commands on the MA GrandMA2 using Telnet.
62 lines • 2.1 kB
JavaScript
;
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