@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.
Files changed (169) hide show
  1. package/README.md +1 -0
  2. package/dist/bundle/faro-web-sdk.iife.js +1 -1
  3. package/dist/bundle/types/index.d.ts +2 -2
  4. package/dist/bundle/types/instrumentations/console/instrumentation.d.ts +1 -1
  5. package/dist/bundle/types/instrumentations/csp/instrumentation.d.ts +1 -1
  6. package/dist/bundle/types/instrumentations/errors/instrumentation.d.ts +1 -1
  7. package/dist/bundle/types/instrumentations/navigation/instrumentation.d.ts +1 -1
  8. package/dist/bundle/types/instrumentations/performance/instrumentation.d.ts +1 -1
  9. package/dist/bundle/types/instrumentations/session/instrumentation.d.ts +1 -1
  10. package/dist/bundle/types/instrumentations/userActions/instrumentation.d.ts +1 -1
  11. package/dist/bundle/types/instrumentations/view/instrumentation.d.ts +1 -1
  12. package/dist/bundle/types/instrumentations/webVitals/instrumentation.d.ts +1 -1
  13. package/dist/bundle/types/metas/index.d.ts +1 -0
  14. package/dist/bundle/types/metas/os/index.d.ts +1 -0
  15. package/dist/bundle/types/metas/os/meta.d.ts +2 -0
  16. package/dist/bundle/types/metas/shared/index.d.ts +1 -0
  17. package/dist/bundle/types/metas/shared/uaParser.d.ts +4 -0
  18. package/dist/bundle/types/transports/console/transport.d.ts +1 -1
  19. package/dist/bundle/types/transports/fetch/transport.d.ts +1 -1
  20. package/dist/cjs/config/getWebInstrumentations.js +3 -4
  21. package/dist/cjs/config/getWebInstrumentations.js.map +1 -1
  22. package/dist/cjs/config/makeCoreConfig.js +49 -60
  23. package/dist/cjs/config/makeCoreConfig.js.map +1 -1
  24. package/dist/cjs/index.js +3 -2
  25. package/dist/cjs/index.js.map +1 -1
  26. package/dist/cjs/initialize.js +3 -3
  27. package/dist/cjs/initialize.js.map +1 -1
  28. package/dist/cjs/instrumentations/_internal/activityWindowTracker.js +52 -68
  29. package/dist/cjs/instrumentations/_internal/activityWindowTracker.js.map +1 -1
  30. package/dist/cjs/instrumentations/_internal/monitors/consoleMonitor.js +11 -16
  31. package/dist/cjs/instrumentations/_internal/monitors/consoleMonitor.js.map +1 -1
  32. package/dist/cjs/instrumentations/_internal/monitors/domMutationMonitor.js +5 -5
  33. package/dist/cjs/instrumentations/_internal/monitors/domMutationMonitor.js.map +1 -1
  34. package/dist/cjs/instrumentations/_internal/monitors/httpRequestMonitor.js +28 -30
  35. package/dist/cjs/instrumentations/_internal/monitors/httpRequestMonitor.js.map +1 -1
  36. package/dist/cjs/instrumentations/_internal/monitors/interactionMonitor.js +7 -7
  37. package/dist/cjs/instrumentations/_internal/monitors/interactionMonitor.js.map +1 -1
  38. package/dist/cjs/instrumentations/_internal/monitors/performanceEntriesMonitor.js +8 -8
  39. package/dist/cjs/instrumentations/_internal/monitors/performanceEntriesMonitor.js.map +1 -1
  40. package/dist/cjs/instrumentations/_internal/monitors/urlChangeMonitor.js +24 -32
  41. package/dist/cjs/instrumentations/_internal/monitors/urlChangeMonitor.js.map +1 -1
  42. package/dist/cjs/instrumentations/console/instrumentation.js +29 -49
  43. package/dist/cjs/instrumentations/console/instrumentation.js.map +1 -1
  44. package/dist/cjs/instrumentations/csp/instrumentation.js +14 -32
  45. package/dist/cjs/instrumentations/csp/instrumentation.js.map +1 -1
  46. package/dist/cjs/instrumentations/errors/getErrorDetails.js +23 -23
  47. package/dist/cjs/instrumentations/errors/getErrorDetails.js.map +1 -1
  48. package/dist/cjs/instrumentations/errors/getValueAndTypeFromMessage.js +5 -5
  49. package/dist/cjs/instrumentations/errors/getValueAndTypeFromMessage.js.map +1 -1
  50. package/dist/cjs/instrumentations/errors/instrumentation.js +11 -29
  51. package/dist/cjs/instrumentations/errors/instrumentation.js.map +1 -1
  52. package/dist/cjs/instrumentations/errors/registerOnerror.js +6 -10
  53. package/dist/cjs/instrumentations/errors/registerOnerror.js.map +1 -1
  54. package/dist/cjs/instrumentations/errors/registerOnunhandledrejection.js +16 -17
  55. package/dist/cjs/instrumentations/errors/registerOnunhandledrejection.js.map +1 -1
  56. package/dist/cjs/instrumentations/errors/stackFrames/buildStackFrame.js +2 -2
  57. package/dist/cjs/instrumentations/errors/stackFrames/buildStackFrame.js.map +1 -1
  58. package/dist/cjs/instrumentations/errors/stackFrames/getDataFromSafariExtensions.js +4 -4
  59. package/dist/cjs/instrumentations/errors/stackFrames/getDataFromSafariExtensions.js.map +1 -1
  60. package/dist/cjs/instrumentations/errors/stackFrames/getStackFramesFromError.js +16 -17
  61. package/dist/cjs/instrumentations/errors/stackFrames/getStackFramesFromError.js.map +1 -1
  62. package/dist/cjs/instrumentations/errors/stackFrames/parseStacktrace.js +1 -1
  63. package/dist/cjs/instrumentations/errors/stackFrames/parseStacktrace.js.map +1 -1
  64. package/dist/cjs/instrumentations/navigation/instrumentation.js +27 -45
  65. package/dist/cjs/instrumentations/navigation/instrumentation.js.map +1 -1
  66. package/dist/cjs/instrumentations/performance/instrumentation.js +19 -74
  67. package/dist/cjs/instrumentations/performance/instrumentation.js.map +1 -1
  68. package/dist/cjs/instrumentations/performance/navigation.js +15 -26
  69. package/dist/cjs/instrumentations/performance/navigation.js.map +1 -1
  70. package/dist/cjs/instrumentations/performance/performanceUtils.js +18 -33
  71. package/dist/cjs/instrumentations/performance/performanceUtils.js.map +1 -1
  72. package/dist/cjs/instrumentations/performance/resource.js +13 -25
  73. package/dist/cjs/instrumentations/performance/resource.js.map +1 -1
  74. package/dist/cjs/instrumentations/session/instrumentation.js +45 -74
  75. package/dist/cjs/instrumentations/session/instrumentation.js.map +1 -1
  76. package/dist/cjs/instrumentations/session/sessionManager/PersistentSessionsManager.js +21 -24
  77. package/dist/cjs/instrumentations/session/sessionManager/PersistentSessionsManager.js.map +1 -1
  78. package/dist/cjs/instrumentations/session/sessionManager/VolatileSessionManager.js +21 -24
  79. package/dist/cjs/instrumentations/session/sessionManager/VolatileSessionManager.js.map +1 -1
  80. package/dist/cjs/instrumentations/session/sessionManager/getSessionManagerByConfig.js +2 -2
  81. package/dist/cjs/instrumentations/session/sessionManager/getSessionManagerByConfig.js.map +1 -1
  82. package/dist/cjs/instrumentations/session/sessionManager/sampling.js +5 -5
  83. package/dist/cjs/instrumentations/session/sessionManager/sampling.js.map +1 -1
  84. package/dist/cjs/instrumentations/session/sessionManager/sessionManagerUtils.js +47 -65
  85. package/dist/cjs/instrumentations/session/sessionManager/sessionManagerUtils.js.map +1 -1
  86. package/dist/cjs/instrumentations/userActions/instrumentation.js +15 -34
  87. package/dist/cjs/instrumentations/userActions/instrumentation.js.map +1 -1
  88. package/dist/cjs/instrumentations/userActions/processUserActionEventHandler.js +11 -11
  89. package/dist/cjs/instrumentations/userActions/processUserActionEventHandler.js.map +1 -1
  90. package/dist/cjs/instrumentations/userActions/userActionController.js +49 -53
  91. package/dist/cjs/instrumentations/userActions/userActionController.js.map +1 -1
  92. package/dist/cjs/instrumentations/userActions/util.js +4 -4
  93. package/dist/cjs/instrumentations/userActions/util.js.map +1 -1
  94. package/dist/cjs/instrumentations/view/instrumentation.js +12 -30
  95. package/dist/cjs/instrumentations/view/instrumentation.js.map +1 -1
  96. package/dist/cjs/instrumentations/webVitals/instrumentation.js +11 -29
  97. package/dist/cjs/instrumentations/webVitals/instrumentation.js.map +1 -1
  98. package/dist/cjs/instrumentations/webVitals/webVitalsWithAttribution.js +87 -94
  99. package/dist/cjs/instrumentations/webVitals/webVitalsWithAttribution.js.map +1 -1
  100. package/dist/cjs/metas/browser/meta.js +13 -14
  101. package/dist/cjs/metas/browser/meta.js.map +1 -1
  102. package/dist/cjs/metas/index.js +3 -1
  103. package/dist/cjs/metas/index.js.map +1 -1
  104. package/dist/cjs/metas/k6/meta.js +3 -14
  105. package/dist/cjs/metas/k6/meta.js.map +1 -1
  106. package/dist/cjs/metas/os/index.js +6 -0
  107. package/dist/cjs/metas/os/index.js.map +1 -0
  108. package/dist/cjs/metas/os/meta.js +20 -0
  109. package/dist/cjs/metas/os/meta.js.map +1 -0
  110. package/dist/cjs/metas/page/meta.js +7 -19
  111. package/dist/cjs/metas/page/meta.js.map +1 -1
  112. package/dist/cjs/metas/sdk/meta.js +3 -3
  113. package/dist/cjs/metas/sdk/meta.js.map +1 -1
  114. package/dist/cjs/metas/session/createSession.js +2 -2
  115. package/dist/cjs/metas/session/createSession.js.map +1 -1
  116. package/dist/cjs/metas/shared/index.js +6 -0
  117. package/dist/cjs/metas/shared/index.js.map +1 -0
  118. package/dist/cjs/metas/shared/uaParser.js +18 -0
  119. package/dist/cjs/metas/shared/uaParser.js.map +1 -0
  120. package/dist/cjs/transports/console/transport.js +10 -29
  121. package/dist/cjs/transports/console/transport.js.map +1 -1
  122. package/dist/cjs/transports/fetch/transport.js +82 -176
  123. package/dist/cjs/transports/fetch/transport.js.map +1 -1
  124. package/dist/cjs/utils/throttle.js +6 -10
  125. package/dist/cjs/utils/throttle.js.map +1 -1
  126. package/dist/cjs/utils/url.js +4 -5
  127. package/dist/cjs/utils/url.js.map +1 -1
  128. package/dist/cjs/utils/webStorage.js +4 -4
  129. package/dist/cjs/utils/webStorage.js.map +1 -1
  130. package/dist/esm/config/makeCoreConfig.js +2 -1
  131. package/dist/esm/config/makeCoreConfig.js.map +1 -1
  132. package/dist/esm/index.js +1 -1
  133. package/dist/esm/index.js.map +1 -1
  134. package/dist/esm/instrumentations/_internal/activityWindowTracker.js +10 -5
  135. package/dist/esm/instrumentations/_internal/activityWindowTracker.js.map +1 -1
  136. package/dist/esm/instrumentations/errors/getErrorDetails.js +1 -0
  137. package/dist/esm/instrumentations/errors/getErrorDetails.js.map +1 -1
  138. package/dist/esm/metas/browser/meta.js +5 -6
  139. package/dist/esm/metas/browser/meta.js.map +1 -1
  140. package/dist/esm/metas/index.js +1 -0
  141. package/dist/esm/metas/index.js.map +1 -1
  142. package/dist/esm/metas/os/index.js +2 -0
  143. package/dist/esm/metas/os/index.js.map +1 -0
  144. package/dist/esm/metas/os/meta.js +16 -0
  145. package/dist/esm/metas/os/meta.js.map +1 -0
  146. package/dist/esm/metas/shared/index.js +2 -0
  147. package/dist/esm/metas/shared/index.js.map +1 -0
  148. package/dist/esm/metas/shared/uaParser.js +15 -0
  149. package/dist/esm/metas/shared/uaParser.js.map +1 -0
  150. package/dist/esm/transports/fetch/transport.js +1 -1
  151. package/dist/esm/transports/fetch/transport.js.map +1 -1
  152. package/dist/types/index.d.ts +2 -2
  153. package/dist/types/instrumentations/console/instrumentation.d.ts +1 -1
  154. package/dist/types/instrumentations/csp/instrumentation.d.ts +1 -1
  155. package/dist/types/instrumentations/errors/instrumentation.d.ts +1 -1
  156. package/dist/types/instrumentations/navigation/instrumentation.d.ts +1 -1
  157. package/dist/types/instrumentations/performance/instrumentation.d.ts +1 -1
  158. package/dist/types/instrumentations/session/instrumentation.d.ts +1 -1
  159. package/dist/types/instrumentations/userActions/instrumentation.d.ts +1 -1
  160. package/dist/types/instrumentations/view/instrumentation.d.ts +1 -1
  161. package/dist/types/instrumentations/webVitals/instrumentation.d.ts +1 -1
  162. package/dist/types/metas/index.d.ts +1 -0
  163. package/dist/types/metas/os/index.d.ts +1 -0
  164. package/dist/types/metas/os/meta.d.ts +2 -0
  165. package/dist/types/metas/shared/index.d.ts +1 -0
  166. package/dist/types/metas/shared/uaParser.d.ts +4 -0
  167. package/dist/types/transports/console/transport.d.ts +1 -1
  168. package/dist/types/transports/fetch/transport.d.ts +1 -1
  169. 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.3.1";
