typesafe-storage
Version:
Typesafe Web Storage API wrapper to support objects and arrays
28 lines (26 loc) • 842 B
text/typescript
// https://developer.mozilla.org/ja/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API
const isStorageAvailable = (storage: Storage): boolean => {
try {
const key = '__typesafe-storage_test__';
storage.setItem(key, key);
storage.removeItem(key);
return true;
} catch (e) {
return (
e instanceof DOMException &&
// everything except Firefox
(e.code === 22 ||
// Firefox
e.code === 1014 ||
// test name field too, because code might not be present
// everything except Firefox
e.name === 'QuotaExceededError' ||
// Firefox
e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
// acknowledge QuotaExceededError only if there's something already stored
storage &&
storage.length !== 0
);
}
};
export default isStorageAvailable;