@amplitude/session-replay-browser 1.14.3 → 1.15.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/config/local-config.d.ts +2 -1
- package/lib/cjs/config/local-config.d.ts.map +1 -1
- package/lib/cjs/config/local-config.js +2 -0
- package/lib/cjs/config/local-config.js.map +1 -1
- package/lib/cjs/config/types.d.ts +2 -0
- package/lib/cjs/config/types.d.ts.map +1 -1
- package/lib/cjs/config/types.js.map +1 -1
- package/lib/cjs/events/base-events-store.d.ts +31 -0
- package/lib/cjs/events/base-events-store.d.ts.map +1 -0
- package/lib/cjs/events/base-events-store.js +47 -0
- package/lib/cjs/events/base-events-store.js.map +1 -0
- package/lib/cjs/events/event-compressor.js +2 -2
- package/lib/cjs/events/event-compressor.js.map +1 -1
- package/lib/cjs/events/events-idb-store.d.ts +16 -40
- package/lib/cjs/events/events-idb-store.d.ts.map +1 -1
- package/lib/cjs/events/events-idb-store.js +146 -139
- package/lib/cjs/events/events-idb-store.js.map +1 -1
- package/lib/cjs/events/events-manager.d.ts +3 -2
- package/lib/cjs/events/events-manager.d.ts.map +1 -1
- package/lib/cjs/events/events-manager.js +51 -18
- package/lib/cjs/events/events-manager.js.map +1 -1
- package/lib/cjs/events/events-memory-store.d.ts +15 -0
- package/lib/cjs/events/events-memory-store.d.ts.map +1 -0
- package/lib/cjs/events/events-memory-store.js +84 -0
- package/lib/cjs/events/events-memory-store.js.map +1 -0
- package/lib/cjs/helpers.d.ts +1 -0
- package/lib/cjs/helpers.d.ts.map +1 -1
- package/lib/cjs/hooks/click.d.ts.map +1 -1
- package/lib/cjs/hooks/click.js +3 -0
- package/lib/cjs/hooks/click.js.map +1 -1
- package/lib/cjs/index.d.ts +1 -1
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/session-replay.d.ts.map +1 -1
- package/lib/cjs/session-replay.js +26 -18
- package/lib/cjs/session-replay.js.map +1 -1
- package/lib/cjs/track-destination.d.ts.map +1 -1
- package/lib/cjs/track-destination.js +3 -4
- package/lib/cjs/track-destination.js.map +1 -1
- package/lib/cjs/typings/session-replay.d.ts +20 -12
- package/lib/cjs/typings/session-replay.d.ts.map +1 -1
- package/lib/cjs/typings/session-replay.js.map +1 -1
- package/lib/cjs/version.d.ts +1 -1
- package/lib/cjs/version.d.ts.map +1 -1
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/version.js.map +1 -1
- package/lib/esm/config/local-config.d.ts +2 -1
- package/lib/esm/config/local-config.d.ts.map +1 -1
- package/lib/esm/config/local-config.js +2 -0
- package/lib/esm/config/local-config.js.map +1 -1
- package/lib/esm/config/types.d.ts +2 -0
- package/lib/esm/config/types.d.ts.map +1 -1
- package/lib/esm/config/types.js.map +1 -1
- package/lib/esm/events/base-events-store.d.ts +31 -0
- package/lib/esm/events/base-events-store.d.ts.map +1 -0
- package/lib/esm/events/base-events-store.js +45 -0
- package/lib/esm/events/base-events-store.js.map +1 -0
- package/lib/esm/events/event-compressor.js +1 -1
- package/lib/esm/events/event-compressor.js.map +1 -1
- package/lib/esm/events/events-idb-store.d.ts +16 -40
- package/lib/esm/events/events-idb-store.d.ts.map +1 -1
- package/lib/esm/events/events-idb-store.js +146 -138
- package/lib/esm/events/events-idb-store.js.map +1 -1
- package/lib/esm/events/events-manager.d.ts +3 -2
- package/lib/esm/events/events-manager.d.ts.map +1 -1
- package/lib/esm/events/events-manager.js +51 -18
- package/lib/esm/events/events-manager.js.map +1 -1
- package/lib/esm/events/events-memory-store.d.ts +15 -0
- package/lib/esm/events/events-memory-store.d.ts.map +1 -0
- package/lib/esm/events/events-memory-store.js +82 -0
- package/lib/esm/events/events-memory-store.js.map +1 -0
- package/lib/esm/helpers.d.ts +1 -0
- package/lib/esm/helpers.d.ts.map +1 -1
- package/lib/esm/hooks/click.d.ts.map +1 -1
- package/lib/esm/hooks/click.js +3 -0
- package/lib/esm/hooks/click.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/session-replay.d.ts.map +1 -1
- package/lib/esm/session-replay.js +26 -18
- package/lib/esm/session-replay.js.map +1 -1
- package/lib/esm/track-destination.d.ts.map +1 -1
- package/lib/esm/track-destination.js +3 -4
- package/lib/esm/track-destination.js.map +1 -1
- package/lib/esm/typings/session-replay.d.ts +20 -12
- package/lib/esm/typings/session-replay.d.ts.map +1 -1
- package/lib/esm/typings/session-replay.js.map +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.d.ts.map +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/esm/version.js.map +1 -1
- package/lib/scripts/amplitude-min.js +1 -1
- package/lib/scripts/amplitude-min.js.gz +0 -0
- package/lib/scripts/amplitude-min.umd.js +1 -1
- package/lib/scripts/amplitude-min.umd.js.gz +0 -0
- package/lib/scripts/config/local-config.d.ts +2 -1
- package/lib/scripts/config/local-config.d.ts.map +1 -1
- package/lib/scripts/config/types.d.ts +2 -0
- package/lib/scripts/config/types.d.ts.map +1 -1
- package/lib/scripts/events/base-events-store.d.ts +31 -0
- package/lib/scripts/events/base-events-store.d.ts.map +1 -0
- package/lib/scripts/events/events-idb-store.d.ts +16 -40
- package/lib/scripts/events/events-idb-store.d.ts.map +1 -1
- package/lib/scripts/events/events-manager.d.ts +3 -2
- package/lib/scripts/events/events-manager.d.ts.map +1 -1
- package/lib/scripts/events/events-memory-store.d.ts +15 -0
- package/lib/scripts/events/events-memory-store.d.ts.map +1 -0
- package/lib/scripts/helpers.d.ts +1 -0
- package/lib/scripts/helpers.d.ts.map +1 -1
- package/lib/scripts/hooks/click.d.ts.map +1 -1
- package/lib/scripts/index.d.ts +1 -1
- package/lib/scripts/index.d.ts.map +1 -1
- package/lib/scripts/session-replay.d.ts.map +1 -1
- package/lib/scripts/track-destination.d.ts.map +1 -1
- package/lib/scripts/typings/session-replay.d.ts +20 -12
- package/lib/scripts/typings/session-replay.d.ts.map +1 -1
- package/lib/scripts/version.d.ts +1 -1
- package/lib/scripts/version.d.ts.map +1 -1
- package/package.json +5 -3
|
@@ -2,11 +2,12 @@ var _this = this;
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createEventsManager = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
-
var events_idb_store_1 = require("./events-idb-store");
|
|
6
|
-
var track_destination_1 = require("../track-destination");
|
|
7
5
|
var helpers_1 = require("../helpers");
|
|
6
|
+
var track_destination_1 = require("../track-destination");
|
|
7
|
+
var events_idb_store_1 = require("./events-idb-store");
|
|
8
|
+
var events_memory_store_1 = require("./events-memory-store");
|
|
8
9
|
var createEventsManager = function (_a) {
|
|
9
|
-
var config = _a.config, sessionId = _a.sessionId, minInterval = _a.minInterval, maxInterval = _a.maxInterval, type = _a.type, payloadBatcher = _a.payloadBatcher;
|
|
10
|
+
var config = _a.config, sessionId = _a.sessionId, minInterval = _a.minInterval, maxInterval = _a.maxInterval, type = _a.type, payloadBatcher = _a.payloadBatcher, storeType = _a.storeType;
|
|
10
11
|
return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
11
12
|
function flush(useRetry) {
|
|
12
13
|
if (useRetry === void 0) { useRetry = false; }
|
|
@@ -16,22 +17,46 @@ var createEventsManager = function (_a) {
|
|
|
16
17
|
});
|
|
17
18
|
});
|
|
18
19
|
}
|
|
19
|
-
var trackDestination,
|
|
20
|
+
var trackDestination, getMemoryStore, getIdbStoreOrFallback, store, _b, sendEventsList, sendCurrentSequenceEvents, sendStoredEvents, addEvent;
|
|
20
21
|
var _this = this;
|
|
21
|
-
return tslib_1.__generator(this, function (
|
|
22
|
-
switch (
|
|
22
|
+
return tslib_1.__generator(this, function (_c) {
|
|
23
|
+
switch (_c.label) {
|
|
23
24
|
case 0:
|
|
24
25
|
trackDestination = new track_destination_1.SessionReplayTrackDestination({ loggerProvider: config.loggerProvider, payloadBatcher: payloadBatcher });
|
|
25
|
-
|
|
26
|
+
getMemoryStore = function () {
|
|
27
|
+
return new events_memory_store_1.InMemoryEventsStore({
|
|
26
28
|
loggerProvider: config.loggerProvider,
|
|
27
|
-
apiKey: config.apiKey,
|
|
28
|
-
sessionId: sessionId,
|
|
29
|
-
minInterval: minInterval,
|
|
30
29
|
maxInterval: maxInterval,
|
|
31
|
-
|
|
32
|
-
})
|
|
30
|
+
minInterval: minInterval,
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
getIdbStoreOrFallback = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
34
|
+
var store;
|
|
35
|
+
return tslib_1.__generator(this, function (_a) {
|
|
36
|
+
switch (_a.label) {
|
|
37
|
+
case 0: return [4 /*yield*/, events_idb_store_1.SessionReplayEventsIDBStore.new(type, {
|
|
38
|
+
loggerProvider: config.loggerProvider,
|
|
39
|
+
minInterval: minInterval,
|
|
40
|
+
maxInterval: maxInterval,
|
|
41
|
+
apiKey: config.apiKey,
|
|
42
|
+
}, sessionId)];
|
|
43
|
+
case 1:
|
|
44
|
+
store = _a.sent();
|
|
45
|
+
config.loggerProvider.log('Failed to initialize idb store, falling back to memory store.');
|
|
46
|
+
return [2 /*return*/, store !== null && store !== void 0 ? store : getMemoryStore()];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}); };
|
|
50
|
+
if (!(storeType === 'idb')) return [3 /*break*/, 2];
|
|
51
|
+
return [4 /*yield*/, getIdbStoreOrFallback()];
|
|
33
52
|
case 1:
|
|
34
|
-
|
|
53
|
+
_b = _c.sent();
|
|
54
|
+
return [3 /*break*/, 3];
|
|
55
|
+
case 2:
|
|
56
|
+
_b = getMemoryStore();
|
|
57
|
+
_c.label = 3;
|
|
58
|
+
case 3:
|
|
59
|
+
store = _b;
|
|
35
60
|
sendEventsList = function (_a) {
|
|
36
61
|
var events = _a.events, sessionId = _a.sessionId, deviceId = _a.deviceId, sequenceId = _a.sequenceId;
|
|
37
62
|
if (config.debugMode) {
|
|
@@ -46,7 +71,6 @@ var createEventsManager = function (_a) {
|
|
|
46
71
|
}
|
|
47
72
|
trackDestination.sendEventsList({
|
|
48
73
|
events: events,
|
|
49
|
-
sequenceId: sequenceId,
|
|
50
74
|
sessionId: sessionId,
|
|
51
75
|
flushMaxRetries: config.flushMaxRetries,
|
|
52
76
|
apiKey: config.apiKey,
|
|
@@ -55,12 +79,21 @@ var createEventsManager = function (_a) {
|
|
|
55
79
|
serverZone: config.serverZone,
|
|
56
80
|
version: config.version,
|
|
57
81
|
type: type,
|
|
58
|
-
onComplete:
|
|
82
|
+
onComplete: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
83
|
+
return tslib_1.__generator(this, function (_a) {
|
|
84
|
+
switch (_a.label) {
|
|
85
|
+
case 0: return [4 /*yield*/, store.cleanUpSessionEventsStore(sessionId, sequenceId)];
|
|
86
|
+
case 1:
|
|
87
|
+
_a.sent();
|
|
88
|
+
return [2 /*return*/];
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}); },
|
|
59
92
|
});
|
|
60
93
|
};
|
|
61
94
|
sendCurrentSequenceEvents = function (_a) {
|
|
62
95
|
var sessionId = _a.sessionId, deviceId = _a.deviceId;
|
|
63
|
-
|
|
96
|
+
store
|
|
64
97
|
.storeCurrentSequence(sessionId)
|
|
65
98
|
.then(function (currentSequence) {
|
|
66
99
|
if (currentSequence) {
|
|
@@ -82,7 +115,7 @@ var createEventsManager = function (_a) {
|
|
|
82
115
|
var sequencesToSend;
|
|
83
116
|
return tslib_1.__generator(this, function (_b) {
|
|
84
117
|
switch (_b.label) {
|
|
85
|
-
case 0: return [4 /*yield*/,
|
|
118
|
+
case 0: return [4 /*yield*/, store.getSequencesToSend()];
|
|
86
119
|
case 1:
|
|
87
120
|
sequencesToSend = _b.sent();
|
|
88
121
|
sequencesToSend &&
|
|
@@ -101,7 +134,7 @@ var createEventsManager = function (_a) {
|
|
|
101
134
|
};
|
|
102
135
|
addEvent = function (_a) {
|
|
103
136
|
var event = _a.event, sessionId = _a.sessionId, deviceId = _a.deviceId;
|
|
104
|
-
|
|
137
|
+
store
|
|
105
138
|
.addEventToCurrentSequence(sessionId, event.data)
|
|
106
139
|
.then(function (sequenceToSend) {
|
|
107
140
|
return (sequenceToSend &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-manager.js","sourceRoot":"","sources":["../../../src/events/events-manager.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"events-manager.js","sourceRoot":"","sources":["../../../src/events/events-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n SessionReplayEventsManager as AmplitudeSessionReplayEventsManager,\n EventsStore,\n EventType,\n StoreType,\n} from '../typings/session-replay';\n\nimport { SessionReplayJoinedConfig } from '../config/types';\nimport { getStorageSize } from '../helpers';\nimport { PayloadBatcher, SessionReplayTrackDestination } from '../track-destination';\nimport { SessionReplayEventsIDBStore } from './events-idb-store';\nimport { InMemoryEventsStore } from './events-memory-store';\n\nexport const createEventsManager = async <Type extends EventType>({\n config,\n sessionId,\n minInterval,\n maxInterval,\n type,\n payloadBatcher,\n storeType,\n}: {\n config: SessionReplayJoinedConfig;\n type: Type;\n minInterval?: number;\n maxInterval?: number;\n sessionId?: number;\n payloadBatcher?: PayloadBatcher;\n storeType: StoreType;\n}): Promise<AmplitudeSessionReplayEventsManager<Type, string>> => {\n const trackDestination = new SessionReplayTrackDestination({ loggerProvider: config.loggerProvider, payloadBatcher });\n\n const getMemoryStore = (): EventsStore<number> => {\n return new InMemoryEventsStore({\n loggerProvider: config.loggerProvider,\n maxInterval,\n minInterval,\n });\n };\n\n const getIdbStoreOrFallback = async (): Promise<EventsStore<number>> => {\n const store = await SessionReplayEventsIDBStore.new(\n type,\n {\n loggerProvider: config.loggerProvider,\n minInterval,\n maxInterval,\n apiKey: config.apiKey,\n },\n sessionId,\n );\n config.loggerProvider.log('Failed to initialize idb store, falling back to memory store.');\n return store ?? getMemoryStore();\n };\n\n const store: EventsStore<number> = storeType === 'idb' ? await getIdbStoreOrFallback() : getMemoryStore();\n\n /**\n * Immediately sends events to the track destination.\n */\n const sendEventsList = ({\n events,\n sessionId,\n deviceId,\n sequenceId,\n }: {\n events: string[];\n sessionId: number;\n deviceId: string;\n sequenceId?: number;\n }) => {\n if (config.debugMode) {\n getStorageSize()\n .then(({ totalStorageSize, percentOfQuota, usageDetails }) => {\n config.loggerProvider.debug(\n `Total storage size: ${totalStorageSize} KB, percentage of quota: ${percentOfQuota}%, usage details: ${usageDetails}`,\n );\n })\n .catch(() => {\n // swallow error\n });\n }\n\n trackDestination.sendEventsList({\n events: events,\n sessionId: sessionId,\n flushMaxRetries: config.flushMaxRetries,\n apiKey: config.apiKey,\n deviceId: deviceId,\n sampleRate: config.sampleRate,\n serverZone: config.serverZone,\n version: config.version,\n type,\n onComplete: async () => {\n await store.cleanUpSessionEventsStore(sessionId, sequenceId);\n return;\n },\n });\n };\n\n const sendCurrentSequenceEvents = ({ sessionId, deviceId }: { sessionId: number; deviceId: string }) => {\n store\n .storeCurrentSequence(sessionId)\n .then((currentSequence) => {\n if (currentSequence) {\n sendEventsList({\n sequenceId: currentSequence.sequenceId,\n events: currentSequence.events,\n sessionId: currentSequence.sessionId,\n deviceId,\n });\n }\n })\n .catch((e) => {\n config.loggerProvider.warn('Failed to get current sequence of session replay events for session:', e);\n });\n };\n\n const sendStoredEvents = async ({ deviceId }: { deviceId: string }) => {\n const sequencesToSend = await store.getSequencesToSend();\n sequencesToSend &&\n sequencesToSend.forEach((sequence) => {\n sendEventsList({\n sequenceId: sequence.sequenceId,\n events: sequence.events,\n sessionId: sequence.sessionId,\n deviceId,\n });\n });\n };\n\n const addEvent = ({\n event,\n sessionId,\n deviceId,\n }: {\n event: { type: Type; data: string };\n sessionId: number;\n deviceId: string;\n }) => {\n store\n .addEventToCurrentSequence(sessionId, event.data)\n .then((sequenceToSend) => {\n return (\n sequenceToSend &&\n sendEventsList({\n sequenceId: sequenceToSend.sequenceId,\n events: sequenceToSend.events,\n sessionId: sequenceToSend.sessionId,\n deviceId,\n })\n );\n })\n .catch((e) => {\n config.loggerProvider.warn('Failed to add event to session replay capture:', e);\n });\n };\n\n async function flush(useRetry = false) {\n return trackDestination.flush(useRetry);\n }\n\n return {\n sendCurrentSequenceEvents,\n addEvent,\n sendStoredEvents,\n flush,\n };\n};\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Events, SendingSequencesReturn } from '../typings/session-replay';
|
|
2
|
+
import { BaseEventsStore } from './base-events-store';
|
|
3
|
+
export declare class InMemoryEventsStore extends BaseEventsStore<number> {
|
|
4
|
+
private finalizedSequences;
|
|
5
|
+
private sequences;
|
|
6
|
+
private sequenceId;
|
|
7
|
+
private resetCurrentSequence;
|
|
8
|
+
private addSequence;
|
|
9
|
+
getSequencesToSend(): Promise<SendingSequencesReturn<number>[] | undefined>;
|
|
10
|
+
storeCurrentSequence(sessionId: number): Promise<SendingSequencesReturn<number> | undefined>;
|
|
11
|
+
addEventToCurrentSequence(sessionId: number, event: string): Promise<SendingSequencesReturn<number> | undefined>;
|
|
12
|
+
storeSendingEvents(sessionId: number, events: Events): Promise<number | undefined>;
|
|
13
|
+
cleanUpSessionEventsStore(_sessionId: number, sequenceId?: number): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=events-memory-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-memory-store.d.ts","sourceRoot":"","sources":["../../../src/events/events-memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,mBAAoB,SAAQ,eAAe,CAAC,MAAM,CAAC;IAC9D,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,UAAU,CAAK;IAEvB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,WAAW;IAQb,kBAAkB,IAAI,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;IAQ3E,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAO5F,yBAAyB,CAC7B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAehD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAMlF,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKxF"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
exports.InMemoryEventsStore = void 0;
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var base_events_store_1 = require("./base-events-store");
|
|
5
|
+
var InMemoryEventsStore = /** @class */ (function (_super) {
|
|
6
|
+
tslib_1.__extends(InMemoryEventsStore, _super);
|
|
7
|
+
function InMemoryEventsStore() {
|
|
8
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
9
|
+
_this.finalizedSequences = {};
|
|
10
|
+
_this.sequences = {};
|
|
11
|
+
_this.sequenceId = 0;
|
|
12
|
+
return _this;
|
|
13
|
+
}
|
|
14
|
+
InMemoryEventsStore.prototype.resetCurrentSequence = function (sessionId) {
|
|
15
|
+
this.sequences[sessionId] = [];
|
|
16
|
+
};
|
|
17
|
+
InMemoryEventsStore.prototype.addSequence = function (sessionId) {
|
|
18
|
+
var sequenceId = this.sequenceId++;
|
|
19
|
+
var events = tslib_1.__spreadArray([], tslib_1.__read(this.sequences[sessionId]), false);
|
|
20
|
+
this.finalizedSequences[sequenceId] = { sessionId: sessionId, events: events };
|
|
21
|
+
this.resetCurrentSequence(sessionId);
|
|
22
|
+
return { sequenceId: sequenceId, events: events, sessionId: sessionId };
|
|
23
|
+
};
|
|
24
|
+
InMemoryEventsStore.prototype.getSequencesToSend = function () {
|
|
25
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
26
|
+
return tslib_1.__generator(this, function (_a) {
|
|
27
|
+
return [2 /*return*/, Object.entries(this.finalizedSequences).map(function (_a) {
|
|
28
|
+
var _b = tslib_1.__read(_a, 2), sequenceId = _b[0], _c = _b[1], sessionId = _c.sessionId, events = _c.events;
|
|
29
|
+
return ({
|
|
30
|
+
sequenceId: Number(sequenceId),
|
|
31
|
+
sessionId: sessionId,
|
|
32
|
+
events: events,
|
|
33
|
+
});
|
|
34
|
+
})];
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
InMemoryEventsStore.prototype.storeCurrentSequence = function (sessionId) {
|
|
39
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
40
|
+
return tslib_1.__generator(this, function (_a) {
|
|
41
|
+
if (!this.sequences[sessionId]) {
|
|
42
|
+
return [2 /*return*/, undefined];
|
|
43
|
+
}
|
|
44
|
+
return [2 /*return*/, this.addSequence(sessionId)];
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
InMemoryEventsStore.prototype.addEventToCurrentSequence = function (sessionId, event) {
|
|
49
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
50
|
+
var sequenceReturn;
|
|
51
|
+
return tslib_1.__generator(this, function (_a) {
|
|
52
|
+
if (!this.sequences[sessionId]) {
|
|
53
|
+
this.resetCurrentSequence(sessionId);
|
|
54
|
+
}
|
|
55
|
+
if (this.shouldSplitEventsList(this.sequences[sessionId], event)) {
|
|
56
|
+
sequenceReturn = this.addSequence(sessionId);
|
|
57
|
+
}
|
|
58
|
+
this.sequences[sessionId].push(event);
|
|
59
|
+
return [2 /*return*/, sequenceReturn];
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
InMemoryEventsStore.prototype.storeSendingEvents = function (sessionId, events) {
|
|
64
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
65
|
+
return tslib_1.__generator(this, function (_a) {
|
|
66
|
+
this.finalizedSequences[this.sequenceId] = { sessionId: sessionId, events: events };
|
|
67
|
+
return [2 /*return*/, this.sequenceId++];
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
InMemoryEventsStore.prototype.cleanUpSessionEventsStore = function (_sessionId, sequenceId) {
|
|
72
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
73
|
+
return tslib_1.__generator(this, function (_a) {
|
|
74
|
+
if (sequenceId !== undefined) {
|
|
75
|
+
delete this.finalizedSequences[sequenceId];
|
|
76
|
+
}
|
|
77
|
+
return [2 /*return*/];
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
return InMemoryEventsStore;
|
|
82
|
+
}(base_events_store_1.BaseEventsStore));
|
|
83
|
+
exports.InMemoryEventsStore = InMemoryEventsStore;
|
|
84
|
+
//# sourceMappingURL=events-memory-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-memory-store.js","sourceRoot":"","sources":["../../../src/events/events-memory-store.ts"],"names":[],"mappings":";;;AACA,yDAAsD;AAEtD;IAAyC,+CAAuB;IAAhE;QAAA,qEA6DC;QA5DS,wBAAkB,GAA4D,EAAE,CAAC;QACjF,eAAS,GAA6B,EAAE,CAAC;QACzC,gBAAU,GAAG,CAAC,CAAC;;IA0DzB,CAAC;IAxDS,kDAAoB,GAA5B,UAA6B,SAAiB;QAC5C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IAEO,yCAAW,GAAnB,UAAoB,SAAiB;QACnC,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAM,MAAM,4CAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAC,CAAC;QAC9C,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,WAAA,EAAE,MAAM,QAAA,EAAE,CAAC;QAC5D,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,EAAE,UAAU,YAAA,EAAE,MAAM,QAAA,EAAE,SAAS,WAAA,EAAE,CAAC;IAC3C,CAAC;IAEK,gDAAkB,GAAxB;;;gBACE,sBAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,UAAC,EAAmC;4BAAnC,KAAA,qBAAmC,EAAlC,UAAU,QAAA,EAAE,UAAqB,EAAnB,SAAS,eAAA,EAAE,MAAM,YAAA;wBAAQ,OAAA,CAAC;4BAC3F,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;4BAC9B,SAAS,WAAA;4BACT,MAAM,QAAA;yBACP,CAAC;oBAJ0F,CAI1F,CAAC,EAAC;;;KACL;IAEK,kDAAoB,GAA1B,UAA2B,SAAiB;;;gBAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;oBAC9B,sBAAO,SAAS,EAAC;iBAClB;gBACD,sBAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC;;;KACpC;IAEK,uDAAyB,GAA/B,UACE,SAAiB,EACjB,KAAa;;;;gBAEb,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;oBAC9B,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;iBACtC;gBAGD,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE;oBAChE,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;iBAC9C;gBAED,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEtC,sBAAO,cAAc,EAAC;;;KACvB;IAEK,gDAAkB,GAAxB,UAAyB,SAAiB,EAAE,MAAc;;;gBACxD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,WAAA,EAAE,MAAM,QAAA,EAAE,CAAC;gBAEjE,sBAAO,IAAI,CAAC,UAAU,EAAE,EAAC;;;KAC1B;IAEK,uDAAyB,GAA/B,UAAgC,UAAkB,EAAE,UAAmB;;;gBACrE,IAAI,UAAU,KAAK,SAAS,EAAE;oBAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;iBAC5C;;;;KACF;IACH,0BAAC;AAAD,CAAC,AA7DD,CAAyC,mCAAe,GA6DvD;AA7DY,kDAAmB","sourcesContent":["import { Events, SendingSequencesReturn } from '../typings/session-replay';\nimport { BaseEventsStore } from './base-events-store';\n\nexport class InMemoryEventsStore extends BaseEventsStore<number> {\n private finalizedSequences: Record<number, { sessionId: number; events: string[] }> = {};\n private sequences: Record<number, string[]> = {};\n private sequenceId = 0;\n\n private resetCurrentSequence(sessionId: number) {\n this.sequences[sessionId] = [];\n }\n\n private addSequence(sessionId: number): SendingSequencesReturn<number> {\n const sequenceId = this.sequenceId++;\n const events = [...this.sequences[sessionId]];\n this.finalizedSequences[sequenceId] = { sessionId, events };\n this.resetCurrentSequence(sessionId);\n return { sequenceId, events, sessionId };\n }\n\n async getSequencesToSend(): Promise<SendingSequencesReturn<number>[] | undefined> {\n return Object.entries(this.finalizedSequences).map(([sequenceId, { sessionId, events }]) => ({\n sequenceId: Number(sequenceId),\n sessionId,\n events,\n }));\n }\n\n async storeCurrentSequence(sessionId: number): Promise<SendingSequencesReturn<number> | undefined> {\n if (!this.sequences[sessionId]) {\n return undefined;\n }\n return this.addSequence(sessionId);\n }\n\n async addEventToCurrentSequence(\n sessionId: number,\n event: string,\n ): Promise<SendingSequencesReturn<number> | undefined> {\n if (!this.sequences[sessionId]) {\n this.resetCurrentSequence(sessionId);\n }\n\n let sequenceReturn: SendingSequencesReturn<number> | undefined;\n if (this.shouldSplitEventsList(this.sequences[sessionId], event)) {\n sequenceReturn = this.addSequence(sessionId);\n }\n\n this.sequences[sessionId].push(event);\n\n return sequenceReturn;\n }\n\n async storeSendingEvents(sessionId: number, events: Events): Promise<number | undefined> {\n this.finalizedSequences[this.sequenceId] = { sessionId, events };\n\n return this.sequenceId++;\n }\n\n async cleanUpSessionEventsStore(_sessionId: number, sequenceId?: number): Promise<void> {\n if (sequenceId !== undefined) {\n delete this.finalizedSequences[sequenceId];\n }\n }\n}\n"]}
|
package/lib/cjs/helpers.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export declare const getDebugConfig: (config: SessionReplayJoinedConfig) => {
|
|
|
22
22
|
shouldInlineStylesheet?: boolean | undefined;
|
|
23
23
|
version?: import("./config/types").SessionReplayVersion | undefined;
|
|
24
24
|
performanceConfig?: import("./config/types").SessionReplayPerformanceConfig | undefined;
|
|
25
|
+
storeType: import("./typings/session-replay").StoreType;
|
|
25
26
|
flushIntervalMillis: number;
|
|
26
27
|
flushQueueSize: number;
|
|
27
28
|
instanceName?: string | undefined;
|
package/lib/cjs/helpers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,aAAa,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEzG,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAMxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAoFvD,eAAO,MAAM,MAAM,gBACH,MAAM,GAAG,OAAO,WAAW,aAAa,YAC/C,MAAM,WAAW,WAAW,GAAG,IAAI,KAAG,MAE5C,CAAC;AAEJ,eAAO,MAAM,gBAAgB,QAAkB,MAAM,WASpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,cAAwB,MAAM,cAAc,MAAM,YAM/E,CAAC;AAEF,eAAO,MAAM,aAAa,cAGzB,CAAC;AAEF,eAAO,MAAM,uBAAuB,cAAe,MAAM,YAAY,MAAM,KAAG,MAE7E,CAAC;AAEF,eAAO,MAAM,YAAY,gBAAiB,MAAM,iBAAiB,KAAG,MAUnE,CAAC;AAEF,eAAO,MAAM,cAAc,QAAa,QAAQ,WAAW,CAa1D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,yBAAyB
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,aAAa,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEzG,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAMxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAoFvD,eAAO,MAAM,MAAM,gBACH,MAAM,GAAG,OAAO,WAAW,aAAa,YAC/C,MAAM,WAAW,WAAW,GAAG,IAAI,KAAG,MAE5C,CAAC;AAEJ,eAAO,MAAM,gBAAgB,QAAkB,MAAM,WASpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,cAAwB,MAAM,cAAc,MAAM,YAM/E,CAAC;AAEF,eAAO,MAAM,aAAa,cAGzB,CAAC;AAEF,eAAO,MAAM,uBAAuB,cAAe,MAAM,YAAY,MAAM,KAAG,MAE7E,CAAC;AAEF,eAAO,MAAM,YAAY,gBAAiB,MAAM,iBAAiB,KAAG,MAUnE,CAAC;AAEF,eAAO,MAAM,cAAc,QAAa,QAAQ,WAAW,CAa1D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;CAO/D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"click.d.ts","sourceRoot":"","sources":["../../../src/hooks/click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAqB,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAAE,0BAA0B,IAAI,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAC9G,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAGF,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,KAAK,OAAO,GAAG;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACrC,aAAa,EAAE,mCAAmC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CAC3E,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,cAU7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAyB1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"click.d.ts","sourceRoot":"","sources":["../../../src/hooks/click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAqB,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAAE,0BAA0B,IAAI,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAC9G,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAGF,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,KAAK,OAAO,GAAG;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACrC,aAAa,EAAE,mCAAmC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CAC3E,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,cAU7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAyB1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,wBA8C3C,CAAC"}
|
package/lib/cjs/hooks/click.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"click.js","sourceRoot":"","sources":["../../../src/hooks/click.ts"],"names":[],"mappings":";;;AAAA,sDAAqF;AACrF,0CAAiD;AAGjD,yCAAwC;AACxC,8EAAoE;AAuBpE,IAAM,oBAAoB,GAAG,OAAS,CAAC;AAEhC,IAAM,eAAe,GAAmB,UAAC,EAAmB;QAAjB,OAAO,aAAA,EAAE,MAAM,YAAA;IAC/D,IAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,UAAC,GAAW;QACzB,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QAC1D,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;YAC3B,WAAW,CAAC,IAAI,CAAC,MAAoB,CAAC,CAAC;SACxC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,SAAA,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC,CAAC;AAVW,QAAA,eAAe,mBAU1B;AAEK,IAAM,YAAY,GAAmB,UAAC,EAAmB;QAAjB,OAAO,aAAA,EAAE,MAAM,YAAA;IAC5D,IAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,UAAC,GAAW;QACzB,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QAC1D,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;YAC3B,WAAW,CAAC,IAAI,CAAC,MAAoB,CAAC,CAAC;SACxC;IACH,CAAC,CAAC,CAAC;IAEH,IAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAsC,UAAC,IAAI,EAAE,IAAI;QACzE,IAAA,CAAC,GAA6B,IAAI,EAAjC,EAAE,CAAC,GAA0B,IAAI,EAA9B,EAAE,QAAQ,GAAgB,IAAI,SAApB,EAAE,SAAS,GAAK,IAAI,UAAT,CAAU;QAE3C,8BAA8B;QAC9B,IAAM,IAAI,GAAG,SAAS,GAAG,CAAC,SAAS,GAAG,oBAAoB,CAAC,CAAC;QAE5D,IAAM,CAAC,GAAG,UAAG,CAAC,cAAI,CAAC,cAAI,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,cAAI,IAAI,CAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACZ,IAAI,CAAC,CAAC,CAAC,yCAAQ,IAAI,KAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAE,CAAC;SAClD;aAAM;YACL,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;SACpB;QACD,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,OAAO,SAAA,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AACrD,CAAC,CAAC;AAzBW,QAAA,YAAY,gBAyBvB;AAEK,IAAM,SAAS,GACpB,UAAC,EAAwC;QAAtC,aAAa,mBAAA,EAAE,SAAS,eAAA,EAAE,UAAU,gBAAA;IACvC,OAAA,UAAC,CAAC;QACA,IAAI,CAAC,CAAC,IAAI,KAAK,+BAAiB,CAAC,KAAK,EAAE;YACtC,OAAO;SACR;QAED,IAAM,WAAW,GAAG,IAAA,wCAAc,GAAE,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;SACR;QAEO,IAAA,QAAQ,GAA8B,WAAW,SAAzC,EAAE,WAAW,GAAiB,WAAW,YAA5B,EAAE,UAAU,GAAK,WAAW,WAAhB,CAAiB;QAC1D,yDAAyD;QACzD,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QAEO,IAAA,CAAC,GAAQ,CAAC,EAAT,EAAE,CAAC,GAAK,CAAC,EAAN,CAAO;
|
|
1
|
+
{"version":3,"file":"click.js","sourceRoot":"","sources":["../../../src/hooks/click.ts"],"names":[],"mappings":"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","sourcesContent":["import { mouseInteractionCallBack, MouseInteractions } from '@amplitude/rrweb-types';\nimport { record, utils } from '@amplitude/rrweb';\nimport { SessionReplayEventsManager as AmplitudeSessionReplayEventsManager } from '../typings/session-replay';\nimport { PayloadBatcher } from 'src/track-destination';\nimport { finder } from '../libs/finder';\nimport { getGlobalScope } from '@amplitude/analytics-client-common';\n\n// exported for testing\nexport type ClickEvent = {\n timestamp: number;\n x: number;\n y: number;\n viewportWidth: number;\n viewportHeight: number;\n pageUrl: string;\n selector?: string;\n type: 'click';\n};\n\n// exported for testing\nexport type ClickEventWithCount = ClickEvent & { count: number };\n\ntype Options = {\n sessionId: number;\n deviceIdFn: () => string | undefined;\n eventsManager: AmplitudeSessionReplayEventsManager<'interaction', string>;\n};\n\nconst HOUR_IN_MILLISECONDS = 3_600_000;\n\nexport const clickNonBatcher: PayloadBatcher = ({ version, events }) => {\n const clickEvents: ClickEvent[] = [];\n events.forEach((evt: string) => {\n const record = JSON.parse(evt) as Record<string, unknown>;\n record.count = 1;\n if (record.type === 'click') {\n clickEvents.push(record as ClickEvent);\n }\n });\n return { version, events: clickEvents };\n};\n\nexport const clickBatcher: PayloadBatcher = ({ version, events }) => {\n const clickEvents: ClickEvent[] = [];\n events.forEach((evt: string) => {\n const record = JSON.parse(evt) as Record<string, unknown>;\n if (record.type === 'click') {\n clickEvents.push(record as ClickEvent);\n }\n });\n\n const reduced = clickEvents.reduce<Record<string, ClickEventWithCount>>((prev, curr) => {\n const { x, y, selector, timestamp } = curr;\n\n // round down to nearest hour.\n const hour = timestamp - (timestamp % HOUR_IN_MILLISECONDS);\n\n const k = `${x}:${y}:${selector ?? ''}:${hour}`;\n if (!prev[k]) {\n prev[k] = { ...curr, timestamp: hour, count: 1 };\n } else {\n prev[k].count += 1;\n }\n return prev;\n }, {});\n\n return { version, events: Object.values(reduced) };\n};\n\nexport const clickHook: (options: Options) => mouseInteractionCallBack =\n ({ eventsManager, sessionId, deviceIdFn }) =>\n (e) => {\n if (e.type !== MouseInteractions.Click) {\n return;\n }\n\n const globalScope = getGlobalScope();\n if (!globalScope) {\n return;\n }\n\n const { location, innerHeight, innerWidth } = globalScope;\n // it only makes sense to send events if a pageUrl exists\n if (!location) {\n return;\n }\n\n const { x, y } = e;\n if (x === undefined || y === undefined) {\n return;\n }\n\n const node = record.mirror.getNode(e.id);\n let selector;\n if (node) {\n selector = finder(node as Element);\n }\n\n const { left: scrollX, top: scrollY } = utils.getWindowScroll(globalScope as unknown as Window);\n\n const event: ClickEvent = {\n x: x + scrollX,\n y: y + scrollY,\n selector,\n\n viewportHeight: innerHeight,\n viewportWidth: innerWidth,\n pageUrl: location.href,\n timestamp: Date.now(),\n type: 'click',\n };\n const deviceId = deviceIdFn();\n if (deviceId) {\n eventsManager.addEvent({ sessionId, event: { type: 'interaction', data: JSON.stringify(event) }, deviceId });\n }\n };\n"]}
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const init: (apiKey: string, options: import("./typings/session-replay").SessionReplayOptions) => import("@amplitude/analytics-types").AmplitudeReturn<void>, setSessionId: (sessionId: number, deviceId?: string | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<void>, getSessionId: () => number | undefined, getSessionReplayProperties: () => {
|
|
2
2
|
[key: string]: string | boolean | null;
|
|
3
3
|
}, flush: (useRetry: boolean) => Promise<void>, shutdown: () => void;
|
|
4
|
-
export { SessionReplayOptions } from './typings/session-replay';
|
|
4
|
+
export { SessionReplayOptions, StoreType } from './typings/session-replay';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,eAAO,MAAQ,IAAI,oJAAE,YAAY,oHAAE,YAAY,4BAAE,0BAA0B;;GAAE,KAAK,wCAAE,QAAQ,YAAkB,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,eAAO,MAAQ,IAAI,oJAAE,YAAY,oHAAE,YAAY,4BAAE,0BAA0B;;GAAE,KAAK,wCAAE,QAAQ,YAAkB,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC"}
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,4FAAqD;AACtC,QAAA,IAAI,GAA8E,gCAAa,OAAzF,QAAA,YAAY,GAAgE,gCAAa,eAA3E,QAAA,YAAY,GAAkD,gCAAa,eAA7D,QAAA,0BAA0B,GAAsB,gCAAa,6BAAjC,QAAA,KAAK,GAAe,gCAAa,QAA1B,QAAA,QAAQ,GAAK,gCAAa,UAAC","sourcesContent":["import sessionReplay from './session-replay-factory';\nexport const { init, setSessionId, getSessionId, getSessionReplayProperties, flush, shutdown } = sessionReplay;\nexport { SessionReplayOptions } from './typings/session-replay';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,4FAAqD;AACtC,QAAA,IAAI,GAA8E,gCAAa,OAAzF,QAAA,YAAY,GAAgE,gCAAa,eAA3E,QAAA,YAAY,GAAkD,gCAAa,eAA7D,QAAA,0BAA0B,GAAsB,gCAAa,6BAAjC,QAAA,KAAK,GAAe,gCAAa,QAA1B,QAAA,QAAQ,GAAK,gCAAa,UAAC","sourcesContent":["import sessionReplay from './session-replay-factory';\nexport const { init, setSessionId, getSessionId, getSessionReplayProperties, flush, shutdown } = sessionReplay;\nexport { SessionReplayOptions, StoreType } from './typings/session-replay';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAY,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,OAAO,EAAE,yBAAyB,EAAE,kCAAkC,EAAE,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAEL,gBAAgB,EAMjB,MAAM,aAAa,CAAC;AAOrB,OAAO,EACL,sBAAsB,EACtB,0BAA0B,IAAI,mCAAmC,EAIjE,kBAAkB,IAAI,mBAAmB,EACzC,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,KAAK,WAAW,GAAG,CAAC,CAAC,EAAE,mBAAmB,GAAG,KAAK,KAAK,IAAI,CAAC;AAE5D,qBAAa,aAAc,YAAW,sBAAsB;IAC1D,IAAI,SAAuC;IAC3C,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC;IAC9C,qBAAqB,EAAE,kCAAkC,GAAG,SAAS,CAAC;IACtE,WAAW,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC7C,aAAa,CAAC,EAAE,mCAAmC,CAAC,QAAQ,GAAG,aAAa,EAAE,MAAM,CAAC,CAAC;IACtF,cAAc,EAAE,OAAO,CAAC;IACxB,oBAAoB,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,GAAG,IAAI,CAAQ;IAC9D,UAAU,SAAK;IACf,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;IAG7C,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC,OAAO,CAAC,UAAU,CAAC,CAAiB;;IAMpC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;IAIlD,OAAO,CAAC,sBAAsB,CAmB5B;cAEc,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAY,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,OAAO,EAAE,yBAAyB,EAAE,kCAAkC,EAAE,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAEL,gBAAgB,EAMjB,MAAM,aAAa,CAAC;AAOrB,OAAO,EACL,sBAAsB,EACtB,0BAA0B,IAAI,mCAAmC,EAIjE,kBAAkB,IAAI,mBAAmB,EACzC,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,KAAK,WAAW,GAAG,CAAC,CAAC,EAAE,mBAAmB,GAAG,KAAK,KAAK,IAAI,CAAC;AAE5D,qBAAa,aAAc,YAAW,sBAAsB;IAC1D,IAAI,SAAuC;IAC3C,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC;IAC9C,qBAAqB,EAAE,kCAAkC,GAAG,SAAS,CAAC;IACtE,WAAW,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC7C,aAAa,CAAC,EAAE,mCAAmC,CAAC,QAAQ,GAAG,aAAa,EAAE,MAAM,CAAC,CAAC;IACtF,cAAc,EAAE,OAAO,CAAC;IACxB,oBAAoB,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,GAAG,IAAI,CAAQ;IAC9D,UAAU,SAAK;IACf,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;IAG7C,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC,OAAO,CAAC,UAAU,CAAC,CAAiB;;IAMpC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;IAIlD,OAAO,CAAC,sBAAsB,CAmB5B;cAEc,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;IAqEnE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAI3C,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAoB5D,0BAA0B;;;IAsC1B,YAAY,aAEV;IAEF,aAAa,aAIX;IAEF;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAIvB;IAEF,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM;IAS7B,UAAU,CAAC,sBAAsB,UAAQ;IAgBzC,YAAY;IAUZ,eAAe;IAwBf,iBAAiB,IAAI,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAWlD,oBAAoB,IAAI,MAAM,GAAG,SAAS;IAa1C,YAAY;IAsEZ,mBAAmB,cACN,gBAAgB;;kDAkC3B;IAEF,mBAAmB,aASjB;IAEF,WAAW;IAIX,YAAY;IAIN,KAAK,CAAC,QAAQ,UAAQ;IAI5B,QAAQ;CAKT"}
|
|
@@ -118,24 +118,24 @@ var SessionReplay = /** @class */ (function () {
|
|
|
118
118
|
return (0, analytics_core_1.returnWrapper)(this._init(apiKey, options));
|
|
119
119
|
};
|
|
120
120
|
SessionReplay.prototype._init = function (apiKey, options) {
|
|
121
|
-
var _a, _b, _c;
|
|
121
|
+
var _a, _b, _c, _d;
|
|
122
122
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
123
|
-
var
|
|
124
|
-
return tslib_1.__generator(this, function (
|
|
125
|
-
switch (
|
|
123
|
+
var _e, _f, scrollWatcher, managers, storeType, rrwebEventManager, error_1, typedError, payloadBatcher, interactionEventManager, error_2, typedError;
|
|
124
|
+
return tslib_1.__generator(this, function (_g) {
|
|
125
|
+
switch (_g.label) {
|
|
126
126
|
case 0:
|
|
127
127
|
this.loggerProvider = options.loggerProvider || new analytics_core_1.Logger();
|
|
128
128
|
Object.prototype.hasOwnProperty.call(options, 'logLevel') &&
|
|
129
129
|
this.loggerProvider.enable(options.logLevel);
|
|
130
130
|
this.identifiers = new identifiers_1.SessionIdentifiers({ sessionId: options.sessionId, deviceId: options.deviceId });
|
|
131
|
-
|
|
131
|
+
_e = this;
|
|
132
132
|
return [4 /*yield*/, (0, joined_config_1.createSessionReplayJoinedConfigGenerator)(apiKey, options)];
|
|
133
133
|
case 1:
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
_e.joinedConfigGenerator = _g.sent();
|
|
135
|
+
_f = this;
|
|
136
136
|
return [4 /*yield*/, this.joinedConfigGenerator.generateJoinedConfig(this.identifiers.sessionId)];
|
|
137
137
|
case 2:
|
|
138
|
-
|
|
138
|
+
_f.config = _g.sent();
|
|
139
139
|
if (options.sessionId && ((_a = this.config.interactionConfig) === null || _a === void 0 ? void 0 : _a.enabled)) {
|
|
140
140
|
scrollWatcher = scroll_1.ScrollWatcher.default({
|
|
141
141
|
sessionId: options.sessionId,
|
|
@@ -145,43 +145,51 @@ var SessionReplay = /** @class */ (function () {
|
|
|
145
145
|
this.scrollHook = scrollWatcher.hook.bind(scrollWatcher);
|
|
146
146
|
}
|
|
147
147
|
managers = [];
|
|
148
|
-
|
|
148
|
+
storeType = this.config.storeType;
|
|
149
|
+
if (storeType === 'idb' && !((_b = (0, analytics_client_common_1.getGlobalScope)()) === null || _b === void 0 ? void 0 : _b.indexedDB)) {
|
|
150
|
+
storeType = 'memory';
|
|
151
|
+
this.loggerProvider.warn('Could not use preferred indexedDB storage, reverting to in memory option.');
|
|
152
|
+
}
|
|
153
|
+
this.loggerProvider.log("Using ".concat(storeType, " for event storage."));
|
|
154
|
+
_g.label = 3;
|
|
149
155
|
case 3:
|
|
150
|
-
|
|
156
|
+
_g.trys.push([3, 5, , 6]);
|
|
151
157
|
return [4 /*yield*/, (0, events_manager_1.createEventsManager)({
|
|
152
158
|
config: this.config,
|
|
153
159
|
sessionId: this.identifiers.sessionId,
|
|
154
160
|
type: 'replay',
|
|
161
|
+
storeType: storeType,
|
|
155
162
|
})];
|
|
156
163
|
case 4:
|
|
157
|
-
rrwebEventManager =
|
|
164
|
+
rrwebEventManager = _g.sent();
|
|
158
165
|
managers.push({ name: 'replay', manager: rrwebEventManager });
|
|
159
166
|
return [3 /*break*/, 6];
|
|
160
167
|
case 5:
|
|
161
|
-
error_1 =
|
|
168
|
+
error_1 = _g.sent();
|
|
162
169
|
typedError = error_1;
|
|
163
170
|
this.loggerProvider.warn("Error occurred while creating replay events manager: ".concat(typedError.toString()));
|
|
164
171
|
return [3 /*break*/, 6];
|
|
165
172
|
case 6:
|
|
166
|
-
if (!((
|
|
173
|
+
if (!((_c = this.config.interactionConfig) === null || _c === void 0 ? void 0 : _c.enabled)) return [3 /*break*/, 10];
|
|
167
174
|
payloadBatcher = this.config.interactionConfig.batch ? click_1.clickBatcher : click_1.clickNonBatcher;
|
|
168
|
-
|
|
175
|
+
_g.label = 7;
|
|
169
176
|
case 7:
|
|
170
|
-
|
|
177
|
+
_g.trys.push([7, 9, , 10]);
|
|
171
178
|
return [4 /*yield*/, (0, events_manager_1.createEventsManager)({
|
|
172
179
|
config: this.config,
|
|
173
180
|
sessionId: this.identifiers.sessionId,
|
|
174
181
|
type: 'interaction',
|
|
175
|
-
minInterval: (
|
|
182
|
+
minInterval: (_d = this.config.interactionConfig.trackEveryNms) !== null && _d !== void 0 ? _d : constants_1.INTERACTION_MIN_INTERVAL,
|
|
176
183
|
maxInterval: constants_1.INTERACTION_MAX_INTERVAL,
|
|
177
184
|
payloadBatcher: payloadBatcher,
|
|
185
|
+
storeType: storeType,
|
|
178
186
|
})];
|
|
179
187
|
case 8:
|
|
180
|
-
interactionEventManager =
|
|
188
|
+
interactionEventManager = _g.sent();
|
|
181
189
|
managers.push({ name: 'interaction', manager: interactionEventManager });
|
|
182
190
|
return [3 /*break*/, 10];
|
|
183
191
|
case 9:
|
|
184
|
-
error_2 =
|
|
192
|
+
error_2 = _g.sent();
|
|
185
193
|
typedError = error_2;
|
|
186
194
|
this.loggerProvider.warn("Error occurred while creating interaction events manager: ".concat(typedError.toString()));
|
|
187
195
|
return [3 /*break*/, 10];
|