@cloudcare/browser-core 3.2.51 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/browser/asyncClocks.js +2 -2
- package/cjs/browser/asyncClocks.js.map +1 -1
- package/cjs/configuration/remoteConfiguration.js +1 -0
- package/cjs/configuration/remoteConfiguration.js.map +1 -1
- package/cjs/helper/deviceInfo.js +91 -44
- package/cjs/helper/deviceInfo.js.map +1 -1
- package/cjs/helper/polyfills.js +1 -1
- package/cjs/helper/polyfills.js.map +1 -1
- package/cjs/helper/tools.js +4 -4
- package/cjs/helper/tools.js.map +1 -1
- package/cjs/helper/valueHistory.js +1 -1
- package/cjs/helper/valueHistory.js.map +1 -1
- package/cjs/report/reportObservable.js +2 -2
- package/cjs/report/reportObservable.js.map +1 -1
- package/cjs/session/sessionManagement.js +1 -0
- package/cjs/session/sessionManagement.js.map +1 -1
- package/cjs/session/sessionStore.js +1 -1
- package/cjs/session/sessionStore.js.map +1 -1
- package/cjs/synthetics/syntheticsWorkerValues.js +2 -2
- package/cjs/synthetics/syntheticsWorkerValues.js.map +1 -1
- package/esm/browser/asyncClocks.js +2 -2
- package/esm/browser/asyncClocks.js.map +1 -1
- package/esm/configuration/remoteConfiguration.js +1 -0
- package/esm/configuration/remoteConfiguration.js.map +1 -1
- package/esm/helper/deviceInfo.js +90 -44
- package/esm/helper/deviceInfo.js.map +1 -1
- package/esm/helper/polyfills.js +1 -1
- package/esm/helper/polyfills.js.map +1 -1
- package/esm/helper/tools.js +4 -4
- package/esm/helper/tools.js.map +1 -1
- package/esm/helper/valueHistory.js +1 -1
- package/esm/helper/valueHistory.js.map +1 -1
- package/esm/report/reportObservable.js +2 -0
- package/esm/report/reportObservable.js.map +1 -1
- package/esm/session/sessionManagement.js +1 -0
- package/esm/session/sessionManagement.js.map +1 -1
- package/esm/session/sessionStore.js +1 -1
- package/esm/session/sessionStore.js.map +1 -1
- package/esm/synthetics/syntheticsWorkerValues.js +2 -2
- package/esm/synthetics/syntheticsWorkerValues.js.map +1 -1
- package/package.json +2 -2
- package/src/browser/asyncClocks.js +2 -2
- package/src/configuration/remoteConfiguration.js +1 -0
- package/src/helper/deviceInfo.js +105 -53
- package/src/helper/polyfills.js +1 -1
- package/src/helper/tools.js +4 -4
- package/src/helper/valueHistory.js +1 -1
- package/src/report/reportObservable.js +2 -0
- package/src/session/sessionManagement.js +1 -0
- package/src/session/sessionStore.js +4 -1
- package/src/synthetics/syntheticsWorkerValues.js +6 -4
- package/types/index.d.ts +74 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionManagement.js","names":["Observable","createValueHistory","relativeNow","clocksOrigin","ONE_MINUTE","DOM_EVENT","addEventListener","addEventListeners","clearInterval","setInterval","SESSION_TIME_OUT_DELAY","SESSION_NOT_TRACKED","startSessionStore","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","stopCallbacks","startSessionManager","configuration","productKey","computeSessionState","renewObservable","expireObservable","sessionStore","sessionStoreStrategyType","push","stop","sessionContextHistory","expireDelay","subscribe","add","buildSessionContext","notify","closeActive","expandOrRenewSession","relative","trackActivity","trackVisibility","expandSession","trackResume","restartSession","session","getSession","id","trackingType","isSessionForced","hasError","forcedSession","findSession","startTime","options","find","sessionStateUpdateObservable","expire","updateSessionState","stopSessionManager","forEach","e","_addEventListeners","window","CLICK","TOUCH_START","KEY_DOWN","SCROLL","capture","passive","expandSessionWhenVisible","document","visibilityState","_addEventListener","VISIBILITY_CHANGE","visibilityCheckInterval","cb","_addEventListener2","RESUME"],"sources":["../../src/session/sessionManagement.js"],"sourcesContent":["import { Observable } from '../helper/observable'\nimport { createValueHistory } from '../helper/valueHistory'\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../helper/tools'\nimport { DOM_EVENT } from '../helper/enums'\nimport {\n addEventListener,\n addEventListeners\n} from '../browser/addEventListener'\nimport { clearInterval, setInterval } from '../helper/timer'\nimport { SESSION_TIME_OUT_DELAY, SESSION_NOT_TRACKED } from './sessionConstants'\nimport { startSessionStore } from './sessionStore'\n\nexport const VISIBILITY_CHECK_DELAY = ONE_MINUTE\nconst SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY\nlet stopCallbacks = []\n\nexport function startSessionManager(\n configuration,\n productKey,\n computeSessionState\n) {\n const renewObservable = new Observable()\n const expireObservable = new Observable()\n\n const sessionStore = startSessionStore(\n configuration.sessionStoreStrategyType,\n productKey,\n computeSessionState\n )\n stopCallbacks.push(function () {\n return sessionStore.stop()\n })\n\n const sessionContextHistory = createValueHistory({\n expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY\n })\n stopCallbacks.push(function () {\n return sessionContextHistory.stop()\n })\n\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow())\n renewObservable.notify()\n })\n sessionStore.expireObservable.subscribe(function () {\n expireObservable.notify()\n sessionContextHistory.closeActive(relativeNow())\n })\n\n // manager is started.\n sessionStore.expandOrRenewSession()\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)\n\n trackActivity(function () {\n sessionStore.expandOrRenewSession()\n })\n trackVisibility(function () {\n return sessionStore.expandSession()\n })\n trackResume(function () {\n sessionStore.restartSession()\n })\n\n function buildSessionContext() {\n const session = sessionStore.getSession()\n if (!session) {\n return {\n id: 'invalid',\n trackingType: SESSION_NOT_TRACKED,\n isSessionForced: false,\n hasError: false\n }\n }\n return {\n id: session.id,\n trackingType: session[productKey],\n hasError: !!session.hasError,\n isSessionForced: !!session.forcedSession\n }\n }\n\n return {\n findSession: function (startTime, options) {\n return sessionContextHistory.find(startTime, options)\n },\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n expire: sessionStore.expire,\n updateSessionState: sessionStore.updateSessionState\n }\n}\n\nexport function stopSessionManager() {\n stopCallbacks.forEach(function (e) {\n e()\n })\n stopCallbacks = []\n}\n\nfunction trackActivity(expandOrRenewSession) {\n const { stop } = addEventListeners(\n window,\n [\n DOM_EVENT.CLICK,\n DOM_EVENT.TOUCH_START,\n DOM_EVENT.KEY_DOWN,\n DOM_EVENT.SCROLL\n ],\n expandOrRenewSession,\n { capture: true, passive: true }\n )\n stopCallbacks.push(stop)\n}\n\nfunction trackVisibility(expandSession) {\n const expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession()\n }\n }\n\n const { stop } = addEventListener(\n document,\n DOM_EVENT.VISIBILITY_CHANGE,\n expandSessionWhenVisible\n )\n stopCallbacks.push(stop)\n\n const visibilityCheckInterval = setInterval(\n expandSessionWhenVisible,\n VISIBILITY_CHECK_DELAY\n )\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval)\n })\n}\n\nfunction trackResume(cb) {\n const { stop } = addEventListener(window, DOM_EVENT.RESUME, cb, {\n capture: true\n })\n stopCallbacks.push(stop)\n}\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sessionManagement.js","names":["Observable","createValueHistory","relativeNow","clocksOrigin","ONE_MINUTE","DOM_EVENT","addEventListener","addEventListeners","clearInterval","setInterval","SESSION_TIME_OUT_DELAY","SESSION_NOT_TRACKED","startSessionStore","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","stopCallbacks","startSessionManager","configuration","productKey","computeSessionState","renewObservable","expireObservable","sessionStore","sessionStoreStrategyType","push","stop","sessionContextHistory","expireDelay","subscribe","add","buildSessionContext","notify","closeActive","expandOrRenewSession","relative","trackActivity","trackVisibility","expandSession","trackResume","restartSession","session","getSession","id","trackingType","isSessionForced","hasError","forcedSession","findSession","startTime","options","find","sessionStateUpdateObservable","expire","updateSessionState","stopSessionManager","forEach","e","_addEventListeners","window","CLICK","TOUCH_START","KEY_DOWN","SCROLL","capture","passive","expandSessionWhenVisible","document","visibilityState","_addEventListener","VISIBILITY_CHANGE","visibilityCheckInterval","cb","_addEventListener2","RESUME"],"sources":["../../src/session/sessionManagement.js"],"sourcesContent":["import { Observable } from '../helper/observable'\nimport { createValueHistory } from '../helper/valueHistory'\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../helper/tools'\nimport { DOM_EVENT } from '../helper/enums'\nimport {\n addEventListener,\n addEventListeners\n} from '../browser/addEventListener'\nimport { clearInterval, setInterval } from '../helper/timer'\nimport { SESSION_TIME_OUT_DELAY, SESSION_NOT_TRACKED } from './sessionConstants'\nimport { startSessionStore } from './sessionStore'\n\nexport const VISIBILITY_CHECK_DELAY = ONE_MINUTE\nconst SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY\nlet stopCallbacks = []\n\nexport function startSessionManager(\n configuration,\n productKey,\n computeSessionState\n) {\n const renewObservable = new Observable()\n const expireObservable = new Observable()\n\n const sessionStore = startSessionStore(\n configuration.sessionStoreStrategyType,\n productKey,\n computeSessionState\n )\n stopCallbacks.push(function () {\n return sessionStore.stop()\n })\n\n const sessionContextHistory = createValueHistory({\n expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY\n })\n stopCallbacks.push(function () {\n return sessionContextHistory.stop()\n })\n\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow())\n renewObservable.notify()\n })\n sessionStore.expireObservable.subscribe(function () {\n expireObservable.notify()\n sessionContextHistory.closeActive(relativeNow())\n })\n\n // manager is started.\n sessionStore.expandOrRenewSession()\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)\n\n trackActivity(function () {\n sessionStore.expandOrRenewSession()\n })\n trackVisibility(function () {\n return sessionStore.expandSession()\n })\n trackResume(function () {\n sessionStore.restartSession()\n })\n\n function buildSessionContext() {\n const session = sessionStore.getSession()\n if (!session) {\n return {\n id: 'invalid',\n trackingType: SESSION_NOT_TRACKED,\n isSessionForced: false,\n hasError: false\n }\n }\n return {\n id: session.id,\n trackingType: session[productKey],\n hasError: !!session.hasError,\n isSessionForced: !!session.forcedSession\n }\n }\n\n return {\n findSession: function (startTime, options) {\n return sessionContextHistory.find(startTime, options)\n },\n expandOrRenewSession: sessionStore.expandOrRenewSession,\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n expire: sessionStore.expire,\n updateSessionState: sessionStore.updateSessionState\n }\n}\n\nexport function stopSessionManager() {\n stopCallbacks.forEach(function (e) {\n e()\n })\n stopCallbacks = []\n}\n\nfunction trackActivity(expandOrRenewSession) {\n const { stop } = addEventListeners(\n window,\n [\n DOM_EVENT.CLICK,\n DOM_EVENT.TOUCH_START,\n DOM_EVENT.KEY_DOWN,\n DOM_EVENT.SCROLL\n ],\n expandOrRenewSession,\n { capture: true, passive: true }\n )\n stopCallbacks.push(stop)\n}\n\nfunction trackVisibility(expandSession) {\n const expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession()\n }\n }\n\n const { stop } = addEventListener(\n document,\n DOM_EVENT.VISIBILITY_CHANGE,\n expandSessionWhenVisible\n )\n stopCallbacks.push(stop)\n\n const visibilityCheckInterval = setInterval(\n expandSessionWhenVisible,\n VISIBILITY_CHECK_DELAY\n )\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval)\n })\n}\n\nfunction trackResume(cb) {\n const { stop } = addEventListener(window, DOM_EVENT.RESUME, cb, {\n capture: true\n })\n stopCallbacks.push(stop)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -114,7 +114,7 @@ export function startSessionStore(sessionStoreStrategyType, productKey, computeS
|
|
|
114
114
|
function startSession() {
|
|
115
115
|
processSessionStoreOperations({
|
|
116
116
|
process: function process(sessionState) {
|
|
117
|
-
if (isSessionInNotStartedState(sessionState)) {
|
|
117
|
+
if (isSessionInNotStartedState(sessionState) || isSessionInExpiredState(sessionState)) {
|
|
118
118
|
return getExpiredSessionState();
|
|
119
119
|
}
|
|
120
120
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionStore.js","names":["clearInterval","setInterval","Observable","display","ONE_SECOND","dateNow","throttle","UUID","assign","selectCookieStrategy","initCookieStrategy","getExpiredSessionState","isSessionInExpiredState","isSessionInNotStartedState","isSessionStarted","initLocalStorageStrategy","selectLocalStorageStrategy","processSessionStoreOperations","SessionPersistence","STORAGE_POLL_DELAY","selectSessionStoreStrategyType","initConfiguration","sessionPersistence","COOKIE","LOCAL_STORAGE","undefined","sessionStoreStrategyType","allowFallbackToLocalStorage","error","concat","String","startSessionStore","productKey","computeSessionState","renewObservable","expireObservable","sessionStateUpdateObservable","sessionStoreStrategy","type","cookieOptions","expireSession","watchSessionTimeoutId","watchSession","sessionCache","startSession","_throttle","process","sessionState","synchronizedSession","synchronizeSession","expandOrRenewSessionState","after","hasSessionInCache","renewSessionInCache","throttledExpandOrRenewSession","throttled","cancelExpandOrRenewSession","cancel","expandSession","isSessionInCacheOutdated","expireSessionInCache","notify","previousState","newState","_computeSessionState","trackingType","isTracked","isExpired","id","created","updateSessionState","partialSessionState","expandOrRenewSession","getSession","restartSession","expire","stop"],"sources":["../../src/session/sessionStore.js"],"sourcesContent":["import { clearInterval, setInterval } from '../helper/timer'\nimport { Observable } from '../helper/observable'\nimport { display } from '../helper/display'\nimport { ONE_SECOND, dateNow, throttle, UUID, assign } from '../helper/tools'\nimport { selectCookieStrategy, initCookieStrategy } from './sessionInCookie'\nimport {\n getExpiredSessionState,\n isSessionInExpiredState,\n isSessionInNotStartedState,\n isSessionStarted\n} from './sessionState'\nimport {\n initLocalStorageStrategy,\n selectLocalStorageStrategy\n} from './sessionInLocalStorage'\nimport { processSessionStoreOperations } from './sessionStoreOperations'\nimport { SessionPersistence } from './sessionConstants'\n\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport const STORAGE_POLL_DELAY = ONE_SECOND\n\n/**\n * Checks if cookies are available as the preferred storage\n * Else, checks if LocalStorage is allowed and available\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n switch (initConfiguration.sessionPersistence) {\n case SessionPersistence.COOKIE:\n return selectCookieStrategy(initConfiguration)\n\n case SessionPersistence.LOCAL_STORAGE:\n return selectLocalStorageStrategy()\n\n case undefined: {\n let sessionStoreStrategyType = selectCookieStrategy(initConfiguration)\n if (\n !sessionStoreStrategyType &&\n initConfiguration.allowFallbackToLocalStorage\n ) {\n sessionStoreStrategyType = selectLocalStorageStrategy()\n }\n return sessionStoreStrategyType\n }\n\n default:\n display.error(\n `Invalid session persistence '${String(\n initConfiguration.sessionPersistence\n )}'`\n )\n }\n}\n\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(\n sessionStoreStrategyType,\n productKey,\n computeSessionState\n) {\n const renewObservable = new Observable()\n const expireObservable = new Observable()\n const sessionStateUpdateObservable = new Observable()\n const sessionStoreStrategy =\n sessionStoreStrategyType.type === SessionPersistence.COOKIE\n ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy()\n const { expireSession } = sessionStoreStrategy\n\n const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)\n let sessionCache\n\n startSession()\n\n const {\n throttled: throttledExpandOrRenewSession,\n cancel: cancelExpandOrRenewSession\n } = throttle(function () {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return\n }\n\n const synchronizedSession = synchronizeSession(sessionState)\n expandOrRenewSessionState(synchronizedSession)\n return synchronizedSession\n },\n after: function (sessionState) {\n if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n renewSessionInCache(sessionState)\n }\n sessionCache = sessionState\n }\n },\n sessionStoreStrategy\n )\n }, STORAGE_POLL_DELAY)\n\n function expandSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return hasSessionInCache()\n ? synchronizeSession(sessionState)\n : undefined\n }\n },\n sessionStoreStrategy\n )\n }\n\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return isSessionInExpiredState(sessionState)\n ? getExpiredSessionState()\n : undefined\n },\n after: synchronizeSession\n },\n sessionStoreStrategy\n )\n }\n\n function synchronizeSession(sessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState()\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache()\n } else {\n sessionStateUpdateObservable.notify({\n previousState: sessionCache,\n newState: sessionState\n })\n sessionCache = sessionState\n }\n }\n return sessionState\n }\n\n function startSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return getExpiredSessionState()\n }\n },\n after: function (sessionState) {\n sessionCache = sessionState\n }\n },\n sessionStoreStrategy\n )\n }\n\n function expandOrRenewSessionState(sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false\n }\n\n const { trackingType, isTracked } = computeSessionState(\n sessionState[productKey]\n )\n sessionState[productKey] = trackingType\n delete sessionState.isExpired\n if (isTracked && !sessionState.id) {\n sessionState.id = UUID()\n sessionState.created = String(dateNow())\n }\n }\n\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(sessionState) {\n return (\n sessionCache.id !== sessionState.id ||\n sessionCache[productKey] !== sessionState[productKey]\n )\n }\n\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState()\n expireObservable.notify()\n }\n\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState\n renewObservable.notify()\n }\n\n function updateSessionState(partialSessionState) {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return assign({}, sessionState, partialSessionState)\n },\n after: synchronizeSession\n },\n sessionStoreStrategy\n )\n }\n\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession,\n getSession: function () {\n return sessionCache\n },\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable,\n restartSession: startSession,\n expire: function () {\n cancelExpandOrRenewSession()\n expireSession()\n synchronizeSession(getExpiredSessionState())\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId)\n },\n updateSessionState\n }\n}\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,WAAW,QAAQ,iBAAiB;AAC5D,SAASC,UAAU,QAAQ,sBAAsB;AACjD,SAASC,OAAO,QAAQ,mBAAmB;AAC3C,SAASC,UAAU,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,MAAM,QAAQ,iBAAiB;AAC7E,SAASC,oBAAoB,EAAEC,kBAAkB,QAAQ,mBAAmB;AAC5E,SACEC,sBAAsB,EACtBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,gBAAgB,QACX,gBAAgB;AACvB,SACEC,wBAAwB,EACxBC,0BAA0B,QACrB,yBAAyB;AAChC,SAASC,6BAA6B,QAAQ,0BAA0B;AACxE,SAASC,kBAAkB,QAAQ,oBAAoB;;AAEvD;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,kBAAkB,GAAGf,UAAU;;AAE5C;AACA;AACA;AACA;AACA,OAAO,SAASgB,8BAA8BA,CAACC,iBAAiB,EAAE;EAChE,QAAQA,iBAAiB,CAACC,kBAAkB;IAC1C,KAAKJ,kBAAkB,CAACK,MAAM;MAC5B,OAAOd,oBAAoB,CAACY,iBAAiB,CAAC;IAEhD,KAAKH,kBAAkB,CAACM,aAAa;MACnC,OAAOR,0BAA0B,CAAC,CAAC;IAErC,KAAKS,SAAS;MAAE;QACd,IAAIC,wBAAwB,GAAGjB,oBAAoB,CAACY,iBAAiB,CAAC;QACtE,IACE,CAACK,wBAAwB,IACzBL,iBAAiB,CAACM,2BAA2B,EAC7C;UACAD,wBAAwB,GAAGV,0BAA0B,CAAC,CAAC;QACzD;QACA,OAAOU,wBAAwB;MACjC;IAEA;MACEvB,OAAO,CAACyB,KAAK,iCAAAC,MAAA,CACqBC,MAAM,CACpCT,iBAAiB,CAACC,kBACpB,CAAC,MACH,CAAC;EACL;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASS,iBAAiBA,CAC/BL,wBAAwB,EACxBM,UAAU,EACVC,mBAAmB,EACnB;EACA,IAAMC,eAAe,GAAG,IAAIhC,UAAU,CAAC,CAAC;EACxC,IAAMiC,gBAAgB,GAAG,IAAIjC,UAAU,CAAC,CAAC;EACzC,IAAMkC,4BAA4B,GAAG,IAAIlC,UAAU,CAAC,CAAC;EACrD,IAAMmC,oBAAoB,GACxBX,wBAAwB,CAACY,IAAI,KAAKpB,kBAAkB,CAACK,MAAM,GACvDb,kBAAkB,CAACgB,wBAAwB,CAACa,aAAa,CAAC,GAC1DxB,wBAAwB,CAAC,CAAC;EAChC,IAAQyB,aAAa,GAAKH,oBAAoB,CAAtCG,aAAa;EAErB,IAAMC,qBAAqB,GAAGxC,WAAW,CAACyC,YAAY,EAAEvB,kBAAkB,CAAC;EAC3E,IAAIwB,YAAY;EAEhBC,YAAY,CAAC,CAAC;EAEd,IAAAC,SAAA,GAGIvC,QAAQ,CAAC,YAAY;MACvBW,6BAA6B,CAC3B;QACE6B,OAAO,EAAE,SAATA,OAAOA,CAAYC,YAAY,EAAE;UAC/B,IAAIlC,0BAA0B,CAACkC,YAAY,CAAC,EAAE;YAC5C;UACF;UAEA,IAAMC,mBAAmB,GAAGC,kBAAkB,CAACF,YAAY,CAAC;UAC5DG,yBAAyB,CAACF,mBAAmB,CAAC;UAC9C,OAAOA,mBAAmB;QAC5B,CAAC;QACDG,KAAK,EAAE,SAAPA,KAAKA,CAAYJ,YAAY,EAAE;UAC7B,IAAIjC,gBAAgB,CAACiC,YAAY,CAAC,IAAI,CAACK,iBAAiB,CAAC,CAAC,EAAE;YAC1DC,mBAAmB,CAACN,YAAY,CAAC;UACnC;UACAJ,YAAY,GAAGI,YAAY;QAC7B;MACF,CAAC,EACDV,oBACF,CAAC;IACH,CAAC,EAAElB,kBAAkB,CAAC;IAvBTmC,6BAA6B,GAAAT,SAAA,CAAxCU,SAAS;IACDC,0BAA0B,GAAAX,SAAA,CAAlCY,MAAM;EAwBR,SAASC,aAAaA,CAAA,EAAG;IACvBzC,6BAA6B,CAC3B;MACE6B,OAAO,EAAE,SAATA,OAAOA,CAAYC,YAAY,EAAE;QAC/B,OAAOK,iBAAiB,CAAC,CAAC,GACtBH,kBAAkB,CAACF,YAAY,CAAC,GAChCtB,SAAS;MACf;IACF,CAAC,EACDY,oBACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;EACE,SAASK,YAAYA,CAAA,EAAG;IACtBzB,6BAA6B,CAC3B;MACE6B,OAAO,EAAE,SAATA,OAAOA,CAAYC,YAAY,EAAE;QAC/B,OAAOnC,uBAAuB,CAACmC,YAAY,CAAC,GACxCpC,sBAAsB,CAAC,CAAC,GACxBc,SAAS;MACf,CAAC;MACD0B,KAAK,EAAEF;IACT,CAAC,EACDZ,oBACF,CAAC;EACH;EAEA,SAASY,kBAAkBA,CAACF,YAAY,EAAE;IACxC,IAAInC,uBAAuB,CAACmC,YAAY,CAAC,EAAE;MACzCA,YAAY,GAAGpC,sBAAsB,CAAC,CAAC;IACzC;IACA,IAAIyC,iBAAiB,CAAC,CAAC,EAAE;MACvB,IAAIO,wBAAwB,CAACZ,YAAY,CAAC,EAAE;QAC1Ca,oBAAoB,CAAC,CAAC;MACxB,CAAC,MAAM;QACLxB,4BAA4B,CAACyB,MAAM,CAAC;UAClCC,aAAa,EAAEnB,YAAY;UAC3BoB,QAAQ,EAAEhB;QACZ,CAAC,CAAC;QACFJ,YAAY,GAAGI,YAAY;MAC7B;IACF;IACA,OAAOA,YAAY;EACrB;EAEA,SAASH,YAAYA,CAAA,EAAG;IACtB3B,6BAA6B,CAC3B;MACE6B,OAAO,EAAE,SAATA,OAAOA,CAAYC,YAAY,EAAE;QAC/B,IAAIlC,0BAA0B,CAACkC,YAAY,CAAC,EAAE;UAC5C,OAAOpC,sBAAsB,CAAC,CAAC;QACjC;MACF,CAAC;MACDwC,KAAK,EAAE,SAAPA,KAAKA,CAAYJ,YAAY,EAAE;QAC7BJ,YAAY,GAAGI,YAAY;MAC7B;IACF,CAAC,EACDV,oBACF,CAAC;EACH;EAEA,SAASa,yBAAyBA,CAACH,YAAY,EAAE;IAC/C,IAAIlC,0BAA0B,CAACkC,YAAY,CAAC,EAAE;MAC5C,OAAO,KAAK;IACd;IAEA,IAAAiB,oBAAA,GAAoC/B,mBAAmB,CACrDc,YAAY,CAACf,UAAU,CACzB,CAAC;MAFOiC,YAAY,GAAAD,oBAAA,CAAZC,YAAY;MAAEC,SAAS,GAAAF,oBAAA,CAATE,SAAS;IAG/BnB,YAAY,CAACf,UAAU,CAAC,GAAGiC,YAAY;IACvC,OAAOlB,YAAY,CAACoB,SAAS;IAC7B,IAAID,SAAS,IAAI,CAACnB,YAAY,CAACqB,EAAE,EAAE;MACjCrB,YAAY,CAACqB,EAAE,GAAG7D,IAAI,CAAC,CAAC;MACxBwC,YAAY,CAACsB,OAAO,GAAGvC,MAAM,CAACzB,OAAO,CAAC,CAAC,CAAC;IAC1C;EACF;EAEA,SAAS+C,iBAAiBA,CAAA,EAAG;IAC3B,OAAOT,YAAY,CAACX,UAAU,CAAC,KAAKP,SAAS;EAC/C;EAEA,SAASkC,wBAAwBA,CAACZ,YAAY,EAAE;IAC9C,OACEJ,YAAY,CAACyB,EAAE,KAAKrB,YAAY,CAACqB,EAAE,IACnCzB,YAAY,CAACX,UAAU,CAAC,KAAKe,YAAY,CAACf,UAAU,CAAC;EAEzD;EAEA,SAAS4B,oBAAoBA,CAAA,EAAG;IAC9BjB,YAAY,GAAGhC,sBAAsB,CAAC,CAAC;IACvCwB,gBAAgB,CAAC0B,MAAM,CAAC,CAAC;EAC3B;EAEA,SAASR,mBAAmBA,CAACN,YAAY,EAAE;IACzCJ,YAAY,GAAGI,YAAY;IAC3Bb,eAAe,CAAC2B,MAAM,CAAC,CAAC;EAC1B;EAEA,SAASS,kBAAkBA,CAACC,mBAAmB,EAAE;IAC/CtD,6BAA6B,CAC3B;MACE6B,OAAO,EAAE,SAATA,OAAOA,CAAYC,YAAY,EAAE;QAC/B,OAAOvC,MAAM,CAAC,CAAC,CAAC,EAAEuC,YAAY,EAAEwB,mBAAmB,CAAC;MACtD,CAAC;MACDpB,KAAK,EAAEF;IACT,CAAC,EACDZ,oBACF,CAAC;EACH;EAEA,OAAO;IACLmC,oBAAoB,EAAElB,6BAA6B;IACnDI,aAAa,EAAbA,aAAa;IACbe,UAAU,EAAE,SAAZA,UAAUA,CAAA,EAAc;MACtB,OAAO9B,YAAY;IACrB,CAAC;IACDT,eAAe,EAAfA,eAAe;IACfC,gBAAgB,EAAhBA,gBAAgB;IAChBC,4BAA4B,EAA5BA,4BAA4B;IAC5BsC,cAAc,EAAE9B,YAAY;IAC5B+B,MAAM,EAAE,SAARA,MAAMA,CAAA,EAAc;MAClBnB,0BAA0B,CAAC,CAAC;MAC5BhB,aAAa,CAAC,CAAC;MACfS,kBAAkB,CAACtC,sBAAsB,CAAC,CAAC,CAAC;IAC9C,CAAC;IACDiE,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChB5E,aAAa,CAACyC,qBAAqB,CAAC;IACtC,CAAC;IACD6B,kBAAkB,EAAlBA;EACF,CAAC;AACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"sessionStore.js","names":["clearInterval","setInterval","Observable","display","ONE_SECOND","dateNow","throttle","UUID","assign","selectCookieStrategy","initCookieStrategy","getExpiredSessionState","isSessionInExpiredState","isSessionInNotStartedState","isSessionStarted","initLocalStorageStrategy","selectLocalStorageStrategy","processSessionStoreOperations","SessionPersistence","STORAGE_POLL_DELAY","selectSessionStoreStrategyType","initConfiguration","sessionPersistence","COOKIE","LOCAL_STORAGE","undefined","sessionStoreStrategyType","allowFallbackToLocalStorage","error","concat","String","startSessionStore","productKey","computeSessionState","renewObservable","expireObservable","sessionStateUpdateObservable","sessionStoreStrategy","type","cookieOptions","expireSession","watchSessionTimeoutId","watchSession","sessionCache","startSession","_throttle","process","sessionState","synchronizedSession","synchronizeSession","expandOrRenewSessionState","after","hasSessionInCache","renewSessionInCache","throttledExpandOrRenewSession","throttled","cancelExpandOrRenewSession","cancel","expandSession","isSessionInCacheOutdated","expireSessionInCache","notify","previousState","newState","_computeSessionState","trackingType","isTracked","isExpired","id","created","updateSessionState","partialSessionState","expandOrRenewSession","getSession","restartSession","expire","stop"],"sources":["../../src/session/sessionStore.js"],"sourcesContent":["import { clearInterval, setInterval } from '../helper/timer'\nimport { Observable } from '../helper/observable'\nimport { display } from '../helper/display'\nimport { ONE_SECOND, dateNow, throttle, UUID, assign } from '../helper/tools'\nimport { selectCookieStrategy, initCookieStrategy } from './sessionInCookie'\nimport {\n getExpiredSessionState,\n isSessionInExpiredState,\n isSessionInNotStartedState,\n isSessionStarted\n} from './sessionState'\nimport {\n initLocalStorageStrategy,\n selectLocalStorageStrategy\n} from './sessionInLocalStorage'\nimport { processSessionStoreOperations } from './sessionStoreOperations'\nimport { SessionPersistence } from './sessionConstants'\n\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport const STORAGE_POLL_DELAY = ONE_SECOND\n\n/**\n * Checks if cookies are available as the preferred storage\n * Else, checks if LocalStorage is allowed and available\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n switch (initConfiguration.sessionPersistence) {\n case SessionPersistence.COOKIE:\n return selectCookieStrategy(initConfiguration)\n\n case SessionPersistence.LOCAL_STORAGE:\n return selectLocalStorageStrategy()\n\n case undefined: {\n let sessionStoreStrategyType = selectCookieStrategy(initConfiguration)\n if (\n !sessionStoreStrategyType &&\n initConfiguration.allowFallbackToLocalStorage\n ) {\n sessionStoreStrategyType = selectLocalStorageStrategy()\n }\n return sessionStoreStrategyType\n }\n\n default:\n display.error(\n `Invalid session persistence '${String(\n initConfiguration.sessionPersistence\n )}'`\n )\n }\n}\n\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(\n sessionStoreStrategyType,\n productKey,\n computeSessionState\n) {\n const renewObservable = new Observable()\n const expireObservable = new Observable()\n const sessionStateUpdateObservable = new Observable()\n const sessionStoreStrategy =\n sessionStoreStrategyType.type === SessionPersistence.COOKIE\n ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy()\n const { expireSession } = sessionStoreStrategy\n\n const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)\n let sessionCache\n\n startSession()\n\n const {\n throttled: throttledExpandOrRenewSession,\n cancel: cancelExpandOrRenewSession\n } = throttle(function () {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return\n }\n\n const synchronizedSession = synchronizeSession(sessionState)\n expandOrRenewSessionState(synchronizedSession)\n return synchronizedSession\n },\n after: function (sessionState) {\n if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n renewSessionInCache(sessionState)\n }\n sessionCache = sessionState\n }\n },\n sessionStoreStrategy\n )\n }, STORAGE_POLL_DELAY)\n\n function expandSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return hasSessionInCache()\n ? synchronizeSession(sessionState)\n : undefined\n }\n },\n sessionStoreStrategy\n )\n }\n\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return isSessionInExpiredState(sessionState)\n ? getExpiredSessionState()\n : undefined\n },\n after: synchronizeSession\n },\n sessionStoreStrategy\n )\n }\n\n function synchronizeSession(sessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState()\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache()\n } else {\n sessionStateUpdateObservable.notify({\n previousState: sessionCache,\n newState: sessionState\n })\n sessionCache = sessionState\n }\n }\n return sessionState\n }\n\n function startSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n if (\n isSessionInNotStartedState(sessionState) ||\n isSessionInExpiredState(sessionState)\n ) {\n return getExpiredSessionState()\n }\n },\n after: function (sessionState) {\n sessionCache = sessionState\n }\n },\n sessionStoreStrategy\n )\n }\n\n function expandOrRenewSessionState(sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false\n }\n\n const { trackingType, isTracked } = computeSessionState(\n sessionState[productKey]\n )\n sessionState[productKey] = trackingType\n delete sessionState.isExpired\n if (isTracked && !sessionState.id) {\n sessionState.id = UUID()\n sessionState.created = String(dateNow())\n }\n }\n\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(sessionState) {\n return (\n sessionCache.id !== sessionState.id ||\n sessionCache[productKey] !== sessionState[productKey]\n )\n }\n\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState()\n expireObservable.notify()\n }\n\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState\n renewObservable.notify()\n }\n\n function updateSessionState(partialSessionState) {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return assign({}, sessionState, partialSessionState)\n },\n after: synchronizeSession\n },\n sessionStoreStrategy\n )\n }\n\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession,\n getSession: function () {\n return sessionCache\n },\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable,\n restartSession: startSession,\n expire: function () {\n cancelExpandOrRenewSession()\n expireSession()\n synchronizeSession(getExpiredSessionState())\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId)\n },\n updateSessionState\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,11 +6,11 @@ export function willSyntheticsInjectRum() {
|
|
|
6
6
|
return Boolean(window._GUANCE_SYNTHETICS_INJECTS_RUM || getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));
|
|
7
7
|
}
|
|
8
8
|
export function getSyntheticsTestId() {
|
|
9
|
-
var value = window._GUANCE_SYNTHETICS_PUBLIC_ID
|
|
9
|
+
var value = typeof window._GUANCE_SYNTHETICS_PUBLIC_ID === 'string' ? window._GUANCE_SYNTHETICS_PUBLIC_ID : getCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);
|
|
10
10
|
return typeof value === 'string' ? value : undefined;
|
|
11
11
|
}
|
|
12
12
|
export function getSyntheticsResultId() {
|
|
13
|
-
var value = window._GUANCE_SYNTHETICS_RESULT_ID
|
|
13
|
+
var value = typeof window._GUANCE_SYNTHETICS_RESULT_ID === 'string' ? window._GUANCE_SYNTHETICS_RESULT_ID : getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);
|
|
14
14
|
return typeof value === 'string' ? value : undefined;
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=syntheticsWorkerValues.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syntheticsWorkerValues.js","names":["getCookie","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","Boolean","window","_GUANCE_SYNTHETICS_INJECTS_RUM","getSyntheticsTestId","value","_GUANCE_SYNTHETICS_PUBLIC_ID","undefined","getSyntheticsResultId","_GUANCE_SYNTHETICS_RESULT_ID"],"sources":["../../src/synthetics/syntheticsWorkerValues.js"],"sourcesContent":["import { getCookie } from '../browser/cookie'\n\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'guance-synthetics-public-id'\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'guance-synthetics-result-id'\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'guance-synthetics-injects-rum'\n\nexport function willSyntheticsInjectRum() {\n return Boolean(\n window._GUANCE_SYNTHETICS_INJECTS_RUM ||\n getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME)\n )\n}\n\nexport function getSyntheticsTestId() {\n var value =\n window._GUANCE_SYNTHETICS_PUBLIC_ID
|
|
1
|
+
{"version":3,"file":"syntheticsWorkerValues.js","names":["getCookie","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","Boolean","window","_GUANCE_SYNTHETICS_INJECTS_RUM","getSyntheticsTestId","value","_GUANCE_SYNTHETICS_PUBLIC_ID","undefined","getSyntheticsResultId","_GUANCE_SYNTHETICS_RESULT_ID"],"sources":["../../src/synthetics/syntheticsWorkerValues.js"],"sourcesContent":["import { getCookie } from '../browser/cookie'\n\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'guance-synthetics-public-id'\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'guance-synthetics-result-id'\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'guance-synthetics-injects-rum'\n\nexport function willSyntheticsInjectRum() {\n return Boolean(\n window._GUANCE_SYNTHETICS_INJECTS_RUM ||\n getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME)\n )\n}\n\nexport function getSyntheticsTestId() {\n var value =\n typeof window._GUANCE_SYNTHETICS_PUBLIC_ID === 'string'\n ? window._GUANCE_SYNTHETICS_PUBLIC_ID\n : getCookie(SYNTHETICS_TEST_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n\nexport function getSyntheticsResultId() {\n var value =\n typeof window._GUANCE_SYNTHETICS_RESULT_ID === 'string'\n ? window._GUANCE_SYNTHETICS_RESULT_ID\n : getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,mBAAmB;AAE7C,OAAO,IAAIC,8BAA8B,GAAG,6BAA6B;AACzE,OAAO,IAAIC,gCAAgC,GAAG,6BAA6B;AAC3E,OAAO,IAAIC,kCAAkC,GAAG,+BAA+B;AAE/E,OAAO,SAASC,uBAAuBA,CAAA,EAAG;EACxC,OAAOC,OAAO,CACZC,MAAM,CAACC,8BAA8B,IACnCP,SAAS,CAACG,kCAAkC,CAChD,CAAC;AACH;AAEA,OAAO,SAASK,mBAAmBA,CAAA,EAAG;EACpC,IAAIC,KAAK,GACP,OAAOH,MAAM,CAACI,4BAA4B,KAAK,QAAQ,GACnDJ,MAAM,CAACI,4BAA4B,GACnCV,SAAS,CAACC,8BAA8B,CAAC;EAC/C,OAAO,OAAOQ,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGE,SAAS;AACtD;AAEA,OAAO,SAASC,qBAAqBA,CAAA,EAAG;EACtC,IAAIH,KAAK,GACP,OAAOH,MAAM,CAACO,4BAA4B,KAAK,QAAQ,GACnDP,MAAM,CAACO,4BAA4B,GACnCb,SAAS,CAACE,gCAAgC,CAAC;EACjD,OAAO,OAAOO,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGE,SAAS;AACtD","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudcare/browser-core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"main": "cjs/index.js",
|
|
5
5
|
"module": "esm/index.js",
|
|
6
6
|
"types": "types/index.d.ts",
|
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
},
|
|
25
25
|
"author": "dataflux",
|
|
26
26
|
"license": "MIT",
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "3a1f8510e0b50c40c49cbec5ed2a28e29d6c6b84"
|
|
28
28
|
}
|
|
@@ -7,10 +7,10 @@ export function fetchAndApplyRemoteClocks(initConfiguration, callback) {
|
|
|
7
7
|
fetchRemoteClocks(initConfiguration, (serverTimestamp) => {
|
|
8
8
|
const end = performance.now()
|
|
9
9
|
const rtt = end - start
|
|
10
|
-
callback(applyRemoteClocks(serverTimestamp, rtt))
|
|
10
|
+
callback(applyRemoteClocks(serverTimestamp, rtt, start))
|
|
11
11
|
})
|
|
12
12
|
}
|
|
13
|
-
function applyRemoteClocks(serverTimestamp, rtt) {
|
|
13
|
+
function applyRemoteClocks(serverTimestamp, rtt, start) {
|
|
14
14
|
const estimatedClientTime =
|
|
15
15
|
performance.timing.navigationStart + start + rtt / 2
|
|
16
16
|
|
package/src/helper/deviceInfo.js
CHANGED
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
import { display } from '../helper/display'
|
|
2
2
|
import { monitor } from '../helper/monitor'
|
|
3
|
+
|
|
4
|
+
function getBrowserWindow() {
|
|
5
|
+
return typeof window !== 'undefined' ? window : undefined
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function getNavigator() {
|
|
9
|
+
const browserWindow = getBrowserWindow()
|
|
10
|
+
return browserWindow && typeof browserWindow.navigator !== 'undefined'
|
|
11
|
+
? browserWindow.navigator
|
|
12
|
+
: {}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function getUserAgent() {
|
|
16
|
+
return getNavigator().userAgent || ''
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function getTarget(target, context) {
|
|
20
|
+
return target || context || {}
|
|
21
|
+
}
|
|
22
|
+
|
|
3
23
|
var VariableLibrary = {
|
|
4
|
-
navigator
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
: {},
|
|
24
|
+
get navigator() {
|
|
25
|
+
return getNavigator()
|
|
26
|
+
},
|
|
8
27
|
infoMap: {
|
|
9
28
|
engine: ['WebKit', 'Trident', 'Gecko', 'Presto'],
|
|
10
29
|
browser: [
|
|
@@ -49,7 +68,6 @@ var VariableLibrary = {
|
|
|
49
68
|
'Quark',
|
|
50
69
|
'Qiyu',
|
|
51
70
|
'Wechat',
|
|
52
|
-
,
|
|
53
71
|
'WechatWork',
|
|
54
72
|
'Taobao',
|
|
55
73
|
'Alipay',
|
|
@@ -63,6 +81,7 @@ var VariableLibrary = {
|
|
|
63
81
|
'Linux',
|
|
64
82
|
'Mac OS',
|
|
65
83
|
'Android',
|
|
84
|
+
'HarmonyOS',
|
|
66
85
|
'Ubuntu',
|
|
67
86
|
'FreeBSD',
|
|
68
87
|
'Debian',
|
|
@@ -130,6 +149,10 @@ var MethodLibrary = {
|
|
|
130
149
|
Linux: u.indexOf('Linux') > -1 || u.indexOf('X11') > -1,
|
|
131
150
|
'Mac OS': u.indexOf('Macintosh') > -1,
|
|
132
151
|
Android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1,
|
|
152
|
+
HarmonyOS:
|
|
153
|
+
u.indexOf('HarmonyOS') > -1 ||
|
|
154
|
+
u.indexOf('OpenHarmony') > -1 ||
|
|
155
|
+
u.indexOf('HMOS') > -1,
|
|
133
156
|
Ubuntu: u.indexOf('Ubuntu') > -1,
|
|
134
157
|
FreeBSD: u.indexOf('FreeBSD') > -1,
|
|
135
158
|
Debian: u.indexOf('Debian') > -1,
|
|
@@ -149,8 +172,9 @@ var MethodLibrary = {
|
|
|
149
172
|
iPad: u.indexOf('iPad') > -1
|
|
150
173
|
}
|
|
151
174
|
}),
|
|
152
|
-
matchInfoMap: monitor(function (
|
|
153
|
-
var
|
|
175
|
+
matchInfoMap: monitor(function (target) {
|
|
176
|
+
var _this = getTarget(target, this)
|
|
177
|
+
var u = getUserAgent()
|
|
154
178
|
var match = MethodLibrary.getMatchMap(u)
|
|
155
179
|
for (var s in VariableLibrary.infoMap) {
|
|
156
180
|
for (var i = 0; i < VariableLibrary.infoMap[s].length; i++) {
|
|
@@ -161,14 +185,15 @@ var MethodLibrary = {
|
|
|
161
185
|
}
|
|
162
186
|
}
|
|
163
187
|
}),
|
|
164
|
-
getOS: monitor(function () {
|
|
165
|
-
var _this = this
|
|
188
|
+
getOS: monitor(function (target) {
|
|
189
|
+
var _this = getTarget(target, this)
|
|
190
|
+
_this.os = ''
|
|
166
191
|
MethodLibrary.matchInfoMap(_this)
|
|
167
192
|
return _this.os || 'Unknown'
|
|
168
193
|
}),
|
|
169
|
-
getOSVersion: monitor(function () {
|
|
170
|
-
var _this = this
|
|
171
|
-
var u =
|
|
194
|
+
getOSVersion: monitor(function (target) {
|
|
195
|
+
var _this = getTarget(target, this)
|
|
196
|
+
var u = getUserAgent()
|
|
172
197
|
_this.osVersion = ''
|
|
173
198
|
_this.osMajor = ''
|
|
174
199
|
var osVersion = {
|
|
@@ -189,6 +214,11 @@ var MethodLibrary = {
|
|
|
189
214
|
Android: function () {
|
|
190
215
|
return u.replace(/^.*Android ([\d.]+);.*$/, '$1')
|
|
191
216
|
},
|
|
217
|
+
HarmonyOS: function () {
|
|
218
|
+
return u
|
|
219
|
+
.replace(/^.*(?:HarmonyOS|OpenHarmony)[\/\s]([\d.]+).*$/, '$1')
|
|
220
|
+
.replace(/^.*HMOS[\s\/]([\d.]+).*$/, '$1')
|
|
221
|
+
},
|
|
192
222
|
iOS: function () {
|
|
193
223
|
return u.replace(/^.*OS ([\d_]+) like.*$/, '$1').replace(/_/g, '.')
|
|
194
224
|
},
|
|
@@ -221,17 +251,21 @@ var MethodLibrary = {
|
|
|
221
251
|
}
|
|
222
252
|
}),
|
|
223
253
|
|
|
224
|
-
getDeviceType: monitor(function () {
|
|
225
|
-
var _this = this
|
|
254
|
+
getDeviceType: monitor(function (target) {
|
|
255
|
+
var _this = getTarget(target, this)
|
|
226
256
|
_this.device = 'PC'
|
|
227
257
|
MethodLibrary.matchInfoMap(_this)
|
|
228
258
|
return _this.device
|
|
229
259
|
}),
|
|
230
260
|
getNetwork: monitor(function () {
|
|
261
|
+
var browserWindow = getBrowserWindow()
|
|
262
|
+
if (!browserWindow || !browserWindow.navigator) {
|
|
263
|
+
return 'unknown'
|
|
264
|
+
}
|
|
231
265
|
var connection =
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
266
|
+
browserWindow.navigator.connection ||
|
|
267
|
+
browserWindow.navigator.mozConnection ||
|
|
268
|
+
browserWindow.navigator.webkitConnection
|
|
235
269
|
var result = 'unknown'
|
|
236
270
|
var type = connection ? connection.type || connection.effectiveType : null
|
|
237
271
|
if (type && typeof type === 'string') {
|
|
@@ -268,13 +302,12 @@ var MethodLibrary = {
|
|
|
268
302
|
}
|
|
269
303
|
return result
|
|
270
304
|
}),
|
|
271
|
-
getLanguage: monitor(function () {
|
|
272
|
-
var _this = this
|
|
305
|
+
getLanguage: monitor(function (target) {
|
|
306
|
+
var _this = getTarget(target, this)
|
|
273
307
|
_this.language = (function () {
|
|
308
|
+
var navigator = getNavigator()
|
|
274
309
|
var language =
|
|
275
|
-
|
|
276
|
-
VariableLibrary.navigator.language ||
|
|
277
|
-
''
|
|
310
|
+
navigator.browserLanguage || navigator.language || ''
|
|
278
311
|
var arr = language.split('-')
|
|
279
312
|
if (arr[1]) {
|
|
280
313
|
arr[1] = arr[1].toUpperCase()
|
|
@@ -292,14 +325,21 @@ var MethodLibrary = {
|
|
|
292
325
|
return undefined
|
|
293
326
|
}
|
|
294
327
|
}),
|
|
295
|
-
getBrowserInfo: monitor(function () {
|
|
296
|
-
var _this = this
|
|
328
|
+
getBrowserInfo: monitor(function (target) {
|
|
329
|
+
var _this = getTarget(target, this)
|
|
330
|
+
_this.engine = ''
|
|
331
|
+
_this.browser = ''
|
|
297
332
|
MethodLibrary.matchInfoMap(_this)
|
|
298
333
|
|
|
299
|
-
var
|
|
334
|
+
var browserWindow = getBrowserWindow()
|
|
335
|
+
var navigator = getNavigator()
|
|
336
|
+
var u = getUserAgent()
|
|
300
337
|
|
|
301
338
|
var _mime = function (option, value) {
|
|
302
|
-
var mimeTypes =
|
|
339
|
+
var mimeTypes = navigator.mimeTypes
|
|
340
|
+
if (!mimeTypes) {
|
|
341
|
+
return false
|
|
342
|
+
}
|
|
303
343
|
for (var key in mimeTypes) {
|
|
304
344
|
if (mimeTypes[key][option] == value) {
|
|
305
345
|
return true
|
|
@@ -311,9 +351,9 @@ var MethodLibrary = {
|
|
|
311
351
|
var match = MethodLibrary.getMatchMap(u)
|
|
312
352
|
|
|
313
353
|
var is360 = false
|
|
314
|
-
if (
|
|
354
|
+
if (browserWindow && browserWindow.chrome) {
|
|
315
355
|
var chrome_version = u.replace(/^.*Chrome\/([\d]+).*$/, '$1')
|
|
316
|
-
if (chrome_version > 36 &&
|
|
356
|
+
if (chrome_version > 36 && browserWindow.showModalDialog) {
|
|
317
357
|
is360 = true
|
|
318
358
|
} else if (chrome_version > 45) {
|
|
319
359
|
is360 = _mime('type', 'application/vnd.chromium.remoting-viewer')
|
|
@@ -329,18 +369,17 @@ var MethodLibrary = {
|
|
|
329
369
|
if (_mime('type', 'application/gameplugin')) {
|
|
330
370
|
match['360SE'] = true
|
|
331
371
|
} else if (
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
typeof
|
|
335
|
-
'undefined'
|
|
372
|
+
navigator &&
|
|
373
|
+
navigator.connection &&
|
|
374
|
+
typeof navigator['connection']['saveData'] == 'undefined'
|
|
336
375
|
) {
|
|
337
376
|
match['360SE'] = true
|
|
338
377
|
} else {
|
|
339
378
|
match['360EE'] = true
|
|
340
379
|
}
|
|
341
380
|
}
|
|
342
|
-
if (match['IE'] || match['Edge']) {
|
|
343
|
-
var navigator_top =
|
|
381
|
+
if (browserWindow && (match['IE'] || match['Edge'])) {
|
|
382
|
+
var navigator_top = browserWindow.screenTop - browserWindow.screenY
|
|
344
383
|
switch (navigator_top) {
|
|
345
384
|
case 71:
|
|
346
385
|
break
|
|
@@ -542,10 +581,10 @@ var MethodLibrary = {
|
|
|
542
581
|
}
|
|
543
582
|
if (_this.browser == 'Chrome' && u.match(/\S+Browser/)) {
|
|
544
583
|
_this.browser = u.match(/\S+Browser/)[0]
|
|
545
|
-
_this.
|
|
584
|
+
_this.browserVersion = u.replace(/^.*Browser\/([\d.]+).*$/, '$1')
|
|
546
585
|
}
|
|
547
586
|
if (_this.browser == 'Edge') {
|
|
548
|
-
if (_this.
|
|
587
|
+
if (_this.browserVersion > '75') {
|
|
549
588
|
_this.engine = 'Blink'
|
|
550
589
|
} else {
|
|
551
590
|
_this.engine = 'EdgeHTML'
|
|
@@ -559,7 +598,7 @@ var MethodLibrary = {
|
|
|
559
598
|
parseInt(_this.browserVersion) > 27
|
|
560
599
|
) {
|
|
561
600
|
_this.engine = 'Blink'
|
|
562
|
-
} else if (_this.browser == 'Opera' && parseInt(_this.
|
|
601
|
+
} else if (_this.browser == 'Opera' && parseInt(_this.browserVersion) > 12) {
|
|
563
602
|
_this.engine = 'Blink'
|
|
564
603
|
} else if (_this.browser == 'Yandex') {
|
|
565
604
|
_this.engine = 'Blink'
|
|
@@ -567,16 +606,17 @@ var MethodLibrary = {
|
|
|
567
606
|
if (_this.browserVersion) {
|
|
568
607
|
_this.browserMajor =
|
|
569
608
|
_this.browserVersion.split('.').length &&
|
|
570
|
-
|
|
609
|
+
_this.browserVersion.split('.')[0]
|
|
571
610
|
}
|
|
572
611
|
return {
|
|
573
612
|
browser: _this.browser,
|
|
574
613
|
browserVersion: _this.browserVersion,
|
|
575
|
-
engine: _this.engine,
|
|
614
|
+
engine: _this.engine || 'Unknown',
|
|
576
615
|
browserMajor: _this.browserMajor
|
|
577
616
|
}
|
|
578
617
|
}),
|
|
579
|
-
|
|
618
|
+
getGeoPosition: monitor(function (callback) {
|
|
619
|
+
var navigator = getNavigator()
|
|
580
620
|
navigator &&
|
|
581
621
|
navigator.geolocation &&
|
|
582
622
|
navigator.geolocation.getCurrentPosition(
|
|
@@ -589,20 +629,32 @@ var MethodLibrary = {
|
|
|
589
629
|
)
|
|
590
630
|
})
|
|
591
631
|
}
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
632
|
+
|
|
633
|
+
MethodLibrary.getGeoPostion = MethodLibrary.getGeoPosition
|
|
634
|
+
|
|
635
|
+
export function getDeviceInfo() {
|
|
636
|
+
const browserWindow = getBrowserWindow()
|
|
637
|
+
if (!browserWindow) {
|
|
638
|
+
return {}
|
|
639
|
+
}
|
|
640
|
+
const screen = browserWindow.screen || { width: 0, height: 0 }
|
|
641
|
+
const target = {}
|
|
642
|
+
const osInfo = MethodLibrary.getOS(target)
|
|
643
|
+
const osVersionInfo = MethodLibrary.getOSVersion(target)
|
|
644
|
+
const browserInfo = MethodLibrary.getBrowserInfo(target)
|
|
645
|
+
return {
|
|
646
|
+
os: osInfo,
|
|
647
|
+
osVersion: osVersionInfo.version,
|
|
648
|
+
osVersionMajor: osVersionInfo.osMajor,
|
|
649
|
+
browser: browserInfo.browser,
|
|
650
|
+
browserVersion: browserInfo.browserVersion,
|
|
651
|
+
browserVersionMajor: browserInfo.browserMajor,
|
|
652
|
+
screenSize: screen.width + '*' + screen.height,
|
|
602
653
|
networkType: MethodLibrary.getNetwork(),
|
|
603
|
-
device: MethodLibrary.getDeviceType(),
|
|
654
|
+
device: MethodLibrary.getDeviceType(target),
|
|
604
655
|
timeZone: MethodLibrary.getTimeZone(),
|
|
605
|
-
userAgent:
|
|
656
|
+
userAgent: getUserAgent()
|
|
606
657
|
}
|
|
607
658
|
}
|
|
608
|
-
|
|
659
|
+
|
|
660
|
+
export var deviceInfo = getDeviceInfo()
|
package/src/helper/polyfills.js
CHANGED
package/src/helper/tools.js
CHANGED
|
@@ -764,9 +764,9 @@ export var sessionStorage = {
|
|
|
764
764
|
var key = '__sensorsdatasupport__'
|
|
765
765
|
var val = 'testIsSupportStorage'
|
|
766
766
|
try {
|
|
767
|
-
if (sessionStorage && sessionStorage.setItem) {
|
|
768
|
-
sessionStorage.setItem(key, val)
|
|
769
|
-
sessionStorage.removeItem(key, val)
|
|
767
|
+
if (window.sessionStorage && window.sessionStorage.setItem) {
|
|
768
|
+
window.sessionStorage.setItem(key, val)
|
|
769
|
+
window.sessionStorage.removeItem(key, val)
|
|
770
770
|
supported = true
|
|
771
771
|
} else {
|
|
772
772
|
supported = false
|
|
@@ -958,7 +958,7 @@ export var getHostname = function (url, defaultValue) {
|
|
|
958
958
|
}
|
|
959
959
|
var hostname = null
|
|
960
960
|
try {
|
|
961
|
-
hostname = URL(url).hostname
|
|
961
|
+
hostname = new URL(url).hostname
|
|
962
962
|
} catch (e) {}
|
|
963
963
|
return hostname || defaultValue
|
|
964
964
|
}
|
|
@@ -20,7 +20,7 @@ export function createValueHistory(params) {
|
|
|
20
20
|
var maxEntries = params.maxEntries
|
|
21
21
|
|
|
22
22
|
var entries = []
|
|
23
|
-
if (cleanupHistoriesInterval) {
|
|
23
|
+
if (cleanupHistoriesInterval === null) {
|
|
24
24
|
cleanupHistoriesInterval = setInterval(function () {
|
|
25
25
|
return clearExpiredValues()
|
|
26
26
|
}, CLEAR_OLD_VALUES_INTERVAL)
|
|
@@ -11,6 +11,8 @@ import {
|
|
|
11
11
|
import { addEventListener } from '../browser/addEventListener'
|
|
12
12
|
import { DOM_EVENT } from '../helper/enums'
|
|
13
13
|
import { monitor } from '../helper/monitor'
|
|
14
|
+
import { ErrorSource } from '../helper/errorTools'
|
|
15
|
+
import { ErrorHandling } from '../helper/enums'
|
|
14
16
|
export var RawReportType = {
|
|
15
17
|
intervention: 'intervention',
|
|
16
18
|
deprecation: 'deprecation',
|
|
@@ -83,6 +83,7 @@ export function startSessionManager(
|
|
|
83
83
|
findSession: function (startTime, options) {
|
|
84
84
|
return sessionContextHistory.find(startTime, options)
|
|
85
85
|
},
|
|
86
|
+
expandOrRenewSession: sessionStore.expandOrRenewSession,
|
|
86
87
|
renewObservable,
|
|
87
88
|
expireObservable,
|
|
88
89
|
sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,
|
|
@@ -160,7 +160,10 @@ export function startSessionStore(
|
|
|
160
160
|
processSessionStoreOperations(
|
|
161
161
|
{
|
|
162
162
|
process: function (sessionState) {
|
|
163
|
-
if (
|
|
163
|
+
if (
|
|
164
|
+
isSessionInNotStartedState(sessionState) ||
|
|
165
|
+
isSessionInExpiredState(sessionState)
|
|
166
|
+
) {
|
|
164
167
|
return getExpiredSessionState()
|
|
165
168
|
}
|
|
166
169
|
},
|
|
@@ -13,14 +13,16 @@ export function willSyntheticsInjectRum() {
|
|
|
13
13
|
|
|
14
14
|
export function getSyntheticsTestId() {
|
|
15
15
|
var value =
|
|
16
|
-
window._GUANCE_SYNTHETICS_PUBLIC_ID
|
|
17
|
-
|
|
16
|
+
typeof window._GUANCE_SYNTHETICS_PUBLIC_ID === 'string'
|
|
17
|
+
? window._GUANCE_SYNTHETICS_PUBLIC_ID
|
|
18
|
+
: getCookie(SYNTHETICS_TEST_ID_COOKIE_NAME)
|
|
18
19
|
return typeof value === 'string' ? value : undefined
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
export function getSyntheticsResultId() {
|
|
22
23
|
var value =
|
|
23
|
-
window._GUANCE_SYNTHETICS_RESULT_ID
|
|
24
|
-
|
|
24
|
+
typeof window._GUANCE_SYNTHETICS_RESULT_ID === 'string'
|
|
25
|
+
? window._GUANCE_SYNTHETICS_RESULT_ID
|
|
26
|
+
: getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME)
|
|
25
27
|
return typeof value === 'string' ? value : undefined
|
|
26
28
|
}
|