Skip to content

onExpire does not return the value of the cached item if storage is not in memory #32

Description

@BovineEnthusiast

The following returns the value of the cached item only if it is present in the expiresHeap:

{
    key: 'removeExpired',
    value: function removeExpired() {
      // ...
      while ((expiredItem = this.$$expiresHeap.peek()) && expiredItem.expires <= now) { 
        expired[expiredItem.key] = expiredItem.value ? expiredItem.value : null;
        this.$$expiresHeap.pop();
      }

      // ...

      if (this.$$onExpire) {
        Object.keys(expired).forEach(function (key) {
          _this6.$$onExpire(key, expired[key]);
        });
      }
      // ...
    }
}

However, the heap will only contain the value if you're using in-memory storage:

{
    key: 'put',
    value: function put(key, value) {
      // ...

      if (this.$$storage) {
        // ...
        this.$$expiresHeap.push({
          key: key,
          expires: item.expires
        });
      } else {
        // ...
        
        this.$$expiresHeap.push(item);
        // ...
      }
     // ...
    }
}

Ideally, it should work regardless of what storage option you use e.g. local storage.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions