@grafana/faro-web-sdk 1.2.1 → 1.2.3

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 (117) hide show
  1. package/dist/bundle/faro-web-sdk.iife.js +1 -1
  2. package/dist/bundle/types/config/getWebInstrumentations.d.ts +3 -0
  3. package/dist/bundle/types/config/index.d.ts +3 -0
  4. package/dist/bundle/types/config/makeCoreConfig.d.ts +3 -0
  5. package/dist/bundle/types/config/types.d.ts +9 -0
  6. package/dist/bundle/types/consts.d.ts +1 -0
  7. package/dist/bundle/types/index.d.ts +11 -0
  8. package/dist/bundle/types/initialize.d.ts +3 -0
  9. package/dist/bundle/types/instrumentations/console/index.d.ts +2 -0
  10. package/dist/bundle/types/instrumentations/console/instrumentation.d.ts +10 -0
  11. package/dist/bundle/types/instrumentations/console/types.d.ts +4 -0
  12. package/dist/bundle/types/instrumentations/errors/const.d.ts +7 -0
  13. package/dist/bundle/types/instrumentations/errors/getErrorDetails.d.ts +3 -0
  14. package/dist/bundle/types/instrumentations/errors/getValueAndTypeFromMessage.d.ts +1 -0
  15. package/dist/bundle/types/instrumentations/errors/index.d.ts +3 -0
  16. package/dist/bundle/types/instrumentations/errors/instrumentation.d.ts +6 -0
  17. package/dist/bundle/types/instrumentations/errors/registerOnerror.d.ts +2 -0
  18. package/dist/bundle/types/instrumentations/errors/registerOnunhandledrejection.d.ts +2 -0
  19. package/dist/bundle/types/instrumentations/errors/stackFrames/buildStackFrame.d.ts +2 -0
  20. package/dist/bundle/types/instrumentations/errors/stackFrames/const.d.ts +15 -0
  21. package/dist/bundle/types/instrumentations/errors/stackFrames/getDataFromSafariExtensions.d.ts +1 -0
  22. package/dist/bundle/types/instrumentations/errors/stackFrames/getStackFramesFromError.d.ts +2 -0
  23. package/dist/bundle/types/instrumentations/errors/stackFrames/index.d.ts +4 -0
  24. package/dist/bundle/types/instrumentations/errors/stackFrames/parseStacktrace.d.ts +2 -0
  25. package/dist/bundle/types/instrumentations/errors/types.d.ts +8 -0
  26. package/dist/bundle/types/instrumentations/index.d.ts +7 -0
  27. package/dist/bundle/types/instrumentations/session/index.d.ts +2 -0
  28. package/dist/bundle/types/instrumentations/session/instrumentation.d.ts +9 -0
  29. package/dist/bundle/types/instrumentations/session/sessionHandler.d.ts +22 -0
  30. package/dist/bundle/types/instrumentations/view/index.d.ts +1 -0
  31. package/dist/bundle/types/instrumentations/view/instrumentation.d.ts +8 -0
  32. package/dist/bundle/types/instrumentations/webVitals/index.d.ts +1 -0
  33. package/dist/bundle/types/instrumentations/webVitals/instrumentation.d.ts +14 -0
  34. package/dist/bundle/types/metas/browser/index.d.ts +1 -0
  35. package/dist/bundle/types/metas/browser/meta.d.ts +2 -0
  36. package/dist/bundle/types/metas/const.d.ts +2 -0
  37. package/dist/bundle/types/metas/index.d.ts +5 -0
  38. package/dist/bundle/types/metas/k6/index.d.ts +1 -0
  39. package/dist/bundle/types/metas/k6/meta.d.ts +2 -0
  40. package/dist/bundle/types/metas/page/index.d.ts +1 -0
  41. package/dist/bundle/types/metas/page/meta.d.ts +2 -0
  42. package/dist/bundle/types/metas/session/createSession.d.ts +2 -0
  43. package/dist/bundle/types/metas/session/index.d.ts +1 -0
  44. package/dist/bundle/types/metas/view/const.d.ts +3 -0
  45. package/dist/bundle/types/metas/view/index.d.ts +1 -0
  46. package/dist/bundle/types/transports/console/index.d.ts +2 -0
  47. package/dist/bundle/types/transports/console/transport.d.ts +10 -0
  48. package/dist/bundle/types/transports/console/types.d.ts +4 -0
  49. package/dist/bundle/types/transports/fetch/index.d.ts +2 -0
  50. package/dist/bundle/types/transports/fetch/transport.d.ts +17 -0
  51. package/dist/bundle/types/transports/fetch/types.d.ts +13 -0
  52. package/dist/bundle/types/transports/index.d.ts +4 -0
  53. package/dist/bundle/types/utils/index.d.ts +2 -0
  54. package/dist/bundle/types/utils/throttle.d.ts +4 -0
  55. package/dist/bundle/types/utils/webStorage.d.ts +7 -0
  56. package/dist/cjs/config/makeCoreConfig.js +42 -8
  57. package/dist/cjs/config/makeCoreConfig.js.map +1 -1
  58. package/dist/cjs/config/types.js.map +1 -1
  59. package/dist/cjs/instrumentations/session/index.js +15 -0
  60. package/dist/cjs/instrumentations/session/index.js.map +1 -1
  61. package/dist/cjs/instrumentations/session/instrumentation.js +24 -2
  62. package/dist/cjs/instrumentations/session/instrumentation.js.map +1 -1
  63. package/dist/cjs/instrumentations/session/sessionHandler.js +170 -0
  64. package/dist/cjs/instrumentations/session/sessionHandler.js.map +1 -0
  65. package/dist/cjs/metas/browser/meta.js +1 -0
  66. package/dist/cjs/metas/browser/meta.js.map +1 -1
  67. package/dist/cjs/metas/k6/index.js +6 -0
  68. package/dist/cjs/metas/k6/index.js.map +1 -0
  69. package/dist/cjs/metas/k6/meta.js +12 -0
  70. package/dist/cjs/metas/k6/meta.js.map +1 -0
  71. package/dist/cjs/transports/fetch/transport.js +6 -3
  72. package/dist/cjs/transports/fetch/transport.js.map +1 -1
  73. package/dist/cjs/utils/index.js +19 -0
  74. package/dist/cjs/utils/index.js.map +1 -0
  75. package/dist/cjs/utils/throttle.js +34 -0
  76. package/dist/cjs/utils/throttle.js.map +1 -0
  77. package/dist/cjs/utils/webStorage.js +47 -0
  78. package/dist/cjs/utils/webStorage.js.map +1 -0
  79. package/dist/esm/config/makeCoreConfig.js +34 -9
  80. package/dist/esm/config/makeCoreConfig.js.map +1 -1
  81. package/dist/esm/config/types.js.map +1 -1
  82. package/dist/esm/instrumentations/session/index.js +1 -0
  83. package/dist/esm/instrumentations/session/index.js.map +1 -1
  84. package/dist/esm/instrumentations/session/instrumentation.js +14 -2
  85. package/dist/esm/instrumentations/session/instrumentation.js.map +1 -1
  86. package/dist/esm/instrumentations/session/sessionHandler.js +148 -0
  87. package/dist/esm/instrumentations/session/sessionHandler.js.map +1 -0
  88. package/dist/esm/metas/browser/meta.js +1 -0
  89. package/dist/esm/metas/browser/meta.js.map +1 -1
  90. package/dist/esm/metas/k6/index.js +2 -0
  91. package/dist/esm/metas/k6/index.js.map +1 -0
  92. package/dist/esm/metas/k6/meta.js +8 -0
  93. package/dist/esm/metas/k6/meta.js.map +1 -0
  94. package/dist/esm/transports/fetch/transport.js +5 -2
  95. package/dist/esm/transports/fetch/transport.js.map +1 -1
  96. package/dist/esm/utils/index.js +3 -0
  97. package/dist/esm/utils/index.js.map +1 -0
  98. package/dist/esm/utils/throttle.js +26 -0
  99. package/dist/esm/utils/throttle.js.map +1 -0
  100. package/dist/esm/utils/webStorage.js +40 -0
  101. package/dist/esm/utils/webStorage.js.map +1 -0
  102. package/dist/types/config/types.d.ts +0 -1
  103. package/dist/types/instrumentations/console/instrumentation.d.ts +1 -1
  104. package/dist/types/instrumentations/errors/instrumentation.d.ts +1 -1
  105. package/dist/types/instrumentations/session/index.d.ts +1 -0
  106. package/dist/types/instrumentations/session/instrumentation.d.ts +2 -1
  107. package/dist/types/instrumentations/session/sessionHandler.d.ts +22 -0
  108. package/dist/types/instrumentations/view/instrumentation.d.ts +1 -1
  109. package/dist/types/instrumentations/webVitals/instrumentation.d.ts +5 -5
  110. package/dist/types/metas/k6/index.d.ts +1 -0
  111. package/dist/types/metas/k6/meta.d.ts +2 -0
  112. package/dist/types/transports/console/transport.d.ts +1 -1
  113. package/dist/types/transports/fetch/transport.d.ts +1 -1
  114. package/dist/types/utils/index.d.ts +2 -0
  115. package/dist/types/utils/throttle.d.ts +4 -0
  116. package/dist/types/utils/webStorage.d.ts +7 -0
  117. package/package.json +4 -4
