@amplitude/session-replay-browser 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 (73) hide show
  1. package/lib/cjs/config.d.ts +0 -3
  2. package/lib/cjs/config.d.ts.map +1 -1
  3. package/lib/cjs/config.js +0 -9
  4. package/lib/cjs/config.js.map +1 -1
  5. package/lib/cjs/events-manager.d.ts +49 -0
  6. package/lib/cjs/events-manager.d.ts.map +1 -0
  7. package/lib/cjs/events-manager.js +157 -0
  8. package/lib/cjs/events-manager.js.map +1 -0
  9. package/lib/cjs/identifiers.d.ts +9 -0
  10. package/lib/cjs/identifiers.d.ts.map +1 -0
  11. package/lib/cjs/identifiers.js +18 -0
  12. package/lib/cjs/identifiers.js.map +1 -0
  13. package/lib/cjs/session-idb-store.d.ts +15 -0
  14. package/lib/cjs/session-idb-store.d.ts.map +1 -0
  15. package/lib/cjs/session-idb-store.js +107 -0
  16. package/lib/cjs/session-idb-store.js.map +1 -0
  17. package/lib/cjs/session-replay.d.ts +5 -41
  18. package/lib/cjs/session-replay.d.ts.map +1 -1
  19. package/lib/cjs/session-replay.js +55 -406
  20. package/lib/cjs/session-replay.js.map +1 -1
  21. package/lib/cjs/track-destination.d.ts +27 -0
  22. package/lib/cjs/track-destination.d.ts.map +1 -0
  23. package/lib/cjs/track-destination.js +201 -0
  24. package/lib/cjs/track-destination.js.map +1 -0
  25. package/lib/cjs/typings/session-replay.d.ts +45 -7
  26. package/lib/cjs/typings/session-replay.d.ts.map +1 -1
  27. package/lib/cjs/typings/session-replay.js.map +1 -1
  28. package/lib/esm/config.d.ts +0 -3
  29. package/lib/esm/config.d.ts.map +1 -1
  30. package/lib/esm/config.js +0 -9
  31. package/lib/esm/config.js.map +1 -1
  32. package/lib/esm/events-manager.d.ts +49 -0
  33. package/lib/esm/events-manager.d.ts.map +1 -0
  34. package/lib/esm/events-manager.js +155 -0
  35. package/lib/esm/events-manager.js.map +1 -0
  36. package/lib/esm/identifiers.d.ts +9 -0
  37. package/lib/esm/identifiers.d.ts.map +1 -0
  38. package/lib/esm/identifiers.js +16 -0
  39. package/lib/esm/identifiers.js.map +1 -0
  40. package/lib/esm/session-idb-store.d.ts +15 -0
  41. package/lib/esm/session-idb-store.d.ts.map +1 -0
  42. package/lib/esm/session-idb-store.js +105 -0
  43. package/lib/esm/session-idb-store.js.map +1 -0
  44. package/lib/esm/session-replay.d.ts +5 -41
  45. package/lib/esm/session-replay.d.ts.map +1 -1
  46. package/lib/esm/session-replay.js +59 -410
  47. package/lib/esm/session-replay.js.map +1 -1
  48. package/lib/esm/track-destination.d.ts +27 -0
  49. package/lib/esm/track-destination.d.ts.map +1 -0
  50. package/lib/esm/track-destination.js +199 -0
  51. package/lib/esm/track-destination.js.map +1 -0
  52. package/lib/esm/typings/session-replay.d.ts +45 -7
  53. package/lib/esm/typings/session-replay.d.ts.map +1 -1
  54. package/lib/esm/typings/session-replay.js.map +1 -1
  55. package/lib/scripts/amplitude-min.js +1 -1
  56. package/lib/scripts/amplitude-min.js.gz +0 -0
  57. package/lib/scripts/amplitude-min.umd.js +1 -1
  58. package/lib/scripts/amplitude-min.umd.js.gz +0 -0
  59. package/lib/scripts/config.d.ts +0 -3
  60. package/lib/scripts/config.d.ts.map +1 -1
  61. package/lib/scripts/events-manager.d.ts +49 -0
  62. package/lib/scripts/events-manager.d.ts.map +1 -0
  63. package/lib/scripts/identifiers.d.ts +9 -0
  64. package/lib/scripts/identifiers.d.ts.map +1 -0
  65. package/lib/scripts/session-idb-store.d.ts +15 -0
  66. package/lib/scripts/session-idb-store.d.ts.map +1 -0
  67. package/lib/scripts/session-replay.d.ts +5 -41
  68. package/lib/scripts/session-replay.d.ts.map +1 -1
  69. package/lib/scripts/track-destination.d.ts +27 -0
  70. package/lib/scripts/track-destination.d.ts.map +1 -0
  71. package/lib/scripts/typings/session-replay.d.ts +45 -7
  72. package/lib/scripts/typings/session-replay.d.ts.map +1 -1
  73. package/package.json +2 -2
