awv3
Version:
⚡ AWV3 embedded CAD
20 lines (19 loc) • 840 B
JavaScript
// A wrapper around session.request intented to be used with multiRunner as x => commandRunner(session, x)
export default function commandRunner(session, commands) {
const promise = session.request(commands).then(response => {
if (response.errors.length) throw response.errors[0];
let resultMap = new Map();
for (let result of response.results) {
if (!resultMap.has(result.hint)) resultMap.set(result.hint, []);
resultMap.get(result.hint).push(result.result);
}
return resultMap;
});
return commands.map(command =>
promise.then(
resultMap =>
resultMap.has(command.task)
? resultMap.get(command.task).shift()
: Promise.reject(new Error('Missing result for ' + command.task))
));
}