Socket
Socket
Sign inDemoInstall

superstore-sync

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

superstore-sync - npm Package Compare versions

Comparing version 1.0.0 to 1.1.0

66

lib/superstore-sync.js

@@ -8,2 +8,4 @@ /**

var escapeRegex = require('escape-regexp-component');
var keys = {};

@@ -15,3 +17,3 @@ var store = {};

window.addEventListener("storage", function(e) {
if(keys[e.key]) {
if (keys[e.key]) {
keys[e.key] = true;

@@ -22,5 +24,20 @@ store[e.key] = JSON.parse(e.newValue);

/**
* get localstorage value for key falling back to in memory for iOS private browsing bug
* <http://stackoverflow.com/questions/9077101/iphone-localstorage-quota-exceeded-err-issue>
* @param {String} key
* @return {*} data for supplied key
*
*/
exports.get = function(key) {
if (arguments.length !== 1) {
throw Error("get expects 1 argument, " + arguments.length + " given; " + key);
}
if (!keys[key] && persist) {
var data = localStorage[key];
var data;
try {
data = localStorage[key];
} catch(e) {
persist = false; // Safari 8 with Cookies set to 'Never' throws on every read
}

@@ -36,18 +53,38 @@ // Slightly weird hack because JSON.parse of an undefined value throws

/**
* set localstorage key,value falling back to in memory for iOS private browsing bug
* <http://stackoverflow.com/questions/9077101/iphone-localstorage-quota-exceeded-err-issue>
* @param {String} key
* @param {*} value which will be passed via JSON.stringify
* @return {*} value
*
*/
exports.set = function(key, value) {
try {
localStorage[key] = JSON.stringify(value);
} catch(err) {
if (arguments.length !== 2) {
throw Error("set expects 2 arguments, " + arguments.length + " given; " + key);
}
if (persist) {
try {
localStorage[key] = JSON.stringify(value);
} catch(err) {
// Known iOS Private Browsing Bug - fall back to non-persistent storage
if (err.code === 22) {
persist = false;
} else {
throw err;
// Known iOS Private Browsing Bug - fall back to non-persistent storage
if (err.code === 22) {
persist = false;
} else {
throw err;
}
}
}
store[key] = value;
keys[key] = true;
return value;
};
/**
* unset value in store for key
* @param {String} key
*/
exports.unset = function(key) {

@@ -66,3 +103,3 @@ delete store[key];

exports.clear = function(clearPrefix) {
if(!clearPrefix) {
if (!clearPrefix) {
if (persist) {

@@ -76,5 +113,6 @@ localStorage.clear();

var clearKeyRegex = new RegExp("^"+clearPrefix);
for(key in keys) {
if(key.match(clearKeyRegex)) {
clearPrefix = escapeRegex(clearPrefix);
var clearKeyRegex = new RegExp("^" + clearPrefix);
for (var key in keys) {
if (key.match(clearKeyRegex)) {
this.unset(key);

@@ -81,0 +119,0 @@ }

{
"name": "superstore-sync",
"version": "1.0.0",
"version": "1.1.0",
"description": "Local storage, without the bugs.",

@@ -35,4 +35,5 @@ "main": "lib/superstore-sync.js",

"dependencies": {
"setimmediate": "~1.0.1"
"setimmediate": "~1.0.1",
"escape-regexp-component": "~1.0"
}
}

@@ -1,2 +0,2 @@

# superstore-sync [![Build Status](https://travis-ci.org/matthew-andrews/superstore-sync.png?branch=master)](https://travis-ci.org/matthew-andrews/superstore-sync)
# superstore-sync [![Build Status](https://travis-ci.org/matthew-andrews/superstore-sync.png?branch=master)](https://travis-ci.org/matthew-andrews/superstore-sync) [![NPM version](https://badge.fury.io/js/superstore-sync.png)](http://badge.fury.io/js/superstore-sync)

@@ -3,0 +3,0 @@ Superstore is a simple lightweight synchronous wrapper around localStorage. Its features include:

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc