@leanbase.com/js 0.2.2-alpha.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/leanbase.d.ts +0 -3
  2. package/dist/leanbase.iife.js +1 -1
  3. package/dist/leanbase.iife.js.map +1 -1
  4. package/dist/main.js +1 -1
  5. package/dist/main.js.map +1 -1
  6. package/dist/module.d.ts +0 -708
  7. package/dist/module.js +1 -1
  8. package/dist/module.js.map +1 -1
  9. package/dist/types.d.ts +0 -135
  10. package/dist/version.d.ts +1 -1
  11. package/lib/leanbase.d.ts +0 -3
  12. package/lib/leanbase.js +0 -25
  13. package/lib/leanbase.js.map +1 -1
  14. package/lib/types.d.ts +0 -135
  15. package/lib/types.js.map +1 -1
  16. package/lib/version.d.ts +1 -1
  17. package/lib/version.js +1 -1
  18. package/lib/version.js.map +1 -1
  19. package/package.json +1 -6
  20. package/dist/extensions/replay/external/config.d.ts +0 -9
  21. package/dist/extensions/replay/external/denylist.d.ts +0 -5
  22. package/dist/extensions/replay/external/lazy-loaded-session-recorder.d.ts +0 -153
  23. package/dist/extensions/replay/external/mutation-throttler.d.ts +0 -20
  24. package/dist/extensions/replay/external/network-plugin.d.ts +0 -15
  25. package/dist/extensions/replay/external/sessionrecording-utils.d.ts +0 -19
  26. package/dist/extensions/replay/external/triggerMatching.d.ts +0 -102
  27. package/dist/extensions/replay/rrweb-plugins/patch.d.ts +0 -3
  28. package/dist/extensions/replay/session-recording.d.ts +0 -75
  29. package/dist/extensions/replay/types/rrweb-types.d.ts +0 -439
  30. package/dist/extensions/replay/types/rrweb.d.ts +0 -82
  31. package/dist/extensions/sampling.d.ts +0 -4
  32. package/dist/utils/logger.d.ts +0 -10
  33. package/lib/extensions/replay/external/config.d.ts +0 -9
  34. package/lib/extensions/replay/external/config.js +0 -221
  35. package/lib/extensions/replay/external/config.js.map +0 -1
  36. package/lib/extensions/replay/external/denylist.d.ts +0 -5
  37. package/lib/extensions/replay/external/denylist.js +0 -28
  38. package/lib/extensions/replay/external/denylist.js.map +0 -1
  39. package/lib/extensions/replay/external/lazy-loaded-session-recorder.d.ts +0 -153
  40. package/lib/extensions/replay/external/lazy-loaded-session-recorder.js +0 -1042
  41. package/lib/extensions/replay/external/lazy-loaded-session-recorder.js.map +0 -1
  42. package/lib/extensions/replay/external/mutation-throttler.d.ts +0 -20
  43. package/lib/extensions/replay/external/mutation-throttler.js +0 -77
  44. package/lib/extensions/replay/external/mutation-throttler.js.map +0 -1
  45. package/lib/extensions/replay/external/network-plugin.d.ts +0 -15
  46. package/lib/extensions/replay/external/network-plugin.js +0 -503
  47. package/lib/extensions/replay/external/network-plugin.js.map +0 -1
  48. package/lib/extensions/replay/external/sessionrecording-utils.d.ts +0 -19
  49. package/lib/extensions/replay/external/sessionrecording-utils.js +0 -125
  50. package/lib/extensions/replay/external/sessionrecording-utils.js.map +0 -1
  51. package/lib/extensions/replay/external/triggerMatching.d.ts +0 -102
  52. package/lib/extensions/replay/external/triggerMatching.js +0 -342
  53. package/lib/extensions/replay/external/triggerMatching.js.map +0 -1
  54. package/lib/extensions/replay/rrweb-plugins/patch.d.ts +0 -3
  55. package/lib/extensions/replay/rrweb-plugins/patch.js +0 -32
  56. package/lib/extensions/replay/rrweb-plugins/patch.js.map +0 -1
  57. package/lib/extensions/replay/session-recording.d.ts +0 -75
  58. package/lib/extensions/replay/session-recording.js +0 -279
  59. package/lib/extensions/replay/session-recording.js.map +0 -1
  60. package/lib/extensions/replay/types/rrweb-types.d.ts +0 -439
  61. package/lib/extensions/replay/types/rrweb-types.js +0 -83
  62. package/lib/extensions/replay/types/rrweb-types.js.map +0 -1
  63. package/lib/extensions/replay/types/rrweb.d.ts +0 -82
  64. package/lib/extensions/replay/types/rrweb.js +0 -9
  65. package/lib/extensions/replay/types/rrweb.js.map +0 -1
  66. package/lib/extensions/sampling.d.ts +0 -4
  67. package/lib/extensions/sampling.js +0 -23
  68. package/lib/extensions/sampling.js.map +0 -1
  69. package/lib/utils/logger.d.ts +0 -10
  70. package/lib/utils/logger.js +0 -15
  71. package/lib/utils/logger.js.map +0 -1
