UNPKG

@rcsb/rcsb-saguaro-app

Version:
42 lines (41 loc) 1.77 kB
"use strict"; 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 = {}));