{"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import { expiringStorage } from '@shware/utils';\nimport Bowser from 'bowser';\nimport { parseCookie } from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport { keys } from '../constants/storage';\nimport { getLink } from '../link/index';\nimport { type Storage, cache, config } from '../setup/index';\nimport type { TrackTags } from '../track/types';\n\nexport function getDeviceId() {\n  const cached = localStorage.getItem(keys.device_id);\n  if (cached) return cached;\n  const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n  localStorage.setItem(keys.device_id, id);\n  return id;\n}\n\nexport async function getTags() {\n  const parser = Bowser.getParser(window.navigator.userAgent);\n  const params = new URLSearchParams(window.location.search);\n  const os = parser.getOS();\n  const browser = parser.getBrowser();\n  const platform = parser.getPlatform();\n  const parsed = parseCookie(document.cookie);\n\n  const linkId = params.get('s');\n  const link = linkId ? await getLink(linkId) : null;\n\n  const tags: TrackTags = {\n    os: `${os.name} ${os.version}`,\n    os_name: os.name,\n    os_version: os.version,\n    browser: `${browser.name} ${browser.version}`,\n    browser_name: browser.name,\n    browser_version: browser.version,\n    platform: 'web',\n    device: platform.model,\n    device_id: getDeviceId(),\n    device_type: platform.type,\n    device_vendor: platform.vendor,\n    device_pixel_ratio: window.devicePixelRatio,\n    screen_width: window.screen.width,\n    screen_height: window.screen.height,\n    screen_resolution: `${window.screen.width}x${window.screen.height}`,\n    release: config.release,\n    language: navigator.language,\n    time_zone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n    environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n    source: 'web',\n    source_url: window.location.origin + window.location.pathname,\n    // meta ads\n    fbc: parsed._fbc ?? expiringStorage.getItem<string>(keys.fbc) ?? undefined,\n    fbp: parsed._fbp,\n    fbclid: params.get('fbclid') ?? expiringStorage.getItem<string>(keys.fbclid) ?? undefined,\n    ad_id: params.get('ad_id') ?? undefined,\n    ad_name: params.get('ad_name') ?? undefined,\n    adset_id: params.get('adset_id') ?? undefined,\n    adset_name: params.get('adset_name') ?? undefined,\n    campaign_id: params.get('campaign_id') ?? undefined,\n    campaign_name: params.get('campaign_name') ?? undefined,\n    placement: params.get('placement') ?? undefined,\n    site_source_name: params.get('site_source_name') ?? undefined,\n    // google ads\n    gclid: params.get('gclid') ?? undefined,\n    gclsrc: params.get('gclsrc') ?? undefined,\n    gad_source: params.get('gad_source') ?? undefined,\n    gad_campaignid: params.get('gad_campaignid') ?? undefined,\n    // reddit ads\n    rdt_cid:\n      params.get('rdt_cid') ??\n      parsed._rdt_cid ??\n      expiringStorage.getItem<string>(keys.rdt_cid) ??\n      undefined,\n    rdt_uuid: parsed._rdt_uuid,\n    // linkedin ads: get click id from url params or first-party cookie\n    li_fat_id: params.get('li_fat_id') ?? parsed.li_fat_id ?? undefined,\n    // click ids\n    dclid: params.get('dclid') ?? undefined,\n    ko_click_id: params.get('ko_click_id') ?? undefined,\n    msclkid: params.get('msclkid') ?? undefined,\n    sccid: params.get('sccid') ?? undefined,\n    ttclid: params.get('ttclid') ?? undefined,\n    twclid: params.get('twclid') ?? undefined,\n    wbraid: params.get('wbraid') ?? undefined,\n    yclid: params.get('yclid') ?? undefined,\n    // utm params\n    utm_source: link?.utm_source ?? params.get('utm_source') ?? undefined,\n    utm_medium: link?.utm_medium ?? params.get('utm_medium') ?? undefined,\n    utm_campaign: link?.utm_campaign ?? params.get('utm_campaign') ?? undefined,\n    utm_term: link?.utm_term ?? params.get('utm_term') ?? undefined,\n    utm_content: link?.utm_content ?? params.get('utm_content') ?? undefined,\n    utm_id: link?.utm_id ?? params.get('utm_id') ?? undefined,\n    utm_source_platform:\n      link?.utm_source_platform ?? params.get('utm_source_platform') ?? undefined,\n    utm_creative_format:\n      link?.utm_creative_format ?? params.get('utm_creative_format') ?? undefined,\n    utm_marketing_tactic:\n      link?.utm_marketing_tactic ?? params.get('utm_marketing_tactic') ?? undefined,\n  };\n\n  cache.tags = tags;\n  return tags;\n}\n\nconst map = new Map<string, string>();\n\nexport const storage: Storage = {\n  getItem: (key) => {\n    try {\n      return localStorage.getItem(key);\n    } catch {\n      console.error('localStorage is not available');\n      return map.get(key) ?? null;\n    }\n  },\n  setItem: (key, value) => {\n    try {\n      localStorage.setItem(key, value);\n    } catch {\n      console.error('localStorage is not available');\n      map.set(key, value);\n    }\n  },\n};\n"],"mappings":"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","names":[]}