From 6e474d0953d387a6626dd9b040df529c5d118255 Mon Sep 17 00:00:00 2001 From: Alex Kaminskii Date: Mon, 12 Sep 2022 16:34:00 +0200 Subject: [PATCH] fix(tracker): current time function fallback --- tracker/tracker/src/main/utils.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tracker/tracker/src/main/utils.ts b/tracker/tracker/src/main/utils.ts index ca4a5ddd9..0891d0aaf 100644 --- a/tracker/tracker/src/main/utils.ts +++ b/tracker/tracker/src/main/utils.ts @@ -1,6 +1,12 @@ -export function timestamp(): number { - return Math.round(performance.now()) + performance.timing.navigationStart -} +export const IN_BROWSER = !(typeof window === 'undefined') + +const navigationStart: number | false = + (IN_BROWSER && performance.timing.navigationStart) || performance.timeOrigin +// performance.now() is buggy in some browsers +export const timestamp: () => number = + IN_BROWSER && performance.now() && navigationStart + ? () => Math.round(performance.now() + navigationStart) + : () => Date.now() export const stars: (str: string) => string = 'repeat' in String.prototype @@ -16,8 +22,6 @@ export function isURL(s: string): boolean { return s.startsWith('https://') || s.startsWith('http://') } -export const IN_BROWSER = !(typeof window === 'undefined') - // TODO: JOIN IT WITH LOGGER somehow (use logging decorators?); Don't forget about index.js loggin when there is no logger instance. export const DOCS_HOST = 'https://docs.openreplay.com'