@newtalaria/browser 0.1.16 → 0.1.18

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,4 +1,21 @@
1
1
  import type { FailedRequestStatusCode } from '../types.js';
2
+ /**
3
+ * Fetch / XHR instrumentation for replay breadcrumbs and optional error promotion.
4
+ *
5
+ * Policy (see package README): always emit `talaria-network` breadcrumbs; promote
6
+ * to Talaria events only for same-origin or `networkErrorOrigins` (never invent
7
+ * a `cors` failure kind from status 0 / Failed to fetch).
8
+ */
9
+ /** How the request was issued. */
10
+ export type NetworkTransport = 'fetch' | 'xhr';
11
+ /**
12
+ * Failure classification for network telemetry.
13
+ * `cors` is intentionally absent — browsers do not expose CORS reliably
14
+ * (status 0 / Failed to fetch cover many causes).
15
+ */
16
+ export type NetworkFailureKind = 'http' | 'network' | 'abort' | 'timeout';
17
+ /** Same-origin vs cross-origin relative to the page. */
18
+ export type NetworkParty = 'first_party' | 'third_party';
2
19
  export type Teardown = () => void;
3
20
  /**
4
21
  * Fire when the document becomes visible again (tab focus) or is restored
@@ -10,19 +27,23 @@ export interface NetworkMeta {
10
27
  method: string;
11
28
  /** Sanitized request URL (origin + pathname; query stripped by default). */
12
29
  url: string;
30
+ /** Request origin (scheme + host + port). */
31
+ origin?: string;
13
32
  hostname?: string;
14
33
  pathname?: string;
15
- /** Only when `includeNetworkUrlQuery` is enabled. */
34
+ /** Only when query capture is enabled. */
16
35
  search?: string;
17
36
  status?: number;
18
37
  durationMs?: number;
19
38
  ok?: boolean;
39
+ transport?: NetworkTransport;
20
40
  /** Present on transport failures (fetch reject / XHR status 0). */
21
41
  errorName?: string;
22
42
  errorMessage?: string;
23
43
  aborted?: boolean;
24
- /** `http` = completed response with status; `network` = no usable status. */
25
- failureKind?: 'http' | 'network';
44
+ failureKind?: NetworkFailureKind;
45
+ /** Same-origin (`first_party`) vs cross-origin (`third_party`). */
46
+ party?: NetworkParty;
26
47
  }
