UNPKG

msg.ts

Version:

MSG is the framework for make discord bot easily

58 lines 2.29 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const chalk_1 = __importDefault(require("chalk")); const logMid = (middleware, index, depth = 0) => { const tab = ' '; let outStr = `${tab.repeat(depth)}${chalk_1.default.hex('#1AB7AF')(`[${index}]`)} `; if (middleware.name) { outStr += `current middleware: ${chalk_1.default.hex('#7BA047')(`${middleware.name}`)}`; } else outStr += `(anonymous middleware)`; console.log(outStr); }; const checkAndExecuteF = async (ctx, cmd) => { const ctxCopyForCond = ctx.copyAndIncrease(); if (await cmd.cond(ctxCopyForCond)) { const ctxCopyForExecute = ctx.copyAndIncrease(); const res = (await cmd.executor(ctxCopyForExecute)).copyAndDiminish(); if (res.header.getIsFinished()) { res.header.setHit(); cmd.name && res.header.setHitCommand(cmd.name); } return res; } return ctxCopyForCond.copyAndDiminish(); }; class MiddlewareChainRunner { constructor(middlewareChain) { this.middlewareChain = middlewareChain; } async run(firstContext) { let lastContext = firstContext; for (let i = 0; i < this.middlewareChain.length; i += 1) { const middleware = this.middlewareChain[i]; logMid(middleware, i, lastContext.header.getDepth()); try { const res = await checkAndExecuteF(lastContext, middleware); if (res.header.getIsFinished()) { if (process.argv.includes('--log')) { console.log(`${' '.repeat(res.header.getDepth())}${chalk_1.default.red('<terminated>')}`); } return res; } lastContext = res; } catch (e) { console.error(e); } } console.log('middleware chain has drain'); return lastContext; } } exports.default = MiddlewareChainRunner; //# sourceMappingURL=../../src/dist/class/MiddlewareChainRunner.js.map