@grafana/faro-web-sdk 2.0.0-beta → 2.0.2

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 (174) hide show
  1. package/dist/bundle/faro-web-sdk.iife.js +1 -1
  2. package/dist/bundle/types/index.d.ts +3 -3
  3. package/dist/bundle/types/instrumentations/_internal/activityWindowTracker.d.ts +36 -0
  4. package/dist/bundle/types/instrumentations/_internal/monitors/const.d.ts +4 -0
  5. package/dist/bundle/types/instrumentations/_internal/monitors/domMutationMonitor.d.ts +4 -0
  6. package/dist/bundle/types/instrumentations/{userActions → _internal/monitors}/httpRequestMonitor.d.ts +1 -3
  7. package/dist/bundle/types/instrumentations/_internal/monitors/index.d.ts +5 -0
  8. package/dist/bundle/types/instrumentations/_internal/monitors/interactionMonitor.d.ts +8 -0
  9. package/dist/{types/instrumentations/userActions → bundle/types/instrumentations/_internal/monitors}/performanceEntriesMonitor.d.ts +1 -0
  10. package/dist/bundle/types/instrumentations/_internal/monitors/urlChangeMonitor.d.ts +10 -0
  11. package/dist/bundle/types/instrumentations/console/instrumentation.d.ts +1 -1
  12. package/dist/bundle/types/instrumentations/csp/instrumentation.d.ts +1 -1
  13. package/dist/bundle/types/instrumentations/errors/instrumentation.d.ts +1 -1
  14. package/dist/bundle/types/instrumentations/index.d.ts +1 -0
  15. package/dist/bundle/types/instrumentations/navigation/index.d.ts +1 -0
  16. package/dist/bundle/types/instrumentations/navigation/instrumentation.d.ts +6 -0
  17. package/dist/bundle/types/instrumentations/performance/instrumentation.d.ts +1 -1
  18. package/dist/bundle/types/instrumentations/session/instrumentation.d.ts +1 -1
  19. package/dist/bundle/types/instrumentations/userActions/const.d.ts +1 -4
  20. package/dist/bundle/types/instrumentations/userActions/index.d.ts +3 -2
  21. package/dist/bundle/types/instrumentations/userActions/instrumentation.d.ts +1 -1
  22. package/dist/bundle/types/instrumentations/userActions/processUserActionEventHandler.d.ts +1 -4
  23. package/dist/bundle/types/instrumentations/userActions/userActionController.d.ts +22 -0
  24. package/dist/bundle/types/instrumentations/userActions/util.d.ts +4 -0
  25. package/dist/bundle/types/instrumentations/view/instrumentation.d.ts +1 -1
  26. package/dist/bundle/types/instrumentations/webVitals/instrumentation.d.ts +1 -2
  27. package/dist/bundle/types/transports/console/transport.d.ts +1 -1
  28. package/dist/bundle/types/transports/fetch/transport.d.ts +1 -1
  29. package/dist/cjs/config/getWebInstrumentations.js +1 -0
  30. package/dist/cjs/config/getWebInstrumentations.js.map +1 -1
  31. package/dist/cjs/config/makeCoreConfig.js +20 -9
  32. package/dist/cjs/config/makeCoreConfig.js.map +1 -1
  33. package/dist/cjs/index.js +4 -2
  34. package/dist/cjs/index.js.map +1 -1
  35. package/dist/cjs/instrumentations/_internal/activityWindowTracker.js +140 -0
  36. package/dist/cjs/instrumentations/_internal/activityWindowTracker.js.map +1 -0
  37. package/dist/cjs/instrumentations/_internal/monitors/const.js +8 -0
  38. package/dist/cjs/instrumentations/_internal/monitors/const.js.map +1 -0
  39. package/dist/cjs/instrumentations/_internal/monitors/domMutationMonitor.js +34 -0
  40. package/dist/cjs/instrumentations/_internal/monitors/domMutationMonitor.js.map +1 -0
  41. package/dist/cjs/instrumentations/{userActions → _internal/monitors}/httpRequestMonitor.js +45 -17
  42. package/dist/cjs/instrumentations/_internal/monitors/httpRequestMonitor.js.map +1 -0
  43. package/dist/cjs/instrumentations/_internal/monitors/index.js +14 -0
  44. package/dist/cjs/instrumentations/_internal/monitors/index.js.map +1 -0
  45. package/dist/cjs/instrumentations/_internal/monitors/interactionMonitor.js +36 -0
  46. package/dist/cjs/instrumentations/_internal/monitors/interactionMonitor.js.map +1 -0
  47. package/dist/cjs/instrumentations/_internal/monitors/performanceEntriesMonitor.js +35 -0
  48. package/dist/cjs/instrumentations/_internal/monitors/performanceEntriesMonitor.js.map +1 -0
  49. package/dist/cjs/instrumentations/_internal/monitors/types.js.map +1 -0
  50. package/dist/cjs/instrumentations/_internal/monitors/urlChangeMonitor.js +138 -0
  51. package/dist/cjs/instrumentations/_internal/monitors/urlChangeMonitor.js.map +1 -0
  52. package/dist/cjs/instrumentations/index.js +3 -1
  53. package/dist/cjs/instrumentations/index.js.map +1 -1
  54. package/dist/cjs/instrumentations/navigation/index.js +6 -0
  55. package/dist/cjs/instrumentations/navigation/index.js.map +1 -0
  56. package/dist/cjs/instrumentations/navigation/instrumentation.js +68 -0
  57. package/dist/cjs/instrumentations/navigation/instrumentation.js.map +1 -0
  58. package/dist/cjs/instrumentations/performance/resource.js +4 -6
  59. package/dist/cjs/instrumentations/performance/resource.js.map +1 -1
  60. package/dist/cjs/instrumentations/userActions/const.js +5 -5
  61. package/dist/cjs/instrumentations/userActions/const.js.map +1 -1
  62. package/dist/cjs/instrumentations/userActions/index.js +3 -2
  63. package/dist/cjs/instrumentations/userActions/index.js.map +1 -1
  64. package/dist/cjs/instrumentations/userActions/instrumentation.js +2 -2
  65. package/dist/cjs/instrumentations/userActions/instrumentation.js.map +1 -1
  66. package/dist/cjs/instrumentations/userActions/processUserActionEventHandler.js +8 -56
  67. package/dist/cjs/instrumentations/userActions/processUserActionEventHandler.js.map +1 -1
  68. package/dist/cjs/instrumentations/userActions/userActionController.js +125 -0
  69. package/dist/cjs/instrumentations/userActions/userActionController.js.map +1 -0
  70. package/dist/cjs/instrumentations/userActions/util.js +20 -0
  71. package/dist/cjs/instrumentations/userActions/util.js.map +1 -1
  72. package/dist/cjs/instrumentations/webVitals/instrumentation.js +1 -10
  73. package/dist/cjs/instrumentations/webVitals/instrumentation.js.map +1 -1
  74. package/dist/cjs/utils/webStorage.js +1 -1
  75. package/dist/cjs/utils/webStorage.js.map +1 -1
  76. package/dist/esm/config/getWebInstrumentations.js +2 -1
  77. package/dist/esm/config/getWebInstrumentations.js.map +1 -1
  78. package/dist/esm/config/makeCoreConfig.js +19 -9
  79. package/dist/esm/config/makeCoreConfig.js.map +1 -1
  80. package/dist/esm/index.js +2 -2
  81. package/dist/esm/index.js.map +1 -1
  82. package/dist/esm/instrumentations/_internal/activityWindowTracker.js +113 -0
  83. package/dist/esm/instrumentations/_internal/activityWindowTracker.js.map +1 -0
  84. package/dist/esm/instrumentations/_internal/monitors/const.js +5 -0
  85. package/dist/esm/instrumentations/_internal/monitors/const.js.map +1 -0
  86. package/dist/esm/instrumentations/_internal/monitors/domMutationMonitor.js +30 -0
  87. package/dist/esm/instrumentations/_internal/monitors/domMutationMonitor.js.map +1 -0
  88. package/dist/esm/instrumentations/{userActions → _internal/monitors}/httpRequestMonitor.js +44 -17
  89. package/dist/esm/instrumentations/_internal/monitors/httpRequestMonitor.js.map +1 -0
  90. package/dist/esm/instrumentations/_internal/monitors/index.js +6 -0
  91. package/dist/esm/instrumentations/_internal/monitors/index.js.map +1 -0
  92. package/dist/esm/instrumentations/_internal/monitors/interactionMonitor.js +31 -0
  93. package/dist/esm/instrumentations/_internal/monitors/interactionMonitor.js.map +1 -0
  94. package/dist/esm/instrumentations/_internal/monitors/performanceEntriesMonitor.js +31 -0
  95. package/dist/esm/instrumentations/_internal/monitors/performanceEntriesMonitor.js.map +1 -0
  96. package/dist/esm/instrumentations/_internal/monitors/types.js.map +1 -0
  97. package/dist/esm/instrumentations/_internal/monitors/urlChangeMonitor.js +125 -0
  98. package/dist/esm/instrumentations/_internal/monitors/urlChangeMonitor.js.map +1 -0
  99. package/dist/esm/instrumentations/index.js +1 -0
  100. package/dist/esm/instrumentations/index.js.map +1 -1
  101. package/dist/esm/instrumentations/navigation/index.js +2 -0
  102. package/dist/esm/instrumentations/navigation/index.js.map +1 -0
  103. package/dist/esm/instrumentations/navigation/instrumentation.js +46 -0
  104. package/dist/esm/instrumentations/navigation/instrumentation.js.map +1 -0
  105. package/dist/esm/instrumentations/performance/resource.js +4 -6
  106. package/dist/esm/instrumentations/performance/resource.js.map +1 -1
  107. package/dist/esm/instrumentations/userActions/const.js +1 -4
  108. package/dist/esm/instrumentations/userActions/const.js.map +1 -1
  109. package/dist/esm/instrumentations/userActions/index.js +2 -1
  110. package/dist/esm/instrumentations/userActions/index.js.map +1 -1
  111. package/dist/esm/instrumentations/userActions/instrumentation.js +2 -2
  112. package/dist/esm/instrumentations/userActions/instrumentation.js.map +1 -1
  113. package/dist/esm/instrumentations/userActions/processUserActionEventHandler.js +9 -55
  114. package/dist/esm/instrumentations/userActions/processUserActionEventHandler.js.map +1 -1
  115. package/dist/esm/instrumentations/userActions/userActionController.js +117 -0
  116. package/dist/esm/instrumentations/userActions/userActionController.js.map +1 -0
  117. package/dist/esm/instrumentations/userActions/util.js +17 -0
  118. package/dist/esm/instrumentations/userActions/util.js.map +1 -1
  119. package/dist/esm/instrumentations/webVitals/instrumentation.js +1 -10
  120. package/dist/esm/instrumentations/webVitals/instrumentation.js.map +1 -1
  121. package/dist/esm/utils/webStorage.js +1 -1
  122. package/dist/esm/utils/webStorage.js.map +1 -1
  123. package/dist/types/index.d.ts +3 -3
  124. package/dist/types/instrumentations/_internal/activityWindowTracker.d.ts +36 -0
  125. package/dist/types/instrumentations/_internal/monitors/const.d.ts +4 -0
  126. package/dist/types/instrumentations/_internal/monitors/domMutationMonitor.d.ts +4 -0
  127. package/dist/types/instrumentations/{userActions → _internal/monitors}/httpRequestMonitor.d.ts +1 -3
  128. package/dist/types/instrumentations/_internal/monitors/index.d.ts +5 -0
  129. package/dist/types/instrumentations/_internal/monitors/interactionMonitor.d.ts +8 -0
  130. package/dist/{bundle/types/instrumentations/userActions → types/instrumentations/_internal/monitors}/performanceEntriesMonitor.d.ts +1 -0
  131. package/dist/types/instrumentations/_internal/monitors/urlChangeMonitor.d.ts +10 -0
  132. package/dist/types/instrumentations/console/instrumentation.d.ts +1 -1
  133. package/dist/types/instrumentations/csp/instrumentation.d.ts +1 -1
  134. package/dist/types/instrumentations/errors/instrumentation.d.ts +1 -1
  135. package/dist/types/instrumentations/index.d.ts +1 -0
  136. package/dist/types/instrumentations/navigation/index.d.ts +1 -0
  137. package/dist/types/instrumentations/navigation/instrumentation.d.ts +6 -0
  138. package/dist/types/instrumentations/performance/instrumentation.d.ts +1 -1
  139. package/dist/types/instrumentations/session/instrumentation.d.ts +1 -1
  140. package/dist/types/instrumentations/userActions/const.d.ts +1 -4
  141. package/dist/types/instrumentations/userActions/index.d.ts +3 -2
  142. package/dist/types/instrumentations/userActions/instrumentation.d.ts +1 -1
  143. package/dist/types/instrumentations/userActions/processUserActionEventHandler.d.ts +1 -4
  144. package/dist/types/instrumentations/userActions/userActionController.d.ts +22 -0
  145. package/dist/types/instrumentations/userActions/util.d.ts +4 -0
  146. package/dist/types/instrumentations/view/instrumentation.d.ts +1 -1
  147. package/dist/types/instrumentations/webVitals/instrumentation.d.ts +1 -2
  148. package/dist/types/transports/console/transport.d.ts +1 -1
  149. package/dist/types/transports/fetch/transport.d.ts +1 -1
  150. package/package.json +10 -9
  151. package/dist/bundle/types/instrumentations/userActions/domMutationMonitor.d.ts +0 -2
  152. package/dist/bundle/types/instrumentations/webVitals/webVitalsBasic.d.ts +0 -14
  153. package/dist/cjs/instrumentations/userActions/domMutationMonitor.js +0 -19
  154. package/dist/cjs/instrumentations/userActions/domMutationMonitor.js.map +0 -1
  155. package/dist/cjs/instrumentations/userActions/httpRequestMonitor.js.map +0 -1
  156. package/dist/cjs/instrumentations/userActions/performanceEntriesMonitor.js +0 -17
  157. package/dist/cjs/instrumentations/userActions/performanceEntriesMonitor.js.map +0 -1
  158. package/dist/cjs/instrumentations/userActions/types.js.map +0 -1
  159. package/dist/cjs/instrumentations/webVitals/webVitalsBasic.js +0 -36
  160. package/dist/cjs/instrumentations/webVitals/webVitalsBasic.js.map +0 -1
  161. package/dist/esm/instrumentations/userActions/domMutationMonitor.js +0 -16
  162. package/dist/esm/instrumentations/userActions/domMutationMonitor.js.map +0 -1
  163. package/dist/esm/instrumentations/userActions/httpRequestMonitor.js.map +0 -1
  164. package/dist/esm/instrumentations/userActions/performanceEntriesMonitor.js +0 -14
  165. package/dist/esm/instrumentations/userActions/performanceEntriesMonitor.js.map +0 -1
  166. package/dist/esm/instrumentations/userActions/types.js.map +0 -1
  167. package/dist/esm/instrumentations/webVitals/webVitalsBasic.js +0 -28
  168. package/dist/esm/instrumentations/webVitals/webVitalsBasic.js.map +0 -1
  169. package/dist/types/instrumentations/userActions/domMutationMonitor.d.ts +0 -2
  170. package/dist/types/instrumentations/webVitals/webVitalsBasic.d.ts +0 -14
  171. /package/dist/bundle/types/instrumentations/{userActions → _internal/monitors}/types.d.ts +0 -0
  172. /package/dist/cjs/instrumentations/{userActions → _internal/monitors}/types.js +0 -0
  173. /package/dist/esm/instrumentations/{userActions → _internal/monitors}/types.js +0 -0
  174. /package/dist/types/instrumentations/{userActions → _internal/monitors}/types.d.ts +0 -0
