@analytics/session-utils
Version:
Tiny session utility library
3 lines (2 loc) • 1.63 kB
JavaScript
var e=require("analytics-utils"),t=require("@analytics/session-storage-utils"),i=require("@analytics/cookie-utils"),r=require("@analytics/global-storage-utils"),s="__",n="session",o=s+n,a="page",u=["id","createdAt","created"];function d(e){var t=e?new Date(e):new Date;return[t.toISOString(),t.getTime()]}function c(){var t=d(),i=t[0],r=t[1];return{id:e.uuid(),created:r,createdAt:i}}var g={session:[t.getSessionItem,t.setSessionItem],page:[r.get,r.set]};function l(e,t){for(var i=g[e],r=i[0],o=i[1],a=c(),d=!1,l={},v=0;v<u.length;v++){var x=u[v],S=s+e+s+n+s+x,f=r(S);d=t||!f,(t||!t&&!f)&&o(S,a[x]);var m=f&&!t?f:a[x],b="created"!==x?m:Number(m);l[x]=b}return p(l,d)}function p(e,t){var i=Date.now();return e.elapsed=i-e.created,e.expires&&(e.remaining=Math.max(e.expires-i,0),e.isExpired=0===e.remaining),e.isNew=t,e}function v(e,t){void 0===e&&(e=30);var r=i.getCookie(o),s=r?JSON.parse(r):x(e);return t?s:p(s,!r)}function x(e,t,r){void 0===e&&(e=30);var s=r?v(e,!0):c(),n=60*e,a=s.created;if(r){var u=d(),g=u[0],l=u[1];s.modified=l,s.modifiedAt=g,a=l}var x=d(a+1e3*n),S=x[0];return s.expires=x[1],s.expiresAt=S,s.duration=1e3*n,t&&(s=Object.assign(s,t)),i.setCookie(o,JSON.stringify(s),n),p(s,!r)}var S=l.bind(null,n),f=l.bind(null,n,!0),m=l.bind(null,a),b=l.bind(null,a,!0);exports.extendSession=function(e,t){return void 0===e&&(e=30),x(e||1,t,!0)},exports.getPageSession=m,exports.getSession=v,exports.getTabSession=S,exports.removeSession=function(){return i.removeCookie(o)},exports.sessionData=c,exports.setPageSession=b,exports.setSession=x,exports.setTabSession=f;
//# sourceMappingURL=analytics-util-session.js.map