@@ -0,0 +1,40 @@
1
+ import { faro } from '@grafana/faro-core';
2
+ export function isWebStorageAvailable(type) {
3
+ var _a;
4
+ try {
5
+ let storage;
6
+ storage = window[type];
7
+ const testItem = '__faro_storage_test__';
8
+ storage.setItem(testItem, testItem);
9
+ storage.removeItem(testItem);
10
+ return true;
11
+ }
12
+ catch (error) {
13
+ // the above can throw
14
+ (_a = faro.internalLogger) === null || _a === void 0 ? void 0 : _a.info(`Web storage of type ${type} is not available. Reason: ${error}`);
15
+ return false;
16
+ }
17
+ }
18
+ export const isLocalStorageAvailable = isWebStorageAvailable('localStorage');
19
+ export function getItem(key) {
20
+ if (isLocalStorageAvailable) {
21
+ return localStorage.getItem(key);
22
+ }
23
+ return null;
24
+ }
25
+ export function setItem(key, value) {
26
+ if (isLocalStorageAvailable) {
27
+ try {
28
+ localStorage.setItem(key, value);
29
+ }
30
+ catch (error) {
31
+ // do nothing
32
+ }
33
+ }
34
+ }
35
+ export function removeItem(key) {
36
+ if (isLocalStorageAvailable) {
37
+ localStorage.removeItem(key);
38
+ }
39
+ }
40
+ //# sourceMappingURL=webStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webStorage.js","sourceRoot":"","sources":["../../../src/utils/webStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAI1C,MAAM,UAAU,qBAAqB,CAAC,IAAsB;;IAC1D,IAAI;QACF,IAAI,OAAO,CAAC;QACZ,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,QAAQ,GAAG,uBAAuB,CAAC;QACzC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,KAAK,EAAE;QACd,sBAAsB;QACtB,MAAA,IAAI,CAAC,cAAc,0CAAE,IAAI,CAAC,uBAAuB,IAAI,8BAA8B,KAAK,EAAE,CAAC,CAAC;QAC5F,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;AAE7E,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,IAAI,uBAAuB,EAAE;QAC3B,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAClC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa;IAChD,IAAI,uBAAuB,EAAE;QAC3B,IAAI;YACF,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAClC;QAAC,OAAO,KAAK,EAAE;YACd,aAAa;SACd;KACF;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,uBAAuB,EAAE;QAC3B,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KAC9B;AACH,CAAC","sourcesContent":["import { faro } from '@grafana/faro-core';\n\ntype StorageMechanism = 'sessionStorage' | 'localStorage';\n\nexport function isWebStorageAvailable(type: StorageMechanism): boolean {\n try {\n let storage;\n storage = window[type];\n\n const testItem = '__faro_storage_test__';\n storage.setItem(testItem, testItem);\n storage.removeItem(testItem);\n return true;\n } catch (error) {\n // the above can throw\n faro.internalLogger?.info(`Web storage of type ${type} is not available. Reason: ${error}`);\n return false;\n }\n}\n\nexport const isLocalStorageAvailable = isWebStorageAvailable('localStorage');\n\nexport function getItem(key: string): string | null {\n if (isLocalStorageAvailable) {\n return localStorage.getItem(key);\n }\n\n return null;\n}\n\nexport function setItem(key: string, value: string): void {\n if (isLocalStorageAvailable) {\n try {\n localStorage.setItem(key, value);\n } catch (error) {\n // do nothing\n }\n }\n}\n\nexport function removeItem(key: string): void {\n if (isLocalStorageAvailable) {\n localStorage.removeItem(key);\n }\n}\n"]}
@@ -5,6 +5,5 @@ export interface BrowserConfig extends Partial<Omit<Config, 'app' | 'parseStackt
5
5
  }
