@grafana/faro-web-sdk 2.3.1 → 2.4.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.
Files changed (126) hide show
  1. package/dist/bundle/faro-web-sdk.iife.js +1 -1
  2. package/dist/bundle/types/instrumentations/console/instrumentation.d.ts +1 -1
  3. package/dist/bundle/types/instrumentations/csp/instrumentation.d.ts +1 -1
  4. package/dist/bundle/types/instrumentations/errors/instrumentation.d.ts +1 -1
  5. package/dist/bundle/types/instrumentations/navigation/instrumentation.d.ts +1 -1
  6. package/dist/bundle/types/instrumentations/performance/instrumentation.d.ts +1 -1
  7. package/dist/bundle/types/instrumentations/session/instrumentation.d.ts +1 -1
  8. package/dist/bundle/types/instrumentations/userActions/instrumentation.d.ts +1 -1
  9. package/dist/bundle/types/instrumentations/view/instrumentation.d.ts +1 -1
  10. package/dist/bundle/types/instrumentations/webVitals/instrumentation.d.ts +1 -1
  11. package/dist/bundle/types/transports/console/transport.d.ts +1 -1
  12. package/dist/bundle/types/transports/fetch/transport.d.ts +1 -1
  13. package/dist/cjs/config/getWebInstrumentations.js +3 -4
  14. package/dist/cjs/config/getWebInstrumentations.js.map +1 -1
  15. package/dist/cjs/config/makeCoreConfig.js +48 -60
  16. package/dist/cjs/config/makeCoreConfig.js.map +1 -1
  17. package/dist/cjs/initialize.js +3 -3
  18. package/dist/cjs/initialize.js.map +1 -1
  19. package/dist/cjs/instrumentations/_internal/activityWindowTracker.js +44 -65
  20. package/dist/cjs/instrumentations/_internal/activityWindowTracker.js.map +1 -1
  21. package/dist/cjs/instrumentations/_internal/monitors/consoleMonitor.js +11 -16
  22. package/dist/cjs/instrumentations/_internal/monitors/consoleMonitor.js.map +1 -1
  23. package/dist/cjs/instrumentations/_internal/monitors/domMutationMonitor.js +5 -5
  24. package/dist/cjs/instrumentations/_internal/monitors/domMutationMonitor.js.map +1 -1
  25. package/dist/cjs/instrumentations/_internal/monitors/httpRequestMonitor.js +28 -30
  26. package/dist/cjs/instrumentations/_internal/monitors/httpRequestMonitor.js.map +1 -1
  27. package/dist/cjs/instrumentations/_internal/monitors/interactionMonitor.js +7 -7
  28. package/dist/cjs/instrumentations/_internal/monitors/interactionMonitor.js.map +1 -1
  29. package/dist/cjs/instrumentations/_internal/monitors/performanceEntriesMonitor.js +8 -8
  30. package/dist/cjs/instrumentations/_internal/monitors/performanceEntriesMonitor.js.map +1 -1
  31. package/dist/cjs/instrumentations/_internal/monitors/urlChangeMonitor.js +24 -32
  32. package/dist/cjs/instrumentations/_internal/monitors/urlChangeMonitor.js.map +1 -1
  33. package/dist/cjs/instrumentations/console/instrumentation.js +29 -49
  34. package/dist/cjs/instrumentations/console/instrumentation.js.map +1 -1
  35. package/dist/cjs/instrumentations/csp/instrumentation.js +14 -32
  36. package/dist/cjs/instrumentations/csp/instrumentation.js.map +1 -1
  37. package/dist/cjs/instrumentations/errors/getErrorDetails.js +23 -23
  38. package/dist/cjs/instrumentations/errors/getErrorDetails.js.map +1 -1
  39. package/dist/cjs/instrumentations/errors/getValueAndTypeFromMessage.js +5 -5
  40. package/dist/cjs/instrumentations/errors/getValueAndTypeFromMessage.js.map +1 -1
  41. package/dist/cjs/instrumentations/errors/instrumentation.js +11 -29
  42. package/dist/cjs/instrumentations/errors/instrumentation.js.map +1 -1
  43. package/dist/cjs/instrumentations/errors/registerOnerror.js +6 -10
  44. package/dist/cjs/instrumentations/errors/registerOnerror.js.map +1 -1
  45. package/dist/cjs/instrumentations/errors/registerOnunhandledrejection.js +16 -17
  46. package/dist/cjs/instrumentations/errors/registerOnunhandledrejection.js.map +1 -1
  47. package/dist/cjs/instrumentations/errors/stackFrames/buildStackFrame.js +2 -2
  48. package/dist/cjs/instrumentations/errors/stackFrames/buildStackFrame.js.map +1 -1
  49. package/dist/cjs/instrumentations/errors/stackFrames/getDataFromSafariExtensions.js +4 -4
  50. package/dist/cjs/instrumentations/errors/stackFrames/getDataFromSafariExtensions.js.map +1 -1
  51. package/dist/cjs/instrumentations/errors/stackFrames/getStackFramesFromError.js +16 -17
  52. package/dist/cjs/instrumentations/errors/stackFrames/getStackFramesFromError.js.map +1 -1
  53. package/dist/cjs/instrumentations/errors/stackFrames/parseStacktrace.js +1 -1
  54. package/dist/cjs/instrumentations/errors/stackFrames/parseStacktrace.js.map +1 -1
  55. package/dist/cjs/instrumentations/navigation/instrumentation.js +27 -45
  56. package/dist/cjs/instrumentations/navigation/instrumentation.js.map +1 -1
  57. package/dist/cjs/instrumentations/performance/instrumentation.js +19 -74
  58. package/dist/cjs/instrumentations/performance/instrumentation.js.map +1 -1
  59. package/dist/cjs/instrumentations/performance/navigation.js +15 -26
  60. package/dist/cjs/instrumentations/performance/navigation.js.map +1 -1
  61. package/dist/cjs/instrumentations/performance/performanceUtils.js +18 -33
  62. package/dist/cjs/instrumentations/performance/performanceUtils.js.map +1 -1
  63. package/dist/cjs/instrumentations/performance/resource.js +13 -25
  64. package/dist/cjs/instrumentations/performance/resource.js.map +1 -1
  65. package/dist/cjs/instrumentations/session/instrumentation.js +45 -74
  66. package/dist/cjs/instrumentations/session/instrumentation.js.map +1 -1
  67. package/dist/cjs/instrumentations/session/sessionManager/PersistentSessionsManager.js +21 -24
  68. package/dist/cjs/instrumentations/session/sessionManager/PersistentSessionsManager.js.map +1 -1
  69. package/dist/cjs/instrumentations/session/sessionManager/VolatileSessionManager.js +21 -24
  70. package/dist/cjs/instrumentations/session/sessionManager/VolatileSessionManager.js.map +1 -1
  71. package/dist/cjs/instrumentations/session/sessionManager/getSessionManagerByConfig.js +2 -2
  72. package/dist/cjs/instrumentations/session/sessionManager/getSessionManagerByConfig.js.map +1 -1
  73. package/dist/cjs/instrumentations/session/sessionManager/sampling.js +5 -5
  74. package/dist/cjs/instrumentations/session/sessionManager/sampling.js.map +1 -1
  75. package/dist/cjs/instrumentations/session/sessionManager/sessionManagerUtils.js +47 -65
  76. package/dist/cjs/instrumentations/session/sessionManager/sessionManagerUtils.js.map +1 -1
  77. package/dist/cjs/instrumentations/userActions/instrumentation.js +15 -34
  78. package/dist/cjs/instrumentations/userActions/instrumentation.js.map +1 -1
  79. package/dist/cjs/instrumentations/userActions/processUserActionEventHandler.js +11 -11
  80. package/dist/cjs/instrumentations/userActions/processUserActionEventHandler.js.map +1 -1
  81. package/dist/cjs/instrumentations/userActions/userActionController.js +49 -53
  82. package/dist/cjs/instrumentations/userActions/userActionController.js.map +1 -1
  83. package/dist/cjs/instrumentations/userActions/util.js +4 -4
  84. package/dist/cjs/instrumentations/userActions/util.js.map +1 -1
  85. package/dist/cjs/instrumentations/view/instrumentation.js +12 -30
  86. package/dist/cjs/instrumentations/view/instrumentation.js.map +1 -1
  87. package/dist/cjs/instrumentations/webVitals/instrumentation.js +11 -29
  88. package/dist/cjs/instrumentations/webVitals/instrumentation.js.map +1 -1
  89. package/dist/cjs/instrumentations/webVitals/webVitalsWithAttribution.js +87 -94
  90. package/dist/cjs/instrumentations/webVitals/webVitalsWithAttribution.js.map +1 -1
  91. package/dist/cjs/metas/browser/meta.js +14 -14
  92. package/dist/cjs/metas/browser/meta.js.map +1 -1
  93. package/dist/cjs/metas/k6/meta.js +3 -14
  94. package/dist/cjs/metas/k6/meta.js.map +1 -1
  95. package/dist/cjs/metas/page/meta.js +7 -19
  96. package/dist/cjs/metas/page/meta.js.map +1 -1
  97. package/dist/cjs/metas/sdk/meta.js +3 -3
  98. package/dist/cjs/metas/sdk/meta.js.map +1 -1
  99. package/dist/cjs/metas/session/createSession.js +2 -2
  100. package/dist/cjs/metas/session/createSession.js.map +1 -1
  101. package/dist/cjs/transports/console/transport.js +10 -29
  102. package/dist/cjs/transports/console/transport.js.map +1 -1
  103. package/dist/cjs/transports/fetch/transport.js +82 -176
  104. package/dist/cjs/transports/fetch/transport.js.map +1 -1
  105. package/dist/cjs/utils/throttle.js +6 -10
  106. package/dist/cjs/utils/throttle.js.map +1 -1
  107. package/dist/cjs/utils/url.js +4 -5
  108. package/dist/cjs/utils/url.js.map +1 -1
  109. package/dist/cjs/utils/webStorage.js +4 -4
  110. package/dist/cjs/utils/webStorage.js.map +1 -1
  111. package/dist/esm/instrumentations/errors/getErrorDetails.js +1 -0
  112. package/dist/esm/instrumentations/errors/getErrorDetails.js.map +1 -1
  113. package/dist/esm/transports/fetch/transport.js +1 -1
  114. package/dist/esm/transports/fetch/transport.js.map +1 -1
  115. package/dist/types/instrumentations/console/instrumentation.d.ts +1 -1
  116. package/dist/types/instrumentations/csp/instrumentation.d.ts +1 -1
  117. package/dist/types/instrumentations/errors/instrumentation.d.ts +1 -1
  118. package/dist/types/instrumentations/navigation/instrumentation.d.ts +1 -1
  119. package/dist/types/instrumentations/performance/instrumentation.d.ts +1 -1
  120. package/dist/types/instrumentations/session/instrumentation.d.ts +1 -1
  121. package/dist/types/instrumentations/userActions/instrumentation.d.ts +1 -1
  122. package/dist/types/instrumentations/view/instrumentation.d.ts +1 -1
  123. package/dist/types/instrumentations/webVitals/instrumentation.d.ts +1 -1
  124. package/dist/types/transports/console/transport.d.ts +1 -1
  125. package/dist/types/transports/fetch/transport.d.ts +1 -1
  126. package/package.json +5 -5
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getWebInstrumentations = getWebInstrumentations;
4
- var instrumentations_1 = require("../instrumentations");
5
- function getWebInstrumentations(options) {
6
- if (options === void 0) { options = {}; }
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,wDAU6B;AAI7B,SAAgB,sBAAsB,CAAC,OAA2C;IAA3C,wBAAA,EAAA,YAA2C;IAChF,IAAM,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
+ {"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
- var faro_core_1 = require("@grafana/faro-core");
36
- var consts_1 = require("../consts");
37
- var instrumentations_1 = require("../instrumentations");
38
- var session_1 = require("../instrumentations/session");
39
- var const_1 = require("../instrumentations/userActions/const");
40
- var metas_1 = require("../metas");
41
- var k6_1 = require("../metas/k6");
42
- var page_1 = require("../metas/page");
43
- var transports_1 = require("../transports");
44
- var getWebInstrumentations_1 = require("./getWebInstrumentations");
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
- var transports = [];
48
- var internalLogger = (0, faro_core_1.createInternalLogger)(browserConfig.unpatchedConsole, browserConfig.internalLoggerLevel);
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.apply(transports, browserConfig.transports);
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
- var
65
- // properties with default values
66
- _f = browserConfig.dedupe,
44
+ const {
67
45
  // properties with default values
68
- dedupe = _f === void 0 ? true : _f, _g = browserConfig.eventDomain, eventDomain = _g === void 0 ? consts_1.defaultEventDomain : _g, _h = browserConfig.globalObjectKey, globalObjectKey = _h === void 0 ? faro_core_1.defaultGlobalObjectKey : _h, _j = browserConfig.instrumentations, instrumentations = _j === void 0 ? (0, getWebInstrumentations_1.getWebInstrumentations)() : _j, _k = browserConfig.internalLoggerLevel, internalLoggerLevel = _k === void 0 ? faro_core_1.defaultInternalLoggerLevel : _k, _l = browserConfig.isolate, isolate = _l === void 0 ? false : _l, _m = browserConfig.logArgsSerializer, logArgsSerializer = _m === void 0 ? faro_core_1.defaultLogArgsSerializer : _m, _o = browserConfig.metas, metas = _o === void 0 ? createDefaultMetas(browserConfig) : _o, _p = browserConfig.paused, paused = _p === void 0 ? false : _p, _q = browserConfig.preventGlobalExposure, preventGlobalExposure = _q === void 0 ? false : _q, _r = browserConfig.unpatchedConsole, unpatchedConsole = _r === void 0 ? faro_core_1.defaultUnpatchedConsole : _r, browserConfigUrl = browserConfig.url, experimental = browserConfig.experimental,
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
- var trackNavigation = (_a = experimental === null || experimental === void 0 ? void 0 : experimental.trackNavigation) !== null && _a !== void 0 ? _a : false;
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
- var userActionsInstrumentation = {
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 __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([], ((_e = browserConfig.ignoreUrls) !== null && _e !== void 0 ? _e : []), true), (browserConfigUrl ? [browserConfigUrl] : []), true), [
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
- ], false), sessionTracking: __assign(__assign(__assign({}, session_1.defaultSessionTrackingConfig), browserConfig.sessionTracking), crateSessionMeta({
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: userActionsInstrumentation, experimental: {
85
- trackNavigation: trackNavigation,
74
+ })), userActionsInstrumentation, experimental: {
75
+ trackNavigation,
86
76
  } });
87
77
  }
