@newtalaria/browser 0.1.13 → 0.1.16
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 +29 -6
- package/dist/client.d.ts +21 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/index.js +468 -48
- package/dist/index.js.map +3 -3
- package/dist/replay/hooks.d.ts +40 -2
- package/dist/replay/hooks.d.ts.map +1 -1
- package/dist/replay/privacy.d.ts +18 -1
- package/dist/replay/privacy.d.ts.map +1 -1
- package/dist/sdk_meta.d.ts +1 -1
- package/dist/talaria.browser.iife.js +468 -48
- package/dist/talaria.browser.iife.js.map +3 -3
- package/dist/types.d.ts +14 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/environment.d.ts +7 -0
- package/dist/utils/environment.d.ts.map +1 -0
- package/dist/utils/network_error.d.ts +13 -0
- package/dist/utils/network_error.d.ts.map +1 -0
- package/dist/utils/sdk_internal_noise.d.ts +6 -0
- package/dist/utils/sdk_internal_noise.d.ts.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -59,6 +59,8 @@ Every ingested event includes browser runtime tags (`browser.name`, `browser.ver
|
|
|
59
59
|
|
|
60
60
|
Optional init `tags` are merged into every captured event (per-call tags win on key conflict).
|
|
61
61
|
|
|
62
|
+
`environment` must resolve to a wire value: `production` | `staging` | `development`. Common aliases are accepted (`test`/`uat` → `staging`, `prod`/`live` → `production`, `dev`/`local` → `development`), matching the PHP SDK. Invalid values throw at `init`. Permanent `events/ingest` 4xx responses disable further capture for that page session so misconfig cannot spin forever.
|
|
63
|
+
|
|
62
64
|
## Script tag (IIFE)
|
|
63
65
|
|
|
64
66
|
For hosts without a bundler (e.g. Silverstripe `Requirements`):
|
|
@@ -172,8 +174,8 @@ Segment payloads are a **gzip-compressed JSON array** of rrweb events.
|
|
|
172
174
|
|
|
173
175
|
Custom rrweb events:
|
|
174
176
|
|
|
175
|
-
- `talaria-console` — console level + args (truncated)
|
|
176
|
-
- `talaria-network` — method,
|
|
177
|
+
- `talaria-console` — console level + message/args (truncated)
|
|
178
|
+
- `talaria-network` — method, sanitized URL (no query by default), status, duration, failure metadata (no bodies / no auth headers)
|
|
177
179
|
|
|
178
180
|
Privacy defaults: `maskAllInputs: true`, password fields masked, `[data-talaria-mask]` blocked.
|
|
179
181
|
|
|
@@ -183,17 +185,29 @@ By default `inlineStylesheet` is `false`: linked stylesheets stay as `href`s and
|
|
|
183
185
|
|
|
184
186
|
Set `inlineStylesheet: true` so same-origin stylesheet rules are embedded while the user is logged in. Cross-origin sheets without CORS still cannot be inlined (browser `cssRules` restriction).
|
|
185
187
|
|
|
186
|
-
### Failed HTTP requests → events
|
|
188
|
+
### Failed HTTP / network requests → events
|
|
189
|
+
|
|
190
|
+
By default, completed `fetch` / XHR responses with status **500–599** are sent as Talaria events (message like `HTTP 500: GET /api/...`).
|
|
191
|
+
|
|
192
|
+
Transport failures (CORS, offline, DNS — browser `TypeError: Failed to fetch`) are also promoted by default as:
|
|
193
|
+
|
|
194
|
+
`Network error: POST https://www.google-analytics.com/g/collect — TypeError: Failed to fetch`
|
|
195
|
+
|
|
196
|
+
**URL privacy:** network telemetry stores `origin + pathname` only (plus `hostname` / `pathname` fields). Query strings and fragments are stripped by default — analytics/ads URLs often carry `cid`, `sid`, `dl`, etc. Set `includeNetworkUrlQuery: true` to keep query params after sensitive-key redaction (`token`, `api_key`, …).
|
|
187
197
|
|
|
188
|
-
|
|
198
|
+
Replay `talaria-network` breadcrumbs include method, sanitized URL, status (when an HTTP response exists), duration, and on failures `errorName` / `errorMessage` / `aborted` / `failureKind`. Request/response bodies and auth headers are never captured.
|
|
189
199
|
|
|
190
200
|
```ts
|
|
191
201
|
Talaria.init({
|
|
192
202
|
dsn: 'https://api.example.com',
|
|
193
203
|
apiKey: 'tal_live_…',
|
|
194
204
|
environment: 'production',
|
|
195
|
-
// Default true
|
|
205
|
+
// Default true — HTTP status promotion
|
|
196
206
|
captureFailedRequests: true,
|
|
207
|
+
// Default true — CORS/offline/DNS fetch failures
|
|
208
|
+
captureNetworkErrors: true,
|
|
209
|
+
// Default false — do not store ?query on network URLs
|
|
210
|
+
includeNetworkUrlQuery: false,
|
|
197
211
|
// Default [[500, 599]]. CMS admin often wants 4xx too:
|
|
198
212
|
failedRequestStatusCodes: [[400, 599]],
|
|
199
213
|
// Extra URL substrings to skip (Talaria /events and /replays are always skipped)
|
|
@@ -201,7 +215,16 @@ Talaria.init({
|
|
|
201
215
|
});
|
|
202
216
|
```
|
|
203
217
|
|
|
204
|
-
|
|
218
|
+
`AbortError` is never promoted and is ignored by the global `unhandledrejection` handler. If a fetch failure is left unhandled after network-error promotion, the duplicate bare `TypeError` event is suppressed; if promotion is off, the exception is kept and correlated with the recent request URL/method/duration.
|
|
219
|
+
|
|
220
|
+
### Event timestamps
|
|
221
|
+
|
|
222
|
+
| Field | Meaning |
|
|
223
|
+
| --- | --- |
|
|
224
|
+
| `timestamp` | **Occurrence time** on the client (when capture began — before replay flush) |
|
|
225
|
+
| `createdAt` | **Ingest/storage time** on the server |
|
|
226
|
+
|
|
227
|
+
If replay upload runs before event ingest, `extra.sdk.queuedMs` records how long capture waited (ms). A large `createdAt - timestamp` gap is usually flush/queue delay or clock skew — not a wrong failure classification.
|
|
205
228
|
|
|
206
229
|
## Public API
|
|
207
230
|
|
package/dist/client.d.ts
CHANGED
|
@@ -36,6 +36,15 @@ export declare class TalariaClient {
|
|
|
36
36
|
private lastReplayCaptureFailure;
|
|
37
37
|
/** Cached once per init for event tags/extra. */
|
|
38
38
|
private browserContext;
|
|
39
|
+
/** Prevent ingest/replay failures from being re-captured via unhandledrejection. */
|
|
40
|
+
private capturing;
|
|
41
|
+
/**
|
|
42
|
+
* Set after a permanent events/ingest 4xx (bad env/auth/wire). Further
|
|
43
|
+
* captures no-op so we don't spin on retries or burn error-clip replay quota.
|
|
44
|
+
*/
|
|
45
|
+
private ingestDisabled;
|
|
46
|
+
/** Recent fetch/XHR transport failures for correlation + dedupe. */
|
|
47
|
+
private recentNetworkFailures;
|
|
39
48
|
init(options: TalariaInitOptions): void;
|
|
40
49
|
getReplayId(): string | null;
|
|
41
50
|
captureException(error: unknown, context?: CaptureContext): Promise<void>;
|
|
@@ -52,6 +61,11 @@ export declare class TalariaClient {
|
|
|
52
61
|
close(): Promise<void>;
|
|
53
62
|
private onRrwebEvent;
|
|
54
63
|
private capture;
|
|
64
|
+
/**
|
|
65
|
+
* Stop further event capture (and error-clip uploads) after a permanent
|
|
66
|
+
* events/ingest 4xx so misconfig cannot spin forever.
|
|
67
|
+
*/
|
|
68
|
+
private disableIngestAfterPermanentError;
|
|
55
69
|
private markUploadStarted;
|
|
56
70
|
private isPastMaxDuration;
|
|
57
71
|
private isPastErrorClipDeadline;
|
|
@@ -90,6 +104,13 @@ export declare class TalariaClient {
|
|
|
90
104
|
*/
|
|
91
105
|
private abortUnusableClip;
|
|
92
106
|
private stopUploadingAfterLimit;
|
|
107
|
+
private pruneRecentNetworkFailures;
|
|
108
|
+
private rememberNetworkFailure;
|
|
109
|
+
/**
|
|
110
|
+
* Find a recent transport failure for a bare fetch TypeError.
|
|
111
|
+
* Consumes the entry so a later duplicate path cannot reuse it.
|
|
112
|
+
*/
|
|
113
|
+
private consumeCorrelatedNetworkFailure;
|
|
93
114
|
private installGlobalHandlers;
|
|
94
115
|
private enqueueUpload;
|
|
95
116
|
private ensureStarted;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EACb,kBAAkB,EACnB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|