@@ -0,0 +1,10 @@
1
+ import { Observable } from '@grafana/faro-core';
2
+ export declare const MESSAGE_TYPE_URL_CHANGE = "url-change";
3
+ export type UrlChangeMessage = {
4
+ type: typeof MESSAGE_TYPE_URL_CHANGE;
5
+ from: string;
6
+ to: string;
7
+ trigger: 'pushState' | 'replaceState' | 'popstate' | 'hashchange' | 'navigate' | 'navigate-intercept';
8
+ };
9
+ export declare function monitorUrlChanges(): Observable<UrlChangeMessage>;
10
+ export declare function __resetUrlChangeMonitorForTests(): void;
@@ -1,7 +1,7 @@
1
1
  import { BaseInstrumentation, LogLevel } from '@grafana/faro-core';
2
2
  export declare class ConsoleInstrumentation extends BaseInstrumentation {
3
3
  readonly name = "@grafana/faro-web-sdk:instrumentation-console";
4
- readonly version = "2.0.0-beta";
4
+ readonly version = "2.0.2";
5
5
  static defaultDisabledLevels: LogLevel[];
6
6
  static consoleErrorPrefix: string;
7
7
  private errorSerializer;
@@ -2,7 +2,7 @@ import { BaseInstrumentation } from '@grafana/faro-core';
2
2
  import type { Instrumentation } from '@grafana/faro-core';
3
3
  export declare class CSPInstrumentation extends BaseInstrumentation implements Instrumentation {
4
4
  readonly name = "@grafana/faro-web-sdk:instrumentation-csp";
5
- readonly version = "2.0.0-beta";
5
+ readonly version = "2.0.2";
6
6
  constructor();
7
7
  initialize(): void;
8
8
  destroy(): void;
@@ -1,6 +1,6 @@
1
1
  import { BaseInstrumentation } from '@grafana/faro-core';
2
2
  export declare class ErrorsInstrumentation extends BaseInstrumentation {
3
3
  readonly name = "@grafana/faro-web-sdk:instrumentation-errors";
4
- readonly version = "2.0.0-beta";
4
+ readonly version = "2.0.2";
5
5
  initialize(): void;
6
6
  }
@@ -8,3 +8,4 @@ export { PersistentSessionsManager, VolatileSessionsManager, MAX_SESSION_PERSIST
8
8
  export { PerformanceInstrumentation } from './performance';
9
9
  export { UserActionInstrumentation, userActionDataAttribute } from './userActions';
10
10
  export { CSPInstrumentation } from './csp';
11
+ export { NavigationInstrumentation } from './navigation';
@@ -0,0 +1 @@
1
+ export { NavigationInstrumentation } from './instrumentation';
@@ -0,0 +1,6 @@
1
+ import { BaseInstrumentation } from '@grafana/faro-core';
2
+ export declare class NavigationInstrumentation extends BaseInstrumentation {
3
+ readonly name = "@grafana/faro-web-sdk:instrumentation-navigation";
4
+ readonly version = "2.0.2";
5
+ initialize(): void;
6
+ }
@@ -3,6 +3,6 @@ import type { ResourceEntryMessage } from './types';
3
3
  export declare const performanceEntriesSubscription: Observable<ResourceEntryMessage>;
4
4
  export declare class PerformanceInstrumentation extends BaseInstrumentation {
5
5
  readonly name = "@grafana/faro-web-sdk:instrumentation-performance";
6
- readonly version = "2.0.0-beta";
6
+ readonly version = "2.0.2";
7
7
  initialize(): void;
8
8
  }
@@ -1,7 +1,7 @@
1
1
  import { BaseInstrumentation } from '@grafana/faro-core';
2
2
  export declare class SessionInstrumentation extends BaseInstrumentation {
3
3
  readonly name = "@grafana/faro-web-sdk:instrumentation-session";
4
- readonly version = "2.0.0-beta";
4
+ readonly version = "2.0.2";
5
5
  private notifiedSession;
6
6
  private sendSessionStartEvent;
7
7
  private createInitialSession;
@@ -1,6 +1,3 @@
1
- export declare const MESSAGE_TYPE_RESOURCE_ENTRY = "resource-entry";
2
- export declare const MESSAGE_TYPE_HTTP_REQUEST_START = "http-request-start";
3
- export declare const MESSAGE_TYPE_HTTP_REQUEST_END = "http-request-end";
4
- export declare const MESSAGE_TYPE_DOM_MUTATION = "dom-mutation";
5
1
  export declare const userActionDataAttributeParsed = "faroUserActionName";
6
2
  export declare const userActionDataAttribute = "data-faro-user-action-name";
3
+ export { MESSAGE_TYPE_DOM_MUTATION, MESSAGE_TYPE_HTTP_REQUEST_START, MESSAGE_TYPE_HTTP_REQUEST_END, } from '../_internal/monitors/const';
@@ -1,3 +1,4 @@
1
1
  export { UserActionInstrumentation } from './instrumentation';
2
- export type { DomMutationMessage, HttpRequestEndMessage, HttpRequestStartMessage, HttpRequestMessagePayload, } from './types';
3
- export { MESSAGE_TYPE_DOM_MUTATION, MESSAGE_TYPE_HTTP_REQUEST_END, MESSAGE_TYPE_HTTP_REQUEST_START, userActionDataAttribute, } from './const';
2
+ export type { DomMutationMessage, HttpRequestEndMessage, HttpRequestStartMessage, HttpRequestMessagePayload, } from '../_internal/monitors/types';
3
+ export { MESSAGE_TYPE_DOM_MUTATION, MESSAGE_TYPE_HTTP_REQUEST_END, MESSAGE_TYPE_HTTP_REQUEST_START, } from '../_internal/monitors/const';
4
+ export { userActionDataAttribute } from './const';
@@ -1,7 +1,7 @@
1
1
  import { BaseInstrumentation } from '@grafana/faro-core';
2
2
  export declare class UserActionInstrumentation extends BaseInstrumentation {
3
3
  readonly name = "@grafana/faro-web-sdk:instrumentation-user-action";
4
- readonly version = "2.0.0-beta";
4
+ readonly version = "2.0.2";
5
5
  private _userActionSub?;
6
6
  initialize(): void;
7
7
  destroy(): void;
@@ -1,10 +1,7 @@
1
1
  import type { Faro, Subscription, UserActionInterface } from '@grafana/faro-core';
2
- import type { HttpRequestEndMessage, HttpRequestStartMessage } from './types';
3
2
  export declare function getUserEventHandler(faro: Faro): {
4
3
  processUserEvent: (event: PointerEvent | KeyboardEvent) => void;
5
- proceessUserActionStarted: (userAction: UserActionInterface) => void;
4
+ processUserActionStarted: (userAction: UserActionInterface) => void;
6
5
  };
7
6
  export declare function getUserActionNameFromElement(element: HTMLElement, dataAttributeName: string): string | undefined;
8
7
  export declare function unsubscribeAllMonitors(allMonitorsSub: Subscription | undefined): void;
9
- export declare function isRequestStartMessage(msg: any): msg is HttpRequestStartMessage;
10
- export declare function isRequestEndMessage(msg: any): msg is HttpRequestEndMessage;
@@ -0,0 +1,22 @@
1
+ import type { UserActionInternalInterface } from '@grafana/faro-core';
2
+ export declare class UserActionController {
3
+ private userAction;
4
+ private readonly http;
5
+ private readonly dom;
6
+ private readonly perf;
7
+ private allMonitorsSub?;
8
+ private stateSub?;
9
+ private followUpTid?;
10
+ private haltTid?;
11
+ private isValid;
12
+ private runningRequests;
13
+ constructor(userAction: UserActionInternalInterface);
14
+ attach(): void;
15
+ private scheduleFollowUp;
16
+ private haltAction;
17
+ private startHaltTimeout;
18
+ private endAction;
19
+ private cancelAction;
20
+ private cleanup;
21
+ private clearTimer;
22
+ }
@@ -1,3 +1,4 @@
1
+ import type { HttpRequestEndMessage, HttpRequestStartMessage } from '../_internal/monitors/types';
1
2
  /**
2
3
  * Parses the action attribute name by removing the 'data-' prefix and converting
3
4
  * the remaining string to camelCase.
@@ -6,3 +7,6 @@
6
7
  * data attributes and make then camelCase.
7
8
  */
8
9
  export declare function convertDataAttributeName(userActionDataAttribute: string): string | undefined;
10
+ export declare function startTimeout(timeoutId: number | undefined, cb: () => void, delay: number): number | undefined;
11
+ export declare function isRequestStartMessage(msg: any): msg is HttpRequestStartMessage;
12
+ export declare function isRequestEndMessage(msg: any): msg is HttpRequestEndMessage;
@@ -1,7 +1,7 @@
1
1
  import { BaseInstrumentation } from '@grafana/faro-core';
2
2
  export declare class ViewInstrumentation extends BaseInstrumentation {
3
3
  readonly name = "@grafana/faro-web-sdk:instrumentation-view";
4
- readonly version = "2.0.0-beta";
4
+ readonly version = "2.0.2";
5
5
  private notifiedView;
6
6
  private sendViewChangedEvent;
7
7
  initialize(): void;
@@ -1,7 +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.0.0-beta";
4
+ readonly version = "2.0.2";
5
5
  initialize(): void;
6
- private intializeWebVitalsInstrumentation;
7
6
  }
@@ -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.0.0-beta";
7
+ readonly version = "2.0.2";
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.0.0-beta";
7
+ readonly version = "2.0.2";
8
8
  promiseBuffer: PromiseBuffer<Response | void>;
9
9
  private readonly rateLimitBackoffMs;
10
10
  private readonly getNow;
@@ -10,6 +10,7 @@ function getWebInstrumentations(options) {
10
10
  new instrumentations_1.WebVitalsInstrumentation(),
11
11
  new instrumentations_1.SessionInstrumentation(),
12
12
  new instrumentations_1.ViewInstrumentation(),
13
+ new instrumentations_1.NavigationInstrumentation(),
13
14
  ];
14
15
  if (options.enablePerformanceInstrumentation !== false) {
15
16
  // unshift to ensure that initialization starts before the other instrumentations
@@ -1 +1 @@
1
- {"version":3,"file":"getWebInstrumentations.js","sourceRoot":"","sources":["../../../src/config/getWebInstrumentations.ts"],"names":[],"mappings":";;AAeA,wDAuBC;AApCD,wDAS6B;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;KAC1B,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 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 ];\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,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"]}
@@ -43,7 +43,7 @@ var page_1 = require("../metas/page");
43
43
  var transports_1 = require("../transports");
44
44
  var getWebInstrumentations_1 = require("./getWebInstrumentations");
45
45
  function makeCoreConfig(browserConfig) {
46
- var _a;
46
+ var _a, _b, _c, _d, _e;
47
47
  var transports = [];
48
48
  var internalLogger = (0, faro_core_1.createInternalLogger)(browserConfig.unpatchedConsole, browserConfig.internalLoggerLevel);
49
49
  if (browserConfig.transports) {
@@ -63,23 +63,34 @@ function makeCoreConfig(browserConfig) {
63
63
  }
64
64
  var
65
65
  // properties with default values
66
- _b = browserConfig.dedupe,
66
+ _f = browserConfig.dedupe,
67
67
  // properties with default values
68
- dedupe = _b === void 0 ? true : _b, _c = browserConfig.eventDomain, eventDomain = _c === void 0 ? consts_1.defaultEventDomain : _c, _d = browserConfig.globalObjectKey, globalObjectKey = _d === void 0 ? faro_core_1.defaultGlobalObjectKey : _d, _e = browserConfig.instrumentations, instrumentations = _e === void 0 ? (0, getWebInstrumentations_1.getWebInstrumentations)() : _e, _f = browserConfig.internalLoggerLevel, internalLoggerLevel = _f === void 0 ? faro_core_1.defaultInternalLoggerLevel : _f, _g = browserConfig.isolate, isolate = _g === void 0 ? false : _g, _h = browserConfig.logArgsSerializer, logArgsSerializer = _h === void 0 ? faro_core_1.defaultLogArgsSerializer : _h, _j = browserConfig.metas, metas = _j === void 0 ? createDefaultMetas(browserConfig) : _j, _k = browserConfig.paused, paused = _k === void 0 ? false : _k, _l = browserConfig.preventGlobalExposure, preventGlobalExposure = _l === void 0 ? false : _l, _m = browserConfig.unpatchedConsole, unpatchedConsole = _m === void 0 ? faro_core_1.defaultUnpatchedConsole : _m, _o = browserConfig.trackUserActionsPreview, trackUserActionsPreview = _o === void 0 ? false : _o, _p = browserConfig.trackUserActionsDataAttributeName, trackUserActionsDataAttributeName = _p === void 0 ? const_1.userActionDataAttribute : _p, browserConfigUrl = browserConfig.url,
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,
69
69
  // Properties without default values or which aren't used to create derived config
70
- restProperties = __rest(browserConfig, ["dedupe", "eventDomain", "globalObjectKey", "instrumentations", "internalLoggerLevel", "isolate", "logArgsSerializer", "metas", "paused", "preventGlobalExposure", "unpatchedConsole", "trackUserActionsPreview", "trackUserActionsDataAttributeName", "url"]);
71
- return __assign(__assign({}, restProperties), { batching: __assign(__assign({}, faro_core_1.defaultBatchingConfig), browserConfig.batching), dedupe: dedupe, globalObjectKey: globalObjectKey, instrumentations: getFilteredInstrumentations(instrumentations, browserConfig), internalLoggerLevel: internalLoggerLevel, isolate: isolate, logArgsSerializer: logArgsSerializer, metas: metas, parseStacktrace: instrumentations_1.parseStacktrace, paused: paused, preventGlobalExposure: preventGlobalExposure, transports: transports, unpatchedConsole: unpatchedConsole, eventDomain: eventDomain, ignoreUrls: __spreadArray(__spreadArray(__spreadArray([], ((_a = browserConfig.ignoreUrls) !== null && _a !== void 0 ? _a : []), true), (browserConfigUrl ? [browserConfigUrl] : []), true), [
70
+ restProperties = __rest(browserConfig, ["dedupe", "eventDomain", "globalObjectKey", "instrumentations", "internalLoggerLevel", "isolate", "logArgsSerializer", "metas", "paused", "preventGlobalExposure", "unpatchedConsole", "url", "experimental"]);
71
+ // Extract experimental features with defaults
72
+ var trackNavigation = (_a = experimental === null || experimental === void 0 ? void 0 : experimental.trackNavigation) !== null && _a !== void 0 ? _a : false;
73
+ // Extract user actions instrumentation with defaults
74
+ var userActionsInstrumentation = {
75
+ dataAttributeName: (_c = (_b = browserConfig.userActionsInstrumentation) === null || _b === void 0 ? void 0 : _b.dataAttributeName) !== null && _c !== void 0 ? _c : const_1.userActionDataAttribute,
76
+ excludeItem: (_d = browserConfig.userActionsInstrumentation) === null || _d === void 0 ? void 0 : _d.excludeItem,
77
+ };
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), [
72
79
  // 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.
73
80
  /\/collect(?:\/[\w]*)?$/,
74
81
  ], false), sessionTracking: __assign(__assign(__assign({}, session_1.defaultSessionTrackingConfig), browserConfig.sessionTracking), crateSessionMeta({
75
82
  trackGeolocation: browserConfig.trackGeolocation,
76
83
  sessionTracking: browserConfig.sessionTracking,
77
- })), trackUserActionsPreview: trackUserActionsPreview, trackUserActionsDataAttributeName: trackUserActionsDataAttributeName });
84
+ })), userActionsInstrumentation: userActionsInstrumentation, experimental: {
85
+ trackNavigation: trackNavigation,
86
+ } });
78
87
  }
79
88
  function getFilteredInstrumentations(instrumentations, _a) {
80
- var trackUserActionsPreview = _a.trackUserActionsPreview;
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;
81
92
  return instrumentations.filter(function (instr) {
82
- if (instr.name === '@grafana/faro-web-sdk:instrumentation-user-action' && !trackUserActionsPreview) {
93
+ if (instr.name === '@grafana/faro-web-sdk:instrumentation-navigation' && !trackNavigation) {
83
94
  return false;
84
95
  }
85
96
  return true;
@@ -92,7 +103,7 @@ function createDefaultMetas(browserConfig) {
92
103
  metas_1.browserMeta,
93
104
  (0, page_1.createPageMeta)({ generatePageId: generatePageId, initialPageMeta: page })
94
105
  ], ((_b = browserConfig.metas) !== null && _b !== void 0 ? _b : []), true);
95
- var isK6BrowserSession = (0, faro_core_1.isObject)(window.k6);
106
+ var isK6BrowserSession = (0, faro_core_1.isObject)(window === null || window === void 0 ? void 0 : window.k6);
96
107
  if (isK6BrowserSession) {
97
108
  return __spreadArray(__spreadArray([], initialMetas, true), [k6_1.k6Meta], false);
98
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"makeCoreConfig.js","sourceRoot":"","sources":["../../../src/config/makeCoreConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,wCAgFC;AAzGD,gDAU4B;AAG5B,oCAA+C;AAC/C,wDAAsD;AACtD,uDAA2E;AAC3E,+DAAgF;AAChF,kCAAuC;AACvC,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,KAgBiB,aAAa,OAhBjB;IADb,iCAAiC;IACjC,MAAM,mBAAG,IAAI,KAAA,EACb,KAeiB,aAAa,YAfE,EAAhC,WAAW,mBAAG,2BAAkB,KAAA,EAChC,KAciB,aAAa,gBAdU,EAAxC,eAAe,mBAAG,kCAAsB,KAAA,EACxC,KAaiB,aAAa,iBAba,EAA3C,gBAAgB,mBAAG,IAAA,+CAAsB,GAAE,KAAA,EAC3C,KAYiB,aAAa,oBAZkB,EAAhD,mBAAmB,mBAAG,sCAA0B,KAAA,EAChD,KAWiB,aAAa,QAXf,EAAf,OAAO,mBAAG,KAAK,KAAA,EACf,KAUiB,aAAa,kBAVc,EAA5C,iBAAiB,mBAAG,oCAAwB,KAAA,EAC5C,KASiB,aAAa,MATW,EAAzC,KAAK,mBAAG,kBAAkB,CAAC,aAAa,CAAC,KAAA,EACzC,KAQiB,aAAa,OARhB,EAAd,MAAM,mBAAG,KAAK,KAAA,EACd,KAOiB,aAAa,sBAPD,EAA7B,qBAAqB,mBAAG,KAAK,KAAA,EAC7B,KAMiB,aAAa,iBANY,EAA1C,gBAAgB,mBAAG,mCAAuB,KAAA,EAC1C,KAKiB,aAAa,wBALC,EAA/B,uBAAuB,mBAAG,KAAK,KAAA,EAC/B,KAIiB,aAAa,kCAJ6B,EAA3D,iCAAiC,mBAAG,+BAAuB,KAAA,EACtD,gBAAgB,GAGJ,aAAa,IAHT;IACrB,kFAAkF;IAC/E,cAAc,UACA,aAAa,EAlB1B,8PAkBL,CADkB,CACc;IAEjC,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,uBAAuB,yBAAA,EACvB,iCAAiC,mCAAA,IACjC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,gBAAmC,EACnC,EAA0C;QAAxC,uBAAuB,6BAAA;IAEzB,OAAO,gBAAgB,CAAC,MAAM,CAAC,UAAC,KAAK;QACnC,IAAI,KAAK,CAAC,IAAI,KAAK,mDAAmD,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACnG,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,OAC/B,CAAC;IAEF,IAAM,kBAAkB,GAAG,IAAA,oBAAQ,EAAE,MAAc,CAAC,EAAE,CAAC,CAAC;IACxD,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 } 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 trackUserActionsPreview = false,\n trackUserActionsDataAttributeName = userActionDataAttribute,\n url: browserConfigUrl,\n // Properties without default values or which aren't used to create derived config\n ...restProperties\n }: BrowserConfig = browserConfig;\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 trackUserActionsPreview,\n trackUserActionsDataAttributeName,\n };\n}\n\nfunction getFilteredInstrumentations(\n instrumentations: Instrumentation[],\n { trackUserActionsPreview }: BrowserConfig\n): Instrumentation[] {\n return instrumentations.filter((instr) => {\n if (instr.name === '@grafana/faro-web-sdk:instrumentation-user-action' && !trackUserActionsPreview) {\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 ];\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 } 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 ];\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.isEventDefined = 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.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.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 = void 0;
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;
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; } });
@@ -22,6 +22,7 @@ Object.defineProperty(exports, "SessionInstrumentation", { enumerable: true, get
22
22
  Object.defineProperty(exports, "PerformanceInstrumentation", { enumerable: true, get: function () { return instrumentations_1.PerformanceInstrumentation; } });
23
23
  Object.defineProperty(exports, "CSPInstrumentation", { enumerable: true, get: function () { return instrumentations_1.CSPInstrumentation; } });
24
24
  Object.defineProperty(exports, "UserActionInstrumentation", { enumerable: true, get: function () { return instrumentations_1.UserActionInstrumentation; } });
25
+ Object.defineProperty(exports, "NavigationInstrumentation", { enumerable: true, get: function () { return instrumentations_1.NavigationInstrumentation; } });
25
26
  var metas_1 = require("./metas");
26
27
  Object.defineProperty(exports, "browserMeta", { enumerable: true, get: function () { return metas_1.browserMeta; } });
27
28
  Object.defineProperty(exports, "createSession", { enumerable: true, get: function () { return metas_1.createSession; } });
@@ -94,6 +95,7 @@ Object.defineProperty(exports, "EVENT_SESSION_START", { enumerable: true, get: f
94
95
  Object.defineProperty(exports, "EVENT_VIEW_CHANGED", { enumerable: true, get: function () { return faro_core_1.EVENT_VIEW_CHANGED; } });
95
96
  Object.defineProperty(exports, "Observable", { enumerable: true, get: function () { return faro_core_1.Observable; } });
96
97
  Object.defineProperty(exports, "unknownString", { enumerable: true, get: function () { return faro_core_1.unknownString; } });
98
+ Object.defineProperty(exports, "UserActionState", { enumerable: true, get: function () { return faro_core_1.UserActionState; } });
97
99
  var session_1 = require("./instrumentations/session");
98
100
  Object.defineProperty(exports, "PersistentSessionsManager", { enumerable: true, get: function () { return session_1.PersistentSessionsManager; } });
99
101
  Object.defineProperty(exports, "VolatileSessionsManager", { enumerable: true, get: function () { return session_1.VolatileSessionsManager; } });
@@ -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} 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} 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} 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, 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"]}
@@ -0,0 +1,140 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ActivityWindowTracker = void 0;
19
+ exports.isRequestStartMessage = isRequestStartMessage;
20
+ exports.isRequestEndMessage = isRequestEndMessage;
21
+ var faro_core_1 = require("@grafana/faro-core");
22
+ var const_1 = require("./monitors/const");
23
+ function isRequestStartMessage(msg) {
24
+ return msg.type === const_1.MESSAGE_TYPE_HTTP_REQUEST_START;
25
+ }
26
+ function isRequestEndMessage(msg) {
27
+ return msg.type === const_1.MESSAGE_TYPE_HTTP_REQUEST_END;
28
+ }
29
+ /**
30
+ * Tracks events in a time‑boxed activity window. When the window goes quiet for `inactivityMs`,
31
+ * it enters a draining phase: new short events are ignored; only active operations are awaited
32
+ * until they end or `drainTimeoutMs` elapses.
33
+ */
34
+ var ActivityWindowTracker = /** @class */ (function (_super) {
35
+ __extends(ActivityWindowTracker, _super);
36
+ function ActivityWindowTracker(eventsObservable, options) {
37
+ var _a, _b, _c, _d;
38
+ var _this = _super.call(this) || this;
39
+ _this._tracking = false;
40
+ _this.eventsObservable = eventsObservable;
41
+ _this._options = {
42
+ inactivityMs: (_a = options === null || options === void 0 ? void 0 : options.inactivityMs) !== null && _a !== void 0 ? _a : 100,
43
+ 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; }),
46
+ };
47
+ _this._initialize();
48
+ return _this;
49
+ }
50
+ ActivityWindowTracker.prototype._initialize = function () {
51
+ var _this = this;
52
+ this.eventsObservable
53
+ .filter(function () {
54
+ return _this._tracking;
55
+ })
56
+ .subscribe(function (event) {
57
+ 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);
61
+ if (startKey) {
62
+ (_b = _this._activeOperations) === null || _b === void 0 ? void 0 : _b.set(startKey, true);
63
+ }
64
+ var endKey = _this._options.isOperationEnd(event);
65
+ if (endKey) {
66
+ (_c = _this._activeOperations) === null || _c === void 0 ? void 0 : _c.delete(endKey);
67
+ }
68
+ _this._scheduleInactivityCheck();
69
+ });
70
+ };
71
+ ActivityWindowTracker.prototype.startTracking = function () {
72
+ if (this._tracking) {
73
+ return;
74
+ }
75
+ this._tracking = true;
76
+ this._startTime = Date.now();
77
+ this._lastEventTime = Date.now();
78
+ this.notify({
79
+ message: 'tracking-started',
80
+ });
81
+ this._currentEvents = [];
82
+ this._activeOperations = new Map();
83
+ this._scheduleInactivityCheck();
84
+ };
85
+ ActivityWindowTracker.prototype.stopTracking = function () {
86
+ this._tracking = false;
87
+ this._clearTimer(this._inactivityTid);
88
+ this._clearTimer(this._drainTid);
89
+ var duration = 0;
90
+ if (this.hasActiveOperations()) {
91
+ duration = Date.now() - this._startTime;
92
+ }
93
+ else {
94
+ duration = this._lastEventTime ? this._lastEventTime - this._startTime : 0;
95
+ }
96
+ this.notify({
97
+ message: 'tracking-ended',
98
+ events: this._currentEvents,
99
+ duration: duration,
100
+ });
101
+ };
102
+ ActivityWindowTracker.prototype._scheduleInactivityCheck = function () {
103
+ var _this = this;
104
+ this._inactivityTid = startTimeout(this._inactivityTid, function () {
105
+ if (_this.hasActiveOperations()) {
106
+ _this._startDrainTimeout();
107
+ }
108
+ else {
109
+ _this.stopTracking();
110
+ }
111
+ }, this._options.inactivityMs);
112
+ };
113
+ ActivityWindowTracker.prototype._startDrainTimeout = function () {
114
+ var _this = this;
115
+ this._drainTid = startTimeout(this._drainTid, function () {
116
+ _this.stopTracking();
117
+ }, this._options.drainTimeoutMs);
118
+ };
119
+ ActivityWindowTracker.prototype.hasActiveOperations = function () {
120
+ return !!this._activeOperations && this._activeOperations.size > 0;
121
+ };
122
+ ActivityWindowTracker.prototype._clearTimer = function (id) {
123
+ if (id) {
124
+ clearTimeout(id);
125
+ }
126
+ };
127
+ return ActivityWindowTracker;
128
+ }(faro_core_1.Observable));
129
+ exports.ActivityWindowTracker = ActivityWindowTracker;
130
+ function startTimeout(timeoutId, cb, delay) {
131
+ if (timeoutId) {
132
+ clearTimeout(timeoutId);
133
+ }
134
+ //@ts-expect-error for some reason vscode is using the node types
135
+ timeoutId = setTimeout(function () {
136
+ cb();
137
+ }, delay);
138
+ return timeoutId;
139
+ }
140
+ //# sourceMappingURL=activityWindowTracker.js.map
@@ -0,0 +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 = 0;\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"]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MESSAGE_TYPE_DOM_MUTATION = exports.MESSAGE_TYPE_HTTP_REQUEST_END = exports.MESSAGE_TYPE_HTTP_REQUEST_START = exports.MESSAGE_TYPE_RESOURCE_ENTRY = void 0;
4
+ exports.MESSAGE_TYPE_RESOURCE_ENTRY = 'resource-entry';
5
+ exports.MESSAGE_TYPE_HTTP_REQUEST_START = 'http-request-start';
6
+ exports.MESSAGE_TYPE_HTTP_REQUEST_END = 'http-request-end';
7
+ exports.MESSAGE_TYPE_DOM_MUTATION = 'dom-mutation';
8
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../src/instrumentations/_internal/monitors/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GAAG,gBAAgB,CAAC;AAC/C,QAAA,+BAA+B,GAAG,oBAAoB,CAAC;AACvD,QAAA,6BAA6B,GAAG,kBAAkB,CAAC;AACnD,QAAA,yBAAyB,GAAG,cAAc,CAAC","sourcesContent":["export const MESSAGE_TYPE_RESOURCE_ENTRY = 'resource-entry';\nexport const MESSAGE_TYPE_HTTP_REQUEST_START = 'http-request-start';\nexport const MESSAGE_TYPE_HTTP_REQUEST_END = 'http-request-end';\nexport const MESSAGE_TYPE_DOM_MUTATION = 'dom-mutation';\n"]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.monitorDomMutations = monitorDomMutations;
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;
9
+ function monitorDomMutations() {
10
+ if (!domMutationObservable) {
11
+ domMutationObservable = new faro_core_1.Observable();
12
+ }
13
+ if (!domMutationObserver) {
14
+ domMutationObserver = new MutationObserver(function (_mutationsList, _observer) {
15
+ domMutationObservable.notify({ type: const_1.MESSAGE_TYPE_DOM_MUTATION });
16
+ });
17
+ domMutationObserver.observe(document, {
18
+ attributes: true,
19
+ childList: true,
20
+ subtree: true,
21
+ characterData: true,
22
+ });
23
+ }
24
+ return domMutationObservable;
25
+ }
26
+ // Test-only utility to reset state between tests
27
+ function __resetDomMutationMonitorForTests() {
28
+ if (domMutationObserver) {
29
+ domMutationObserver.disconnect();
30
+ }
31
+ domMutationObserver = undefined;
32
+ domMutationObservable = undefined;
33
+ }
34
+ //# sourceMappingURL=domMutationMonitor.js.map