@amplitude/plugin-session-replay-browser 0.10.2 → 1.0.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EAEjB,KAAK,EACL,MAAM,EACP,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AA0BhE,qBAAa,mBAAoB,YAAW,iBAAiB;IAC3D,IAAI,SAA8C;IAClD,IAAI,gBAA0B;IAI9B,MAAM,EAAE,aAAa,CAAC;IAItB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,oBAAoB,CAAC;gBAElB,OAAO,CAAC,EAAE,oBAAoB;IAIpC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa;IA8CnD,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAQtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAa/B,0BAA0B;;;CAG3B;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,iBAIrE,CAAC"}
1
+ {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EAEjB,KAAK,EACL,MAAM,EACP,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AA0BhE,qBAAa,mBAAoB,YAAW,iBAAiB;IAC3D,IAAI,SAA8C;IAClD,IAAI,gBAA0B;IAI9B,MAAM,EAAE,aAAa,CAAC;IAItB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,oBAAoB,CAAC;gBAElB,OAAO,CAAC,EAAE,oBAAoB;IAIpC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa;IA+CnD,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAQtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAa/B,0BAA0B;;;CAG3B;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,iBAIrE,CAAC"}
@@ -76,6 +76,7 @@ var SessionReplayPlugin = /** @class */ (function () {
76
76
  privacyConfig: {
77
77
  blockSelector: (_a = this.options.privacyConfig) === null || _a === void 0 ? void 0 : _a.blockSelector,
78
78
  },
79
+ debugMode: this.options.debugMode,
79
80
  }).promise];
80
81
  case 1:
