UNPKG

twitch2ma

Version:

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

109 lines 4.04 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PermissionCollector = exports.PermissionController = exports.Reason = exports.PermissionError = void 0; class PermissionError extends Error { constructor(permissionCollector) { super(); this.permissionCollector = permissionCollector; Object.setPrototypeOf(this, PermissionError.prototype); this.name = PermissionError.name; } } exports.PermissionError = PermissionError; class Reason { constructor(name, viewerMessage) { this.name = name; this.viewerMessage = viewerMessage; } } exports.Reason = Reason; class PermissionController { constructor() { this.permissionInstances = []; this.additionalRuntimeInformation = new Map(); } withPermissionInstance(instance) { this.permissionInstances.push(instance); return this; } checkPermissions(runtimeInformation) { return __awaiter(this, void 0, void 0, function* () { let permissionCollector = new PermissionCollector(); for (const permissionInstance of this.permissionInstances) { permissionInstance.check(permissionCollector, runtimeInformation, this.additionalRuntimeInformation); } if (permissionCollector.permissionDenied) { throw new PermissionError(permissionCollector); } return permissionCollector; }); } setAdditionalRuntimeInformation(name, value) { this.additionalRuntimeInformation.set(name, value); } start() { let startChain = Promise.resolve(); for (const permissionInstance of this.permissionInstances) { startChain = startChain .then(() => permissionInstance.start()); } return startChain; } stop() { let stopChain = Promise.resolve(); for (const permissionInstance of this.permissionInstances) { stopChain = stopChain .then(() => permissionInstance.stop()); } return stopChain; } reloadConfig(config) { let reloadChain = Promise.resolve(); for (const permissionInstance of this.permissionInstances) { reloadChain .then(() => permissionInstance.reloadConfig(config)); } return reloadChain; } } exports.PermissionController = PermissionController; class PermissionCollector { constructor() { this._permissionDenied = false; this._godMode = false; this._godModeReasons = []; this._permissionDeniedReasons = []; } denyPermission(reason, message) { this._permissionDenied = !this._godMode; this._permissionDeniedReasons.push(new Reason(reason, message)); } enableGodMode(reason) { this._permissionDenied = false; this._godMode = true; this._godModeReasons.push(reason); } get permissionDenied() { return this._permissionDenied; } get permissionDeniedReasons() { return this._permissionDeniedReasons; } get godMode() { return this._godMode; } get godModeReasons() { return this._godModeReasons; } } exports.PermissionCollector = PermissionCollector; //# sourceMappingURL=PermissionController.js.map