4
+ readonly version = "2.5.0";
5
5
  initialize(): void;
6
6
  }
@@ -1,3 +1,4 @@
1
1
  export { browserMeta } from './browser';
2
+ export { osMeta } from './os';
2
3
  export { createSession } from './session';
3
4
  export { sdkMeta } from './sdk';
@@ -0,0 +1 @@
1
+ export { osMeta } from './meta';
@@ -0,0 +1,2 @@
1
+ import type { Meta, MetaGetter } from '@grafana/faro-core';
2
+ export declare const osMeta: MetaGetter<Pick<Meta, 'os'>>;
@@ -0,0 +1 @@
1
+ export { getUAResult } from './uaParser';
@@ -0,0 +1,4 @@
1
+ import { UAParser } from 'ua-parser-js';
2
+ type UAResult = ReturnType<InstanceType<typeof UAParser>['getResult']>;
3
+ export declare function getUAResult(): UAResult;
4
+ export {};
@@ -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.3.1";
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.3.1";
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
- 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,23 @@ 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
+ 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
- ], false);
108
- var isK6BrowserSession = (0, faro_core_1.isObject)(window === null || window === void 0 ? void 0 : window.k6);
97
+ ];
98
+ const isK6BrowserSession = (0, faro_core_1.isObject)(window === null || window === void 0 ? void 0 : window.k6);
109
99
  if (isK6BrowserSession) {
110
- return __spreadArray(__spreadArray([], initialMetas, true), [k6_1.k6Meta], false);
100
+ return [...initialMetas, k6_1.k6Meta];
111
101
  }
