UNPKG

ng2-webstorage

Version:
1 lines 7.02 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core")):"function"==typeof define&&define.amd?define(["exports","@angular/core"],t):t(e.ng2Webstorage=e.ng2Webstorage||{},e.ng.core)}(this,function(e,t){"use strict";function r(e){return 0===e.indexOf(S+d)}function n(e,t,r){return void 0===r&&(r=null),function(n,i){o(e,t,n,i,r)}}function o(e,t,r,n,o){var i=e||n;if(Object.defineProperty(r,n,{get:function(){var e=h.genKey(i);return K.retrieve(t,e)},set:function(e){var r=h.genKey(i);this[r]=e,K.store(t,r,e)}}),null===r[n]&&void 0!==o)var s=m.storageInit$.subscribe(function(){r[n]=o,s.unsubscribe()})}function i(e,t){return function(r,n){o(e,u.local,r,n,t)}}function s(e,t){return function(r,n){o(e,u.session,r,n,t)}}function a(e){return new k(e)}var u;!function(e){e[e.local=0]="local",e[e.session=1]="session"}(u||(u={}));var c,f,l,g="ng2-webstorage",v="|",p=!1,y=(c={},c[u.local]="local",c[u.session]="session",c),S=g,d=v,b=p,h=function(){function e(){}return e.isManagedKey=function(e){return 0===e.indexOf(S+d)},e.retrieveKeysFromStorage=function(e){return Object.keys(e).filter(r)},e.genKey=function(e){if("string"!=typeof e)throw Error("attempt to generate a storage key with a non string value");return""+S+d+this.formatKey(e)},e.formatKey=function(e){var t=e.toString();return b?t:t.toLowerCase()},e.setStorageKeyPrefix=function(e){void 0===e&&(e=g),S=e},e.setCaseSensitivity=function(e){void 0===e&&(e=p),b=e},e.setStorageKeySeparator=function(e){void 0===e&&(e=v),d=e},e}(),m=function(){function e(){}return e.observe=function(e,r){var n=this.genObserverKey(e,r);return n in this.observers?this.observers[n]:this.observers[n]=new t.EventEmitter},e.emit=function(e,t,r){var n=this.genObserverKey(e,t);n in this.observers&&this.observers[n].emit(r)},e.genObserverKey=function(e,t){return e+"|"+t},e.initStorage=function(){e.storageInitStream.emit(!0)},e.observers={},e.storageInitStream=new t.EventEmitter,e.storageInit$=e.storageInitStream.asObservable(),e}(),O=function(){function e(){}return e.isSecuredField=function(t){return!!~e.securedFields.indexOf(t)},e.getStorage=function(t){return this.mockStorages[t]||(this.mockStorages[t]=e.generateStorage()),this.mockStorages[t]},e.generateStorage=function(){var t={};return Object.defineProperties(t,{setItem:{writable:!1,enumerable:!1,configurable:!1,value:function(t,r){e.isSecuredField(t)||(this[t]=r)}},getItem:{writable:!1,enumerable:!1,configurable:!1,value:function(t){return e.isSecuredField(t)?null:this[t]||null}},removeItem:{writable:!1,enumerable:!1,configurable:!1,value:function(t){e.isSecuredField(t)||delete this[t]}},length:{enumerable:!1,configurable:!1,get:function(){return Object.keys(this).length}}}),t},e.securedFields=["setItem","getItem","removeItem","length"],e.mockStorages={},e}(),w=(f={},f[u.local]={},f[u.session]={},f),I=(l={},l[u.local]=null,l[u.session]=null,l),K=function(){function e(){}return e.store=function(e,t,r){this.getStorage(e).setItem(t,JSON.stringify(r)),w[e][t]=r,m.emit(e,t,r)},e.retrieve=function(t,r){return w[t][r]?w[t][r]:w[t][r]=e.retrieveFromStorage(t,r)},e.retrieveFromStorage=function(e,t){var r=null;try{r=JSON.parse(this.getStorage(e).getItem(t))}catch(e){console.warn("invalid value for "+t)}return r},e.refresh=function(t,r){if(h.isManagedKey(r)){var n=e.retrieveFromStorage(t,r);null===n?(delete w[t][r],m.emit(t,r,null)):n!==w[t][r]&&(w[t][r]=n,m.emit(t,r,n))}},e.clearAll=function(e){var t=this.getStorage(e);h.retrieveKeysFromStorage(t).forEach(function(r){t.removeItem(r),delete w[e][r],m.emit(e,r,null)})},e.clear=function(e,t){this.getStorage(e).removeItem(t),delete w[e][t],m.emit(e,t,null)},e.getStorage=function(e){return this.isStorageAvailable(e)?this.getWStorage(e):O.getStorage(e)},e.getWStorage=function(e){var t;switch(e){case u.local:t=localStorage;break;case u.session:t=sessionStorage;break;default:throw Error("invalid storage type")}return t},e.isStorageAvailable=function(e){if("boolean"==typeof I[e])return I[e];var t,r=!0;try{t=this.getWStorage(e),"object"==typeof t?(t.setItem("test-storage","foobar"),t.removeItem("test-storage")):r=!1}catch(e){r=!1}return r||console.warn(y[e]+" storage unavailable, Ng2Webstorage will use a fallback strategy instead"),I[e]=r},e}(),_=function(){function e(e){void 0===e&&(e=null),this.sType=e,this.sType=e}return e.prototype.store=function(e,t){var r=h.genKey(e);K.store(this.sType,r,t)},e.prototype.retrieve=function(e){var t=h.genKey(e);return K.retrieve(this.sType,t)},e.prototype.clear=function(e){e?K.clear(this.sType,h.genKey(e)):K.clearAll(this.sType)},e.prototype.observe=function(e){var t=h.genKey(e);return m.observe(this.sType,t)},e.prototype.isStorageAvailable=function(){return K.isStorageAvailable(this.sType)},e}(),j=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),F=function(e){function r(){return e.call(this,u.local)||this}return j(r,e),r.decorators=[{type:t.Injectable}],r.ctorParameters=function(){return[]},r}(_),x=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),W=function(e){function r(){return e.call(this,u.session)||this}return x(r,e),r.decorators=[{type:t.Injectable}],r.ctorParameters=function(){return[]},r}(_),k=function(){function e(e){this.prefix=g,this.separator=v,this.caseSensitive=p,e&&void 0!==e.prefix&&(this.prefix=e.prefix),e&&void 0!==e.separator&&(this.separator=e.separator),e&&void 0!==e.caseSensitive&&(this.caseSensitive=e.caseSensitive)}return e}(),E=new t.InjectionToken("WEBSTORAGE_CONFIG"),P=function(){function e(e,t){this.ngZone=e,t&&(h.setStorageKeyPrefix(t.prefix),h.setStorageKeySeparator(t.separator),h.setCaseSensitivity(t.caseSensitive)),this.initStorageListener(),m.initStorage()}return e.forRoot=function(t){return{ngModule:e,providers:[{provide:E,useValue:t},{provide:k,useFactory:a,deps:[E]}]}},e.prototype.initStorageListener=function(){var e=this;"undefined"!=typeof window&&window.addEventListener("storage",function(t){return e.ngZone.run(function(){var e=window.sessionStorage===t.storageArea?u.session:u.local;K.refresh(e,t.key)})})},e.decorators=[{type:t.NgModule,args:[{declarations:[],providers:[W,F],imports:[]}]}],e.ctorParameters=function(){return[{type:t.NgZone},{type:k,decorators:[{type:t.Optional},{type:t.Inject,args:[k]}]}]},e}();e.WEBSTORAGE_CONFIG=E,e.Ng2Webstorage=P,e.provideConfig=a,e.WebstorageConfig=k,e.LocalStorage=i,e.SessionStorage=s,e.WebStorage=n,e.WebStorageDecorator=o,e.WebStorageService=_,e.LocalStorageService=F,e.SessionStorageService=W,Object.defineProperty(e,"__esModule",{value:!0})});