@rpldy/safe-storage
Version:
safe (dont throw) versions of local and session storage
36 lines (35 loc) • 1.03 kB
JavaScript
;
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;