@usirin/spellcaster
Version:
Remote execution of spells defined in spellbooks
68 lines (67 loc) • 2.36 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__, {
createSpellCaster: ()=>createSpellCaster,
cast: ()=>cast
});
const forge_namespaceObject = require("@usirin/forge");
const external_transport_cjs_namespaceObject = require("./transport.cjs");
const createSpellCaster = (0, forge_namespaceObject.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, external_transport_cjs_namespaceObject.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();
}
}
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
});