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