Socket
Socket
Sign inDemoInstall

atom.storage

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

atom.storage - npm Package Compare versions

Comparing version 0.2.0 to 0.3.0

.nyc_output/23720.json

40

lib/atom.storage.js

@@ -6,5 +6,12 @@ "use strict";

});
exports.expireNow = exports.unsafeDeleteAtom = undefined;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
var _ramda = require("ramda");
var R = _interopRequireWildcard(_ramda);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }

@@ -34,11 +41,18 @@

var getValue = function getValue(storage, key, schema, value) {
var getValue = function getValue(storage, key, schema, defaultValue, time) {
var json = storage.getItem(key);
if (!json) return value;
if (!json) return defaultValue;
var data = tryParse(json);
if (!seemsValid(data)) return value;
if (!seemsValid(data) || R.equals(data.schema, schema) || R.equals(data.value, defaultValue)) {
storage.removeItem(key);
return defaultValue;
}
if (data.schema !== schema) return value;
if (0 <= time) {
data.expires = time + Date.now();
storage.setItem(key, JSON.stringify(data));
}
return data.value;

@@ -92,3 +106,3 @@ };

var value = options.value;
var defaultValue = options.value;
var Atom = options.Atom;

@@ -104,3 +118,3 @@ var time = options.time;

if (!atom) {
atoms[key] = atom = Atom(getValue(storage, key, schema, value));
atoms[key] = atom = Atom(getValue(storage, key, schema, defaultValue, time));

@@ -113,9 +127,13 @@ if (process.NODE_ENV !== "production") usedOptions.set(atom, options);

changes.onValue(function (value) {
var data = { value: value };
if (R.equals(value, defaultValue)) {
storage.removeItem(key);
} else {
var data = { value: value };
if (schema !== undefined) data.schema = schema;
if (schema !== undefined) data.schema = schema;
if (0 <= time) data.expires = time + Date.now();
if (0 <= time) data.expires = time + Date.now();
storage.setItem(key, JSON.stringify(data));
storage.setItem(key, JSON.stringify(data));
}
});

@@ -131,2 +149,2 @@ } else if (process.NODE_ENV !== "production") {

};
//# sourceMappingURL=data:application/json;base64,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LENBQWYsRUFDRixNQUFNLElBQUksS0FBSixnRUFBdUUsS0FBSyxHQUFMLHlCQUE0QixLQUFLLENBQUwsaUJBQWtCLEtBQUssV0FBVyxDQUFYLENBQUwsb0JBQWlDLEtBQUssUUFBUSxDQUFSLENBQUwsT0FBdEosQ0FBTixDQURGO0tBREY7R0FGSzs7QUFRUCxTQUFPLElBQVAsQ0FuQzZDO0NBQWhDIiwiZmlsZSI6ImF0b20uc3RvcmFnZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHN0b3JhZ2VzID0gbmV3IFdlYWtNYXAoKVxubGV0IHVzZWRPcHRpb25zXG5pZiAocHJvY2Vzcy5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpXG4gIHVzZWRPcHRpb25zID0gbmV3IFdlYWtNYXAoKVxuXG5jb25zdCBnZXRBdG9tcyA9IHN0b3JhZ2UgPT4ge1xuICBsZXQgYXRvbXMgPSBzdG9yYWdlcy5nZXQoc3RvcmFnZSlcbiAgaWYgKCFhdG9tcylcbiAgICBzdG9yYWdlcy5zZXQoc3RvcmFnZSwgYXRvbXMgPSB7fSlcbiAgcmV0dXJuIGF0b21zXG59XG5cbmNvbnN0IHRyeVBhcnNlID0ganNvbiA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoanNvbilcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3JcbiAgfVxufVxuXG5jb25zdCBzZWVtc1ZhbGlkID1cbiAgZGF0YSA9PiBkYXRhICYmIGRhdGEuY29uc3RydWN0b3IgPT09IE9iamVjdCAmJiBcInZhbHVlXCIgaW4gZGF0YVxuXG5jb25zdCBnZXRWYWx1ZSA9IChzdG9yYWdlLCBrZXksIHNjaGVtYSwgdmFsdWUpID0+IHtcbiAgY29uc3QganNvbiA9IHN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gIGlmICghanNvbilcbiAgICByZXR1cm4gdmFsdWVcblxuICBjb25zdCBkYXRhID0gdHJ5UGFyc2UoanNvbilcbiAgaWYgKCFzZWVtc1ZhbGlkKGRhdGEpKVxuICAgIHJldHVybiB2YWx1ZVxuXG4gIGlmIChkYXRhLnNjaGVtYSAhPT0gc2NoZW1hKVxuICAgIHJldHVybiB2YWx1ZVxuXG4gIHJldHVybiBkYXRhLnZhbHVlXG59XG5cbmV4cG9ydCBjb25zdCB1bnNhZmVEZWxldGVBdG9tID0gKHtzdG9yYWdlLCBrZXl9KSA9PiB7XG4gIGNvbnN0IGF0b21zID0gZ2V0QXRvbXMoc3RvcmFnZSlcbiAgZGVsZXRlIGF0b21zW2tleV1cbn1cblxuZXhwb3J0IGNvbnN0IGV4cGlyZU5vdyA9ICh7c3RvcmFnZSwgcmVnZXgsIHVuc2FmZURlbGV0ZUF0b21zfSkgPT4ge1xuICBmb3IgKGxldCBpPTA7IGk8c3RvcmFnZS5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IGtleSA9IHN0b3JhZ2Uua2V5KGkpXG5cbiAgICBpZiAoIXJlZ2V4LnRlc3Qoa2V5KSlcbiAgICAgIGNvbnRpbnVlXG5cbiAgICBjb25zdCBkYXRhID0gdHJ5UGFyc2Uoc3RvcmFnZS5nZXRJdGVtKGtleSkpXG4gICAgaWYgKCFzZWVtc1ZhbGlkKGRhdGEpKVxuICAgICAgY29udGludWVcblxuICAgIGlmIChkYXRhLmV4cGlyZXMgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSlcblxuICAgICAgaWYgKHVuc2FmZURlbGV0ZUF0b21zKVxuICAgICAgICB1bnNhZmVEZWxldGVBdG9tKHtzdG9yYWdlLCBrZXl9KVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzaG93KHgpIHtcbiAgc3dpdGNoICh0eXBlb2YgeCkge1xuICBjYXNlIFwic3RyaW5nXCI6XG4gIGNhc2UgXCJvYmplY3RcIjpcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeClcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gYCR7eH1gXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgKHtrZXksIHN0b3JhZ2UsIC4uLm9wdGlvbnN9KSA9PiB7XG4gIGNvbnN0IHt2YWx1ZSwgQXRvbSwgdGltZSwgc2NoZW1hLCBkZWJvdW5jZX0gPSBvcHRpb25zXG5cbiAgY29uc3QgYXRvbXMgPSBnZXRBdG9tcyhzdG9yYWdlKVxuXG4gIGxldCBhdG9tID0gYXRvbXNba2V5XVxuICBpZiAoIWF0b20pIHtcbiAgICBhdG9tc1trZXldID0gYXRvbSA9IEF0b20oZ2V0VmFsdWUoc3RvcmFnZSwga2V5LCBzY2hlbWEsIHZhbHVlKSlcblxuICAgIGlmIChwcm9jZXNzLk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIilcbiAgICAgIHVzZWRPcHRpb25zLnNldChhdG9tLCBvcHRpb25zKVxuXG4gICAgbGV0IGNoYW5nZXMgPSBhdG9tLmNoYW5nZXMoKVxuICAgIGlmICgwIDw9IGRlYm91bmNlKVxuICAgICAgY2hhbmdlcyA9IGNoYW5nZXMuZGVib3VuY2UoZGVib3VuY2UpXG5cbiAgICBjaGFuZ2VzLm9uVmFsdWUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHt2YWx1ZX1cblxuICAgICAgaWYgKHNjaGVtYSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICBkYXRhLnNjaGVtYSA9IHNjaGVtYVxuXG4gICAgICBpZiAoMCA8PSB0aW1lKVxuICAgICAgICBkYXRhLmV4cGlyZXMgPSB0aW1lICsgRGF0ZS5ub3coKVxuXG4gICAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeShkYXRhKSlcbiAgICB9KVxuICB9IGVsc2UgaWYgKHByb2Nlc3MuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgY29uc3Qgb2xkT3B0aW9ucyA9IHVzZWRPcHRpb25zLmdldChhdG9tKVxuICAgIGZvciAoY29uc3QgayBpbiBvcHRpb25zKSB7XG4gICAgICBpZiAob3B0aW9uc1trXSAhPT0gb2xkT3B0aW9uc1trXSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBhdG9tLnN0b3JhZ2U6IENyZWF0ZWQgdHdvIGF0b21zIHdpdGggc2FtZSBzdG9yYWdlIGFuZCBrZXkgJHtzaG93KGtleSl9LCBidXQgZGlmZmVyZW50ICR7c2hvdyhrKX06IGZpcnN0ICR7c2hvdyhvbGRPcHRpb25zW2tdKX0gYW5kIGxhdGVyICR7c2hvdyhvcHRpb25zW2tdKX0uYClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXRvbVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,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O0FBR0wsWUFBSSxXQUFXLFNBQVgsRUFDRixLQUFLLE1BQUwsR0FBYyxNQUFkLENBREY7O0FBR0EsWUFBSSxLQUFLLElBQUwsRUFDRixLQUFLLE9BQUwsR0FBZSxPQUFPLEtBQUssR0FBTCxFQUFQLENBRGpCOztBQUdBLGdCQUFRLE9BQVIsQ0FBZ0IsR0FBaEIsRUFBcUIsS0FBSyxTQUFMLENBQWUsSUFBZixDQUFyQixFQVRLO09BRlA7S0FEYyxDQUFoQixDQVZTO0dBQVgsTUF5Qk8sSUFBSSxRQUFRLFFBQVIsS0FBcUIsWUFBckIsRUFBbUM7QUFDNUMsUUFBTSxhQUFhLFlBQVksR0FBWixDQUFnQixJQUFoQixDQUFiLENBRHNDO0FBRTVDLFNBQUssSUFBTSxDQUFOLElBQVcsT0FBaEIsRUFBeUI7QUFDdkIsVUFBSSxRQUFRLENBQVIsTUFBZSxXQUFXLENBQVgsQ0FBZixFQUNGLE1BQU0sSUFBSSxLQUFKLGdFQUF1RSxLQUFLLEdBQUwseUJBQTRCLEtBQUssQ0FBTCxpQkFBa0IsS0FBSyxXQUFXLENBQVgsQ0FBTCxvQkFBaUMsS0FBSyxRQUFRLENBQVIsQ0FBTCxPQUF0SixDQUFOLENBREY7S0FERjtHQUZLOztBQVFQLFNBQU8sSUFBUCxDQXZDNkM7Q0FBaEMiLCJmaWxlIjoiYXRvbS5zdG9yYWdlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUiBmcm9tIFwicmFtZGFcIlxuXG5jb25zdCBzdG9yYWdlcyA9IG5ldyBXZWFrTWFwKClcbmxldCB1c2VkT3B0aW9uc1xuaWYgKHByb2Nlc3MuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKVxuICB1c2VkT3B0aW9ucyA9IG5ldyBXZWFrTWFwKClcblxuY29uc3QgZ2V0QXRvbXMgPSBzdG9yYWdlID0+IHtcbiAgbGV0IGF0b21zID0gc3RvcmFnZXMuZ2V0KHN0b3JhZ2UpXG4gIGlmICghYXRvbXMpXG4gICAgc3RvcmFnZXMuc2V0KHN0b3JhZ2UsIGF0b21zID0ge30pXG4gIHJldHVybiBhdG9tc1xufVxuXG5jb25zdCB0cnlQYXJzZSA9IGpzb24gPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGpzb24pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yXG4gIH1cbn1cblxuY29uc3Qgc2VlbXNWYWxpZCA9XG4gIGRhdGEgPT4gZGF0YSAmJiBkYXRhLmNvbnN0cnVjdG9yID09PSBPYmplY3QgJiYgXCJ2YWx1ZVwiIGluIGRhdGFcblxuY29uc3QgZ2V0VmFsdWUgPSAoc3RvcmFnZSwga2V5LCBzY2hlbWEsIGRlZmF1bHRWYWx1ZSwgdGltZSkgPT4ge1xuICBjb25zdCBqc29uID0gc3RvcmFnZS5nZXRJdGVtKGtleSlcbiAgaWYgKCFqc29uKVxuICAgIHJldHVybiBkZWZhdWx0VmFsdWVcblxuICBjb25zdCBkYXRhID0gdHJ5UGFyc2UoanNvbilcbiAgaWYgKCFzZWVtc1ZhbGlkKGRhdGEpIHx8IFIuZXF1YWxzKGRhdGEuc2NoZW1hLCBzY2hlbWEpIHx8IFIuZXF1YWxzKGRhdGEudmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICBzdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KVxuICAgIHJldHVybiBkZWZhdWx0VmFsdWVcbiAgfVxuXG4gIGlmICgwIDw9IHRpbWUpIHtcbiAgICBkYXRhLmV4cGlyZXMgPSB0aW1lICsgRGF0ZS5ub3coKVxuXG4gICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpXG4gIH1cblxuICByZXR1cm4gZGF0YS52YWx1ZVxufVxuXG5leHBvcnQgY29uc3QgdW5zYWZlRGVsZXRlQXRvbSA9ICh7c3RvcmFnZSwga2V5fSkgPT4ge1xuICBjb25zdCBhdG9tcyA9IGdldEF0b21zKHN0b3JhZ2UpXG4gIGRlbGV0ZSBhdG9tc1trZXldXG59XG5cbmV4cG9ydCBjb25zdCBleHBpcmVOb3cgPSAoe3N0b3JhZ2UsIHJlZ2V4LCB1bnNhZmVEZWxldGVBdG9tc30pID0+IHtcbiAgZm9yIChsZXQgaT0wOyBpPHN0b3JhZ2UubGVuZ3RoOyArK2kpIHtcbiAgICBjb25zdCBrZXkgPSBzdG9yYWdlLmtleShpKVxuXG4gICAgaWYgKCFyZWdleC50ZXN0KGtleSkpXG4gICAgICBjb250aW51ZVxuXG4gICAgY29uc3QgZGF0YSA9IHRyeVBhcnNlKHN0b3JhZ2UuZ2V0SXRlbShrZXkpKVxuICAgIGlmICghc2VlbXNWYWxpZChkYXRhKSlcbiAgICAgIGNvbnRpbnVlXG5cbiAgICBpZiAoZGF0YS5leHBpcmVzIDw9IERhdGUubm93KCkpIHtcbiAgICAgIHN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpXG5cbiAgICAgIGlmICh1bnNhZmVEZWxldGVBdG9tcylcbiAgICAgICAgdW5zYWZlRGVsZXRlQXRvbSh7c3RvcmFnZSwga2V5fSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2hvdyh4KSB7XG4gIHN3aXRjaCAodHlwZW9mIHgpIHtcbiAgY2FzZSBcInN0cmluZ1wiOlxuICBjYXNlIFwib2JqZWN0XCI6XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHgpXG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIGAke3h9YFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0ICh7a2V5LCBzdG9yYWdlLCAuLi5vcHRpb25zfSkgPT4ge1xuICBjb25zdCB7dmFsdWU6IGRlZmF1bHRWYWx1ZSwgQXRvbSwgdGltZSwgc2NoZW1hLCBkZWJvdW5jZX0gPSBvcHRpb25zXG5cbiAgY29uc3QgYXRvbXMgPSBnZXRBdG9tcyhzdG9yYWdlKVxuXG4gIGxldCBhdG9tID0gYXRvbXNba2V5XVxuICBpZiAoIWF0b20pIHtcbiAgICBhdG9tc1trZXldID0gYXRvbSA9IEF0b20oZ2V0VmFsdWUoc3RvcmFnZSwga2V5LCBzY2hlbWEsIGRlZmF1bHRWYWx1ZSwgdGltZSkpXG5cbiAgICBpZiAocHJvY2Vzcy5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpXG4gICAgICB1c2VkT3B0aW9ucy5zZXQoYXRvbSwgb3B0aW9ucylcblxuICAgIGxldCBjaGFuZ2VzID0gYXRvbS5jaGFuZ2VzKClcbiAgICBpZiAoMCA8PSBkZWJvdW5jZSlcbiAgICAgIGNoYW5nZXMgPSBjaGFuZ2VzLmRlYm91bmNlKGRlYm91bmNlKVxuXG4gICAgY2hhbmdlcy5vblZhbHVlKHZhbHVlID0+IHtcbiAgICAgIGlmIChSLmVxdWFscyh2YWx1ZSwgZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICBzdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHt2YWx1ZX1cblxuICAgICAgICBpZiAoc2NoZW1hICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgZGF0YS5zY2hlbWEgPSBzY2hlbWFcblxuICAgICAgICBpZiAoMCA8PSB0aW1lKVxuICAgICAgICAgIGRhdGEuZXhwaXJlcyA9IHRpbWUgKyBEYXRlLm5vdygpXG5cbiAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpXG4gICAgICB9XG4gICAgfSlcbiAgfSBlbHNlIGlmIChwcm9jZXNzLk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGNvbnN0IG9sZE9wdGlvbnMgPSB1c2VkT3B0aW9ucy5nZXQoYXRvbSlcbiAgICBmb3IgKGNvbnN0IGsgaW4gb3B0aW9ucykge1xuICAgICAgaWYgKG9wdGlvbnNba10gIT09IG9sZE9wdGlvbnNba10pXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgYXRvbS5zdG9yYWdlOiBDcmVhdGVkIHR3byBhdG9tcyB3aXRoIHNhbWUgc3RvcmFnZSBhbmQga2V5ICR7c2hvdyhrZXkpfSwgYnV0IGRpZmZlcmVudCAke3Nob3coayl9OiBmaXJzdCAke3Nob3cob2xkT3B0aW9uc1trXSl9IGFuZCBsYXRlciAke3Nob3cob3B0aW9uc1trXSl9LmApXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGF0b21cbn1cbiJdfQ==
{
"name": "atom.storage",
"version": "0.2.0",
"description": "Minimalistic storage implementation for Atoms",
"version": "0.3.0",
"description": "Reactive variables with Storage",
"main": "lib/atom.storage.js",

@@ -25,2 +25,5 @@ "scripts": {

"homepage": "https://github.com/calmm-js/atom.storage#readme",
"dependencies": {
"ramda": ">=0.20.1 <0.22.0"
},
"devDependencies": {

@@ -37,5 +40,4 @@ "babel-cli": "^6.7.5",

"node-localstorage": "^1.3.0",
"nyc": "^6.4.0",
"ramda": "^0.21.0"
"nyc": "^6.4.0"
}
}

@@ -1,5 +0,5 @@

Minimalistic
[`Storage`](https://developer.mozilla.org/en-US/docs/Web/API/Storage)
A [`Storage`](https://developer.mozilla.org/en-US/docs/Web/API/Storage)
(e.g. [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage))
implementation for Atoms.
implementation for Atoms that is designed for persisting non-critical data such
as selections made by the user over sessions.

@@ -41,3 +41,3 @@ [![npm version](https://badge.fury.io/js/atom.storage.svg)](http://badge.fury.io/js/atom.storage) [![Build Status](https://travis-ci.org/calmm-js/atom.storage.svg?branch=master)](https://travis-ci.org/calmm-js/atom.storage) [![](https://david-dm.org/calmm-js/atom.storage.svg)](https://david-dm.org/calmm-js/atom.storage) [![](https://david-dm.org/calmm-js/atom.storage/dev-status.svg)](https://david-dm.org/calmm-js/atom.storage#info=devDependencies) [![Gitter](https://img.shields.io/gitter/room/calmm-js/chat.js.svg?style=flat-square)](https://gitter.im/calmm-js/chat)

```js
const stored = Stored({key: "my-stored-model",
const stored = Stored({key: "my-unique-app-prefix:my-stored-model",
value: defaultValue,

@@ -48,4 +48,7 @@ Atom,

The given default value is only used when the given storage does not already
contain a value for the given key.
The default value is used when the storage does not already contain a value for
the key. Also, when a stored atom is written to with a value that is
[equal](http://ramdajs.com/0.21.0/docs/#equals) to the default value, the
persisted value for the stored atom is removed from the storage. This avoids
unnecessary use of storage space.

@@ -66,3 +69,3 @@ The value of the atom is converted to a string by calling

```js
const stored1 = Stored({key: "my-stored-model",
const stored1 = Stored({key: "my-unique-app-prefix:my-stored-model",
value: defaultValue,

@@ -72,3 +75,3 @@ Atom,

const stored2 = Stored({key: "my-stored-model",
const stored2 = Stored({key: "my-unique-app-prefix:my-stored-model",
value: defaultValue,

@@ -92,3 +95,3 @@ Atom,

time: Maybe Milliseconds,
schema: Maybe (Number | Boolean | String | null),
schema: Maybe JSON,
debounce: Maybe Milliseconds}

@@ -101,5 +104,5 @@ ```

The `schema`, if specified, is stored with the value, and checked when a stored
atom is created. If the stored `schema` is not equal, as determined by `===`,
to the given value, then the stored value is ignored and the given default is
used instead.
atom is created. If the stored `schema` is not
[equal](http://ramdajs.com/0.21.0/docs/#equals) to the given schema, then the
stored value is removed and the given default is used instead.

@@ -112,2 +115,8 @@ The `debounce`, if specified, is the debounce period, in milliseconds, to use

When a value is persisted to storage, the expiration time is set to `time +
Date.now()`. Also, when a stored atom with a particular key is first created
(e.g. when the application is started), the expiration time is updated to
`time + Date.now()`. This way a value is kept alive as long as it is being
used.
The named export

@@ -128,2 +137,4 @@

Note the use of `^` in the above regex.
### Combining with Undo

@@ -130,0 +141,0 @@

@@ -0,1 +1,3 @@

import * as R from "ramda"
const storages = new WeakMap()

@@ -24,14 +26,19 @@ let usedOptions

const getValue = (storage, key, schema, value) => {
const getValue = (storage, key, schema, defaultValue, time) => {
const json = storage.getItem(key)
if (!json)
return value
return defaultValue
const data = tryParse(json)
if (!seemsValid(data))
return value
if (!seemsValid(data) || R.equals(data.schema, schema) || R.equals(data.value, defaultValue)) {
storage.removeItem(key)
return defaultValue
}
if (data.schema !== schema)
return value
if (0 <= time) {
data.expires = time + Date.now()
storage.setItem(key, JSON.stringify(data))
}
return data.value

@@ -76,3 +83,3 @@ }

export default ({key, storage, ...options}) => {
const {value, Atom, time, schema, debounce} = options
const {value: defaultValue, Atom, time, schema, debounce} = options

@@ -83,3 +90,3 @@ const atoms = getAtoms(storage)

if (!atom) {
atoms[key] = atom = Atom(getValue(storage, key, schema, value))
atoms[key] = atom = Atom(getValue(storage, key, schema, defaultValue, time))

@@ -94,11 +101,15 @@ if (process.NODE_ENV !== "production")

changes.onValue(value => {
const data = {value}
if (R.equals(value, defaultValue)) {
storage.removeItem(key)
} else {
const data = {value}
if (schema !== undefined)
data.schema = schema
if (schema !== undefined)
data.schema = schema
if (0 <= time)
data.expires = time + Date.now()
if (0 <= time)
data.expires = time + Date.now()
storage.setItem(key, JSON.stringify(data))
storage.setItem(key, JSON.stringify(data))
}
})

@@ -105,0 +116,0 @@ } else if (process.NODE_ENV !== "production") {

Sorry, the diff of this file is not supported yet

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