export function mapFromObject(obj: {[key: string]: T}): Map { let ret = new Map(); for (let k of Object.keys(obj)) ret.set(k, obj[k]); return ret; } export function mapValues(f: (v: V1) => V2, map: Map): Map { let ret: Map = new Map(); for (let [k, v] of map) ret.set(k, f(v)); return ret; } export async function mapValuesAsync(f: (v: V1) => Promise, map: Map): Promise> { let ret: Map = new Map(); for (let [k, v] of mapValues(f, map)) ret.set(k, await v); return ret; } export function nextPowerOf2(n: number): number { let i = 1; while (i < n) i *= 2; return i; }