88
- function getFilteredInstrumentations(instrumentations, _a) {
89
- var _b;
90
- var experimental = _a.experimental;
91
- var trackNavigation = (_b = experimental === null || experimental === void 0 ? void 0 : experimental.trackNavigation) !== null && _b !== void 0 ? _b : false;
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,22 @@ function getFilteredInstrumentations(instrumentations, _a) {
98
87
  }
99
88
  function createDefaultMetas(browserConfig) {
100
89
  var _a, _b;
101
- var _c = (_a = browserConfig === null || browserConfig === void 0 ? void 0 : browserConfig.pageTracking) !== null && _a !== void 0 ? _a : {}, page = _c.page, generatePageId = _c.generatePageId;
102
- var initialMetas = __spreadArray(__spreadArray([
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
- (0, page_1.createPageMeta)({ generatePageId: generatePageId, initialPageMeta: page })
105
- ], ((_b = browserConfig.metas) !== null && _b !== void 0 ? _b : []), true), [
93
+ (0, page_1.createPageMeta)({ generatePageId, initialPageMeta: page }),
94
+ ...((_b = browserConfig.metas) !== null && _b !== void 0 ? _b : []),
106
95
  metas_1.sdkMeta,
107
- ], false);
108
- var isK6BrowserSession = (0, faro_core_1.isObject)(window === null || window === void 0 ? void 0 : window.k6);
96
+ ];
97
+ const isK6BrowserSession = (0, faro_core_1.isObject)(window === null || window === void 0 ? void 0 : window.k6);
109
98
  if (isK6BrowserSession) {
110
- return __spreadArray(__spreadArray([], initialMetas, true), [k6_1.k6Meta], false);
99
+ return [...initialMetas, k6_1.k6Meta];
111
100
  }
112
101
  return initialMetas;
113
102
  }
