UNPKG

@usirin/spellcaster

Version:

Remote execution of spells defined in spellbooks

83 lines (82 loc) 3 kB
"use strict"; var __webpack_require__ = {}; (()=>{ __webpack_require__.d = function(exports1, definition) { for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, { enumerable: true, get: definition[key] }); }; })(); (()=>{ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }; })(); (()=>{ __webpack_require__.r = function(exports1) { if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, { value: 'Module' }); Object.defineProperty(exports1, '__esModule', { value: true }); }; })(); var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__); __webpack_require__.d(__webpack_exports__, { createResponse: ()=>createResponse, createRequest: ()=>createRequest, createClientTransport: ()=>createClientTransport, createServerTransport: ()=>createServerTransport, createSpellbookStream: ()=>createSpellbookStream }); const forge_namespaceObject = require("@usirin/forge"); const spellbook_namespaceObject = require("@usirin/spellbook"); const createRequest = (0, forge_namespaceObject.factory)("req", ({ name, parameters })=>({ name, parameters })); const createResponse = (0, forge_namespaceObject.factory)("resp", ({ request, result, error })=>({ request, result, error })); function createSpellbookStream(spellbook) { return new TransformStream({ async transform (request, controller) { try { const result = await (0, spellbook_namespaceObject.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, forge_namespaceObject.factory)("xports", ({ incoming, outgoing })=>({ incoming, outgoing })); const createClientTransport = (0, forge_namespaceObject.factory)("xportc", ({ incoming, outgoing })=>({ incoming, outgoing })); var __webpack_export_target__ = exports; for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__]; if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', { value: true });