@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
41 lines (40 loc) • 1.93 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 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;