114
- function crateSessionMeta(_a) {
115
- var _b;
116
- var trackGeolocation = _a.trackGeolocation, sessionTracking = _a.sessionTracking;
117
- var overrides = {};
103
+ function crateSessionMeta({ trackGeolocation, sessionTracking, }) {
104
+ var _a;
105
+ const overrides = {};
118
106
  if ((0, faro_core_1.isBoolean)(trackGeolocation)) {
119
107
  overrides.geoLocationTrackingEnabled = trackGeolocation;
120
108
  }
@@ -122,7 +110,7 @@ function crateSessionMeta(_a) {
122
110
  return {};
123
111
  }
124
112
  return {
125
- session: __assign(__assign({}, ((_b = sessionTracking === null || sessionTracking === void 0 ? void 0 : sessionTracking.session) !== null && _b !== void 0 ? _b : {})), { overrides: overrides }),
113
+ session: Object.assign(Object.assign({}, ((_a = sessionTracking === null || sessionTracking === void 0 ? void 0 : sessionTracking.session) !== null && _a !== void 0 ? _a : {})), { overrides }),
126
114
  };
127
115
  }
128
116
  //# sourceMappingURL=makeCoreConfig.js.map
@@ -1 +1 @@
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, 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 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"]}
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, 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 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"]}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.initializeFaro = initializeFaro;
4
- var faro_core_1 = require("@grafana/faro-core");
5
- var config_1 = require("./config");
4
+ const faro_core_1 = require("@grafana/faro-core");
5
+ const config_1 = require("./config");
6
6
  function initializeFaro(config) {
7
- var coreConfig = (0, config_1.makeCoreConfig)(config);
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,gDAAgE;AAGhE,mCAA0C;AAG1C,SAAgB,cAAc,CAAC,MAAqB;IAClD,IAAM,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
+ {"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
- var faro_core_1 = require("@grafana/faro-core");
22
- var const_1 = require("./monitors/const");
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,44 +16,41 @@ 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
- var ActivityWindowTracker = /** @class */ (function (_super) {
35
- __extends(ActivityWindowTracker, _super);
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
- var _this = _super.call(this) || this;
39
- _this._tracking = false;
40
- _this.eventsObservable = eventsObservable;
41
- _this._options = {
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 : (function () { return undefined; }),
45
- isOperationEnd: (_d = options === null || options === void 0 ? void 0 : options.isOperationEnd) !== null && _d !== void 0 ? _d : (function () { return undefined; }),
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
- _this._initialize();
48
- return _this;
31
+ this._initialize();
49
32
  }
50
- ActivityWindowTracker.prototype._initialize = function () {
51
- var _this = this;
33
+ _initialize() {
52
34
  this.eventsObservable
53
- .filter(function () {
54
- return _this._tracking;
35
+ .filter(() => {
36
+ return this._tracking;
55
37
  })
56
- .subscribe(function (event) {
38
+ .subscribe((event) => {
57
39
  var _a, _b, _c;
58
- _this._lastEventTime = Date.now();
59
- (_a = _this._currentEvents) === null || _a === void 0 ? void 0 : _a.push(event);
60
- var startKey = _this._options.isOperationStart(event);
40
+ this._lastEventTime = Date.now();
41
+ (_a = this._currentEvents) === null || _a === void 0 ? void 0 : _a.push(event);
42
+ const startKey = this._options.isOperationStart(event);
61
43
  if (startKey) {
62
- (_b = _this._activeOperations) === null || _b === void 0 ? void 0 : _b.set(startKey, true);
44
+ (_b = this._activeOperations) === null || _b === void 0 ? void 0 : _b.set(startKey, true);
63
45
  }
64
- var endKey = _this._options.isOperationEnd(event);
46
+ const endKey = this._options.isOperationEnd(event);
65
47
  if (endKey) {
66
- (_c = _this._activeOperations) === null || _c === void 0 ? void 0 : _c.delete(endKey);
48
+ (_c = this._activeOperations) === null || _c === void 0 ? void 0 : _c.delete(endKey);
67
49
  }
68
- _this._scheduleInactivityCheck();
50
+ this._scheduleInactivityCheck();
69
51
  });
70
- };
71
- ActivityWindowTracker.prototype.startTracking = function () {
52
+ }
53
+ startTracking() {
72
54
  if (this._tracking) {
73
55
  return;
74
56
  }
@@ -81,12 +63,12 @@ var ActivityWindowTracker = /** @class */ (function (_super) {
81
63
  this._currentEvents = [];
82
64
  this._activeOperations = new Map();
83
65
  this._scheduleInactivityCheck();
84
- };
85
- ActivityWindowTracker.prototype.stopTracking = function () {
66
+ }
67
+ stopTracking() {
86
68
  this._tracking = false;
87
69
  this._clearTimer(this._inactivityTid);
88
70
  this._clearTimer(this._drainTid);
89
- var duration;
71
+ let duration;
90
72
  if (this.hasActiveOperations()) {
91
73
  duration = Date.now() - this._startTime;
92
74
  }
@@ -98,41 +80,38 @@ var ActivityWindowTracker = /** @class */ (function (_super) {
98
80
  events: this._currentEvents,
99
81
  duration: duration,
100
82
  });
101
- };
102
- ActivityWindowTracker.prototype._scheduleInactivityCheck = function () {
103
- var _this = this;
104
- this._inactivityTid = startTimeout(this._inactivityTid, function () {
105
- if (_this.hasActiveOperations()) {
106
- _this._startDrainTimeout();
83
+ }
84
+ _scheduleInactivityCheck() {
85
+ this._inactivityTid = startTimeout(this._inactivityTid, () => {
86
+ if (this.hasActiveOperations()) {
87
+ this._startDrainTimeout();
107
88
  }
108
89
  else {
109
- _this.stopTracking();
90
+ this.stopTracking();
110
91
  }
111
92
  }, this._options.inactivityMs);
112
- };
113
- ActivityWindowTracker.prototype._startDrainTimeout = function () {
114
- var _this = this;
115
- this._drainTid = startTimeout(this._drainTid, function () {
116
- _this.stopTracking();
93
+ }
94
+ _startDrainTimeout() {
95
+ this._drainTid = startTimeout(this._drainTid, () => {
96
+ this.stopTracking();
117
97
  }, this._options.drainTimeoutMs);
118
- };
119
- ActivityWindowTracker.prototype.hasActiveOperations = function () {
98
+ }
99
+ hasActiveOperations() {
120
100
  return !!this._activeOperations && this._activeOperations.size > 0;
121
- };
122
- ActivityWindowTracker.prototype._clearTimer = function (id) {
101
+ }
102
+ _clearTimer(id) {
123
103
  if (id) {
124
104
  clearTimeout(id);
125
105
  }
126
- };
127
- return ActivityWindowTracker;
128
- }(faro_core_1.Observable));
106
+ }
107
+ }
129
108
  exports.ActivityWindowTracker = ActivityWindowTracker;
130
109
  function startTimeout(timeoutId, cb, delay) {
131
110
  if (timeoutId) {
132
111
  clearTimeout(timeoutId);
133
112
  }
134
113
  //@ts-expect-error for some reason vscode is using the node types
135
- timeoutId = setTimeout(function () {
114
+ timeoutId = setTimeout(() => {
136
115
  cb();
137
116
  }, delay);
138
117
  return timeoutId;
@@ -1 +1 @@
1
- {"version":3,"file":"activityWindowTracker.js","sourceRoot":"","sources":["../../../../src/instrumentations/_internal/activityWindowTracker.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from '@grafana/faro-core';\n\nimport { MESSAGE_TYPE_HTTP_REQUEST_END, MESSAGE_TYPE_HTTP_REQUEST_START } from './monitors/const';\nimport type { HttpRequestEndMessage, HttpRequestStartMessage } from './monitors/types';\n\ntype OperationKey = string;\n\nexport function isRequestStartMessage(msg: any): msg is HttpRequestStartMessage {\n return msg.type === MESSAGE_TYPE_HTTP_REQUEST_START;\n}\n\nexport function isRequestEndMessage(msg: any): msg is HttpRequestEndMessage {\n return msg.type === MESSAGE_TYPE_HTTP_REQUEST_END;\n}\n\nexport interface ActivityWindowTrackerOptions<TMsg = any> {\n inactivityMs?: number;\n drainTimeoutMs?: number;\n isOperationStart?: (msg: TMsg) => OperationKey | undefined;\n isOperationEnd?: (msg: TMsg) => OperationKey | undefined;\n}\n\n/**\n * Tracks events in a time‑boxed activity window. When the window goes quiet for `inactivityMs`,\n * it enters a draining phase: new short events are ignored; only active operations are awaited\n * until they end or `drainTimeoutMs` elapses.\n */\nexport class ActivityWindowTracker extends Observable {\n eventsObservable: Observable;\n\n private _tracking = false;\n private _inactivityTid?: number;\n private _drainTid?: number;\n private _currentEvents?: any[];\n private _activeOperations?: Map<OperationKey, true>;\n private _startTime?: number;\n private _lastEventTime?: number;\n private _options: Required<ActivityWindowTrackerOptions>;\n\n constructor(eventsObservable: Observable, options?: ActivityWindowTrackerOptions) {\n super();\n this.eventsObservable = eventsObservable;\n this._options = {\n inactivityMs: options?.inactivityMs ?? 100,\n drainTimeoutMs: options?.drainTimeoutMs ?? 10 * 1000,\n isOperationStart: options?.isOperationStart ?? (() => undefined),\n isOperationEnd: options?.isOperationEnd ?? (() => undefined),\n } as Required<ActivityWindowTrackerOptions>;\n this._initialize();\n }\n\n private _initialize() {\n this.eventsObservable\n .filter(() => {\n return this._tracking;\n })\n .subscribe((event) => {\n this._lastEventTime = Date.now();\n this._currentEvents?.push(event);\n\n const startKey = this._options.isOperationStart(event as any);\n if (startKey) {\n this._activeOperations?.set(startKey, true);\n }\n\n const endKey = this._options.isOperationEnd(event as any);\n if (endKey) {\n this._activeOperations?.delete(endKey);\n }\n\n this._scheduleInactivityCheck();\n });\n }\n\n startTracking() {\n if (this._tracking) {\n return;\n }\n\n this._tracking = true;\n this._startTime = Date.now();\n this._lastEventTime = Date.now();\n\n this.notify({\n message: 'tracking-started',\n });\n\n this._currentEvents = [];\n this._activeOperations = new Map<OperationKey, true>();\n this._scheduleInactivityCheck();\n }\n\n stopTracking() {\n this._tracking = false;\n this._clearTimer(this._inactivityTid);\n this._clearTimer(this._drainTid);\n\n let duration;\n if (this.hasActiveOperations()) {\n duration = Date.now() - this._startTime!;\n } else {\n duration = this._lastEventTime ? this._lastEventTime - this._startTime! : 0;\n }\n\n this.notify({\n message: 'tracking-ended',\n events: this._currentEvents,\n duration: duration,\n });\n }\n\n private _scheduleInactivityCheck() {\n this._inactivityTid = startTimeout(\n this._inactivityTid,\n () => {\n if (this.hasActiveOperations()) {\n this._startDrainTimeout();\n } else {\n this.stopTracking();\n }\n },\n this._options.inactivityMs\n );\n }\n\n private _startDrainTimeout() {\n this._drainTid = startTimeout(\n this._drainTid,\n () => {\n this.stopTracking();\n },\n this._options.drainTimeoutMs\n );\n }\n\n private hasActiveOperations(): boolean {\n return !!this._activeOperations && this._activeOperations.size > 0;\n }\n\n private _clearTimer(id?: number) {\n if (id) {\n clearTimeout(id);\n }\n }\n}\n\nfunction startTimeout(timeoutId: number | undefined, cb: () => void, delay: number) {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n //@ts-expect-error for some reason vscode is using the node types\n timeoutId = setTimeout(() => {\n cb();\n }, delay);\n\n return timeoutId;\n}\n"]}
1
+ {"version":3,"file":"activityWindowTracker.js","sourceRoot":"","sources":["../../../../src/instrumentations/_internal/activityWindowTracker.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from '@grafana/faro-core';\n\nimport { MESSAGE_TYPE_HTTP_REQUEST_END, MESSAGE_TYPE_HTTP_REQUEST_START } from './monitors/const';\nimport type { HttpRequestEndMessage, HttpRequestStartMessage } from './monitors/types';\n\ntype OperationKey = string;\n\nexport function isRequestStartMessage(msg: any): msg is HttpRequestStartMessage {\n return msg.type === MESSAGE_TYPE_HTTP_REQUEST_START;\n}\n\nexport function isRequestEndMessage(msg: any): msg is HttpRequestEndMessage {\n return msg.type === MESSAGE_TYPE_HTTP_REQUEST_END;\n}\n\nexport interface ActivityWindowTrackerOptions<TMsg = any> {\n inactivityMs?: number;\n drainTimeoutMs?: number;\n isOperationStart?: (msg: TMsg) => OperationKey | undefined;\n isOperationEnd?: (msg: TMsg) => OperationKey | undefined;\n}\n\n/**\n * Tracks events in a time‑boxed activity window. When the window goes quiet for `inactivityMs`,\n * it enters a draining phase: new short events are ignored; only active operations are awaited\n * until they end or `drainTimeoutMs` elapses.\n */\nexport class ActivityWindowTracker extends Observable {\n eventsObservable: Observable;\n\n private _tracking = false;\n private _inactivityTid?: number;\n private _drainTid?: number;\n private _currentEvents?: any[];\n private _activeOperations?: Map<OperationKey, true>;\n private _startTime?: number;\n private _lastEventTime?: number;\n private _options: Required<ActivityWindowTrackerOptions>;\n\n constructor(eventsObservable: Observable, options?: ActivityWindowTrackerOptions) {\n super();\n this.eventsObservable = eventsObservable;\n this._options = {\n inactivityMs: options?.inactivityMs ?? 100,\n drainTimeoutMs: options?.drainTimeoutMs ?? 10 * 1000,\n isOperationStart: options?.isOperationStart ?? (() => undefined),\n isOperationEnd: options?.isOperationEnd ?? (() => undefined),\n } as Required<ActivityWindowTrackerOptions>;\n this._initialize();\n }\n\n private _initialize() {\n this.eventsObservable\n .filter(() => {\n return this._tracking;\n })\n .subscribe((event) => {\n this._lastEventTime = Date.now();\n this._currentEvents?.push(event);\n\n const startKey = this._options.isOperationStart(event as any);\n if (startKey) {\n this._activeOperations?.set(startKey, true);\n }\n\n const endKey = this._options.isOperationEnd(event as any);\n if (endKey) {\n this._activeOperations?.delete(endKey);\n }\n\n this._scheduleInactivityCheck();\n });\n }\n\n startTracking() {\n if (this._tracking) {\n return;\n }\n\n this._tracking = true;\n this._startTime = Date.now();\n this._lastEventTime = Date.now();\n\n this.notify({\n message: 'tracking-started',\n });\n\n this._currentEvents = [];\n this._activeOperations = new Map<OperationKey, true>();\n this._scheduleInactivityCheck();\n }\n\n stopTracking() {\n this._tracking = false;\n this._clearTimer(this._inactivityTid);\n this._clearTimer(this._drainTid);\n\n let duration;\n if (this.hasActiveOperations()) {\n duration = Date.now() - this._startTime!;\n } else {\n duration = this._lastEventTime ? this._lastEventTime - this._startTime! : 0;\n }\n\n this.notify({\n message: 'tracking-ended',\n events: this._currentEvents,\n duration: duration,\n });\n }\n\n private _scheduleInactivityCheck() {\n this._inactivityTid = startTimeout(\n this._inactivityTid,\n () => {\n if (this.hasActiveOperations()) {\n this._startDrainTimeout();\n } else {\n this.stopTracking();\n }\n },\n this._options.inactivityMs\n );\n }\n\n private _startDrainTimeout() {\n this._drainTid = startTimeout(\n this._drainTid,\n () => {\n this.stopTracking();\n },\n this._options.drainTimeoutMs\n );\n }\n\n private hasActiveOperations(): boolean {\n return !!this._activeOperations && this._activeOperations.size > 0;\n }\n\n private _clearTimer(id?: number) {\n if (id) {\n clearTimeout(id);\n }\n }\n}\n\nfunction startTimeout(timeoutId: number | undefined, cb: () => void, delay: number) {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n //@ts-expect-error for some reason vscode is using the node types\n timeoutId = setTimeout(() => {\n cb();\n }, delay);\n\n return timeoutId;\n}\n"]}
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.monitorConsole = monitorConsole;
4
4
  exports.__resetConsoleMonitorForTests = __resetConsoleMonitorForTests;
5
- var faro_core_1 = require("@grafana/faro-core");
6
- var const_1 = require("./const");
7
- var consoleObservable;
8
- var isInstrumented = false;
5
+ const faro_core_1 = require("@grafana/faro-core");
6
+ const const_1 = require("./const");
7
+ let consoleObservable;
8
+ let isInstrumented = false;
9
9
  /**
10
10
  * Monitors console methods and emits events to subscribers.
11
11
  * @param unpatchedConsole - Optional console to call after notifying subscribers.
@@ -17,23 +17,19 @@ function monitorConsole(unpatchedConsole) {
17
17
  consoleObservable = new faro_core_1.Observable();
18
18
  }
19
19
  if (!isInstrumented) {
20
- var originalConsole_1 = unpatchedConsole !== null && unpatchedConsole !== void 0 ? unpatchedConsole : faro_core_1.defaultUnpatchedConsole;
20
+ const originalConsole = unpatchedConsole !== null && unpatchedConsole !== void 0 ? unpatchedConsole : faro_core_1.defaultUnpatchedConsole;
21
21
  // Patch ALL console methods - subscribers decide which levels to process
22
- faro_core_1.allLogLevels.forEach(function (level) {
23
- console[level] = function () {
22
+ faro_core_1.allLogLevels.forEach((level) => {
23
+ console[level] = (...args) => {
24
24
  var _a;
25
- var args = [];
26
- for (var _i = 0; _i < arguments.length; _i++) {
27
- args[_i] = arguments[_i];
28
- }
29
25
  // Notify all subscribers
30
26
  consoleObservable.notify({
31
27
  type: const_1.MESSAGE_TYPE_CONSOLE,
32
- level: level,
33
- args: args,
28
+ level,
29
+ args,
34
30
  });
35
31
  // Call the unpatchedConsole method
36
- (_a = originalConsole_1[level]) === null || _a === void 0 ? void 0 : _a.apply(console, args);
32
+ (_a = originalConsole[level]) === null || _a === void 0 ? void 0 : _a.apply(console, args);
37
33
  };
38
34
  });
39
35
  isInstrumented = true;
@@ -43,8 +39,7 @@ function monitorConsole(unpatchedConsole) {
43
39
  // Test-only utility to reset state between tests
44
40
  function __resetConsoleMonitorForTests() {
45
41
  // Restore original console methods from defaultUnpatchedConsole
46
- for (var _i = 0, allLogLevels_1 = faro_core_1.allLogLevels; _i < allLogLevels_1.length; _i++) {
47
- var level = allLogLevels_1[_i];
42
+ for (const level of faro_core_1.allLogLevels) {
48
43
  if (faro_core_1.defaultUnpatchedConsole[level]) {
49
44
  console[level] = faro_core_1.defaultUnpatchedConsole[level];
50
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"consoleMonitor.js","sourceRoot":"","sources":["../../../../../src/instrumentations/_internal/monitors/consoleMonitor.ts"],"names":[],"mappings":";;AAeA,wCA2BC;AAGD,sEAUC;AAvDD,gDAAuF;AAGvF,iCAA+C;AAG/C,IAAI,iBAAyD,CAAC;AAC9D,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,gBAAmC;IAChE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,iBAAiB,GAAG,IAAI,sBAAU,EAAkB,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,IAAM,iBAAe,GAAG,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,mCAAuB,CAAC;QAEpE,yEAAyE;QACzE,wBAAY,CAAC,OAAO,CAAC,UAAC,KAAK;YACzB,OAAO,CAAC,KAAK,CAAC,GAAG;;gBAAC,cAAkB;qBAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;oBAAlB,yBAAkB;;gBAClC,yBAAyB;gBACzB,iBAAkB,CAAC,MAAM,CAAC;oBACxB,IAAI,EAAE,4BAAoB;oBAC1B,KAAK,OAAA;oBACL,IAAI,MAAA;iBACL,CAAC,CAAC;gBAEH,mCAAmC;gBACnC,MAAA,iBAAe,CAAC,KAAK,CAAC,0CAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,iDAAiD;AACjD,SAAgB,6BAA6B;IAC3C,gEAAgE;IAChE,KAAoB,UAAY,EAAZ,iBAAA,wBAAY,EAAZ,0BAAY,EAAZ,IAAY,EAAE,CAAC;QAA9B,IAAM,KAAK,qBAAA;QACd,IAAI,mCAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,GAAG,mCAAuB,CAAC,KAAK,CAAuB,CAAC;QACxE,CAAC;IACH,CAAC;IAED,iBAAiB,GAAG,SAAS,CAAC;IAC9B,cAAc,GAAG,KAAK,CAAC;AACzB,CAAC","sourcesContent":["import { allLogLevels, defaultUnpatchedConsole, Observable } from '@grafana/faro-core';\nimport type { UnpatchedConsole } from '@grafana/faro-core';\n\nimport { MESSAGE_TYPE_CONSOLE } from './const';\nimport type { ConsoleMessage } from './types';\n\nlet consoleObservable: Observable<ConsoleMessage> | undefined;\nlet isInstrumented = false;\n\n/**\n * Monitors console methods and emits events to subscribers.\n * @param unpatchedConsole - Optional console to call after notifying subscribers.\n * Only the first caller's value is used (since we patch once).\n * Defaults to defaultUnpatchedConsole.\n */\nexport function monitorConsole(unpatchedConsole?: UnpatchedConsole): Observable<ConsoleMessage> {\n if (!consoleObservable) {\n consoleObservable = new Observable<ConsoleMessage>();\n }\n\n if (!isInstrumented) {\n const originalConsole = unpatchedConsole ?? defaultUnpatchedConsole;\n\n // Patch ALL console methods - subscribers decide which levels to process\n allLogLevels.forEach((level) => {\n console[level] = (...args: unknown[]) => {\n // Notify all subscribers\n consoleObservable!.notify({\n type: MESSAGE_TYPE_CONSOLE,\n level,\n args,\n });\n\n // Call the unpatchedConsole method\n originalConsole[level]?.apply(console, args);\n };\n });\n\n isInstrumented = true;\n }\n\n return consoleObservable;\n}\n\n// Test-only utility to reset state between tests\nexport function __resetConsoleMonitorForTests() {\n // Restore original console methods from defaultUnpatchedConsole\n for (const level of allLogLevels) {\n if (defaultUnpatchedConsole[level]) {\n console[level] = defaultUnpatchedConsole[level] as typeof console.log;\n }\n }\n\n consoleObservable = undefined;\n isInstrumented = false;\n}\n"]}
1
+ {"version":3,"file":"consoleMonitor.js","sourceRoot":"","sources":["../../../../../src/instrumentations/_internal/monitors/consoleMonitor.ts"],"names":[],"mappings":";;AAeA,wCA2BC;AAGD,sEAUC;AAvDD,kDAAuF;AAGvF,mCAA+C;AAG/C,IAAI,iBAAyD,CAAC;AAC9D,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,gBAAmC;IAChE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,iBAAiB,GAAG,IAAI,sBAAU,EAAkB,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,eAAe,GAAG,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,mCAAuB,CAAC;QAEpE,yEAAyE;QACzE,wBAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;;gBACtC,yBAAyB;gBACzB,iBAAkB,CAAC,MAAM,CAAC;oBACxB,IAAI,EAAE,4BAAoB;oBAC1B,KAAK;oBACL,IAAI;iBACL,CAAC,CAAC;gBAEH,mCAAmC;gBACnC,MAAA,eAAe,CAAC,KAAK,CAAC,0CAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,iDAAiD;AACjD,SAAgB,6BAA6B;IAC3C,gEAAgE;IAChE,KAAK,MAAM,KAAK,IAAI,wBAAY,EAAE,CAAC;QACjC,IAAI,mCAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,GAAG,mCAAuB,CAAC,KAAK,CAAuB,CAAC;QACxE,CAAC;IACH,CAAC;IAED,iBAAiB,GAAG,SAAS,CAAC;IAC9B,cAAc,GAAG,KAAK,CAAC;AACzB,CAAC","sourcesContent":["import { allLogLevels, defaultUnpatchedConsole, Observable } from '@grafana/faro-core';\nimport type { UnpatchedConsole } from '@grafana/faro-core';\n\nimport { MESSAGE_TYPE_CONSOLE } from './const';\nimport type { ConsoleMessage } from './types';\n\nlet consoleObservable: Observable<ConsoleMessage> | undefined;\nlet isInstrumented = false;\n\n/**\n * Monitors console methods and emits events to subscribers.\n * @param unpatchedConsole - Optional console to call after notifying subscribers.\n * Only the first caller's value is used (since we patch once).\n * Defaults to defaultUnpatchedConsole.\n */\nexport function monitorConsole(unpatchedConsole?: UnpatchedConsole): Observable<ConsoleMessage> {\n if (!consoleObservable) {\n consoleObservable = new Observable<ConsoleMessage>();\n }\n\n if (!isInstrumented) {\n const originalConsole = unpatchedConsole ?? defaultUnpatchedConsole;\n\n // Patch ALL console methods - subscribers decide which levels to process\n allLogLevels.forEach((level) => {\n console[level] = (...args: unknown[]) => {\n // Notify all subscribers\n consoleObservable!.notify({\n type: MESSAGE_TYPE_CONSOLE,\n level,\n args,\n });\n\n // Call the unpatchedConsole method\n originalConsole[level]?.apply(console, args);\n };\n });\n\n isInstrumented = true;\n }\n\n return consoleObservable;\n}\n\n// Test-only utility to reset state between tests\nexport function __resetConsoleMonitorForTests() {\n // Restore original console methods from defaultUnpatchedConsole\n for (const level of allLogLevels) {\n if (defaultUnpatchedConsole[level]) {\n console[level] = defaultUnpatchedConsole[level] as typeof console.log;\n }\n }\n\n consoleObservable = undefined;\n isInstrumented = false;\n}\n"]}
@@ -2,16 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.monitorDomMutations = monitorDomMutations;
4
4
  exports.__resetDomMutationMonitorForTests = __resetDomMutationMonitorForTests;
5
- var faro_core_1 = require("@grafana/faro-core");
6
- var const_1 = require("./const");
7
- var domMutationObservable;
8
- var domMutationObserver;
5
+ const faro_core_1 = require("@grafana/faro-core");
6
+ const const_1 = require("./const");
7
+ let domMutationObservable;
8
+ let domMutationObserver;
9
9
  function monitorDomMutations() {
10
10
  if (!domMutationObservable) {
11
11
  domMutationObservable = new faro_core_1.Observable();
12
12
  }
13
13
  if (!domMutationObserver) {
14
- domMutationObserver = new MutationObserver(function (_mutationsList, _observer) {
14
+ domMutationObserver = new MutationObserver((_mutationsList, _observer) => {
15
15
  domMutationObservable.notify({ type: const_1.MESSAGE_TYPE_DOM_MUTATION });
16
16
  });
17
17
  domMutationObserver.observe(document, {
@@ -1 +1 @@
1
- {"version":3,"file":"domMutationMonitor.js","sourceRoot":"","sources":["../../../../../src/instrumentations/_internal/monitors/domMutationMonitor.ts"],"names":[],"mappings":";;AAQA,kDAmBC;AAGD,8EAMC;AApCD,gDAAgD;AAEhD,iCAAoD;AAGpD,IAAI,qBAAiE,CAAC;AACtE,IAAI,mBAAiD,CAAC;AAEtD,SAAgB,mBAAmB;IACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,qBAAqB,GAAG,IAAI,sBAAU,EAAsB,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,mBAAmB,GAAG,IAAI,gBAAgB,CAAC,UAAC,cAAc,EAAE,SAAS;YACnE,qBAAsB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,iCAAyB,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE;YACpC,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,iDAAiD;AACjD,SAAgB,iCAAiC;IAC/C,IAAI,mBAAmB,EAAE,CAAC;QACxB,mBAAmB,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IACD,mBAAmB,GAAG,SAAS,CAAC;IAChC,qBAAqB,GAAG,SAAS,CAAC;AACpC,CAAC","sourcesContent":["import { Observable } from '@grafana/faro-core';\n\nimport { MESSAGE_TYPE_DOM_MUTATION } from './const';\nimport type { DomMutationMessage } from './types';\n\nlet domMutationObservable: Observable<DomMutationMessage> | undefined;\nlet domMutationObserver: MutationObserver | undefined;\n\nexport function monitorDomMutations(): Observable<DomMutationMessage> {\n if (!domMutationObservable) {\n domMutationObservable = new Observable<DomMutationMessage>();\n }\n\n if (!domMutationObserver) {\n domMutationObserver = new MutationObserver((_mutationsList, _observer) => {\n domMutationObservable!.notify({ type: MESSAGE_TYPE_DOM_MUTATION });\n });\n\n domMutationObserver.observe(document, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n\n return domMutationObservable;\n}\n\n// Test-only utility to reset state between tests\nexport function __resetDomMutationMonitorForTests() {\n if (domMutationObserver) {\n domMutationObserver.disconnect();\n }\n domMutationObserver = undefined;\n domMutationObservable = undefined;\n}\n"]}
1
+ {"version":3,"file":"domMutationMonitor.js","sourceRoot":"","sources":["../../../../../src/instrumentations/_internal/monitors/domMutationMonitor.ts"],"names":[],"mappings":";;AAQA,kDAmBC;AAGD,8EAMC;AApCD,kDAAgD;AAEhD,mCAAoD;AAGpD,IAAI,qBAAiE,CAAC;AACtE,IAAI,mBAAiD,CAAC;AAEtD,SAAgB,mBAAmB;IACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,qBAAqB,GAAG,IAAI,sBAAU,EAAsB,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,mBAAmB,GAAG,IAAI,gBAAgB,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE;YACvE,qBAAsB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,iCAAyB,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE;YACpC,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,iDAAiD;AACjD,SAAgB,iCAAiC;IAC/C,IAAI,mBAAmB,EAAE,CAAC;QACxB,mBAAmB,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IACD,mBAAmB,GAAG,SAAS,CAAC;IAChC,qBAAqB,GAAG,SAAS,CAAC;AACpC,CAAC","sourcesContent":["import { Observable } from '@grafana/faro-core';\n\nimport { MESSAGE_TYPE_DOM_MUTATION } from './const';\nimport type { DomMutationMessage } from './types';\n\nlet domMutationObservable: Observable<DomMutationMessage> | undefined;\nlet domMutationObserver: MutationObserver | undefined;\n\nexport function monitorDomMutations(): Observable<DomMutationMessage> {\n if (!domMutationObservable) {\n domMutationObservable = new Observable<DomMutationMessage>();\n }\n\n if (!domMutationObserver) {\n domMutationObserver = new MutationObserver((_mutationsList, _observer) => {\n domMutationObservable!.notify({ type: MESSAGE_TYPE_DOM_MUTATION });\n });\n\n domMutationObserver.observe(document, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n\n return domMutationObservable;\n}\n\n// Test-only utility to reset state between tests\nexport function __resetDomMutationMonitorForTests() {\n if (domMutationObserver) {\n domMutationObserver.disconnect();\n }\n domMutationObserver = undefined;\n domMutationObservable = undefined;\n}\n"]}