UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

45 lines (44 loc) 2.16 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 BaseAdapter_1 = require("../../data_adapters/BaseAdapter"); 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 pm = this.pluginManager; const deserializedArgs = await this.deserializeArguments(args, rpcDriver); const { stopToken, sessionId, adapterConfig, regions, opts } = deserializedArgs; const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(pm, sessionId, adapterConfig); if (!(0, BaseAdapter_1.isFeatureAdapter)(dataAdapter)) { throw new Error('Adapter does not support retrieving features'); } const ret = dataAdapter.getFeaturesInMultipleRegions(regions, { ...opts, stopToken, }); const r = await (0, rxjs_1.firstValueFrom)(ret.pipe((0, operators_1.toArray)())); return r.map(f => f.toJSON()); } } exports.default = CoreGetFeatures;