LocalStore.js 908 B

12345678910111213141516171819202122232425262728
  1. var Store = require('./Store');
  2. var safeStorage = require('./safeStorage');
  3. var isEmpty = require('./isEmpty');
  4. var stringify = require('./stringify');
  5. var defaults = require('./defaults');
  6. var isObj = require('./isObj');
  7. var localStorage = safeStorage('local');
  8. exports = Store.extend({
  9. initialize: function LocalStore(name, data) {
  10. this._name = name;
  11. data = data || {};
  12. var localData = localStorage.getItem(name);
  13. try {
  14. localData = JSON.parse(localData);
  15. } catch (e) {
  16. localData = {};
  17. }
  18. if (!isObj(localData)) localData = {};
  19. data = defaults(localData, data);
  20. this.callSuper(Store, 'initialize', [data]);
  21. },
  22. save: function(data) {
  23. if (isEmpty(data)) return localStorage.removeItem(this._name);
  24. localStorage.setItem(this._name, stringify(data));
  25. }
  26. });
  27. module.exports = exports;