@grafana/faro-web-sdk
Version:
Faro instrumentations, metas, transports for web.
115 lines • 7.58 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeCoreConfig = makeCoreConfig;
var faro_core_1 = require("@grafana/faro-core");
var consts_1 = require("../consts");
var instrumentations_1 = require("../instrumentations");
var session_1 = require("../instrumentations/session");
var const_1 = require("../instrumentations/userActions/const");
var metas_1 = require("../metas");
var k6_1 = require("../metas/k6");
var page_1 = require("../metas/page");
var transports_1 = require("../transports");
var getWebInstrumentations_1 = require("./getWebInstrumentations");
function makeCoreConfig(browserConfig) {
var _a;
var transports = [];
var internalLogger = (0, faro_core_1.createInternalLogger)(browserConfig.unpatchedConsole, browserConfig.internalLoggerLevel);
if (browserConfig.transports) {
if (browserConfig.url || browserConfig.apiKey) {
internalLogger.error('if "transports" is defined, "url" and "apiKey" should not be defined');
}
transports.push.apply(transports, browserConfig.transports);
}
else if (browserConfig.url) {
transports.push(new transports_1.FetchTransport({
url: browserConfig.url,
apiKey: browserConfig.apiKey,
}));
}
else {
internalLogger.error('either "url" or "transports" must be defined');
}
var
// properties with default values
_b = browserConfig.dedupe,
// properties with default values
dedupe = _b === void 0 ? true : _b, _c = browserConfig.eventDomain, eventDomain = _c === void 0 ? consts_1.defaultEventDomain : _c, _d = browserConfig.globalObjectKey, globalObjectKey = _d === void 0 ? faro_core_1.defaultGlobalObjectKey : _d, _e = browserConfig.instrumentations, instrumentations = _e === void 0 ? (0, getWebInstrumentations_1.getWebInstrumentations)() : _e, _f = browserConfig.internalLoggerLevel, internalLoggerLevel = _f === void 0 ? faro_core_1.defaultInternalLoggerLevel : _f, _g = browserConfig.isolate, isolate = _g === void 0 ? false : _g, _h = browserConfig.logArgsSerializer, logArgsSerializer = _h === void 0 ? faro_core_1.defaultLogArgsSerializer : _h, _j = browserConfig.metas, metas = _j === void 0 ? createDefaultMetas(browserConfig) : _j, _k = browserConfig.paused, paused = _k === void 0 ? false : _k, _l = browserConfig.preventGlobalExposure, preventGlobalExposure = _l === void 0 ? false : _l, _m = browserConfig.unpatchedConsole, unpatchedConsole = _m === void 0 ? faro_core_1.defaultUnpatchedConsole : _m, _o = browserConfig.trackUserActionsPreview, trackUserActionsPreview = _o === void 0 ? false : _o, _p = browserConfig.trackUserActionsDataAttributeName, trackUserActionsDataAttributeName = _p === void 0 ? const_1.userActionDataAttribute : _p, browserConfigUrl = browserConfig.url,
// Properties without default values or which aren't used to create derived config
restProperties = __rest(browserConfig, ["dedupe", "eventDomain", "globalObjectKey", "instrumentations", "internalLoggerLevel", "isolate", "logArgsSerializer", "metas", "paused", "preventGlobalExposure", "unpatchedConsole", "trackUserActionsPreview", "trackUserActionsDataAttributeName", "url"]);
return __assign(__assign({}, restProperties), { batching: __assign(__assign({}, faro_core_1.defaultBatchingConfig), browserConfig.batching), dedupe: dedupe, globalObjectKey: globalObjectKey, instrumentations: getFilteredInstrumentations(instrumentations, browserConfig), internalLoggerLevel: internalLoggerLevel, isolate: isolate, logArgsSerializer: logArgsSerializer, metas: metas, parseStacktrace: instrumentations_1.parseStacktrace, paused: paused, preventGlobalExposure: preventGlobalExposure, transports: transports, unpatchedConsole: unpatchedConsole, eventDomain: eventDomain, ignoreUrls: __spreadArray(__spreadArray(__spreadArray([], ((_a = browserConfig.ignoreUrls) !== null && _a !== void 0 ? _a : []), true), (browserConfigUrl ? [browserConfigUrl] : []), true), [
// Try our best to exclude collector URLs form other Faro instances. By default these are URLs ending with /collect or /collect/ followed by alphanumeric characters.
/\/collect(?:\/[\w]*)?$/,
], false), sessionTracking: __assign(__assign(__assign({}, session_1.defaultSessionTrackingConfig), browserConfig.sessionTracking), crateSessionMeta({
trackGeolocation: browserConfig.trackGeolocation,
sessionTracking: browserConfig.sessionTracking,
})), trackUserActionsPreview: trackUserActionsPreview, trackUserActionsDataAttributeName: trackUserActionsDataAttributeName });
}
function getFilteredInstrumentations(instrumentations, _a) {
var trackUserActionsPreview = _a.trackUserActionsPreview;
return instrumentations.filter(function (instr) {
if (instr.name === '@grafana/faro-web-sdk:instrumentation-user-action' && !trackUserActionsPreview) {
return false;
}
return true;
});
}
function createDefaultMetas(browserConfig) {
var _a, _b;
var _c = (_a = browserConfig === null || browserConfig === void 0 ? void 0 : browserConfig.pageTracking) !== null && _a !== void 0 ? _a : {}, page = _c.page, generatePageId = _c.generatePageId;
var initialMetas = __spreadArray([
metas_1.browserMeta,
(0, page_1.createPageMeta)({ generatePageId: generatePageId, initialPageMeta: page })
], ((_b = browserConfig.metas) !== null && _b !== void 0 ? _b : []), true);
var isK6BrowserSession = (0, faro_core_1.isObject)(window.k6);
if (isK6BrowserSession) {
return __spreadArray(__spreadArray([], initialMetas, true), [k6_1.k6Meta], false);
}
return initialMetas;
}
function crateSessionMeta(_a) {
var _b;
var trackGeolocation = _a.trackGeolocation, sessionTracking = _a.sessionTracking;
var overrides = {};
if ((0, faro_core_1.isBoolean)(trackGeolocation)) {
overrides.geoLocationTrackingEnabled = trackGeolocation;
}
if ((0, faro_core_1.isEmpty)(overrides)) {
return {};
}
return {
session: __assign(__assign({}, ((_b = sessionTracking === null || sessionTracking === void 0 ? void 0 : sessionTracking.session) !== null && _b !== void 0 ? _b : {})), { overrides: overrides }),
};
}
//# sourceMappingURL=makeCoreConfig.js.map