UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

32 lines (31 loc) 1.52 kB
import { firstValueFrom } from 'rxjs'; import { toArray } from 'rxjs/operators'; import { getAdapter } from "../../data_adapters/dataAdapterCache.js"; import RpcMethodType from "../../pluggableElementTypes/RpcMethodType.js"; import { renameRegionsIfNeeded } from "../../util/index.js"; import SimpleFeature from "../../util/simpleFeature.js"; export default class CoreGetFeatures extends RpcMethodType { name = 'CoreGetFeatures'; async deserializeReturn(feats, args, rpcDriver) { const superDeserialized = (await super.deserializeReturn(feats, args, rpcDriver)); return superDeserialized.map(feat => new SimpleFeature(feat)); } async serializeArguments(args, rpcDriver) { const { rootModel } = this.pluginManager; const assemblyManager = rootModel.session.assemblyManager; const renamedArgs = await 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 getAdapter(this.pluginManager, sessionId, adapterConfig)).dataAdapter; const r = await firstValueFrom(dataAdapter .getFeaturesInMultipleRegions(regions, { ...opts, statusCallback, stopToken, }) .pipe(toArray())); return r.map(f => f.toJSON()); } }