@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
42 lines (41 loc) • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RcsbRequestTools = void 0;
const tslib_1 = require("tslib");
var RcsbRequestTools;
(function (RcsbRequestTools) {
function getSingleObjectData(id, map, collector) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const promise = map.get(id);
if (promise)
return promise;
const t = collector();
map.set(id, t);
return t;
});
}
RcsbRequestTools.getSingleObjectData = getSingleObjectData;
function getMultipleObjectProperties(ids, map, collector, collectorKey, propertyKey) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!Array.isArray(ids))
ids = [ids];
const missing = ids.filter(id => !map.has(id));
if (missing.length > 0) {
const collectorPromise = collector.collect({ [collectorKey]: missing });
missing.forEach(id => {
map.set(id, new Promise((resolve, reject) => {
collectorPromise.then(t => {
const d = t.find(t => propertyKey(t) == id);
if (d)
resolve(d);
else
reject(`${id} not available`);
});
}));
});
}
return Promise.all(ids.map(i => map.get(i)).filter((x) => typeof x !== undefined));
});
}
RcsbRequestTools.getMultipleObjectProperties = getMultipleObjectProperties;
})(RcsbRequestTools || (exports.RcsbRequestTools = RcsbRequestTools = {}));