UNPKG

react-use-storage-state

Version:
71 lines 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createMemoryStorage = void 0; 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, }; 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); }, }); } exports.createMemoryStorage = createMemoryStorage; //# sourceMappingURL=memory-storage.js.map