Socket
Socket
Sign inDemoInstall

@datadog/browser-core

Package Overview
Dependencies
0
Maintainers
1
Versions
244
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 5.9.0 to 5.10.0

cjs/domain/trackingConsent.d.ts

2

cjs/boot/init.js

@@ -9,3 +9,3 @@ "use strict";

var publicApi = (0, polyfills_1.assign)({
version: "5.9.0",
version: "5.10.0",
// This API method is intentionally not monitored, since the only thing executed is the

@@ -12,0 +12,0 @@ // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and

import type { RawTelemetryConfiguration } from '../telemetry';
import type { Duration } from '../../tools/utils/timeUtils';
import type { SessionStoreStrategyType } from '../session/storeStrategies/sessionStoreStrategy';
import { TrackingConsent } from '../trackingConsent';
import type { TransportConfiguration } from './transportConfiguration';

@@ -20,2 +21,3 @@ export declare const DefaultPrivacyLevel: {

storeContextsAcrossPages?: boolean | undefined;
trackingConsent?: TrackingConsent | undefined;
proxy?: string | ProxyFn | undefined;

@@ -61,2 +63,3 @@ site?: string | undefined;

allowUntrustedEvents: boolean;
trackingConsent: TrackingConsent;
eventRateLimiterThreshold: number;

@@ -63,0 +66,0 @@ maxTelemetryEventsPerPage: number;

@@ -13,2 +13,3 @@ "use strict";

var sessionStore_1 = require("../session/sessionStore");
var trackingConsent_1 = require("../trackingConsent");
var transportConfiguration_1 = require("./transportConfiguration");

@@ -21,3 +22,3 @@ exports.DefaultPrivacyLevel = {

function validateAndBuildConfiguration(initConfiguration) {
var _a, _b, _c;
var _a, _b, _c, _d;
if (!initConfiguration || !initConfiguration.clientToken) {

@@ -40,2 +41,7 @@ display_1.display.error('Client Token is not configured, we will not send any data.');

}
if (initConfiguration.trackingConsent !== undefined &&
!(0, objectUtils_1.objectHasValue)(trackingConsent_1.TrackingConsent, initConfiguration.trackingConsent)) {
display_1.display.error('Tracking Consent should be either "granted" or "not-granted"');
return;
}
// Set the experimental feature flags as early as possible, so we can use them in most places

@@ -56,2 +62,3 @@ if (Array.isArray(initConfiguration.enableExperimentalFeatures)) {

allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,
trackingConsent: (_d = initConfiguration.trackingConsent) !== null && _d !== void 0 ? _d : trackingConsent_1.TrackingConsent.GRANTED,
/**

@@ -58,0 +65,0 @@ * beacon payload max queue size implementation is 64kb

@@ -58,3 +58,3 @@ "use strict";

var retry = _b.retry, flushReason = _b.flushReason, encoding = _b.encoding;
var tags = ["sdk_version:".concat("5.9.0"), "api:".concat(api)].concat(configurationTags);
var tags = ["sdk_version:".concat("5.10.0"), "api:".concat(api)].concat(configurationTags);
if (flushReason && (0, experimentalFeatures_1.isExperimentalFeatureEnabled)(experimentalFeatures_1.ExperimentalFeature.COLLECT_FLUSH_REASON)) {

@@ -70,3 +70,3 @@ tags.push("flush_reason:".concat(flushReason));

"dd-api-key=".concat(clientToken),
"dd-evp-origin-version=".concat(encodeURIComponent("5.9.0")),
"dd-evp-origin-version=".concat(encodeURIComponent("5.10.0")),
'dd-evp-origin=browser',

@@ -73,0 +73,0 @@ "dd-request-id=".concat((0, stringUtils_1.generateUUID)()),

import { Observable } from '../../tools/observable';
import { ConsoleApiName } from '../../tools/display';
import type { RawErrorCause } from '../error/error.types';
export interface ConsoleLog {

@@ -9,4 +10,5 @@ message: string;

fingerprint?: string;
causes?: RawErrorCause[];
}
export declare function initConsoleObservable(apis: ConsoleApiName[]): Observable<ConsoleLog>;
export declare function resetConsoleObservable(): void;

@@ -50,2 +50,3 @@ "use strict";

var fingerprint;
var causes;
if (api === display_1.ConsoleApiName.error) {

@@ -55,2 +56,3 @@ var firstErrorParam = (0, polyfills_1.find)(params, function (param) { return param instanceof Error; });

fingerprint = (0, error_1.tryToGetFingerprint)(firstErrorParam);
causes = firstErrorParam ? (0, error_1.flattenErrorCauses)(firstErrorParam, 'console') : undefined;
}

@@ -63,2 +65,3 @@ return {

fingerprint: fingerprint,
causes: causes,
};

@@ -65,0 +68,0 @@ }

@@ -11,3 +11,3 @@ "use strict";

var handleRuntimeError = function (stackTrace, originalError) {
var test = (0, error_1.computeRawError)({
var rawError = (0, error_1.computeRawError)({
stackTrace: stackTrace,

@@ -20,3 +20,3 @@ originalError: originalError,

});
errorObservable.notify(test);
errorObservable.notify(rawError);
};

@@ -23,0 +23,0 @@ var stopInstrumentingOnError = instrumentOnError(handleRuntimeError).stop;

@@ -1,5 +0,6 @@

import type { Observable } from '../../tools/observable';
import { Observable } from '../../tools/observable';
import type { Context } from '../../tools/serialisation/context';
import type { RelativeTime } from '../../tools/utils/timeUtils';
import type { Configuration } from '../configuration';
import type { TrackingConsentState } from '../trackingConsent';
export interface SessionManager<TrackingType extends string> {

@@ -19,3 +20,3 @@ findActiveSession: (startTime?: RelativeTime) => SessionContext<TrackingType> | undefined;

isTracked: boolean;
}): SessionManager<TrackingType>;
}, trackingConsentState: TrackingConsentState): SessionManager<TrackingType>;
export declare function stopSessionManager(): void;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.stopSessionManager = exports.startSessionManager = exports.VISIBILITY_CHECK_DELAY = void 0;
var observable_1 = require("../../tools/observable");
var valueHistory_1 = require("../../tools/valueHistory");

@@ -13,3 +14,5 @@ var timeUtils_1 = require("../../tools/utils/timeUtils");

var stopCallbacks = [];
function startSessionManager(configuration, productKey, computeSessionState) {
function startSessionManager(configuration, productKey, computeSessionState, trackingConsentState) {
var renewObservable = new observable_1.Observable();
var expireObservable = new observable_1.Observable();
// TODO - Improve configuration type and remove assertion

@@ -22,9 +25,25 @@ var sessionStore = (0, sessionStore_1.startSessionStore)(configuration.sessionStoreStrategyType, productKey, computeSessionState);

sessionContextHistory.add(buildSessionContext(), (0, timeUtils_1.relativeNow)());
renewObservable.notify();
});
sessionStore.expireObservable.subscribe(function () {
expireObservable.notify();
sessionContextHistory.closeActive((0, timeUtils_1.relativeNow)());
});
// We expand/renew session unconditionally as tracking consent is always granted when the session
// manager is started.
sessionStore.expandOrRenewSession();
sessionContextHistory.add(buildSessionContext(), (0, timeUtils_1.clocksOrigin)().relative);
trackActivity(configuration, function () { return sessionStore.expandOrRenewSession(); });
trackingConsentState.observable.subscribe(function () {
if (trackingConsentState.isGranted()) {
sessionStore.expandOrRenewSession();
}
else {
sessionStore.expire();
}
});
trackActivity(configuration, function () {
if (trackingConsentState.isGranted()) {
sessionStore.expandOrRenewSession();
}
});
trackVisibility(configuration, function () { return sessionStore.expandSession(); });

@@ -39,4 +58,4 @@ function buildSessionContext() {

findActiveSession: function (startTime) { return sessionContextHistory.find(startTime); },
renewObservable: sessionStore.renewObservable,
expireObservable: sessionStore.expireObservable,
renewObservable: renewObservable,
expireObservable: expireObservable,
expire: sessionStore.expire,

@@ -43,0 +62,0 @@ };

@@ -55,3 +55,3 @@ "use strict";

service: telemetryService,
version: "5.9.0",
version: "5.10.0",
source: 'browser',

@@ -58,0 +58,0 @@ _dd: {

export { Configuration, InitConfiguration, validateAndBuildConfiguration, DefaultPrivacyLevel, EndpointBuilder, serializeConfiguration, INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_US1_FED, INTAKE_SITE_EU1, } from './domain/configuration';
export { TrackingConsent, TrackingConsentState, createTrackingConsentState } from './domain/trackingConsent';
export { isExperimentalFeatureEnabled, addExperimentalFeatures, resetExperimentalFeatures, getExperimentalFeatures, ExperimentalFeature, } from './tools/experimentalFeatures';

@@ -3,0 +4,0 @@ export { trackRuntimeError } from './domain/error/trackRuntimeError';

@@ -17,4 +17,4 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.getFileFromStackTraceString = exports.toStackTraceString = exports.createHandlingStack = exports.computeRawError = exports.instrumentSetter = exports.instrumentMethod = exports.getZoneJsOriginalValue = exports.runOnReadyState = exports.sendToExtension = exports.AbstractLifeCycle = exports.createIdentityEncoder = exports.createFlushController = exports.startBatchWithReplica = exports.getEventBridge = exports.canUseEventBridge = exports.createHttpRequest = exports.SESSION_TIME_OUT_DELAY = exports.stopSessionManager = exports.startSessionManager = exports.Observable = exports.setDebugMode = exports.callMonitored = exports.monitor = exports.monitored = 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.getExperimentalFeatures = exports.resetExperimentalFeatures = exports.addExperimentalFeatures = exports.isExperimentalFeatureEnabled = exports.INTAKE_SITE_EU1 = exports.INTAKE_SITE_US1_FED = exports.INTAKE_SITE_US1 = exports.INTAKE_SITE_STAGING = exports.serializeConfiguration = exports.DefaultPrivacyLevel = exports.validateAndBuildConfiguration = void 0;
exports.ErrorSource = exports.sanitizeUser = exports.checkUser = exports.getSyntheticsResultId = exports.getSyntheticsTestId = exports.willSyntheticsInjectRum = exports.SESSION_STORE_KEY = exports.STORAGE_POLL_DELAY = exports.readBytesFromStream = exports.CLEAR_OLD_VALUES_INTERVAL = exports.ValueHistory = exports.CUSTOMER_DATA_BYTES_LIMIT = exports.createCustomerDataTracker = exports.createCustomerDataTrackerManager = exports.removeStorageListeners = exports.storeContextManager = exports.createContextManager = exports.catchUserErrors = exports.BoundedBuffer = exports.resetConsoleObservable = exports.initConsoleObservable = exports.isPageExitReason = exports.PageExitReason = exports.createPageExitObservable = exports.initFetchObservable = exports.initXhrObservable = exports.deleteCookie = exports.setCookie = exports.getCookie = exports.areCookiesAuthorized = exports.NO_ERROR_STACK_PRESENT_MESSAGE = void 0;
exports.createHandlingStack = exports.computeRawError = exports.instrumentSetter = exports.instrumentMethod = exports.getZoneJsOriginalValue = exports.runOnReadyState = exports.sendToExtension = exports.AbstractLifeCycle = exports.createIdentityEncoder = exports.createFlushController = exports.startBatchWithReplica = exports.getEventBridge = exports.canUseEventBridge = exports.createHttpRequest = exports.SESSION_TIME_OUT_DELAY = exports.stopSessionManager = exports.startSessionManager = exports.Observable = exports.setDebugMode = exports.callMonitored = exports.monitor = exports.monitored = 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.getExperimentalFeatures = exports.resetExperimentalFeatures = exports.addExperimentalFeatures = exports.isExperimentalFeatureEnabled = exports.createTrackingConsentState = exports.TrackingConsent = exports.INTAKE_SITE_EU1 = exports.INTAKE_SITE_US1_FED = exports.INTAKE_SITE_US1 = exports.INTAKE_SITE_STAGING = exports.serializeConfiguration = exports.DefaultPrivacyLevel = exports.validateAndBuildConfiguration = void 0;
exports.ErrorSource = exports.sanitizeUser = exports.checkUser = exports.getSyntheticsResultId = exports.getSyntheticsTestId = exports.willSyntheticsInjectRum = exports.SESSION_STORE_KEY = exports.STORAGE_POLL_DELAY = exports.readBytesFromStream = exports.CLEAR_OLD_VALUES_INTERVAL = exports.ValueHistory = exports.CUSTOMER_DATA_BYTES_LIMIT = exports.createCustomerDataTracker = exports.createCustomerDataTrackerManager = exports.removeStorageListeners = exports.storeContextManager = exports.createContextManager = exports.catchUserErrors = exports.BoundedBuffer = exports.resetConsoleObservable = exports.initConsoleObservable = exports.isPageExitReason = exports.PageExitReason = exports.createPageExitObservable = exports.initFetchObservable = exports.initXhrObservable = exports.deleteCookie = exports.setCookie = exports.getCookie = exports.areCookiesAuthorized = exports.NO_ERROR_STACK_PRESENT_MESSAGE = exports.getFileFromStackTraceString = exports.toStackTraceString = void 0;
var configuration_1 = require("./domain/configuration");

@@ -28,2 +28,5 @@ Object.defineProperty(exports, "validateAndBuildConfiguration", { enumerable: true, get: function () { return configuration_1.validateAndBuildConfiguration; } });

Object.defineProperty(exports, "INTAKE_SITE_EU1", { enumerable: true, get: function () { return configuration_1.INTAKE_SITE_EU1; } });
var trackingConsent_1 = require("./domain/trackingConsent");
Object.defineProperty(exports, "TrackingConsent", { enumerable: true, get: function () { return trackingConsent_1.TrackingConsent; } });
Object.defineProperty(exports, "createTrackingConsentState", { enumerable: true, get: function () { return trackingConsent_1.createTrackingConsentState; } });
var experimentalFeatures_1 = require("./tools/experimentalFeatures");

@@ -30,0 +33,0 @@ Object.defineProperty(exports, "isExperimentalFeatureEnabled", { enumerable: true, get: function () { return experimentalFeatures_1.isExperimentalFeatureEnabled; } });

@@ -17,3 +17,5 @@ /**

DISABLE_REPLAY_INLINE_CSS = "disable_replay_inline_css",
WRITABLE_RESOURCE_GRAPHQL = "writable_resource_graphql"
WRITABLE_RESOURCE_GRAPHQL = "writable_resource_graphql",
TRACKING_CONSENT = "tracking_consent",
CUSTOM_VITALS = "custom_vitals"
}

@@ -20,0 +22,0 @@ export declare function addExperimentalFeatures(enabledFeatures: ExperimentalFeature[]): void;

@@ -25,2 +25,4 @@ "use strict";

ExperimentalFeature["WRITABLE_RESOURCE_GRAPHQL"] = "writable_resource_graphql";
ExperimentalFeature["TRACKING_CONSENT"] = "tracking_consent";
ExperimentalFeature["CUSTOM_VITALS"] = "custom_vitals";
})(ExperimentalFeature || (exports.ExperimentalFeature = ExperimentalFeature = {}));

@@ -27,0 +29,0 @@ var enabledExperimentalFeatures = new Set();

@@ -80,6 +80,9 @@ "use strict";

}
var stoppedInstrumentation = functionUtils_1.noop;
var instrumentation = function (target, value) {
// put hooked setter into event loop to avoid of set latency
(0, timer_1.setTimeout)(function () {
after(target, value);
if (instrumentation !== stoppedInstrumentation) {
after(target, value);
}
}, 0);

@@ -100,5 +103,3 @@ };

}
else {
instrumentation = functionUtils_1.noop;
}
instrumentation = stoppedInstrumentation;
},

@@ -105,0 +106,0 @@ };

@@ -28,2 +28,6 @@ export declare const ONE_SECOND = 1000;

};
export declare function timeStampToClocks(timeStamp: TimeStamp): {
relative: RelativeTime;
timeStamp: TimeStamp;
};
export declare function currentDrift(): number;

@@ -30,0 +34,0 @@ export declare function toServerDuration(duration: Duration): ServerDuration;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.resetNavigationStart = exports.looksLikeRelativeTime = exports.getTimeStamp = exports.getRelativeTime = exports.addDuration = exports.elapsed = exports.clocksOrigin = exports.clocksNow = exports.relativeNow = exports.timeStampNow = exports.dateNow = exports.toServerDuration = exports.currentDrift = exports.relativeToClocks = exports.ONE_YEAR = exports.ONE_DAY = exports.ONE_HOUR = exports.ONE_MINUTE = exports.ONE_SECOND = void 0;
exports.resetNavigationStart = exports.looksLikeRelativeTime = exports.getTimeStamp = exports.getRelativeTime = exports.addDuration = exports.elapsed = exports.clocksOrigin = exports.clocksNow = exports.relativeNow = exports.timeStampNow = exports.dateNow = exports.toServerDuration = exports.currentDrift = exports.timeStampToClocks = exports.relativeToClocks = exports.ONE_YEAR = exports.ONE_DAY = exports.ONE_HOUR = exports.ONE_MINUTE = exports.ONE_SECOND = void 0;
var numberUtils_1 = require("./numberUtils");

@@ -14,2 +14,6 @@ exports.ONE_SECOND = 1000;

exports.relativeToClocks = relativeToClocks;
function timeStampToClocks(timeStamp) {
return { relative: getRelativeTime(timeStamp), timeStamp: timeStamp };
}
exports.timeStampToClocks = timeStampToClocks;
function getCorrectedTimeStamp(relativeTime) {

@@ -16,0 +20,0 @@ var correctedOrigin = (dateNow() - performance.now());

@@ -6,3 +6,3 @@ import { catchUserErrors } from '../tools/catchUserErrors';

var publicApi = assign({
version: "5.9.0",
version: "5.10.0",
// 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

import type { RawTelemetryConfiguration } from '../telemetry';
import type { Duration } from '../../tools/utils/timeUtils';
import type { SessionStoreStrategyType } from '../session/storeStrategies/sessionStoreStrategy';
import { TrackingConsent } from '../trackingConsent';
import type { TransportConfiguration } from './transportConfiguration';

@@ -20,2 +21,3 @@ export declare const DefaultPrivacyLevel: {

storeContextsAcrossPages?: boolean | undefined;
trackingConsent?: TrackingConsent | undefined;
proxy?: string | ProxyFn | undefined;

@@ -61,2 +63,3 @@ site?: string | undefined;

allowUntrustedEvents: boolean;
trackingConsent: TrackingConsent;
eventRateLimiterThreshold: number;

@@ -63,0 +66,0 @@ maxTelemetryEventsPerPage: number;

@@ -10,2 +10,3 @@ import { catchUserErrors } from '../../tools/catchUserErrors';

import { selectSessionStoreStrategyType } from '../session/sessionStore';
import { TrackingConsent } from '../trackingConsent';
import { computeTransportConfiguration } from './transportConfiguration';

@@ -18,3 +19,3 @@ export var DefaultPrivacyLevel = {

export function validateAndBuildConfiguration(initConfiguration) {
var _a, _b, _c;
var _a, _b, _c, _d;
if (!initConfiguration || !initConfiguration.clientToken) {

@@ -37,2 +38,7 @@ display.error('Client Token is not configured, we will not send any data.');

}
if (initConfiguration.trackingConsent !== undefined &&
!objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {
display.error('Tracking Consent should be either "granted" or "not-granted"');
return;
}
// Set the experimental feature flags as early as possible, so we can use them in most places

@@ -53,2 +59,3 @@ if (Array.isArray(initConfiguration.enableExperimentalFeatures)) {

allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,
trackingConsent: (_d = initConfiguration.trackingConsent) !== null && _d !== void 0 ? _d : TrackingConsent.GRANTED,
/**

@@ -55,0 +62,0 @@ * beacon payload max queue size implementation is 64kb

@@ -54,3 +54,3 @@ import { timeStampNow } from '../../tools/utils/timeUtils';

var retry = _b.retry, flushReason = _b.flushReason, encoding = _b.encoding;
var tags = ["sdk_version:".concat("5.9.0"), "api:".concat(api)].concat(configurationTags);
var tags = ["sdk_version:".concat("5.10.0"), "api:".concat(api)].concat(configurationTags);
if (flushReason && isExperimentalFeatureEnabled(ExperimentalFeature.COLLECT_FLUSH_REASON)) {

@@ -66,3 +66,3 @@ tags.push("flush_reason:".concat(flushReason));

"dd-api-key=".concat(clientToken),
"dd-evp-origin-version=".concat(encodeURIComponent("5.9.0")),
"dd-evp-origin-version=".concat(encodeURIComponent("5.10.0")),
'dd-evp-origin=browser',

@@ -69,0 +69,0 @@ "dd-request-id=".concat(generateUUID()),

import { Observable } from '../../tools/observable';
import { ConsoleApiName } from '../../tools/display';
import type { RawErrorCause } from '../error/error.types';
export interface ConsoleLog {

@@ -9,4 +10,5 @@ message: string;

fingerprint?: string;
causes?: RawErrorCause[];
}
export declare function initConsoleObservable(apis: ConsoleApiName[]): Observable<ConsoleLog>;
export declare function resetConsoleObservable(): void;

@@ -1,2 +0,2 @@

import { createHandlingStack, formatErrorMessage, toStackTraceString, tryToGetFingerprint } from '../error/error';
import { createHandlingStack, flattenErrorCauses, formatErrorMessage, toStackTraceString, tryToGetFingerprint, } from '../error/error';
import { mergeObservables, Observable } from '../../tools/observable';

@@ -45,2 +45,3 @@ import { ConsoleApiName, globalConsole } from '../../tools/display';

var fingerprint;
var causes;
if (api === ConsoleApiName.error) {

@@ -50,2 +51,3 @@ var firstErrorParam = find(params, function (param) { return param instanceof Error; });

fingerprint = tryToGetFingerprint(firstErrorParam);
causes = firstErrorParam ? flattenErrorCauses(firstErrorParam, 'console') : undefined;
}

@@ -58,2 +60,3 @@ return {

fingerprint: fingerprint,
causes: causes,
};

@@ -60,0 +63,0 @@ }

@@ -8,3 +8,3 @@ import { instrumentMethod } from '../../tools/instrumentMethod';

var handleRuntimeError = function (stackTrace, originalError) {
var test = computeRawError({
var rawError = computeRawError({
stackTrace: stackTrace,

@@ -17,3 +17,3 @@ originalError: originalError,

});
errorObservable.notify(test);
errorObservable.notify(rawError);
};

@@ -20,0 +20,0 @@ var stopInstrumentingOnError = instrumentOnError(handleRuntimeError).stop;

@@ -1,5 +0,6 @@

import type { Observable } from '../../tools/observable';
import { Observable } from '../../tools/observable';
import type { Context } from '../../tools/serialisation/context';
import type { RelativeTime } from '../../tools/utils/timeUtils';
import type { Configuration } from '../configuration';
import type { TrackingConsentState } from '../trackingConsent';
export interface SessionManager<TrackingType extends string> {

@@ -19,3 +20,3 @@ findActiveSession: (startTime?: RelativeTime) => SessionContext<TrackingType> | undefined;

isTracked: boolean;
}): SessionManager<TrackingType>;
}, trackingConsentState: TrackingConsentState): SessionManager<TrackingType>;
export declare function stopSessionManager(): void;

@@ -0,1 +1,2 @@

import { Observable } from '../../tools/observable';
import { ValueHistory } from '../../tools/valueHistory';

@@ -10,3 +11,5 @@ import { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils';

var stopCallbacks = [];
export function startSessionManager(configuration, productKey, computeSessionState) {
export function startSessionManager(configuration, productKey, computeSessionState, trackingConsentState) {
var renewObservable = new Observable();
var expireObservable = new Observable();
// TODO - Improve configuration type and remove assertion

@@ -19,9 +22,25 @@ var sessionStore = startSessionStore(configuration.sessionStoreStrategyType, productKey, computeSessionState);

sessionContextHistory.add(buildSessionContext(), relativeNow());
renewObservable.notify();
});
sessionStore.expireObservable.subscribe(function () {
expireObservable.notify();
sessionContextHistory.closeActive(relativeNow());
});
// We expand/renew session unconditionally as tracking consent is always granted when the session
// manager is started.
sessionStore.expandOrRenewSession();
sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);
trackActivity(configuration, function () { return sessionStore.expandOrRenewSession(); });
trackingConsentState.observable.subscribe(function () {
if (trackingConsentState.isGranted()) {
sessionStore.expandOrRenewSession();
}
else {
sessionStore.expire();
}
});
trackActivity(configuration, function () {
if (trackingConsentState.isGranted()) {
sessionStore.expandOrRenewSession();
}
});
trackVisibility(configuration, function () { return sessionStore.expandSession(); });

@@ -36,4 +55,4 @@ function buildSessionContext() {

findActiveSession: function (startTime) { return sessionContextHistory.find(startTime); },
renewObservable: sessionStore.renewObservable,
expireObservable: sessionStore.expireObservable,
renewObservable: renewObservable,
expireObservable: expireObservable,
expire: sessionStore.expire,

@@ -40,0 +59,0 @@ };

@@ -52,3 +52,3 @@ import { ConsoleApiName } from '../../tools/display';

service: telemetryService,
version: "5.9.0",
version: "5.10.0",
source: 'browser',

@@ -55,0 +55,0 @@ _dd: {

export { Configuration, InitConfiguration, validateAndBuildConfiguration, DefaultPrivacyLevel, EndpointBuilder, serializeConfiguration, INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_US1_FED, INTAKE_SITE_EU1, } from './domain/configuration';
export { TrackingConsent, TrackingConsentState, createTrackingConsentState } from './domain/trackingConsent';
export { isExperimentalFeatureEnabled, addExperimentalFeatures, resetExperimentalFeatures, getExperimentalFeatures, ExperimentalFeature, } from './tools/experimentalFeatures';

@@ -3,0 +4,0 @@ export { trackRuntimeError } from './domain/error/trackRuntimeError';

export { validateAndBuildConfiguration, DefaultPrivacyLevel, serializeConfiguration, INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_US1_FED, INTAKE_SITE_EU1, } from './domain/configuration';
export { TrackingConsent, createTrackingConsentState } from './domain/trackingConsent';
export { isExperimentalFeatureEnabled, addExperimentalFeatures, resetExperimentalFeatures, getExperimentalFeatures, ExperimentalFeature, } from './tools/experimentalFeatures';

@@ -3,0 +4,0 @@ export { trackRuntimeError } from './domain/error/trackRuntimeError';

@@ -17,3 +17,5 @@ /**

DISABLE_REPLAY_INLINE_CSS = "disable_replay_inline_css",
WRITABLE_RESOURCE_GRAPHQL = "writable_resource_graphql"
WRITABLE_RESOURCE_GRAPHQL = "writable_resource_graphql",
TRACKING_CONSENT = "tracking_consent",
CUSTOM_VITALS = "custom_vitals"
}

@@ -20,0 +22,0 @@ export declare function addExperimentalFeatures(enabledFeatures: ExperimentalFeature[]): void;

@@ -22,2 +22,4 @@ /**

ExperimentalFeature["WRITABLE_RESOURCE_GRAPHQL"] = "writable_resource_graphql";
ExperimentalFeature["TRACKING_CONSENT"] = "tracking_consent";
ExperimentalFeature["CUSTOM_VITALS"] = "custom_vitals";
})(ExperimentalFeature || (ExperimentalFeature = {}));

@@ -24,0 +26,0 @@ var enabledExperimentalFeatures = new Set();

@@ -76,6 +76,9 @@ import { setTimeout } from './timer';

}
var stoppedInstrumentation = noop;
var instrumentation = function (target, value) {
// put hooked setter into event loop to avoid of set latency
setTimeout(function () {
after(target, value);
if (instrumentation !== stoppedInstrumentation) {
after(target, value);
}
}, 0);

@@ -96,5 +99,3 @@ };

}
else {
instrumentation = noop;
}
instrumentation = stoppedInstrumentation;
},

@@ -101,0 +102,0 @@ };

@@ -28,2 +28,6 @@ export declare const ONE_SECOND = 1000;

};
export declare function timeStampToClocks(timeStamp: TimeStamp): {
relative: RelativeTime;
timeStamp: TimeStamp;
};
export declare function currentDrift(): number;

@@ -30,0 +34,0 @@ export declare function toServerDuration(duration: Duration): ServerDuration;

@@ -10,2 +10,5 @@ import { isNumber, round } from './numberUtils';

}
export function timeStampToClocks(timeStamp) {
return { relative: getRelativeTime(timeStamp), timeStamp: timeStamp };
}
function getCorrectedTimeStamp(relativeTime) {

@@ -12,0 +15,0 @@ var correctedOrigin = (dateNow() - performance.now());

{
"name": "@datadog/browser-core",
"version": "5.9.0",
"version": "5.10.0",
"license": "Apache-2.0",

@@ -26,3 +26,3 @@ "main": "cjs/index.js",

},
"gitHead": "465eecbc937d9ee15e2f0c03c5c574fe3e909aed"
"gitHead": "406566926cdbe6d4534be5a9774b973cb210d5e9"
}

@@ -13,2 +13,3 @@ import { catchUserErrors } from '../../tools/catchUserErrors'

import type { SessionStoreStrategyType } from '../session/storeStrategies/sessionStoreStrategy'
import { TrackingConsent } from '../trackingConsent'
import type { TransportConfiguration } from './transportConfiguration'

@@ -34,2 +35,3 @@ import { computeTransportConfiguration } from './transportConfiguration'

storeContextsAcrossPages?: boolean | undefined
trackingConsent?: TrackingConsent | undefined

@@ -89,2 +91,3 @@ // transport options

allowUntrustedEvents: boolean
trackingConsent: TrackingConsent

@@ -126,2 +129,10 @@ // Event limits

if (
initConfiguration.trackingConsent !== undefined &&
!objectHasValue(TrackingConsent, initConfiguration.trackingConsent)
) {
display.error('Tracking Consent should be either "granted" or "not-granted"')
return
}
// Set the experimental feature flags as early as possible, so we can use them in most places

@@ -147,2 +158,3 @@ if (Array.isArray(initConfiguration.enableExperimentalFeatures)) {

allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,
trackingConsent: initConfiguration.trackingConsent ?? TrackingConsent.GRANTED,

@@ -149,0 +161,0 @@ /**

@@ -1,2 +0,8 @@

import { createHandlingStack, formatErrorMessage, toStackTraceString, tryToGetFingerprint } from '../error/error'
import {
createHandlingStack,
flattenErrorCauses,
formatErrorMessage,
toStackTraceString,
tryToGetFingerprint,
} from '../error/error'
import { mergeObservables, Observable } from '../../tools/observable'

@@ -9,2 +15,3 @@ import { ConsoleApiName, globalConsole } from '../../tools/display'

import { computeStackTrace } from '../error/computeStackTrace'
import type { RawErrorCause } from '../error/error.types'

@@ -17,2 +24,3 @@ export interface ConsoleLog {

fingerprint?: string
causes?: RawErrorCause[]
}

@@ -60,2 +68,3 @@

let fingerprint
let causes

@@ -66,2 +75,3 @@ if (api === ConsoleApiName.error) {

fingerprint = tryToGetFingerprint(firstErrorParam)
causes = firstErrorParam ? flattenErrorCauses(firstErrorParam, 'console') : undefined
}

@@ -75,2 +85,3 @@

fingerprint,
causes,
}

@@ -77,0 +88,0 @@ }

@@ -14,3 +14,3 @@ import { instrumentMethod } from '../../tools/instrumentMethod'

const handleRuntimeError = (stackTrace: StackTrace, originalError?: any) => {
const test = computeRawError({
const rawError = computeRawError({
stackTrace,

@@ -23,3 +23,3 @@ originalError,

})
errorObservable.notify(test)
errorObservable.notify(rawError)
}

@@ -26,0 +26,0 @@ const { stop: stopInstrumentingOnError } = instrumentOnError(handleRuntimeError)

@@ -1,2 +0,2 @@

import type { Observable } from '../../tools/observable'
import { Observable } from '../../tools/observable'
import type { Context } from '../../tools/serialisation/context'

@@ -9,2 +9,3 @@ import { ValueHistory } from '../../tools/valueHistory'

import type { Configuration } from '../configuration'
import type { TrackingConsentState } from '../trackingConsent'
import { SESSION_TIME_OUT_DELAY } from './sessionConstants'

@@ -32,4 +33,8 @@ import { startSessionStore } from './sessionStore'

productKey: string,
computeSessionState: (rawTrackingType?: string) => { trackingType: TrackingType; isTracked: boolean }
computeSessionState: (rawTrackingType?: string) => { trackingType: TrackingType; isTracked: boolean },
trackingConsentState: TrackingConsentState
): SessionManager<TrackingType> {
const renewObservable = new Observable<void>()
const expireObservable = new Observable<void>()
// TODO - Improve configuration type and remove assertion

@@ -44,11 +49,27 @@ const sessionStore = startSessionStore(configuration.sessionStoreStrategyType!, productKey, computeSessionState)

sessionContextHistory.add(buildSessionContext(), relativeNow())
renewObservable.notify()
})
sessionStore.expireObservable.subscribe(() => {
expireObservable.notify()
sessionContextHistory.closeActive(relativeNow())
})
// We expand/renew session unconditionally as tracking consent is always granted when the session
// manager is started.
sessionStore.expandOrRenewSession()
sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)
trackActivity(configuration, () => sessionStore.expandOrRenewSession())
trackingConsentState.observable.subscribe(() => {
if (trackingConsentState.isGranted()) {
sessionStore.expandOrRenewSession()
} else {
sessionStore.expire()
}
})
trackActivity(configuration, () => {
if (trackingConsentState.isGranted()) {
sessionStore.expandOrRenewSession()
}
})
trackVisibility(configuration, () => sessionStore.expandSession())

@@ -65,4 +86,4 @@

findActiveSession: (startTime) => sessionContextHistory.find(startTime),
renewObservable: sessionStore.renewObservable,
expireObservable: sessionStore.expireObservable,
renewObservable,
expireObservable,
expire: sessionStore.expire,

@@ -69,0 +90,0 @@ }

@@ -13,2 +13,3 @@ export {

} from './domain/configuration'
export { TrackingConsent, TrackingConsentState, createTrackingConsentState } from './domain/trackingConsent'
export {

@@ -15,0 +16,0 @@ isExperimentalFeatureEnabled,

@@ -21,2 +21,4 @@ /**

WRITABLE_RESOURCE_GRAPHQL = 'writable_resource_graphql',
TRACKING_CONSENT = 'tracking_consent',
CUSTOM_VITALS = 'custom_vitals',
}

@@ -23,0 +25,0 @@

@@ -128,6 +128,9 @@ import { setTimeout } from './timer'

const stoppedInstrumentation = noop
let instrumentation = (target: TARGET, value: TARGET[PROPERTY]) => {
// put hooked setter into event loop to avoid of set latency
setTimeout(() => {
after(target, value)
if (instrumentation !== stoppedInstrumentation) {
after(target, value)
}
}, 0)

@@ -149,7 +152,6 @@ }

Object.defineProperty(targetPrototype, property, originalDescriptor)
} else {
instrumentation = noop
}
instrumentation = stoppedInstrumentation
},
}
}

@@ -19,2 +19,6 @@ import { isNumber, round } from './numberUtils'

export function timeStampToClocks(timeStamp: TimeStamp) {
return { relative: getRelativeTime(timeStamp), timeStamp }
}
function getCorrectedTimeStamp(relativeTime: RelativeTime) {

@@ -21,0 +25,0 @@ const correctedOrigin = (dateNow() - performance.now()) as TimeStamp

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

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

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc