UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

47 lines (46 loc) 2.24 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require("./util"); const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType")); const util_2 = require("../../util"); class CoreRender extends RpcMethodType_1.default { constructor() { super(...arguments); this.name = 'CoreRender'; } async serializeArguments(args, rpcDriver) { const { rootModel } = this.pluginManager; const assemblyManager = rootModel.session.assemblyManager; const renamedArgs = await (0, util_2.renameRegionsIfNeeded)(assemblyManager, args); const superArgs = (await super.serializeArguments(renamedArgs, rpcDriver)); if (rpcDriver === 'MainThreadRpcDriver') { return superArgs; } return (0, util_1.validateRendererType)(args.rendererType, this.pluginManager.getRendererType(args.rendererType)).serializeArgsInClient(superArgs); } async execute(args, rpcDriver) { let deserializedArgs = args; if (rpcDriver !== 'MainThreadRpcDriver') { deserializedArgs = await this.deserializeArguments(args, rpcDriver); } const { sessionId, rendererType } = deserializedArgs; if (!sessionId) { throw new Error('must pass a unique session id'); } const RendererType = (0, util_1.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType)); return rpcDriver === 'MainThreadRpcDriver' ? await RendererType.render(deserializedArgs) : await RendererType.renderInWorker(deserializedArgs); } async deserializeReturn(serializedReturn, args, rpcDriver) { const des = await super.deserializeReturn(serializedReturn, args, rpcDriver); if (rpcDriver === 'MainThreadRpcDriver') { return des; } return (0, util_1.validateRendererType)(args.rendererType, this.pluginManager.getRendererType(args.rendererType)).deserializeResultsInClient(des, args); } } exports.default = CoreRender;