@rushobservability/rum-sdk 0.1.0 → 0.1.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.
package/README.md CHANGED
@@ -37,6 +37,9 @@ RushRUM.trackEvent('checkout_completed', { plan: 'pro', amount: 49 })
37
37
 
38
38
  // Flush the queue manually (e.g. before a hard navigation)
39
39
  RushRUM.flush()
40
+
41
+ // Stop collecting + detach handlers/timers (tests, SPA hot-reload)
42
+ RushRUM.destroy()
40
43
  ```
41
44
 
42
45
  ### Configuration
@@ -56,6 +59,12 @@ RushRUM.flush()
56
59
  | `trackSessionReplay` | `boolean` | `false` | DOM session replay (rrweb) |
57
60
  | `propagateTraces` | `{ origins: RegExp[] }` | — | Inject trace headers on matching XHR/fetch origins |
58
61
  | `replayEndpoint` | `string` | `<endpoint>/rum/replay/ingest` | Override the replay ingest URL |
62
+ | `captureQueryParams` | `boolean` | `false` | Keep query strings + hash on captured URLs. Off by default — query params often carry tokens/PII |
63
+ | `maskInteractionText` | `boolean` | `false` | Drop clicked-element text from interaction events (keep only tag/id/classes) |
64
+
65
+ `sampleRate` is decided **once per session** and applied to every event, so sampled sessions are complete (no half-captured sessions).
66
+
67
+ `init()` is a no-op outside the browser (SSR-safe) and ignores duplicate calls. `RushRUM.destroy()` stops collection and detaches handlers/timers (useful for tests / SPA hot-reload).
59
68
 
60
69
  ## Build
61
70
 
package/dist/core.d.ts CHANGED
@@ -1,6 +1,16 @@
1
1
  import type { RumEvent, RushRUMConfig } from './types';
2
2
  export declare function configure(cfg: RushRUMConfig): void;
3
3
  export declare function getConfig(): RushRUMConfig | null;
4
+ export declare function isInitialized(): boolean;
5
+ /** Strip query string + hash from a URL unless the caller opted in via config. */
6
+ export declare function sanitizeUrl(url: string): string;
4
7
  export declare function pushEvent(event: RumEvent): void;
5
8
  export declare function flush(): void;
9
+ /**
10
+ * Stop collecting: flush the queue, clear the timer, and detach the unload
11
+ * handlers. The fetch/XHR/history/click patches installed by the trackers stay
12
+ * in place but become inert (pushEvent no-ops once config is null), so calling
13
+ * init() again later is safe. Mainly for tests and SPA hot-reload.
14
+ */
15
+ export declare function destroy(): void;
6
16
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAuB,aAAa,EAAE,MAAM,SAAS,CAAA;AAY3E,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAKlD;AAED,wBAAgB,SAAS,IAAI,aAAa,GAAG,IAAI,CAEhD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAY/C;AA+BD,wBAAgB,KAAK,IAAI,IAAI,CAoB5B"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAuB,aAAa,EAAE,MAAM,SAAS,CAAA;AAkB3E,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAWlD;AAED,wBAAgB,SAAS,IAAI,aAAa,GAAG,IAAI,CAEhD;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAeD,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAK/C;AAiCD,wBAAgB,KAAK,IAAI,IAAI,CAgB5B;AAyCD;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAiB9B"}
package/dist/core.js CHANGED
@@ -1,4 +1,4 @@
1
- import { getSessionId } from './session';
1
+ import { getSessionId, isSessionSampled } from './session';
2
2
  import { detectBrowser } from './browser';
3
3
  const MAX_BATCH = 30;
4
4
  const FLUSH_INTERVAL_MS = 250;
@@ -6,27 +6,61 @@ let config = null;
6
6
  let queue = [];
7
7
  let flushTimer = null;
8
8
  let browserInfo = null;
9
+ let sampledIn = true;
10
+ let initialized = false;
11
+ // Listener refs kept so destroy() can detach them.
12
+ let onVisibility = null;
13
+ let onPageHide = null;
9
14
  export function configure(cfg) {
15
+ // Idempotent: a second init() is a no-op, so we never start duplicate timers,
16
+ // handlers, or (via the trackers) double-wrap fetch/XHR/history.
17
+ if (initialized)
18
+ return;
10
19
  config = cfg;
11
20
  browserInfo = detectBrowser();
21
+ // Sampling is decided ONCE per session and applied to every event.
22
+ sampledIn = isSessionSampled(cfg.sampleRate ?? 1);
23
+ initialized = true;
12
24
  startFlushTimer();
13
25
  setupBeaconFlush();
14
26
  }
15
27
  export function getConfig() {
16
28
  return config;
17
29
  }
30
+ export function isInitialized() {
31
+ return initialized;
32
+ }
33
+ /** Strip query string + hash from a URL unless the caller opted in via config. */
34
+ export function sanitizeUrl(url) {
35
+ if (config?.captureQueryParams)
36
+ return url;
37
+ let end = url.length;
38
+ const q = url.indexOf('?');
39
+ const h = url.indexOf('#');
40
+ if (q !== -1)
41
+ end = Math.min(end, q);
42
+ if (h !== -1)
43
+ end = Math.min(end, h);
44
+ return url.slice(0, end);
45
+ }
46
+ /**
47
+ * High-resolution wall-clock time in nanoseconds (backend stores i64 ns).
48
+ * timeOrigin + now() captures sub-millisecond ordering; the float quantizes at
49
+ * ~256ns at this magnitude, which is far finer than RUM needs.
50
+ */
51
+ function nowNs() {
52
+ const ms = typeof performance !== 'undefined' && performance.timeOrigin
53
+ ? performance.timeOrigin + performance.now()
54
+ : Date.now();
55
+ return Math.round(ms * 1000000);
56
+ }
18
57
  export function pushEvent(event) {
19
- if (!config)
58
+ if (!config || !sampledIn)
20
59
  return;
21
- if (config.sampleRate !== undefined && config.sampleRate < 1) {
22
- if (Math.random() > config.sampleRate)
23
- return;
24
- }
25
- event.timestamp = event.timestamp ?? Date.now() * 1000000; // ns
60
+ event.timestamp = event.timestamp ?? nowNs();
26
61
  queue.push(event);
27
- if (queue.length >= MAX_BATCH) {
62
+ if (queue.length >= MAX_BATCH)
28
63
  flush();
29
- }
30
64
  }
31
65
  function buildMeta() {
32
66
  const cfg = config;
@@ -36,17 +70,19 @@ function buildMeta() {
36
70
  const u = cfg.user?.();
37
71
  userId = u?.id ?? '';
38
72
  }
39
- catch { /* ignore */ }
73
+ catch {
74
+ /* ignore */
75
+ }
40
76
  return {
41
77
  app_name: cfg.app.name,
42
78
  app_version: cfg.app.version ?? '',
43
79
  environment: cfg.environment ?? '',
44
80
  session_id: getSessionId(),
45
81
  user_id: userId,
46
- page_url: location.href,
82
+ page_url: sanitizeUrl(location.href),
47
83
  page_path: location.pathname,
48
84
  view_name: document.title,
49
- referrer: document.referrer,
85
+ referrer: sanitizeUrl(document.referrer),
50
86
  browser_name: bi.browserName,
51
87
  browser_version: bi.browserVersion,
52
88
  os_name: bi.osName,
@@ -59,21 +95,20 @@ function buildMeta() {
59
95
  export function flush() {
60
96
  if (!config || queue.length === 0)
61
97
  return;
62
- const events = queue.splice(0, MAX_BATCH);
63
- const payload = {
64
- meta: buildMeta(),
65
- events,
66
- };
67
- const body = JSON.stringify(payload);
68
- // Try fetch first, fallback silently
69
- fetch(config.endpoint, {
70
- method: 'POST',
71
- headers: { 'Content-Type': 'application/json' },
72
- body,
73
- keepalive: true,
74
- }).catch(() => {
75
- // Silently drop — RUM data is best-effort
76
- });
98
+ // Drain in batches so a burst doesn't leave a remainder waiting for the timer.
99
+ while (queue.length > 0) {
100
+ const events = queue.splice(0, MAX_BATCH);
101
+ const payload = { meta: buildMeta(), events };
102
+ const body = JSON.stringify(payload);
103
+ fetch(config.endpoint, {
104
+ method: 'POST',
105
+ headers: { 'Content-Type': 'application/json' },
106
+ body,
107
+ keepalive: true,
108
+ }).catch(() => {
109
+ // Silently drop — RUM data is best-effort.
110
+ });
111
+ }
77
112
  }
78
113
  function startFlushTimer() {
79
114
  if (flushTimer)
@@ -96,20 +131,48 @@ function setupBeaconFlush() {
96
131
  navigator.sendBeacon(config.endpoint, body);
97
132
  }
98
133
  else {
99
- // Sync XHR as last resort (not recommended but works for unload)
134
+ // Sync XHR as last resort (not recommended but works for unload).
100
135
  try {
101
136
  const xhr = new XMLHttpRequest();
102
137
  xhr.open('POST', config.endpoint, false);
103
138
  xhr.setRequestHeader('Content-Type', 'application/json');
104
139
  xhr.send(body);
105
140
  }
106
- catch { /* ignore */ }
141
+ catch {
142
+ /* ignore */
143
+ }
107
144
  }
108
145
  };
109
- document.addEventListener('visibilitychange', () => {
146
+ onVisibility = () => {
110
147
  if (document.visibilityState === 'hidden')
111
148
  beaconFlush();
112
- });
113
- window.addEventListener('pagehide', beaconFlush);
149
+ };
150
+ onPageHide = beaconFlush;
151
+ document.addEventListener('visibilitychange', onVisibility);
152
+ window.addEventListener('pagehide', onPageHide);
153
+ }
154
+ /**
155
+ * Stop collecting: flush the queue, clear the timer, and detach the unload
156
+ * handlers. The fetch/XHR/history/click patches installed by the trackers stay
157
+ * in place but become inert (pushEvent no-ops once config is null), so calling
158
+ * init() again later is safe. Mainly for tests and SPA hot-reload.
159
+ */
160
+ export function destroy() {
161
+ flush();
162
+ if (flushTimer) {
163
+ clearInterval(flushTimer);
164
+ flushTimer = null;
165
+ }
166
+ if (typeof document !== 'undefined' && onVisibility) {
167
+ document.removeEventListener('visibilitychange', onVisibility);
168
+ }
169
+ if (typeof window !== 'undefined' && onPageHide) {
170
+ window.removeEventListener('pagehide', onPageHide);
171
+ }
172
+ onVisibility = null;
173
+ onPageHide = null;
174
+ queue = [];
175
+ config = null;
176
+ initialized = false;
114
177
  }
115
178
  //# sourceMappingURL=core.js.map
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { RushRUMConfig } from './types';
2
- import { flush } from './core';
2
+ import { flush, destroy } from './core';
3
3
  export type { RushRUMConfig, RumEvent, RumPayload } from './types';
4
4
  export declare const RushRUM: {
5
5
  init(config: RushRUMConfig): void;
@@ -11,6 +11,11 @@ export declare const RushRUM: {
11
11
  * Force flush the event queue.
12
12
  */
13
13
  flush: typeof flush;
14
+ /**
15
+ * Stop collecting and detach handlers/timers. Safe to call before a later
16
+ * init() (useful for tests and SPA hot-reload).
17
+ */
18
+ destroy: typeof destroy;
14
19
  };
15
20
  export default RushRUM;
16
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,EAAa,KAAK,EAAa,MAAM,QAAQ,CAAA;AAQpD,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAElE,eAAO,MAAM,OAAO;iBACL,aAAa,GAAG,IAAI;IAuBjC;;OAEG;qBACc,MAAM,eAAe,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAQpE;;OAEG;;CAEJ,CAAA;AAED,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,EAAa,KAAK,EAAa,OAAO,EAAiB,MAAM,QAAQ,CAAA;AAQ5E,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAElE,eAAO,MAAM,OAAO;iBACL,aAAa,GAAG,IAAI;IAiCjC;;OAEG;qBACc,MAAM,eAAe,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAQpE;;OAEG;;IAGH;;;OAGG;;CAEJ,CAAA;AAED,eAAe,OAAO,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { configure, flush, pushEvent } from './core';
1
+ import { configure, flush, pushEvent, destroy, isInitialized } from './core';
2
2
  import { initVitals } from './vitals';
3
3
  import { initErrors } from './errors';
4
4
  import { initPageViews } from './pageview';
@@ -7,6 +7,16 @@ import { initResources } from './resources';
7
7
  import { initReplay } from './replay';
8
8
  export const RushRUM = {
9
9
  init(config) {
10
+ // No-op outside the browser (SSR / Node) so importing + init in a universal
11
+ // app (Next.js, etc.) doesn't throw on window/navigator/history access.
12
+ if (typeof window === 'undefined')
13
+ return;
14
+ // Guard against double init() — prevents duplicate web-vitals/error/click
15
+ // subscriptions and timers.
16
+ if (isInitialized()) {
17
+ console.warn('[RushRUM] init() called more than once; ignoring.');
18
+ return;
19
+ }
10
20
  configure(config);
11
21
  if (config.trackWebVitals !== false) {
12
22
  initVitals();
@@ -41,6 +51,11 @@ export const RushRUM = {
41
51
  * Force flush the event queue.
42
52
  */
43
53
  flush,
54
+ /**
55
+ * Stop collecting and detach handlers/timers. Safe to call before a later
56
+ * init() (useful for tests and SPA hot-reload).
57
+ */
58
+ destroy,
44
59
  };
45
60
  export default RushRUM;
46
61
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAIrC,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,CAAC,MAAqB;QACxB,SAAS,CAAC,MAAM,CAAC,CAAA;QAEjB,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;YACpC,UAAU,EAAE,CAAA;QACd,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACjC,UAAU,EAAE,CAAA;QACd,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;YACpC,aAAa,EAAE,CAAA;QACjB,CAAC;QACD,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;YACtC,gBAAgB,EAAE,CAAA;QACpB,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACnC,aAAa,EAAE,CAAA;QACjB,CAAC;QACD,IAAI,MAAM,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;YACvC,UAAU,CAAC,MAAM,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAY,EAAE,UAAoC;QAC3D,SAAS,CAAC;YACR,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;SAChE,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;CACN,CAAA;AAED,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAIrC,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,CAAC,MAAqB;QACxB,4EAA4E;QAC5E,wEAAwE;QACxE,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAM;QACzC,0EAA0E;QAC1E,4BAA4B;QAC5B,IAAI,aAAa,EAAE,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;YACjE,OAAM;QACR,CAAC;QAED,SAAS,CAAC,MAAM,CAAC,CAAA;QAEjB,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;YACpC,UAAU,EAAE,CAAA;QACd,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACjC,UAAU,EAAE,CAAA;QACd,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;YACpC,aAAa,EAAE,CAAA;QACjB,CAAC;QACD,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;YACtC,gBAAgB,EAAE,CAAA;QACpB,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACnC,aAAa,EAAE,CAAA;QACjB,CAAC;QACD,IAAI,MAAM,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;YACvC,UAAU,CAAC,MAAM,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAY,EAAE,UAAoC;QAC3D,SAAS,CAAC;YACR,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;SAChE,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;IAEL;;;OAGG;IACH,OAAO;CACR,CAAA;AAED,eAAe,OAAO,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,IAAI,IAAI,CAqBvC"}
1
+ {"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,IAAI,IAAI,CA2BvC"}
@@ -1,6 +1,10 @@
1
- import { pushEvent } from './core';
1
+ import { pushEvent, getConfig } from './core';
2
2
  const INTERACTIVE_SELECTORS = 'button, a, [role="button"], input[type="submit"], input[type="button"]';
3
+ let bound = false;
3
4
  export function initInteractions() {
5
+ if (bound)
6
+ return; // single global click listener
7
+ bound = true;
4
8
  document.addEventListener('click', (event) => {
5
9
  const target = event.target;
6
10
  if (!target)
@@ -9,11 +13,14 @@ export function initInteractions() {
9
13
  if (!interactive)
10
14
  return;
11
15
  const tag = interactive.tagName.toLowerCase();
12
- const text = (interactive.textContent ?? '').trim().slice(0, 100);
13
16
  const id = interactive.id ? `#${interactive.id}` : '';