81
82
  _b.sent();
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BrowserClient,\n BrowserConfig,\n DestinationPlugin,\n EnrichmentPlugin,\n Event,\n Result,\n} from '@amplitude/analytics-types';\nimport * as sessionReplay from '@amplitude/session-replay-browser';\nimport { DEFAULT_SESSION_START_EVENT } from './constants';\nimport { SessionReplayOptions } from './typings/session-replay';\nconst ENRICHMENT_PLUGIN_NAME = '@amplitude/plugin-session-replay-enrichment-browser';\n\nclass SessionReplayEnrichmentPlugin implements EnrichmentPlugin {\n name = ENRICHMENT_PLUGIN_NAME;\n type = 'enrichment' as const;\n\n async setup(_config: BrowserConfig, _client: BrowserClient) {\n // do nothing\n }\n\n async execute(event: Event) {\n if (event.event_type === DEFAULT_SESSION_START_EVENT && event.session_id) {\n sessionReplay.setSessionId(event.session_id);\n }\n\n const sessionRecordingProperties = sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n\n return Promise.resolve(event);\n }\n}\n\nexport class SessionReplayPlugin implements DestinationPlugin {\n name = '@amplitude/plugin-session-replay-browser';\n type = 'destination' as const;\n // this.client is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n client: BrowserClient;\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 = { ...options };\n }\n\n async setup(config: BrowserConfig, client?: BrowserClient) {\n if (!client) {\n config.loggerProvider.error('SessionReplayPlugin requires v1.9.1+ of the Amplitude SDK.');\n return;\n }\n\n config.loggerProvider.log('Installing @amplitude/plugin-session-replay.');\n\n this.client = client;\n this.config = config;\n\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 await sessionReplay.init(config.apiKey, {\n instanceName: this.config.instanceName,\n deviceId: this.config.deviceId,\n optOut: this.config.optOut,\n sessionId: this.config.sessionId,\n loggerProvider: this.config.loggerProvider,\n logLevel: this.config.logLevel,\n flushMaxRetries: this.config.flushMaxRetries,\n serverZone: this.config.serverZone,\n sampleRate: this.options.sampleRate,\n privacyConfig: {\n blockSelector: this.options.privacyConfig?.blockSelector,\n },\n }).promise;\n\n // add enrichment plugin to add session replay properties to events\n await client.add(new SessionReplayEnrichmentPlugin()).promise;\n }\n\n async execute(event: Event): Promise<Result> {\n return Promise.resolve({\n event,\n code: 200,\n message: 'success',\n });\n }\n\n async flush(): Promise<void> {\n await sessionReplay.flush(false);\n }\n\n async teardown(): Promise<void> {\n await this.client.remove(ENRICHMENT_PLUGIN_NAME).promise;\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.client = null;\n }\n\n getSessionReplayProperties() {\n return sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => DestinationPlugin = (\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":";;;AAQA,uFAAmE;AACnE,yCAA0D;AAE1D,IAAM,sBAAsB,GAAG,qDAAqD,CAAC;AAErF;IAAA;QACE,SAAI,GAAG,sBAAsB,CAAC;QAC9B,SAAI,GAAG,YAAqB,CAAC;IAmB/B,CAAC;IAjBO,6CAAK,GAAX,UAAY,OAAsB,EAAE,OAAsB;;;;;;KAEzD;IAEK,+CAAO,GAAb,UAAc,KAAY;;;;gBACxB,IAAI,KAAK,CAAC,UAAU,KAAK,uCAA2B,IAAI,KAAK,CAAC,UAAU,EAAE;oBACxE,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;iBAC9C;gBAEK,0BAA0B,GAAG,aAAa,CAAC,0BAA0B,EAAE,CAAC;gBAC9E,KAAK,CAAC,gBAAgB,yCACjB,KAAK,CAAC,gBAAgB,GACtB,0BAA0B,CAC9B,CAAC;gBAEF,sBAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC;;;KAC/B;IACH,oCAAC;AAAD,CAAC,AArBD,IAqBC;AAED;IAaE,6BAAY,OAA8B;QAZ1C,SAAI,GAAG,0CAA0C,CAAC;QAClD,SAAI,GAAG,aAAsB,CAAC;QAY5B,IAAI,CAAC,OAAO,wBAAQ,OAAO,CAAE,CAAC;IAChC,CAAC;IAEK,mCAAK,GAAX,UAAY,MAAqB,EAAE,MAAsB;;;;;;wBACvD,IAAI,CAAC,MAAM,EAAE;4BACX,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;4BAC1F,sBAAO;yBACR;wBAED,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;wBAE1E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;wBACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;wBAErB,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE;4BAC/C,IAAI,MAAM,CAAC,eAAe,KAAK,KAAK,EAAE;gCACpC,MAAM,CAAC,eAAe,GAAG;oCACvB,SAAS,EAAE,KAAK;oCAChB,gBAAgB,EAAE,KAAK;oCACvB,aAAa,EAAE,KAAK;oCACpB,QAAQ,EAAE,IAAI;iCACf,CAAC;6BACH;yBACF;6BAAM;4BACL,MAAM,CAAC,eAAe,yCACjB,MAAM,CAAC,eAAe,KACzB,QAAQ,EAAE,IAAI,GACf,CAAC;yBACH;wBAED,qBAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gCACtC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;gCACtC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gCAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gCAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gCAChC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;gCAC1C,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gCAC9B,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;gCAC5C,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gCAClC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;gCACnC,aAAa,EAAE;oCACb,aAAa,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,aAAa,0CAAE,aAAa;iCACzD;gCACD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;6BAClC,CAAC,CAAC,OAAO,EAAA;;wBAdV,SAcU,CAAC;wBAEX,mEAAmE;wBACnE,qBAAM,MAAM,CAAC,GAAG,CAAC,IAAI,6BAA6B,EAAE,CAAC,CAAC,OAAO,EAAA;;wBAD7D,mEAAmE;wBACnE,SAA6D,CAAC;;;;;KAC/D;IAEK,qCAAO,GAAb,UAAc,KAAY;;;gBACxB,sBAAO,OAAO,CAAC,OAAO,CAAC;wBACrB,KAAK,OAAA;wBACL,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,SAAS;qBACnB,CAAC,EAAC;;;KACJ;IAEK,mCAAK,GAAX;;;;4BACE,qBAAM,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAA;;wBAAhC,SAAgC,CAAC;;;;;KAClC;IAEK,sCAAQ,GAAd;;;;4BACE,qBAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAA;;wBAAxD,SAAwD,CAAC;wBACzD,aAAa,CAAC,QAAQ,EAAE,CAAC;wBACzB,6EAA6E;wBAC7E,qDAAqD;wBACrD,6DAA6D;wBAC7D,aAAa;wBACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;wBACnB,6DAA6D;wBAC7D,aAAa;wBACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;;;;;KACpB;IAED,wDAA0B,GAA1B;QACE,OAAO,aAAa,CAAC,0BAA0B,EAAE,CAAC;IACpD,CAAC;IACH,0BAAC;AAAD,CAAC,AA5FD,IA4FC;AA5FY,kDAAmB;AA8FzB,IAAM,mBAAmB,GAA0D,UACxF,OAA8B;IAE9B,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC,CAAC;AAJW,QAAA,mBAAmB,uBAI9B","sourcesContent":["import {\n BrowserClient,\n BrowserConfig,\n DestinationPlugin,\n EnrichmentPlugin,\n Event,\n Result,\n} from '@amplitude/analytics-types';\nimport * as sessionReplay from '@amplitude/session-replay-browser';\nimport { DEFAULT_SESSION_START_EVENT } from './constants';\nimport { SessionReplayOptions } from './typings/session-replay';\nconst ENRICHMENT_PLUGIN_NAME = '@amplitude/plugin-session-replay-enrichment-browser';\n\nclass SessionReplayEnrichmentPlugin implements EnrichmentPlugin {\n name = ENRICHMENT_PLUGIN_NAME;\n type = 'enrichment' as const;\n\n async setup(_config: BrowserConfig, _client: BrowserClient) {\n // do nothing\n }\n\n async execute(event: Event) {\n if (event.event_type === DEFAULT_SESSION_START_EVENT && event.session_id) {\n sessionReplay.setSessionId(event.session_id);\n }\n\n const sessionRecordingProperties = sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n\n return Promise.resolve(event);\n }\n}\n\nexport class SessionReplayPlugin implements DestinationPlugin {\n name = '@amplitude/plugin-session-replay-browser';\n type = 'destination' as const;\n // this.client is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n client: BrowserClient;\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 = { ...options };\n }\n\n async setup(config: BrowserConfig, client?: BrowserClient) {\n if (!client) {\n config.loggerProvider.error('SessionReplayPlugin requires v1.9.1+ of the Amplitude SDK.');\n return;\n }\n\n config.loggerProvider.log('Installing @amplitude/plugin-session-replay.');\n\n this.client = client;\n this.config = config;\n\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 await sessionReplay.init(config.apiKey, {\n instanceName: this.config.instanceName,\n deviceId: this.config.deviceId,\n optOut: this.config.optOut,\n sessionId: this.config.sessionId,\n loggerProvider: this.config.loggerProvider,\n logLevel: this.config.logLevel,\n flushMaxRetries: this.config.flushMaxRetries,\n serverZone: this.config.serverZone,\n sampleRate: this.options.sampleRate,\n privacyConfig: {\n blockSelector: this.options.privacyConfig?.blockSelector,\n },\n debugMode: this.options.debugMode,\n }).promise;\n\n // add enrichment plugin to add session replay properties to events\n await client.add(new SessionReplayEnrichmentPlugin()).promise;\n }\n\n async execute(event: Event): Promise<Result> {\n return Promise.resolve({\n event,\n code: 200,\n message: 'success',\n });\n }\n\n async flush(): Promise<void> {\n await sessionReplay.flush(false);\n }\n\n async teardown(): Promise<void> {\n await this.client.remove(ENRICHMENT_PLUGIN_NAME).promise;\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.client = null;\n }\n\n getSessionReplayProperties() {\n return sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => DestinationPlugin = (\n options?: SessionReplayOptions,\n) => {\n return new SessionReplayPlugin(options);\n};\n"]}
@@ -4,5 +4,6 @@ export interface SessionReplayPrivacyConfig {
4
4
  export interface SessionReplayOptions {
5
5
  sampleRate?: number;
6
6
  privacyConfig?: SessionReplayPrivacyConfig;
7
+ debugMode?: boolean;
7
8
  }
8
9
  //# sourceMappingURL=session-replay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../../src/typings/session-replay.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,0BAA0B,CAAC;CAC5C"}
1
+ {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../../src/typings/session-replay.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,0BAA0B,CAAC;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../../src/typings/session-replay.ts"],"names":[],"mappings":"","sourcesContent":["export interface SessionReplayPrivacyConfig {\n blockSelector?: string | string[];\n}\nexport interface SessionReplayOptions {\n sampleRate?: number;\n privacyConfig?: SessionReplayPrivacyConfig;\n}\n"]}
1
+ {"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../../src/typings/session-replay.ts"],"names":[],"mappings":"","sourcesContent":["export interface SessionReplayPrivacyConfig {\n blockSelector?: string | string[];\n}\nexport interface SessionReplayOptions {\n sampleRate?: number;\n privacyConfig?: SessionReplayPrivacyConfig;\n debugMode?: boolean;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EAEjB,KAAK,EACL,MAAM,EACP,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AA0BhE,qBAAa,mBAAoB,YAAW,iBAAiB;IAC3D,IAAI,SAA8C;IAClD,IAAI,gBAA0B;IAI9B,MAAM,EAAE,aAAa,CAAC;IAItB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,oBAAoB,CAAC;gBAElB,OAAO,CAAC,EAAE,oBAAoB;IAIpC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa;IA8CnD,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAQtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAa/B,0BAA0B;;;CAG3B;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,iBAIrE,CAAC"}
1
+ {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EAEjB,KAAK,EACL,MAAM,EACP,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AA0BhE,qBAAa,mBAAoB,YAAW,iBAAiB;IAC3D,IAAI,SAA8C;IAClD,IAAI,gBAA0B;IAI9B,MAAM,EAAE,aAAa,CAAC;IAItB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,oBAAoB,CAAC;gBAElB,OAAO,CAAC,EAAE,oBAAoB;IAIpC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa;IA+CnD,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAQtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAa/B,0BAA0B;;;CAG3B;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,iBAIrE,CAAC"}
@@ -74,6 +74,7 @@ var SessionReplayPlugin = /** @class */ (function () {
74
74
  privacyConfig: {
75
75
  blockSelector: (_a = this.options.privacyConfig) === null || _a === void 0 ? void 0 : _a.blockSelector,
76
76
  },
77
+ debugMode: this.options.debugMode,
77
78
  }).promise];
78
79
  case 1:
79
80
  _b.sent();
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BrowserClient,\n BrowserConfig,\n DestinationPlugin,\n EnrichmentPlugin,\n Event,\n Result,\n} from '@amplitude/analytics-types';\nimport * as sessionReplay from '@amplitude/session-replay-browser';\nimport { DEFAULT_SESSION_START_EVENT } from './constants';\nimport { SessionReplayOptions } from './typings/session-replay';\nconst ENRICHMENT_PLUGIN_NAME = '@amplitude/plugin-session-replay-enrichment-browser';\n\nclass SessionReplayEnrichmentPlugin implements EnrichmentPlugin {\n name = ENRICHMENT_PLUGIN_NAME;\n type = 'enrichment' as const;\n\n async setup(_config: BrowserConfig, _client: BrowserClient) {\n // do nothing\n }\n\n async execute(event: Event) {\n if (event.event_type === DEFAULT_SESSION_START_EVENT && event.session_id) {\n sessionReplay.setSessionId(event.session_id);\n }\n\n const sessionRecordingProperties = sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n\n return Promise.resolve(event);\n }\n}\n\nexport class SessionReplayPlugin implements DestinationPlugin {\n name = '@amplitude/plugin-session-replay-browser';\n type = 'destination' as const;\n // this.client is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n client: BrowserClient;\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 = { ...options };\n }\n\n async setup(config: BrowserConfig, client?: BrowserClient) {\n if (!client) {\n config.loggerProvider.error('SessionReplayPlugin requires v1.9.1+ of the Amplitude SDK.');\n return;\n }\n\n config.loggerProvider.log('Installing @amplitude/plugin-session-replay.');\n\n this.client = client;\n this.config = config;\n\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 await sessionReplay.init(config.apiKey, {\n instanceName: this.config.instanceName,\n deviceId: this.config.deviceId,\n optOut: this.config.optOut,\n sessionId: this.config.sessionId,\n loggerProvider: this.config.loggerProvider,\n logLevel: this.config.logLevel,\n flushMaxRetries: this.config.flushMaxRetries,\n serverZone: this.config.serverZone,\n sampleRate: this.options.sampleRate,\n privacyConfig: {\n blockSelector: this.options.privacyConfig?.blockSelector,\n },\n }).promise;\n\n // add enrichment plugin to add session replay properties to events\n await client.add(new SessionReplayEnrichmentPlugin()).promise;\n }\n\n async execute(event: Event): Promise<Result> {\n return Promise.resolve({\n event,\n code: 200,\n message: 'success',\n });\n }\n\n async flush(): Promise<void> {\n await sessionReplay.flush(false);\n }\n\n async teardown(): Promise<void> {\n await this.client.remove(ENRICHMENT_PLUGIN_NAME).promise;\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.client = null;\n }\n\n getSessionReplayProperties() {\n return sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => DestinationPlugin = (\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 {\n BrowserClient,\n BrowserConfig,\n DestinationPlugin,\n EnrichmentPlugin,\n Event,\n Result,\n} from '@amplitude/analytics-types';\nimport * as sessionReplay from '@amplitude/session-replay-browser';\nimport { DEFAULT_SESSION_START_EVENT } from './constants';\nimport { SessionReplayOptions } from './typings/session-replay';\nconst ENRICHMENT_PLUGIN_NAME = '@amplitude/plugin-session-replay-enrichment-browser';\n\nclass SessionReplayEnrichmentPlugin implements EnrichmentPlugin {\n name = ENRICHMENT_PLUGIN_NAME;\n type = 'enrichment' as const;\n\n async setup(_config: BrowserConfig, _client: BrowserClient) {\n // do nothing\n }\n\n async execute(event: Event) {\n if (event.event_type === DEFAULT_SESSION_START_EVENT && event.session_id) {\n sessionReplay.setSessionId(event.session_id);\n }\n\n const sessionRecordingProperties = sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n\n return Promise.resolve(event);\n }\n}\n\nexport class SessionReplayPlugin implements DestinationPlugin {\n name = '@amplitude/plugin-session-replay-browser';\n type = 'destination' as const;\n // this.client is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n client: BrowserClient;\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 = { ...options };\n }\n\n async setup(config: BrowserConfig, client?: BrowserClient) {\n if (!client) {\n config.loggerProvider.error('SessionReplayPlugin requires v1.9.1+ of the Amplitude SDK.');\n return;\n }\n\n config.loggerProvider.log('Installing @amplitude/plugin-session-replay.');\n\n this.client = client;\n this.config = config;\n\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 await sessionReplay.init(config.apiKey, {\n instanceName: this.config.instanceName,\n deviceId: this.config.deviceId,\n optOut: this.config.optOut,\n sessionId: this.config.sessionId,\n loggerProvider: this.config.loggerProvider,\n logLevel: this.config.logLevel,\n flushMaxRetries: this.config.flushMaxRetries,\n serverZone: this.config.serverZone,\n sampleRate: this.options.sampleRate,\n privacyConfig: {\n blockSelector: this.options.privacyConfig?.blockSelector,\n },\n debugMode: this.options.debugMode,\n }).promise;\n\n // add enrichment plugin to add session replay properties to events\n await client.add(new SessionReplayEnrichmentPlugin()).promise;\n }\n\n async execute(event: Event): Promise<Result> {\n return Promise.resolve({\n event,\n code: 200,\n message: 'success',\n });\n }\n\n async flush(): Promise<void> {\n await sessionReplay.flush(false);\n }\n\n async teardown(): Promise<void> {\n await this.client.remove(ENRICHMENT_PLUGIN_NAME).promise;\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.client = null;\n }\n\n getSessionReplayProperties() {\n return sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => DestinationPlugin = (\n options?: SessionReplayOptions,\n) => {\n return new SessionReplayPlugin(options);\n};\n"]}
@@ -4,5 +4,6 @@ export interface SessionReplayPrivacyConfig {
4
4
  export interface SessionReplayOptions {
5
5
  sampleRate?: number;
6
6
  privacyConfig?: SessionReplayPrivacyConfig;
7
+ debugMode?: boolean;
7
8
  }
8
9
  //# sourceMappingURL=session-replay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../../src/typings/session-replay.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,0BAA0B,CAAC;CAC5C"}
1
+ {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../../src/typings/session-replay.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,0BAA0B,CAAC;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../../src/typings/session-replay.ts"],"names":[],"mappings":"","sourcesContent":["export interface SessionReplayPrivacyConfig {\n blockSelector?: string | string[];\n}\nexport interface SessionReplayOptions {\n sampleRate?: number;\n privacyConfig?: SessionReplayPrivacyConfig;\n}\n"]}
1
+ {"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../../src/typings/session-replay.ts"],"names":[],"mappings":"","sourcesContent":["export interface SessionReplayPrivacyConfig {\n blockSelector?: string | string[];\n}\nexport interface SessionReplayOptions {\n sampleRate?: number;\n privacyConfig?: SessionReplayPrivacyConfig;\n debugMode?: boolean;\n}\n"]}