112
102
  return initialMetas;
113
103
  }
114
- function crateSessionMeta(_a) {
115
- var _b;
116
- var trackGeolocation = _a.trackGeolocation, sessionTracking = _a.sessionTracking;
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: __assign(__assign({}, ((_b = sessionTracking === null || sessionTracking === void 0 ? void 0 : sessionTracking.session) !== null && _b !== void 0 ? _b : {})), { overrides: overrides }),
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,wCA0FC;AAnHD,gDAU4B;AAG5B,oCAA+C;AAC/C,wDAAsD;AACtD,uDAA2E;AAC3E,+DAAgF;AAChF,kCAAgD;AAChD,kCAAqC;AACrC,sCAA+C;AAC/C,4CAA+C;AAE/C,mEAAkE;AAGlE,SAAgB,cAAc,CAAC,aAA4B;;IACzD,IAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,IAAM,cAAc,GAAG,IAAA,gCAAoB,EAAC,aAAa,CAAC,gBAAgB,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAE/G,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;QAC7B,IAAI,aAAa,CAAC,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YAC9C,cAAc,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC/F,CAAC;QAED,UAAU,CAAC,IAAI,OAAf,UAAU,EAAS,aAAa,CAAC,UAAU,EAAE;IAC/C,CAAC;SAAM,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC;QAC7B,UAAU,CAAC,IAAI,CACb,IAAI,2BAAc,CAAC;YACjB,GAAG,EAAE,aAAa,CAAC,GAAG;YACtB,MAAM,EAAE,aAAa,CAAC,MAAM;SAC7B,CAAC,CACH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACvE,CAAC;IAIC;IADA,iCAAiC;IACjC,KAeiB,aAAa,OAfjB;IADb,iCAAiC;IACjC,MAAM,mBAAG,IAAI,KAAA,EACb,KAciB,aAAa,YAdE,EAAhC,WAAW,mBAAG,2BAAkB,KAAA,EAChC,KAaiB,aAAa,gBAbU,EAAxC,eAAe,mBAAG,kCAAsB,KAAA,EACxC,KAYiB,aAAa,iBAZa,EAA3C,gBAAgB,mBAAG,IAAA,+CAAsB,GAAE,KAAA,EAC3C,KAWiB,aAAa,oBAXkB,EAAhD,mBAAmB,mBAAG,sCAA0B,KAAA,EAChD,KAUiB,aAAa,QAVf,EAAf,OAAO,mBAAG,KAAK,KAAA,EACf,KASiB,aAAa,kBATc,EAA5C,iBAAiB,mBAAG,oCAAwB,KAAA,EAC5C,KAQiB,aAAa,MARW,EAAzC,KAAK,mBAAG,kBAAkB,CAAC,aAAa,CAAC,KAAA,EACzC,KAOiB,aAAa,OAPhB,EAAd,MAAM,mBAAG,KAAK,KAAA,EACd,KAMiB,aAAa,sBAND,EAA7B,qBAAqB,mBAAG,KAAK,KAAA,EAC7B,KAKiB,aAAa,iBALY,EAA1C,gBAAgB,mBAAG,mCAAuB,KAAA,EACrC,gBAAgB,GAIJ,aAAa,IAJT,EACrB,YAAY,GAGK,aAAa,aAHlB;IACZ,kFAAkF;IAC/E,cAAc,UACA,aAAa,EAjB1B,8MAiBL,CADkB,CACc;IAEjC,8CAA8C;IAC9C,IAAM,eAAe,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,mCAAI,KAAK,CAAC;IAE/D,qDAAqD;IACrD,IAAM,0BAA0B,GAAG;QACjC,iBAAiB,EAAE,MAAA,MAAA,aAAa,CAAC,0BAA0B,0CAAE,iBAAiB,mCAAI,+BAAuB;QACzG,WAAW,EAAE,MAAA,aAAa,CAAC,0BAA0B,0CAAE,WAAW;KACnE,CAAC;IAEF,6BACK,cAAc,KAEjB,QAAQ,wBACH,iCAAqB,GACrB,aAAa,CAAC,QAAQ,GAE3B,MAAM,EAAE,MAAM,EACd,eAAe,iBAAA,EACf,gBAAgB,EAAE,2BAA2B,CAAC,gBAAgB,EAAE,aAAa,CAAC,EAC9E,mBAAmB,qBAAA,EACnB,OAAO,SAAA,EACP,iBAAiB,mBAAA,EACjB,KAAK,OAAA,EACL,eAAe,oCAAA,EACf,MAAM,QAAA,EACN,qBAAqB,uBAAA,EACrB,UAAU,YAAA,EACV,gBAAgB,kBAAA,EAChB,WAAW,aAAA,EACX,UAAU,gDACL,CAAC,MAAA,aAAa,CAAC,UAAU,mCAAI,EAAE,CAAC,SAEhC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,qKAAqK;YACrK,wBAAwB;mBAE1B,eAAe,iCACV,sCAA4B,GAC5B,aAAa,CAAC,eAAe,GAC7B,gBAAgB,CAAC;YAClB,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;YAChD,eAAe,EAAE,aAAa,CAAC,eAAe;SAC/C,CAAC,GAEJ,0BAA0B,4BAAA,EAC1B,YAAY,EAAE;YACZ,eAAe,iBAAA;SAChB,IACD;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,gBAAmC,EACnC,EAA+B;;QAA7B,YAAY,kBAAA;IAEd,IAAM,eAAe,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,mCAAI,KAAK,CAAC;IAE/D,OAAO,gBAAgB,CAAC,MAAM,CAAC,UAAC,KAAK;QACnC,IAAI,KAAK,CAAC,IAAI,KAAK,kDAAkD,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1F,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,aAA4B;;IAChD,IAAA,KAA2B,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY,mCAAI,EAAE,EAA1D,IAAI,UAAA,EAAE,cAAc,oBAAsC,CAAC;IAEnE,IAAM,YAAY;QAChB,mBAAW;QACX,IAAA,qBAAc,EAAC,EAAE,cAAc,gBAAA,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;OACtD,CAAC,MAAA,aAAa,CAAC,KAAK,mCAAI,EAAE,CAAC;QAC9B,eAAO;aACR,CAAC;IAEF,IAAM,kBAAkB,GAAG,IAAA,oBAAQ,EAAE,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,EAAE,CAAC,CAAC;IACzD,IAAI,kBAAkB,EAAE,CAAC;QACvB,uCAAW,YAAY,UAAE,WAAM,UAAE;IACnC,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,gBAAgB,CAAC,EAGoC;;QAF5D,gBAAgB,sBAAA,EAChB,eAAe,qBAAA;IAEf,IAAM,SAAS,GAA6B,EAAE,CAAC;IAE/C,IAAI,IAAA,qBAAS,EAAC,gBAAgB,CAAC,EAAE,CAAC;QAChC,SAAS,CAAC,0BAA0B,GAAG,gBAAgB,CAAC;IAC1D,CAAC;IAED,IAAI,IAAA,mBAAO,EAAC,SAAS,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,OAAO,wBACF,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,mCAAI,EAAE,CAAC,KACnC,SAAS,WAAA,GACV;KACF,CAAC;AACJ,CAAC","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, 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.isEvent = 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.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 = 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; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","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, 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 MetaGetter,\n MetaItem,\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"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","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"]}
@@ -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,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
- 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
+ // 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 = _this._activeOperations) === null || _b === void 0 ? void 0 : _b.set(startKey, true);
46
+ (_b = this._activeOperations) === null || _b === void 0 ? void 0 : _b.set(startKey, true);
63
47
  }
