@grafana/faro-web-sdk 2.3.1 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/bundle/faro-web-sdk.iife.js +1 -1
- package/dist/bundle/types/index.d.ts +2 -2
- package/dist/bundle/types/instrumentations/console/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/csp/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/errors/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/navigation/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/performance/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/session/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/userActions/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/view/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/webVitals/instrumentation.d.ts +1 -1
- package/dist/bundle/types/metas/index.d.ts +1 -0
- package/dist/bundle/types/metas/os/index.d.ts +1 -0
- package/dist/bundle/types/metas/os/meta.d.ts +2 -0
- package/dist/bundle/types/metas/shared/index.d.ts +1 -0
- package/dist/bundle/types/metas/shared/uaParser.d.ts +4 -0
- package/dist/bundle/types/transports/console/transport.d.ts +1 -1
- package/dist/bundle/types/transports/fetch/transport.d.ts +1 -1
- package/dist/cjs/config/getWebInstrumentations.js +3 -4
- package/dist/cjs/config/getWebInstrumentations.js.map +1 -1
- package/dist/cjs/config/makeCoreConfig.js +49 -60
- package/dist/cjs/config/makeCoreConfig.js.map +1 -1
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/initialize.js +3 -3
- package/dist/cjs/initialize.js.map +1 -1
- package/dist/cjs/instrumentations/_internal/activityWindowTracker.js +52 -68
- package/dist/cjs/instrumentations/_internal/activityWindowTracker.js.map +1 -1
- package/dist/cjs/instrumentations/_internal/monitors/consoleMonitor.js +11 -16
- package/dist/cjs/instrumentations/_internal/monitors/consoleMonitor.js.map +1 -1
- package/dist/cjs/instrumentations/_internal/monitors/domMutationMonitor.js +5 -5
- package/dist/cjs/instrumentations/_internal/monitors/domMutationMonitor.js.map +1 -1
- package/dist/cjs/instrumentations/_internal/monitors/httpRequestMonitor.js +28 -30
- package/dist/cjs/instrumentations/_internal/monitors/httpRequestMonitor.js.map +1 -1
- package/dist/cjs/instrumentations/_internal/monitors/interactionMonitor.js +7 -7
- package/dist/cjs/instrumentations/_internal/monitors/interactionMonitor.js.map +1 -1
- package/dist/cjs/instrumentations/_internal/monitors/performanceEntriesMonitor.js +8 -8
- package/dist/cjs/instrumentations/_internal/monitors/performanceEntriesMonitor.js.map +1 -1
- package/dist/cjs/instrumentations/_internal/monitors/urlChangeMonitor.js +24 -32
- package/dist/cjs/instrumentations/_internal/monitors/urlChangeMonitor.js.map +1 -1
- package/dist/cjs/instrumentations/console/instrumentation.js +29 -49
- package/dist/cjs/instrumentations/console/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/csp/instrumentation.js +14 -32
- package/dist/cjs/instrumentations/csp/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/errors/getErrorDetails.js +23 -23
- package/dist/cjs/instrumentations/errors/getErrorDetails.js.map +1 -1
- package/dist/cjs/instrumentations/errors/getValueAndTypeFromMessage.js +5 -5
- package/dist/cjs/instrumentations/errors/getValueAndTypeFromMessage.js.map +1 -1
- package/dist/cjs/instrumentations/errors/instrumentation.js +11 -29
- package/dist/cjs/instrumentations/errors/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/errors/registerOnerror.js +6 -10
- package/dist/cjs/instrumentations/errors/registerOnerror.js.map +1 -1
- package/dist/cjs/instrumentations/errors/registerOnunhandledrejection.js +16 -17
- package/dist/cjs/instrumentations/errors/registerOnunhandledrejection.js.map +1 -1
- package/dist/cjs/instrumentations/errors/stackFrames/buildStackFrame.js +2 -2
- package/dist/cjs/instrumentations/errors/stackFrames/buildStackFrame.js.map +1 -1
- package/dist/cjs/instrumentations/errors/stackFrames/getDataFromSafariExtensions.js +4 -4
- package/dist/cjs/instrumentations/errors/stackFrames/getDataFromSafariExtensions.js.map +1 -1
- package/dist/cjs/instrumentations/errors/stackFrames/getStackFramesFromError.js +16 -17
- package/dist/cjs/instrumentations/errors/stackFrames/getStackFramesFromError.js.map +1 -1
- package/dist/cjs/instrumentations/errors/stackFrames/parseStacktrace.js +1 -1
- package/dist/cjs/instrumentations/errors/stackFrames/parseStacktrace.js.map +1 -1
- package/dist/cjs/instrumentations/navigation/instrumentation.js +27 -45
- package/dist/cjs/instrumentations/navigation/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/performance/instrumentation.js +19 -74
- package/dist/cjs/instrumentations/performance/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/performance/navigation.js +15 -26
- package/dist/cjs/instrumentations/performance/navigation.js.map +1 -1
- package/dist/cjs/instrumentations/performance/performanceUtils.js +18 -33
- package/dist/cjs/instrumentations/performance/performanceUtils.js.map +1 -1
- package/dist/cjs/instrumentations/performance/resource.js +13 -25
- package/dist/cjs/instrumentations/performance/resource.js.map +1 -1
- package/dist/cjs/instrumentations/session/instrumentation.js +45 -74
- package/dist/cjs/instrumentations/session/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/session/sessionManager/PersistentSessionsManager.js +21 -24
- package/dist/cjs/instrumentations/session/sessionManager/PersistentSessionsManager.js.map +1 -1
- package/dist/cjs/instrumentations/session/sessionManager/VolatileSessionManager.js +21 -24
- package/dist/cjs/instrumentations/session/sessionManager/VolatileSessionManager.js.map +1 -1
- package/dist/cjs/instrumentations/session/sessionManager/getSessionManagerByConfig.js +2 -2
- package/dist/cjs/instrumentations/session/sessionManager/getSessionManagerByConfig.js.map +1 -1
- package/dist/cjs/instrumentations/session/sessionManager/sampling.js +5 -5
- package/dist/cjs/instrumentations/session/sessionManager/sampling.js.map +1 -1
- package/dist/cjs/instrumentations/session/sessionManager/sessionManagerUtils.js +47 -65
- package/dist/cjs/instrumentations/session/sessionManager/sessionManagerUtils.js.map +1 -1
- package/dist/cjs/instrumentations/userActions/instrumentation.js +15 -34
- package/dist/cjs/instrumentations/userActions/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/userActions/processUserActionEventHandler.js +11 -11
- package/dist/cjs/instrumentations/userActions/processUserActionEventHandler.js.map +1 -1
- package/dist/cjs/instrumentations/userActions/userActionController.js +49 -53
- package/dist/cjs/instrumentations/userActions/userActionController.js.map +1 -1
- package/dist/cjs/instrumentations/userActions/util.js +4 -4
- package/dist/cjs/instrumentations/userActions/util.js.map +1 -1
- package/dist/cjs/instrumentations/view/instrumentation.js +12 -30
- package/dist/cjs/instrumentations/view/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/webVitals/instrumentation.js +11 -29
- package/dist/cjs/instrumentations/webVitals/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/webVitals/webVitalsWithAttribution.js +87 -94
- package/dist/cjs/instrumentations/webVitals/webVitalsWithAttribution.js.map +1 -1
- package/dist/cjs/metas/browser/meta.js +13 -14
- package/dist/cjs/metas/browser/meta.js.map +1 -1
- package/dist/cjs/metas/index.js +3 -1
- package/dist/cjs/metas/index.js.map +1 -1
- package/dist/cjs/metas/k6/meta.js +3 -14
- package/dist/cjs/metas/k6/meta.js.map +1 -1
- package/dist/cjs/metas/os/index.js +6 -0
- package/dist/cjs/metas/os/index.js.map +1 -0
- package/dist/cjs/metas/os/meta.js +20 -0
- package/dist/cjs/metas/os/meta.js.map +1 -0
- package/dist/cjs/metas/page/meta.js +7 -19
- package/dist/cjs/metas/page/meta.js.map +1 -1
- package/dist/cjs/metas/sdk/meta.js +3 -3
- package/dist/cjs/metas/sdk/meta.js.map +1 -1
- package/dist/cjs/metas/session/createSession.js +2 -2
- package/dist/cjs/metas/session/createSession.js.map +1 -1
- package/dist/cjs/metas/shared/index.js +6 -0
- package/dist/cjs/metas/shared/index.js.map +1 -0
- package/dist/cjs/metas/shared/uaParser.js +18 -0
- package/dist/cjs/metas/shared/uaParser.js.map +1 -0
- package/dist/cjs/transports/console/transport.js +10 -29
- package/dist/cjs/transports/console/transport.js.map +1 -1
- package/dist/cjs/transports/fetch/transport.js +82 -176
- package/dist/cjs/transports/fetch/transport.js.map +1 -1
- package/dist/cjs/utils/throttle.js +6 -10
- package/dist/cjs/utils/throttle.js.map +1 -1
- package/dist/cjs/utils/url.js +4 -5
- package/dist/cjs/utils/url.js.map +1 -1
- package/dist/cjs/utils/webStorage.js +4 -4
- package/dist/cjs/utils/webStorage.js.map +1 -1
- package/dist/esm/config/makeCoreConfig.js +2 -1
- package/dist/esm/config/makeCoreConfig.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instrumentations/_internal/activityWindowTracker.js +10 -5
- package/dist/esm/instrumentations/_internal/activityWindowTracker.js.map +1 -1
- package/dist/esm/instrumentations/errors/getErrorDetails.js +1 -0
- package/dist/esm/instrumentations/errors/getErrorDetails.js.map +1 -1
- package/dist/esm/metas/browser/meta.js +5 -6
- package/dist/esm/metas/browser/meta.js.map +1 -1
- package/dist/esm/metas/index.js +1 -0
- package/dist/esm/metas/index.js.map +1 -1
- package/dist/esm/metas/os/index.js +2 -0
- package/dist/esm/metas/os/index.js.map +1 -0
- package/dist/esm/metas/os/meta.js +16 -0
- package/dist/esm/metas/os/meta.js.map +1 -0
- package/dist/esm/metas/shared/index.js +2 -0
- package/dist/esm/metas/shared/index.js.map +1 -0
- package/dist/esm/metas/shared/uaParser.js +15 -0
- package/dist/esm/metas/shared/uaParser.js.map +1 -0
- package/dist/esm/transports/fetch/transport.js +1 -1
- package/dist/esm/transports/fetch/transport.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/instrumentations/console/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/csp/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/errors/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/navigation/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/performance/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/session/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/userActions/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/view/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/webVitals/instrumentation.d.ts +1 -1
- package/dist/types/metas/index.d.ts +1 -0
- package/dist/types/metas/os/index.d.ts +1 -0
- package/dist/types/metas/os/meta.d.ts +2 -0
- package/dist/types/metas/shared/index.d.ts +1 -0
- package/dist/types/metas/shared/uaParser.d.ts +4 -0
- package/dist/types/transports/console/transport.d.ts +1 -1
- package/dist/types/transports/fetch/transport.d.ts +1 -1
- package/package.json +5 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseInstrumentation } from '@grafana/faro-core';
|
|
2
2
|
export declare class WebVitalsInstrumentation extends BaseInstrumentation {
|
|
3
3
|
readonly name = "@grafana/faro-web-sdk:instrumentation-web-vitals";
|
|
4
|
-
readonly version = "2.
|
|
4
|
+
readonly version = "2.5.0";
|
|
5
5
|
initialize(): void;
|
|
6
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { osMeta } from './meta';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getUAResult } from './uaParser';
|
|
@@ -4,7 +4,7 @@ import type { ConsoleTransportOptions } from './types';
|
|
|
4
4
|
export declare class ConsoleTransport extends BaseTransport {
|
|
5
5
|
private options;
|
|
6
6
|
readonly name = "@grafana/faro-web-sdk:transport-console";
|
|
7
|
-
readonly version = "2.
|
|
7
|
+
readonly version = "2.5.0";
|
|
8
8
|
constructor(options?: ConsoleTransportOptions);
|
|
9
9
|
send(item: TransportItem): void;
|
|
10
10
|
}
|
|
@@ -4,7 +4,7 @@ import type { FetchTransportOptions } from './types';
|
|
|
4
4
|
export declare class FetchTransport extends BaseTransport {
|
|
5
5
|
private options;
|
|
6
6
|
readonly name = "@grafana/faro-web-sdk:transport-fetch";
|
|
7
|
-
readonly version = "2.
|
|
7
|
+
readonly version = "2.5.0";
|
|
8
8
|
promiseBuffer: PromiseBuffer<Response | void>;
|
|
9
9
|
private readonly rateLimitBackoffMs;
|
|
10
10
|
private readonly getNow;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getWebInstrumentations = getWebInstrumentations;
|
|
4
|
-
|
|
5
|
-
function getWebInstrumentations(options) {
|
|
6
|
-
|
|
7
|
-
var instrumentations = [
|
|
4
|
+
const instrumentations_1 = require("../instrumentations");
|
|
5
|
+
function getWebInstrumentations(options = {}) {
|
|
6
|
+
const instrumentations = [
|
|
8
7
|
new instrumentations_1.UserActionInstrumentation(),
|
|
9
8
|
new instrumentations_1.ErrorsInstrumentation(),
|
|
10
9
|
new instrumentations_1.WebVitalsInstrumentation(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getWebInstrumentations.js","sourceRoot":"","sources":["../../../src/config/getWebInstrumentations.ts"],"names":[],"mappings":";;AAgBA,wDAwBC;AAtCD,
|
|
1
|
+
{"version":3,"file":"getWebInstrumentations.js","sourceRoot":"","sources":["../../../src/config/getWebInstrumentations.ts"],"names":[],"mappings":";;AAgBA,wDAwBC;AAtCD,0DAU6B;AAI7B,SAAgB,sBAAsB,CAAC,UAAyC,EAAE;IAChF,MAAM,gBAAgB,GAAsB;QAC1C,IAAI,4CAAyB,EAAE;QAC/B,IAAI,wCAAqB,EAAE;QAC3B,IAAI,2CAAwB,EAAE;QAC9B,IAAI,yCAAsB,EAAE;QAC5B,IAAI,sCAAmB,EAAE;QACzB,IAAI,4CAAyB,EAAE;KAChC,CAAC;IAEF,IAAI,OAAO,CAAC,gCAAgC,KAAK,KAAK,EAAE,CAAC;QACvD,iFAAiF;QACjF,gBAAgB,CAAC,OAAO,CAAC,IAAI,6CAA0B,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,OAAO,CAAC,0CAA0C,KAAK,KAAK,EAAE,CAAC;QACjE,gBAAgB,CAAC,IAAI,CAAC,IAAI,qCAAkB,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;QACrC,gBAAgB,CAAC,IAAI,CAAC,IAAI,yCAAsB,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["import type { Instrumentation } from '@grafana/faro-core';\n\nimport {\n ConsoleInstrumentation,\n CSPInstrumentation,\n ErrorsInstrumentation,\n NavigationInstrumentation,\n PerformanceInstrumentation,\n SessionInstrumentation,\n UserActionInstrumentation,\n ViewInstrumentation,\n WebVitalsInstrumentation,\n} from '../instrumentations';\n\nimport type { GetWebInstrumentationsOptions } from './types';\n\nexport function getWebInstrumentations(options: GetWebInstrumentationsOptions = {}): Instrumentation[] {\n const instrumentations: Instrumentation[] = [\n new UserActionInstrumentation(),\n new ErrorsInstrumentation(),\n new WebVitalsInstrumentation(),\n new SessionInstrumentation(),\n new ViewInstrumentation(),\n new NavigationInstrumentation(),\n ];\n\n if (options.enablePerformanceInstrumentation !== false) {\n // unshift to ensure that initialization starts before the other instrumentations\n instrumentations.unshift(new PerformanceInstrumentation());\n }\n\n if (options.enableContentSecurityPolicyInstrumentation !== false) {\n instrumentations.push(new CSPInstrumentation());\n }\n\n if (options.captureConsole !== false) {\n instrumentations.push(new ConsoleInstrumentation());\n }\n\n return instrumentations;\n}\n"]}
|
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
3
|
var t = {};
|
|
15
4
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -21,36 +10,27 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
21
10
|
}
|
|
22
11
|
return t;
|
|
23
12
|
};
|
|
24
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
25
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
26
|
-
if (ar || !(i in from)) {
|
|
27
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
28
|
-
ar[i] = from[i];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
32
|
-
};
|
|
33
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
14
|
exports.makeCoreConfig = makeCoreConfig;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
15
|
+
const faro_core_1 = require("@grafana/faro-core");
|
|
16
|
+
const consts_1 = require("../consts");
|
|
17
|
+
const instrumentations_1 = require("../instrumentations");
|
|
18
|
+
const session_1 = require("../instrumentations/session");
|
|
19
|
+
const const_1 = require("../instrumentations/userActions/const");
|
|
20
|
+
const metas_1 = require("../metas");
|
|
21
|
+
const k6_1 = require("../metas/k6");
|
|
22
|
+
const page_1 = require("../metas/page");
|
|
23
|
+
const transports_1 = require("../transports");
|
|
24
|
+
const getWebInstrumentations_1 = require("./getWebInstrumentations");
|
|
45
25
|
function makeCoreConfig(browserConfig) {
|
|
46
26
|
var _a, _b, _c, _d, _e;
|
|
47
|
-
|
|
48
|
-
|
|
27
|
+
const transports = [];
|
|
28
|
+
const internalLogger = (0, faro_core_1.createInternalLogger)(browserConfig.unpatchedConsole, browserConfig.internalLoggerLevel);
|
|
49
29
|
if (browserConfig.transports) {
|
|
50
30
|
if (browserConfig.url || browserConfig.apiKey) {
|
|
51
31
|
internalLogger.error('if "transports" is defined, "url" and "apiKey" should not be defined');
|
|
52
32
|
}
|
|
53
|
-
transports.push
|
|
33
|
+
transports.push(...browserConfig.transports);
|
|
54
34
|
}
|
|
55
35
|
else if (browserConfig.url) {
|
|
56
36
|
transports.push(new transports_1.FetchTransport({
|
|
@@ -61,35 +41,44 @@ function makeCoreConfig(browserConfig) {
|
|
|
61
41
|
else {
|
|
62
42
|
internalLogger.error('either "url" or "transports" must be defined');
|
|
63
43
|
}
|
|
64
|
-
|
|
65
|
-
// properties with default values
|
|
66
|
-
_f = browserConfig.dedupe,
|
|
44
|
+
const {
|
|
67
45
|
// properties with default values
|
|
68
|
-
dedupe =
|
|
46
|
+
dedupe = true, eventDomain = consts_1.defaultEventDomain, globalObjectKey = faro_core_1.defaultGlobalObjectKey, instrumentations = (0, getWebInstrumentations_1.getWebInstrumentations)(), internalLoggerLevel = faro_core_1.defaultInternalLoggerLevel, isolate = false, logArgsSerializer = faro_core_1.defaultLogArgsSerializer, metas = createDefaultMetas(browserConfig), paused = false, preventGlobalExposure = false, unpatchedConsole = faro_core_1.defaultUnpatchedConsole, url: browserConfigUrl, experimental } = browserConfig,
|
|
69
47
|
// Properties without default values or which aren't used to create derived config
|
|
70
48
|
restProperties = __rest(browserConfig, ["dedupe", "eventDomain", "globalObjectKey", "instrumentations", "internalLoggerLevel", "isolate", "logArgsSerializer", "metas", "paused", "preventGlobalExposure", "unpatchedConsole", "url", "experimental"]);
|
|
71
49
|
// Extract experimental features with defaults
|
|
72
|
-
|
|
50
|
+
const trackNavigation = (_a = experimental === null || experimental === void 0 ? void 0 : experimental.trackNavigation) !== null && _a !== void 0 ? _a : false;
|
|
73
51
|
// Extract user actions instrumentation with defaults
|
|
74
|
-
|
|
52
|
+
const userActionsInstrumentation = {
|
|
75
53
|
dataAttributeName: (_c = (_b = browserConfig.userActionsInstrumentation) === null || _b === void 0 ? void 0 : _b.dataAttributeName) !== null && _c !== void 0 ? _c : const_1.userActionDataAttribute,
|
|
76
54
|
excludeItem: (_d = browserConfig.userActionsInstrumentation) === null || _d === void 0 ? void 0 : _d.excludeItem,
|
|
77
55
|
};
|
|
78
|
-
return
|
|
56
|
+
return Object.assign(Object.assign({}, restProperties), { batching: Object.assign(Object.assign({}, faro_core_1.defaultBatchingConfig), browserConfig.batching), dedupe: dedupe, globalObjectKey, instrumentations: getFilteredInstrumentations(instrumentations, browserConfig), internalLoggerLevel,
|
|
57
|
+
isolate,
|
|
58
|
+
logArgsSerializer,
|
|
59
|
+
metas,
|
|
60
|
+
parseStacktrace: instrumentations_1.parseStacktrace,
|
|
61
|
+
paused,
|
|
62
|
+
preventGlobalExposure,
|
|
63
|
+
transports,
|
|
64
|
+
unpatchedConsole,
|
|
65
|
+
eventDomain, ignoreUrls: [
|
|
66
|
+
...((_e = browserConfig.ignoreUrls) !== null && _e !== void 0 ? _e : []),
|
|
67
|
+
// ignore configured cloud collector url by default
|
|
68
|
+
...(browserConfigUrl ? [browserConfigUrl] : []),
|
|
79
69
|
// 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.
|
|
80
70
|
/\/collect(?:\/[\w]*)?$/,
|
|
81
|
-
],
|
|
71
|
+
], sessionTracking: Object.assign(Object.assign(Object.assign({}, session_1.defaultSessionTrackingConfig), browserConfig.sessionTracking), crateSessionMeta({
|
|
82
72
|
trackGeolocation: browserConfig.trackGeolocation,
|
|
83
73
|
sessionTracking: browserConfig.sessionTracking,
|
|
84
|
-
})), userActionsInstrumentation
|
|
85
|
-
trackNavigation
|
|
74
|
+
})), userActionsInstrumentation, experimental: {
|
|
75
|
+
trackNavigation,
|
|
86
76
|
} });
|
|
87
77
|
}
|
|
88
|
-
function getFilteredInstrumentations(instrumentations,
|
|
89
|
-
var
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return instrumentations.filter(function (instr) {
|
|
78
|
+
function getFilteredInstrumentations(instrumentations, { experimental }) {
|
|
79
|
+
var _a;
|
|
80
|
+
const trackNavigation = (_a = experimental === null || experimental === void 0 ? void 0 : experimental.trackNavigation) !== null && _a !== void 0 ? _a : false;
|
|
81
|
+
return instrumentations.filter((instr) => {
|
|
93
82
|
if (instr.name === '@grafana/faro-web-sdk:instrumentation-navigation' && !trackNavigation) {
|
|
94
83
|
return false;
|
|
95
84
|
}
|
|
@@ -98,23 +87,23 @@ function getFilteredInstrumentations(instrumentations, _a) {
|
|
|
98
87
|
}
|
|
99
88
|
function createDefaultMetas(browserConfig) {
|
|
100
89
|
var _a, _b;
|
|
101
|
-
|
|
102
|
-
|
|
90
|
+
const { page, generatePageId } = (_a = browserConfig === null || browserConfig === void 0 ? void 0 : browserConfig.pageTracking) !== null && _a !== void 0 ? _a : {};
|
|
91
|
+
const initialMetas = [
|
|
103
92
|
metas_1.browserMeta,
|
|
104
|
-
|
|
105
|
-
|
|
93
|
+
metas_1.osMeta,
|
|
94
|
+
(0, page_1.createPageMeta)({ generatePageId, initialPageMeta: page }),
|
|
95
|
+
...((_b = browserConfig.metas) !== null && _b !== void 0 ? _b : []),
|
|
106
96
|
metas_1.sdkMeta,
|
|
107
|
-
]
|
|
108
|
-
|
|
97
|
+
];
|
|
98
|
+
const isK6BrowserSession = (0, faro_core_1.isObject)(window === null || window === void 0 ? void 0 : window.k6);
|
|
109
99
|
if (isK6BrowserSession) {
|
|
110
|
-
return
|
|
100
|
+
return [...initialMetas, k6_1.k6Meta];
|
|
111
101
|
}
|
|
112
102
|
return initialMetas;
|
|
113
103
|
}
|
|
114
|
-
function crateSessionMeta(
|
|
115
|
-
var
|
|
116
|
-
|
|
117
|
-
var overrides = {};
|
|
104
|
+
function crateSessionMeta({ trackGeolocation, sessionTracking, }) {
|
|
105
|
+
var _a;
|
|
106
|
+
const overrides = {};
|
|
118
107
|
if ((0, faro_core_1.isBoolean)(trackGeolocation)) {
|
|
119
108
|
overrides.geoLocationTrackingEnabled = trackGeolocation;
|
|
120
109
|
}
|
|
@@ -122,7 +111,7 @@ function crateSessionMeta(_a) {
|
|
|
122
111
|
return {};
|
|
123
112
|
}
|
|
124
113
|
return {
|
|
125
|
-
session:
|
|
114
|
+
session: Object.assign(Object.assign({}, ((_a = sessionTracking === null || sessionTracking === void 0 ? void 0 : sessionTracking.session) !== null && _a !== void 0 ? _a : {})), { overrides }),
|
|
126
115
|
};
|
|
127
116
|
}
|
|
128
117
|
//# sourceMappingURL=makeCoreConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeCoreConfig.js","sourceRoot":"","sources":["../../../src/config/makeCoreConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"makeCoreConfig.js","sourceRoot":"","sources":["../../../src/config/makeCoreConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createInternalLogger,\n defaultBatchingConfig,\n defaultGlobalObjectKey,\n defaultInternalLoggerLevel,\n defaultLogArgsSerializer,\n defaultUnpatchedConsole,\n isBoolean,\n isEmpty,\n isObject,\n} from '@grafana/faro-core';\nimport type { Config, Instrumentation, MetaItem, MetaSession, Transport } from '@grafana/faro-core';\n\nimport { defaultEventDomain } from '../consts';\nimport { parseStacktrace } from '../instrumentations';\nimport { defaultSessionTrackingConfig } from '../instrumentations/session';\nimport { userActionDataAttribute } from '../instrumentations/userActions/const';\nimport { browserMeta, osMeta, sdkMeta } from '../metas';\nimport { k6Meta } from '../metas/k6';\nimport { createPageMeta } from '../metas/page';\nimport { FetchTransport } from '../transports';\n\nimport { getWebInstrumentations } from './getWebInstrumentations';\nimport type { BrowserConfig } from './types';\n\nexport function makeCoreConfig(browserConfig: BrowserConfig): Config {\n const transports: Transport[] = [];\n\n const internalLogger = createInternalLogger(browserConfig.unpatchedConsole, browserConfig.internalLoggerLevel);\n\n if (browserConfig.transports) {\n if (browserConfig.url || browserConfig.apiKey) {\n internalLogger.error('if \"transports\" is defined, \"url\" and \"apiKey\" should not be defined');\n }\n\n transports.push(...browserConfig.transports);\n } else if (browserConfig.url) {\n transports.push(\n new FetchTransport({\n url: browserConfig.url,\n apiKey: browserConfig.apiKey,\n })\n );\n } else {\n internalLogger.error('either \"url\" or \"transports\" must be defined');\n }\n\n const {\n // properties with default values\n dedupe = true,\n eventDomain = defaultEventDomain,\n globalObjectKey = defaultGlobalObjectKey,\n instrumentations = getWebInstrumentations(),\n internalLoggerLevel = defaultInternalLoggerLevel,\n isolate = false,\n logArgsSerializer = defaultLogArgsSerializer,\n metas = createDefaultMetas(browserConfig),\n paused = false,\n preventGlobalExposure = false,\n unpatchedConsole = defaultUnpatchedConsole,\n url: browserConfigUrl,\n experimental,\n // Properties without default values or which aren't used to create derived config\n ...restProperties\n }: BrowserConfig = browserConfig;\n\n // Extract experimental features with defaults\n const trackNavigation = experimental?.trackNavigation ?? false;\n\n // Extract user actions instrumentation with defaults\n const userActionsInstrumentation = {\n dataAttributeName: browserConfig.userActionsInstrumentation?.dataAttributeName ?? userActionDataAttribute,\n excludeItem: browserConfig.userActionsInstrumentation?.excludeItem,\n };\n\n return {\n ...restProperties,\n\n batching: {\n ...defaultBatchingConfig,\n ...browserConfig.batching,\n },\n dedupe: dedupe,\n globalObjectKey,\n instrumentations: getFilteredInstrumentations(instrumentations, browserConfig),\n internalLoggerLevel,\n isolate,\n logArgsSerializer,\n metas,\n parseStacktrace,\n paused,\n preventGlobalExposure,\n transports,\n unpatchedConsole,\n eventDomain,\n ignoreUrls: [\n ...(browserConfig.ignoreUrls ?? []),\n // ignore configured cloud collector url by default\n ...(browserConfigUrl ? [browserConfigUrl] : []),\n // 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.\n /\\/collect(?:\\/[\\w]*)?$/,\n ],\n sessionTracking: {\n ...defaultSessionTrackingConfig,\n ...browserConfig.sessionTracking,\n ...crateSessionMeta({\n trackGeolocation: browserConfig.trackGeolocation,\n sessionTracking: browserConfig.sessionTracking,\n }),\n },\n userActionsInstrumentation,\n experimental: {\n trackNavigation,\n },\n };\n}\n\nfunction getFilteredInstrumentations(\n instrumentations: Instrumentation[],\n { experimental }: BrowserConfig\n): Instrumentation[] {\n const trackNavigation = experimental?.trackNavigation ?? false;\n\n return instrumentations.filter((instr) => {\n if (instr.name === '@grafana/faro-web-sdk:instrumentation-navigation' && !trackNavigation) {\n return false;\n }\n return true;\n });\n}\n\nfunction createDefaultMetas(browserConfig: BrowserConfig): MetaItem[] {\n const { page, generatePageId } = browserConfig?.pageTracking ?? {};\n\n const initialMetas: MetaItem[] = [\n browserMeta,\n osMeta,\n createPageMeta({ generatePageId, initialPageMeta: page }),\n ...(browserConfig.metas ?? []),\n sdkMeta,\n ];\n\n const isK6BrowserSession = isObject((window as any)?.k6);\n if (isK6BrowserSession) {\n return [...initialMetas, k6Meta];\n }\n\n return initialMetas;\n}\n\nfunction crateSessionMeta({\n trackGeolocation,\n sessionTracking,\n}: Pick<BrowserConfig, 'trackGeolocation' | 'sessionTracking'>): { session: MetaSession } | {} {\n const overrides: MetaSession['overrides'] = {};\n\n if (isBoolean(trackGeolocation)) {\n overrides.geoLocationTrackingEnabled = trackGeolocation;\n }\n\n if (isEmpty(overrides)) {\n return {};\n }\n\n return {\n session: {\n ...(sessionTracking?.session ?? {}),\n overrides,\n },\n };\n}\n"]}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.userActionDataAttribute = exports.getUrlFromResource = exports.getIgnoreUrls = exports.STORAGE_KEY = exports.SESSION_INACTIVITY_TIME = exports.SESSION_EXPIRATION_TIME = exports.MAX_SESSION_PERSISTENCE_TIME = exports.VolatileSessionsManager = exports.PersistentSessionsManager = exports.UserActionState = exports.unknownString = exports.Observable = exports.EVENT_VIEW_CHANGED = exports.EVENT_SESSION_START = exports.EVENT_SESSION_RESUME = exports.EVENT_SESSION_EXTEND = exports.EVENT_ROUTE_CHANGE = exports.EVENT_NAVIGATION = exports.EVENT_CLICK = exports.VERSION = exports.transportItemTypeToBodyKey = exports.TransportItemType = exports.setInternalFaroOnGlobalObject = exports.noop = exports.LogLevel = exports.InternalLoggerLevel = exports.isEmpty = exports.isUndefined = exports.isTypeof = exports.isToString = exports.isThenable = exports.isSyntheticEvent = exports.isSymbol = exports.isString = exports.isRegExp = exports.isPrimitive = exports.isObject = exports.isNumber = exports.isNull = exports.isMapDefined = exports.isMap = exports.isInternalFaroOnGlobalObject = exports.isInt = exports.isInstanceOf = exports.isFunction = exports.isEventDefined = void 0;
|
|
3
|
+
exports.isErrorEvent = exports.isErrorDefined = exports.isError = exports.isElementDefined = exports.isElement = exports.isDomException = exports.isDomError = exports.isBoolean = exports.isArray = exports.internalGlobalObjectKey = exports.globalObject = exports.getTransportBody = exports.getInternalFaroFromGlobalObject = exports.getCurrentTimestamp = exports.genShortID = exports.defaultLogLevel = exports.defaultInternalLoggerLevel = exports.defaultGlobalObjectKey = exports.defaultExceptionType = exports.deepEqual = exports.createPromiseBuffer = exports.createInternalLogger = exports.BaseTransport = exports.BaseInstrumentation = exports.BaseExtension = exports.allLogLevels = exports.faro = exports.FetchTransport = exports.ConsoleTransport = exports.sdkMeta = exports.osMeta = exports.createSession = exports.browserMeta = exports.NavigationInstrumentation = exports.UserActionInstrumentation = exports.CSPInstrumentation = exports.PerformanceInstrumentation = exports.SessionInstrumentation = exports.WebVitalsInstrumentation = exports.ViewInstrumentation = exports.parseStacktrace = exports.getStackFramesFromError = exports.getDataFromSafariExtensions = exports.ErrorsInstrumentation = exports.ConsoleInstrumentation = exports.buildStackFrame = exports.initializeFaro = exports.defaultEventDomain = exports.makeCoreConfig = exports.getWebInstrumentations = void 0;
|
|
4
|
+
exports.userActionDataAttribute = exports.getUrlFromResource = exports.getIgnoreUrls = exports.STORAGE_KEY = exports.SESSION_INACTIVITY_TIME = exports.SESSION_EXPIRATION_TIME = exports.MAX_SESSION_PERSISTENCE_TIME = exports.VolatileSessionsManager = exports.PersistentSessionsManager = exports.UserActionState = exports.unknownString = exports.Observable = exports.EVENT_VIEW_CHANGED = exports.EVENT_SESSION_START = exports.EVENT_SESSION_RESUME = exports.EVENT_SESSION_EXTEND = exports.EVENT_ROUTE_CHANGE = exports.EVENT_NAVIGATION = exports.EVENT_CLICK = exports.VERSION = exports.transportItemTypeToBodyKey = exports.TransportItemType = exports.setInternalFaroOnGlobalObject = exports.noop = exports.LogLevel = exports.InternalLoggerLevel = exports.isEmpty = exports.isUndefined = exports.isTypeof = exports.isToString = exports.isThenable = exports.isSyntheticEvent = exports.isSymbol = exports.isString = exports.isRegExp = exports.isPrimitive = exports.isObject = exports.isNumber = exports.isNull = exports.isMapDefined = exports.isMap = exports.isInternalFaroOnGlobalObject = exports.isInt = exports.isInstanceOf = exports.isFunction = exports.isEventDefined = exports.isEvent = void 0;
|
|
5
5
|
var config_1 = require("./config");
|
|
6
6
|
Object.defineProperty(exports, "getWebInstrumentations", { enumerable: true, get: function () { return config_1.getWebInstrumentations; } });
|
|
7
7
|
Object.defineProperty(exports, "makeCoreConfig", { enumerable: true, get: function () { return config_1.makeCoreConfig; } });
|
|
@@ -26,6 +26,7 @@ Object.defineProperty(exports, "NavigationInstrumentation", { enumerable: true,
|
|
|
26
26
|
var metas_1 = require("./metas");
|
|
27
27
|
Object.defineProperty(exports, "browserMeta", { enumerable: true, get: function () { return metas_1.browserMeta; } });
|
|
28
28
|
Object.defineProperty(exports, "createSession", { enumerable: true, get: function () { return metas_1.createSession; } });
|
|
29
|
+
Object.defineProperty(exports, "osMeta", { enumerable: true, get: function () { return metas_1.osMeta; } });
|
|
29
30
|
Object.defineProperty(exports, "sdkMeta", { enumerable: true, get: function () { return metas_1.sdkMeta; } });
|
|
30
31
|
var transports_1 = require("./transports");
|
|
31
32
|
Object.defineProperty(exports, "ConsoleTransport", { enumerable: true, get: function () { return transports_1.ConsoleTransport; } });
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,mCAAkE;AAAzD,gHAAA,sBAAsB,OAAA;AAAE,wGAAA,cAAc,OAAA;AAG/C,mCAA8C;AAArC,4GAAA,kBAAkB,OAAA;AAE3B,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AAEvB,uDAc4B;AAb1B,mHAAA,eAAe,OAAA;AACf,0HAAA,sBAAsB,OAAA;AACtB,yHAAA,qBAAqB,OAAA;AACrB,+HAAA,2BAA2B,OAAA;AAC3B,2HAAA,uBAAuB,OAAA;AACvB,mHAAA,eAAe,OAAA;AACf,uHAAA,mBAAmB,OAAA;AACnB,4HAAA,wBAAwB,OAAA;AACxB,0HAAA,sBAAsB,OAAA;AACtB,8HAAA,0BAA0B,OAAA;AAC1B,sHAAA,kBAAkB,OAAA;AAClB,6HAAA,yBAAyB,OAAA;AACzB,6HAAA,yBAAyB,OAAA;AAI3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,mCAAkE;AAAzD,gHAAA,sBAAsB,OAAA;AAAE,wGAAA,cAAc,OAAA;AAG/C,mCAA8C;AAArC,4GAAA,kBAAkB,OAAA;AAE3B,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AAEvB,uDAc4B;AAb1B,mHAAA,eAAe,OAAA;AACf,0HAAA,sBAAsB,OAAA;AACtB,yHAAA,qBAAqB,OAAA;AACrB,+HAAA,2BAA2B,OAAA;AAC3B,2HAAA,uBAAuB,OAAA;AACvB,mHAAA,eAAe,OAAA;AACf,uHAAA,mBAAmB,OAAA;AACnB,4HAAA,wBAAwB,OAAA;AACxB,0HAAA,sBAAsB,OAAA;AACtB,8HAAA,0BAA0B,OAAA;AAC1B,sHAAA,kBAAkB,OAAA;AAClB,6HAAA,yBAAyB,OAAA;AACzB,6HAAA,yBAAyB,OAAA;AAI3B,iCAAsE;AAA7D,oGAAA,WAAW,OAAA;AAAE,sGAAA,aAAa,OAAA;AAAE,+FAAA,MAAM,OAAA;AAAE,gGAAA,OAAO,OAAA;AAEpD,2CAAgE;AAAvD,8GAAA,gBAAgB,OAAA;AAAE,4GAAA,cAAc,OAAA;AAQzC,gDAmE4B;AAlE1B,iGAAA,IAAI,OAAA;AACJ,yGAAA,YAAY,OAAA;AACZ,0GAAA,aAAa,OAAA;AACb,gHAAA,mBAAmB,OAAA;AACnB,0GAAA,aAAa,OAAA;AACb,iHAAA,oBAAoB,OAAA;AACpB,gHAAA,mBAAmB,OAAA;AACnB,sGAAA,SAAS,OAAA;AACT,iHAAA,oBAAoB,OAAA;AACpB,mHAAA,sBAAsB,OAAA;AACtB,uHAAA,0BAA0B,OAAA;AAC1B,4GAAA,eAAe,OAAA;AACf,uGAAA,UAAU,OAAA;AACV,gHAAA,mBAAmB,OAAA;AACnB,4HAAA,+BAA+B,OAAA;AAC/B,6GAAA,gBAAgB,OAAA;AAChB,yGAAA,YAAY,OAAA;AACZ,oHAAA,uBAAuB,OAAA;AACvB,oGAAA,OAAO,OAAA;AACP,sGAAA,SAAS,OAAA;AACT,uGAAA,UAAU,OAAA;AACV,2GAAA,cAAc,OAAA;AACd,sGAAA,SAAS,OAAA;AACT,6GAAA,gBAAgB,OAAA;AAChB,oGAAA,OAAO,OAAA;AACP,2GAAA,cAAc,OAAA;AACd,yGAAA,YAAY,OAAA;AACZ,oGAAA,OAAO,OAAA;AACP,2GAAA,cAAc,OAAA;AACd,uGAAA,UAAU,OAAA;AACV,yGAAA,YAAY,OAAA;AACZ,kGAAA,KAAK,OAAA;AACL,yHAAA,4BAA4B,OAAA;AAC5B,kGAAA,KAAK,OAAA;AACL,yGAAA,YAAY,OAAA;AACZ,mGAAA,MAAM,OAAA;AACN,qGAAA,QAAQ,OAAA;AACR,qGAAA,QAAQ,OAAA;AACR,wGAAA,WAAW,OAAA;AACX,qGAAA,QAAQ,OAAA;AACR,qGAAA,QAAQ,OAAA;AACR,qGAAA,QAAQ,OAAA;AACR,6GAAA,gBAAgB,OAAA;AAChB,uGAAA,UAAU,OAAA;AACV,uGAAA,UAAU,OAAA;AACV,qGAAA,QAAQ,OAAA;AACR,wGAAA,WAAW,OAAA;AACX,oGAAA,OAAO,OAAA;AACP,gHAAA,mBAAmB,OAAA;AACnB,qGAAA,QAAQ,OAAA;AACR,iGAAA,IAAI,OAAA;AACJ,0HAAA,6BAA6B,OAAA;AAC7B,8GAAA,iBAAiB,OAAA;AACjB,uHAAA,0BAA0B,OAAA;AAC1B,oGAAA,OAAO,OAAA;AACP,wGAAA,WAAW,OAAA;AACX,6GAAA,gBAAgB,OAAA;AAChB,+GAAA,kBAAkB,OAAA;AAClB,iHAAA,oBAAoB,OAAA;AACpB,iHAAA,oBAAoB,OAAA;AACpB,gHAAA,mBAAmB,OAAA;AACnB,+GAAA,kBAAkB,OAAA;AAClB,uGAAA,UAAU,OAAA;AACV,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AAuEjB,sDAOoC;AANlC,oHAAA,yBAAyB,OAAA;AACzB,kHAAA,uBAAuB,OAAA;AACvB,uHAAA,4BAA4B,OAAA;AAC5B,kHAAA,uBAAuB,OAAA;AACvB,kHAAA,uBAAuB,OAAA;AACvB,sGAAA,WAAW,OAAA;AAGb,mCAAgE;AAAvD,oGAAA,aAAa,OAAA;AAAE,yGAAA,kBAAkB,OAAA;AAE1C,8DAAyE;AAAhE,sHAAA,uBAAuB,OAAA","sourcesContent":["export { getWebInstrumentations, makeCoreConfig } from './config';\nexport type { BrowserConfig } from './config';\n\nexport { defaultEventDomain } from './consts';\n\nexport { initializeFaro } from './initialize';\n\nexport {\n buildStackFrame,\n ConsoleInstrumentation,\n ErrorsInstrumentation,\n getDataFromSafariExtensions,\n getStackFramesFromError,\n parseStacktrace,\n ViewInstrumentation,\n WebVitalsInstrumentation,\n SessionInstrumentation,\n PerformanceInstrumentation,\n CSPInstrumentation,\n UserActionInstrumentation,\n NavigationInstrumentation,\n} from './instrumentations';\nexport type { ErrorEvent, ExtendedPromiseRejectionEvent } from './instrumentations';\n\nexport { browserMeta, createSession, osMeta, sdkMeta } from './metas';\n\nexport { ConsoleTransport, FetchTransport } from './transports';\nexport type {\n ClockFn,\n ConsoleTransportOptions,\n FetchTransportOptions,\n FetchTransportRequestOptions,\n} from './transports';\n\nexport {\n faro,\n allLogLevels,\n BaseExtension,\n BaseInstrumentation,\n BaseTransport,\n createInternalLogger,\n createPromiseBuffer,\n deepEqual,\n defaultExceptionType,\n defaultGlobalObjectKey,\n defaultInternalLoggerLevel,\n defaultLogLevel,\n genShortID,\n getCurrentTimestamp,\n getInternalFaroFromGlobalObject,\n getTransportBody,\n globalObject,\n internalGlobalObjectKey,\n isArray,\n isBoolean,\n isDomError,\n isDomException,\n isElement,\n isElementDefined,\n isError,\n isErrorDefined,\n isErrorEvent,\n isEvent,\n isEventDefined,\n isFunction,\n isInstanceOf,\n isInt,\n isInternalFaroOnGlobalObject,\n isMap,\n isMapDefined,\n isNull,\n isNumber,\n isObject,\n isPrimitive,\n isRegExp,\n isString,\n isSymbol,\n isSyntheticEvent,\n isThenable,\n isToString,\n isTypeof,\n isUndefined,\n isEmpty,\n InternalLoggerLevel,\n LogLevel,\n noop,\n setInternalFaroOnGlobalObject,\n TransportItemType,\n transportItemTypeToBodyKey,\n VERSION,\n EVENT_CLICK,\n EVENT_NAVIGATION,\n EVENT_ROUTE_CHANGE,\n EVENT_SESSION_EXTEND,\n EVENT_SESSION_RESUME,\n EVENT_SESSION_START,\n EVENT_VIEW_CHANGED,\n Observable,\n unknownString,\n UserActionState,\n type UserActionInternalInterface,\n} from '@grafana/faro-core';\n\nexport type {\n Faro,\n API,\n APIEvent,\n BaseObject,\n BaseObjectKey,\n BaseObjectPrimitiveValue,\n BaseObjectValue,\n BeforeSendHook,\n BufferItem,\n Config,\n EventAttributes,\n EventEvent,\n EventsAPI,\n ExceptionEvent,\n ExceptionEventExtended,\n ExceptionStackFrame,\n ExceptionsAPI,\n ExtendedError,\n Extension,\n GlobalObject,\n Instrumentation,\n Instrumentations,\n InternalLogger,\n LogContext,\n LogEvent,\n LogsAPI,\n MeasurementEvent,\n MeasurementsAPI,\n Meta,\n MetaAPI,\n MetaApp,\n MetaAttributes,\n MetaBrowser,\n MetaDevice,\n MetaGetter,\n MetaItem,\n MetaOS,\n MetaPage,\n Metas,\n MetaSDK,\n MetaSDKIntegration,\n MetaSession,\n MetaUser,\n MetaView,\n OTELApi,\n Patterns,\n PromiseBuffer,\n PromiseBufferOptions,\n PromiseProducer,\n PushErrorOptions,\n PushLogOptions,\n PushMeasurementOptions,\n Stacktrace,\n StacktraceParser,\n TraceContext,\n TraceEvent,\n TracesAPI,\n Transport,\n TransportBody,\n TransportItem,\n TransportItemPayload,\n Transports,\n UnpatchedConsole,\n UserActionImportance,\n} from '@grafana/faro-core';\n\nexport {\n PersistentSessionsManager,\n VolatileSessionsManager,\n MAX_SESSION_PERSISTENCE_TIME,\n SESSION_EXPIRATION_TIME,\n SESSION_INACTIVITY_TIME,\n STORAGE_KEY,\n} from './instrumentations/session';\n\nexport { getIgnoreUrls, getUrlFromResource } from './utils/url';\n\nexport { userActionDataAttribute } from './instrumentations/userActions';\n"]}
|
package/dist/cjs/initialize.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.initializeFaro = initializeFaro;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const faro_core_1 = require("@grafana/faro-core");
|
|
5
|
+
const config_1 = require("./config");
|
|
6
6
|
function initializeFaro(config) {
|
|
7
|
-
|
|
7
|
+
const coreConfig = (0, config_1.makeCoreConfig)(config);
|
|
8
8
|
if (!coreConfig) {
|
|
9
9
|
return undefined;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../src/initialize.ts"],"names":[],"mappings":";;AAMA,wCAQC;AAdD,
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../src/initialize.ts"],"names":[],"mappings":";;AAMA,wCAQC;AAdD,kDAAgE;AAGhE,qCAA0C;AAG1C,SAAgB,cAAc,CAAC,MAAqB;IAClD,MAAM,UAAU,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;IAE1C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAU,CAAC;IACpB,CAAC;IAED,OAAO,IAAA,0BAAQ,EAAC,UAAU,CAAC,CAAC;AAC9B,CAAC","sourcesContent":["import { initializeFaro as coreInit } from '@grafana/faro-core';\nimport type { Faro } from '@grafana/faro-core';\n\nimport { makeCoreConfig } from './config';\nimport type { BrowserConfig } from './config';\n\nexport function initializeFaro(config: BrowserConfig): Faro {\n const coreConfig = makeCoreConfig(config);\n\n if (!coreConfig) {\n return undefined!;\n }\n\n return coreInit(coreConfig);\n}\n"]}
|
|
@@ -1,25 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
3
|
exports.ActivityWindowTracker = void 0;
|
|
19
4
|
exports.isRequestStartMessage = isRequestStartMessage;
|
|
20
5
|
exports.isRequestEndMessage = isRequestEndMessage;
|
|
21
|
-
|
|
22
|
-
|
|
6
|
+
const faro_core_1 = require("@grafana/faro-core");
|
|
7
|
+
const const_1 = require("./monitors/const");
|
|
23
8
|
function isRequestStartMessage(msg) {
|
|
24
9
|
return msg.type === const_1.MESSAGE_TYPE_HTTP_REQUEST_START;
|
|
25
10
|
}
|
|
@@ -31,64 +16,66 @@ function isRequestEndMessage(msg) {
|
|
|
31
16
|
* it enters a draining phase: new short events are ignored; only active operations are awaited
|
|
32
17
|
* until they end or `drainTimeoutMs` elapses.
|
|
33
18
|
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
function ActivityWindowTracker(eventsObservable, options) {
|
|
19
|
+
class ActivityWindowTracker extends faro_core_1.Observable {
|
|
20
|
+
constructor(eventsObservable, options) {
|
|
37
21
|
var _a, _b, _c, _d;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
22
|
+
super();
|
|
23
|
+
this._tracking = false;
|
|
24
|
+
this.eventsObservable = eventsObservable;
|
|
25
|
+
this._options = {
|
|
42
26
|
inactivityMs: (_a = options === null || options === void 0 ? void 0 : options.inactivityMs) !== null && _a !== void 0 ? _a : 100,
|
|
43
27
|
drainTimeoutMs: (_b = options === null || options === void 0 ? void 0 : options.drainTimeoutMs) !== null && _b !== void 0 ? _b : 10 * 1000,
|
|
44
|
-
isOperationStart: (_c = options === null || options === void 0 ? void 0 : options.isOperationStart) !== null && _c !== void 0 ? _c : (
|
|
45
|
-
isOperationEnd: (_d = options === null || options === void 0 ? void 0 : options.isOperationEnd) !== null && _d !== void 0 ? _d : (
|
|
28
|
+
isOperationStart: (_c = options === null || options === void 0 ? void 0 : options.isOperationStart) !== null && _c !== void 0 ? _c : (() => undefined),
|
|
29
|
+
isOperationEnd: (_d = options === null || options === void 0 ? void 0 : options.isOperationEnd) !== null && _d !== void 0 ? _d : (() => undefined),
|
|
46
30
|
};
|
|
47
|
-
|
|
48
|
-
return _this;
|
|
31
|
+
this._initialize();
|
|
49
32
|
}
|
|
50
|
-
|
|
51
|
-
var _this = this;
|
|
33
|
+
_initialize() {
|
|
52
34
|
this.eventsObservable
|
|
53
|
-
.filter(
|
|
54
|
-
return
|
|
35
|
+
.filter(() => {
|
|
36
|
+
return this._tracking;
|
|
55
37
|
})
|
|
56
|
-
.subscribe(
|
|
38
|
+
.subscribe((event) => {
|
|
57
39
|
var _a, _b, _c;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
40
|
+
// Monotonic clock — used only for the duration delta in `stopTracking()`.
|
|
41
|
+
// Not exposed as an absolute timestamp anywhere.
|
|
42
|
+
this._lastEventTime = (0, faro_core_1.monoNow)();
|
|
43
|
+
(_a = this._currentEvents) === null || _a === void 0 ? void 0 : _a.push(event);
|
|
44
|
+
const startKey = this._options.isOperationStart(event);
|
|
61
45
|
if (startKey) {
|
|
62
|
-
(_b =
|
|
46
|
+
(_b = this._activeOperations) === null || _b === void 0 ? void 0 : _b.set(startKey, true);
|
|
63
47
|
}
|
|
64
|
-
|
|
48
|
+
const endKey = this._options.isOperationEnd(event);
|
|
65
49
|
if (endKey) {
|
|
66
|
-
(_c =
|
|
50
|
+
(_c = this._activeOperations) === null || _c === void 0 ? void 0 : _c.delete(endKey);
|
|
67
51
|
}
|
|
68
|
-
|
|
52
|
+
this._scheduleInactivityCheck();
|
|
69
53
|
});
|
|
70
|
-
}
|
|
71
|
-
|
|
54
|
+
}
|
|
55
|
+
startTracking() {
|
|
72
56
|
if (this._tracking) {
|
|
73
57
|
return;
|
|
74
58
|
}
|
|
75
59
|
this._tracking = true;
|
|
76
|
-
|
|
77
|
-
|
|
60
|
+
// Use a monotonic clock so the resulting `duration` (computed in `stopTracking()`)
|
|
61
|
+
// is immune to wall-clock adjustments (NTP step, manual change, DST) that may
|
|
62
|
+
// occur during the tracking window.
|
|
63
|
+
this._startTime = (0, faro_core_1.monoNow)();
|
|
64
|
+
this._lastEventTime = this._startTime;
|
|
78
65
|
this.notify({
|
|
79
66
|
message: 'tracking-started',
|
|
80
67
|
});
|
|
81
68
|
this._currentEvents = [];
|
|
82
69
|
this._activeOperations = new Map();
|
|
83
70
|
this._scheduleInactivityCheck();
|
|
84
|
-
}
|
|
85
|
-
|
|
71
|
+
}
|
|
72
|
+
stopTracking() {
|
|
86
73
|
this._tracking = false;
|
|
87
74
|
this._clearTimer(this._inactivityTid);
|
|
88
75
|
this._clearTimer(this._drainTid);
|
|
89
|
-
|
|
76
|
+
let duration;
|
|
90
77
|
if (this.hasActiveOperations()) {
|
|
91
|
-
duration =
|
|
78
|
+
duration = (0, faro_core_1.monoNow)() - this._startTime;
|
|
92
79
|
}
|
|
93
80
|
else {
|
|
94
81
|
duration = this._lastEventTime ? this._lastEventTime - this._startTime : 0;
|
|
@@ -98,41 +85,38 @@ var ActivityWindowTracker = /** @class */ (function (_super) {
|
|
|
98
85
|
events: this._currentEvents,
|
|
99
86
|
duration: duration,
|
|
100
87
|
});
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
_this._startDrainTimeout();
|
|
88
|
+
}
|
|
89
|
+
_scheduleInactivityCheck() {
|
|
90
|
+
this._inactivityTid = startTimeout(this._inactivityTid, () => {
|
|
91
|
+
if (this.hasActiveOperations()) {
|
|
92
|
+
this._startDrainTimeout();
|
|
107
93
|
}
|
|
108
94
|
else {
|
|
109
|
-
|
|
95
|
+
this.stopTracking();
|
|
110
96
|
}
|
|
111
97
|
}, this._options.inactivityMs);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
_this.stopTracking();
|
|
98
|
+
}
|
|
99
|
+
_startDrainTimeout() {
|
|
100
|
+
this._drainTid = startTimeout(this._drainTid, () => {
|
|
101
|
+
this.stopTracking();
|
|
117
102
|
}, this._options.drainTimeoutMs);
|
|
118
|
-
}
|
|
119
|
-
|
|
103
|
+
}
|
|
104
|
+
hasActiveOperations() {
|
|
120
105
|
return !!this._activeOperations && this._activeOperations.size > 0;
|
|
121
|
-
}
|
|
122
|
-
|
|
106
|
+
}
|
|
107
|
+
_clearTimer(id) {
|
|
123
108
|
if (id) {
|
|
124
109
|
clearTimeout(id);
|
|
125
110
|
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
}(faro_core_1.Observable));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
129
113
|
exports.ActivityWindowTracker = ActivityWindowTracker;
|
|
130
114
|
function startTimeout(timeoutId, cb, delay) {
|
|
131
115
|
if (timeoutId) {
|
|
132
116
|
clearTimeout(timeoutId);
|
|
133
117
|
}
|
|
134
118
|
//@ts-expect-error for some reason vscode is using the node types
|
|
135
|
-
timeoutId = setTimeout(
|
|
119
|
+
timeoutId = setTimeout(() => {
|
|
136
120
|
cb();
|
|
137
121
|
}, delay);
|
|
138
122
|
return timeoutId;
|