@@ -1,125 +0,0 @@
1
- import { isObject } from '@posthog/core';
2
- // taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value#circular_references
3
- export function circularReferenceReplacer() {
4
- const ancestors = [];
5
- return function (_key, value) {
6
- if (isObject(value)) {
7
- // `this` is the object that value is contained in,
8
- // i.e., its direct parent.
9
- while (ancestors.length > 0 && ancestors[ancestors.length - 1] !== this) {
10
- ancestors.pop();
11
- }
12
- if (ancestors.includes(value)) {
13
- return '[Circular]';
14
- }
15
- ancestors.push(value);
16
- return value;
17
- }
18
- else {
19
- return value;
20
- }
21
- };
22
- }
23
- export function estimateSize(sizeable) {
24
- return JSON.stringify(sizeable, circularReferenceReplacer())?.length || 0;
25
- }
26
- export const replacementImageURI = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNOCAwSDE2TDAgMTZWOEw4IDBaIiBmaWxsPSIjMkQyRDJEIi8+CjxwYXRoIGQ9Ik0xNiA4VjE2SDhMMTYgOFoiIGZpbGw9IiMyRDJEMkQiLz4KPC9zdmc+Cg==';
27
- export const FULL_SNAPSHOT_EVENT_TYPE = 2;
28
- export const META_EVENT_TYPE = 4;
29
- export const INCREMENTAL_SNAPSHOT_EVENT_TYPE = 3;
30
- export const PLUGIN_EVENT_TYPE = 6;
31
- export const MUTATION_SOURCE_TYPE = 0;
32
- export const MAX_MESSAGE_SIZE = 5000000; // ~5mb
33
- /*
34
- * Check whether a data payload is nearing 5mb. If it is, it checks the data for
35
- * data URIs (the likely culprit for large payloads). If it finds data URIs, it either replaces
36
- * it with a generic image (if it's an image) or removes it.
37
- * @data {object} the rr-web data object
38
- * @returns {object} the rr-web data object with data uris filtered out
39
- */
40
- export function ensureMaxMessageSize(data) {
41
- let stringifiedData = JSON.stringify(data);
42
- // Note: with compression, this limit may be able to be increased
43
- // but we're assuming most of the size is from a data uri which
44
- // is unlikely to be compressed further
45
- if (stringifiedData.length > MAX_MESSAGE_SIZE) {
46
- // Regex that matches the pattern for a dataURI with the shape 'data:{mime type};{encoding},{data}'. It:
47
- // 1) Checks if the pattern starts with 'data:' (potentially, not at the start of the string)
48
- // 2) Extracts the mime type of the data uri in the first group
49
- // 3) Determines when the data URI ends.Depending on if it's used in the src tag or css, it can end with a ) or "
50
- const dataURIRegex = /data:([\w/\-.]+);(\w+),([^)"]*)/gim;
51
- const matches = stringifiedData.matchAll(dataURIRegex);
52
- for (const match of matches) {
53
- if (match[1].toLocaleLowerCase().slice(0, 6) === 'image/') {
54
- stringifiedData = stringifiedData.replace(match[0], replacementImageURI);
55
- }
56
- else {
57
- stringifiedData = stringifiedData.replace(match[0], '');
58
- }
59
- }
60
- }
61
- return { event: JSON.parse(stringifiedData), size: stringifiedData.length };
62
- }
63
- export const CONSOLE_LOG_PLUGIN_NAME = 'rrweb/console@1'; // The name of the rr-web plugin that emits console logs
64
- // Console logs can be really large. This function truncates large logs
65
- // It's a simple function that just truncates long strings.
66
- // TODO: Ideally this function would have better handling of objects + lists,
67
- // so they could still be rendered in a pretty way after truncation.
68
- export function truncateLargeConsoleLogs(_event) {
69
- const event = _event;
70
- const MAX_STRING_SIZE = 2000; // Maximum number of characters allowed in a string
71
- const MAX_STRINGS_PER_LOG = 10; // A log can consist of multiple strings (e.g. consol.log('string1', 'string2'))
72
- if (event &&
73
- isObject(event) &&
74
- event.type === PLUGIN_EVENT_TYPE &&
75
- isObject(event.data) &&
76
- event.data.plugin === CONSOLE_LOG_PLUGIN_NAME) {
77
- // Note: event.data.payload.payload comes from rr-web, and is an array of strings
78
- if (event.data.payload.payload.length > MAX_STRINGS_PER_LOG) {
79
- event.data.payload.payload = event.data.payload.payload.slice(0, MAX_STRINGS_PER_LOG);
80
- event.data.payload.payload.push('...[truncated]');
81
- }
82
- const updatedPayload = [];
83
- for (let i = 0; i < event.data.payload.payload.length; i++) {
84
- if (event.data.payload.payload[i] && // Value can be null
85
- event.data.payload.payload[i].length > MAX_STRING_SIZE) {
86
- updatedPayload.push(event.data.payload.payload[i].slice(0, MAX_STRING_SIZE) + '...[truncated]');
87
- }
88
- else {
89
- updatedPayload.push(event.data.payload.payload[i]);
90
- }
91
- }
92
- event.data.payload.payload = updatedPayload;
93
- // Return original type
94
- return _event;
95
- }
96
- return _event;
97
- }
98
- export const SEVEN_MEGABYTES = 1024 * 1024 * 7 * 0.9; // ~7mb (with some wiggle room)
99
- // recursively splits large buffers into smaller ones
100
- // uses a pretty high size limit to avoid splitting too much
101
- export function splitBuffer(buffer, sizeLimit = SEVEN_MEGABYTES) {
102
- if (buffer.size >= sizeLimit && buffer.data.length > 1) {
103
- const half = Math.floor(buffer.data.length / 2);
104
- const firstHalf = buffer.data.slice(0, half);
105
- const secondHalf = buffer.data.slice(half);
106
- return [
107
- splitBuffer({
108
- size: estimateSize(firstHalf),
109
- data: firstHalf,
110
- sessionId: buffer.sessionId,
111
- windowId: buffer.windowId,
112
- }),
113
- splitBuffer({
114
- size: estimateSize(secondHalf),
115
- data: secondHalf,
116
- sessionId: buffer.sessionId,
117
- windowId: buffer.windowId,
118
- }),
119
- ].flatMap((x) => x);
120
- }
121
- else {
122
- return [buffer];
123
- }
124
- }
125
- //# sourceMappingURL=sessionrecording-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sessionrecording-utils.js","sourceRoot":"","sources":["../../../../src/extensions/replay/external/sessionrecording-utils.ts"],"names":[],"mappings":"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"}
@@ -1,102 +0,0 @@
1
- import { Leanbase } from '../../../leanbase';
2
- import { RemoteConfig, SessionRecordingPersistedConfig, SessionRecordingUrlTrigger } from '../../../types';
3
- export declare const DISABLED = "disabled";
4
- export declare const SAMPLED = "sampled";
5
- export declare const ACTIVE = "active";
6
- export declare const BUFFERING = "buffering";
7
- export declare const PAUSED = "paused";
8
- export declare const LAZY_LOADING = "lazy_loading";
9
- export declare const TRIGGER_ACTIVATED: string;
10
- export declare const TRIGGER_PENDING: string;
11
- export declare const TRIGGER_DISABLED: string;
12
- export interface RecordingTriggersStatus {
13
- get receivedFlags(): boolean;
14
- get isRecordingEnabled(): false | true | undefined;
15
- get isSampled(): false | true | null;
16
- get urlTriggerMatching(): URLTriggerMatching;
17
- get eventTriggerMatching(): EventTriggerMatching;
18
- get linkedFlagMatching(): LinkedFlagMatching;
19
- get sessionId(): string;
20
- }
21
- export type TriggerType = 'url' | 'event';
22
- declare const triggerStatuses: readonly [string, string, string];
23
- export type TriggerStatus = (typeof triggerStatuses)[number];
24
- /**
25
- * Session recording starts in buffering mode while waiting for "flags response".
26
- * Once the response is received, it might be disabled, active or sampled.
27
- * When "sampled" that means a sample rate is set, and the last time the session ID rotated
28
- * the sample rate determined this session should be sent to the server.
29
- */
30
- declare const sessionRecordingStatuses: readonly ["disabled", "sampled", "active", "buffering", "paused", "lazy_loading"];
31
- export type SessionRecordingStatus = (typeof sessionRecordingStatuses)[number];
32
- type ReplayConfigType = RemoteConfig | SessionRecordingPersistedConfig;
33
- export interface TriggerStatusMatching {
34
- triggerStatus(sessionId: string): TriggerStatus;
35
- stop(): void;
36
- }
37
- export declare class OrTriggerMatching implements TriggerStatusMatching {
38
- private readonly _matchers;
39
- constructor(_matchers: TriggerStatusMatching[]);
40
- triggerStatus(sessionId: string): TriggerStatus;
41
- stop(): void;
42
- }
43
- export declare class AndTriggerMatching implements TriggerStatusMatching {
44
- private readonly _matchers;
45
- constructor(_matchers: TriggerStatusMatching[]);
46
- triggerStatus(sessionId: string): TriggerStatus;
47
- stop(): void;
48
- }
49
- export declare class PendingTriggerMatching implements TriggerStatusMatching {
50
- triggerStatus(): TriggerStatus;
51
- stop(): void;
52
- }
53
- export declare class URLTriggerMatching implements TriggerStatusMatching {
54
- private readonly _instance;
55
- _urlTriggers: SessionRecordingUrlTrigger[];
56
- _urlBlocklist: SessionRecordingUrlTrigger[];
57
- urlBlocked: boolean;
58
- constructor(_instance: Leanbase);
59
- onConfig(config: ReplayConfigType): void;
60
- /**
61
- * @deprecated Use onConfig instead
62
- */
63
- onRemoteConfig(response: RemoteConfig): void;
64
- private _urlTriggerStatus;
65
- triggerStatus(sessionId: string): TriggerStatus;
66
- checkUrlTriggerConditions(onPause: () => void, onResume: () => void, onActivate: (triggerType: TriggerType) => void): void;
67
- stop(): void;
68
- }
69
- export declare class LinkedFlagMatching implements TriggerStatusMatching {
70
- private readonly _instance;
71
- linkedFlag: string | {
72
- flag: string;
73
- variant: string;
74
- } | null;
75
- linkedFlagSeen: boolean;
76
- private _flagListenerCleanup;
77
- constructor(_instance: Leanbase);
78
- triggerStatus(): TriggerStatus;
79
- onConfig(config: ReplayConfigType, onStarted: (flag: string, variant: string | null) => void): void;
80
- /**
81
- * @deprecated Use onConfig instead
82
- */
83
- onRemoteConfig(response: RemoteConfig, onStarted: (flag: string, variant: string | null) => void): void;
84
- stop(): void;
85
- }
86
- export declare class EventTriggerMatching implements TriggerStatusMatching {
87
- private readonly _instance;
88
- _eventTriggers: string[];
89
- constructor(_instance: Leanbase);
90
- onConfig(config: ReplayConfigType): void;
91
- /**
92
- * @deprecated Use onConfig instead
93
- */
94
- onRemoteConfig(response: RemoteConfig): void;
95
- private _eventTriggerStatus;
96
- triggerStatus(sessionId: string): TriggerStatus;
97
- stop(): void;
98
- }
99
- export declare function nullMatchSessionRecordingStatus(triggersStatus: RecordingTriggersStatus): SessionRecordingStatus;
100
- export declare function anyMatchSessionRecordingStatus(triggersStatus: RecordingTriggersStatus): SessionRecordingStatus;
101
- export declare function allMatchSessionRecordingStatus(triggersStatus: RecordingTriggersStatus): SessionRecordingStatus;
102
- export {};
@@ -1,342 +0,0 @@
1
- import { SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION, SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION, } from '../../../constants';
2
- import { isNullish, isBoolean, isString, isObject } from '@posthog/core';
3
- import { window } from '../../../utils';
4
- export const DISABLED = 'disabled';
5
- export const SAMPLED = 'sampled';
6
- export const ACTIVE = 'active';
7
- export const BUFFERING = 'buffering';
8
- export const PAUSED = 'paused';
9
- export const LAZY_LOADING = 'lazy_loading';
10
- const TRIGGER = 'trigger';
11
- export const TRIGGER_ACTIVATED = TRIGGER + '_activated';
12
- export const TRIGGER_PENDING = TRIGGER + '_pending';
13
- export const TRIGGER_DISABLED = TRIGGER + '_' + DISABLED;
14
- /*
15
- triggers can have one of three statuses:
16
- * - trigger_activated: the trigger met conditions to start recording
17
- * - trigger_pending: the trigger is present, but the conditions are not yet met
18
- * - trigger_disabled: the trigger is not present
19
- */
20
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
21
- const triggerStatuses = [TRIGGER_ACTIVATED, TRIGGER_PENDING, TRIGGER_DISABLED];
22
- /**
23
- * Session recording starts in buffering mode while waiting for "flags response".
24
- * Once the response is received, it might be disabled, active or sampled.
25
- * When "sampled" that means a sample rate is set, and the last time the session ID rotated
26
- * the sample rate determined this session should be sent to the server.
27
- */
28
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
- const sessionRecordingStatuses = [DISABLED, SAMPLED, ACTIVE, BUFFERING, PAUSED, LAZY_LOADING];
30
- function sessionRecordingUrlTriggerMatches(url, triggers) {
31
- return triggers.some((trigger) => {
32
- switch (trigger.matching) {
33
- case 'regex':
34
- return new RegExp(trigger.url).test(url);
35
- default:
36
- return false;
37
- }
38
- });
39
- }
40
- export class OrTriggerMatching {
41
- constructor(_matchers) {
42
- this._matchers = _matchers;
43
- }
44
- triggerStatus(sessionId) {
45
- const statuses = this._matchers.map((m) => m.triggerStatus(sessionId));
46
- if (statuses.includes(TRIGGER_ACTIVATED)) {
47
- return TRIGGER_ACTIVATED;
48
- }
49
- if (statuses.includes(TRIGGER_PENDING)) {
50
- return TRIGGER_PENDING;
51
- }
52
- return TRIGGER_DISABLED;
53
- }
54
- stop() {
55
- this._matchers.forEach((m) => m.stop());
56
- }
57
- }
58
- export class AndTriggerMatching {
59
- constructor(_matchers) {
60
- this._matchers = _matchers;
61
- }
62
- triggerStatus(sessionId) {
63
- const statuses = new Set();
64
- for (const matcher of this._matchers) {
65
- statuses.add(matcher.triggerStatus(sessionId));
66
- }
67
- // trigger_disabled means no config
68
- statuses.delete(TRIGGER_DISABLED);
69
- switch (statuses.size) {
70
- case 0:
71
- return TRIGGER_DISABLED;
72
- case 1:
73
- return Array.from(statuses)[0];
74
- default:
75
- return TRIGGER_PENDING;
76
- }
77
- }
78
- stop() {
79
- this._matchers.forEach((m) => m.stop());
80
- }
81
- }
82
- export class PendingTriggerMatching {
83
- triggerStatus() {
84
- return TRIGGER_PENDING;
85
- }
86
- stop() {
87
- // no-op
88
- }
89
- }
90
- const isEagerLoadedConfig = (x) => {
91
- return 'sessionRecording' in x;
92
- };
93
- export class URLTriggerMatching {
94
- constructor(_instance) {
95
- this._instance = _instance;
96
- this._urlTriggers = [];
97
- this._urlBlocklist = [];
98
- this.urlBlocked = false;
99
- }
100
- onConfig(config) {
101
- this._urlTriggers =
102
- (isEagerLoadedConfig(config)
103
- ? isObject(config.sessionRecording)
104
- ? config.sessionRecording?.urlTriggers
105
- : []
106
- : config?.urlTriggers) || [];
107
- this._urlBlocklist =
108
- (isEagerLoadedConfig(config)
109
- ? isObject(config.sessionRecording)
110
- ? config.sessionRecording?.urlBlocklist
111
- : []
112
- : config?.urlBlocklist) || [];
113
- }
114
- /**
115
- * @deprecated Use onConfig instead
116
- */
117
- onRemoteConfig(response) {
118
- this.onConfig(response);
119
- }
120
- _urlTriggerStatus(sessionId) {
121
- if (this._urlTriggers.length === 0) {
122
- return TRIGGER_DISABLED;
123
- }
124
- const currentTriggerSession = this._instance?.getPersistedProperty(SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION);
125
- return currentTriggerSession === sessionId ? TRIGGER_ACTIVATED : TRIGGER_PENDING;
126
- }
127
- triggerStatus(sessionId) {
128
- const urlTriggerStatus = this._urlTriggerStatus(sessionId);
129
- const eitherIsActivated = urlTriggerStatus === TRIGGER_ACTIVATED;
130
- const eitherIsPending = urlTriggerStatus === TRIGGER_PENDING;
131
- const result = eitherIsActivated ? TRIGGER_ACTIVATED : eitherIsPending ? TRIGGER_PENDING : TRIGGER_DISABLED;
132
- this._instance.registerForSession({
133
- $sdk_debug_replay_url_trigger_status: result,
134
- });
135
- return result;
136
- }
137
- checkUrlTriggerConditions(onPause, onResume, onActivate) {
138
- if (typeof window === 'undefined' || !window.location.href) {
139
- return;
140
- }
141
- const url = window.location.href;
142
- const wasBlocked = this.urlBlocked;
143
- const isNowBlocked = sessionRecordingUrlTriggerMatches(url, this._urlBlocklist);
144
- if (wasBlocked && isNowBlocked) {
145
- // if the url is blocked and was already blocked, do nothing
146
- return;
147
- }
148
- else if (isNowBlocked && !wasBlocked) {
149
- onPause();
150
- }
151
- else if (!isNowBlocked && wasBlocked) {
152
- onResume();
153
- }
154
- if (sessionRecordingUrlTriggerMatches(url, this._urlTriggers)) {
155
- onActivate('url');
156
- }
157
- }
158
- stop() {
159
- // no-op
160
- }
161
- }
162
- export class LinkedFlagMatching {
163
- constructor(_instance) {
164
- this._instance = _instance;
165
- this.linkedFlag = null;
166
- this.linkedFlagSeen = false;
167
- this._flagListenerCleanup = () => { };
168
- }
169
- triggerStatus() {
170
- let result = TRIGGER_PENDING;
171
- if (isNullish(this.linkedFlag)) {
172
- result = TRIGGER_DISABLED;
173
- }
174
- if (this.linkedFlagSeen) {
175
- result = TRIGGER_ACTIVATED;
176
- }
177
- this._instance.registerForSession({
178
- $sdk_debug_replay_linked_flag_trigger_status: result,
179
- });
180
- return result;
181
- }
182
- onConfig(config, onStarted) {
183
- this.linkedFlag =
184
- (isEagerLoadedConfig(config)
185
- ? isObject(config.sessionRecording)
186
- ? config.sessionRecording?.linkedFlag
187
- : null
188
- : config?.linkedFlag) || null;
189
- if (!isNullish(this.linkedFlag) && !this.linkedFlagSeen) {
190
- const linkedFlag = isString(this.linkedFlag) ? this.linkedFlag : this.linkedFlag.flag;
191
- const linkedVariant = isString(this.linkedFlag) ? null : this.linkedFlag.variant;
192
- this._flagListenerCleanup = this._instance.onFeatureFlags((flags) => {
193
- const flagIsPresent = isObject(flags) && linkedFlag in flags;
194
- let linkedFlagMatches = false;
195
- if (flagIsPresent) {
196
- const variantForFlagKey = flags[linkedFlag];
197
- if (isBoolean(variantForFlagKey)) {
198
- linkedFlagMatches = variantForFlagKey === true;
199
- }
200
- else if (linkedVariant) {
201
- linkedFlagMatches = variantForFlagKey === linkedVariant;
202
- }
203
- else {
204
- // then this is a variant flag and we want to match any string
205
- linkedFlagMatches = !!variantForFlagKey;
206
- }
207
- }
208
- this.linkedFlagSeen = linkedFlagMatches;
209
- if (linkedFlagMatches) {
210
- onStarted(linkedFlag, linkedVariant);
211
- }
212
- });
213
- }
214
- }
215
- /**
216
- * @deprecated Use onConfig instead
217
- */
218
- onRemoteConfig(response, onStarted) {
219
- this.onConfig(response, onStarted);
220
- }
221
- stop() {
222
- this._flagListenerCleanup();
223
- }
224
- }
225
- export class EventTriggerMatching {
226
- constructor(_instance) {
227
- this._instance = _instance;
228
- this._eventTriggers = [];
229
- }
230
- onConfig(config) {
231
- this._eventTriggers =
232
- (isEagerLoadedConfig(config)
233
- ? isObject(config.sessionRecording)
234
- ? config.sessionRecording?.eventTriggers
235
- : []
236
- : config?.eventTriggers) || [];
237
- }
238
- /**
239
- * @deprecated Use onConfig instead
240
- */
241
- onRemoteConfig(response) {
242
- this.onConfig(response);
243
- }
244
- _eventTriggerStatus(sessionId) {
245
- if (this._eventTriggers.length === 0) {
246
- return TRIGGER_DISABLED;
247
- }
248
- const currentTriggerSession = this._instance?.getPersistedProperty(SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION);
249
- return currentTriggerSession === sessionId ? TRIGGER_ACTIVATED : TRIGGER_PENDING;
250
- }
251
- triggerStatus(sessionId) {
252
- const eventTriggerStatus = this._eventTriggerStatus(sessionId);
253
- const result = eventTriggerStatus === TRIGGER_ACTIVATED
254
- ? TRIGGER_ACTIVATED
255
- : eventTriggerStatus === TRIGGER_PENDING
256
- ? TRIGGER_PENDING
257
- : TRIGGER_DISABLED;
258
- this._instance.registerForSession({
259
- $sdk_debug_replay_event_trigger_status: result,
260
- });
261
- return result;
262
- }
263
- stop() {
264
- // no-op
265
- }
266
- }
267
- // we need a no-op matcher before we can lazy-load the other matches, since all matchers wait on remote config anyway
268
- export function nullMatchSessionRecordingStatus(triggersStatus) {
269
- if (!triggersStatus.isRecordingEnabled) {
270
- return DISABLED;
271
- }
272
- return BUFFERING;
273
- }
274
- export function anyMatchSessionRecordingStatus(triggersStatus) {
275
- if (!triggersStatus.receivedFlags) {
276
- return BUFFERING;
277
- }
278
- if (!triggersStatus.isRecordingEnabled) {
279
- return DISABLED;
280
- }
281
- if (triggersStatus.urlTriggerMatching.urlBlocked) {
282
- return PAUSED;
283
- }
284
- const sampledActive = triggersStatus.isSampled === true;
285
- const triggerMatches = new OrTriggerMatching([
286
- triggersStatus.eventTriggerMatching,
287
- triggersStatus.urlTriggerMatching,
288
- triggersStatus.linkedFlagMatching,
289
- ]).triggerStatus(triggersStatus.sessionId);
290
- if (sampledActive) {
291
- return SAMPLED;
292
- }
293
- if (triggerMatches === TRIGGER_ACTIVATED) {
294
- return ACTIVE;
295
- }
296
- if (triggerMatches === TRIGGER_PENDING) {
297
- // even if sampled active is false, we should still be buffering
298
- // since a pending trigger could override it
299
- return BUFFERING;
300
- }
301
- // if sampling is set and the session is already decided to not be sampled
302
- // then we should never be active
303
- if (triggersStatus.isSampled === false) {
304
- return DISABLED;
305
- }
306
- return ACTIVE;
307
- }
308
- export function allMatchSessionRecordingStatus(triggersStatus) {
309
- if (!triggersStatus.receivedFlags) {
310
- return BUFFERING;
311
- }
312
- if (!triggersStatus.isRecordingEnabled) {
313
- return DISABLED;
314
- }
315
- if (triggersStatus.urlTriggerMatching.urlBlocked) {
316
- return PAUSED;
317
- }
318
- const andTriggerMatch = new AndTriggerMatching([
319
- triggersStatus.eventTriggerMatching,
320
- triggersStatus.urlTriggerMatching,
321
- triggersStatus.linkedFlagMatching,
322
- ]);
323
- const currentTriggerStatus = andTriggerMatch.triggerStatus(triggersStatus.sessionId);
324
- const hasTriggersConfigured = currentTriggerStatus !== TRIGGER_DISABLED;
325
- const hasSamplingConfigured = isBoolean(triggersStatus.isSampled);
326
- if (hasTriggersConfigured && currentTriggerStatus === TRIGGER_PENDING) {
327
- return BUFFERING;
328
- }
329
- if (hasTriggersConfigured && currentTriggerStatus === TRIGGER_DISABLED) {
330
- return DISABLED;
331
- }
332
- // sampling can't ever cause buffering, it's always determined right away or not configured
333
- if (hasSamplingConfigured && !triggersStatus.isSampled) {
334
- return DISABLED;
335
- }
336
- // If sampling is configured and set to true, return sampled
337
- if (triggersStatus.isSampled === true) {
338
- return SAMPLED;
339
- }
340
- return ACTIVE;
341
- }
342
- //# sourceMappingURL=triggerMatching.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"triggerMatching.js","sourceRoot":"","sources":["../../../../src/extensions/replay/external/triggerMatching.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function patch(source: {
2
- [key: string]: any;
3
- }, name: string, replacement: (...args: unknown[]) => unknown): () => void;
@@ -1,32 +0,0 @@
1
- import { isFunction } from '@posthog/core';
2
- export function patch(source, name, replacement) {
3
- try {
4
- if (!(name in source)) {
5
- return () => {
6
- //
7
- };
8
- }
9
- const original = source[name];
10
- const wrapped = replacement(original);
11
- if (isFunction(wrapped)) {
12
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
13
- wrapped.prototype = wrapped.prototype || {};
14
- Object.defineProperties(wrapped, {
15
- __posthog_wrapped__: {
16
- enumerable: false,
17
- value: true,
18
- },
19
- });
20
- }
21
- source[name] = wrapped;
22
- return () => {
23
- source[name] = original;
24
- };
25
- }
26
- catch {
27
- return () => {
28
- //
29
- };
30
- }
31
- }
32
- //# sourceMappingURL=patch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../../src/extensions/replay/rrweb-plugins/patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,MAAM,UAAU,KAAK,CACjB,MAA8B,EAC9B,IAAY,EACZ,WAA4C;IAE5C,IAAI,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC;YACpB,OAAO,GAAG,EAAE;gBACR,EAAE;YACN,CAAC,CAAA;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAkB,CAAA;QAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;QAErC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,mEAAmE;YACnE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAA;YAC3C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBAC7B,mBAAmB,EAAE;oBACjB,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,IAAI;iBACd;aACJ,CAAC,CAAA;QACN,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;QAEtB,OAAO,GAAG,EAAE;YACR,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;QAC3B,CAAC,CAAA;IACL,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,GAAG,EAAE;YACR,EAAE;QACN,CAAC,CAAA;IACL,CAAC;AACL,CAAC"}