@usirin/spellcaster
Version:
Remote execution of spells defined in spellbooks
83 lines (82 loc) • 3 kB
JavaScript
;
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
});