@mornya/auth-libs
Version:
The project of JWT / JSON Authentication process library
1 lines • 6.36 kB
JavaScript
var o,i,s=this&&this.__assign||function(){return(s=Object.assign||function(e){for(var t,o=1,n=arguments.length;o<n;o++)for(var r in t=arguments[o])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},n=this&&this.__rest||function(e,t){var o={};for(r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var n=0,r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(o[r[n]]=e[r[n]]);return o},r=this&&this.__read||function(e,t){var o="function"==typeof Symbol&&e[Symbol.iterator];if(!o)return e;var n,r,a=o.call(e),i=[];try{for(;(void 0===t||0<t--)&&!(n=a.next()).done;)i.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(o=a.return)&&o.call(a)}finally{if(r)throw r.error}}return i},a=this&&this.__spreadArray||function(e,t,o){if(o||2===arguments.length)for(var n,r=0,a=t.length;r<a;r++)!n&&r in t||((n=n||Array.prototype.slice.call(t,0,r))[r]=t[r]);return e.concat(n||Array.prototype.slice.call(t))},l=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.initialize=function initialize(e){var t;window.localStorage?(t=e.initialState,e=n(e,["initialState"]),i=s(s({},d),e),o=s({},t),l.EventableStorage.initialize(),window.addEventListener("eventableStorage",storageEventHandler,!1),i.isProvidedFromPostMessage&&window.addEventListener("message",messageEventHandler,!1),resolveToken(null!=(e=window.localStorage.getItem(i.storageTokenName))?e:""),p=!1):log(["ERR","black","red"],"Unable to use local storage because we didn't detect the object in window context.")},exports.destroy=function destroy(){o=void 0,clearExpiredTimeout(),window.removeEventListener("eventableStorage",storageEventHandler),i.isProvidedFromPostMessage&&window.removeEventListener("message",messageEventHandler)},exports.saveToken=function saveToken(e,t,o){setToken(e,t,o,!0)},require("@mornya/eventable-storage-libs")),c=require("jwt-decode"),d={type:"JWT",storageTokenName:"accessToken",isProvidedFromPostMessage:!0,isShowLog:!0,expiredName:"exp",expiredIn:-1,notifyExpiredInHour:24,isInvokeExpiredEvent:!0,initialState:{},onReceiveMessage:function(){},onAcquiredToken:function(){return log(["ERR","black","red"],'"onAcquiredToken" function must be implemented!')},onExpiredToken:function(){return log(["ERR","black","red"],'"onExpiredToken" function must be implemented!')},onDroppedToken:function(){return log(["ERR","black","red"],'"onDroppedToken" function must be implemented!')},onInvalidToken:function(){return log(["ERR","black","red"],'"onInvalidToken" function must be implemented!')}},u=null,p=!0;function getState(){return o}function setState(e){o=s(s({},o),e)}function setToken(e,t,o,n){var r=String(o).length,r=13<=r?o:10===r?new Date(1e3*o).getTime():Date.now()+1e3*o;n?window.localStorage.setItem(e,t,new Date(r)):(window.localStorage.setItemNative(e,t),window.localStorage.setExpire(e,new Date(r),!1))}function resolveToken(e){var t={statusCode:"EMPTY",parsedToken:null,accessToken:null!=(e=void 0===e?"":e)?e:"",expiredIn:-1,isInitialTime:p};if(e){if("JWT"===i.type)try{t.parsedToken=(0,c.jwtDecode)(e)}catch(e){return log(["AUTH","black","orange"],"No JWT/JWE provided."),e instanceof c.InvalidTokenError&&console.error(e.message),t.statusCode="NOT_JWT",void processInvalid(t)}else{if("JSON"!==i.type)return t.statusCode="NOT_ANY",void processInvalid(t);try{t.parsedToken=e.startsWith("{")&&e.endsWith("}")?JSON.parse(e):e}catch(e){return log(["AUTH","black","orange"],"No JSON/Serialized provided."),t.statusCode="NOT_JSON",void processInvalid(t)}}var o,n,r,a,e=Number(null!=(e=t.parsedToken&&i.expiredName&&t.parsedToken[i.expiredName])?e:i.expiredIn);(!(0<e)||(r=String(e).length,n=void 0,o=1,t.expiredIn=e,13<=r?(n=e<(a=Date.now()),o+=Math.round((e-a)/1e3)):10===r?(n=e<(a=Math.floor(Date.now()/1e3)),o+=e-a):(n=e<=0,o+=e),n)?(t.statusCode="EXPIRED",processExpired):(i.notifyExpiredInHour&&0<i.notifyExpiredInHour&&(r=Math.floor(o/3600))<=i.notifyExpiredInHour&&(1<=r?log(["AUTH","black","gold"],"Access Token will be expired in ".concat(r," hour").concat(1<r?"s":"",".")):(a=Math.ceil(o/60)+1,log(["AUTH","black","gold"],"Access Token will be expired in ".concat(a," minute").concat(1<a?"s":"",".")))),i.isInvokeExpiredEvent&&(clearExpiredTimeout(),u=setTimeout(function(){processExpired(s(s({},t),{statusCode:"EXPIRED"}))},1e3*o)),t.statusCode="SUCCEED",function processSucceed(e){log(["AUTH","white","green"],"Access Token was successfully acquired."),window.localStorage.getItem(i.storageTokenName)||setToken(i.storageTokenName,e.accessToken,e.expiredIn,!1);i.onAcquiredToken({result:e,getState:getState,setState:setState})}))(t)}else t.statusCode="EMPTY",!function processEmpty(e){clearExpiredTimeout(),window.localStorage.removeItemNative(i.storageTokenName),window.localStorage.removeItemNative("".concat(i.storageTokenName,".exp")),i.onDroppedToken({result:e,next:resolveToken,getState:getState,setState:setState})}(t)}function clearExpiredTimeout(){u&&(clearTimeout(u),u=null)}function processExpired(e){log(["AUTH","black","gold"],"Access Token was expired."),clearExpiredTimeout(),window.localStorage.removeItemNative(i.storageTokenName),window.localStorage.removeItemNative("".concat(i.storageTokenName,".exp")),i.onExpiredToken({result:e,next:resolveToken,getState:getState,setState:setState})}function processInvalid(e){clearExpiredTimeout(),i.onInvalidToken({result:e,next:resolveToken,getState:getState,setState:setState})}function storageEventHandler(e){if(e.detail.key===i.storageTokenName)switch(e.detail.action){case"remove":case"clear":var t={statusCode:"EMPTY",parsedToken:null,accessToken:"",expiredIn:-1,isInitialTime:p};i.onDroppedToken({result:t,next:resolveToken,getState:getState,setState:setState});break;case"set":resolveToken(e.detail.value)}}function messageEventHandler(e){null!=e&&e.data&&i.onReceiveMessage&&i.onReceiveMessage({event:e,next:resolveToken,getState:getState,setState:setState})}function log(e,t){var o;i.isShowLog&&(o=(e=r(e,3))[0],console.info.apply(console,a(a([],r(function getTag(e,t,o){var n=3===e.length?"3px 10px 2px 9px":"3px 6px 2px";return["%c".concat(e),"color:".concat(t,";background-color:").concat(o,";border-radius:4px;line-height:1;padding:").concat(n)]}(o,e[1],e[2])),!1),[t],!1)))}