Comparing version 1.0.2 to 1.1.0
51
index.js
@@ -55,3 +55,18 @@ 'use strict'; | ||
var subscribes = {}; | ||
var isEventListenerRegistered = false; | ||
function storageChangeHandler(_ref) { | ||
var key = _ref.key; | ||
var oldValue = _ref.oldValue; | ||
var newValue = _ref.newValue; | ||
Object.keys(subscribes).forEach(function (prefix) { | ||
if (key.indexOf(prefix) === 0) { | ||
subscribes[prefix].forEach(function (handler) { | ||
return handler(key.replace(prefix, ''), JSON.parse(oldValue), JSON.parse(newValue)); | ||
}); | ||
} | ||
}); | ||
} | ||
function isQuotaExceeded(e) { | ||
@@ -84,7 +99,7 @@ if (e) { | ||
function Storage(_ref) { | ||
var storage = _ref.storage; | ||
var namespace = _ref.namespace; | ||
var schemeVersion = _ref.schemeVersion; | ||
var clearOnError = _ref.clearOnError; | ||
function Storage(_ref2) { | ||
var storage = _ref2.storage; | ||
var namespace = _ref2.namespace; | ||
var schemeVersion = _ref2.schemeVersion; | ||
var clearOnError = _ref2.clearOnError; | ||
@@ -176,5 +191,15 @@ _classCallCheck(this, Storage); | ||
subscribesOfNamespace.push(fn); | ||
if (!isEventListenerRegistered) { | ||
window.addEventListener('storage', storageChangeHandler, false); | ||
isEventListenerRegistered = true; | ||
} | ||
return function unsubscribe() { | ||
var index = subscribesOfNamespace.indexOf(fn); | ||
subscribes.splice(index, 1); | ||
subscribesOfNamespace.splice(index, 1); | ||
if (Object.keys(subscribes).every(function (prefix) { | ||
return subscribes[prefix].length === 0; | ||
})) { | ||
window.removeEventListener('storage', storageChangeHandler, false); | ||
isEventListenerRegistered = false; | ||
} | ||
}; | ||
@@ -198,16 +223,2 @@ } | ||
window.addEventListener('storage', function (_ref2) { | ||
var key = _ref2.key; | ||
var oldValue = _ref2.oldValue; | ||
var newValue = _ref2.newValue; | ||
Object.keys(subscribes).forEach(function (prefix) { | ||
if (key.indexOf(prefix) === 0) { | ||
subscribes[prefix].forEach(function (subscribe) { | ||
return subscribe(key.replace(prefix, ''), JSON.parse(oldValue), JSON.parse(newValue)); | ||
}); | ||
} | ||
}); | ||
}, false); | ||
function createStorage() { | ||
@@ -214,0 +225,0 @@ var _ref3 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; |
{ | ||
"name": "ambry", | ||
"version": "1.0.2", | ||
"version": "1.1.0", | ||
"description": "WebStorage wrapper that makes your life easier", | ||
@@ -27,7 +27,7 @@ "main": "index.js", | ||
"devDependencies": { | ||
"babel-cli": "^6.1.18", | ||
"babel-cli": "^6.2.0", | ||
"babel-preset-es2015": "^6.1.18", | ||
"eslint": "^1.9.0", | ||
"eslint": "^1.10.1", | ||
"eslint-config-airbnb": "^1.0.0" | ||
} | ||
} |
@@ -6,2 +6,4 @@ # Ambry | ||
Tests are powered by [BrowserStack](https://www.browserstack.com) — cool cross browser testing tool. | ||
### Installation | ||
@@ -28,3 +30,3 @@ | ||
### Setting new value | ||
### Setting new value or updating value | ||
@@ -84,2 +86,2 @@ ```javascript | ||
Your contributions are always welcome! Please feel free to create issues. | ||
Your contributions are always welcome! Please feel free to create issues. |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
11502
220
85