bibliogram/src/site/repl.js

33 lines
1010 B
JavaScript

const {instance, pugCache, wss} = require("./passthrough")
const {requestCache, timelineEntryCache} = require("../lib/collectors")
const constants = require("../lib/constants")
const util = require("util")
const repl = require("repl")
const vm = require("vm")
/**
* @param {string} input
* @param {vm.Context} context
* @param {string} filename
* @param {(err: Error|null, result: any) => any} callback
*/
async function customEval(input, context, filename, callback) {
let depth = 0
if (input == "exit\n") return process.exit()
if (input.startsWith(":")) {
const depthOverwrite = input.split(" ")[0]
depth = +depthOverwrite.slice(1)
input = input.slice(depthOverwrite.length + 1)
}
const result = await eval(input)
const output = util.inspect(result, false, depth, true)
return callback(undefined, output)
}
function customWriter(output) {
return output
}
console.log("REPL started")
repl.start({prompt: "b) ", eval: customEval, writer: customWriter}).once("exit", () => process.exit())