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