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