UNPKG

@xyh19/multi-map

Version:

Map which Allow Multiple Values for the same Key

3 lines (2 loc) 1.99 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var a=Object.freeze([]),u=Array.prototype,l=Set.prototype;u.delete=function(n){let e=this.indexOf(n);return e>=0?(this.splice(e,1),!0):!1};u.clear=function(){this.splice(0)};l.push=function(...n){for(let e of n)this.add(e)};l.includes=l.has;Object.defineProperty(l,"length",{get(){return this.size}});var i=Map,f=WeakMap,p= exports.MultiMap =class extends i{constructor(e,r=!1){super();if(this.__=r,e)for(let[t,s]of e)this.set(t,s)}get(e){var r;return(r=super.get(e))!=null?r:a}set(e,...r){let t=super.get(e);t||(t=this.__?new Set:[],super.set(e,t)),t.push(...r)}has(e,r){var t,s,o;return r!==void 0?!!((t=super.get(e))==null?void 0:t.includes(r)):((o=(s=super.get(e))==null?void 0:s.length)!=null?o:0)>0}delete(e,r){let t=super.get(e);if(!t)return!1;let s;return r!==void 0?(s=t.delete(r),t.length===0&&super.delete(e)):(s=t.length>0,super.delete(e)),s}clear(){super.clear()}keys(){return super.keys()}*values(){for(let e of super.values())for(let r of e)yield r}*entries(){for(let[e,r]of super.entries())for(let t of r)yield[e,t]}*[Symbol.iterator](){for(let[e,r]of super[Symbol.iterator]())for(let t of r)yield[e,t]}get size(){return super.size}get count(){let e=0;for(let r of this.values())++e;return e}get[Symbol.toStringTag](){return"MultiMap"}},c= exports.MultiWeakMap =class extends f{constructor(e,r=!1){super();if(this.__=r,e)for(let[t,s]of e)this.set(t,s)}get(e){var r;return(r=super.get(e))!=null?r:a}set(e,...r){let t=super.get(e);t||(t=this.__?new Set:[],super.set(e,t)),t.push(...r)}has(e,r){var t,s,o;return r!==void 0?!!((t=super.get(e))==null?void 0:t.includes(r)):((o=(s=super.get(e))==null?void 0:s.length)!=null?o:0)>0}delete(e,r){let t=super.get(e);if(!t)return!1;let s;return r!==void 0?(s=t.delete(r),t.length===0&&super.delete(e)):(s=t.length>0,super.delete(e)),s}get[Symbol.toStringTag](){return"MultiWeakMap"}};exports.MultiMap = p; exports.MultiWeakMap = c; //# sourceMappingURL=index.js.map