27
48
  export interface NetworkHookOptions {
28
49
  /** Still emit rrweb breadcrumbs for all requests. */
@@ -40,13 +61,24 @@ export interface NetworkHookOptions {
40
61
  */
41
62
  onNetworkError?: (meta: NetworkMeta) => void;
42
63
  captureFailedRequests?: boolean;
43
- /** Promote CORS/offline/DNS fetch failures (default `true`). */
64
+ /** Promote transport failures for first-party / allowlisted origins (default `true`). */
44
65
  captureNetworkErrors?: boolean;
66
+ /**
67
+ * Extra origins eligible for error promotion (exact origin strings).
68
+ * Same-origin is always eligible. `['*']` promotes all origins.
69
+ */
70
+ networkErrorOrigins?: string[];
71
+ /**
72
+ * Override page origin (tests / non-browser). Defaults to `location.origin`.
73
+ */
74
+ pageOrigin?: string;
45
75
  /**
46
76
  * Keep URL query strings in network telemetry (after sensitive-key redaction).
47
- * Default `false` GA/ads URLs often carry cid/sid/dl identifiers.
77
+ * Default `false`. Prefer `captureRequestQueryParameters` (same meaning).
48
78
  */
49
79
  includeNetworkUrlQuery?: boolean;
80
+ /** Alias of `includeNetworkUrlQuery` — privacy-preserving default is `false`. */
81
+ captureRequestQueryParameters?: boolean;
50
82
  failedRequestStatusCodes?: FailedRequestStatusCode[];
51
83
  failedRequestIgnoreUrls?: string[];
52
84
  /** SDK base URL — requests under this host + /events|/replays are never promoted. */
@@ -58,26 +90,47 @@ export declare function statusMatches(status: number, codes: FailedRequestStatus
58
90
  /** Shared ignore list for HTTP + network failure promotion. */
59
91
  export declare function buildFailedRequestIgnoreUrls(failedRequestIgnoreUrls: string[], talariaBaseUrl?: string): string[];
60
92
  export declare function urlMatchesIgnoreList(url: string, ignoreUrls: string[]): boolean;
93
+ /** Normalize an allowlist entry to an origin string (`https://host:port`). */
94
+ export declare function normalizeNetworkOrigin(raw: string): string;
95
+ export declare function resolvePageOrigin(pageOrigin?: string): string;
96
+ /** Resolve the request origin from a (possibly relative) URL. */
97
+ export declare function resolveRequestOrigin(rawUrl: string, pageOrigin?: string): string;
98
+ /**
99
+ * Whether a request origin may be promoted to an error event.
100
+ * Same-origin and `networkErrorOrigins` entries (or `*`) are allowed.
101
+ */
102
+ export declare function isAllowedNetworkOrigin(requestOrigin: string, opts: {
103
+ networkErrorOrigins: string[];
104
+ pageOrigin?: string;
105
+ }): boolean;
106
+ export declare function classifyNetworkParty(requestOrigin: string, pageOrigin?: string): NetworkParty;
107
+ /** HTTP success = 2xx (aligned for fetch and XHR). */
108
+ export declare function isHttpOkStatus(status: number): boolean;
61
109
  export declare function shouldPromoteFailedRequest(meta: NetworkMeta, opts: {
62
110
  captureFailedRequests: boolean;
63
111
  failedRequestStatusCodes: FailedRequestStatusCode[];
64
112
  failedRequestIgnoreUrls: string[];
113
+ networkErrorOrigins?: string[];
114
+ pageOrigin?: string;
65
115
  talariaBaseUrl?: string;
66
116
  }): meta is NetworkMeta & {
67
117
  status: number;
68
118
  };
69
119
  /**
70
- * Promote fetch rejects / XHR status-0 failures (CORS, offline, DNS).
71
- * AbortError is never promoted.
120
+ * Promote fetch rejects / XHR status-0 failures (offline, DNS, blocked, etc.).
121
+ * Abort is never promoted; timeout may be promoted as `failureKind: timeout`.
122
+ * Third-party origins are skipped unless allowlisted (or `*`).
72
123
  */
73
124
  export declare function shouldPromoteNetworkError(meta: NetworkMeta, opts: {
74
125
  captureNetworkErrors: boolean;
75
126
  failedRequestIgnoreUrls: string[];
127
+ networkErrorOrigins?: string[];
128
+ pageOrigin?: string;
76
129
  talariaBaseUrl?: string;
77
130
  }): boolean;
78
131
  export declare function enrichNetworkMeta(meta: NetworkMeta): NetworkMeta;
79
132
  /** Apply privacy sanitization to a raw request URL for network meta. */
80
- export declare function networkUrlParts(rawUrl: string, includeQuery: boolean): Pick<NetworkMeta, 'url' | 'hostname' | 'pathname' | 'search'>;
133
+ export declare function networkUrlParts(rawUrl: string, includeQuery: boolean, pageOrigin?: string): Pick<NetworkMeta, 'url' | 'origin' | 'hostname' | 'pathname' | 'search'>;
81
134
  /** Capture fetch / XHR metadata (no bodies, no auth headers); optionally promote failures. */
82
135
  export declare function installNetworkHook(options?: NetworkHookOptions): Teardown;
83
136
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/replay/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/replay/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAM3D;;;;;;GAMG;AAEH,kCAAkC;AAClC,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,KAAK,CAAC;AAE/C;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE1E,wDAAwD;AACxD,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC;AAEzD,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AAElC;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,QAAQ,CA4B1E;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,mEAAmE;IACnE,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,yFAAyF;IACzF,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,iFAAiF;IACjF,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,wBAAwB,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACrD,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAwCD,2EAA2E;AAC3E,wBAAgB,kBAAkB,IAAI,QAAQ,CA8B7C;AAaD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,uBAAuB,EAAE,GAC/B,OAAO,CAUT;AAED,+DAA+D;AAC/D,wBAAgB,4BAA4B,CAC1C,uBAAuB,EAAE,MAAM,EAAE,EACjC,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,EAAE,CASV;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAM/E;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAY1D;AAED,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAY7D;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CASR;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE;IAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D,OAAO,CAOT;AAED,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,YAAY,CAId;AAED,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE;IACJ,qBAAqB,EAAE,OAAO,CAAC;IAC/B,wBAAwB,EAAE,uBAAuB,EAAE,CAAC;IACpD,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACA,IAAI,IAAI,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAyB1C;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE;IACJ,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACA,OAAO,CAyBT;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAwChE;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,OAAO,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC,CAa1E;AAED,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,QAAQ,CAwL7E"}
@@ -1,4 +1,4 @@
1
- /** Redact sensitive query params from a URL (keeps other query keys). */
1
+ /** Redact sensitive / tracking query params from a URL (keeps other query keys). */
2
2
  export declare function redactUrl(raw: string): string;
3
3
  export interface SanitizedNetworkUrl {
4
4
  /** Safe URL for telemetry: origin + pathname (no query/hash by default). */
@@ -1 +1 @@
1
- {"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/replay/privacy.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAY7C;AAED,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,mBAAmB,CAsCrB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAU3D"}
1
+ {"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/replay/privacy.ts"],"names":[],"mappings":"AAUA,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAY7C;AAED,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,mBAAmB,CAsCrB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAU3D"}
@@ -1,4 +1,4 @@
1
1
  /** Bumped with package.json version for event metadata. */
2
2
  export declare const SDK_NAME = "@newtalaria/browser";
3
- export declare const SDK_VERSION = "0.1.16";
3
+ export declare const SDK_VERSION = "0.1.18";
4
4
  //# sourceMappingURL=sdk_meta.d.ts.map