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.jsvar OnionSkin = ; // Initialize a poolvar pool = ; pool;
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 contact@onionskin.io
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 git@github.com: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.