6
6
  export interface GetWebInstrumentationsOptions {
7
7
  captureConsole?: boolean;
8
- capturePerformanceTimeline?: boolean;
9
8
  captureConsoleDisabledLevels?: LogLevel[];
10
9
  }
@@ -3,7 +3,7 @@ import type { ConsoleInstrumentationOptions } from './types';
3
3
  export declare class ConsoleInstrumentation extends BaseInstrumentation {
4
4
  private options;
5
5
  readonly name = "@grafana/faro-web-sdk:instrumentation-console";
6
- readonly version = "1.2.1";
6
+ readonly version = "1.2.3";
7
7
  static defaultDisabledLevels: LogLevel[];
8
8
  constructor(options?: ConsoleInstrumentationOptions);
9
9
  initialize(): 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 = "1.2.1";
4
+ readonly version = "1.2.3";
5
5
  initialize(): void;
6
6
  }
@@ -1 +1,2 @@
1
1
  export { SessionInstrumentation } from './instrumentation';
2
+ export * from './sessionHandler';
@@ -1,8 +1,9 @@
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 = "1.2.1";
4
+ readonly version = "1.2.3";
5
5
  private notifiedSession;
6
+ private sessionUpdater;
6
7
  private sendSessionStartEvent;
7
8
  initialize(): void;
