@proappstore/sdk 1.16.80 → 1.16.82
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 +34 -1
- package/dist/actions.d.ts +31 -6
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +97 -23
- package/dist/actions.js.map +1 -1
- package/dist/auth.d.ts +8 -2
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +14 -3
- package/dist/auth.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -4
- package/dist/index.js.map +1 -1
- package/dist/logs.d.ts +112 -6
- package/dist/logs.d.ts.map +1 -1
- package/dist/logs.js +362 -32
- package/dist/logs.js.map +1 -1
- package/dist/rooms.d.ts +21 -2
- package/dist/rooms.d.ts.map +1 -1
- package/dist/rooms.js +53 -3
- package/dist/rooms.js.map +1 -1
- package/dist/sdk-version.d.ts +7 -0
- package/dist/sdk-version.d.ts.map +1 -0
- package/dist/sdk-version.js +7 -0
- package/dist/sdk-version.js.map +1 -0
- package/dist/shell-resilience.d.ts.map +1 -1
- package/dist/shell-resilience.js +3 -7
- package/dist/shell-resilience.js.map +1 -1
- package/dist/telemetry-transport.d.ts +17 -0
- package/dist/telemetry-transport.d.ts.map +1 -1
- package/dist/telemetry-transport.js +23 -9
- package/dist/telemetry-transport.js.map +1 -1
- package/dist/trace.d.ts +56 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +69 -0
- package/dist/trace.js.map +1 -0
- package/package.json +2 -2
package/dist/logs.js
CHANGED
|
@@ -15,17 +15,44 @@
|
|
|
15
15
|
* SSR-safe.
|
|
16
16
|
* - **Silent.** No throw path, ever. A logger that breaks the app it observes is
|
|
17
17
|
* worse than no logger.
|
|
18
|
-
* - **Backs off instead of retrying.** The server answers 202 when an
|
|
19
|
-
* its budget;
|
|
18
|
+
* - **Backs off instead of retrying into a flood.** The server answers 202 when an
|
|
19
|
+
* app is over its budget; the SDK goes quiet (see `COOLDOWN_MS`). Only a
|
|
20
|
+
* transient failure (network, timeout, 5xx) is retried, a few times with
|
|
21
|
+
* backoff and within a TTL (#392); offline, the queue waits for `online`.
|
|
22
|
+
* - **Best effort.** The queue is bounded and lives in memory: a closed tab, a
|
|
23
|
+
* long outage or an over-budget app loses entries. `health()` says how many.
|
|
20
24
|
* - **Not a replacement for usage telemetry.** `app.usage` is unchanged; the two
|
|
21
25
|
* share only the transport.
|
|
22
26
|
*/
|
|
23
|
-
import {
|
|
27
|
+
import { SDK_VERSION } from './sdk-version.js';
|
|
28
|
+
import { sendTelemetry } from './telemetry-transport.js';
|
|
24
29
|
const AUTH_CATEGORIES = new Set(['auth.session_lost', 'auth.hydration_failure']);
|
|
25
30
|
const AUTH_REASONS = new Set(['api_401', 'explicit_sign_out', 'legacy_session_rejected', 'http_error', 'network_error']);
|
|
26
31
|
const AUTH_PHASES = new Set(['api_request', 'cookie_hydration', 'legacy_hydration', 'explicit_sign_out']);
|
|
27
32
|
const AUTH_ROUTES = new Set(['platform.api', 'auth.me', 'auth.logout']);
|
|
28
33
|
const CORRELATION_ID_RE = /^[a-f0-9]{32}$/i;
|
|
34
|
+
/** Envelope version on every entry; the ingest allowlist keys on it. */
|
|
35
|
+
export const LOG_ENVELOPE_VERSION = 1;
|
|
36
|
+
const SPAN_ID_RE = /^[a-f0-9]{16}$/i;
|
|
37
|
+
const CODE_RE = /^[A-Za-z0-9._:-]{1,64}$/;
|
|
38
|
+
const MAX_DURATION_MS = 60 * 60 * 1000;
|
|
39
|
+
function envelopeFields(ctx) {
|
|
40
|
+
if (!ctx)
|
|
41
|
+
return {};
|
|
42
|
+
const out = {};
|
|
43
|
+
if (typeof ctx.spanId === 'string' && SPAN_ID_RE.test(ctx.spanId) && !/^0+$/.test(ctx.spanId))
|
|
44
|
+
out.spanId = ctx.spanId.toLowerCase();
|
|
45
|
+
if (typeof ctx.operation === 'string' && CODE_RE.test(ctx.operation))
|
|
46
|
+
out.operation = ctx.operation;
|
|
47
|
+
if (ctx.result === 'ok' || ctx.result === 'error')
|
|
48
|
+
out.result = ctx.result;
|
|
49
|
+
if (typeof ctx.errorCode === 'string' && CODE_RE.test(ctx.errorCode))
|
|
50
|
+
out.errorCode = ctx.errorCode;
|
|
51
|
+
if (Number.isInteger(ctx.durationMs) && ctx.durationMs >= 0 && ctx.durationMs <= MAX_DURATION_MS)
|
|
52
|
+
out.durationMs = ctx.durationMs;
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
const BREADCRUMB_CATEGORIES = new Set(['navigation', 'ui', 'network', 'room', 'auth', 'action']);
|
|
29
56
|
const FLUSH_INTERVAL_MS = 10_000;
|
|
30
57
|
/** Matches the server's per-request cap; a full queue flushes immediately. */
|
|
31
58
|
const MAX_BATCH = 100;
|
|
@@ -34,6 +61,23 @@ const MAX_QUEUE = 200;
|
|
|
34
61
|
/** How long to stay quiet after the server says we are over budget. */
|
|
35
62
|
const COOLDOWN_MS = 60_000;
|
|
36
63
|
const MESSAGE_MAX = 4096;
|
|
64
|
+
/** Backoff before each retry of a batch that failed transiently. */
|
|
65
|
+
const RETRY_DELAYS_MS = [1_000, 2_000, 4_000];
|
|
66
|
+
/** A batch still failing this long after its first failure is dropped, not retried. */
|
|
67
|
+
const RETRY_TTL_MS = 60_000;
|
|
68
|
+
const MAX_BREADCRUMBS = 50;
|
|
69
|
+
/** The most recent breadcrumbs attached to an error entry. */
|
|
70
|
+
const ATTACHED_BREADCRUMBS = 20;
|
|
71
|
+
const BREADCRUMB_MESSAGE_MAX = 200;
|
|
72
|
+
const BREADCRUMB_VALUE_MAX = 120;
|
|
73
|
+
const BREADCRUMB_DATA_KEYS = 8;
|
|
74
|
+
/** An identical entry among the last few queued is folded into it (`repeats`). */
|
|
75
|
+
const DEDUPE_WINDOW = 5;
|
|
76
|
+
/** Ingest keeps `data` up to 4 KB of JSON; leave room for its redaction. */
|
|
77
|
+
const DATA_BUDGET = 3500;
|
|
78
|
+
const STACK_MAX = 2500;
|
|
79
|
+
const MAX_CAUSE_DEPTH = 5;
|
|
80
|
+
const CAUSE_LINES = 4;
|
|
37
81
|
const CLIENT_ID_KEY = 'pas:client-id';
|
|
38
82
|
const LEVEL_ORDER = { debug: 0, info: 1, warn: 2, error: 3 };
|
|
39
83
|
/**
|
|
@@ -90,8 +134,7 @@ export function readOrCreateClientId() {
|
|
|
90
134
|
return null;
|
|
91
135
|
}
|
|
92
136
|
}
|
|
93
|
-
|
|
94
|
-
export function describeError(value) {
|
|
137
|
+
function describeOne(value) {
|
|
95
138
|
if (value instanceof Error) {
|
|
96
139
|
return { message: `${value.name}: ${value.message}`, stack: value.stack ?? undefined };
|
|
97
140
|
}
|
|
@@ -104,6 +147,61 @@ export function describeError(value) {
|
|
|
104
147
|
return { message: String(value) };
|
|
105
148
|
}
|
|
106
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Serialize an unknown thrown value into a message + stack. An Error's `cause`
|
|
152
|
+
* chain (#392, up to five levels) is appended to the stack as `Caused by:`
|
|
153
|
+
* sections, so a wrapped failure keeps its root. Bounded; never throws.
|
|
154
|
+
*/
|
|
155
|
+
export function describeError(value) {
|
|
156
|
+
const head = describeOne(value);
|
|
157
|
+
const causes = [];
|
|
158
|
+
try {
|
|
159
|
+
const seen = new Set([value]);
|
|
160
|
+
let cause = value instanceof Error ? value.cause : undefined;
|
|
161
|
+
for (let depth = 0; cause !== undefined && cause !== null && depth < MAX_CAUSE_DEPTH && !seen.has(cause); depth++) {
|
|
162
|
+
seen.add(cause);
|
|
163
|
+
const described = describeOne(cause);
|
|
164
|
+
// The message and the top frames: enough to place the root, small enough to keep every level.
|
|
165
|
+
causes.push(`Caused by: ${(described.stack ?? described.message).split('\n').slice(0, CAUSE_LINES).join('\n')}`);
|
|
166
|
+
cause = cause instanceof Error ? cause.cause : undefined;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
// A hostile `cause` getter: keep what we have.
|
|
171
|
+
}
|
|
172
|
+
if (!head.stack && causes.length === 0)
|
|
173
|
+
return { message: head.message };
|
|
174
|
+
const tail = causes.join('\n').slice(0, STACK_MAX);
|
|
175
|
+
// The outer stack gives way first, so the root cause always survives the cap.
|
|
176
|
+
const outer = head.stack ? head.stack.slice(0, Math.max(0, STACK_MAX - tail.length - 1)) : '';
|
|
177
|
+
return { message: head.message, stack: [outer, tail].filter(Boolean).join('\n') };
|
|
178
|
+
}
|
|
179
|
+
/** Category of a render error a React error boundary caught. */
|
|
180
|
+
export const REACT_ERROR_CATEGORY = 'react.error-boundary';
|
|
181
|
+
/**
|
|
182
|
+
* The entry for a render error a React error boundary caught: the message and
|
|
183
|
+
* stack (with causes), the component stack and the path. Shared by ProShell's
|
|
184
|
+
* boundary and {@link Logs.captureReactError}, so both read the same.
|
|
185
|
+
*/
|
|
186
|
+
export function describeReactError(error, componentStack) {
|
|
187
|
+
const described = describeError(error);
|
|
188
|
+
return {
|
|
189
|
+
message: described.message,
|
|
190
|
+
data: {
|
|
191
|
+
stack: described.stack,
|
|
192
|
+
componentStack: componentStack ? componentStack.slice(0, STACK_MAX) : undefined,
|
|
193
|
+
path: typeof window === 'undefined' ? undefined : window.location?.pathname,
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function isOffline() {
|
|
198
|
+
return typeof navigator !== 'undefined' && navigator.onLine === false;
|
|
199
|
+
}
|
|
200
|
+
function isPlainObject(value) {
|
|
201
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
202
|
+
}
|
|
203
|
+
/** The logger that owns auto-capture for each app id, so a second init does not double it. */
|
|
204
|
+
const activeLoggers = new Map();
|
|
107
205
|
export class Logs {
|
|
108
206
|
appId;
|
|
109
207
|
apiBase;
|
|
@@ -123,6 +221,18 @@ export class Logs {
|
|
|
123
221
|
/** Guards against an error raised inside our own handler re-entering. */
|
|
124
222
|
capturing = false;
|
|
125
223
|
minLevel;
|
|
224
|
+
onOnline = null;
|
|
225
|
+
/** In-memory only, never persisted (#392). */
|
|
226
|
+
breadcrumbs = [];
|
|
227
|
+
/** Errors already recorded, so a caught-then-rethrown error is one event. */
|
|
228
|
+
reported = new WeakSet();
|
|
229
|
+
stats = { sent: 0, dropped: 0, duplicates: 0 };
|
|
230
|
+
/** A non-unload send is in flight: the next one waits for it. */
|
|
231
|
+
sending = false;
|
|
232
|
+
retryAttempt = 0;
|
|
233
|
+
retryStartedAt = 0;
|
|
234
|
+
retryAt = 0;
|
|
235
|
+
retryTimer = null;
|
|
126
236
|
constructor(appId, apiBase, auth, options = {}) {
|
|
127
237
|
this.appId = appId;
|
|
128
238
|
this.apiBase = apiBase;
|
|
@@ -134,9 +244,19 @@ export class Logs {
|
|
|
134
244
|
start() {
|
|
135
245
|
if (this.running || !hasBrowser())
|
|
136
246
|
return;
|
|
247
|
+
// A second init for the same app (StrictMode, HMR, a re-created instance)
|
|
248
|
+
// takes over auto-capture rather than registering every handler twice.
|
|
249
|
+
const previous = activeLoggers.get(this.appId);
|
|
250
|
+
if (previous && previous !== this) {
|
|
251
|
+
previous.flush();
|
|
252
|
+
previous.stop();
|
|
253
|
+
}
|
|
254
|
+
activeLoggers.set(this.appId, this);
|
|
137
255
|
this.running = true;
|
|
138
256
|
this.clientId = readOrCreateClientId();
|
|
139
257
|
this.onError = (event) => {
|
|
258
|
+
if (this.alreadyReported(event.error))
|
|
259
|
+
return;
|
|
140
260
|
const described = event.error
|
|
141
261
|
? describeError(event.error)
|
|
142
262
|
: { message: event.message || 'unknown error' };
|
|
@@ -148,6 +268,8 @@ export class Logs {
|
|
|
148
268
|
};
|
|
149
269
|
window.addEventListener('error', this.onError);
|
|
150
270
|
this.onRejection = (event) => {
|
|
271
|
+
if (this.alreadyReported(event.reason))
|
|
272
|
+
return;
|
|
151
273
|
const described = describeError(event.reason);
|
|
152
274
|
this.capture('error', 'unhandledrejection', described.message, {
|
|
153
275
|
stack: described.stack,
|
|
@@ -156,6 +278,12 @@ export class Logs {
|
|
|
156
278
|
window.addEventListener('unhandledrejection', this.onRejection);
|
|
157
279
|
this.onPageHide = () => this.flush();
|
|
158
280
|
window.addEventListener('pagehide', this.onPageHide);
|
|
281
|
+
// Offline, `send` holds the queue; back online, deliver it now.
|
|
282
|
+
this.onOnline = () => {
|
|
283
|
+
this.retryAt = 0;
|
|
284
|
+
void this.send(false);
|
|
285
|
+
};
|
|
286
|
+
window.addEventListener('online', this.onOnline);
|
|
159
287
|
this.timer = setInterval(() => {
|
|
160
288
|
void this.send(false);
|
|
161
289
|
}, FLUSH_INTERVAL_MS);
|
|
@@ -165,10 +293,16 @@ export class Logs {
|
|
|
165
293
|
if (!this.running)
|
|
166
294
|
return;
|
|
167
295
|
this.running = false;
|
|
296
|
+
if (activeLoggers.get(this.appId) === this)
|
|
297
|
+
activeLoggers.delete(this.appId);
|
|
168
298
|
if (this.timer) {
|
|
169
299
|
clearInterval(this.timer);
|
|
170
300
|
this.timer = null;
|
|
171
301
|
}
|
|
302
|
+
if (this.retryTimer) {
|
|
303
|
+
clearTimeout(this.retryTimer);
|
|
304
|
+
this.retryTimer = null;
|
|
305
|
+
}
|
|
172
306
|
if (hasBrowser()) {
|
|
173
307
|
if (this.onError)
|
|
174
308
|
window.removeEventListener('error', this.onError);
|
|
@@ -176,10 +310,13 @@ export class Logs {
|
|
|
176
310
|
window.removeEventListener('unhandledrejection', this.onRejection);
|
|
177
311
|
if (this.onPageHide)
|
|
178
312
|
window.removeEventListener('pagehide', this.onPageHide);
|
|
313
|
+
if (this.onOnline)
|
|
314
|
+
window.removeEventListener('online', this.onOnline);
|
|
179
315
|
}
|
|
180
316
|
this.onError = null;
|
|
181
317
|
this.onRejection = null;
|
|
182
318
|
this.onPageHide = null;
|
|
319
|
+
this.onOnline = null;
|
|
183
320
|
}
|
|
184
321
|
debug(message, data) {
|
|
185
322
|
this.capture('debug', 'app', message, data);
|
|
@@ -223,43 +360,106 @@ export class Logs {
|
|
|
223
360
|
const message = event.category === 'auth.session_lost'
|
|
224
361
|
? 'PAS session was invalidated'
|
|
225
362
|
: 'PAS session hydration could not establish validity';
|
|
226
|
-
this.
|
|
363
|
+
this.capture('warn', event.category, message, data, { traceId: event.correlationId });
|
|
227
364
|
}
|
|
228
365
|
/** Number of entries waiting to be sent. Exposed for tests and diagnostics. */
|
|
229
366
|
get pending() {
|
|
230
367
|
return this.queue.length;
|
|
231
368
|
}
|
|
369
|
+
/** Delivery health: queued, sent and dropped entries, breadcrumbs, backpressure. */
|
|
370
|
+
health() {
|
|
371
|
+
return {
|
|
372
|
+
queued: this.queue.length,
|
|
373
|
+
sent: this.stats.sent,
|
|
374
|
+
dropped: this.stats.dropped,
|
|
375
|
+
duplicates: this.stats.duplicates,
|
|
376
|
+
breadcrumbs: this.breadcrumbs.length,
|
|
377
|
+
disabled: this.disabled,
|
|
378
|
+
quietUntil: this.quietUntil > Date.now() ? this.quietUntil : null,
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Record a breadcrumb (#392): a short, redacted note of what happened before a
|
|
383
|
+
* failure. Kept in a bounded in-memory buffer (the newest 50) and attached to
|
|
384
|
+
* the next error entries; never persisted and never sent on its own. Only the
|
|
385
|
+
* listed categories are kept, and `data` keeps up to eight primitive values —
|
|
386
|
+
* do not pass form text, DOM content, tokens or user data.
|
|
387
|
+
*/
|
|
388
|
+
addBreadcrumb(category, message, data) {
|
|
389
|
+
try {
|
|
390
|
+
if (!BREADCRUMB_CATEGORIES.has(category))
|
|
391
|
+
return;
|
|
392
|
+
const crumb = { ts: Date.now(), category, message: redactClient(String(message)).slice(0, BREADCRUMB_MESSAGE_MAX) };
|
|
393
|
+
if (isPlainObject(data)) {
|
|
394
|
+
const clean = {};
|
|
395
|
+
for (const key of Object.keys(data).slice(0, BREADCRUMB_DATA_KEYS)) {
|
|
396
|
+
const value = data[key];
|
|
397
|
+
if (typeof value === 'string')
|
|
398
|
+
clean[key] = redactClient(value).slice(0, BREADCRUMB_VALUE_MAX);
|
|
399
|
+
else if ((typeof value === 'number' && Number.isFinite(value)) || typeof value === 'boolean' || value === null)
|
|
400
|
+
clean[key] = value;
|
|
401
|
+
}
|
|
402
|
+
if (Object.keys(clean).length)
|
|
403
|
+
crumb.data = clean;
|
|
404
|
+
}
|
|
405
|
+
this.breadcrumbs.push(crumb);
|
|
406
|
+
if (this.breadcrumbs.length > MAX_BREADCRUMBS)
|
|
407
|
+
this.breadcrumbs.splice(0, this.breadcrumbs.length - MAX_BREADCRUMBS);
|
|
408
|
+
}
|
|
409
|
+
catch {
|
|
410
|
+
// Never let capture throw into app code.
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
/** Forget every breadcrumb. The SDK calls this when the signed-in user changes. */
|
|
414
|
+
clearBreadcrumbs() {
|
|
415
|
+
this.breadcrumbs = [];
|
|
416
|
+
}
|
|
232
417
|
/**
|
|
233
418
|
* Queue one entry.
|
|
234
419
|
*
|
|
235
420
|
* Public so app code can record its own categories (`app.logs.capture('warn',
|
|
236
421
|
* 'checkout', ...)`), and so SDK primitives can report their own failures
|
|
237
|
-
* (platform#106's client half) without another queue.
|
|
422
|
+
* (platform#106's client half) without another queue. `context` (#390) joins
|
|
423
|
+
* the entry to a request: pass the trace and span ids the call was sent with.
|
|
238
424
|
*/
|
|
239
|
-
capture(level, category, message, data) {
|
|
240
|
-
this.captureWithTrace(level, category, message, data);
|
|
241
|
-
}
|
|
242
|
-
captureWithTrace(level, category, message, data, traceId) {
|
|
425
|
+
capture(level, category, message, data, context) {
|
|
243
426
|
if (this.disabled || this.capturing)
|
|
244
427
|
return;
|
|
245
428
|
if (LEVEL_ORDER[level] < LEVEL_ORDER[this.minLevel])
|
|
246
429
|
return;
|
|
247
430
|
this.capturing = true;
|
|
248
431
|
try {
|
|
432
|
+
const redactedMessage = redactClient(String(message)).slice(0, MESSAGE_MAX);
|
|
433
|
+
// An error loop repeats one fault: fold it into the queued entry. Not for
|
|
434
|
+
// request-correlated entries — each failed call keeps its own trace.
|
|
435
|
+
if (!context?.spanId) {
|
|
436
|
+
const twin = this.queue.slice(-DEDUPE_WINDOW).find((e) => !e.spanId && e.level === level && e.category === category && e.message === redactedMessage);
|
|
437
|
+
if (twin && (twin.data === undefined || isPlainObject(twin.data))) {
|
|
438
|
+
const prior = isPlainObject(twin.data) && typeof twin.data.repeats === 'number' ? twin.data.repeats : 1;
|
|
439
|
+
twin.data = { ...twin.data, repeats: prior + 1 };
|
|
440
|
+
this.stats.duplicates++;
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
let payload = data === undefined ? undefined : this.safeData(data);
|
|
445
|
+
if (level === 'error')
|
|
446
|
+
payload = this.withBreadcrumbs(payload);
|
|
249
447
|
const entry = {
|
|
250
448
|
ts: Date.now(),
|
|
251
449
|
level,
|
|
252
450
|
category,
|
|
253
|
-
message:
|
|
254
|
-
data:
|
|
451
|
+
message: redactedMessage,
|
|
452
|
+
data: payload,
|
|
255
453
|
build: this.options.build,
|
|
256
|
-
traceId: traceId
|
|
454
|
+
traceId: typeof context?.traceId === 'string' && CORRELATION_ID_RE.test(context.traceId) && !/^0+$/.test(context.traceId)
|
|
455
|
+
? context.traceId.toLowerCase()
|
|
456
|
+
: this.newTraceId(),
|
|
457
|
+
v: LOG_ENVELOPE_VERSION,
|
|
458
|
+
sdkVersion: SDK_VERSION,
|
|
459
|
+
...envelopeFields(context),
|
|
257
460
|
};
|
|
258
461
|
this.queue.push(entry);
|
|
259
|
-
|
|
260
|
-
// the same fault, while the first entries include what preceded it.
|
|
261
|
-
if (this.queue.length > MAX_QUEUE)
|
|
262
|
-
this.queue.splice(0, this.queue.length - MAX_QUEUE);
|
|
462
|
+
this.trimQueue();
|
|
263
463
|
if (this.queue.length >= MAX_BATCH)
|
|
264
464
|
void this.send(false);
|
|
265
465
|
}
|
|
@@ -270,6 +470,43 @@ export class Logs {
|
|
|
270
470
|
this.capturing = false;
|
|
271
471
|
}
|
|
272
472
|
}
|
|
473
|
+
/**
|
|
474
|
+
* Record a thrown value as an `error` entry: its name, message and stack
|
|
475
|
+
* (redacted like every entry), plus the request context when there is one.
|
|
476
|
+
* Category defaults to `exception`.
|
|
477
|
+
*/
|
|
478
|
+
captureException(error, context) {
|
|
479
|
+
try {
|
|
480
|
+
if (this.alreadyReported(error))
|
|
481
|
+
return;
|
|
482
|
+
this.markReported(error);
|
|
483
|
+
const described = describeError(error);
|
|
484
|
+
const { category, ...rest } = context ?? {};
|
|
485
|
+
this.capture('error', category ?? 'exception', described.message, described.stack ? { stack: described.stack } : undefined, { result: 'error', ...rest });
|
|
486
|
+
}
|
|
487
|
+
catch {
|
|
488
|
+
// Never let capture throw into app code.
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Record a render error your own React error boundary caught (#392). React
|
|
493
|
+
* does not pass a caught error to `window.onerror`, so call this from
|
|
494
|
+
* `componentDidCatch(error, info)`: `app.logs.captureReactError(error,
|
|
495
|
+
* info.componentStack)`. Same entry as ProShell's boundary (category
|
|
496
|
+
* `react.error-boundary`, stack with causes, component stack, path).
|
|
497
|
+
*/
|
|
498
|
+
captureReactError(error, componentStack) {
|
|
499
|
+
try {
|
|
500
|
+
if (this.alreadyReported(error))
|
|
501
|
+
return;
|
|
502
|
+
this.markReported(error);
|
|
503
|
+
const { message, data } = describeReactError(error, componentStack);
|
|
504
|
+
this.capture('error', REACT_ERROR_CATEGORY, message, data, { result: 'error' });
|
|
505
|
+
}
|
|
506
|
+
catch {
|
|
507
|
+
// Never let capture throw into app code.
|
|
508
|
+
}
|
|
509
|
+
}
|
|
273
510
|
/** Fire-and-forget flush, safe on the unload path. */
|
|
274
511
|
flush() {
|
|
275
512
|
void this.send(true);
|
|
@@ -278,6 +515,35 @@ export class Logs {
|
|
|
278
515
|
async flushAsync() {
|
|
279
516
|
await this.send(false);
|
|
280
517
|
}
|
|
518
|
+
alreadyReported(error) {
|
|
519
|
+
return error !== null && typeof error === 'object' && this.reported.has(error);
|
|
520
|
+
}
|
|
521
|
+
markReported(error) {
|
|
522
|
+
if (error !== null && typeof error === 'object')
|
|
523
|
+
this.reported.add(error);
|
|
524
|
+
}
|
|
525
|
+
/** The newest breadcrumbs that fit the ingest size budget, on an object payload only. */
|
|
526
|
+
withBreadcrumbs(payload) {
|
|
527
|
+
if (this.breadcrumbs.length === 0 || (payload !== undefined && !isPlainObject(payload)))
|
|
528
|
+
return payload;
|
|
529
|
+
const recent = this.breadcrumbs.slice(-ATTACHED_BREADCRUMBS);
|
|
530
|
+
while (recent.length) {
|
|
531
|
+
const candidate = { ...payload, breadcrumbs: recent };
|
|
532
|
+
if (JSON.stringify(candidate).length <= DATA_BUDGET)
|
|
533
|
+
return candidate;
|
|
534
|
+
recent.shift();
|
|
535
|
+
}
|
|
536
|
+
return payload;
|
|
537
|
+
}
|
|
538
|
+
/** Drop the OLDEST on overflow: during a loop the newest entries are all the
|
|
539
|
+
* same fault, while the first entries include what preceded it. */
|
|
540
|
+
trimQueue() {
|
|
541
|
+
if (this.queue.length <= MAX_QUEUE)
|
|
542
|
+
return;
|
|
543
|
+
const excess = this.queue.length - MAX_QUEUE;
|
|
544
|
+
this.queue.splice(0, excess);
|
|
545
|
+
this.stats.dropped += excess;
|
|
546
|
+
}
|
|
281
547
|
safeData(data) {
|
|
282
548
|
try {
|
|
283
549
|
return JSON.parse(redactClient(JSON.stringify(data) ?? 'null'));
|
|
@@ -305,34 +571,98 @@ export class Logs {
|
|
|
305
571
|
return;
|
|
306
572
|
if (Date.now() < this.quietUntil)
|
|
307
573
|
return;
|
|
574
|
+
// Offline: keep the queue; the `online` listener resumes.
|
|
575
|
+
if (isOffline())
|
|
576
|
+
return;
|
|
577
|
+
// The unload path goes regardless: it is the last chance.
|
|
578
|
+
if (!keepalive && (this.sending || Date.now() < this.retryAt))
|
|
579
|
+
return;
|
|
308
580
|
const batch = this.queue.slice(0, MAX_BATCH);
|
|
309
|
-
// Remove before sending: a retry loop is worse than losing a log line, and
|
|
310
|
-
// the entries most likely to be dropped are duplicates of a fault we already
|
|
311
|
-
// reported.
|
|
312
581
|
this.queue = this.queue.slice(batch.length);
|
|
313
582
|
const body = JSON.stringify({
|
|
314
583
|
entries: batch,
|
|
315
584
|
...(this.clientId ? { clientId: this.clientId } : {}),
|
|
316
585
|
});
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
586
|
+
if (!keepalive)
|
|
587
|
+
this.sending = true;
|
|
588
|
+
try {
|
|
589
|
+
const result = await sendTelemetry(this.auth, this.apiBase, `/v1/apps/${this.appId}/logs`, body, {
|
|
590
|
+
keepalive,
|
|
591
|
+
// A beacon cannot carry the bearer token, so only use it where the
|
|
592
|
+
// same-origin cookie speaks for us. In legacy-bearer mode a keepalive
|
|
593
|
+
// fetch still attaches the token and still survives unload in practice.
|
|
594
|
+
beacon: this.auth.usesPlatformCookie === true,
|
|
595
|
+
});
|
|
596
|
+
this.settle(batch, result, keepalive);
|
|
597
|
+
}
|
|
598
|
+
finally {
|
|
599
|
+
if (!keepalive)
|
|
600
|
+
this.sending = false;
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
settle(batch, result, keepalive) {
|
|
604
|
+
if (result.kind === 'beacon') {
|
|
605
|
+
this.stats.sent += batch.length;
|
|
606
|
+
return;
|
|
607
|
+
}
|
|
608
|
+
if (result.kind === 'failed' || result.response.status >= 500) {
|
|
609
|
+
this.retryLater(batch, keepalive);
|
|
325
610
|
return;
|
|
326
|
-
|
|
611
|
+
}
|
|
612
|
+
const { status } = result.response;
|
|
613
|
+
if (status === 404) {
|
|
327
614
|
// Unknown app id — a misconfigured `appId` will never succeed, so stop
|
|
328
615
|
// rather than retry every ten seconds for the life of the page.
|
|
329
616
|
this.disabled = true;
|
|
617
|
+
this.stats.dropped += batch.length + this.queue.length;
|
|
618
|
+
this.queue = [];
|
|
330
619
|
return;
|
|
331
620
|
}
|
|
332
|
-
if (
|
|
333
|
-
// Over budget. Go quiet; the server is still counting the spike
|
|
621
|
+
if (status === 202 || status === 429) {
|
|
622
|
+
// Over budget. Go quiet; the server is still counting the spike, and the
|
|
623
|
+
// batch was not stored.
|
|
334
624
|
this.quietUntil = Date.now() + COOLDOWN_MS;
|
|
625
|
+
this.stats.dropped += batch.length;
|
|
626
|
+
return;
|
|
335
627
|
}
|
|
628
|
+
this.resetRetry();
|
|
629
|
+
if (result.response.ok)
|
|
630
|
+
this.stats.sent += batch.length;
|
|
631
|
+
else
|
|
632
|
+
this.stats.dropped += batch.length; // a 4xx will not succeed on retry
|
|
633
|
+
}
|
|
634
|
+
/**
|
|
635
|
+
* A transient failure: put the batch back and retry with backoff, a bounded
|
|
636
|
+
* number of times within {@link RETRY_TTL_MS}. Offline is a pause, not a
|
|
637
|
+
* failed attempt. One timer at most, so a failing endpoint cannot cause a
|
|
638
|
+
* retry storm, and the transport never logs, so it cannot recurse.
|
|
639
|
+
*/
|
|
640
|
+
retryLater(batch, keepalive) {
|
|
641
|
+
if (!keepalive && !isOffline()) {
|
|
642
|
+
const now = Date.now();
|
|
643
|
+
if (this.retryAttempt === 0)
|
|
644
|
+
this.retryStartedAt = now;
|
|
645
|
+
if (this.retryAttempt >= RETRY_DELAYS_MS.length || now - this.retryStartedAt > RETRY_TTL_MS) {
|
|
646
|
+
this.stats.dropped += batch.length;
|
|
647
|
+
this.resetRetry();
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
650
|
+
const delay = RETRY_DELAYS_MS[this.retryAttempt++];
|
|
651
|
+
this.retryAt = now + delay;
|
|
652
|
+
if (this.running && !this.retryTimer) {
|
|
653
|
+
this.retryTimer = setTimeout(() => {
|
|
654
|
+
this.retryTimer = null;
|
|
655
|
+
void this.send(false);
|
|
656
|
+
}, delay);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
this.queue = batch.concat(this.queue);
|
|
660
|
+
this.trimQueue();
|
|
661
|
+
}
|
|
662
|
+
resetRetry() {
|
|
663
|
+
this.retryAttempt = 0;
|
|
664
|
+
this.retryStartedAt = 0;
|
|
665
|
+
this.retryAt = 0;
|
|
336
666
|
}
|
|
337
667
|
}
|
|
338
668
|
//# sourceMappingURL=logs.js.map
|
package/dist/logs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
|