@amplitude/plugin-session-replay-browser 1.25.2 → 1.25.3-AMP-140206-change-encoding-gtm-snippet-to-gz.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/session-replay.d.ts +2 -0
- package/lib/cjs/session-replay.d.ts.map +1 -1
- package/lib/cjs/session-replay.js +8 -2
- package/lib/cjs/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/session-replay.d.ts +2 -0
- package/lib/esm/session-replay.d.ts.map +1 -1
- package/lib/esm/session-replay.js +7 -1
- package/lib/esm/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/index-min.js +1 -1
- package/lib/scripts/index-min.js.gz +0 -0
- package/lib/scripts/index-min.js.map +1 -1
- package/lib/scripts/plugin-session-replay-browser-min.js +1 -1
- package/lib/scripts/plugin-session-replay-browser-min.js.gz +0 -0
- package/lib/scripts/plugin-session-replay-browser-min.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { BrowserClient, BrowserConfig, EnrichmentPlugin, Event } from '@amplitude/analytics-core';
|
|
2
2
|
import { AmplitudeSessionReplay, SessionReplayOptions as SessionReplayBrowserOptions } from '@amplitude/session-replay-browser';
|
|
3
3
|
import { SessionReplayOptions } from './typings/session-replay';
|
|
4
|
+
export declare const DEFAULT_EVENT_PROPERTY_PREFIX = "[Amplitude]";
|
|
5
|
+
export declare const DEFAULT_SESSION_REPLAY_PROPERTY: string;
|
|
4
6
|
export declare class SessionReplayPlugin implements EnrichmentPlugin<BrowserClient, BrowserConfig> {
|
|
5
7
|
static pluginName: string;
|
|
6
8
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,EAAoB,MAAM,2BAA2B,CAAC;AACpH,OAAO,EAQL,sBAAsB,EACtB,oBAAoB,IAAI,2BAA2B,EACpD,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,qBAAa,mBAAoB,YAAW,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC;IACxF,MAAM,CAAC,UAAU,SAA8C;IAC/D,IAAI,SAAkC;IACtC,IAAI,eAAyB;IAI7B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAQ;IACpC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,aAAa,EAAE,2BAA2B,CAAC;IAC3C,aAAa,EAAE,sBAAsB,CAQnC;gBAEU,OAAO,CAAC,EAAE,oBAAoB;IAKpC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa;IAmEnD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/C,OAAO,CAAC,KAAK,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,EAAoB,MAAM,2BAA2B,CAAC;AACpH,OAAO,EAQL,sBAAsB,EACtB,oBAAoB,IAAI,2BAA2B,EACpD,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,eAAO,MAAM,6BAA6B,gBAAgB,CAAC;AAC3D,eAAO,MAAM,+BAA+B,QAAuD,CAAC;AACpG,qBAAa,mBAAoB,YAAW,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC;IACxF,MAAM,CAAC,UAAU,SAA8C;IAC/D,IAAI,SAAkC;IACtC,IAAI,eAAyB;IAI7B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAQ;IACpC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,aAAa,EAAE,2BAA2B,CAAC;IAC3C,aAAa,EAAE,sBAAsB,CAQnC;gBAEU,OAAO,CAAC,EAAE,oBAAoB;IAKpC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa;IAmEnD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/C,OAAO,CAAC,KAAK,EAAE,KAAK;IAsDpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B,0BAA0B;;;CAG3B;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,gBAIrE,CAAC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sessionReplayPlugin = exports.SessionReplayPlugin = void 0;
|
|
3
|
+
exports.sessionReplayPlugin = exports.SessionReplayPlugin = exports.DEFAULT_SESSION_REPLAY_PROPERTY = exports.DEFAULT_EVENT_PROPERTY_PREFIX = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var analytics_core_1 = require("@amplitude/analytics-core");
|
|
6
6
|
var session_replay_browser_1 = require("@amplitude/session-replay-browser");
|
|
7
7
|
var analytics_client_common_1 = require("@amplitude/analytics-client-common");
|
|
8
8
|
var helpers_1 = require("./helpers");
|
|
9
9
|
var version_1 = require("./version");
|
|
10
|
+
exports.DEFAULT_EVENT_PROPERTY_PREFIX = '[Amplitude]';
|
|
11
|
+
exports.DEFAULT_SESSION_REPLAY_PROPERTY = "".concat(exports.DEFAULT_EVENT_PROPERTY_PREFIX, " Session Replay ID");
|
|
10
12
|
var SessionReplayPlugin = /** @class */ (function () {
|
|
11
13
|
function SessionReplayPlugin(options) {
|
|
12
14
|
this.name = SessionReplayPlugin.pluginName;
|
|
@@ -182,7 +184,11 @@ var SessionReplayPlugin = /** @class */ (function () {
|
|
|
182
184
|
sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();
|
|
183
185
|
event.event_properties = tslib_1.__assign(tslib_1.__assign({}, event.event_properties), sessionRecordingProperties);
|
|
184
186
|
_c.label = 8;
|
|
185
|
-
case 8:
|
|
187
|
+
case 8:
|
|
188
|
+
if (event.event_type === analytics_core_1.SpecialEventType.IDENTIFY && event.event_properties) {
|
|
189
|
+
delete event.event_properties[exports.DEFAULT_SESSION_REPLAY_PROPERTY];
|
|
190
|
+
}
|
|
191
|
+
return [2 /*return*/, Promise.resolve(event)];
|
|
186
192
|
case 9:
|
|
187
193
|
error_2 = _c.sent();
|
|
188
194
|
/* istanbul ignore next */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, BrowserConfig, EnrichmentPlugin, Event, SpecialEventType } from '@amplitude/analytics-core';\nimport {\n init,\n setSessionId,\n getSessionId,\n getSessionReplayProperties,\n flush,\n shutdown,\n evaluateTargetingAndCapture,\n AmplitudeSessionReplay,\n SessionReplayOptions as SessionReplayBrowserOptions,\n} from '@amplitude/session-replay-browser';\nimport { getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport { parseUserProperties } from './helpers';\nimport { SessionReplayOptions } from './typings/session-replay';\nimport { VERSION } from './version';\n\nexport class SessionReplayPlugin implements EnrichmentPlugin<BrowserClient, BrowserConfig> {\n static pluginName = '@amplitude/plugin-session-replay-browser';\n name = SessionReplayPlugin.pluginName;\n type = 'enrichment' as const;\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig | null = null;\n options: SessionReplayOptions;\n srInitOptions: SessionReplayBrowserOptions;\n sessionReplay: AmplitudeSessionReplay = {\n flush: flush,\n getSessionId: getSessionId,\n getSessionReplayProperties: getSessionReplayProperties,\n init: init,\n setSessionId: setSessionId,\n shutdown: shutdown,\n evaluateTargetingAndCapture: evaluateTargetingAndCapture,\n };\n\n constructor(options?: SessionReplayOptions) {\n this.options = { forceSessionTracking: false, ...options };\n this.srInitOptions = this.options;\n }\n\n async setup(config: BrowserConfig, _client: BrowserClient) {\n try {\n /* istanbul ignore next */\n config?.loggerProvider.log(`Installing @amplitude/plugin-session-replay, version ${VERSION}.`);\n\n this.config = config;\n\n if (this.options.forceSessionTracking) {\n if (typeof config.defaultTracking === 'boolean') {\n if (config.defaultTracking === false) {\n config.defaultTracking = {\n pageViews: false,\n formInteractions: false,\n fileDownloads: false,\n sessions: true,\n };\n }\n } else {\n config.defaultTracking = {\n ...config.defaultTracking,\n sessions: true,\n };\n }\n }\n const identityStore = getAnalyticsConnector(this.config.instanceName).identityStore;\n const userProperties = identityStore.getIdentity().userProperties;\n\n this.srInitOptions = {\n instanceName: this.config.instanceName,\n deviceId: this.options.deviceId ?? this.config.deviceId,\n optOut: this.config.optOut,\n sessionId: this.options.customSessionId ? undefined : this.config.sessionId,\n loggerProvider: this.config.loggerProvider,\n logLevel: this.config.logLevel,\n flushMaxRetries: this.config.flushMaxRetries,\n serverZone: this.config.serverZone,\n configServerUrl: this.options.configServerUrl || this.config.remoteConfig?.serverUrl,\n trackServerUrl: this.options.trackServerUrl,\n sampleRate: this.options.sampleRate,\n privacyConfig: {\n blockSelector: this.options.privacyConfig?.blockSelector,\n maskSelector: this.options.privacyConfig?.maskSelector,\n unmaskSelector: this.options.privacyConfig?.unmaskSelector,\n defaultMaskLevel: this.options.privacyConfig?.defaultMaskLevel,\n },\n debugMode: this.options.debugMode,\n shouldInlineStylesheet: this.options.shouldInlineStylesheet,\n version: { type: 'plugin', version: VERSION },\n performanceConfig: this.options.performanceConfig,\n storeType: this.options.storeType,\n useWebWorker: this.options.useWebWorker ?? this.options.experimental?.useWebWorker,\n userProperties: userProperties,\n omitElementTags: this.options.omitElementTags,\n applyBackgroundColorToBlockedElements: this.options.applyBackgroundColorToBlockedElements,\n interactionConfig: this.options.interactionConfig,\n captureDocumentTitle: this.options.captureDocumentTitle,\n enableUrlChangePolling: this.options.enableUrlChangePolling,\n urlChangePollingInterval: this.options.urlChangePollingInterval,\n };\n\n await this.sessionReplay.init(config.apiKey, this.srInitOptions).promise;\n } catch (error) {\n /* istanbul ignore next */\n config?.loggerProvider.error(`Session Replay: Failed to initialize due to ${(error as Error).message}`);\n }\n }\n\n async onSessionIdChanged(sessionId: number): Promise<void> {\n this.config?.loggerProvider.debug(\n `Analytics session id is changed to ${sessionId}, SR session id is ${String(this.sessionReplay.getSessionId())}.`,\n );\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n async onOptOutChanged(optOut: boolean): Promise<void> {\n this.config?.loggerProvider.debug(\n `optOut is changed to ${String(optOut)}, calling ${\n optOut ? 'sessionReplay.shutdown()' : 'sessionReplay.init()'\n }.`,\n );\n // TODO: compare optOut with this.sessionReplay.getOptOut().\n // Need to add getOptOut() to the interface AmplitudeSessionReplay first.\n if (optOut) {\n this.sessionReplay.shutdown();\n } else {\n this.config != null && (await this.sessionReplay.init(this.config.apiKey, this.srInitOptions).promise);\n }\n }\n\n async execute(event: Event) {\n try {\n if (this.options.customSessionId) {\n const sessionId = this.options.customSessionId(event);\n if (sessionId) {\n // On event, synchronize the session id to the custom session id from the event. This may\n // suffer from offline/delayed events messing up the state stored\n if (sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n } else {\n // On event, synchronize the session id to the what's on the browserConfig (source of truth)\n // Choosing not to read from event object here, concerned about offline/delayed events messing up the state stored\n // in SR.\n const sessionId: string | number | undefined = this.config?.sessionId;\n if (sessionId && sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n // Treating config.sessionId as source of truth, if the event's session id doesn't match, the\n // event is not of the current session (offline/late events). In that case, don't tag the events\n if (sessionId && sessionId === event.session_id) {\n let userProperties;\n if (event.event_type === SpecialEventType.IDENTIFY) {\n userProperties = parseUserProperties(event);\n }\n await this.sessionReplay.evaluateTargetingAndCapture({ event, userProperties });\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n }\n\n return Promise.resolve(event);\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: Failed to enrich event due to ${(error as Error).message}`);\n return Promise.resolve(event);\n }\n }\n\n async teardown(): Promise<void> {\n try {\n this.sessionReplay.shutdown();\n // the following are initialized in setup() which will always be called first\n // here we reset them to null to prevent memory leaks\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.config = null;\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: teardown failed due to ${(error as Error).message}`);\n }\n }\n\n getSessionReplayProperties() {\n return this.sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => EnrichmentPlugin = (\n options?: SessionReplayOptions,\n) => {\n return new SessionReplayPlugin(options);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, BrowserConfig, EnrichmentPlugin, Event, SpecialEventType } from '@amplitude/analytics-core';\nimport {\n init,\n setSessionId,\n getSessionId,\n getSessionReplayProperties,\n flush,\n shutdown,\n evaluateTargetingAndCapture,\n AmplitudeSessionReplay,\n SessionReplayOptions as SessionReplayBrowserOptions,\n} from '@amplitude/session-replay-browser';\nimport { getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport { parseUserProperties } from './helpers';\nimport { SessionReplayOptions } from './typings/session-replay';\nimport { VERSION } from './version';\n\nexport const DEFAULT_EVENT_PROPERTY_PREFIX = '[Amplitude]';\nexport const DEFAULT_SESSION_REPLAY_PROPERTY = `${DEFAULT_EVENT_PROPERTY_PREFIX} Session Replay ID`;\nexport class SessionReplayPlugin implements EnrichmentPlugin<BrowserClient, BrowserConfig> {\n static pluginName = '@amplitude/plugin-session-replay-browser';\n name = SessionReplayPlugin.pluginName;\n type = 'enrichment' as const;\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig | null = null;\n options: SessionReplayOptions;\n srInitOptions: SessionReplayBrowserOptions;\n sessionReplay: AmplitudeSessionReplay = {\n flush: flush,\n getSessionId: getSessionId,\n getSessionReplayProperties: getSessionReplayProperties,\n init: init,\n setSessionId: setSessionId,\n shutdown: shutdown,\n evaluateTargetingAndCapture: evaluateTargetingAndCapture,\n };\n\n constructor(options?: SessionReplayOptions) {\n this.options = { forceSessionTracking: false, ...options };\n this.srInitOptions = this.options;\n }\n\n async setup(config: BrowserConfig, _client: BrowserClient) {\n try {\n /* istanbul ignore next */\n config?.loggerProvider.log(`Installing @amplitude/plugin-session-replay, version ${VERSION}.`);\n\n this.config = config;\n\n if (this.options.forceSessionTracking) {\n if (typeof config.defaultTracking === 'boolean') {\n if (config.defaultTracking === false) {\n config.defaultTracking = {\n pageViews: false,\n formInteractions: false,\n fileDownloads: false,\n sessions: true,\n };\n }\n } else {\n config.defaultTracking = {\n ...config.defaultTracking,\n sessions: true,\n };\n }\n }\n const identityStore = getAnalyticsConnector(this.config.instanceName).identityStore;\n const userProperties = identityStore.getIdentity().userProperties;\n\n this.srInitOptions = {\n instanceName: this.config.instanceName,\n deviceId: this.options.deviceId ?? this.config.deviceId,\n optOut: this.config.optOut,\n sessionId: this.options.customSessionId ? undefined : this.config.sessionId,\n loggerProvider: this.config.loggerProvider,\n logLevel: this.config.logLevel,\n flushMaxRetries: this.config.flushMaxRetries,\n serverZone: this.config.serverZone,\n configServerUrl: this.options.configServerUrl || this.config.remoteConfig?.serverUrl,\n trackServerUrl: this.options.trackServerUrl,\n sampleRate: this.options.sampleRate,\n privacyConfig: {\n blockSelector: this.options.privacyConfig?.blockSelector,\n maskSelector: this.options.privacyConfig?.maskSelector,\n unmaskSelector: this.options.privacyConfig?.unmaskSelector,\n defaultMaskLevel: this.options.privacyConfig?.defaultMaskLevel,\n },\n debugMode: this.options.debugMode,\n shouldInlineStylesheet: this.options.shouldInlineStylesheet,\n version: { type: 'plugin', version: VERSION },\n performanceConfig: this.options.performanceConfig,\n storeType: this.options.storeType,\n useWebWorker: this.options.useWebWorker ?? this.options.experimental?.useWebWorker,\n userProperties: userProperties,\n omitElementTags: this.options.omitElementTags,\n applyBackgroundColorToBlockedElements: this.options.applyBackgroundColorToBlockedElements,\n interactionConfig: this.options.interactionConfig,\n captureDocumentTitle: this.options.captureDocumentTitle,\n enableUrlChangePolling: this.options.enableUrlChangePolling,\n urlChangePollingInterval: this.options.urlChangePollingInterval,\n };\n\n await this.sessionReplay.init(config.apiKey, this.srInitOptions).promise;\n } catch (error) {\n /* istanbul ignore next */\n config?.loggerProvider.error(`Session Replay: Failed to initialize due to ${(error as Error).message}`);\n }\n }\n\n async onSessionIdChanged(sessionId: number): Promise<void> {\n this.config?.loggerProvider.debug(\n `Analytics session id is changed to ${sessionId}, SR session id is ${String(this.sessionReplay.getSessionId())}.`,\n );\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n async onOptOutChanged(optOut: boolean): Promise<void> {\n this.config?.loggerProvider.debug(\n `optOut is changed to ${String(optOut)}, calling ${\n optOut ? 'sessionReplay.shutdown()' : 'sessionReplay.init()'\n }.`,\n );\n // TODO: compare optOut with this.sessionReplay.getOptOut().\n // Need to add getOptOut() to the interface AmplitudeSessionReplay first.\n if (optOut) {\n this.sessionReplay.shutdown();\n } else {\n this.config != null && (await this.sessionReplay.init(this.config.apiKey, this.srInitOptions).promise);\n }\n }\n\n async execute(event: Event) {\n try {\n if (this.options.customSessionId) {\n const sessionId = this.options.customSessionId(event);\n if (sessionId) {\n // On event, synchronize the session id to the custom session id from the event. This may\n // suffer from offline/delayed events messing up the state stored\n if (sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n } else {\n // On event, synchronize the session id to the what's on the browserConfig (source of truth)\n // Choosing not to read from event object here, concerned about offline/delayed events messing up the state stored\n // in SR.\n const sessionId: string | number | undefined = this.config?.sessionId;\n if (sessionId && sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n // Treating config.sessionId as source of truth, if the event's session id doesn't match, the\n // event is not of the current session (offline/late events). In that case, don't tag the events\n if (sessionId && sessionId === event.session_id) {\n let userProperties;\n if (event.event_type === SpecialEventType.IDENTIFY) {\n userProperties = parseUserProperties(event);\n }\n await this.sessionReplay.evaluateTargetingAndCapture({ event, userProperties });\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n }\n\n if (event.event_type === SpecialEventType.IDENTIFY && event.event_properties) {\n delete event.event_properties[DEFAULT_SESSION_REPLAY_PROPERTY];\n }\n\n return Promise.resolve(event);\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: Failed to enrich event due to ${(error as Error).message}`);\n return Promise.resolve(event);\n }\n }\n\n async teardown(): Promise<void> {\n try {\n this.sessionReplay.shutdown();\n // the following are initialized in setup() which will always be called first\n // here we reset them to null to prevent memory leaks\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.config = null;\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: teardown failed due to ${(error as Error).message}`);\n }\n }\n\n getSessionReplayProperties() {\n return this.sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => EnrichmentPlugin = (\n options?: SessionReplayOptions,\n) => {\n return new SessionReplayPlugin(options);\n};\n"]}
|
package/lib/cjs/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.25.
|
|
1
|
+
export declare const VERSION = "1.25.3-AMP-140206-change-encoding-gtm-snippet-to-gz.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/cjs/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,0DAA0D,CAAC"}
|
package/lib/cjs/version.js
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VERSION = void 0;
|
|
4
4
|
// Autogenerated by `yarn version-file`. DO NOT EDIT
|
|
5
|
-
exports.VERSION = '1.25.
|
|
5
|
+
exports.VERSION = '1.25.3-AMP-140206-change-encoding-gtm-snippet-to-gz.0';
|
|
6
6
|
//# sourceMappingURL=version.js.map
|
package/lib/cjs/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AACvC,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AACvC,QAAA,OAAO,GAAG,uDAAuD,CAAC","sourcesContent":["// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.25.3-AMP-140206-change-encoding-gtm-snippet-to-gz.0';\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { BrowserClient, BrowserConfig, EnrichmentPlugin, Event } from '@amplitude/analytics-core';
|
|
2
2
|
import { AmplitudeSessionReplay, SessionReplayOptions as SessionReplayBrowserOptions } from '@amplitude/session-replay-browser';
|
|
3
3
|
import { SessionReplayOptions } from './typings/session-replay';
|
|
4
|
+
export declare const DEFAULT_EVENT_PROPERTY_PREFIX = "[Amplitude]";
|
|
5
|
+
export declare const DEFAULT_SESSION_REPLAY_PROPERTY: string;
|
|
4
6
|
export declare class SessionReplayPlugin implements EnrichmentPlugin<BrowserClient, BrowserConfig> {
|
|
5
7
|
static pluginName: string;
|
|
6
8
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,EAAoB,MAAM,2BAA2B,CAAC;AACpH,OAAO,EAQL,sBAAsB,EACtB,oBAAoB,IAAI,2BAA2B,EACpD,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,qBAAa,mBAAoB,YAAW,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC;IACxF,MAAM,CAAC,UAAU,SAA8C;IAC/D,IAAI,SAAkC;IACtC,IAAI,eAAyB;IAI7B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAQ;IACpC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,aAAa,EAAE,2BAA2B,CAAC;IAC3C,aAAa,EAAE,sBAAsB,CAQnC;gBAEU,OAAO,CAAC,EAAE,oBAAoB;IAKpC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa;IAmEnD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/C,OAAO,CAAC,KAAK,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,EAAoB,MAAM,2BAA2B,CAAC;AACpH,OAAO,EAQL,sBAAsB,EACtB,oBAAoB,IAAI,2BAA2B,EACpD,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,eAAO,MAAM,6BAA6B,gBAAgB,CAAC;AAC3D,eAAO,MAAM,+BAA+B,QAAuD,CAAC;AACpG,qBAAa,mBAAoB,YAAW,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC;IACxF,MAAM,CAAC,UAAU,SAA8C;IAC/D,IAAI,SAAkC;IACtC,IAAI,eAAyB;IAI7B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAQ;IACpC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,aAAa,EAAE,2BAA2B,CAAC;IAC3C,aAAa,EAAE,sBAAsB,CAQnC;gBAEU,OAAO,CAAC,EAAE,oBAAoB;IAKpC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa;IAmEnD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/C,OAAO,CAAC,KAAK,EAAE,KAAK;IAsDpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B,0BAA0B;;;CAG3B;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,gBAIrE,CAAC"}
|
|
@@ -4,6 +4,8 @@ import { init, setSessionId, getSessionId, getSessionReplayProperties, flush, sh
|
|
|
4
4
|
import { getAnalyticsConnector } from '@amplitude/analytics-client-common';
|
|
5
5
|
import { parseUserProperties } from './helpers';
|
|
6
6
|
import { VERSION } from './version';
|
|
7
|
+
export var DEFAULT_EVENT_PROPERTY_PREFIX = '[Amplitude]';
|
|
8
|
+
export var DEFAULT_SESSION_REPLAY_PROPERTY = "".concat(DEFAULT_EVENT_PROPERTY_PREFIX, " Session Replay ID");
|
|
7
9
|
var SessionReplayPlugin = /** @class */ (function () {
|
|
8
10
|
function SessionReplayPlugin(options) {
|
|
9
11
|
this.name = SessionReplayPlugin.pluginName;
|
|
@@ -179,7 +181,11 @@ var SessionReplayPlugin = /** @class */ (function () {
|
|
|
179
181
|
sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();
|
|
180
182
|
event.event_properties = __assign(__assign({}, event.event_properties), sessionRecordingProperties);
|
|
181
183
|
_c.label = 8;
|
|
182
|
-
case 8:
|
|
184
|
+
case 8:
|
|
185
|
+
if (event.event_type === SpecialEventType.IDENTIFY && event.event_properties) {
|
|
186
|
+
delete event.event_properties[DEFAULT_SESSION_REPLAY_PROPERTY];
|
|
187
|
+
}
|
|
188
|
+
return [2 /*return*/, Promise.resolve(event)];
|
|
183
189
|
case 9:
|
|
184
190
|
error_2 = _c.sent();
|
|
185
191
|
/* istanbul ignore next */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, BrowserConfig, EnrichmentPlugin, Event, SpecialEventType } from '@amplitude/analytics-core';\nimport {\n init,\n setSessionId,\n getSessionId,\n getSessionReplayProperties,\n flush,\n shutdown,\n evaluateTargetingAndCapture,\n AmplitudeSessionReplay,\n SessionReplayOptions as SessionReplayBrowserOptions,\n} from '@amplitude/session-replay-browser';\nimport { getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport { parseUserProperties } from './helpers';\nimport { SessionReplayOptions } from './typings/session-replay';\nimport { VERSION } from './version';\n\nexport class SessionReplayPlugin implements EnrichmentPlugin<BrowserClient, BrowserConfig> {\n static pluginName = '@amplitude/plugin-session-replay-browser';\n name = SessionReplayPlugin.pluginName;\n type = 'enrichment' as const;\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig | null = null;\n options: SessionReplayOptions;\n srInitOptions: SessionReplayBrowserOptions;\n sessionReplay: AmplitudeSessionReplay = {\n flush: flush,\n getSessionId: getSessionId,\n getSessionReplayProperties: getSessionReplayProperties,\n init: init,\n setSessionId: setSessionId,\n shutdown: shutdown,\n evaluateTargetingAndCapture: evaluateTargetingAndCapture,\n };\n\n constructor(options?: SessionReplayOptions) {\n this.options = { forceSessionTracking: false, ...options };\n this.srInitOptions = this.options;\n }\n\n async setup(config: BrowserConfig, _client: BrowserClient) {\n try {\n /* istanbul ignore next */\n config?.loggerProvider.log(`Installing @amplitude/plugin-session-replay, version ${VERSION}.`);\n\n this.config = config;\n\n if (this.options.forceSessionTracking) {\n if (typeof config.defaultTracking === 'boolean') {\n if (config.defaultTracking === false) {\n config.defaultTracking = {\n pageViews: false,\n formInteractions: false,\n fileDownloads: false,\n sessions: true,\n };\n }\n } else {\n config.defaultTracking = {\n ...config.defaultTracking,\n sessions: true,\n };\n }\n }\n const identityStore = getAnalyticsConnector(this.config.instanceName).identityStore;\n const userProperties = identityStore.getIdentity().userProperties;\n\n this.srInitOptions = {\n instanceName: this.config.instanceName,\n deviceId: this.options.deviceId ?? this.config.deviceId,\n optOut: this.config.optOut,\n sessionId: this.options.customSessionId ? undefined : this.config.sessionId,\n loggerProvider: this.config.loggerProvider,\n logLevel: this.config.logLevel,\n flushMaxRetries: this.config.flushMaxRetries,\n serverZone: this.config.serverZone,\n configServerUrl: this.options.configServerUrl || this.config.remoteConfig?.serverUrl,\n trackServerUrl: this.options.trackServerUrl,\n sampleRate: this.options.sampleRate,\n privacyConfig: {\n blockSelector: this.options.privacyConfig?.blockSelector,\n maskSelector: this.options.privacyConfig?.maskSelector,\n unmaskSelector: this.options.privacyConfig?.unmaskSelector,\n defaultMaskLevel: this.options.privacyConfig?.defaultMaskLevel,\n },\n debugMode: this.options.debugMode,\n shouldInlineStylesheet: this.options.shouldInlineStylesheet,\n version: { type: 'plugin', version: VERSION },\n performanceConfig: this.options.performanceConfig,\n storeType: this.options.storeType,\n useWebWorker: this.options.useWebWorker ?? this.options.experimental?.useWebWorker,\n userProperties: userProperties,\n omitElementTags: this.options.omitElementTags,\n applyBackgroundColorToBlockedElements: this.options.applyBackgroundColorToBlockedElements,\n interactionConfig: this.options.interactionConfig,\n captureDocumentTitle: this.options.captureDocumentTitle,\n enableUrlChangePolling: this.options.enableUrlChangePolling,\n urlChangePollingInterval: this.options.urlChangePollingInterval,\n };\n\n await this.sessionReplay.init(config.apiKey, this.srInitOptions).promise;\n } catch (error) {\n /* istanbul ignore next */\n config?.loggerProvider.error(`Session Replay: Failed to initialize due to ${(error as Error).message}`);\n }\n }\n\n async onSessionIdChanged(sessionId: number): Promise<void> {\n this.config?.loggerProvider.debug(\n `Analytics session id is changed to ${sessionId}, SR session id is ${String(this.sessionReplay.getSessionId())}.`,\n );\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n async onOptOutChanged(optOut: boolean): Promise<void> {\n this.config?.loggerProvider.debug(\n `optOut is changed to ${String(optOut)}, calling ${\n optOut ? 'sessionReplay.shutdown()' : 'sessionReplay.init()'\n }.`,\n );\n // TODO: compare optOut with this.sessionReplay.getOptOut().\n // Need to add getOptOut() to the interface AmplitudeSessionReplay first.\n if (optOut) {\n this.sessionReplay.shutdown();\n } else {\n this.config != null && (await this.sessionReplay.init(this.config.apiKey, this.srInitOptions).promise);\n }\n }\n\n async execute(event: Event) {\n try {\n if (this.options.customSessionId) {\n const sessionId = this.options.customSessionId(event);\n if (sessionId) {\n // On event, synchronize the session id to the custom session id from the event. This may\n // suffer from offline/delayed events messing up the state stored\n if (sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n } else {\n // On event, synchronize the session id to the what's on the browserConfig (source of truth)\n // Choosing not to read from event object here, concerned about offline/delayed events messing up the state stored\n // in SR.\n const sessionId: string | number | undefined = this.config?.sessionId;\n if (sessionId && sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n // Treating config.sessionId as source of truth, if the event's session id doesn't match, the\n // event is not of the current session (offline/late events). In that case, don't tag the events\n if (sessionId && sessionId === event.session_id) {\n let userProperties;\n if (event.event_type === SpecialEventType.IDENTIFY) {\n userProperties = parseUserProperties(event);\n }\n await this.sessionReplay.evaluateTargetingAndCapture({ event, userProperties });\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n }\n\n return Promise.resolve(event);\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: Failed to enrich event due to ${(error as Error).message}`);\n return Promise.resolve(event);\n }\n }\n\n async teardown(): Promise<void> {\n try {\n this.sessionReplay.shutdown();\n // the following are initialized in setup() which will always be called first\n // here we reset them to null to prevent memory leaks\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.config = null;\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: teardown failed due to ${(error as Error).message}`);\n }\n }\n\n getSessionReplayProperties() {\n return this.sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => EnrichmentPlugin = (\n options?: SessionReplayOptions,\n) => {\n return new SessionReplayPlugin(options);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, BrowserConfig, EnrichmentPlugin, Event, SpecialEventType } from '@amplitude/analytics-core';\nimport {\n init,\n setSessionId,\n getSessionId,\n getSessionReplayProperties,\n flush,\n shutdown,\n evaluateTargetingAndCapture,\n AmplitudeSessionReplay,\n SessionReplayOptions as SessionReplayBrowserOptions,\n} from '@amplitude/session-replay-browser';\nimport { getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport { parseUserProperties } from './helpers';\nimport { SessionReplayOptions } from './typings/session-replay';\nimport { VERSION } from './version';\n\nexport const DEFAULT_EVENT_PROPERTY_PREFIX = '[Amplitude]';\nexport const DEFAULT_SESSION_REPLAY_PROPERTY = `${DEFAULT_EVENT_PROPERTY_PREFIX} Session Replay ID`;\nexport class SessionReplayPlugin implements EnrichmentPlugin<BrowserClient, BrowserConfig> {\n static pluginName = '@amplitude/plugin-session-replay-browser';\n name = SessionReplayPlugin.pluginName;\n type = 'enrichment' as const;\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig | null = null;\n options: SessionReplayOptions;\n srInitOptions: SessionReplayBrowserOptions;\n sessionReplay: AmplitudeSessionReplay = {\n flush: flush,\n getSessionId: getSessionId,\n getSessionReplayProperties: getSessionReplayProperties,\n init: init,\n setSessionId: setSessionId,\n shutdown: shutdown,\n evaluateTargetingAndCapture: evaluateTargetingAndCapture,\n };\n\n constructor(options?: SessionReplayOptions) {\n this.options = { forceSessionTracking: false, ...options };\n this.srInitOptions = this.options;\n }\n\n async setup(config: BrowserConfig, _client: BrowserClient) {\n try {\n /* istanbul ignore next */\n config?.loggerProvider.log(`Installing @amplitude/plugin-session-replay, version ${VERSION}.`);\n\n this.config = config;\n\n if (this.options.forceSessionTracking) {\n if (typeof config.defaultTracking === 'boolean') {\n if (config.defaultTracking === false) {\n config.defaultTracking = {\n pageViews: false,\n formInteractions: false,\n fileDownloads: false,\n sessions: true,\n };\n }\n } else {\n config.defaultTracking = {\n ...config.defaultTracking,\n sessions: true,\n };\n }\n }\n const identityStore = getAnalyticsConnector(this.config.instanceName).identityStore;\n const userProperties = identityStore.getIdentity().userProperties;\n\n this.srInitOptions = {\n instanceName: this.config.instanceName,\n deviceId: this.options.deviceId ?? this.config.deviceId,\n optOut: this.config.optOut,\n sessionId: this.options.customSessionId ? undefined : this.config.sessionId,\n loggerProvider: this.config.loggerProvider,\n logLevel: this.config.logLevel,\n flushMaxRetries: this.config.flushMaxRetries,\n serverZone: this.config.serverZone,\n configServerUrl: this.options.configServerUrl || this.config.remoteConfig?.serverUrl,\n trackServerUrl: this.options.trackServerUrl,\n sampleRate: this.options.sampleRate,\n privacyConfig: {\n blockSelector: this.options.privacyConfig?.blockSelector,\n maskSelector: this.options.privacyConfig?.maskSelector,\n unmaskSelector: this.options.privacyConfig?.unmaskSelector,\n defaultMaskLevel: this.options.privacyConfig?.defaultMaskLevel,\n },\n debugMode: this.options.debugMode,\n shouldInlineStylesheet: this.options.shouldInlineStylesheet,\n version: { type: 'plugin', version: VERSION },\n performanceConfig: this.options.performanceConfig,\n storeType: this.options.storeType,\n useWebWorker: this.options.useWebWorker ?? this.options.experimental?.useWebWorker,\n userProperties: userProperties,\n omitElementTags: this.options.omitElementTags,\n applyBackgroundColorToBlockedElements: this.options.applyBackgroundColorToBlockedElements,\n interactionConfig: this.options.interactionConfig,\n captureDocumentTitle: this.options.captureDocumentTitle,\n enableUrlChangePolling: this.options.enableUrlChangePolling,\n urlChangePollingInterval: this.options.urlChangePollingInterval,\n };\n\n await this.sessionReplay.init(config.apiKey, this.srInitOptions).promise;\n } catch (error) {\n /* istanbul ignore next */\n config?.loggerProvider.error(`Session Replay: Failed to initialize due to ${(error as Error).message}`);\n }\n }\n\n async onSessionIdChanged(sessionId: number): Promise<void> {\n this.config?.loggerProvider.debug(\n `Analytics session id is changed to ${sessionId}, SR session id is ${String(this.sessionReplay.getSessionId())}.`,\n );\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n async onOptOutChanged(optOut: boolean): Promise<void> {\n this.config?.loggerProvider.debug(\n `optOut is changed to ${String(optOut)}, calling ${\n optOut ? 'sessionReplay.shutdown()' : 'sessionReplay.init()'\n }.`,\n );\n // TODO: compare optOut with this.sessionReplay.getOptOut().\n // Need to add getOptOut() to the interface AmplitudeSessionReplay first.\n if (optOut) {\n this.sessionReplay.shutdown();\n } else {\n this.config != null && (await this.sessionReplay.init(this.config.apiKey, this.srInitOptions).promise);\n }\n }\n\n async execute(event: Event) {\n try {\n if (this.options.customSessionId) {\n const sessionId = this.options.customSessionId(event);\n if (sessionId) {\n // On event, synchronize the session id to the custom session id from the event. This may\n // suffer from offline/delayed events messing up the state stored\n if (sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n } else {\n // On event, synchronize the session id to the what's on the browserConfig (source of truth)\n // Choosing not to read from event object here, concerned about offline/delayed events messing up the state stored\n // in SR.\n const sessionId: string | number | undefined = this.config?.sessionId;\n if (sessionId && sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n // Treating config.sessionId as source of truth, if the event's session id doesn't match, the\n // event is not of the current session (offline/late events). In that case, don't tag the events\n if (sessionId && sessionId === event.session_id) {\n let userProperties;\n if (event.event_type === SpecialEventType.IDENTIFY) {\n userProperties = parseUserProperties(event);\n }\n await this.sessionReplay.evaluateTargetingAndCapture({ event, userProperties });\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n }\n\n if (event.event_type === SpecialEventType.IDENTIFY && event.event_properties) {\n delete event.event_properties[DEFAULT_SESSION_REPLAY_PROPERTY];\n }\n\n return Promise.resolve(event);\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: Failed to enrich event due to ${(error as Error).message}`);\n return Promise.resolve(event);\n }\n }\n\n async teardown(): Promise<void> {\n try {\n this.sessionReplay.shutdown();\n // the following are initialized in setup() which will always be called first\n // here we reset them to null to prevent memory leaks\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.config = null;\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: teardown failed due to ${(error as Error).message}`);\n }\n }\n\n getSessionReplayProperties() {\n return this.sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => EnrichmentPlugin = (\n options?: SessionReplayOptions,\n) => {\n return new SessionReplayPlugin(options);\n};\n"]}
|
package/lib/esm/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.25.
|
|
1
|
+
export declare const VERSION = "1.25.3-AMP-140206-change-encoding-gtm-snippet-to-gz.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/esm/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,0DAA0D,CAAC"}
|
package/lib/esm/version.js
CHANGED
package/lib/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,CAAC,IAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,CAAC,IAAM,OAAO,GAAG,uDAAuD,CAAC","sourcesContent":["// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.25.3-AMP-140206-change-encoding-gtm-snippet-to-gz.0';\n"]}
|