typesafe-storage
Version:
Typesafe Web Storage API wrapper to support objects and arrays
3 lines (2 loc) • 1.72 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).TypesafeStorage={})}(this,(function(e){"use strict";function t(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function n(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}var r=function(){function e(){this.values={}}var t=e.prototype;return t.clear=function(){this.values={}},t.getItem=function(e){return this.values[e]||null},t.key=function(e){return Object.keys(this.values)[e]||null},t.setItem=function(e,t){this.values[e]=t},t.removeItem=function(e){delete this.values[e]},n(e,[{key:"length",get:function(){return Object.keys(this.values).length}}]),e}(),o=function(){function e(e){this.storage=e}var t=e.prototype;return t.clear=function(){this.storage.clear()},t.getItem=function(e){var t=this.storage.getItem(e);if("string"!=typeof t)return t;try{return JSON.parse(t)}catch(e){return null}},t.key=function(e){return this.storage.key(e)},t.setItem=function(e,t){this.storage.setItem(e,JSON.stringify(t))},t.removeItem=function(e){this.storage.removeItem(e)},n(e,[{key:"length",get:function(){return this.storage.length}}]),e}();e.createStorage=function(e){return new o(e&&function(e){try{var t="__typesafe-storage_test__";return e.setItem(t,t),e.removeItem(t),!0}catch(t){return t instanceof DOMException&&(22===t.code||1014===t.code||"QuotaExceededError"===t.name||"NS_ERROR_DOM_QUOTA_REACHED"===t.name)&&e&&0!==e.length}}(e)?e:new r)},Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=typesafestorage.umd.production.min.js.map