UNPKG

react-use-storage-state

Version:
67 lines 1.81 kB
function toString(value) { switch (value) { case true: return 'true'; case false: return 'false'; case null: return 'null'; case undefined: return 'undefined'; } switch (typeof value) { case 'string': return value; case 'number': return value.toString(); } return Object.prototype.toString.call(value); } var nativeKeys = { length: true, clear: true, getItem: true, key: true, removeItem: true, setItem: true, }; export function createMemoryStorage() { var entries = new Map(); var storage = { get length() { return entries.size; }, clear: function () { entries.clear(); }, getItem: function (key) { var value = entries.get(key); return value === undefined ? null : value; }, key: function (index) { return Array.from(entries.keys())[index]; }, removeItem: function (key) { entries.delete(key); }, setItem: function (key, value) { entries.set(key, toString(value)); }, }; return new Proxy(storage, { get: function (target, p, receiver) { if (typeof p === 'string' && !nativeKeys[p]) { return storage.getItem(p); } return Reflect.get(target, p, receiver); }, set: function (target, p, value, receiver) { if (typeof p === 'string' && !nativeKeys[p]) { storage.setItem(p, value); return true; } return Reflect.set(target, p, value, receiver); }, }); } //# sourceMappingURL=memory-storage.js.map