UNPKG

@usirin/spellcaster

Version:

Remote execution of spells defined in spellbooks

33 lines (32 loc) 1.19 kB
import * as __WEBPACK_EXTERNAL_MODULE__usirin_forge_181b4736__ from "@usirin/forge"; import * as __WEBPACK_EXTERNAL_MODULE__transport_js_83a5c232__ from "./transport.js"; const createSpellCaster = (0, __WEBPACK_EXTERNAL_MODULE__usirin_forge_181b4736__.factory)("caster", (options)=>({ async cast (name, parameters) { return cast(options.transport, name, parameters); }, getTransport () { return options.transport; } })); async function cast(transport, name, parameters) { const writer = transport.outgoing.getWriter(); const reader = transport.incoming.getReader(); try { await writer.ready; await writer.write((0, __WEBPACK_EXTERNAL_MODULE__transport_js_83a5c232__.createRequest)({ name: name, parameters })); } finally{ writer.releaseLock(); } try { const { value: response } = await reader.read(); if (!response) throw new Error("No response"); if (response.error) throw new Error(response.error.message); return response.result; } finally{ reader.releaseLock(); } } export { cast, createSpellCaster };