14
17
  const classes = interactive.className
15
18
  ? `.${Array.from(interactive.classList).slice(0, 3).join('.')}`
16
19
  : '';
20
+ // Element text can carry PII (names, amounts) — omit it when masked.
21
+ const text = getConfig()?.maskInteractionText
22
+ ? ''
23
+ : (interactive.textContent ?? '').trim().slice(0, 100);
17
24
  pushEvent({
18
25
  event_type: 'interaction',
19
26
  interaction_type: 'click',
@@ -1 +1 @@
1
- {"version":3,"file":"interactions.js","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,qBAAqB,GAAG,wEAAwE,CAAA;AAEtG,MAAM,UAAU,gBAAgB;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAiB,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAwB,CAAA;QAC7C,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;QACzD,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;QAC7C,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACjE,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACrD,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS;YACnC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,CAAA;QAEN,SAAS,CAAC;YACR,UAAU,EAAE,aAAa;YACzB,gBAAgB,EAAE,OAAO;YACzB,kBAAkB,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;SACvE,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACtC,CAAC"}
1
+ {"version":3,"file":"interactions.js","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAE7C,MAAM,qBAAqB,GAAG,wEAAwE,CAAA;AAEtG,IAAI,KAAK,GAAG,KAAK,CAAA;AAEjB,MAAM,UAAU,gBAAgB;IAC9B,IAAI,KAAK;QAAE,OAAM,CAAC,+BAA+B;IACjD,KAAK,GAAG,IAAI,CAAA;IAEZ,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAiB,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAwB,CAAA;QAC7C,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;QACzD,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;QAC7C,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACrD,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS;YACnC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,CAAA;QACN,qEAAqE;QACrE,MAAM,IAAI,GAAG,SAAS,EAAE,EAAE,mBAAmB;YAC3C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAExD,SAAS,CAAC;YACR,UAAU,EAAE,aAAa;YACzB,gBAAgB,EAAE,OAAO;YACzB,kBAAkB,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;SACvE,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pageview.d.ts","sourceRoot":"","sources":["../src/pageview.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,IAAI,IAAI,CAsBpC"}
1
+ {"version":3,"file":"pageview.d.ts","sourceRoot":"","sources":["../src/pageview.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,IAAI,IAAI,CAyBpC"}
package/dist/pageview.js CHANGED
@@ -1,7 +1,11 @@
1
1
  import { pushEvent } from './core';
2
+ let patched = false;
2
3
  export function initPageViews() {
3
4
  // Track initial page load
4
5
  trackPageView();
6
+ if (patched)
7
+ return; // don't re-wrap history on a repeat init
8
+ patched = true;
5
9
  // SPA navigation: history.pushState / replaceState
6
10
  const origPush = history.pushState.bind(history);
7
11
  const origReplace = history.replaceState.bind(history);
@@ -1 +1 @@
1
- {"version":3,"file":"pageview.js","sourceRoot":"","sources":["../src/pageview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,UAAU,aAAa;IAC3B,0BAA0B;IAC1B,aAAa,EAAE,CAAA;IAEf,mDAAmD;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAEtD,OAAO,CAAC,SAAS,GAAG,UAAU,GAAG,IAAiC;QAChE,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;QACjB,aAAa,EAAE,CAAA;IACjB,CAAC,CAAA;IAED,OAAO,CAAC,YAAY,GAAG,UAAU,GAAG,IAAoC;QACtE,WAAW,CAAC,GAAG,IAAI,CAAC,CAAA;QACpB,aAAa,EAAE,CAAA;IACjB,CAAC,CAAA;IAED,0BAA0B;IAC1B,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE;QACvC,aAAa,EAAE,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;IAChC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC/E,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC/E,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,OAAO,GAAG,eAAe,EAAE,CAAA;IACjC,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;IAE/B,SAAS,CAAC;QACR,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,QAAQ,CAAC,KAAK;QAC1B,WAAW,EAAE,qBAAqB,EAAE;QACpC,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,MAAM;KAChB,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,OAAO,WAAW,KAAK,WAAW;QAAE,OAAO,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAkC,CAAA;IAC3F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACvD,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"pageview.js","sourceRoot":"","sources":["../src/pageview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,IAAI,OAAO,GAAG,KAAK,CAAA;AAEnB,MAAM,UAAU,aAAa;IAC3B,0BAA0B;IAC1B,aAAa,EAAE,CAAA;IAEf,IAAI,OAAO;QAAE,OAAM,CAAC,yCAAyC;IAC7D,OAAO,GAAG,IAAI,CAAA;IAEd,mDAAmD;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAEtD,OAAO,CAAC,SAAS,GAAG,UAAU,GAAG,IAAiC;QAChE,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;QACjB,aAAa,EAAE,CAAA;IACjB,CAAC,CAAA;IAED,OAAO,CAAC,YAAY,GAAG,UAAU,GAAG,IAAoC;QACtE,WAAW,CAAC,GAAG,IAAI,CAAC,CAAA;QACpB,aAAa,EAAE,CAAA;IACjB,CAAC,CAAA;IAED,0BAA0B;IAC1B,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE;QACvC,aAAa,EAAE,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;IAChC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC/E,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC/E,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,OAAO,GAAG,eAAe,EAAE,CAAA;IACjC,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;IAE/B,SAAS,CAAC;QACR,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,QAAQ,CAAC,KAAK;QAC1B,WAAW,EAAE,qBAAqB,EAAE;QACpC,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,MAAM;KAChB,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,OAAO,WAAW,KAAK,WAAW;QAAE,OAAO,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAkC,CAAA;IAC3F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACvD,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,IAAI,IAAI,CAGpC"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
package/dist/resources.js CHANGED
@@ -1,5 +1,9 @@
1
- import { pushEvent, getConfig } from './core';
1
+ import { pushEvent, getConfig, sanitizeUrl } from './core';
2
+ let patched = false;
2
3
  export function initResources() {
4
+ if (patched)
5
+ return; // never double-wrap fetch/XHR
6
+ patched = true;
3
7
  patchFetch();
4
8
  patchXHR();
5
9
  }
@@ -38,7 +42,7 @@ function patchFetch() {
38
42
  const durationMs = performance.now() - start;
39
43
  pushEvent({
40
44
  event_type: 'resource',
41
- event_name: url,
45
+ event_name: sanitizeUrl(url),
42
46
  duration_ms: durationMs,
43
47
  trace_id: traceId,
44
48
  span_id: spanId,
@@ -50,7 +54,7 @@ function patchFetch() {
50
54
  const durationMs = performance.now() - start;
51
55
  pushEvent({
52
56
  event_type: 'resource',
53
- event_name: url,
57
+ event_name: sanitizeUrl(url),
54
58
  duration_ms: durationMs,
55
59
  trace_id: traceId,
56
60
  span_id: spanId,
@@ -84,7 +88,7 @@ function patchXHR() {
84
88
  const durationMs = performance.now() - start;
85
89
  pushEvent({
86
90
  event_type: 'resource',
87
- event_name: url,
91
+ event_name: sanitizeUrl(url),
88
92
  duration_ms: durationMs,
89
93
  trace_id: traceId,
90
94
  span_id: spanId,
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
package/dist/session.d.ts CHANGED
@@ -1,3 +1,9 @@
1
1
  export declare function getSessionId(): string;
2
+ /**
3
+ * Decide whether THIS session is sampled — once per session, cached so every
4
+ * event in the session shares the same decision. Returns true if it should be
5
+ * recorded. Cleared whenever a new session id is minted (see getSessionId).
6
+ */
7
+ export declare function isSessionSampled(sampleRate: number): boolean;
2
8
  export declare function touchSession(): void;
3
9
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAeA,wBAAgB,YAAY,IAAI,MAAM,CAmBrC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAInC"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAgBA,wBAAgB,YAAY,IAAI,MAAM,CAqBrC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAe5D;AAED,wBAAgB,YAAY,IAAI,IAAI,CAInC"}
package/dist/session.js CHANGED
@@ -1,5 +1,6 @@
1
1
  const SESSION_KEY = 'rush_rum_sid';
2
2
  const SESSION_TS_KEY = 'rush_rum_sts';
3
+ const SESSION_SAMPLED_KEY = 'rush_rum_smp';
3
4
  const TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes
4
5
  function generateId() {
5
6
  if (typeof crypto !== 'undefined' && crypto.randomUUID) {
@@ -23,6 +24,8 @@ export function getSessionId() {
23
24
  const id = generateId();
24
25
  sessionStorage.setItem(SESSION_KEY, id);
25
26
  sessionStorage.setItem(SESSION_TS_KEY, String(now));
27
+ // New logical session → re-decide sampling next time it's asked.
28
+ sessionStorage.removeItem(SESSION_SAMPLED_KEY);
26
29
  return id;
27
30
  }
28
31
  catch {
@@ -30,6 +33,31 @@ export function getSessionId() {
30
33
  return generateId();
31
34
  }
32
35
  }
36
+ /**
37
+ * Decide whether THIS session is sampled — once per session, cached so every
38
+ * event in the session shares the same decision. Returns true if it should be
39
+ * recorded. Cleared whenever a new session id is minted (see getSessionId).
40
+ */
41
+ export function isSessionSampled(sampleRate) {
42
+ if (sampleRate >= 1)
43
+ return true;
44
+ if (sampleRate <= 0)
45
+ return false;
46
+ try {
47
+ // Ensure a session id exists first, so a fresh session clears any stale flag.
48
+ getSessionId();
49
+ const stored = sessionStorage.getItem(SESSION_SAMPLED_KEY);
50
+ if (stored !== null)
51
+ return stored === '1';
52
+ const sampled = Math.random() < sampleRate;
53
+ sessionStorage.setItem(SESSION_SAMPLED_KEY, sampled ? '1' : '0');
54
+ return sampled;
55
+ }
56
+ catch {
57
+ // No sessionStorage → fall back to a per-load decision.
58
+ return Math.random() < sampleRate;
59
+ }
60
+ }
33
61
  export function touchSession() {
34
62
  try {
35
63
  sessionStorage.setItem(SESSION_TS_KEY, String(Date.now()));
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,cAAc,CAAA;AAClC,MAAM,cAAc,GAAG,cAAc,CAAA;AACrC,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,aAAa;AAE/C,SAAS,UAAU;IACjB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvD,OAAO,MAAM,CAAC,UAAU,EAAE,CAAA;IAC5B,CAAC;IACD,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACnE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;QAClC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QACzC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAClD,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEtB,IAAI,MAAM,IAAI,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC;YAClD,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACnD,OAAO,MAAM,CAAA;QACf,CAAC;QAED,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QACvC,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACnD,OAAO,EAAE,CAAA;IACX,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;QACzD,OAAO,UAAU,EAAE,CAAA;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC5D,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -8,6 +8,11 @@ export interface RushRUMConfig {
8
8
  user?: () => {
9
9
  id?: string;
10
10
  } | null;
11
+ /**
12
+ * Fraction of sessions to record, 0..1 (default 1). The decision is made ONCE
13
+ * per session and applied to every event in it — so sessions stay coherent
14
+ * (you never keep a pageview but drop its errors).
15
+ */
11
16
  sampleRate?: number;
12
17
  trackWebVitals?: boolean;
13
18
  trackErrors?: boolean;
@@ -20,6 +25,16 @@ export interface RushRUMConfig {
20
25
  trackSessionReplay?: boolean;
21
26
  /** Override the replay ingest endpoint (defaults to endpoint with /rum/replay/ingest) */
22
27
  replayEndpoint?: string;
28
+ /**
29
+ * Keep query strings + hash on captured URLs (page_url + resource URLs).
30
+ * Default false → they are stripped, since query params often carry tokens/PII.
31
+ */
32
+ captureQueryParams?: boolean;
33
+ /**
34
+ * Drop the visible text of clicked elements from interaction events (keeps only
35
+ * tag/id/classes). Default false. Enable if button/link text may contain PII.
36
+ */
37
+ maskInteractionText?: boolean;
23
38
  }
24
39
  export interface RumMeta {
25
40
  app_name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACnC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,QAAQ,EAAE,CAAA;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACnC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,QAAQ,EAAE,CAAA;CACnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rushobservability/rum-sdk",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Rush RUM (Real User Monitoring) browser SDK",
5
5
  "type": "module",
6
6
  "repository": {