ludus-repl/listener.ts

36 lines
785 B
TypeScript

import { run } from "@ludus/ludus-js-pure"
const port = Math.floor((Math.random() * 1000) + 50000)
const repl_info = { port }
const repl_file = Bun.file("./.lrepl")
await Bun.write(repl_file, JSON.stringify(repl_info))
console.log(`Ludus REPL listening on localhost:${port}`)
Bun.listen({
hostname: "localhost",
port,
socket: {
data: (socket, data) => {
const source = data.toString("utf-8")
const result = run(source)
const msgs = result.console
for (const msg of msgs) {
console.log(msg)
}
if (!result.errors) console.log(result.result)
else {
console.log("Ludus had some errors:")
console.log(result.errors)
}
},
error: (socket, error) => { console.log(error); socket.end() }
}
})