UNPKG

nuxt-utm

Version:

A Nuxt 3 module for tracking UTM parameters.

46 lines (45 loc) 1.19 kB
import { readLocalData, getSessionID, urlHasUtmParams, getUtmParams, getAdditionalInfo, isRepeatedEntry, urlHasGCLID, getGCLID } from "./utm.mjs"; import { ref } from "vue"; 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([]); nuxtApp.hook("app:mounted", () => { data.value = readLocalData(LOCAL_STORAGE_KEY); const sessionId = getSessionID(SESSION_ID_KEY); const query = nuxtApp._route.query; if (!urlHasUtmParams(query)) return; const utmParams = getUtmParams(query); const additionalInfo = getAdditionalInfo(); const timestamp = (/* @__PURE__ */ new Date()).toISOString(); const dataObject = { timestamp, utmParams, additionalInfo, sessionId }; if (urlHasGCLID) { dataObject.gclidParams = getGCLID(query); } if (isRepeatedEntry(data, dataObject)) return; data.value.unshift(dataObject); localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(data.value)); }); return { provide: { utm: data } }; });