UNPKG

@rpldy/safe-storage

Version:

safe (dont throw) versions of local and session storage

36 lines (35 loc) 1.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _shared = require("@rpldy/shared"); const safeStorageCreator = storageType => { let isSupported = false; const checkSupport = () => { try { if ((0, _shared.hasWindow)() && storageType in window) { const key = "__lsTest"; window[storageType].setItem(key, `__test-${Date.now()}`); window[storageType].removeItem(key); isSupported = true; } } catch (ex) {} }; checkSupport(); const base = { isSupported, length: 0 }; const safeStorage = ["key", "getItem", "setItem", "removeItem", "clear"].reduce((res, method) => { res[method] = (...args) => isSupported ? window[storageType][method](...args) : undefined; return res; }, base); Object.defineProperty(safeStorage, "length", { get() { return isSupported ? window[storageType].length : 0; } }); return safeStorage; }; var _default = exports.default = safeStorageCreator;