{"version":3,"sources":["jsdelivr-header.js","/npm/ucoder-insight@1.1.1/dist/index.js"],"names":[],"mappings":"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","file":"/npm/ucoder-insight@1.1.1/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ucoder-insight@1.1.1/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n  initUcoderInsight: () => initUcoderInsight,\n  isVanillaJS: () => isVanillaJS,\n  trackCustomEvent: () => trackCustomEvent\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/config/defaultConfig.ts\nvar DEFAULT_CONFIG = {\n  // Core Behavior\n  mode: \"FREE\" /* FREE */,\n  autoTrack: true,\n  projectId: \"\",\n  allowDomains: [],\n  // Event Tracking Toggles\n  trackPageViews: true,\n  trackClicks: true,\n  trackErrors: true,\n  trackCustomEvents: true,\n  // Optional Features\n  trackScroll: false,\n  trackPerformance: false,\n  customEvents: true,\n  sendUserId: true,\n  sendAdditionalInfo: true,\n  batchEventSize: 20,\n  // Data Handling\n  cacheOffline: false,\n  sendInterval: 1e4,\n  // 10 sec batching\n  // Backend / Endpoints\n  userId: true,\n  device: true,\n  geo: true,\n  network: false,\n  additionalInfo: true\n};\n\n// src/interface/eventType.ts\nvar BASIC_ELEMENTS = [\n  \"button\",\n  \"a\",\n  \"form\"\n];\nvar ADVANCED_ELEMENTS = [\n  \"scroll\"\n];\n\n// src/config/trackingElements.ts\nvar trackingElements = {};\nBASIC_ELEMENTS.forEach((el) => trackingElements[el] = true);\nADVANCED_ELEMENTS.forEach((el) => trackingElements[el] = false);\nfunction applyTrackingMode(mode) {\n  BASIC_ELEMENTS.forEach((el) => trackingElements[el] = true);\n  ADVANCED_ELEMENTS.forEach((el) => {\n    trackingElements[el] = mode === \"PRO\" /* PRO */;\n  });\n}\n\n// src/loader/analyticsCache.ts\nvar analyticsCache = {\n  isInitialized: false,\n  userId: \"\",\n  s_id: \"\",\n  isNewUser: false,\n  lastSessionActive: 0,\n  TotalSessionsCount: 0,\n  isDevicesDataSend: false,\n  projectId: \"\"\n};\nvar SDKConfigCache = {\n  projectId: \"\",\n  mode: \"FREE\",\n  sendInterval: 1e4,\n  batchEventSize: 50,\n  cacheOffline: true,\n  trackClicks: true,\n  trackPageViews: true,\n  trackScroll: false,\n  trackErrors: true,\n  trackPerformance: false,\n  trackCustomEvents: true,\n  allowDomins: []\n};\nvar optionalConfigCache = {\n  debug: false\n};\n\n// src/config/resolveConfig.ts\nvar updateSDKCache = (config) => {\n  SDKConfigCache.projectId = config.projectId;\n  SDKConfigCache.mode = config.mode === \"PRO\" /* PRO */ ? \"PRO\" : \"FREE\";\n  SDKConfigCache.sendInterval = config.sendInterval || 1e4;\n  SDKConfigCache.batchEventSize = config.batchEventSize || 50;\n  SDKConfigCache.cacheOffline = config.cacheOffline ?? true;\n  SDKConfigCache.trackClicks = config.trackClicks ?? true;\n  SDKConfigCache.trackPageViews = config.trackPageViews ?? true;\n  SDKConfigCache.trackScroll = config.trackScroll ?? false;\n  SDKConfigCache.trackErrors = config.trackErrors ?? false;\n  SDKConfigCache.trackPerformance = config.trackPerformance ?? false;\n  SDKConfigCache.trackCustomEvents = config.trackCustomEvents ?? true;\n  SDKConfigCache.allowDomins = config.allowDomains || [];\n};\nvar delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nvar CACHE_TTL = 60 * 60 * 1e3;\nvar generateChecksum = (str) => {\n  let hash = 0;\n  if (str.length === 0) return hash.toString();\n  for (let i = 0; i < str.length; i++) {\n    const char = str.charCodeAt(i);\n    hash = (hash << 5) - hash + char;\n    hash = hash & hash;\n  }\n  return hash.toString();\n};\nvar encodeData = (data) => {\n  try {\n    const jsonString = JSON.stringify(data);\n    const checksum = generateChecksum(jsonString);\n    const payload = JSON.stringify({ d: jsonString, s: checksum });\n    return btoa(\n      encodeURIComponent(payload).replace(\n        /%([0-9A-F]{2})/g,\n        (match, p1) => String.fromCharCode(parseInt(p1, 16))\n      )\n    );\n  } catch (e) {\n    return \"\";\n  }\n};\nvar decodeData = (base64String) => {\n  try {\n    if (!base64String) return null;\n    if (base64String.trim().startsWith(\"{\")) {\n      return JSON.parse(base64String);\n    }\n    const decodedString = decodeURIComponent(\n      atob(base64String).split(\"\").map((c) => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2)).join(\"\")\n    );\n    const payload = JSON.parse(decodedString);\n    const calculatedChecksum = generateChecksum(payload.d);\n    if (calculatedChecksum !== payload.s) {\n      return null;\n    }\n    return JSON.parse(payload.d);\n  } catch (e) {\n    return null;\n  }\n};\nvar fetchRemoteConfig = async (projectId) => {\n  const MAX_RETRIES = 3;\n  const RETRY_DELAY = 1e3;\n  for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {\n    try {\n      const response = await fetch(\n        `https://insight-api.ucoder.in/project/SDK-config/${projectId}`\n      );\n      const result = await response.json();\n      if (result.success === false) {\n        console.error(\"SDK Error: Project not found or inactive.\");\n        return null;\n      }\n      if (result.success === true) {\n        return result.data;\n      }\n    } catch (error) {\n      console.warn(\n        ` SDK Config fetch failed (attempt ${attempt}/${MAX_RETRIES})`\n      );\n      if (attempt < MAX_RETRIES) await delay(RETRY_DELAY);\n    }\n  }\n  console.error(\" SDK: Failed to fetch config after all retries\");\n  return null;\n};\nasync function resolveConfig(projectId, userConfig2) {\n  let finalConfig = {\n    ...DEFAULT_CONFIG,\n    ...userConfig2,\n    projectId\n  };\n  let remoteData = null;\n  const CACHE_KEY = `tracker_config_${projectId}`;\n  const cached = decodeData(localStorage.getItem(CACHE_KEY) || \"\");\n  if (cached) {\n    const now = Date.now();\n    if (cached.data && now - cached.timestamp < CACHE_TTL) {\n      remoteData = cached.data;\n    }\n  }\n  if (!remoteData) {\n    remoteData = await fetchRemoteConfig(projectId);\n    if (remoteData) {\n      try {\n        const payload = {\n          timestamp: Date.now(),\n          data: remoteData\n        };\n        localStorage.setItem(CACHE_KEY, encodeData(payload));\n      } catch (e) {\n        console.warn(\" Unable to save config to cache.\");\n      }\n    }\n  }\n  if (!remoteData) {\n    console.error(\n      \" [ Ucoder Insight ] Initialization FAILED - No config available\"\n    );\n    localStorage.removeItem(CACHE_KEY);\n    return null;\n  }\n  const allowedList = remoteData.allowDomins || [];\n  const currentOrigin = window.location.origin;\n  const isAllowed = allowedList.length === 0 || allowedList.some((allowedUrl) => {\n    const normalizedUrl = allowedUrl.replace(/\\/$/, \"\");\n    return currentOrigin === normalizedUrl;\n  });\n  if (!isAllowed) {\n    console.error(\n      ` [ Ucoder Insight ] Domain ${currentOrigin} is not authorized.`\n    );\n    localStorage.removeItem(CACHE_KEY);\n    return null;\n  }\n  const isPro = remoteData.mode === \"PRO\";\n  const features = remoteData.features;\n  finalConfig = {\n    ...finalConfig,\n    mode: isPro ? \"PRO\" /* PRO */ : \"FREE\" /* FREE */,\n    sendInterval: remoteData.sendInterval,\n    autoTrack: features.autoTrack,\n    trackPageViews: features.trackPageViews,\n    trackClicks: features.trackClicks,\n    trackErrors: features.trackErrors,\n    trackScroll: features.trackScroll,\n    trackCustomEvents: features.trackCustomEvents,\n    trackPerformance: features.trackPerformance,\n    customEvents: features.customEvents,\n    cacheOffline: features.cacheOffline,\n    sendUserId: features.sendUserId,\n    sendAdditionalInfo: features.sendAdditionalInfo,\n    batchEventSize: features.batchEventsSize\n  };\n  applyTrackingMode(isPro ? \"PRO\" /* PRO */ : \"FREE\" /* FREE */);\n  analyticsCache.projectId = projectId;\n  updateSDKCache(finalConfig);\n  return finalConfig;\n}\n\n// src/helper/getElementName.ts\nfunction getElementName(el) {\n  const manual = el.getAttribute(\"data-track\") || el.getAttribute(\"aria-label\") || el.getAttribute(\"title\") || el.id;\n  if (manual) return normalize(manual);\n  const tag = el.tagName.toUpperCase();\n  if (tag === \"A\") {\n    const text2 = el.innerText || el.getAttribute(\"href\") || \"link\";\n    return normalize(text2);\n  }\n  if (tag === \"BUTTON\") {\n    return normalize(el.innerText || \"button\");\n  }\n  if (tag === \"INPUT\") {\n    const name = el.getAttribute(\"name\") || el.getAttribute(\"placeholder\") || el.type;\n    return normalize(name);\n  }\n  if (tag === \"IMG\") {\n    return normalize(el.getAttribute(\"alt\") || \"image\");\n  }\n  if (tag === \"VIDEO\") {\n    return normalize(\"video\");\n  }\n  if (tag === \"AUDIO\") {\n    return normalize(\"audio\");\n  }\n  const text = el.innerText?.trim();\n  if (text) return normalize(text);\n  return normalize(tag.toLowerCase());\n}\nfunction normalize(text) {\n  return text.toLowerCase().replace(/[^a-z0-9\\s]/g, \"\").trim().split(/\\s+/).slice(0, 5).join(\"_\") || \"element\";\n}\n\n// src/config/buildSelector.ts\nfunction buildSelector() {\n  const enabled = Object.keys(trackingElements).filter(\n    (el) => trackingElements[el] === true\n  );\n  enabled.push(\"[data-track]\");\n  return enabled.join(\",\");\n}\n\n// src/helper/shouldTrackElement.ts\nfunction shouldTrackElement(el) {\n  const attr = el.getAttribute(\"data-uca-track\");\n  if (attr === \"false\") {\n    return false;\n  }\n  if (attr === \"true\") {\n    return true;\n  }\n  const tag = el.tagName.toLowerCase();\n  if (tag === \"input\") {\n    const inputType = el.type?.toLowerCase();\n    const sensitiveInputTypes = [\n      \"password\",\n      \"email\",\n      \"text\",\n      \"tel\",\n      \"number\",\n      \"search\",\n      \"url\",\n      \"date\",\n      \"time\",\n      \"datetime-local\",\n      \"month\",\n      \"week\",\n      \"color\",\n      \"range\",\n      \"file\",\n      \"hidden\"\n    ];\n    if (sensitiveInputTypes.includes(inputType)) {\n      return false;\n    }\n    const safeInputTypes = [\"checkbox\", \"radio\", \"submit\", \"button\", \"reset\"];\n    if (safeInputTypes.includes(inputType)) {\n      return trackingElements[tag] === true;\n    }\n    return false;\n  }\n  if (tag === \"textarea\") {\n    return false;\n  }\n  if (tag === \"select\") {\n    const isSensitive = el.hasAttribute(\"data-sensitive\");\n    if (isSensitive) {\n      return false;\n    }\n  }\n  const isAllowed = trackingElements[tag] === true;\n  if (isAllowed) {\n  } else {\n  }\n  return isAllowed;\n}\n\n// src/log/logBuffer.ts\nvar logBuffer = {};\n\n// src/log/minimizeLogPayload.ts\nvar minimizeLogPayload = (eventType, actionType, totalClicks, rawData, customData) => {\n  const shouldSendDeviceData = analyticsCache.isDevicesDataSend === false;\n  const payload = {\n    ET: eventType,\n    AT: actionType,\n    PT: rawData.page,\n    TC: totalClicks,\n    PID: analyticsCache.projectId,\n    s_id: analyticsCache.s_id || void 0,\n    DD: shouldSendDeviceData ? {\n      ssc: analyticsCache.TotalSessionsCount,\n      os: navigator.platform,\n      sr: `${window.screen.width}x${window.screen.height}`,\n      ram: navigator.deviceMemory || \"unknown\",\n      tz: Intl.DateTimeFormat().resolvedOptions().timeZone,\n      cors: navigator.hardwareConcurrency || \"unknown\",\n      pxr: window.devicePixelRatio,\n      lang: navigator.language\n    } : void 0,\n    TS: (/* @__PURE__ */ new Date()).toISOString(),\n    D: {\n      el: rawData.element,\n      tg: rawData.tag,\n      u_id: rawData.userId,\n      ...rawData.additionalInfo && { addI: rawData.additionalInfo }\n    },\n    ...customData && { CD: customData }\n  };\n  if (shouldSendDeviceData) {\n    analyticsCache.isDevicesDataSend = true;\n  }\n  return payload;\n};\n\n// src/db/userMetaData.indexDb.ts\nvar dbCache = {};\nvar initDB = (DB_NAME2, STORE_NAME3) => {\n  return new Promise((resolve, reject) => {\n    if (dbCache[DB_NAME2]) {\n      return resolve(dbCache[DB_NAME2]);\n    }\n    const request = indexedDB.open(DB_NAME2, 1);\n    request.onupgradeneeded = () => {\n      const db = request.result;\n      if (!db.objectStoreNames.contains(STORE_NAME3)) {\n        db.createObjectStore(STORE_NAME3, { keyPath: \"id\" });\n      }\n    };\n    request.onsuccess = () => {\n      const db = request.result;\n      dbCache[DB_NAME2] = db;\n      db.onclose = () => {\n        delete dbCache[DB_NAME2];\n      };\n      resolve(db);\n    };\n    request.onerror = () => reject(request.error);\n  });\n};\nvar DB_NAME = \"UcoderInsightDB\";\nvar STORE_NAME = \"user_metadata\";\nvar saveMetadata = async (id, data) => {\n  const db = await initDB(DB_NAME, STORE_NAME);\n  return new Promise((resolve, reject) => {\n    const tx = db.transaction(STORE_NAME, \"readwrite\");\n    const store = tx.objectStore(STORE_NAME);\n    const request = store.put({ ...data, id });\n    request.onsuccess = () => resolve(true);\n    request.onerror = () => reject(request.error);\n  });\n};\nvar getMetadata = async (id) => {\n  const db = await initDB(DB_NAME, STORE_NAME);\n  return new Promise((resolve, reject) => {\n    const tx = db.transaction(STORE_NAME, \"readonly\");\n    const store = tx.objectStore(STORE_NAME);\n    const request = store.get(id);\n    request.onsuccess = () => resolve(request.result || null);\n    request.onerror = () => reject(request.error);\n  });\n};\n\n// src/db/cache.offline.ts\nvar LOG_DB_NAME = \"Ucoder_Offline_Logs\";\nvar STORE_NAME2 = \"queue\";\nvar MAX_BATCH_LIMIT = SDKConfigCache.batchEventSize || 50;\nvar saveOfflineBatch = async (batch) => {\n  try {\n    const db = await initDB(LOG_DB_NAME, STORE_NAME2);\n    const tx = db.transaction(STORE_NAME2, \"readwrite\");\n    const store = tx.objectStore(STORE_NAME2);\n    const countRequest = store.count();\n    countRequest.onsuccess = () => {\n      const currentCount = countRequest.result;\n      if (currentCount >= MAX_BATCH_LIMIT) {\n        return;\n      }\n      const record = {\n        id: `batch_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n        timestamp: Date.now(),\n        events: batch\n      };\n      store.put(record);\n    };\n    countRequest.onerror = () => {\n    };\n  } catch (error) {\n  }\n};\n\n// src/utils/environment.ts\nvar isTestingMode = () => {\n  return optionalConfigCache.debug === true;\n};\nvar shouldLogToConsole = () => {\n  if (isTestingMode()) {\n    return true;\n  }\n  return false;\n};\n\n// src/log/transport.ts\nvar API_URL = \"https://insight-api.ucoder.in/event/log\";\nvar isLogEnabled = () => {\n  if (!SDKConfigCache.projectId) {\n    return false;\n  }\n  if (!analyticsCache.projectId) {\n    return false;\n  }\n  return true;\n};\nvar manualOverride = null;\nvar isLoggingAllowed = () => {\n  if (manualOverride !== null) {\n    return manualOverride;\n  }\n  return isLogEnabled();\n};\nvar sendEvents = async (batch) => {\n  if (!isLoggingAllowed()) {\n    console.warn(\"SDK not configured or logging disabled. Batch dropped.\");\n    return;\n  }\n  if (!analyticsCache.projectId) {\n    console.warn(\"SDK: Project ID missing, dropping batch.\");\n    return;\n  }\n  if (shouldLogToConsole()) {\n    console.log(\"[Debug Mode] Analytics Events:\", {\n      projectId: analyticsCache.projectId,\n      eventsCount: batch.length,\n      timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n      events: batch\n    });\n    return;\n  }\n  if (!navigator.onLine) {\n    if (SDKConfigCache.cacheOffline) {\n      console.log(\"Device Offline. Saving to DB.\");\n      await saveOfflineBatch(batch);\n    }\n    return;\n  }\n  const payload = {\n    projectId: analyticsCache.projectId,\n    events: batch\n  };\n  try {\n    if (navigator.sendBeacon && typeof navigator.sendBeacon === \"function\") {\n      const blob = new Blob([JSON.stringify(payload)], {\n        type: \"application/json\"\n      });\n      const beaconSent = navigator.sendBeacon(API_URL, blob);\n      if (beaconSent) {\n        return;\n      } else {\n        console.warn(\"Beacon API failed, falling back to fetch\");\n      }\n    }\n    const response = await fetch(API_URL, {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application/json\" },\n      body: JSON.stringify(payload),\n      keepalive: true\n    });\n    if (!response.ok) {\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n    const result = await response.json();\n    if (!result.success) {\n      console.error(\"Server Rejected Data:\", result.message);\n      return;\n    }\n  } catch (error) {\n    if (SDKConfigCache.cacheOffline) {\n      console.warn(\"Network/Server failed. Saving to Offline DB.\");\n      await saveOfflineBatch(batch);\n    } else {\n      console.error(\"Failed to send events:\", error);\n    }\n  }\n};\n\n// src/log/loger.ts\nvar log = (eventType, actionType, rawData, devicesDetails, customData) => {\n  if (!isLoggingAllowed()) {\n    console.warn(\" SDK not ready. Event dropped:\", eventType);\n    return null;\n  }\n  const { key } = rawData;\n  if (!logBuffer[key]) {\n    logBuffer[key] = { count: 0, payload: null };\n  }\n  logBuffer[key].count++;\n  const data = customData !== void 0 ? {\n    ...rawData,\n    additionalInfo: { ...rawData.additionalInfo || {}, customData }\n  } : rawData;\n  const payload = minimizeLogPayload(\n    eventType,\n    actionType,\n    logBuffer[key].count,\n    data,\n    devicesDetails\n  );\n  logBuffer[key].payload = payload;\n  return payload;\n};\n\n// src/spam/rateLimiter.ts\nvar counter = 0;\nvar lastReset = Date.now();\nfunction allowLog() {\n  const limit = 15;\n  const windowMs = 1e4;\n  const now = Date.now();\n  if (now - lastReset > windowMs) {\n    counter = 0;\n    lastReset = now;\n  }\n  if (counter >= limit) {\n    if (counter === limit) {\n    }\n    return false;\n  }\n  counter++;\n  return true;\n}\n\n// src/log/safeLog.ts\nfunction safeLog(ET, AT, rawData, customData) {\n  if (!isLoggingAllowed()) {\n    return null;\n  }\n  if (!allowLog()) {\n    return null;\n  }\n  return log(ET, AT, rawData, customData);\n}\n\n// src/loader/notTrakingPath.ts\nvar userConfig = {};\nfunction configureTracker(errorConfig) {\n  userConfig = errorConfig;\n}\nfunction is404Page(currentPath2) {\n  if (userConfig.notFoundPath) {\n    let configPath = userConfig.notFoundPath.toLowerCase();\n    const pathToCheck = currentPath2.toLowerCase();\n    if (configPath.endsWith(\"*\")) {\n      configPath = configPath.slice(0, -1);\n      if (pathToCheck.startsWith(configPath)) {\n        return true;\n      }\n    } else if (pathToCheck === configPath) {\n      return true;\n    }\n  }\n  if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n    return false;\n  }\n  const title = document.title.toLowerCase();\n  const h1 = document.querySelector(\"h1\")?.innerText?.toLowerCase() || \"\";\n  const bodyText = document.body.innerText.toLowerCase();\n  const errorKeywords = [\n    \"404\",\n    \"page not found\",\n    \"not found\",\n    \"page missing\",\n    \"error 404\"\n  ];\n  if (errorKeywords.some((key) => title.includes(key))) return true;\n  if (errorKeywords.some((key) => h1.includes(key))) return true;\n  if (bodyText.includes(\"this page could not be found\")) return true;\n  if (bodyText.length < 600 && (bodyText.includes(\"oops\") || bodyText.includes(\"could not find\"))) {\n    return true;\n  }\n  return false;\n}\nfunction isNotTrackPage(currentPath2) {\n  if (!userConfig.notTrackPath) return false;\n  if (typeof window === \"undefined\") return false;\n  const notTrackPagesList = Array.isArray(userConfig.notTrackPath) ? userConfig.notTrackPath : [userConfig.notTrackPath];\n  const currentPathLower = currentPath2.toLowerCase();\n  for (const path of notTrackPagesList) {\n    let configPath = path.toLowerCase();\n    if (configPath.endsWith(\"*\")) {\n      configPath = configPath.slice(0, -1);\n      if (currentPathLower.startsWith(configPath)) {\n        return true;\n      }\n    } else {\n      if (currentPathLower === configPath) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\n// src/events/click.events.ts\nvar lastEventKey = \"\";\nvar lastEventTime = 0;\nvar CLICK_DEBOUNCE_MS = 300;\nfunction registerClickEvent(page) {\n  if (!SDKConfigCache.trackClicks) {\n    return;\n  }\n  if (isNotTrackPage(page) || is404Page(page)) {\n    return;\n  }\n  const selector = buildSelector();\n  const handleClick = (event) => {\n    const target = event.target;\n    if (!target) return;\n    const element = target.closest(selector);\n    if (!element) return;\n    const name = getElementName(element);\n    const tag = element.tagName.toLowerCase();\n    if (!shouldTrackElement(element)) {\n      return;\n    }\n    const key = `click:${page}:${name}`;\n    const now = Date.now();\n    if (key === lastEventKey && now - lastEventTime < CLICK_DEBOUNCE_MS) {\n      return;\n    }\n    lastEventKey = key;\n    lastEventTime = now;\n    safeLog(\"click\" /* CLICK */, \"ui_interaction\" /* UI_INTERACTION */, {\n      element: name,\n      key,\n      page,\n      tag,\n      userId: analyticsCache.userId\n    });\n  };\n  document.addEventListener(\"click\", handleClick, { passive: true });\n  return () => {\n    document.removeEventListener(\"click\", handleClick);\n  };\n}\n\n// src/log/logReporter.ts\nfunction startLogReporter(intervalMs = 5e3, onBatchReady) {\n  setInterval(() => {\n    if (!isLoggingAllowed()) {\n      console.log(\" SDK not ready. Skipping batch processing.\");\n      return;\n    }\n    const keys = Object.keys(logBuffer);\n    if (keys.length === 0) return;\n    const batch = keys.map((key) => {\n      const entry = logBuffer[key];\n      if (!entry || !entry.payload) return null;\n      return entry.payload;\n    }).filter(Boolean);\n    if (batch.length > 0) {\n      onBatchReady?.(batch);\n      sendEvents(batch);\n    }\n    keys.forEach((k) => delete logBuffer[k]);\n  }, intervalMs);\n}\n\n// src/helper/genarateUUID.ts\nvar generateUUID = (length = 10) => {\n  return Array.from(crypto.getRandomValues(new Uint8Array(length))).map((b) => b.toString(36)).join(\"\").substring(0, length);\n};\n\n// src/loader/getUser.ts\nvar IDENTITY_KEY = \"CURRENT_USER_IDENTITY\";\nvar SESSION_ID_KEY = \"__UC_SESSION_ID__\";\nvar SESSION_TIMEOUT = 30 * 60 * 1e3;\nasync function loadUserToken() {\n  if (analyticsCache.isInitialized) return analyticsCache;\n  const now = Date.now();\n  let finalUserId = \"\";\n  let currentSessionId = localStorage.getItem(SESSION_ID_KEY);\n  let sessionCount = 0;\n  let isNewUser = false;\n  const record = await getMetadata(IDENTITY_KEY);\n  if (record && record.userId) {\n    finalUserId = record.userId;\n    sessionCount = record.sc || 1;\n    const lastSeen = record.lastSeen || 0;\n    if (!currentSessionId || now - lastSeen > SESSION_TIMEOUT) {\n      currentSessionId = generateUUID(10);\n      sessionCount += 1;\n      localStorage.setItem(SESSION_ID_KEY, currentSessionId);\n      await saveMetadata(IDENTITY_KEY, {\n        ...record,\n        sc: sessionCount,\n        lastSeen: now\n      });\n    } else {\n      await saveMetadata(IDENTITY_KEY, {\n        ...record,\n        lastSeen: now\n      });\n    }\n    isNewUser = false;\n  } else {\n    finalUserId = generateUUID(16);\n    currentSessionId = generateUUID(10);\n    sessionCount = 1;\n    isNewUser = true;\n    localStorage.setItem(SESSION_ID_KEY, currentSessionId);\n    await saveMetadata(IDENTITY_KEY, {\n      userId: finalUserId,\n      sc: sessionCount,\n      firstSeen: now,\n      lastSeen: now\n    });\n  }\n  analyticsCache.userId = finalUserId;\n  analyticsCache.s_id = currentSessionId;\n  analyticsCache.TotalSessionsCount = sessionCount;\n  analyticsCache.lastSessionActive = now;\n  analyticsCache.isNewUser = isNewUser;\n  analyticsCache.isInitialized = true;\n  analyticsCache.isDevicesDataSend = false;\n  return analyticsCache;\n}\n\n// src/events/error.events.ts\nvar logError = (type, extra = {}) => {\n  safeLog(\"error\" /* ERROR */, \"system_error\" /* SYSTEM_ERROR */, {\n    element: extra.element,\n    key: extra.key,\n    page: extra.page,\n    tag: extra.tag,\n    userId: analyticsCache.userId,\n    additionalInfo: {\n      errorType: type,\n      ...extra.additionalInfo ?? {}\n    }\n  });\n};\nvar handleJsError = (event) => {\n  if (!event.error) return;\n  logError(\"js_error\" /* JS_ERROR */, {\n    element: event.message,\n    tag: \"js\",\n    page: location.pathname,\n    key: `js_error:${location.pathname}:${event.message.substring(0, 50)}`,\n    additionalInfo: {\n      location: location.href,\n      message: event.message,\n      fileName: event.filename,\n      lineNumber: event.lineno,\n      columnNumber: event.colno,\n      stack: event.error?.stack\n    }\n  });\n};\nvar handleResourceError = (event) => {\n  const target = event.target;\n  if (!target || ![\"IMG\", \"SCRIPT\", \"LINK\"].includes(target.tagName)) return;\n  const resourceUrl = target.getAttribute(\"src\") || target.getAttribute(\"href\") || \"unknown\";\n  logError(\"resource_error\" /* RESOURCE_ERROR */, {\n    element: resourceUrl,\n    tag: target.tagName.toLowerCase(),\n    page: location.pathname,\n    key: `resource_error:${location.pathname}:${target.tagName.toLowerCase()}`,\n    additionalInfo: {\n      resourceType: target.tagName.toLowerCase(),\n      resourceUrl,\n      outerHTML: target.outerHTML.substring(0, 200)\n      //  Truncate\n    }\n  });\n};\nvar handleUnhandledRejection = (event) => {\n  const reason = String(event.reason);\n  logError(\"unhandled_rejection\" /* UNHANDLED_REJECTION */, {\n    element: reason.substring(0, 100),\n    tag: \"promise\",\n    page: location.pathname,\n    key: `promise_rejection:${location.pathname}:${reason.substring(0, 50)}`,\n    additionalInfo: {\n      reason,\n      stack: event.reason?.stack || \"no-stack\"\n    }\n  });\n};\nfunction registerErrorTracking() {\n  if (!SDKConfigCache.trackErrors) {\n    return;\n  }\n  if (is404Page(location.pathname) || isNotTrackPage(location.pathname)) {\n    console.log(\n      \" Error tracking is disabled for this page:\",\n      location.pathname\n    );\n    return;\n  }\n  window.addEventListener(\"error\", handleJsError);\n  window.addEventListener(\"error\", handleResourceError, true);\n  window.addEventListener(\"unhandledrejection\", handleUnhandledRejection);\n  return () => {\n    window.removeEventListener(\"error\", handleJsError);\n    window.removeEventListener(\"error\", handleResourceError, true);\n    window.removeEventListener(\"unhandledrejection\", handleUnhandledRejection);\n  };\n}\n\n// src/helper/normalizePath.ts\nfunction normalizeUrl(rawUrl) {\n  try {\n    const parsedUrl = new URL(rawUrl, window.location.origin);\n    let path = parsedUrl.pathname;\n    if (path.endsWith(\"/\") && path.length > 1) {\n      path = path.slice(0, -1);\n    }\n    const segments = path.split(\"/\").filter(Boolean);\n    const normalizedSegments = segments.map((segment) => {\n      if (/^[0-9a-fA-F]{24}$/.test(segment)) return \"[id]\";\n      if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(\n        segment\n      ))\n        return \"[uuid]\";\n      if (/^\\d+$/.test(segment)) return \"[id]\";\n      if (/[0-9]/.test(segment) && /[a-zA-Z]/.test(segment) && segment.length > 5 && !segment.includes(\"-\")) {\n        return \"[id]\";\n      }\n      return segment;\n    });\n    return \"/\" + normalizedSegments.join(\"/\");\n  } catch {\n    return rawUrl.split(\"?\")[0] || \"/\";\n  }\n}\n\n// src/helper/getReferralSource.ts\nvar getReferralSource = () => {\n  if (typeof window === \"undefined\") return \"unknown\";\n  const searchParams = new URLSearchParams(window.location.search);\n  const utmSource = searchParams.get(\"utm_source\");\n  const ref = searchParams.get(\"ref\");\n  const source = searchParams.get(\"source\");\n  if (utmSource) return utmSource;\n  if (ref) return ref;\n  if (source) return source;\n  const referrer = document.referrer;\n  if (referrer) {\n    try {\n      const referrerUrl = new URL(referrer);\n      if (referrerUrl.hostname !== window.location.hostname) {\n        return referrerUrl.hostname;\n      }\n    } catch (error) {\n      return \"unknown\";\n    }\n  }\n  return \"direct\";\n};\n\n// src/events/pageView.events.ts\nvar DEBOUNCE_DELAY_MS = 500;\nvar MIN_DURATION_MS = 1e3;\nvar currentPage = \"\";\nvar pageStartTime = 0;\nvar enterTimeout = null;\nvar isTrackingInitialized = false;\nfunction trackPageEnter(rawPage) {\n  if (!SDKConfigCache.trackPageViews) return;\n  if (isNotTrackPage(rawPage) || is404Page(rawPage)) {\n    console.log(\"Skipping tracking for:\", rawPage);\n    return;\n  }\n  if (enterTimeout) clearTimeout(enterTimeout);\n  enterTimeout = setTimeout(() => {\n    if (isNotTrackPage(rawPage) || is404Page(rawPage)) return;\n    const normalizedPage = normalizeUrl(rawPage);\n    if (currentPage === normalizedPage && Date.now() - pageStartTime < 1e3) {\n      return;\n    }\n    currentPage = normalizedPage;\n    pageStartTime = Date.now();\n    safeLog(\"page_view\" /* PAGE_VIEW */, \"navigation\" /* NAVIGATION */, {\n      element: normalizedPage,\n      key: `page_view:${normalizedPage}`,\n      page: normalizedPage,\n      tag: \"page\",\n      userId: analyticsCache.userId,\n      additionalInfo: {\n        rawUrl: rawPage,\n        referral: getReferralSource() || \"direct\",\n        // Get fresh referral\n        UT: analyticsCache.isNewUser ? 1 : 0,\n        timestamp: Date.now()\n      }\n    });\n  }, DEBOUNCE_DELAY_MS);\n}\nfunction trackPageExit() {\n  if (!currentPage || !pageStartTime) return;\n  const duration = Date.now() - pageStartTime;\n  if (duration < MIN_DURATION_MS) {\n    currentPage = \"\";\n    pageStartTime = 0;\n    return;\n  }\n  safeLog(\"page_view\" /* PAGE_VIEW */, \"time_tracking\" /* TIME_TRACKING */, {\n    element: currentPage,\n    key: `duration:${currentPage}`,\n    page: currentPage,\n    tag: \"page\",\n    userId: analyticsCache.userId,\n    additionalInfo: {\n      durationMs: duration,\n      durationSec: Math.round(duration / 1e3),\n      UT: analyticsCache.isNewUser ? 1 : 0,\n      timestamp: Date.now()\n    }\n  });\n  currentPage = \"\";\n  pageStartTime = 0;\n}\nfunction enableAutoPageTracking() {\n  if (isTrackingInitialized) {\n    return;\n  }\n  if (!SDKConfigCache.trackPageViews) {\n    return;\n  }\n  isTrackingInitialized = true;\n  const handleInitialLoad = () => {\n    trackPageEnter(location.pathname + location.search);\n  };\n  if (document.readyState === \"complete\" || document.readyState === \"interactive\") {\n    handleInitialLoad();\n  } else {\n    window.addEventListener(\"DOMContentLoaded\", handleInitialLoad);\n  }\n  if (typeof history !== \"undefined\") {\n    const originalPushState = history.pushState;\n    const originalReplaceState = history.replaceState;\n    history.pushState = function(...args) {\n      const prevUrl = location.pathname + location.search;\n      const result = originalPushState.apply(this, args);\n      const newUrl = location.pathname + location.search;\n      if (prevUrl !== newUrl) {\n        trackPageExit();\n        trackPageEnter(newUrl);\n      }\n      return result;\n    };\n    history.replaceState = function(...args) {\n      const prevUrl = location.pathname + location.search;\n      const result = originalReplaceState.apply(this, args);\n      const newUrl = location.pathname + location.search;\n      if (prevUrl !== newUrl) {\n        trackPageExit();\n        trackPageEnter(newUrl);\n      }\n      return result;\n    };\n  }\n  window.addEventListener(\"popstate\", () => {\n    trackPageExit();\n    trackPageEnter(location.pathname + location.search);\n  });\n  window.addEventListener(\"hashchange\", () => {\n    trackPageExit();\n    trackPageEnter(location.pathname + location.hash);\n  });\n  document.addEventListener(\"visibilitychange\", () => {\n    if (document.visibilityState === \"hidden\") {\n      trackPageExit();\n    }\n  });\n  window.addEventListener(\"beforeunload\", () => {\n    trackPageExit();\n  });\n}\n\n// src/events/scroll.event.ts\nvar ACTIVATION_DELAY = 500;\nvar SCROLL_THRESHOLD = 25;\nvar SCROLL_DEBOUNCE = 200;\nvar currentPath = \"\";\nvar maxScrollDepth = 0;\nvar isTrackingActive = false;\nvar activationTimer = null;\nvar scrollTimeout = null;\nvar startNewPageTimer = () => {\n  maxScrollDepth = 0;\n  isTrackingActive = false;\n  if (activationTimer) {\n    clearTimeout(activationTimer);\n  }\n  activationTimer = setTimeout(() => {\n    isTrackingActive = true;\n  }, ACTIVATION_DELAY);\n};\nvar sendScrollLog = (path) => {\n  if (!SDKConfigCache.trackScroll) {\n    return;\n  }\n  if (maxScrollDepth < SCROLL_THRESHOLD) {\n    console.log(\n      ` Scroll depth ${maxScrollDepth}% below threshold, skipping log`\n    );\n    return;\n  }\n  const docHeight = document.documentElement.scrollHeight;\n  const winHeight = window.innerHeight;\n  const totalScrollable = docHeight - winHeight;\n  if (totalScrollable <= 0) {\n    return;\n  }\n  const scrolledPixels = Math.round(totalScrollable * (maxScrollDepth / 100));\n  safeLog(\"scroll\" /* SCROLL */, \"engagement\" /* ENGAGEMENT */, {\n    element: path,\n    key: `scroll:max:${path}`,\n    page: path,\n    tag: \"page\",\n    userId: analyticsCache.userId,\n    additionalInfo: {\n      percentage: maxScrollDepth,\n      depthString: `${maxScrollDepth}%`,\n      scrollHeight: docHeight,\n      viewportHeight: winHeight,\n      scrolledPixels,\n      totalScrollable,\n      type: \"scroll_summary\"\n    }\n  });\n};\nvar handleScrollLogic = () => {\n  if (!isTrackingActive) return;\n  if (!SDKConfigCache.trackScroll) {\n    return;\n  }\n  if (is404Page(currentPath) || isNotTrackPage(currentPath)) {\n    return;\n  }\n  const scrollTop = window.scrollY || document.documentElement.scrollTop;\n  const docHeight = document.documentElement.scrollHeight;\n  const winHeight = window.innerHeight;\n  const totalScrollable = docHeight - winHeight;\n  if (totalScrollable <= 0) return;\n  const scrollPercent = Math.min(\n    100,\n    Math.round(scrollTop / totalScrollable * 100)\n  );\n  if (scrollPercent > maxScrollDepth) {\n    maxScrollDepth = scrollPercent;\n  }\n};\nvar handleRouteChange = () => {\n  const newPath = normalizeUrl(window.location.pathname);\n  if (currentPath && currentPath !== newPath) {\n    sendScrollLog(currentPath);\n    currentPath = newPath;\n    startNewPageTimer();\n  } else if (!currentPath) {\n    currentPath = newPath;\n    startNewPageTimer();\n  }\n};\nvar cleanup = () => {\n  if (activationTimer) {\n    clearTimeout(activationTimer);\n    activationTimer = null;\n  }\n  if (scrollTimeout) {\n    clearTimeout(scrollTimeout);\n    scrollTimeout = null;\n  }\n};\nvar registerScrollTracker = () => {\n  if (!SDKConfigCache.trackScroll) {\n    console.log(\" Scroll tracking is disabled\");\n    return;\n  }\n  currentPath = normalizeUrl(window.location.pathname);\n  startNewPageTimer();\n  const handleScroll = () => {\n    if (scrollTimeout) {\n      clearTimeout(scrollTimeout);\n    }\n    scrollTimeout = setTimeout(handleScrollLogic, SCROLL_DEBOUNCE);\n  };\n  window.addEventListener(\"scroll\", handleScroll, { passive: true });\n  const originalPushState = history.pushState;\n  const originalReplaceState = history.replaceState;\n  history.pushState = function(...args) {\n    const result = originalPushState.apply(this, args);\n    handleRouteChange();\n    return result;\n  };\n  history.replaceState = function(...args) {\n    const result = originalReplaceState.apply(this, args);\n    handleRouteChange();\n    return result;\n  };\n  window.addEventListener(\"popstate\", handleRouteChange);\n  window.addEventListener(\"beforeunload\", () => {\n    sendScrollLog(currentPath);\n    cleanup();\n  });\n  document.addEventListener(\"visibilitychange\", () => {\n    if (document.visibilityState === \"hidden\") {\n      sendScrollLog(currentPath);\n    }\n  });\n  return () => {\n    window.removeEventListener(\"scroll\", handleScroll);\n    window.removeEventListener(\"popstate\", handleRouteChange);\n    cleanup();\n  };\n};\n\n// src/events/performence.event.ts\nvar import_web_vitals = require(\"web-vitals\");\nfunction registerPerformanceTracking() {\n  if (!SDKConfigCache.trackPerformance) {\n    return;\n  }\n  if (isNotTrackPage(location.pathname) || is404Page(location.pathname)) {\n    return;\n  }\n  const sendAnalyticsMetric = (metric) => {\n    const value = Math.round(metric.value);\n    const metricName = metric.name;\n    const pagePath = window.location.pathname;\n    const normalizedPath = normalizeUrl(pagePath);\n    safeLog(\"performance\" /* PERFORMANCE */, \"performance\" /* PERFORMANCE */, {\n      element: metricName,\n      key: `performance:${metricName}:${normalizedPath}`,\n      page: normalizedPath,\n      tag: \"performance\",\n      userId: analyticsCache.userId,\n      additionalInfo: {\n        metricName,\n        value,\n        delta: Math.round(metric.delta),\n        id: metric.id,\n        rating: metric.rating\n      }\n    });\n  };\n  try {\n    (0, import_web_vitals.onLCP)(sendAnalyticsMetric);\n    (0, import_web_vitals.onCLS)(sendAnalyticsMetric);\n    (0, import_web_vitals.onINP)(sendAnalyticsMetric);\n    (0, import_web_vitals.onFCP)(sendAnalyticsMetric);\n    (0, import_web_vitals.onTTFB)(sendAnalyticsMetric);\n  } catch (error) {\n  }\n}\n\n// src/spam/isBot.ts\nvar isBot = () => {\n  if (typeof window === \"undefined\" || typeof navigator === \"undefined\") {\n    return true;\n  }\n  const userAgent = navigator.userAgent.toLowerCase();\n  const commonBotRegex = /bot|spider|crawl|slurp|lighthouse|puppeteer|headlesschrome|googlebot|bingbot|yandexbot|duckduckbot|baiduspider|facebookexternalhit|twitterbot/i;\n  if (commonBotRegex.test(userAgent)) {\n    return true;\n  }\n  if (navigator.webdriver) {\n    return true;\n  }\n  const headlessBrowserRegex = /headlesschrome|headless/i;\n  if (headlessBrowserRegex.test(userAgent)) {\n    return true;\n  }\n  if (window._phantom || window.__nightmare || window.callPhantom) {\n    return true;\n  }\n  if (navigator.plugins && navigator.plugins.length === 0 && /Chrome/i.test(userAgent)) {\n    return true;\n  }\n  return false;\n};\n\n// src/events/OutboundLink.event.ts\nvar registerOutboundLinkEvent = () => {\n  document.addEventListener(\n    \"click\",\n    (event) => {\n      try {\n        const target = event.target;\n        const anchorElement = target.closest(\"a\");\n        if (!anchorElement) return;\n        const href = anchorElement.href;\n        if (!href || href.startsWith(\"javascript:\")) return;\n        const currentDomain = window.location.hostname;\n        const targetDomain = anchorElement.hostname;\n        const currentPageURL = window.location.href;\n        const filterURL = normalizeUrl(currentPageURL);\n        const isSpecialProtocol = href.startsWith(\"mailto:\") || href.startsWith(\"tel:\");\n        const isExternalLink = isSpecialProtocol || targetDomain && targetDomain !== currentDomain;\n        const isNewTab = anchorElement.target === \"_blank\";\n        if (!isExternalLink && !isNewTab) return;\n        if (isExternalLink || isNewTab) {\n          let elementName = anchorElement.innerText?.trim();\n          if (!elementName) {\n            const icon = anchorElement.querySelector(\n              \"svg, i, img, span.material-icons\"\n            );\n            if (icon) {\n              const rawIconName = icon.getAttribute(\"aria-label\") || icon.getAttribute(\"class\") || \"Icon Link\";\n              elementName = rawIconName.length > 40 ? rawIconName.substring(0, 40) + \"...\" : rawIconName;\n            } else {\n              elementName = anchorElement.id || anchorElement.className || \"Unknown Link\";\n            }\n          }\n          let parentContext = \"Unknown Section\";\n          const parentClass = anchorElement.closest(\n            \"header, footer, nav, section, main, [id], [data-section], [data-testid]\"\n          );\n          if (parentClass) {\n            parentContext = parentClass.getAttribute(\"data-section\") || parentClass.getAttribute(\"data-testid\") || parentClass.id || parentClass.tagName.toLowerCase();\n          }\n          safeLog(\"click\" /* CLICK */, \"outbound_link\" /* OUTBOUND_LINK */, {\n            element: elementName,\n            key: `outbound_link:${elementName}`,\n            page: filterURL,\n            tag: \"a\" /* LINK */,\n            userId: analyticsCache.userId,\n            additionalInfo: {\n              url: href,\n              parentSection: parentContext\n            }\n          });\n        }\n      } catch (error) {\n        console.error(\"Outbound link tracking error:\", error);\n      }\n    },\n    true\n  );\n};\n\n// src/base/core.ts\nvar isBrowser = typeof window !== \"undefined\";\nvar isVanillaMode = isBrowser && !!window.ucoderInsight;\nvar isInitialized = false;\nvar isInitializing = false;\nvar cleanupFns = [];\nasync function initUcoderInsight(projectId, userConfig2) {\n  if (!isBrowser) {\n    console.warn(\n      \" [Ucoder Insight] Cannot initialize in non-browser environment\"\n    );\n    return null;\n  }\n  if (isBot()) {\n    console.warn(\" [Ucoder Insight] Bot detected, initialization skipped.\");\n    return null;\n  }\n  if (isInitialized || isInitializing) {\n    if (isTestingMode()) {\n      console.warn(\n        \" [Ucoder Insight] SDK is already initialized or initializing!\"\n      );\n    }\n    return null;\n  }\n  if (userConfig2?.debug) {\n    optionalConfigCache.debug = true;\n  }\n  isInitializing = true;\n  if (isTestingMode()) {\n    console.log(\"[Ucoder Insight] Initializing...\");\n    console.log(\"   Mode:\", isVanillaMode ? \"Vanilla JS\" : \"Framework\");\n    console.log(\"   Project ID:\", projectId);\n  }\n  if (userConfig2) {\n    configureTracker(userConfig2);\n    if (userConfig2.debug) {\n      console.log(\n        \" [Ucoder Insight] Running in Testing Mode - No data will be sent to server\"\n      );\n    }\n  }\n  try {\n    const config = await resolveConfig(projectId);\n    if (!config) {\n      console.error(\n        \" [Ucoder Insight] Init Failed: Server Unreachable or Invalid Project ID\"\n      );\n      isInitializing = false;\n      return null;\n    }\n    isInitialized = true;\n    const rawPage = location.pathname || \"/\";\n    const page = normalizeUrl(rawPage) ?? rawPage;\n    await loadUserToken();\n    if (config.trackClicks) cleanupFns.push(registerClickEvent(page));\n    if (config.trackPageViews)\n      cleanupFns.push(registerOutboundLinkEvent());\n    if (config.trackPageViews) cleanupFns.push(enableAutoPageTracking());\n    if (config.trackScroll) cleanupFns.push(registerScrollTracker());\n    if (config.trackErrors) cleanupFns.push(registerErrorTracking());\n    if (config.trackPerformance) registerPerformanceTracking();\n    startLogReporter(config.sendInterval);\n    if (isTestingMode()) {\n      console.log(\n        \"[Ucoder Insight] Initialization Complete with Config:\",\n        config\n      );\n    }\n    return config;\n  } catch (error) {\n    console.error(\n      \" [Ucoder Insight] Critical error during initialization:\",\n      error\n    );\n  } finally {\n    isInitializing = false;\n  }\n}\n\n// src/events/custom.event.ts\nvar trackCustomEvent = (config) => {\n  if (!SDKConfigCache.trackCustomEvents) {\n    return;\n  }\n  if (!config.event_name) {\n    return;\n  }\n  const rawPage = window.location.pathname;\n  const normalizedPage = normalizeUrl(rawPage);\n  const customEventDataPayload = {\n    event_name: config.event_name,\n    action_category: config.action_category,\n    ...config.object_id !== void 0 && { object_id: config.object_id },\n    ...config.status !== void 0 && { status: config.status },\n    ...config.message !== void 0 && { message: config.message },\n    ...config.additionalData !== void 0 && {\n      additionalData: config.additionalData\n    }\n  };\n  safeLog(\n    \"custom\" /* CUSTOM */,\n    \"custom\" /* CUSTOM */,\n    {\n      element: config.event_name,\n      key: `custom_event:${normalizedPage}:${config.event_name}`,\n      page: normalizedPage,\n      tag: \"custom\",\n      userId: analyticsCache.userId\n    },\n    customEventDataPayload\n  );\n};\n\n// src/index.ts\nvar isVanillaJS = false;\nvar isReady = false;\nvar eventQueue = [];\nvar processQueue = () => {\n  if (eventQueue.length > 0) {\n    console.log(`Processing ${eventQueue.length} queued events...`);\n    eventQueue.forEach((event) => trackCustomEvent(event));\n    eventQueue.length = 0;\n  }\n};\nif (typeof window !== \"undefined\") {\n  isVanillaJS = true;\n  window.ucoderInsight = {\n    isReady: () => isReady,\n    isVanilla: () => isVanillaJS,\n    // Initialize\n    init: async (projectId, options = {}) => {\n      console.log(\" [Ucoder Insight] Initializing in Vanilla JS mode...\");\n      const config = await initUcoderInsight(projectId, options);\n      if (config) {\n        isReady = true;\n        processQueue();\n      }\n      return config;\n    },\n    track: (config) => {\n      if (!isReady) {\n        eventQueue.push(config);\n        return;\n      }\n      return trackCustomEvent(config);\n    },\n    healthCheck: () => {\n      console.log(\"\\u2713 [Ucoder Insight] Status Check\");\n      console.log(\"  Ready:\", isReady);\n      console.log(\"  Queue Size:\", eventQueue.length);\n      return true;\n    }\n  };\n  window.dispatchEvent(\n    new CustomEvent(\"ucoderInsightReady\", {\n      detail: { version: \"1.0.0\", mode: \"vanilla\" }\n    })\n  );\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  initUcoderInsight,\n  isVanillaJS,\n  trackCustomEvent\n});\n"]}