8
9
  }
@@ -0,0 +1,22 @@
1
+ import { MetaSession } from '@grafana/faro-core';
2
+ export interface FaroUserSession {
3
+ sessionId: string;
4
+ lastActivity: number;
5
+ started: number;
6
+ sessionMeta?: MetaSession;
7
+ }
8
+ export interface UserSessionUpdater {
9
+ handleUpdate: () => void;
10
+ init: () => void;
11
+ }
12
+ export declare const SESSION_EXPIRATION_TIME: number;
13
+ export declare const SESSION_INACTIVITY_TIME: number;
14
+ export declare const STORAGE_KEY = "__FARO_SESSION__";
15
+ export declare function createUserSessionObject(sessionId?: string): FaroUserSession;
16
+ export declare function removeUserSession(): void;
17
+ export declare function storeUserSession(session: FaroUserSession): void;
18
+ export declare function fetchUserSession(): FaroUserSession | null;
19
+ export declare function isUserSessionValid(session: FaroUserSession | null): boolean;
20
+ export declare function persistentUserSessionsUpdater(initialSessionId?: string): UserSessionUpdater;
21
+ export declare function inMemoryUserSessionsUpdater(initialSessionId?: string): UserSessionUpdater;
22
+ export declare function getSessionUpdater(initialSessionId?: string): UserSessionUpdater;
@@ -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 = "1.2.1";
4
+ readonly version = "1.2.3";
5
5
  private notifiedView;
6
6
  private sendViewChangedEvent;
