@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
47 lines (46 loc) • 2.24 kB
JavaScript
;
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;