msg.ts
Version:
MSG is the framework for make discord bot easily
58 lines • 2.29 kB
JavaScript
;
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