| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { IS_PROD } from './constants'
- import { isBrowser } from './helpers'
- export function getTelemetryCookieOptions() {
- if (typeof window === 'undefined') return 'path=/; SameSite=Lax'
- if (!IS_PROD) return 'path=/; SameSite=Lax'
- const hostname = window.location.hostname
- const isBrivenCom = hostname === 'supabase.com' || hostname.endsWith('.supabase.com')
- return isBrivenCom ? 'path=/; domain=supabase.com; SameSite=Lax' : 'path=/; SameSite=Lax'
- }
- // Parse session_id from PostHog cookie since SDK doesn't expose session ID
- // (needed to correlate client and server events)
- function getPostHogSessionId(): string | null {
- if (!isBrowser) return null
- try {
- // Parse PostHog cookie to extract session ID
- const phCookies = document.cookie.split(';').find((cookie) => cookie.trim().startsWith('ph_'))
- if (phCookies) {
- const cookieValue = decodeURIComponent(phCookies.split('=')[1])
- const phData = JSON.parse(cookieValue)
- if (phData.$sesid && Array.isArray(phData.$sesid) && phData.$sesid[1]) {
- return phData.$sesid[1]
- }
- }
- } catch (error) {
- console.warn('Could not extract PostHog session ID:', error)
- }
- return null
- }
- export function getSharedTelemetryData(pathname?: string) {
- const sessionId = getPostHogSessionId()
- const pageUrl = (() => {
- if (!isBrowser) return ''
- try {
- const url = new URL(window.location.href)
- url.hash = ''
- return url.href
- } catch {
- return window.location.href.split('#')[0]
- }
- })()
- return {
- page_url: pageUrl,
- page_title: isBrowser ? document?.title : '',
- pathname: pathname ? pathname : isBrowser ? window.location.pathname : '',
- session_id: sessionId,
- ph: {
- referrer: isBrowser ? document?.referrer : '',
- language: navigator.language ?? 'en-US',
- user_agent: navigator.userAgent,
- search: isBrowser ? window.location.search : '',
- viewport_height: isBrowser ? window.innerHeight : 0,
- viewport_width: isBrowser ? window.innerWidth : 0,
- },
- }
- }
|