common.js 737 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. 'use strict';
  2. var isPromise = require('is-promise');
  3. var init = function init(db, key, adapter) {
  4. db.read = function () {
  5. var r = adapter.read();
  6. return isPromise(r) ? r.then(db.plant) : db.plant(r);
  7. };
  8. db.write = function () {
  9. var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : db.getState();
  10. var w = adapter.write(db.getState());
  11. return isPromise(w) ? w.then(function () {
  12. return value;
  13. }) : value;
  14. };
  15. db.plant = function (state) {
  16. db[key] = state;
  17. return db;
  18. };
  19. db.getState = function () {
  20. return db[key];
  21. };
  22. db.setState = function (state) {
  23. db.plant(state);
  24. return db;
  25. };
  26. return db.read();
  27. };
  28. module.exports = {
  29. init
  30. };