UNPKG

nuxt-utm

Version:

A Nuxt 3 module for tracking UTM parameters.

44 lines (43 loc) 1.21 kB
import { ref } from "vue"; import { readLocalData, getSessionID, getUtmParams, getAdditionalInfo, isRepeatedEntry, urlHasGCLID, getGCLID } from "./utm.js"; import { defineNuxtPlugin } from "#app"; const LOCAL_STORAGE_KEY = "nuxt-utm-data"; const SESSION_ID_KEY = "nuxt-utm-session-id"; export default defineNuxtPlugin((nuxtApp) => { const data = ref([]); const processUtmData = () => { if (typeof window === "undefined") return; data.value = readLocalData(LOCAL_STORAGE_KEY); const sessionId = getSessionID(SESSION_ID_KEY); const query = nuxtApp._route.query; const utmParams = getUtmParams(query); const additionalInfo = getAdditionalInfo(); const timestamp = (/* @__PURE__ */ new Date()).toISOString(); const dataObject = { timestamp, utmParams, additionalInfo, sessionId }; if (urlHasGCLID(query)) { dataObject.gclidParams = getGCLID(query); } if (isRepeatedEntry(data, dataObject)) return; data.value.unshift(dataObject); localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(data.value)); }; nuxtApp.hook("app:mounted", processUtmData); return { provide: { utm: data } }; });