@@ -0,0 +1,49 @@
1
+ import { SessionReplayEventsManager as AmplitudeSessionReplayEventsManager, SessionReplaySessionIDBStore as AmplitudeSessionReplayEventsStorage, SessionReplayTrackDestination as AmplitudeSessionReplayTrackDestination, Events, IDBStore, SessionReplayConfig } from './typings/session-replay';
2
+ export declare class SessionReplayEventsManager implements AmplitudeSessionReplayEventsManager {
3
+ events: Events;
4
+ currentSequenceId: number;
5
+ maxPersistedEventsSize: number;
6
+ interval: number;
7
+ timeAtLastSend: number | null;
8
+ sessionIDBStore: AmplitudeSessionReplayEventsStorage;
9
+ trackDestination: AmplitudeSessionReplayTrackDestination;
10
+ config: SessionReplayConfig;
11
+ constructor({ config }: {
12
+ config: SessionReplayConfig;
13
+ });
14
+ initialize({ sessionId, deviceId, shouldSendStoredEvents, }: {
15
+ sessionId: number;
16
+ deviceId: string;
17
+ shouldSendStoredEvents?: boolean;
18
+ }): Promise<void>;
19
+ sendStoredEvents({ storedReplaySessions, sessionId, deviceId, }: {
20
+ storedReplaySessions: IDBStore;
21
+ sessionId: number;
22
+ deviceId: string;
23
+ }): void;
24
+ resetSequence(): void;
25
+ addEvent({ event, sessionId, deviceId }: {
26
+ event: string;
27
+ sessionId: number;
28
+ deviceId: string;
29
+ }): void;
30
+ /**
31
+ * Determines whether to send the events list to the backend and start a new
32
+ * empty events list, based on the size of the list as well as the last time sent
33
+ * @param nextEventString
34
+ * @returns boolean
35
+ */
36
+ shouldSplitEventsList: (nextEventString: string) => boolean;
37
+ sendEvents({ sessionId, deviceId }: {
38
+ sessionId: number;
39
+ deviceId: string;
40
+ }): void;
41
+ sendEventsList({ events, sequenceId, sessionId, deviceId, }: {
42
+ events: string[];
43
+ sequenceId: number;
44
+ sessionId: number;
45
+ deviceId: string;
46
+ }): void;
47
+ flush(useRetry?: boolean): Promise<void>;
48
+ }
49
+ //# sourceMappingURL=events-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-manager.d.ts","sourceRoot":"","sources":["../../src/events-manager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,IAAI,mCAAmC,EACjE,4BAA4B,IAAI,mCAAmC,EACnE,6BAA6B,IAAI,sCAAsC,EACvE,MAAM,EACN,QAAQ,EAER,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAKlC,qBAAa,0BAA2B,YAAW,mCAAmC;IACpF,MAAM,EAAE,MAAM,CAAM;IACpB,iBAAiB,SAAK;IACtB,sBAAsB,SAAgC;IACtD,QAAQ,SAAgB;IACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IACrC,eAAe,EAAE,mCAAmC,CAAC;IACrD,gBAAgB,EAAE,sCAAsC,CAAC;IACzD,MAAM,EAAE,mBAAmB,CAAC;gBAEhB,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,mBAAmB,CAAA;KAAE;IASjD,UAAU,CAAC,EACf,SAAS,EACT,QAAQ,EACR,sBAA8B,GAC/B,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC;IAsBD,gBAAgB,CAAC,EACf,oBAAoB,EACpB,SAAS,EACT,QAAQ,GACT,EAAE;QACD,oBAAoB,EAAE,QAAQ,CAAC;QAC/B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB;IAuBD,aAAa;IAKb,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAgB/F;;;;;OAKG;IACH,qBAAqB,oBAAqB,MAAM,KAAG,OAAO,CAYxD;IAEF,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAW3E,cAAc,CAAC,EACb,MAAM,EACN,UAAU,EACV,SAAS,EACT,QAAQ,GACT,EAAE;QACD,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB;IAcK,KAAK,CAAC,QAAQ,UAAQ;CAK7B"}
@@ -0,0 +1,9 @@
1
+ import { Logger as ILogger } from '@amplitude/analytics-types';
2
+ import { SessionIdentifiers as ISessionIdentifiers, SessionReplayOptions } from './typings/session-replay';
3
+ export declare class SessionIdentifiers implements ISessionIdentifiers {
4
+ deviceId?: string | undefined;
5
+ sessionId?: number | undefined;
6
+ sessionReplayId?: string | undefined;
7
+ constructor(options: SessionReplayOptions, loggerProvider: ILogger);
8
+ }
9
+ //# sourceMappingURL=identifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../src/identifiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAE3G,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEzB,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,OAAO;CAUnE"}
@@ -0,0 +1,15 @@
1
+ import { Logger as ILogger } from '@amplitude/analytics-types';
2
+ import { SessionReplaySessionIDBStore as AmplitudeSessionReplaySessionIDBStore, Events, IDBStore } from './typings/session-replay';
3
+ export declare class SessionReplaySessionIDBStore implements AmplitudeSessionReplaySessionIDBStore {
4
+ apiKey: string | undefined;
5
+ storageKey: string;
6
+ loggerProvider: ILogger;
7
+ constructor({ apiKey, loggerProvider }: {
8
+ apiKey: string;
9
+ loggerProvider: ILogger;
10
+ });
11
+ getAllSessionDataFromStore: () => Promise<IDBStore | undefined>;
12
+ storeEventsForSession: (events: Events, sequenceId: number, sessionId: number) => Promise<void>;
13
+ cleanUpSessionEventsStore: (sessionId: number, sequenceId: number) => Promise<void>;
14
+ }
15
+ //# sourceMappingURL=session-idb-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-idb-store.d.ts","sourceRoot":"","sources":["../../src/session-idb-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAI/D,OAAO,EACL,4BAA4B,IAAI,qCAAqC,EACrE,MAAM,EACN,QAAQ,EAGT,MAAM,0BAA0B,CAAC;AAElC,qBAAa,4BAA6B,YAAW,qCAAqC;IACxF,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,SAAM;IAChB,cAAc,EAAE,OAAO,CAAC;gBACZ,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE;IAKnF,0BAA0B,sCASxB;IAEF,qBAAqB,+BAAsC,MAAM,aAAa,MAAM,mBAyBlF;IAEF,yBAAyB,cAAqB,MAAM,cAAc,MAAM,mBAiCtE;CACH"}
@@ -1,27 +1,20 @@
1
1
  import { Logger as ILogger } from '@amplitude/analytics-types';
