@secure-storage/common
Version:
NPM package for storing and managing data across window local-storage and session-storage securely
2 lines • 4.54 kB
JavaScript
;var x=Object.create;var f=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var j=(e,r)=>{for(var t in r)f(e,t,{get:r[t],enumerable:!0})},u=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of v(r))!I.call(e,s)&&s!==t&&f(e,s,{get:()=>r[s],enumerable:!(o=T(r,s))||o.enumerable});return e};var $=(e,r,t)=>(t=e!=null?x(C(e)):{},u(r||!e||!e.__esModule?f(t,"default",{value:e,enumerable:!0}):t,e)),P=e=>u(f({},"__esModule",{value:!0}),e);var _={};j(_,{configure:()=>d,localStorage:()=>J,sessionStorage:()=>W});module.exports=P(_);var O=process.env;var y=$(require("crypto-js"),1);var a=typeof process=="object"&&(process==null?void 0:process.env)&&typeof process.env=="object"&&process.env||null,c={secret:(a==null?void 0:a.SECURE_STORAGE_SECRET)||"x1bQYQA4vSEcR6RQ05XtJg",prefix:(a==null?void 0:a.SECURE_STORAGE_PREFIX)||"@secst"},m=(e,r)=>{if(!(typeof e>"u")&&(typeof e!="string"||!e.trim()||typeof(r==null?void 0:r.appendChecker)=="function"&&!r.appendChecker(e)))throw new Error((r==null?void 0:r.message)||"Value must be a valid string")},d=e=>{try{if(e&&typeof e=="object"){m(e.prefix,{message:"Prefix must be a valid string"}),m(e.secret,{message:"Secret must be a valid string"});for(let r in e)typeof e[r]<"u"&&(c[r]=e[r])}}catch(r){console.error("Error secure storage => update-configuration :",r)}};var h=c.secret,S=e=>{try{if(typeof e!="string")throw new Error("Value must be string");return y.default.AES.encrypt(e,h).toString()}catch(r){return console.error("Error secure storage => encrypt :",r),null}},w=e=>{try{if(typeof e!="string")throw new Error("Value must be string");return y.default.AES.decrypt(e,h).toString(y.default.enc.Utf8)}catch(r){return console.error("Error secure storage => decrypt :",r),null}};var i,E=e=>{i=e},R=()=>{try{let e=c.prefix;if(typeof e!="string")throw new Error("Invalid prefix, not a string");return`${e}`}catch(e){return console.error("Error secure storage => prefix :",e),null}},n=R();var D=e=>{try{if(typeof e=="function"||typeof e=="symbol")throw new Error("Data must not be a function or symbol");return JSON.stringify({data:e,type:typeof e})}catch(r){return console.error("Error secure storage => modify data :",r),null}},K=e=>{try{if(typeof e!="string")throw new Error("Value must be string");let r=JSON.parse(e);if(typeof r!="object"||!Object.getOwnPropertyNames(r).includes("data")||!Object.getOwnPropertyNames(r).includes("type"))throw new Error("Invalid data scheme");let t=typeof r.data;if(r.type=t,t==="symbol"||t==="function")throw new Error("Invalid data type, does not supports function or symbol");return r}catch(r){return console.error("Error secure storage => get data :",r),null}},A=["local","session"],b=e=>{if(typeof e!="string"||!A.includes(e))throw new Error("Store type must be one of [local, session]");if(typeof i!="object"||typeof i.localStorage!="object"||typeof i.sessionStorage!="object")throw new Error("Invalid window, please use only in browser")},p=(e,r,t)=>{if(typeof e!="string")throw new Error("Prefix is invalid");if(typeof r!="string")throw new Error("Key must be string");b(t)},V=e=>{try{let r=e.length;for(let t=0;t<r;t++){let o=e.key(t);o!=null&&o.startsWith(`${n}.`)&&e.removeItem(o)}}catch(r){console.error("Error secure storage => matched-clear :",r)}},g=class{constructor(r){this.store="local";this.storage=i.localStorage;this.setItem=(r,t)=>{try{p(n,r,this.store);let o=D(t);if(typeof o!="string")return;let s=S(o);if(typeof s!="string")return;let l=`${n}.${r}`;this.storage.setItem(l,s)}catch(o){console.error("Error secure storage => setItem :",o)}};this.getItem=r=>{try{p(n,r,this.store);let t=`${n}.${r}`,o=null;o=this.storage.getItem(t);let s=w(o);if(typeof s!="string")return null;let l=K(s);return l?l.data:null}catch(t){return console.error("Error secure storage => setItem :",t),null}};this.removeItem=r=>{try{p(n,r,this.store);let t=`${n}.${r}`;this.storage.removeItem(t)}catch(t){console.error("Error secure storage => removeItem :",t)}};this.clear=()=>{try{p(n,"",this.store),V(this.storage)}catch(r){console.error("Error secure storage => clear :",r)}};this.forceClear=()=>{try{p(n,"",this.store),this.storage.clear()}catch(r){console.error("Error secure storage => force-clear :",r)}};try{b(r),this.store=r,r==="local"&&(this.storage=i.localStorage),r==="session"&&(this.storage=i.sessionStorage)}catch{}}};E(window);var J=new g("local"),W=new g("session");
//# sourceMappingURL=index.cjs.map