UNPKG

@usirin/spellcaster

Version:

Remote execution of spells defined in spellbooks

45 lines (44 loc) 1.85 kB
import * as __WEBPACK_EXTERNAL_MODULE__usirin_forge_181b4736__ from "@usirin/forge"; import * as __WEBPACK_EXTERNAL_MODULE__usirin_spellbook_db9e8869__ from "@usirin/spellbook"; const createRequest = (0, __WEBPACK_EXTERNAL_MODULE__usirin_forge_181b4736__.factory)("req", ({ name, parameters })=>({ name, parameters })); const createResponse = (0, __WEBPACK_EXTERNAL_MODULE__usirin_forge_181b4736__.factory)("resp", ({ request, result, error })=>({ request, result, error })); function createSpellbookStream(spellbook) { return new TransformStream({ async transform (request, controller) { try { const result = await (0, __WEBPACK_EXTERNAL_MODULE__usirin_spellbook_db9e8869__.execute)(spellbook, request.name, request.parameters); const response = createResponse({ request, result }); controller.enqueue(response); } catch (error) { if (error instanceof Error) { const response = createResponse({ request, error: { message: error.message } }); controller.enqueue(response); } } } }); } const createServerTransport = (0, __WEBPACK_EXTERNAL_MODULE__usirin_forge_181b4736__.factory)("xports", ({ incoming, outgoing })=>({ incoming, outgoing })); const createClientTransport = (0, __WEBPACK_EXTERNAL_MODULE__usirin_forge_181b4736__.factory)("xportc", ({ incoming, outgoing })=>({ incoming, outgoing })); export { createClientTransport, createRequest, createResponse, createServerTransport, createSpellbookStream };