123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. var AuthSdkError = require('./errors/AuthSdkError');
  2. // storage must have getItem and setItem
  3. function storageBuilder(webstorage, storageName) {
  4. function getStorage() {
  5. var storageString = webstorage.getItem(storageName);
  6. storageString = storageString || '{}';
  7. try {
  8. return JSON.parse(storageString);
  9. } catch(e) {
  10. throw new AuthSdkError('Unable to parse storage string: ' + storageName);
  11. }
  12. }
  13. function setStorage(storage) {
  14. try {
  15. var storageString = JSON.stringify(storage);
  16. webstorage.setItem(storageName, storageString);
  17. } catch(e) {
  18. throw new AuthSdkError('Unable to set storage: ' + storageName);
  19. }
  20. }
  21. function clearStorage(key) {
  22. if (!key) {
  23. setStorage({});
  24. }
  25. var storage = getStorage();
  26. delete storage[key];
  27. setStorage(storage);
  28. }
  29. function updateStorage(key, value) {
  30. var storage = getStorage();
  31. storage[key] = value;
  32. setStorage(storage);
  33. }
  34. return {
  35. getStorage: getStorage,
  36. setStorage: setStorage,
  37. clearStorage: clearStorage,
  38. updateStorage: updateStorage
  39. };
  40. }
  41. module.exports = storageBuilder;