Add structure for widget messaging layer

This commit is contained in:
Travis Ralston 2020-09-25 09:39:21 -06:00
parent 2a493a155f
commit 634ffb0140
5 changed files with 214 additions and 0 deletions

View file

@ -44,3 +44,20 @@ export function mapKeyChanges<K, V>(a: Map<K, V>, b: Map<K, V>): K[] {
const diff = mapDiff(a, b);
return arrayMerge(diff.removed, diff.added, diff.changed);
}
/**
* A Map<K, V> with added utility.
*/
export class EnhancedMap<K, V> extends Map<K, V> {
public constructor(entries?: Iterable<[K, V]>) {
super(entries);
}
public getOrCreate(key: K, def: V): V {
if (this.has(key)) {
return this.get(key);
}
this.set(key, def);
return def;
}
}