Cache with confidence 🎉 Ultra fast in-memory JavaScript cache with near realtime cache expiry feature ⚡
npm install pure-cacheCache with confidence 🎉
Ultra fast & tiny(around 1.28kb gzipped) in-memory JavaScript cache with near realtime cache expiry feature ⚡
> Works in any JavaScript runtime(node or browser) ✨




 
- Install
- Basic Usage
- Events
- API
- Contribute
- Credits
- License
``sh`
npm install pure-cache
`sh`
yarn add pure-cache
`html`
- Import library
`js`
import PureCache from 'pure-cache';
// or const PureCache = require('pure-cache');
- Create cacheStore instance
`js`
// Create instance of cache store and set cache expiry timeout to 500ms
const cacheStore = new PureCache({ expiryCheckInterval: 500 });
- Setup expiry handler
`jsKey:${key} with value:${value} expired at ${expiryAt}.
// Setup a expiry listener, this will be called when data expires
const onExpiry = ({ key, data: { value, expiryAt } }) => {
// Do something with expired key
console.log();`
};
cacheStore.on('expiry', onExpiry);
- Put/Get data from cacheStore
`js
// Put 'bar' data into 'foo' key in cache and configure it to expire after 30s
cacheStore.put('foo', 'bar', 30000);
// Get 'foo' key value from cache
cacheStore.get('foo'); // { value: 'bar', addedAt: 1527052395294, expiryAt: 1527052425294 }
`
- Wait for expiry
`js
// Wait till expiry time(basically 30+ seconds in this case)
const wait = t => new Promise(r => setTimeout(r, t));
await wait(31000);
// Now the cache will return null value for 'foo' key
cacheStore.get('foo'); // null
`
- Cleanup listeners
`js
// remove listeners after you are done
cacheStore.off('expiry', onExpiry);
// IMPORTANT! When done, make sure you cleanup the instance
cacheStore.dispose();
`
Checkout API for advanced usage.
Events are triggered when operations like add, get, remove, clear are performed on cacheStore or when the cache expires.
- expiry
`js`
cacheStore.on('expiry', ({ key, data: { value, addedAt, expiryAt } }) => {
// ...
});
- add
`js`
cacheStore.on('add', ({ key, data: { value, addedAt, expiryAt } }) => {
// ...
});
- get
`js`
cacheStore.on('get', ({ key, data: { value, addedAt, expiryAt } }) => {
// ...
});
- remove
`js`
cacheStore.on('remove', ({ key, data: { value, addedAt, expiryAt } }) => {
// ...
});
- clear
`js`
cacheStore.on('clear', () => {
// ...
});
- Pure Cache
- In Memory Expirer (Internal)
Thanks for taking time to contribute, please read docs and checkout src to understand how things work.
Found a problem? Want a new feature? First of all see if your issue or idea has already been reported.
If don't, just open a new clear and descriptive issue.
Pull requests are the greatest contributions, so be sure they are focused in scope, and do avoid unrelated commits.
- Fork it!
- Clone your fork: git clone https://github.com/cd pure-cache
- Navigate to the newly cloned directory: git checkout -b my-new-feature
- Create a new branch for the new feature: yarn
- Install the tools necessary for development: git commit -am 'Add some feature'
- Make your changes.
- Commit your changes: git push origin my-new-feature`
- Push to the branch:
- Submit a pull request with full remarks documenting your changes
- developit/mitt for awesome library and readme template 🙏