crypto-browser-storage
Version:
☢ A simple package for secure local storage data by encryption using Crypto.JS
1 lines • 8.87 kB
Source Map (JSON)
{"version":3,"file":"crypto-browser-storage.mjs","sources":["../../../projects/crypto-browser-storage/src/lib/secure-storage.ts","../../../projects/crypto-browser-storage/src/lib/crypto-browser-storage.service.ts","../../../projects/crypto-browser-storage/src/public-api.ts","../../../projects/crypto-browser-storage/src/crypto-browser-storage.ts"],"sourcesContent":["// @ts-ignore\nimport * as Generator from 'generate-js';\n\nexport const SecureStorage = Generator.generate(\n function SecureStorage(storage:any, options:any) {\n //@ts-ignore\n var _ = this;\n\n _.storage = storage;\n if (options) {\n _.hash = options.hash;\n _.encrypt = options.encrypt;\n _.decrypt = options.decrypt;\n }\n }\n);\n\nfunction through(data:any) {\n return data;\n}\n\nSecureStorage.definePrototype({\n hash: through,\n encrypt: through,\n decrypt: through,\n}, {\n writable: true\n});\n\nSecureStorage.definePrototype({\n getItem: function getItem(key:any) {\n var _ = this;\n\n key = _.hash(key);\n\n var value = _.storage.getItem(key);\n\n if (typeof value !== 'string') {\n return value;\n }\n\n value = _.decrypt(value);\n\n return JSON.parse(value);\n },\n\n setItem: function setItem(key:string, value:string) {\n var _ = this;\n\n key = _.hash(key);\n\n value = JSON.stringify(value);\n\n value = _.encrypt(value);\n\n return _.storage.setItem(key, value);\n },\n\n removeItem: function removeItem(key:string) {\n var _ = this;\n\n key = _.hash(key);\n\n return _.storage.removeItem(key);\n },\n\n clear: function clear() {\n var _ = this;\n\n return _.storage.clear();\n },\n\n key: function key(id:any) {\n var _ = this;\n\n return _.storage.key(id);\n },\n\n length: {\n get: function getLength():any {\n var _ = this;\n // @ts-ignore\n return _.storage.length;\n }\n }\n});\n\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport * as CryptoJS from \"crypto-js\";\nimport { SecureStorage } from './secure-storage';\nexport const CRYPTO_HASH_KEY = new InjectionToken<string>('CRYPTO_HASH_KEY');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoBrowserStorageService {\n private secureStorage : typeof SecureStorage;\n\n constructor(@Inject(CRYPTO_HASH_KEY) cryptoHashKey:string ){\n this.secureStorage = new SecureStorage(localStorage, {\n hash: function hash(key: any) {\n //@ts-ignore\n key = CryptoJS.SHA256(key, cryptoHashKey);\n return key.toString();\n },\n \n encrypt: function encrypt(data: any) {\n data = CryptoJS.AES.encrypt(data, cryptoHashKey);\n data = data.toString();\n return data;\n },\n \n decrypt: function decrypt(data: any) {\n data = CryptoJS.AES.decrypt(data, cryptoHashKey);\n data = data.toString(CryptoJS.enc.Utf8);\n return data;\n },\n });\n }\n /**\n * Set data to localstorage via key\n * @param {any} key:string\n * @param {any} data: any\n * @returns {void} void\n */\n public setCache(key: string, data: any): void {\n try {\n if (data) {\n this.secureStorage.setItem(key, data);\n } else {\n console.log(`Something went wrong to set ${key} cached`);\n }\n } catch (error) {\n console.log(`Error : \"${key}\" Set Cache:`, error);\n }\n }\n\n\n /**\n * Get localstorage data via key\n * @param {any} key:string\n * @returns {any} any: number | string | object | array\n */\n public getCache(key: string) {\n try {\n return this.secureStorage.getItem(key);\n } catch (error) {\n console.log('Key not found in localstorage or maybe wrong key.');\n }\n }\n\n\n /**\n * It will remove stored local storage data via key\n * @param {any} key:string\n * @returns {void} void\n */\n\n public removeCacheByKey(key: string) {\n try {\n this.secureStorage.removeItem(key);\n } catch (error) {\n console.error('Key not found in localstorage or maybe wrong key.');\n }\n }\n\n\n /**\n * It behave like native localstorage clear() function. It will clear all cache including pre-existing localstorage data.\n * @returns {void} void\n */\n public clearAllCache() {\n localStorage.clear();\n }\n\n}\n","/*\n * Public API Surface of crypto-browser-storage\n */\nexport * from './lib/crypto-browser-storage.service';\nexport * from './lib/secure-storage';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAAA;AAGO,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAC3C,SAAS,aAAa,CAAC,OAAW,EAAE,OAAW,EAAA;;IAE3C,IAAI,CAAC,GAAG,IAAI,CAAC;AAEb,IAAA,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;AACpB,IAAA,IAAI,OAAO,EAAE;AACT,QAAA,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACtB,QAAA,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC5B,QAAA,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B,KAAA;AACL,CAAC,EACH;AAEF,SAAS,OAAO,CAAC,IAAQ,EAAA;AACrB,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,aAAa,CAAC,eAAe,CAAC;AAC1B,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,OAAO,EAAE,OAAO;CACnB,EAAE;AACC,IAAA,QAAQ,EAAE,IAAI;AACjB,CAAA,CAAC,CAAC;AAEH,aAAa,CAAC,eAAe,CAAC;AAC1B,IAAA,OAAO,EAAE,SAAS,OAAO,CAAC,GAAO,EAAA;QAC7B,IAAI,CAAC,GAAG,IAAI,CAAC;AAEb,QAAA,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElB,IAAI,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEnC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEzB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC5B;AAED,IAAA,OAAO,EAAE,SAAS,OAAO,CAAC,GAAU,EAAE,KAAY,EAAA;QAC9C,IAAI,CAAC,GAAG,IAAI,CAAC;AAEb,QAAA,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAElB,QAAA,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAE9B,QAAA,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEzB,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACxC;AAED,IAAA,UAAU,EAAE,SAAS,UAAU,CAAC,GAAU,EAAA;QACtC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEb,QAAA,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElB,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACpC;IAED,KAAK,EAAE,SAAS,KAAK,GAAA;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC;AAEb,QAAA,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KAC5B;AAED,IAAA,GAAG,EAAE,SAAS,GAAG,CAAC,EAAM,EAAA;QACpB,IAAI,CAAC,GAAG,IAAI,CAAC;QAEb,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC5B;AAED,IAAA,MAAM,EAAE;QACJ,GAAG,EAAE,SAAS,SAAS,GAAA;YACnB,IAAI,CAAC,GAAG,IAAI,CAAC;;AAEb,YAAA,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;SAC3B;AACJ,KAAA;AACJ,CAAA,CAAC;;MClFW,eAAe,GAAG,IAAI,cAAc,CAAS,iBAAiB,EAAE;MAKhE,2BAA2B,CAAA;AAC9B,IAAA,aAAa,CAAwB;AAE7C,IAAA,WAAA,CAAqC,aAAoB,EAAA;AACvD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,YAAY,EAAE;AACnD,YAAA,IAAI,EAAE,SAAS,IAAI,CAAC,GAAQ,EAAA;;gBAE1B,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAC1C,gBAAA,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;aACvB;AAED,YAAA,OAAO,EAAE,SAAS,OAAO,CAAC,IAAS,EAAA;gBACjC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACjD,gBAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACvB,gBAAA,OAAO,IAAI,CAAC;aACb;AAED,YAAA,OAAO,EAAE,SAAS,OAAO,CAAC,IAAS,EAAA;gBACjC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBACjD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,gBAAA,OAAO,IAAI,CAAC;aACb;AACF,SAAA,CAAC,CAAC;KACJ;AACD;;;;;AAKG;IACI,QAAQ,CAAC,GAAW,EAAE,IAAS,EAAA;QACpC,IAAI;AACF,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,CAAA,OAAA,CAAS,CAAC,CAAC;AAC1D,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,CAAA,SAAA,EAAY,GAAG,CAAc,YAAA,CAAA,EAAE,KAAK,CAAC,CAAC;AACnD,SAAA;KACF;AAGD;;;;AAIG;AACI,IAAA,QAAQ,CAAC,GAAW,EAAA;QACzB,IAAI;YACF,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxC,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;AAClE,SAAA;KACF;AAGD;;;;AAIG;AAEI,IAAA,gBAAgB,CAAC,GAAW,EAAA;QACjC,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACpC,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;AACpE,SAAA;KACF;AAGD;;;AAGG;IACI,aAAa,GAAA;QAClB,YAAY,CAAC,KAAK,EAAE,CAAC;KACtB;AA9EU,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,kBAGlB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAHxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAF1B,MAAM,EAAA,CAAA,CAAA;;2FAEP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAIc,MAAM;2BAAC,eAAe,CAAA;;;ACXrC;;AAEG;;ACFH;;AAEG;;;;"}