@planet/user-store
Advanced tools
Comparing version 2.0.0 to 2.1.0
var key = '@planet/user-store#2'; | ||
var User = require('./user'); | ||
var store = require('store/dist/store.modern'); | ||
exports.get = function() { | ||
var user = null; | ||
var value = localStorage.getItem(key); | ||
if (value) { | ||
user = User.deserialize(value); | ||
try { | ||
user = store.get(key) || null; | ||
} catch (_) { | ||
// pass | ||
} | ||
@@ -15,6 +16,21 @@ return user; | ||
if (user) { | ||
localStorage.setItem(key, User.serialize(user)); | ||
var keys = Object.keys(user); | ||
if (keys.length > 1) { | ||
throw new Error('User store only supports a token property'); | ||
} | ||
if (typeof user.token !== 'string') { | ||
throw new Error('User token must be a string'); | ||
} | ||
try { | ||
store.set(key, user); | ||
} catch (_) { | ||
// pass | ||
} | ||
} else { | ||
localStorage.removeItem(key); | ||
try { | ||
store.remove(key); | ||
} catch (_) { | ||
// pass | ||
} | ||
} | ||
}; |
{ | ||
"name": "@planet/user-store", | ||
"version": "2.0.0", | ||
"version": "2.1.0", | ||
"description": "Simple event emitting store for Planet users", | ||
@@ -21,11 +21,12 @@ "license": "Apache-2.0", | ||
"dependencies": { | ||
"store": "^2.0.4", | ||
"tiny-emitter": "^1.0.2" | ||
}, | ||
"devDependencies": { | ||
"code": "^3.0.2", | ||
"eslint": "^3.2.2", | ||
"eslint-config-planet": "^9.0.0", | ||
"lab": "^10.9.0", | ||
"sinon": "^1.17.5", | ||
"watchy": "^0.6.6" | ||
"code": "^4.0.0", | ||
"eslint": "^3.17.1", | ||
"eslint-config-planet": "^12.0.0", | ||
"lab": "^12.1.0", | ||
"sinon": "^1.17.7", | ||
"watchy": "^0.6.7" | ||
}, | ||
@@ -32,0 +33,0 @@ "eslintConfig": { |
@@ -42,3 +42,3 @@ # User Store | ||
Store a user in `localStorage`. The user must be serializable as JSON. Calls to `set()` trigger an `update` event. Call with `null` to clear the stored user. Note that as of version 2, the user object can only contain a string `token` property. This may change in future major versions. | ||
Store a user in `localStorage` (with fallbacks to `sessionStorage`, cookie, and memory). The user must be serializable as JSON. Calls to `set()` trigger an `update` event. Call with `null` to clear the stored user. Note that as of version 2, the user object can only contain a string `token` property. This may change in future major versions. | ||
@@ -45,0 +45,0 @@ ### `store.on('update', callback [, thisObj])` |
@@ -0,1 +1,2 @@ | ||
var _store = require('store/dist/store.modern'); | ||
var api = require('../../lib/index'); | ||
@@ -5,10 +6,10 @@ var expect = require('code').expect; | ||
var sinon = require('sinon'); | ||
var util = require('../util'); | ||
lab.experiment('API', function() { | ||
lab.beforeEach(util.mockStorage); | ||
lab.afterEach(function(done) { | ||
_store.clearAll(); | ||
done(); | ||
}); | ||
lab.afterEach(util.restoreStorage); | ||
lab.experiment('set()', function() { | ||
@@ -15,0 +16,0 @@ |
@@ -0,12 +1,13 @@ | ||
var _store = require('store/dist/store.modern'); | ||
var expect = require('code').expect; | ||
var lab = exports.lab = require('lab').script(); | ||
var store = require('../../lib/store'); | ||
var util = require('../util'); | ||
lab.experiment('store', function() { | ||
lab.beforeEach(util.mockStorage); | ||
lab.afterEach(function(done) { | ||
_store.clearAll(); | ||
done(); | ||
}); | ||
lab.afterEach(util.restoreStorage); | ||
lab.experiment('set()', function() { | ||
@@ -30,2 +31,20 @@ | ||
lab.test('throws for too many keys', function(done) { | ||
var user = {token: 'raw token', foo: 'bar'}; | ||
var call = function() { | ||
store.set(user); | ||
}; | ||
expect(call).to.throw(Error, 'User store only supports a token property'); | ||
done(); | ||
}); | ||
lab.test('throws for invalid token type', function(done) { | ||
var user = {token: 42}; | ||
var call = function() { | ||
store.set(user); | ||
}; | ||
expect(call).to.throw(Error, 'User token must be a string'); | ||
done(); | ||
}); | ||
}); | ||
@@ -32,0 +51,0 @@ |
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
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
0
100
9490
2
10
218
+ Addedstore@^2.0.4
+ Addedstore@2.0.12(transitive)