64
- var endKey = _this._options.isOperationEnd(event);
48
+ const endKey = this._options.isOperationEnd(event);
65
49
  if (endKey) {
66
- (_c = _this._activeOperations) === null || _c === void 0 ? void 0 : _c.delete(endKey);
50
+ (_c = this._activeOperations) === null || _c === void 0 ? void 0 : _c.delete(endKey);
67
51
  }
68
- _this._scheduleInactivityCheck();
52
+ this._scheduleInactivityCheck();
69
53
  });
70
- };
71
- ActivityWindowTracker.prototype.startTracking = function () {
54
+ }
55
+ startTracking() {
72
56
  if (this._tracking) {
73
57
  return;
74
58
  }
75
59
  this._tracking = true;
76
- this._startTime = Date.now();
77
- this._lastEventTime = Date.now();
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
- ActivityWindowTracker.prototype.stopTracking = function () {
71
+ }
72
+ stopTracking() {
86
73
  this._tracking = false;
87
74
  this._clearTimer(this._inactivityTid);
88
75
  this._clearTimer(this._drainTid);
89
- var duration;
76
+ let duration;
90
77
  if (this.hasActiveOperations()) {
91
- duration = Date.now() - this._startTime;
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
- ActivityWindowTracker.prototype._scheduleInactivityCheck = function () {
103
- var _this = this;
104
- this._inactivityTid = startTimeout(this._inactivityTid, function () {
105
- if (_this.hasActiveOperations()) {
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
- _this.stopTracking();
95
+ this.stopTracking();
110
96
  }
111
97
  }, this._options.inactivityMs);
112
- };
113
- ActivityWindowTracker.prototype._startDrainTimeout = function () {
114
- var _this = this;
115
- this._drainTid = startTimeout(this._drainTid, function () {
116
- _this.stopTracking();
98
+ }
99
+ _startDrainTimeout() {
100
+ this._drainTid = startTimeout(this._drainTid, () => {
101
+ this.stopTracking();
117
102
  }, this._options.drainTimeoutMs);
118
- };
119
- ActivityWindowTracker.prototype.hasActiveOperations = function () {
103
+ }
104
+ hasActiveOperations() {
120
105
  return !!this._activeOperations && this._activeOperations.size > 0;
121
- };
122
- ActivityWindowTracker.prototype._clearTimer = function (id) {
106
+ }
107
+ _clearTimer(id) {
123
108
  if (id) {
124
109
  clearTimeout(id);
125
110
  }
126
- };
127
- return ActivityWindowTracker;
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(function () {
119
+ timeoutId = setTimeout(() => {
136
120
  cb();
137
121
  }, delay);
138
122
  return timeoutId;