onionskin
v1.1.6
Published
Multilayer Cache Manager for JavaScript
Downloads
43
Maintainers
Readme
OnionSkin
OnionSkin is multi-layer cache manager library that works with Node.js and vanilla javascript
Installation
You can either install via npm
$ npm install onionskin
Or via bower
$ bower install onionskin
Or you can just grab a copy of it here
Basic Usage
// Library is exposed on the browser with browserify for API consistency with node.js
var OnionSkin = require('onionskin');
// Initialize a pool
var pool = new OnionSkin();
pool.get('my/key/path', function (err) {
// Data is either inexistent or expired
return slowFuncThatReturnsPromise();
}).then(function (value) {
// The value that was either on cache or was just generated
console.log(value);
});
Documentation
You can find more usage examples at the website's Getting Started section Also there is the API Documentation
Need help?
You can:
- Talk to me at @onionskinjs
- Ask a question at StackOverflow
- Send me an email at [email protected]
Want to help?
So you decided you want to help... This is awesome!!! Follow this steps and I will be really glad to merge your work and add you to the contributors!
Fork the project
Clone it and create a branch with the name of the feature you intend to add
$ git clone [email protected]:username/onionskin.git $ git checkout -b new-feature-name
Install the dependencies
$ bower install # for browser tests $ npm install # for node.js tests
Please add tests to your features.
- Tests run with Mocha and use Chai for expectations.
- Expect is preferred to should due to browser compatibility
- The test folder respect the same structure as the source, you can run the tests through npm:
$ npm test
or run specific tests with mocha:
mocha test/stash/drivers/*.js
you also can run the tests on browser
open test/index.html
Send me a pull request
What is coming next
- WebSQL, Cassandra, MongoDB [, ... ] drivers
- Benchmarks
- More examples
Contributors
This project was created by @tadeuzagallo inspired by a PHP library named Stash and was originally Stash.js. If you want to join just follow the instructions, any help will be very welcome.
Changelog
1.0.1
- The function to generate missing cache should be passed as the last parameter to
pool.get
, although generating cachePromise.catch
is still supported the cache will never be unlocked ifitem.save
oritem.set
are not called. - Also when the cache generator function is passed as parameter, there is no need to call either
item.save
oritem.set
, just return the value you want to be cached and it will automatically saved and passed along to the promise chain.