assign()

in packages/shared/src/lru.ts [83:104]


  assign(entries: any) {
    let entry: any
    let limit = this.limit || Number.MAX_VALUE
    this._keymap.clear()
    const it = entries[Symbol.iterator]()
    for (let itv = it.next(); !itv.done; itv = it.next()) {
      const e = new Entry(itv.value[0], itv.value[1])
      this._keymap.set(e.key, e)
      if (!entry) {
        this.oldest = e
      } else {
        entry[NEWER] = e
        e[OLDER] = entry
      }
      entry = e
      if (limit-- === 0) {
        throw new Error('overflow')
      }
    }
    this.newest = entry
    this.size = this._keymap.size
  }