36 lines
785 B
TypeScript
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() }
|
||
|
}
|
||
|
})
|
||
|
|
||
|
|
||
|
|