@amplitude/plugin-session-replay-browser 1.13.2 → 1.13.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.
package/lib/cjs/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.sessionReplayPlugin = exports.plugin = void 0;
3
4
  var session_replay_1 = require("./session-replay");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,mDAAsF;AAA7E,wGAAA,mBAAmB,OAAU;AAAE,qHAAA,mBAAmB,OAAA","sourcesContent":["export { sessionReplayPlugin as plugin, sessionReplayPlugin } from './session-replay';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAsF;AAA7E,wGAAA,mBAAmB,OAAU;AAAE,qHAAA,mBAAmB,OAAA","sourcesContent":["export { sessionReplayPlugin as plugin, sessionReplayPlugin } from './session-replay';\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.sessionReplayPlugin = exports.SessionReplayPlugin = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -10,9 +11,9 @@ var SessionReplayPlugin = /** @class */ (function () {
10
11
  this.options = tslib_1.__assign({ forceSessionTracking: false }, options);
11
12
  }
12
13
  SessionReplayPlugin.prototype.setup = function (config) {
13
- var _a, _b, _c, _d, _e;
14
14
  return tslib_1.__awaiter(this, void 0, void 0, function () {
15
15
  var error_1;
16
+ var _a, _b, _c, _d, _e;
16
17
  return tslib_1.__generator(this, function (_f) {
17
18
  switch (_f.label) {
18
19
  case 0:
@@ -74,9 +75,9 @@ var SessionReplayPlugin = /** @class */ (function () {
74
75
  });
75
76
  };
76
77
  SessionReplayPlugin.prototype.execute = function (event) {
77
- var _a;
78
78
  return tslib_1.__awaiter(this, void 0, void 0, function () {
79
79
  var sessionId, sessionRecordingProperties, sessionId, sessionRecordingProperties, error_2;
80
+ var _a;
80
81
  return tslib_1.__generator(this, function (_b) {
81
82
  switch (_b.label) {
82
83
  case 0:
@@ -121,8 +122,8 @@ var SessionReplayPlugin = /** @class */ (function () {
121
122
  });
122
123
  };
123
124
  SessionReplayPlugin.prototype.teardown = function () {
124
- var _a;
125
125
  return tslib_1.__awaiter(this, void 0, void 0, function () {
126
+ var _a;
126
127
  return tslib_1.__generator(this, function (_b) {
127
128
  try {
128
129
  sessionReplay.shutdown();
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserConfig, EnrichmentPlugin, Event } from '@amplitude/analytics-types';\nimport * as sessionReplay from '@amplitude/session-replay-browser';\nimport { SessionReplayOptions } from './typings/session-replay';\nimport { VERSION } from './version';\n\nexport class SessionReplayPlugin implements EnrichmentPlugin {\n name = '@amplitude/plugin-session-replay-browser';\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;\n options: SessionReplayOptions;\n\n constructor(options?: SessionReplayOptions) {\n this.options = { forceSessionTracking: false, ...options };\n }\n\n async setup(config: BrowserConfig) {\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\n await sessionReplay.init(config.apiKey, {\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,\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 experimental: this.options.experimental,\n }).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 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 !== sessionReplay.getSessionId()) {\n await sessionReplay.setSessionId(sessionId).promise;\n }\n\n const sessionRecordingProperties = 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 !== sessionReplay.getSessionId()) {\n await 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 const sessionRecordingProperties = 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 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 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 { BrowserConfig, EnrichmentPlugin, Event } from '@amplitude/analytics-types';\nimport * as sessionReplay from '@amplitude/session-replay-browser';\nimport { SessionReplayOptions } from './typings/session-replay';\nimport { VERSION } from './version';\n\nexport class SessionReplayPlugin implements EnrichmentPlugin {\n name = '@amplitude/plugin-session-replay-browser';\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;\n options: SessionReplayOptions;\n\n constructor(options?: SessionReplayOptions) {\n this.options = { forceSessionTracking: false, ...options };\n }\n\n async setup(config: BrowserConfig) {\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\n await sessionReplay.init(config.apiKey, {\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,\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 experimental: this.options.experimental,\n }).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 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 !== sessionReplay.getSessionId()) {\n await sessionReplay.setSessionId(sessionId).promise;\n }\n\n const sessionRecordingProperties = 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 !== sessionReplay.getSessionId()) {\n await 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 const sessionRecordingProperties = 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 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 sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => EnrichmentPlugin = (\n options?: SessionReplayOptions,\n) => {\n return new SessionReplayPlugin(options);\n};\n"]}
@@ -1,2 +1,3 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  //# sourceMappingURL=session-replay.js.map
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.13.2";
1
+ export declare const VERSION = "1.13.3";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,5 +1,6 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.VERSION = void 0;
3
4
  // Autogenerated by `yarn version-file`. DO NOT EDIT
4
- exports.VERSION = '1.13.2';
5
+ exports.VERSION = '1.13.3';
5
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;AAAA,oDAAoD;AACvC,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.13.2';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AACvC,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.13.3';\n"]}
@@ -8,9 +8,9 @@ var SessionReplayPlugin = /** @class */ (function () {
8
8
  this.options = __assign({ forceSessionTracking: false }, options);
9
9
  }
10
10
  SessionReplayPlugin.prototype.setup = function (config) {
11
- var _a, _b, _c, _d, _e;
12
11
  return __awaiter(this, void 0, void 0, function () {
13
12
  var error_1;
13
+ var _a, _b, _c, _d, _e;
14
14
  return __generator(this, function (_f) {
15
15
  switch (_f.label) {
16
16
  case 0:
@@ -72,9 +72,9 @@ var SessionReplayPlugin = /** @class */ (function () {
72
72
  });
73
73
  };
74
74
  SessionReplayPlugin.prototype.execute = function (event) {
75
- var _a;
76
75
  return __awaiter(this, void 0, void 0, function () {
77
76
  var sessionId, sessionRecordingProperties, sessionId, sessionRecordingProperties, error_2;
77
+ var _a;
78
78
  return __generator(this, function (_b) {
79
79
  switch (_b.label) {
80
80
  case 0:
@@ -119,8 +119,8 @@ var SessionReplayPlugin = /** @class */ (function () {
119
119
  });
120
120
  };
121
121
  SessionReplayPlugin.prototype.teardown = function () {
122
- var _a;
123
122
  return __awaiter(this, void 0, void 0, function () {
123
+ var _a;
124
124
  return __generator(this, function (_b) {
125
125
  try {
126
126
  sessionReplay.shutdown();
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserConfig, EnrichmentPlugin, Event } from '@amplitude/analytics-types';\nimport * as sessionReplay from '@amplitude/session-replay-browser';\nimport { SessionReplayOptions } from './typings/session-replay';\nimport { VERSION } from './version';\n\nexport class SessionReplayPlugin implements EnrichmentPlugin {\n name = '@amplitude/plugin-session-replay-browser';\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;\n options: SessionReplayOptions;\n\n constructor(options?: SessionReplayOptions) {\n this.options = { forceSessionTracking: false, ...options };\n }\n\n async setup(config: BrowserConfig) {\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\n await sessionReplay.init(config.apiKey, {\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,\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 experimental: this.options.experimental,\n }).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 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 !== sessionReplay.getSessionId()) {\n await sessionReplay.setSessionId(sessionId).promise;\n }\n\n const sessionRecordingProperties = 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 !== sessionReplay.getSessionId()) {\n await 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 const sessionRecordingProperties = 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 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 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 { BrowserConfig, EnrichmentPlugin, Event } from '@amplitude/analytics-types';\nimport * as sessionReplay from '@amplitude/session-replay-browser';\nimport { SessionReplayOptions } from './typings/session-replay';\nimport { VERSION } from './version';\n\nexport class SessionReplayPlugin implements EnrichmentPlugin {\n name = '@amplitude/plugin-session-replay-browser';\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;\n options: SessionReplayOptions;\n\n constructor(options?: SessionReplayOptions) {\n this.options = { forceSessionTracking: false, ...options };\n }\n\n async setup(config: BrowserConfig) {\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\n await sessionReplay.init(config.apiKey, {\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,\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 experimental: this.options.experimental,\n }).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 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 !== sessionReplay.getSessionId()) {\n await sessionReplay.setSessionId(sessionId).promise;\n }\n\n const sessionRecordingProperties = 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 !== sessionReplay.getSessionId()) {\n await 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 const sessionRecordingProperties = 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 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 sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => EnrichmentPlugin = (\n options?: SessionReplayOptions,\n) => {\n return new SessionReplayPlugin(options);\n};\n"]}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.13.2";
1
+ export declare const VERSION = "1.13.3";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Autogenerated by `yarn version-file`. DO NOT EDIT
2
- export var VERSION = '1.13.2';
2
+ export var VERSION = '1.13.3';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.13.2';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.13.3';\n"]}