2
2
  import { record } from '@amplitude/rrweb';
3
- import { AmplitudeSessionReplay, Events, IDBStore, SessionReplayConfig as ISessionReplayConfig, SessionReplayContext, SessionReplayOptions } from './typings/session-replay';
3
+ import { AmplitudeSessionReplay, SessionReplayEventsManager as AmplitudeSessionReplayEventsManager, SessionIdentifiers as ISessionIdentifiers, SessionReplayConfig as ISessionReplayConfig, SessionReplayOptions } from './typings/session-replay';
4
4
  export declare class SessionReplay implements AmplitudeSessionReplay {
5
5
  name: string;
6
6
  config: ISessionReplayConfig | undefined;
7
+ identifiers: ISessionIdentifiers | undefined;
8
+ eventsManager: AmplitudeSessionReplayEventsManager | undefined;
7
9
  loggerProvider: ILogger;
8
- storageKey: string;
9
- retryTimeout: number;
10
- events: Events;
11
- currentSequenceId: number;
12
- private scheduled;
13
- queue: SessionReplayContext[];
14
10
  stopRecordingEvents: ReturnType<typeof record> | null;
15
- maxPersistedEventsSize: number;
16
- interval: number;
17
- timeAtLastSend: number | null;
18
11
  constructor();
19
12
  init(apiKey: string, options: SessionReplayOptions): import("@amplitude/analytics-types").AmplitudeReturn<void>;
20
13
  protected _init(apiKey: string, options: SessionReplayOptions): Promise<void>;
21
14
  setSessionId(sessionId: number, deviceId?: string): void;
22
15
  getSessionReplayDebugPropertyValue(): string;
23
16
  getSessionReplayProperties(): {
24
- [x: string]: string | null;
17
+ [key: string]: string | null;
25
18
  };
26
19
  blurListener: () => void;
27
20
  focusListener: () => void;
@@ -30,39 +23,10 @@ export declare class SessionReplay implements AmplitudeSessionReplay {
30
23
  shouldOptOut(): boolean | undefined;
31
24
  getShouldRecord(ignoreFocus?: boolean): boolean;
32
25
  getBlockSelectors(): string | string[] | undefined;
33
- sendStoredEvents(storedReplaySessions: IDBStore): void;
34
26
  recordEvents(): void;
35
- /**
36
- * Determines whether to send the events list to the backend and start a new
37
- * empty events list, based on the size of the list as well as the last time sent
38
- * @param nextEventString
39
- * @returns boolean
40
- */
41
- shouldSplitEventsList: (nextEventString: string) => boolean;
42
- sendEventsList({ events, sequenceId, sessionId }: {
43
- events: string[];
44
- sequenceId: number;
45
- sessionId: number;
46
- }): void;
47
- addToQueue(...list: SessionReplayContext[]): void;
48
- schedule(timeout: number): void;
49
- flush(useRetry?: boolean): Promise<void>;
50
- getSampleRate(): number;
51
- getServerUrl(): "https://api-sr.amplitude.com/sessions/v2/track" | "https://api-sr.eu.amplitude.com/sessions/v2/track" | "https://api-sr.stag2.amplitude.com//sessions/v2/track";
52
27
  getDeviceId(): string | undefined;
53
28
  getSessionId(): number | undefined;
54
- send(context: SessionReplayContext, useRetry?: boolean): Promise<void>;
55
- handleReponse(status: number, context: SessionReplayContext): void;
56
- handleSuccessResponse(context: SessionReplayContext): void;
57
- handleOtherResponse(context: SessionReplayContext): void;
58
- getAllSessionEventsFromStore(): Promise<IDBStore | undefined>;
59
- storeEventsForSession(events: Events, sequenceId: number, sessionId: number): Promise<void>;
60
- cleanUpSessionEventsStore(sessionId: number, sequenceId: number): Promise<void>;
61
- completeRequest({ context, err, success }: {
62
- context: SessionReplayContext;
63
- err?: string;
64
- success?: string;
65
- }): void;
29
+ flush(useRetry?: boolean): Promise<void>;
66
30
  shutdown(): void;
67
31
  }
68
32
  //# sourceMappingURL=session-replay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAsB,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAQ,MAAM,EAAE,MAAM,kBAAkB,CAAC;AA6BhD,OAAO,EACL,sBAAsB,EACtB,MAAM,EACN,QAAQ,EAER,mBAAmB,IAAI,oBAAoB,EAE3C,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAGlC,qBAAa,aAAc,YAAW,sBAAsB;IAC1D,IAAI,SAAuC;IAC3C,MAAM,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACzC,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,SAAM;IAChB,YAAY,SAAQ;IACpB,MAAM,EAAE,MAAM,CAAM;IACpB,iBAAiB,SAAK;IACtB,OAAO,CAAC,SAAS,CAA8C;IAC/D,KAAK,EAAE,oBAAoB,EAAE,CAAM;IACnC,mBAAmB,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,GAAG,IAAI,CAAQ;IAC7D,sBAAsB,SAAgC;IACtD,QAAQ,SAAgB;IACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;;IAMrC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;cAIlC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;IAmBnE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAyBjD,kCAAkC;IAUlC,0BAA0B;;;IAwB1B,YAAY,aAEV;IAEF,aAAa,aAEX;IAEF,0BAA0B,CAAC,SAAS,CAAC,EAAE,MAAM;IAmBvC,UAAU,CAAC,sBAAsB,UAAQ;IAgC/C,YAAY;IAUZ,eAAe,CAAC,WAAW,UAAQ;IA8BnC,iBAAiB,IAAI,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAIlD,gBAAgB,CAAC,oBAAoB,EAAE,QAAQ;IAqB/C,YAAY;IA6CZ;;;;;OAKG;IACH,qBAAqB,oBAAqB,MAAM,KAAG,OAAO,CAYxD;IAEF,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAU7G,UAAU,CAAC,GAAG,IAAI,EAAE,oBAAoB,EAAE;IA0B1C,QAAQ,CAAC,OAAO,EAAE,MAAM;IAWlB,KAAK,CAAC,QAAQ,UAAQ;IAc5B,aAAa;IAIb,YAAY;IAYZ,WAAW;IAUX,YAAY;IAIN,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,UAAO;IA0DzD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;IAc3D,qBAAqB,CAAC,OAAO,EAAE,oBAAoB;IAInD,mBAAmB,CAAC,OAAO,EAAE,oBAAoB;IAO3C,4BAA4B;IAW5B,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IA2B3E,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAmCrE,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,oBAAoB,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAS5G,QAAQ;CAST"}
1
+ {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAQ,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAWhD,OAAO,EACL,sBAAsB,EACtB,0BAA0B,IAAI,mCAAmC,EACjE,kBAAkB,IAAI,mBAAmB,EACzC,mBAAmB,IAAI,oBAAoB,EAC3C,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAElC,qBAAa,aAAc,YAAW,sBAAsB;IAC1D,IAAI,SAAuC;IAC3C,MAAM,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACzC,WAAW,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC7C,aAAa,EAAE,mCAAmC,GAAG,SAAS,CAAC;IAC/D,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,GAAG,IAAI,CAAQ;;IAM7D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;cAIlC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;IAsBnE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAwBjD,kCAAkC;IAUlC,0BAA0B;;;IAwB1B,YAAY,aAEV;IAEF,aAAa,aAEX;IAEF,0BAA0B,CAAC,SAAS,CAAC,EAAE,MAAM;IAiBvC,UAAU,CAAC,sBAAsB,UAAQ;IAkB/C,YAAY;IAUZ,eAAe,CAAC,WAAW,UAAQ;IA8BnC,iBAAiB,IAAI,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAIlD,YAAY;IAkCZ,WAAW;IAUX,YAAY;IAIN,KAAK,CAAC,QAAQ,UAAQ;IAM5B,QAAQ;CAST"}
@@ -0,0 +1,27 @@
1
+ import { Logger as ILogger, ServerZone } from '@amplitude/analytics-types';
2
+ import { SessionReplayTrackDestination as AmplitudeSessionReplayTrackDestination, SessionReplayDestination, SessionReplayDestinationContext } from './typings/session-replay';
3
+ export declare class SessionReplayTrackDestination implements AmplitudeSessionReplayTrackDestination {
4
+ loggerProvider: ILogger;
5
+ storageKey: string;
6
+ retryTimeout: number;
7
+ private scheduled;
8
+ queue: SessionReplayDestinationContext[];
9
+ constructor({ loggerProvider }: {
10
+ loggerProvider: ILogger;
11
+ });
12
+ sendEventsList(destinationData: SessionReplayDestination): void;
13
+ getServerUrl(serverZone?: keyof typeof ServerZone): "https://api-sr.amplitude.com/sessions/v2/track" | "https://api-sr.eu.amplitude.com/sessions/v2/track" | "https://api-sr.stag2.amplitude.com//sessions/v2/track";
14
+ addToQueue(...list: SessionReplayDestinationContext[]): void;
15
+ schedule(timeout: number): void;
16
+ flush(useRetry?: boolean): Promise<void>;
17
+ send(context: SessionReplayDestinationContext, useRetry?: boolean): Promise<void>;
18
+ handleReponse(status: number, context: SessionReplayDestinationContext): void;
19
+ handleSuccessResponse(context: SessionReplayDestinationContext): void;
20
+ handleOtherResponse(context: SessionReplayDestinationContext): void;
21
+ completeRequest({ context, err, success, }: {
22
+ context: SessionReplayDestinationContext;
23
+ err?: string;
24
+ success?: string;
25
+ }): void;
26
+ }
27
+ //# sourceMappingURL=track-destination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-destination.d.ts","sourceRoot":"","sources":["../../src/track-destination.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,UAAU,EAAU,MAAM,4BAA4B,CAAC;AAenF,OAAO,EACL,6BAA6B,IAAI,sCAAsC,EACvE,wBAAwB,EACxB,+BAA+B,EAChC,MAAM,0BAA0B,CAAC;AAGlC,qBAAa,6BAA8B,YAAW,sCAAsC;IAC1F,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,SAAM;IAChB,YAAY,SAAQ;IACpB,OAAO,CAAC,SAAS,CAA8C;IAC/D,KAAK,EAAE,+BAA+B,EAAE,CAAM;gBAElC,EAAE,cAAc,EAAE,EAAE;QAAE,cAAc,EAAE,OAAO,CAAA;KAAE;IAI3D,cAAc,CAAC,eAAe,EAAE,wBAAwB;IAQxD,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,OAAO,UAAU;IAYjD,UAAU,CAAC,GAAG,IAAI,EAAE,+BAA+B,EAAE;IA0BrD,QAAQ,CAAC,OAAO,EAAE,MAAM;IAWlB,KAAK,CAAC,QAAQ,UAAQ;IActB,IAAI,CAAC,OAAO,EAAE,+BAA+B,EAAE,QAAQ,UAAO;IA0DpE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,+BAA+B;IActE,qBAAqB,CAAC,OAAO,EAAE,+BAA+B;IAI9D,mBAAmB,CAAC,OAAO,EAAE,+BAA+B;IAO5D,eAAe,CAAC,EACd,OAAO,EACP,GAAG,EACH,OAAO,GACR,EAAE;QACD,OAAO,EAAE,+BAA+B,CAAC;QACzC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;CAQF"}
@@ -1,11 +1,19 @@
1
- import { AmplitudeReturn, Config, LogLevel, Logger } from '@amplitude/analytics-types';
1
+ import { AmplitudeReturn, Config, LogLevel, Logger, ServerZone } from '@amplitude/analytics-types';
2
2
  export type Events = string[];
3
- export interface SessionReplayContext {
3
+ export interface SessionReplayDestination {
4
4
  events: Events;
5
5
  sequenceId: number;
6
+ sessionId: number;
7
+ flushMaxRetries?: number;
8
+ apiKey?: string;
9
+ deviceId?: string;
10
+ sampleRate: number;
11
+ serverZone?: keyof typeof ServerZone;
12
+ onComplete: (sessionId: number, sequenceId: number) => Promise<void>;
13
+ }
14
+ export interface SessionReplayDestinationContext extends SessionReplayDestination {
6
15
  attempts: number;
7
16
  timeout: number;
8
- sessionId: number;
9
17
  }
10
18
  export declare enum RecordingStatus {
11
19
  RECORDING = "recording",
@@ -24,22 +32,29 @@ export interface IDBStoreSession {
24
32
  export interface IDBStore {
25
33
  [sessionId: number]: IDBStoreSession;
26
34
  }
35
+ export interface SessionReplaySessionIDBStore {
36
+ getAllSessionDataFromStore(): Promise<IDBStore | undefined>;
37
+ storeEventsForSession(events: Events, sequenceId: number, sessionId: number): Promise<void>;
38
+ cleanUpSessionEventsStore(sessionId: number, sequenceId: number): Promise<void>;
39
+ }
27
40
  export interface SessionReplayPrivacyConfig {
28
41
  blockSelector?: string | string[];
29
42
  }
30
43
  export interface SessionReplayConfig extends Config {
31
44
  apiKey: string;
32
- deviceId?: string;
33
- sessionId?: number;
34
45
  loggerProvider: Logger;
35
46
  logLevel: LogLevel;
36
47
  flushMaxRetries: number;
37
48
  sampleRate: number;
38
- sessionReplayId?: string;
39
49
  privacyConfig?: SessionReplayPrivacyConfig;
40
50
  debugMode?: boolean;
41
51
  }
42
- export type SessionReplayOptions = Omit<Partial<SessionReplayConfig>, 'apiKey'>;
52
+ export interface SessionIdentifiers {
53
+ deviceId?: string;
54
+ sessionId?: number;
55
+ sessionReplayId?: string;
56
+ }
57
+ export type SessionReplayOptions = Omit<Partial<SessionReplayConfig & SessionIdentifiers>, 'apiKey'>;
43
58
  export interface AmplitudeSessionReplay {
44
59
  init: (apiKey: string, options: SessionReplayOptions) => AmplitudeReturn<void>;
45
60
  setSessionId: (sessionId: number, deviceId?: string) => void;
@@ -50,4 +65,27 @@ export interface AmplitudeSessionReplay {
50
65
  flush: (useRetry: boolean) => Promise<void>;
51
66
  shutdown: () => void;
52
67
  }
68
+ export interface SessionReplayTrackDestination {
69
+ sendEventsList: (destinationData: SessionReplayDestination) => void;
70
+ flush: (useRetry: boolean) => Promise<void>;
71
+ }
72
+ export interface SessionReplayEventsManager {
73
+ initialize({ sessionId, shouldSendStoredEvents, deviceId, }: {
74
+ sessionId: number;
75
+ shouldSendStoredEvents: boolean;
76
+ deviceId: string;
77
+ }): Promise<void>;
78
+ addEvent({ sessionId, event, deviceId }: {
79
+ sessionId: number;
80
+ event: string;
81
+ deviceId: string;
82
+ }): void;
83
+ sendEvents({ sessionId, deviceId }: {
84
+ sessionId: number;
85
+ deviceId: string;
86
+ }): void;
87
+ resetSequence(): void;
88
+ flush(useRetry?: boolean): Promise<void>;
89
+ events: Events;
90
+ }
53
91
  //# sourceMappingURL=session-replay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../../src/typings/session-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEvF,MAAM,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAE9B,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oBAAY,eAAe;IACzB,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE;QAChB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAAC;KACxC,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,mBAAoB,SAAQ,MAAM;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,0BAA0B,CAAC;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEhF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/E,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACvC,0BAA0B,EAAE,MAAM;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC7E,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB"}
1
+ {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../../src/typings/session-replay.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amplitude/session-replay-browser",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "description": "",
5
5
  "author": "Amplitude Inc",
6
6
  "homepage": "https://github.com/amplitude/Amplitude-TypeScript",
@@ -57,5 +57,5 @@
57
57
  "files": [
58
58
  "lib"
59
59
  ],
60
- "gitHead": "cd4621d67953c0efd0f9f51ebae922bfc00bf1cc"
60
+ "gitHead": "223e05b7591afe6ae2876f4b0b6dbcb1147d231d"
61
61
  }