7
7
  initialize(): void;
@@ -1,14 +1,14 @@
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 = "1.2.1";
4
+ readonly version = "1.2.3";
5
5
  static mapping: {
6
6
  cls: (onReport: import("web-vitals").CLSReportCallback, opts?: import("web-vitals").ReportOpts | undefined) => void;
7
7
  fcp: (onReport: import("web-vitals").FCPReportCallback, opts?: import("web-vitals").ReportOpts | undefined) => void;
8
- fid: (onReport: import("web-vitals").ReportHandler, opts?: import("web-vitals").ReportOpts | undefined) => void;
9
- inp: (onReport: import("web-vitals").ReportHandler, opts?: import("web-vitals").ReportOpts | undefined) => void;
10
- lcp: (onReport: import("web-vitals").ReportHandler, opts?: import("web-vitals").ReportOpts | undefined) => void;
11
- ttfb: (onReport: import("web-vitals").ReportHandler, opts?: import("web-vitals").ReportOpts | undefined) => void;
8
+ fid: (onReport: import("web-vitals").FIDReportCallback, opts?: import("web-vitals").ReportOpts | undefined) => void;
9
+ inp: (onReport: import("web-vitals").INPReportCallback, opts?: import("web-vitals").ReportOpts | undefined) => void;
10
+ lcp: (onReport: import("web-vitals").LCPReportCallback, opts?: import("web-vitals").ReportOpts | undefined) => void;
11
+ ttfb: (onReport: import("web-vitals").TTFBReportCallback, opts?: import("web-vitals").ReportOpts | undefined) => void;
12
12
  };
13
13
  initialize(): void;
14
14
  }
@@ -0,0 +1 @@
1
+ export { k6Meta } from './meta';
@@ -0,0 +1,2 @@
1
+ import type { Meta, MetaItem } from '@grafana/faro-core';
2
+ export declare const k6Meta: MetaItem<Pick<Meta, 'k6'>>;
@@ -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 = "1.2.1";
7
+ readonly version = "1.2.3";
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 = "1.2.1";
7
+ readonly version = "1.2.3";
8
8
  promiseBuffer: PromiseBuffer<Response | void>;
9
9
  private readonly rateLimitBackoffMs;
10
10
  private readonly getNow;
@@ -0,0 +1,2 @@
1
+ export * from './webStorage';
2
+ export * from './throttle';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tail based throttle which caches the args of the last call and updates
3
+ */
4
+ export declare function throttle<T extends (...args: any[]) => void>(callback: T, delay: number): (...args: Parameters<T>) => void;
@@ -0,0 +1,7 @@
1
+ type StorageMechanism = 'sessionStorage' | 'localStorage';
2
+ export declare function isWebStorageAvailable(type: StorageMechanism): boolean;
3
+ export declare const isLocalStorageAvailable: boolean;
4
+ export declare function getItem(key: string): string | null;
5
+ export declare function setItem(key: string, value: string): void;
6
+ export declare function removeItem(key: string): void;
7
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grafana/faro-web-sdk",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "description": "Faro instrumentations, metas, transports for web.",
5
5
  "keywords": [
6
6
  "observability",
@@ -52,16 +52,16 @@
52
52
  "quality:circular-deps": "madge --circular ."
53
53
  },
54
54
  "dependencies": {
55
- "@grafana/faro-core": "^1.2.1",
55
+ "@grafana/faro-core": "^1.2.3",
56
56
  "ua-parser-js": "^1.0.32",
57
57
  "web-vitals": "^3.1.1"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@types/ua-parser-js": "^0.7.36",
61
- "user-agent-data-types": "^0.3.1"
61
+ "user-agent-data-types": "^0.4.2"
62
62
  },
63
63
  "publishConfig": {
64
64
  "access": "public"
65
65
  },
66
- "gitHead": "8bc51d9bd142485d0dd5d5fbf1dfe805aa96bcc8"
66
+ "gitHead": "e15cdf130a4400c4e4f8d597b58a2dc7d488522a"
67
67
  }