UNPKG

@usirin/spellcaster

Version:

Remote execution of spells defined in spellbooks

52 lines (51 loc) 1.83 kB
import * as __WEBPACK_EXTERNAL_MODULE_node_events_0a6aefe7__ from "node:events"; import * as __WEBPACK_EXTERNAL_MODULE__transport_js_4e75716a__ from "../transport.js"; function createEmitterPair() { const client = new __WEBPACK_EXTERNAL_MODULE_node_events_0a6aefe7__.EventEmitter(); const server = new __WEBPACK_EXTERNAL_MODULE_node_events_0a6aefe7__.EventEmitter(); client.on("request", (data)=>{ server.emit("request", data); }); server.on("response", (data)=>{ client.emit("response", data); }); return [ client, server ]; } function createServerTransport(emitter) { return __WEBPACK_EXTERNAL_MODULE__transport_js_4e75716a__.createServerTransport({ incoming: new ReadableStream({ start (controller) { emitter.on("request", (data)=>{ const message = JSON.parse(data.toString()); controller.enqueue(message); }); } }), outgoing: new WritableStream({ write (response) { emitter.emit("response", JSON.stringify(response)); } }) }); } function createClientTransport(emitter) { return __WEBPACK_EXTERNAL_MODULE__transport_js_4e75716a__.createClientTransport({ incoming: new ReadableStream({ start (controller) { emitter.on("response", (data)=>{ const message = JSON.parse(data.toString()); controller.enqueue(message); }); } }), outgoing: new WritableStream({ write (request) { emitter.emit("request", JSON.stringify(request)); } }) }); } export { createClientTransport, createEmitterPair, createServerTransport };