@datadog/browser-core
Advanced tools
Comparing version 4.11.5 to 4.12.0
@@ -9,3 +9,3 @@ "use strict"; | ||
var publicApi = (0, utils_1.assign)({ | ||
version: "4.11.5", | ||
version: "4.12.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 |
@@ -28,5 +28,5 @@ "use strict"; | ||
var parameters = 'ddsource=browser' + | ||
"&ddtags=".concat(encodeURIComponent(["sdk_version:".concat("4.11.5")].concat(tags).join(','))) + | ||
"&ddtags=".concat(encodeURIComponent(["sdk_version:".concat("4.12.0")].concat(tags).join(','))) + | ||
"&dd-api-key=".concat(clientToken) + | ||
"&dd-evp-origin-version=".concat(encodeURIComponent("4.11.5")) + | ||
"&dd-evp-origin-version=".concat(encodeURIComponent("4.12.0")) + | ||
'&dd-evp-origin=browser' + | ||
@@ -33,0 +33,0 @@ "&dd-request-id=".concat((0, utils_1.generateUUID)()); |
@@ -30,2 +30,3 @@ "use strict"; | ||
var monitor_1 = require("../../tools/monitor"); | ||
var timeUtils_1 = require("../../tools/timeUtils"); | ||
var utils = __importStar(require("../../tools/utils")); | ||
@@ -131,3 +132,3 @@ var sessionConstants_1 = require("./sessionConstants"); | ||
} | ||
session.expire = String(Date.now() + sessionConstants_1.SESSION_EXPIRATION_DELAY); | ||
session.expire = String((0, timeUtils_1.dateNow)() + sessionConstants_1.SESSION_EXPIRATION_DELAY); | ||
setSession(session, options); | ||
@@ -134,0 +135,0 @@ } |
@@ -30,2 +30,3 @@ "use strict"; | ||
var observable_1 = require("../../tools/observable"); | ||
var timeUtils_1 = require("../../tools/timeUtils"); | ||
var utils = __importStar(require("../../tools/utils")); | ||
@@ -99,3 +100,3 @@ var sessionConstants_1 = require("./sessionConstants"); | ||
cookieSession.id = utils.generateUUID(); | ||
cookieSession.created = String(Date.now()); | ||
cookieSession.created = String((0, timeUtils_1.dateNow)()); | ||
} | ||
@@ -128,4 +129,4 @@ return isTracked; | ||
// these checks could be removed when older versions will not be available/live anymore | ||
return ((session.created === undefined || Date.now() - Number(session.created) < sessionConstants_1.SESSION_TIME_OUT_DELAY) && | ||
(session.expire === undefined || Date.now() < Number(session.expire))); | ||
return ((session.created === undefined || (0, timeUtils_1.dateNow)() - Number(session.created) < sessionConstants_1.SESSION_TIME_OUT_DELAY) && | ||
(session.expire === undefined || (0, timeUtils_1.dateNow)() < Number(session.expire))); | ||
} | ||
@@ -132,0 +133,0 @@ return { |
@@ -40,3 +40,3 @@ "use strict"; | ||
service: 'browser-sdk', | ||
version: "4.11.5", | ||
version: "4.12.0", | ||
source: 'browser', | ||
@@ -43,0 +43,0 @@ _dd: { |
@@ -26,2 +26,3 @@ export declare type Duration = number & { | ||
export declare function toServerDuration(duration: Duration | undefined): ServerDuration | undefined; | ||
export declare function dateNow(): number; | ||
export declare function timeStampNow(): TimeStamp; | ||
@@ -28,0 +29,0 @@ export declare function relativeNow(): RelativeTime; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.resetNavigationStart = exports.looksLikeRelativeTime = exports.getTimeStamp = exports.getRelativeTime = exports.elapsed = exports.clocksOrigin = exports.clocksNow = exports.relativeNow = exports.timeStampNow = exports.toServerDuration = exports.currentDrift = exports.relativeToClocks = void 0; | ||
exports.resetNavigationStart = exports.looksLikeRelativeTime = exports.getTimeStamp = exports.getRelativeTime = exports.elapsed = exports.clocksOrigin = exports.clocksNow = exports.relativeNow = exports.timeStampNow = exports.dateNow = exports.toServerDuration = exports.currentDrift = exports.relativeToClocks = void 0; | ||
var utils_1 = require("./utils"); | ||
@@ -10,3 +10,3 @@ function relativeToClocks(relative) { | ||
function getCorrectedTimeStamp(relativeTime) { | ||
var correctedOrigin = Date.now() - performance.now(); | ||
var correctedOrigin = dateNow() - performance.now(); | ||
// apply correction only for positive drift | ||
@@ -21,3 +21,3 @@ if (correctedOrigin > getNavigationStart()) { | ||
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands | ||
return Math.round(Date.now() - (getNavigationStart() + performance.now())); | ||
return Math.round(dateNow() - (getNavigationStart() + performance.now())); | ||
} | ||
@@ -32,4 +32,13 @@ exports.currentDrift = currentDrift; | ||
exports.toServerDuration = toServerDuration; | ||
function dateNow() { | ||
// Do not use `Date.now` because sometimes websites are wrongly "polyfilling" it. For example, we | ||
// had some users using a very old version of `datejs`, which patched `Date.now` to return a Date | ||
// instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this | ||
// case ourselves. | ||
// [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16 | ||
return new Date().getTime(); | ||
} | ||
exports.dateNow = dateNow; | ||
function timeStampNow() { | ||
return Date.now(); | ||
return dateNow(); | ||
} | ||
@@ -36,0 +45,0 @@ exports.timeStampNow = timeStampNow; |
@@ -35,3 +35,3 @@ "use strict"; | ||
var messages = this.pushOnlyBuffer.concat((0, utils_1.objectValues)(this.upsertBuffer)); | ||
this.request.send(messages.join('\n'), this.bufferBytesCount, reason); | ||
var bytesCount = this.bufferBytesCount; | ||
this.pushOnlyBuffer = []; | ||
@@ -41,2 +41,3 @@ this.upsertBuffer = {}; | ||
this.bufferMessagesCount = 0; | ||
this.request.send(messages.join('\n'), bytesCount, reason); | ||
} | ||
@@ -43,0 +44,0 @@ }; |
@@ -22,3 +22,3 @@ "use strict"; | ||
endpointType: endpointType, | ||
version: "4.11.5", | ||
version: "4.12.0", | ||
connection: navigator.connection ? navigator.connection.effectiveType : undefined, | ||
@@ -25,0 +25,0 @@ onLine: navigator.onLine, |
@@ -6,3 +6,3 @@ import { catchUserErrors } from '../tools/catchUserErrors'; | ||
var publicApi = assign({ | ||
version: "4.11.5", | ||
version: "4.12.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 |
@@ -25,5 +25,5 @@ import { timeStampNow } from '../../tools/timeUtils'; | ||
var parameters = 'ddsource=browser' + | ||
"&ddtags=".concat(encodeURIComponent(["sdk_version:".concat("4.11.5")].concat(tags).join(','))) + | ||
"&ddtags=".concat(encodeURIComponent(["sdk_version:".concat("4.12.0")].concat(tags).join(','))) + | ||
"&dd-api-key=".concat(clientToken) + | ||
"&dd-evp-origin-version=".concat(encodeURIComponent("4.11.5")) + | ||
"&dd-evp-origin-version=".concat(encodeURIComponent("4.12.0")) + | ||
'&dd-evp-origin=browser' + | ||
@@ -30,0 +30,0 @@ "&dd-request-id=".concat(generateUUID()); |
import { getCookie, setCookie } from '../../browser/cookie'; | ||
import { isChromium } from '../../tools/browserDetection'; | ||
import { monitor } from '../../tools/monitor'; | ||
import { dateNow } from '../../tools/timeUtils'; | ||
import * as utils from '../../tools/utils'; | ||
@@ -103,3 +104,3 @@ import { SESSION_EXPIRATION_DELAY } from './sessionConstants'; | ||
} | ||
session.expire = String(Date.now() + SESSION_EXPIRATION_DELAY); | ||
session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY); | ||
setSession(session, options); | ||
@@ -106,0 +107,0 @@ } |
import { COOKIE_ACCESS_DELAY } from '../../browser/cookie'; | ||
import { monitor } from '../../tools/monitor'; | ||
import { Observable } from '../../tools/observable'; | ||
import { dateNow } from '../../tools/timeUtils'; | ||
import * as utils from '../../tools/utils'; | ||
@@ -72,3 +73,3 @@ import { SESSION_TIME_OUT_DELAY } from './sessionConstants'; | ||
cookieSession.id = utils.generateUUID(); | ||
cookieSession.created = String(Date.now()); | ||
cookieSession.created = String(dateNow()); | ||
} | ||
@@ -101,4 +102,4 @@ return isTracked; | ||
// these checks could be removed when older versions will not be available/live anymore | ||
return ((session.created === undefined || Date.now() - Number(session.created) < SESSION_TIME_OUT_DELAY) && | ||
(session.expire === undefined || Date.now() < Number(session.expire))); | ||
return ((session.created === undefined || dateNow() - Number(session.created) < SESSION_TIME_OUT_DELAY) && | ||
(session.expire === undefined || dateNow() < Number(session.expire))); | ||
} | ||
@@ -105,0 +106,0 @@ return { |
@@ -37,3 +37,3 @@ import { ConsoleApiName } from '../../tools/display'; | ||
service: 'browser-sdk', | ||
version: "4.11.5", | ||
version: "4.12.0", | ||
source: 'browser', | ||
@@ -40,0 +40,0 @@ _dd: { |
@@ -26,2 +26,3 @@ export declare type Duration = number & { | ||
export declare function toServerDuration(duration: Duration | undefined): ServerDuration | undefined; | ||
export declare function dateNow(): number; | ||
export declare function timeStampNow(): TimeStamp; | ||
@@ -28,0 +29,0 @@ export declare function relativeNow(): RelativeTime; |
@@ -6,3 +6,3 @@ import { isNumber, ONE_YEAR, round } from './utils'; | ||
function getCorrectedTimeStamp(relativeTime) { | ||
var correctedOrigin = Date.now() - performance.now(); | ||
var correctedOrigin = dateNow() - performance.now(); | ||
// apply correction only for positive drift | ||
@@ -17,3 +17,3 @@ if (correctedOrigin > getNavigationStart()) { | ||
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands | ||
return Math.round(Date.now() - (getNavigationStart() + performance.now())); | ||
return Math.round(dateNow() - (getNavigationStart() + performance.now())); | ||
} | ||
@@ -26,4 +26,12 @@ export function toServerDuration(duration) { | ||
} | ||
export function dateNow() { | ||
// Do not use `Date.now` because sometimes websites are wrongly "polyfilling" it. For example, we | ||
// had some users using a very old version of `datejs`, which patched `Date.now` to return a Date | ||
// instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this | ||
// case ourselves. | ||
// [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16 | ||
return new Date().getTime(); | ||
} | ||
export function timeStampNow() { | ||
return Date.now(); | ||
return dateNow(); | ||
} | ||
@@ -30,0 +38,0 @@ export function relativeNow() { |
@@ -32,3 +32,3 @@ import { display } from '../tools/display'; | ||
var messages = this.pushOnlyBuffer.concat(objectValues(this.upsertBuffer)); | ||
this.request.send(messages.join('\n'), this.bufferBytesCount, reason); | ||
var bytesCount = this.bufferBytesCount; | ||
this.pushOnlyBuffer = []; | ||
@@ -38,2 +38,3 @@ this.upsertBuffer = {}; | ||
this.bufferMessagesCount = 0; | ||
this.request.send(messages.join('\n'), bytesCount, reason); | ||
} | ||
@@ -40,0 +41,0 @@ }; |
@@ -18,3 +18,3 @@ import { isExperimentalFeatureEnabled } from '../domain/configuration'; | ||
endpointType: endpointType, | ||
version: "4.11.5", | ||
version: "4.12.0", | ||
connection: navigator.connection ? navigator.connection.effectiveType : undefined, | ||
@@ -21,0 +21,0 @@ onLine: navigator.onLine, |
{ | ||
"name": "@datadog/browser-core", | ||
"version": "4.11.5", | ||
"version": "4.12.0", | ||
"license": "Apache-2.0", | ||
@@ -24,3 +24,3 @@ "main": "cjs/index.js", | ||
}, | ||
"gitHead": "155ee47fea83d0e3437a091013f610c8da99de4a" | ||
"gitHead": "fac5b785d91bc14ba286614924aa9b2b322fb7ac" | ||
} |
@@ -5,2 +5,3 @@ import type { CookieOptions } from '../../browser/cookie' | ||
import { monitor } from '../../tools/monitor' | ||
import { dateNow } from '../../tools/timeUtils' | ||
import * as utils from '../../tools/utils' | ||
@@ -122,3 +123,3 @@ import { SESSION_EXPIRATION_DELAY } from './sessionConstants' | ||
} | ||
session.expire = String(Date.now() + SESSION_EXPIRATION_DELAY) | ||
session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY) | ||
setSession(session, options) | ||
@@ -125,0 +126,0 @@ } |
@@ -5,2 +5,3 @@ import type { CookieOptions } from '../../browser/cookie' | ||
import { Observable } from '../../tools/observable' | ||
import { dateNow } from '../../tools/timeUtils' | ||
import * as utils from '../../tools/utils' | ||
@@ -102,3 +103,3 @@ import { SESSION_TIME_OUT_DELAY } from './sessionConstants' | ||
cookieSession.id = utils.generateUUID() | ||
cookieSession.created = String(Date.now()) | ||
cookieSession.created = String(dateNow()) | ||
} | ||
@@ -138,4 +139,4 @@ return isTracked | ||
return ( | ||
(session.created === undefined || Date.now() - Number(session.created) < SESSION_TIME_OUT_DELAY) && | ||
(session.expire === undefined || Date.now() < Number(session.expire)) | ||
(session.created === undefined || dateNow() - Number(session.created) < SESSION_TIME_OUT_DELAY) && | ||
(session.expire === undefined || dateNow() < Number(session.expire)) | ||
) | ||
@@ -142,0 +143,0 @@ } |
@@ -14,3 +14,3 @@ import { isNumber, ONE_YEAR, round } from './utils' | ||
function getCorrectedTimeStamp(relativeTime: RelativeTime) { | ||
const correctedOrigin = Date.now() - performance.now() | ||
const correctedOrigin = dateNow() - performance.now() | ||
// apply correction only for positive drift | ||
@@ -26,3 +26,3 @@ if (correctedOrigin > getNavigationStart()) { | ||
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands | ||
return Math.round(Date.now() - (getNavigationStart() + performance.now())) | ||
return Math.round(dateNow() - (getNavigationStart() + performance.now())) | ||
} | ||
@@ -39,4 +39,13 @@ | ||
export function dateNow() { | ||
// Do not use `Date.now` because sometimes websites are wrongly "polyfilling" it. For example, we | ||
// had some users using a very old version of `datejs`, which patched `Date.now` to return a Date | ||
// instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this | ||
// case ourselves. | ||
// [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16 | ||
return new Date().getTime() | ||
} | ||
export function timeStampNow() { | ||
return Date.now() as TimeStamp | ||
return dateNow() as TimeStamp | ||
} | ||
@@ -43,0 +52,0 @@ |
@@ -153,2 +153,19 @@ /* eslint-disable @typescript-eslint/unbound-method */ | ||
}) | ||
it('should be able to use telemetry in the httpRequest.send', () => { | ||
const fakeRequest = { | ||
send(data: string) { | ||
addTelemetryDebugFake() | ||
transport.send(data, BATCH_BYTES_LIMIT) | ||
}, | ||
} as unknown as HttpRequest | ||
const batch = new Batch(fakeRequest, BATCH_MESSAGES_LIMIT, BATCH_BYTES_LIMIT, MESSAGE_BYTES_LIMIT, FLUSH_TIMEOUT) | ||
const addTelemetryDebugFake = () => batch.add({ message: 'telemetry message' }) | ||
batch.add({ message: 'normal message' }) | ||
batch.flush() | ||
expect(transport.send).toHaveBeenCalledTimes(1) | ||
batch.flush() | ||
expect(transport.send).toHaveBeenCalledTimes(2) | ||
}) | ||
}) |
@@ -40,3 +40,4 @@ import { display } from '../tools/display' | ||
const messages = this.pushOnlyBuffer.concat(objectValues(this.upsertBuffer)) | ||
this.request.send(messages.join('\n'), this.bufferBytesCount, reason) | ||
const bytesCount = this.bufferBytesCount | ||
this.pushOnlyBuffer = [] | ||
@@ -46,2 +47,4 @@ this.upsertBuffer = {} | ||
this.bufferMessagesCount = 0 | ||
this.request.send(messages.join('\n'), bytesCount, reason) | ||
} | ||
@@ -48,0 +51,0 @@ } |
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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
16417
828228
387