map-ext
Version:
22 lines • 1.63 kB
JavaScript
export class WeakMapExt extends WeakMap {
constructor(cb) {
super();
this.cb = cb;
}
}
export class MapExt extends Map {
constructor(cb) {
super();
this.cb = cb;
}
}
const factory = (prototype) => function get(key) {
if (this.has(key))
return prototype.call(this, key);
const v = this.cb(key);
this.set(key, v);
return v;
};
WeakMapExt.prototype.get = factory(WeakMap.prototype.get);
MapExt.prototype.get = factory(Map.prototype.get);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLFVBQWdDLFNBQVEsT0FBYTtJQUM5RCxZQUE2QixFQUFlO1FBQ3hDLEtBQUssRUFBRSxDQUFBO1FBRGtCLE9BQUUsR0FBRixFQUFFLENBQWE7SUFFNUMsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLE1BQWEsU0FBUSxHQUFTO0lBRXZDLFlBQTZCLEVBQWU7UUFDeEMsS0FBSyxFQUFFLENBQUE7UUFEa0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtJQUU1QyxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRztJQUMzQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFBO0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMifQ==