UNPKG

nuxt-utm

Version:

A Nuxt 3/4 module for tracking UTM parameters.

67 lines (66 loc) 2.3 kB
export const generateSessionId = () => { return Math.random().toString(36).substring(2, 15); }; export const readLocalData = (localStorageKey) => { const localData = localStorage.getItem(localStorageKey); try { if (localData) { return JSON.parse(localData); } } catch (error) { console.error("Error parsing local storage data", error); } return []; }; export const getSessionID = (sessionIdKey) => { const sessionID = sessionStorage.getItem(sessionIdKey) || ""; if (sessionID == "") { const newSessionID = generateSessionId(); sessionStorage.setItem(sessionIdKey, newSessionID); return newSessionID; } return sessionID; }; export const urlHasUtmParams = (query) => { return Boolean( query.utm_source || query.utm_medium || query.utm_campaign || query.utm_term || query.utm_content ); }; export const getUtmParams = (query) => { return { utm_source: query.utm_source?.toString(), utm_medium: query.utm_medium?.toString(), utm_campaign: query.utm_campaign?.toString(), utm_term: query.utm_term?.toString(), utm_content: query.utm_content?.toString() }; }; export const urlHasGCLID = (query) => { return Boolean(query.gclid || query.gad_source); }; export const getGCLID = (query) => { return { gclid: query.gclid?.toString(), gad_source: query.gad_source?.toString() }; }; export const getAdditionalInfo = () => { return { referrer: document.referrer, userAgent: navigator.userAgent, language: navigator.language, landingPageUrl: window.location.href, screen: { width: screen.width, height: screen.height } }; }; export const isRepeatedEntry = (data, currentEntry) => { const lastEntry = data.value?.[0]; const lastUtm = lastEntry?.utmParams; const newUtm = currentEntry.utmParams; const lastGCLID = lastEntry?.gclidParams; const newGCLID = currentEntry.gclidParams; return lastEntry && lastUtm.utm_campaign === newUtm.utm_campaign && lastUtm.utm_content === newUtm.utm_content && lastUtm.utm_medium === newUtm.utm_medium && lastUtm.utm_source === newUtm.utm_source && lastUtm.utm_term === newUtm.utm_term && lastEntry.sessionId === currentEntry.sessionId && lastGCLID?.gad_source === newGCLID?.gad_source && lastGCLID?.gclid === newGCLID?.gclid; };