UNPKG

@dash0/sdk-web

Version:

Dash0's Web SDK to collect telemetry from end-users' web browsers

43 lines (37 loc) 1.66 kB
// aliasing globals for improved minification /* eslint-disable no-restricted-globals */ export type WindowType = typeof window; // Avoid blowing up in an ssr context. It is important to check via typeof here because window might not even be declared when imported in ssr. export const win: typeof window | undefined = typeof window !== "undefined" ? window : undefined; export const doc: typeof window.document | undefined = win?.document; export const nav: typeof navigator | undefined = win?.navigator; export const loc: typeof location | undefined = typeof location !== "undefined" ? location : undefined; export const perf = win?.performance || (win as any)?.webkitPerformance || (win as any)?.msPerformance || (win as any)?.mozPerformance; export const encodeURIComponent: ((arg: string) => string) | undefined = win?.encodeURIComponent; export const fetch = win?.fetch; export const localStorage: Storage | null = (function () { try { return win?.localStorage ?? null; } catch { // localStorage access is not permitted in certain security modes, e.g. // when cookies are completely disabled in web browsers. return null; } })(); export const sessionStorage: Storage | null = (function () { try { return win?.sessionStorage ?? null; } catch { // sessionStorage access is not permitted in certain security modes, e.g. // when cookies are completely disabled in web browsers. return null; } })(); /** * Exposed via this module to enable testing. */ export function sendBeacon(url: string, data: string): boolean { return nav?.sendBeacon(url, data) ?? false; } /* eslint-enable no-restricted-globals */