@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
31 lines (30 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MultiplePolymerEntityCollector = void 0;
const tslib_1 = require("tslib");
const MultipleEntityInstancesCollector_1 = require("./MultipleEntityInstancesCollector");
const TagDelimiter_1 = require("@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter");
class MultiplePolymerEntityCollector {
constructor() {
this.multipleEntityInstanceCollector = new MultipleEntityInstancesCollector_1.MultipleEntityInstancesCollector();
}
collect(requestConfig) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const results = yield this.multipleEntityInstanceCollector.collect(requestConfig);
const map = new Map();
results.forEach(r => {
var _a;
if (!map.has(`${r.entryId}${TagDelimiter_1.TagDelimiter.entity}${r.entityId}`))
map.set(`${r.entryId}${TagDelimiter_1.TagDelimiter.entity}${r.entityId}`, []);
(_a = map.get(`${r.entryId}${TagDelimiter_1.TagDelimiter.entity}${r.entityId}`)) === null || _a === void 0 ? void 0 : _a.push(r);
});
return Array.from(map.entries()).map(([k, v]) => ({
rcsbId: v[0].rcsbId,
entityId: v[0].entityId,
entryId: v[0].entryId,
instances: v
}));
});
}
}
exports.MultiplePolymerEntityCollector = MultiplePolymerEntityCollector;