UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

41 lines (40 loc) 1.93 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache"); const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType")); const util_1 = require("../../util"); const simpleFeature_1 = __importDefault(require("../../util/simpleFeature")); class CoreGetFeatures extends RpcMethodType_1.default { constructor() { super(...arguments); this.name = 'CoreGetFeatures'; } async deserializeReturn(feats, args, rpcDriver) { const superDeserialized = (await super.deserializeReturn(feats, args, rpcDriver)); return superDeserialized.map(feat => new simpleFeature_1.default(feat)); } async serializeArguments(args, rpcDriver) { const { rootModel } = this.pluginManager; const assemblyManager = rootModel.session.assemblyManager; const renamedArgs = await (0, util_1.renameRegionsIfNeeded)(assemblyManager, args); return super.serializeArguments(renamedArgs, rpcDriver); } async execute(args, rpcDriver) { const { stopToken, statusCallback, sessionId, adapterConfig, regions, opts, } = await this.deserializeArguments(args, rpcDriver); const dataAdapter = (await (0, dataAdapterCache_1.getAdapter)(this.pluginManager, sessionId, adapterConfig)).dataAdapter; const r = await (0, rxjs_1.firstValueFrom)(dataAdapter .getFeaturesInMultipleRegions(regions, { ...opts, statusCallback, stopToken, }) .pipe((0, operators_1.toArray)())); return r.map(f => f.toJSON()); } } exports.default = CoreGetFeatures;