@datadog/browser-core
Advanced tools
Comparing version
@@ -10,3 +10,3 @@ "use strict"; | ||
const publicApi = { | ||
version: "6.12.0", | ||
version: "6.12.1", | ||
// This API method is intentionally not monitored, since the only thing executed is the | ||
@@ -13,0 +13,0 @@ // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and |
@@ -59,3 +59,3 @@ "use strict"; | ||
function buildEndpointParameters({ clientToken, internalAnalyticsSubdomain }, trackType, configurationTags, api, { retry, encoding }) { | ||
const tags = [`sdk_version:${"6.12.0"}`, `api:${api}`].concat(configurationTags); | ||
const tags = [`sdk_version:${"6.12.1"}`, `api:${api}`].concat(configurationTags); | ||
if (retry) { | ||
@@ -68,3 +68,3 @@ tags.push(`retry_count:${retry.count}`, `retry_after:${retry.lastFailureStatus}`); | ||
`dd-api-key=${clientToken}`, | ||
`dd-evp-origin-version=${encodeURIComponent("6.12.0")}`, | ||
`dd-evp-origin-version=${encodeURIComponent("6.12.1")}`, | ||
'dd-evp-origin=browser', | ||
@@ -71,0 +71,0 @@ `dd-request-id=${(0, stringUtils_1.generateUUID)()}`, |
import type { Configuration } from '../configuration'; | ||
import type { AbstractHooks } from '../../tools/abstractHooks'; | ||
export interface Account { | ||
id: string; | ||
name?: string | undefined; | ||
[key: string]: unknown; | ||
} | ||
export declare function startAccountContext(hooks: AbstractHooks, configuration: Configuration, productKey: string): { | ||
@@ -4,0 +9,0 @@ getContext: () => import("../..").Context; |
@@ -9,3 +9,5 @@ import type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy'; | ||
export declare const LOCK_MAX_TRIES = 100; | ||
export declare const LOCK_EXPIRATION_DELAY = 1000; | ||
export declare function processSessionStoreOperations(operations: Operations, sessionStoreStrategy: SessionStoreStrategy, numberOfRetries?: number): void; | ||
export declare function createLock(): string; | ||
export {}; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.LOCK_MAX_TRIES = exports.LOCK_RETRY_DELAY = void 0; | ||
exports.LOCK_EXPIRATION_DELAY = exports.LOCK_MAX_TRIES = exports.LOCK_RETRY_DELAY = void 0; | ||
exports.processSessionStoreOperations = processSessionStoreOperations; | ||
exports.createLock = createLock; | ||
const timer_1 = require("../../tools/timer"); | ||
const stringUtils_1 = require("../../tools/utils/stringUtils"); | ||
const timeUtils_1 = require("../../tools/utils/timeUtils"); | ||
const telemetry_1 = require("../telemetry"); | ||
@@ -11,2 +13,6 @@ const sessionState_1 = require("./sessionState"); | ||
exports.LOCK_MAX_TRIES = 100; | ||
// Locks should be hold for a few milliseconds top, just the time it takes to read and write a | ||
// cookie. Using one second should be enough in most situations. | ||
exports.LOCK_EXPIRATION_DELAY = timeUtils_1.ONE_SECOND; | ||
const LOCK_SEPARATOR = '--'; | ||
const bufferedOperations = []; | ||
@@ -19,10 +25,6 @@ let ongoingOperations; | ||
const retrieveStore = () => { | ||
const session = sessionStoreStrategy.retrieveSession(); | ||
const lock = session.lock; | ||
if (session.lock) { | ||
delete session.lock; | ||
} | ||
const { lock, ...session } = sessionStoreStrategy.retrieveSession(); | ||
return { | ||
session, | ||
lock, | ||
lock: lock && !isLockExpired(lock) ? lock : undefined, | ||
}; | ||
@@ -53,3 +55,3 @@ }; | ||
// acquire lock | ||
currentLock = (0, stringUtils_1.generateUUID)(); | ||
currentLock = createLock(); | ||
persistWithLock(currentStore.session); | ||
@@ -117,2 +119,9 @@ // if lock is not acquired, retry later | ||
} | ||
function createLock() { | ||
return (0, stringUtils_1.generateUUID)() + LOCK_SEPARATOR + (0, timeUtils_1.timeStampNow)(); | ||
} | ||
function isLockExpired(lock) { | ||
const [, timeStamp] = lock.split(LOCK_SEPARATOR); | ||
return !timeStamp || (0, timeUtils_1.elapsed)(Number(timeStamp), (0, timeUtils_1.timeStampNow)()) > exports.LOCK_EXPIRATION_DELAY; | ||
} | ||
//# sourceMappingURL=sessionStoreOperations.js.map |
@@ -88,3 +88,3 @@ "use strict"; | ||
service: telemetryService, | ||
version: "6.12.0", | ||
version: "6.12.1", | ||
source: 'browser', | ||
@@ -91,0 +91,0 @@ _dd: { |
@@ -67,2 +67,5 @@ export type { Configuration, InitConfiguration, EndpointBuilder } from './domain/configuration'; | ||
export { startGlobalContext, buildGlobalContextManager } from './domain/contexts/globalContext'; | ||
export { startUserContext, buildUserContextManager } from './domain/contexts/userContext'; | ||
export type { User } from './domain/contexts/userContext'; | ||
export type { Account } from './domain/contexts/accountContext'; | ||
export { CustomerDataType, CustomerContextKey, ContextManagerMethod } from './domain/context/contextConstants'; | ||
@@ -76,4 +79,2 @@ export type { ValueHistory, ValueHistoryEntry } from './tools/valueHistory'; | ||
export { willSyntheticsInjectRum, getSyntheticsTestId, getSyntheticsResultId, isSyntheticsTest, } from './domain/synthetics/syntheticsWorkerValues'; | ||
export type { User } from './domain/user.types'; | ||
export type { Account } from './domain/account.types'; | ||
export { checkContext } from './domain/context/contextUtils'; | ||
@@ -80,0 +81,0 @@ export * from './domain/resourceUtils'; |
@@ -18,3 +18,3 @@ "use strict"; | ||
exports.sendToExtension = exports.AbstractLifeCycle = exports.createIdentityEncoder = exports.createFlushController = exports.startBatchWithReplica = exports.bridgeSupports = exports.getEventBridge = exports.canUseEventBridge = exports.createHttpRequest = exports.SessionPersistence = exports.SESSION_NOT_TRACKED = exports.SESSION_TIME_OUT_DELAY = exports.stopSessionManager = exports.startSessionManager = exports.Observable = exports.monitorError = exports.setDebugMode = exports.callMonitored = exports.monitor = exports.monitored = exports.addTelemetryUsage = exports.addTelemetryConfiguration = exports.isTelemetryReplicationAllowed = exports.resetTelemetry = exports.startFakeTelemetry = exports.addTelemetryError = exports.addTelemetryDebug = exports.startTelemetry = exports.RawReportType = exports.initReportObservable = exports.displayAlreadyInitializedError = exports.makePublicApi = exports.defineGlobal = exports.computeStackTrace = exports.trackRuntimeError = exports.ExperimentalFeature = exports.initFeatureFlags = exports.getExperimentalFeatures = exports.resetExperimentalFeatures = exports.addExperimentalFeatures = exports.isExperimentalFeatureEnabled = exports.createTrackingConsentState = exports.TrackingConsent = exports.isIntakeUrl = exports.buildEndpointHost = exports.isSampleRate = exports.serializeConfiguration = exports.TraceContextInjection = exports.DefaultPrivacyLevel = exports.validateAndBuildConfiguration = void 0; | ||
exports.ErrorSource = exports.checkContext = exports.isSyntheticsTest = exports.getSyntheticsResultId = exports.getSyntheticsTestId = exports.willSyntheticsInjectRum = exports.SESSION_STORE_KEY = exports.STORAGE_POLL_DELAY = exports.readBytesFromStream = exports.CLEAR_OLD_VALUES_INTERVAL = exports.createValueHistory = exports.ContextManagerMethod = exports.CustomerContextKey = exports.buildGlobalContextManager = exports.startGlobalContext = exports.buildAccountContextManager = exports.startAccountContext = exports.removeStorageListeners = exports.storeContextManager = exports.bufferContextCalls = exports.defineContextMethod = exports.createContextManager = exports.catchUserErrors = exports.createBoundedBuffer = exports.resetConsoleObservable = exports.initConsoleObservable = exports.isPageExitReason = exports.PageExitReason = exports.createPageMayExitObservable = exports.resetFetchObservable = exports.initFetchObservable = exports.initXhrObservable = exports.resetInitCookies = exports.deleteCookie = exports.setCookie = exports.getInitCookie = exports.getCookie = exports.areCookiesAuthorized = exports.NO_ERROR_STACK_PRESENT_MESSAGE = exports.isError = exports.getFileFromStackTraceString = exports.computeRawError = exports.instrumentSetter = exports.instrumentMethod = exports.getZoneJsOriginalValue = exports.asyncRunOnReadyState = exports.runOnReadyState = void 0; | ||
exports.ErrorSource = exports.checkContext = exports.isSyntheticsTest = exports.getSyntheticsResultId = exports.getSyntheticsTestId = exports.willSyntheticsInjectRum = exports.SESSION_STORE_KEY = exports.STORAGE_POLL_DELAY = exports.readBytesFromStream = exports.CLEAR_OLD_VALUES_INTERVAL = exports.createValueHistory = exports.ContextManagerMethod = exports.CustomerContextKey = exports.buildUserContextManager = exports.startUserContext = exports.buildGlobalContextManager = exports.startGlobalContext = exports.buildAccountContextManager = exports.startAccountContext = exports.removeStorageListeners = exports.storeContextManager = exports.bufferContextCalls = exports.defineContextMethod = exports.createContextManager = exports.catchUserErrors = exports.createBoundedBuffer = exports.resetConsoleObservable = exports.initConsoleObservable = exports.isPageExitReason = exports.PageExitReason = exports.createPageMayExitObservable = exports.resetFetchObservable = exports.initFetchObservable = exports.initXhrObservable = exports.resetInitCookies = exports.deleteCookie = exports.setCookie = exports.getInitCookie = exports.getCookie = exports.areCookiesAuthorized = exports.NO_ERROR_STACK_PRESENT_MESSAGE = exports.isError = exports.getFileFromStackTraceString = exports.computeRawError = exports.instrumentSetter = exports.instrumentMethod = exports.getZoneJsOriginalValue = exports.asyncRunOnReadyState = exports.runOnReadyState = void 0; | ||
var configuration_1 = require("./domain/configuration"); | ||
@@ -151,2 +151,5 @@ Object.defineProperty(exports, "validateAndBuildConfiguration", { enumerable: true, get: function () { return configuration_1.validateAndBuildConfiguration; } }); | ||
Object.defineProperty(exports, "buildGlobalContextManager", { enumerable: true, get: function () { return globalContext_1.buildGlobalContextManager; } }); | ||
var userContext_1 = require("./domain/contexts/userContext"); | ||
Object.defineProperty(exports, "startUserContext", { enumerable: true, get: function () { return userContext_1.startUserContext; } }); | ||
Object.defineProperty(exports, "buildUserContextManager", { enumerable: true, get: function () { return userContext_1.buildUserContextManager; } }); | ||
var contextConstants_1 = require("./domain/context/contextConstants"); | ||
@@ -153,0 +156,0 @@ Object.defineProperty(exports, "CustomerContextKey", { enumerable: true, get: function () { return contextConstants_1.CustomerContextKey; } }); |
@@ -6,3 +6,3 @@ import { catchUserErrors } from '../tools/catchUserErrors'; | ||
const publicApi = { | ||
version: "6.12.0", | ||
version: "6.12.1", | ||
// This API method is intentionally not monitored, since the only thing executed is the | ||
@@ -9,0 +9,0 @@ // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and |
@@ -55,3 +55,3 @@ import { timeStampNow } from '../../tools/utils/timeUtils'; | ||
function buildEndpointParameters({ clientToken, internalAnalyticsSubdomain }, trackType, configurationTags, api, { retry, encoding }) { | ||
const tags = [`sdk_version:${"6.12.0"}`, `api:${api}`].concat(configurationTags); | ||
const tags = [`sdk_version:${"6.12.1"}`, `api:${api}`].concat(configurationTags); | ||
if (retry) { | ||
@@ -64,3 +64,3 @@ tags.push(`retry_count:${retry.count}`, `retry_after:${retry.lastFailureStatus}`); | ||
`dd-api-key=${clientToken}`, | ||
`dd-evp-origin-version=${encodeURIComponent("6.12.0")}`, | ||
`dd-evp-origin-version=${encodeURIComponent("6.12.1")}`, | ||
'dd-evp-origin=browser', | ||
@@ -67,0 +67,0 @@ `dd-request-id=${generateUUID()}`, |
import type { Configuration } from '../configuration'; | ||
import type { AbstractHooks } from '../../tools/abstractHooks'; | ||
export interface Account { | ||
id: string; | ||
name?: string | undefined; | ||
[key: string]: unknown; | ||
} | ||
export declare function startAccountContext(hooks: AbstractHooks, configuration: Configuration, productKey: string): { | ||
@@ -4,0 +9,0 @@ getContext: () => import("../..").Context; |
@@ -9,3 +9,5 @@ import type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy'; | ||
export declare const LOCK_MAX_TRIES = 100; | ||
export declare const LOCK_EXPIRATION_DELAY = 1000; | ||
export declare function processSessionStoreOperations(operations: Operations, sessionStoreStrategy: SessionStoreStrategy, numberOfRetries?: number): void; | ||
export declare function createLock(): string; | ||
export {}; |
import { setTimeout } from '../../tools/timer'; | ||
import { generateUUID } from '../../tools/utils/stringUtils'; | ||
import { elapsed, ONE_SECOND, timeStampNow } from '../../tools/utils/timeUtils'; | ||
import { addTelemetryDebug } from '../telemetry'; | ||
@@ -7,2 +8,6 @@ import { expandSessionState, isSessionInExpiredState } from './sessionState'; | ||
export const LOCK_MAX_TRIES = 100; | ||
// Locks should be hold for a few milliseconds top, just the time it takes to read and write a | ||
// cookie. Using one second should be enough in most situations. | ||
export const LOCK_EXPIRATION_DELAY = ONE_SECOND; | ||
const LOCK_SEPARATOR = '--'; | ||
const bufferedOperations = []; | ||
@@ -15,10 +20,6 @@ let ongoingOperations; | ||
const retrieveStore = () => { | ||
const session = sessionStoreStrategy.retrieveSession(); | ||
const lock = session.lock; | ||
if (session.lock) { | ||
delete session.lock; | ||
} | ||
const { lock, ...session } = sessionStoreStrategy.retrieveSession(); | ||
return { | ||
session, | ||
lock, | ||
lock: lock && !isLockExpired(lock) ? lock : undefined, | ||
}; | ||
@@ -49,3 +50,3 @@ }; | ||
// acquire lock | ||
currentLock = generateUUID(); | ||
currentLock = createLock(); | ||
persistWithLock(currentStore.session); | ||
@@ -113,2 +114,9 @@ // if lock is not acquired, retry later | ||
} | ||
export function createLock() { | ||
return generateUUID() + LOCK_SEPARATOR + timeStampNow(); | ||
} | ||
function isLockExpired(lock) { | ||
const [, timeStamp] = lock.split(LOCK_SEPARATOR); | ||
return !timeStamp || elapsed(Number(timeStamp), timeStampNow()) > LOCK_EXPIRATION_DELAY; | ||
} | ||
//# sourceMappingURL=sessionStoreOperations.js.map |
@@ -75,3 +75,3 @@ import { ConsoleApiName } from '../../tools/display'; | ||
service: telemetryService, | ||
version: "6.12.0", | ||
version: "6.12.1", | ||
source: 'browser', | ||
@@ -78,0 +78,0 @@ _dd: { |
@@ -67,2 +67,5 @@ export type { Configuration, InitConfiguration, EndpointBuilder } from './domain/configuration'; | ||
export { startGlobalContext, buildGlobalContextManager } from './domain/contexts/globalContext'; | ||
export { startUserContext, buildUserContextManager } from './domain/contexts/userContext'; | ||
export type { User } from './domain/contexts/userContext'; | ||
export type { Account } from './domain/contexts/accountContext'; | ||
export { CustomerDataType, CustomerContextKey, ContextManagerMethod } from './domain/context/contextConstants'; | ||
@@ -76,4 +79,2 @@ export type { ValueHistory, ValueHistoryEntry } from './tools/valueHistory'; | ||
export { willSyntheticsInjectRum, getSyntheticsTestId, getSyntheticsResultId, isSyntheticsTest, } from './domain/synthetics/syntheticsWorkerValues'; | ||
export type { User } from './domain/user.types'; | ||
export type { Account } from './domain/account.types'; | ||
export { checkContext } from './domain/context/contextUtils'; | ||
@@ -80,0 +81,0 @@ export * from './domain/resourceUtils'; |
@@ -48,2 +48,3 @@ export { validateAndBuildConfiguration, DefaultPrivacyLevel, TraceContextInjection, serializeConfiguration, isSampleRate, buildEndpointHost, isIntakeUrl, } from './domain/configuration'; | ||
export { startGlobalContext, buildGlobalContextManager } from './domain/contexts/globalContext'; | ||
export { startUserContext, buildUserContextManager } from './domain/contexts/userContext'; | ||
export { CustomerContextKey, ContextManagerMethod } from './domain/context/contextConstants'; | ||
@@ -50,0 +51,0 @@ export { createValueHistory, CLEAR_OLD_VALUES_INTERVAL } from './tools/valueHistory'; |
{ | ||
"name": "@datadog/browser-core", | ||
"version": "6.12.0", | ||
"version": "6.12.1", | ||
"license": "Apache-2.0", | ||
@@ -27,3 +27,3 @@ "main": "cjs/index.js", | ||
}, | ||
"gitHead": "21b947edfd67e153dd7652105f7392092aaffb64" | ||
"gitHead": "71e779ed195d69df2fa38f404ad2b9d78fe79a32" | ||
} |
@@ -6,6 +6,11 @@ import type { Configuration } from '../configuration' | ||
import type { AbstractHooks } from '../../tools/abstractHooks' | ||
import type { Account } from '../account.types' | ||
import { isEmptyObject } from '../../tools/utils/objectUtils' | ||
import { createContextManager } from '../context/contextManager' | ||
export interface Account { | ||
id: string | ||
name?: string | undefined | ||
[key: string]: unknown | ||
} | ||
export function startAccountContext(hooks: AbstractHooks, configuration: Configuration, productKey: string) { | ||
@@ -12,0 +17,0 @@ const accountContextManager = buildAccountContextManager() |
import { setTimeout } from '../../tools/timer' | ||
import { generateUUID } from '../../tools/utils/stringUtils' | ||
import type { TimeStamp } from '../../tools/utils/timeUtils' | ||
import { elapsed, ONE_SECOND, timeStampNow } from '../../tools/utils/timeUtils' | ||
import { addTelemetryDebug } from '../telemetry' | ||
@@ -15,2 +17,8 @@ import type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy' | ||
export const LOCK_MAX_TRIES = 100 | ||
// Locks should be hold for a few milliseconds top, just the time it takes to read and write a | ||
// cookie. Using one second should be enough in most situations. | ||
export const LOCK_EXPIRATION_DELAY = ONE_SECOND | ||
const LOCK_SEPARATOR = '--' | ||
const bufferedOperations: Operations[] = [] | ||
@@ -27,12 +35,6 @@ let ongoingOperations: Operations | undefined | ||
const retrieveStore = () => { | ||
const session = sessionStoreStrategy.retrieveSession() | ||
const lock = session.lock | ||
if (session.lock) { | ||
delete session.lock | ||
} | ||
const { lock, ...session } = sessionStoreStrategy.retrieveSession() | ||
return { | ||
session, | ||
lock, | ||
lock: lock && !isLockExpired(lock) ? lock : undefined, | ||
} | ||
@@ -64,3 +66,3 @@ } | ||
// acquire lock | ||
currentLock = generateUUID() | ||
currentLock = createLock() | ||
persistWithLock(currentStore.session) | ||
@@ -128,1 +130,10 @@ // if lock is not acquired, retry later | ||
} | ||
export function createLock(): string { | ||
return generateUUID() + LOCK_SEPARATOR + timeStampNow() | ||
} | ||
function isLockExpired(lock: string) { | ||
const [, timeStamp] = lock.split(LOCK_SEPARATOR) | ||
return !timeStamp || elapsed(Number(timeStamp) as TimeStamp, timeStampNow()) > LOCK_EXPIRATION_DELAY | ||
} |
@@ -126,2 +126,5 @@ export type { Configuration, InitConfiguration, EndpointBuilder } from './domain/configuration' | ||
export { startGlobalContext, buildGlobalContextManager } from './domain/contexts/globalContext' | ||
export { startUserContext, buildUserContextManager } from './domain/contexts/userContext' | ||
export type { User } from './domain/contexts/userContext' | ||
export type { Account } from './domain/contexts/accountContext' | ||
export { CustomerDataType, CustomerContextKey, ContextManagerMethod } from './domain/context/contextConstants' | ||
@@ -140,4 +143,2 @@ export type { ValueHistory, ValueHistoryEntry } from './tools/valueHistory' | ||
} from './domain/synthetics/syntheticsWorkerValues' | ||
export type { User } from './domain/user.types' | ||
export type { Account } from './domain/account.types' | ||
export { checkContext } from './domain/context/contextUtils' | ||
@@ -144,0 +145,0 @@ export * from './domain/resourceUtils' |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
1208854
1.02%21875
0.89%690
-1%