Socket
Socket
Sign inDemoInstall

@datadog/browser-core

Package Overview
Dependencies
Maintainers
1
Versions
254
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@datadog/browser-core - npm Package Compare versions

Comparing version 1.14.0 to 1.14.1

cjs/fetchProxy.d.ts

12

cjs/errorCollection.d.ts
import { Configuration } from './configuration';
import { Observable } from './observable';
import { RequestCompleteEvent } from './requestCollection';
import { StackTrace } from './tracekit';

@@ -49,2 +48,11 @@ export interface ErrorMessage {

export declare function toStackTraceString(stack: StackTrace): string;
export declare function trackNetworkError(configuration: Configuration, errorObservable: ErrorObservable, requestObservable: Observable<RequestCompleteEvent>): void;
export declare function trackNetworkError(configuration: Configuration, errorObservable: ErrorObservable): {
stop(): void;
};
export declare function isRejected(request: {
status: number;
responseType?: string;
}): boolean;
export declare function isServerError(request: {
status: number;
}): boolean;

34

cjs/errorCollection.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var fetchProxy_1 = require("./fetchProxy");
var internalMonitoring_1 = require("./internalMonitoring");
var observable_1 = require("./observable");
var requestCollection_1 = require("./requestCollection");
var tracekit_1 = require("./tracekit");
var utils_1 = require("./utils");
var xhrProxy_1 = require("./xhrProxy");
var ErrorOrigin;

@@ -22,4 +23,3 @@ (function (ErrorOrigin) {

if (configuration.isCollectingError) {
var _a = requestCollection_1.startRequestCollection(), requestCompleteObservable = _a[1];
trackNetworkError(configuration, errorObservable, requestCompleteObservable);
trackNetworkError(configuration, errorObservable);
startConsoleTracking(errorObservable);

@@ -141,5 +141,7 @@ startRuntimeErrorTracking(errorObservable);

exports.toStackTraceString = toStackTraceString;
function trackNetworkError(configuration, errorObservable, requestObservable) {
requestObservable.subscribe(function (request) {
if (requestCollection_1.isRejected(request) || requestCollection_1.isServerError(request)) {
function trackNetworkError(configuration, errorObservable) {
xhrProxy_1.startXhrProxy().onRequestComplete(function (context) { return handleCompleteRequest(utils_1.RequestType.XHR, context); });
fetchProxy_1.startFetchProxy().onRequestComplete(function (context) { return handleCompleteRequest(utils_1.RequestType.FETCH, context); });
function handleCompleteRequest(type, request) {
if (isRejected(request) || isServerError(request)) {
errorObservable.notify({

@@ -157,9 +159,23 @@ context: {

},
message: format(request.type) + " error " + request.method + " " + request.url,
message: format(type) + " error " + request.method + " " + request.url,
startTime: request.startTime,
});
}
});
}
return {
stop: function () {
xhrProxy_1.resetXhrProxy();
fetchProxy_1.resetFetchProxy();
},
};
}
exports.trackNetworkError = trackNetworkError;
function isRejected(request) {
return request.status === 0 && request.responseType !== 'opaque';
}
exports.isRejected = isRejected;
function isServerError(request) {
return request.status >= 500;
}
exports.isServerError = isServerError;
function truncateResponse(response, configuration) {

@@ -172,3 +188,3 @@ if (response && response.length > configuration.requestErrorResponseLengthLimit) {

function format(type) {
if (requestCollection_1.RequestType.XHR === type) {
if (utils_1.RequestType.XHR === type) {
return 'XHR';

@@ -175,0 +191,0 @@ }

@@ -6,3 +6,2 @@ export { DEFAULT_CONFIGURATION, Configuration, UserConfiguration } from './configuration';

export { Observable } from './observable';
export { RequestType, RequestCompleteEvent, RequestStartEvent, startRequestCollection, RequestObservables, } from './requestCollection';
export { startSessionManagement, SESSION_TIME_OUT_DELAY, SESSION_COOKIE_NAME, stopSessionManagement, } from './sessionManagement';

@@ -13,2 +12,4 @@ export { HttpRequest, Batch } from './transport';

export { areCookiesAuthorized, getCookie, setCookie, COOKIE_ACCESS_DELAY } from './cookie';
export { startXhrProxy, XhrContext, XhrProxy } from './xhrProxy';
export { startFetchProxy, FetchContext, FetchProxy } from './fetchProxy';
export * from './specHelper';

@@ -23,5 +23,2 @@ "use strict";

exports.Observable = observable_1.Observable;
var requestCollection_1 = require("./requestCollection");
exports.RequestType = requestCollection_1.RequestType;
exports.startRequestCollection = requestCollection_1.startRequestCollection;
var sessionManagement_1 = require("./sessionManagement");

@@ -43,3 +40,7 @@ exports.startSessionManagement = sessionManagement_1.startSessionManagement;

exports.COOKIE_ACCESS_DELAY = cookie_1.COOKIE_ACCESS_DELAY;
var xhrProxy_1 = require("./xhrProxy");
exports.startXhrProxy = xhrProxy_1.startXhrProxy;
var fetchProxy_1 = require("./fetchProxy");
exports.startFetchProxy = fetchProxy_1.startFetchProxy;
tslib_1.__exportStar(require("./specHelper"), exports);
//# sourceMappingURL=index.js.map
import { Configuration } from './configuration';
import { RequestCompleteEvent, RequestObservables } from './requestCollection';
export declare const SPEC_ENDPOINTS: Partial<Configuration>;

@@ -8,9 +7,7 @@ export declare function isSafari(): boolean;

export declare function clearAllCookies(): void;
export declare class FetchStubBuilder {
private requests;
private whenAllCompleteFn;
constructor([requestStartObservable, requestCompleteObservable]: RequestObservables);
whenAllComplete(onCompleteFn: (_: RequestCompleteEvent[]) => void): void;
getStub(): FetchStub;
export interface FetchStubManager {
reset: () => void;
whenAllComplete: (callback: () => void) => void;
}
export declare function stubFetch(): FetchStubManager;
export interface ResponseStub extends Partial<Response> {

@@ -31,3 +28,7 @@ responseText?: string;

}
export declare function withXhr({ setup, onComplete, }: {
setup: (xhr: XMLHttpRequest) => void;
onComplete: (xhr: XMLHttpRequest) => void;
}): void;
export declare function setPageVisibility(visibility: 'visible' | 'hidden'): void;
export declare function restorePageVisibility(): void;

@@ -29,62 +29,63 @@ "use strict";

exports.clearAllCookies = clearAllCookies;
var FetchStubBuilder = /** @class */ (function () {
function FetchStubBuilder(_a) {
var _this = this;
var requestStartObservable = _a[0], requestCompleteObservable = _a[1];
this.requests = [];
this.whenAllCompleteFn = utils_1.noop;
var pendingFetch = 0;
requestStartObservable.subscribe(function () {
pendingFetch += 1;
function stubFetch() {
var _this = this;
var originalFetch = window.fetch;
var allFetchCompleteCallback = utils_1.noop;
var pendingRequests = 0;
function onRequestEnd() {
pendingRequests -= 1;
if (pendingRequests === 0) {
setTimeout(function () { return allFetchCompleteCallback(); });
}
}
window.fetch = (function () {
pendingRequests += 1;
var resolve;
var reject;
var promise = new Promise(function (res, rej) {
resolve = res;
reject = rej;
});
requestCompleteObservable.subscribe(function (request) {
_this.requests.push(request);
pendingFetch -= 1;
if (pendingFetch === 0) {
// ensure that AssertionError are not swallowed by promise context
setTimeout(function () {
_this.whenAllCompleteFn(_this.requests);
});
}
});
}
FetchStubBuilder.prototype.whenAllComplete = function (onCompleteFn) {
this.whenAllCompleteFn = onCompleteFn;
};
FetchStubBuilder.prototype.getStub = function () {
var _this = this;
return (function () {
var resolve;
var reject;
var promise = new Promise(function (res, rej) {
resolve = res;
reject = rej;
promise.resolveWith = function (response) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var resolved;
var _this = this;
return tslib_1.__generator(this, function (_a) {
resolved = resolve(tslib_1.__assign(tslib_1.__assign({}, response), { clone: function () {
var cloned = {
text: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
if (response.responseTextError) {
throw response.responseTextError;
}
return [2 /*return*/, response.responseText];
});
}); },
};
return cloned;
} }));
onRequestEnd();
return [2 /*return*/, resolved];
});
promise.resolveWith = function (response) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _this = this;
return tslib_1.__generator(this, function (_a) {
return [2 /*return*/, resolve(tslib_1.__assign(tslib_1.__assign({}, response), { clone: function () {
var cloned = {
text: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
if (response.responseTextError) {
throw response.responseTextError;
}
return [2 /*return*/, response.responseText];
});
}); },
};
return cloned;
} }))];
});
}); };
promise.rejectWith = function (error) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
return [2 /*return*/, reject(error)];
}); }); };
return promise;
});
}); };
promise.rejectWith = function (error) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var rejected;
return tslib_1.__generator(this, function (_a) {
rejected = reject(error);
onRequestEnd();
return [2 /*return*/, rejected];
});
}); };
return promise;
});
return {
whenAllComplete: function (callback) {
allFetchCompleteCallback = callback;
},
reset: function () {
window.fetch = originalFetch;
allFetchCompleteCallback = utils_1.noop;
},
};
return FetchStubBuilder;
}());
exports.FetchStubBuilder = FetchStubBuilder;
}
exports.stubFetch = stubFetch;
var PerformanceObserverStubBuilder = /** @class */ (function () {

@@ -134,2 +135,13 @@ function PerformanceObserverStubBuilder() {

exports.PerformanceObserverStubBuilder = PerformanceObserverStubBuilder;
function withXhr(_a) {
var setup = _a.setup, onComplete = _a.onComplete;
var xhr = new XMLHttpRequest();
xhr.addEventListener('loadend', function () {
setTimeout(function () {
onComplete(xhr);
});
});
setup(xhr);
}
exports.withXhr = withXhr;
function setPageVisibility(visibility) {

@@ -136,0 +148,0 @@ Object.defineProperty(document, 'visibilityState', {

@@ -28,2 +28,6 @@ export declare type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;

}
export declare enum RequestType {
FETCH = "fetch",
XHR = "xhr"
}
export declare function throttle(fn: () => void, wait: number, options?: {

@@ -30,0 +34,0 @@ leading?: boolean;

@@ -32,2 +32,7 @@ "use strict";

})(ResourceKind = exports.ResourceKind || (exports.ResourceKind = {}));
var RequestType;
(function (RequestType) {
RequestType["FETCH"] = "fetch";
RequestType["XHR"] = "xhr";
})(RequestType = exports.RequestType || (exports.RequestType = {}));
// use lodash API

@@ -34,0 +39,0 @@ function throttle(fn, wait, options) {

import { Configuration } from './configuration';
import { Observable } from './observable';
import { RequestCompleteEvent } from './requestCollection';
import { StackTrace } from './tracekit';

@@ -49,2 +48,11 @@ export interface ErrorMessage {

export declare function toStackTraceString(stack: StackTrace): string;
export declare function trackNetworkError(configuration: Configuration, errorObservable: ErrorObservable, requestObservable: Observable<RequestCompleteEvent>): void;
export declare function trackNetworkError(configuration: Configuration, errorObservable: ErrorObservable): {
stop(): void;
};
export declare function isRejected(request: {
status: number;
responseType?: string;
}): boolean;
export declare function isServerError(request: {
status: number;
}): boolean;
import { __spreadArrays } from "tslib";
import { resetFetchProxy, startFetchProxy } from './fetchProxy';
import { monitor } from './internalMonitoring';
import { Observable } from './observable';
import { isRejected, isServerError, RequestType, startRequestCollection, } from './requestCollection';
import { computeStackTrace, report } from './tracekit';
import { jsonStringify, ONE_MINUTE } from './utils';
import { jsonStringify, ONE_MINUTE, RequestType } from './utils';
import { resetXhrProxy, startXhrProxy } from './xhrProxy';
export var ErrorOrigin;

@@ -20,4 +21,3 @@ (function (ErrorOrigin) {

if (configuration.isCollectingError) {
var _a = startRequestCollection(), requestCompleteObservable = _a[1];
trackNetworkError(configuration, errorObservable, requestCompleteObservable);
trackNetworkError(configuration, errorObservable);
startConsoleTracking(errorObservable);

@@ -131,4 +131,6 @@ startRuntimeErrorTracking(errorObservable);

}
export function trackNetworkError(configuration, errorObservable, requestObservable) {
requestObservable.subscribe(function (request) {
export function trackNetworkError(configuration, errorObservable) {
startXhrProxy().onRequestComplete(function (context) { return handleCompleteRequest(RequestType.XHR, context); });
startFetchProxy().onRequestComplete(function (context) { return handleCompleteRequest(RequestType.FETCH, context); });
function handleCompleteRequest(type, request) {
if (isRejected(request) || isServerError(request)) {

@@ -147,8 +149,20 @@ errorObservable.notify({

},
message: format(request.type) + " error " + request.method + " " + request.url,
message: format(type) + " error " + request.method + " " + request.url,
startTime: request.startTime,
});
}
});
}
return {
stop: function () {
resetXhrProxy();
resetFetchProxy();
},
};
}
export function isRejected(request) {
return request.status === 0 && request.responseType !== 'opaque';
}
export function isServerError(request) {
return request.status >= 500;
}
function truncateResponse(response, configuration) {

@@ -155,0 +169,0 @@ if (response && response.length > configuration.requestErrorResponseLengthLimit) {

@@ -6,3 +6,2 @@ export { DEFAULT_CONFIGURATION, Configuration, UserConfiguration } from './configuration';

export { Observable } from './observable';
export { RequestType, RequestCompleteEvent, RequestStartEvent, startRequestCollection, RequestObservables, } from './requestCollection';
export { startSessionManagement, SESSION_TIME_OUT_DELAY, SESSION_COOKIE_NAME, stopSessionManagement, } from './sessionManagement';

@@ -13,2 +12,4 @@ export { HttpRequest, Batch } from './transport';

export { areCookiesAuthorized, getCookie, setCookie, COOKIE_ACCESS_DELAY } from './cookie';
export { startXhrProxy, XhrContext, XhrProxy } from './xhrProxy';
export { startFetchProxy, FetchContext, FetchProxy } from './fetchProxy';
export * from './specHelper';

@@ -6,3 +6,2 @@ export { DEFAULT_CONFIGURATION } from './configuration';

export { Observable } from './observable';
export { RequestType, startRequestCollection, } from './requestCollection';
export { startSessionManagement, SESSION_TIME_OUT_DELAY,

@@ -15,3 +14,5 @@ // Exposed for tests

export { areCookiesAuthorized, getCookie, setCookie, COOKIE_ACCESS_DELAY } from './cookie';
export { startXhrProxy } from './xhrProxy';
export { startFetchProxy } from './fetchProxy';
export * from './specHelper';
//# sourceMappingURL=index.js.map
import { Configuration } from './configuration';
import { RequestCompleteEvent, RequestObservables } from './requestCollection';
export declare const SPEC_ENDPOINTS: Partial<Configuration>;

@@ -8,9 +7,7 @@ export declare function isSafari(): boolean;

export declare function clearAllCookies(): void;
export declare class FetchStubBuilder {
private requests;
private whenAllCompleteFn;
constructor([requestStartObservable, requestCompleteObservable]: RequestObservables);
whenAllComplete(onCompleteFn: (_: RequestCompleteEvent[]) => void): void;
getStub(): FetchStub;
export interface FetchStubManager {
reset: () => void;
whenAllComplete: (callback: () => void) => void;
}
export declare function stubFetch(): FetchStubManager;
export interface ResponseStub extends Partial<Response> {

@@ -31,3 +28,7 @@ responseText?: string;

}
export declare function withXhr({ setup, onComplete, }: {
setup: (xhr: XMLHttpRequest) => void;
onComplete: (xhr: XMLHttpRequest) => void;
}): void;
export declare function setPageVisibility(visibility: 'visible' | 'hidden'): void;
export declare function restorePageVisibility(): void;

@@ -23,62 +23,62 @@ import { __assign, __awaiter, __generator } from "tslib";

}
var FetchStubBuilder = /** @class */ (function () {
function FetchStubBuilder(_a) {
var _this = this;
var requestStartObservable = _a[0], requestCompleteObservable = _a[1];
this.requests = [];
this.whenAllCompleteFn = noop;
var pendingFetch = 0;
requestStartObservable.subscribe(function () {
pendingFetch += 1;
export function stubFetch() {
var _this = this;
var originalFetch = window.fetch;
var allFetchCompleteCallback = noop;
var pendingRequests = 0;
function onRequestEnd() {
pendingRequests -= 1;
if (pendingRequests === 0) {
setTimeout(function () { return allFetchCompleteCallback(); });
}
}
window.fetch = (function () {
pendingRequests += 1;
var resolve;
var reject;
var promise = new Promise(function (res, rej) {
resolve = res;
reject = rej;
});
requestCompleteObservable.subscribe(function (request) {
_this.requests.push(request);
pendingFetch -= 1;
if (pendingFetch === 0) {
// ensure that AssertionError are not swallowed by promise context
setTimeout(function () {
_this.whenAllCompleteFn(_this.requests);
});
}
});
}
FetchStubBuilder.prototype.whenAllComplete = function (onCompleteFn) {
this.whenAllCompleteFn = onCompleteFn;
};
FetchStubBuilder.prototype.getStub = function () {
var _this = this;
return (function () {
var resolve;
var reject;
var promise = new Promise(function (res, rej) {
resolve = res;
reject = rej;
promise.resolveWith = function (response) { return __awaiter(_this, void 0, void 0, function () {
var resolved;
var _this = this;
return __generator(this, function (_a) {
resolved = resolve(__assign(__assign({}, response), { clone: function () {
var cloned = {
text: function () { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
if (response.responseTextError) {
throw response.responseTextError;
}
return [2 /*return*/, response.responseText];
});
}); },
};
return cloned;
} }));
onRequestEnd();
return [2 /*return*/, resolved];
});
promise.resolveWith = function (response) { return __awaiter(_this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
return [2 /*return*/, resolve(__assign(__assign({}, response), { clone: function () {
var cloned = {
text: function () { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
if (response.responseTextError) {
throw response.responseTextError;
}
return [2 /*return*/, response.responseText];
});
}); },
};
return cloned;
} }))];
});
}); };
promise.rejectWith = function (error) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
return [2 /*return*/, reject(error)];
}); }); };
return promise;
});
}); };
promise.rejectWith = function (error) { return __awaiter(_this, void 0, void 0, function () {
var rejected;
return __generator(this, function (_a) {
rejected = reject(error);
onRequestEnd();
return [2 /*return*/, rejected];
});
}); };
return promise;
});
return {
whenAllComplete: function (callback) {
allFetchCompleteCallback = callback;
},
reset: function () {
window.fetch = originalFetch;
allFetchCompleteCallback = noop;
},
};
return FetchStubBuilder;
}());
export { FetchStubBuilder };
}
var PerformanceObserverStubBuilder = /** @class */ (function () {

@@ -128,2 +128,12 @@ function PerformanceObserverStubBuilder() {

export { PerformanceObserverStubBuilder };
export function withXhr(_a) {
var setup = _a.setup, onComplete = _a.onComplete;
var xhr = new XMLHttpRequest();
xhr.addEventListener('loadend', function () {
setTimeout(function () {
onComplete(xhr);
});
});
setup(xhr);
}
export function setPageVisibility(visibility) {

@@ -130,0 +140,0 @@ Object.defineProperty(document, 'visibilityState', {

@@ -28,2 +28,6 @@ export declare type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;

}
export declare enum RequestType {
FETCH = "fetch",
XHR = "xhr"
}
export declare function throttle(fn: () => void, wait: number, options?: {

@@ -30,0 +34,0 @@ leading?: boolean;

@@ -30,2 +30,7 @@ import { __assign, __spreadArrays } from "tslib";

})(ResourceKind || (ResourceKind = {}));
export var RequestType;
(function (RequestType) {
RequestType["FETCH"] = "fetch";
RequestType["XHR"] = "xhr";
})(RequestType || (RequestType = {}));
// use lodash API

@@ -32,0 +37,0 @@ export function throttle(fn, wait, options) {

{
"name": "@datadog/browser-core",
"version": "1.14.0",
"version": "1.14.1",
"license": "Apache-2.0",

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

},
"gitHead": "b9e32106eef6dd9e7f5c03ab92a7c518f53f934a"
"gitHead": "1298e13e8204d4ac9149b77bd533126ec70d5dd2"
}

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
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc