kinetex 1.2.0 → 1.4.0
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 +1164 -453
- package/dist/browser/kinetex.esm.js +38 -22
- package/dist/browser/kinetex.js +3127 -715
- package/dist/browser/kinetex.min.js +38 -22
- package/dist/cjs/aws-sigv4.js +137 -20
- package/dist/cjs/cache.js +101 -21
- package/dist/cjs/circuit-breaker.js +69 -7
- package/dist/cjs/client.js +838 -191
- package/dist/cjs/cookie-parser.js +110 -9
- package/dist/cjs/cookie-store.js +141 -36
- package/dist/cjs/core.js +501 -63
- package/dist/cjs/dedup.js +58 -18
- package/dist/cjs/digest.js +185 -23
- package/dist/cjs/graphql.js +164 -24
- package/dist/cjs/headers.js +362 -48
- package/dist/cjs/interceptors.js +285 -29
- package/dist/cjs/lifecycle.js +89 -40
- package/dist/cjs/logging.js +169 -16
- package/dist/cjs/mod.js +3 -2
- package/dist/cjs/pagination.js +261 -28
- package/dist/cjs/progress.js +282 -52
- package/dist/cjs/proxy.js +412 -0
- package/dist/cjs/response.js +316 -47
- package/dist/cjs/socks5.js +167 -36
- package/dist/cjs/sse.js +201 -34
- package/dist/cjs/url.js +191 -45
- package/dist/cjs/utils.js +222 -48
- package/dist/cjs/worker.js +6 -6
- package/dist/cjs/ws.js +32 -16
- package/dist/esm/aws-sigv4.js +137 -20
- package/dist/esm/aws-sigv4.js.map +1 -1
- package/dist/esm/cache.js +101 -21
- package/dist/esm/cache.js.map +1 -1
- package/dist/esm/circuit-breaker.js +69 -7
- package/dist/esm/circuit-breaker.js.map +1 -1
- package/dist/esm/client.js +838 -191
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/cookie-parser.js +110 -9
- package/dist/esm/cookie-parser.js.map +1 -1
- package/dist/esm/cookie-store.js +141 -36
- package/dist/esm/cookie-store.js.map +1 -1
- package/dist/esm/core.js +501 -63
- package/dist/esm/core.js.map +1 -1
- package/dist/esm/dedup.js +58 -18
- package/dist/esm/dedup.js.map +1 -1
- package/dist/esm/digest.js +185 -23
- package/dist/esm/digest.js.map +1 -1
- package/dist/esm/graphql.js +164 -24
- package/dist/esm/graphql.js.map +1 -1
- package/dist/esm/headers.js +362 -48
- package/dist/esm/headers.js.map +1 -1
- package/dist/esm/interceptors.js +285 -29
- package/dist/esm/interceptors.js.map +1 -1
- package/dist/esm/lifecycle.js +89 -40
- package/dist/esm/lifecycle.js.map +1 -1
- package/dist/esm/logging.js +169 -16
- package/dist/esm/logging.js.map +1 -1
- package/dist/esm/mod.js +3 -2
- package/dist/esm/mod.js.map +1 -1
- package/dist/esm/pagination.js +261 -28
- package/dist/esm/pagination.js.map +1 -1
- package/dist/esm/progress.js +282 -52
- package/dist/esm/progress.js.map +1 -1
- package/dist/esm/proxy.js +413 -0
- package/dist/esm/proxy.js.map +1 -0
- package/dist/esm/response.js +316 -47
- package/dist/esm/response.js.map +1 -1
- package/dist/esm/socks5.js +167 -36
- package/dist/esm/socks5.js.map +1 -1
- package/dist/esm/sse.js +201 -34
- package/dist/esm/sse.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/url.js +191 -45
- package/dist/esm/url.js.map +1 -1
- package/dist/esm/utils.js +222 -48
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/worker.js +6 -6
- package/dist/esm/worker.js.map +1 -1
- package/dist/esm/ws.js +32 -16
- package/dist/esm/ws.js.map +1 -1
- package/dist/types/aws-sigv4.d.ts.map +1 -1
- package/dist/types/cache.d.ts +27 -2
- package/dist/types/cache.d.ts.map +1 -1
- package/dist/types/circuit-breaker.d.ts +14 -1
- package/dist/types/circuit-breaker.d.ts.map +1 -1
- package/dist/types/client.d.ts +98 -23
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/cookie-parser.d.ts +0 -17
- package/dist/types/cookie-parser.d.ts.map +1 -1
- package/dist/types/cookie-store.d.ts.map +1 -1
- package/dist/types/core.d.ts +109 -25
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/dedup.d.ts +0 -7
- package/dist/types/dedup.d.ts.map +1 -1
- package/dist/types/digest.d.ts +31 -37
- package/dist/types/digest.d.ts.map +1 -1
- package/dist/types/graphql.d.ts.map +1 -1
- package/dist/types/headers.d.ts +62 -29
- package/dist/types/headers.d.ts.map +1 -1
- package/dist/types/interceptors.d.ts +102 -0
- package/dist/types/interceptors.d.ts.map +1 -1
- package/dist/types/lifecycle.d.ts +19 -2
- package/dist/types/lifecycle.d.ts.map +1 -1
- package/dist/types/logging.d.ts +23 -4
- package/dist/types/logging.d.ts.map +1 -1
- package/dist/types/mod.d.ts +5 -3
- package/dist/types/mod.d.ts.map +1 -1
- package/dist/types/pagination.d.ts +0 -25
- package/dist/types/pagination.d.ts.map +1 -1
- package/dist/types/progress.d.ts +1 -1
- package/dist/types/progress.d.ts.map +1 -1
- package/dist/types/proxy.d.ts +50 -0
- package/dist/types/proxy.d.ts.map +1 -0
- package/dist/types/response.d.ts +7 -1
- package/dist/types/response.d.ts.map +1 -1
- package/dist/types/socks5.d.ts.map +1 -1
- package/dist/types/sse.d.ts.map +1 -1
- package/dist/types/types.d.ts +139 -5
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/url.d.ts +0 -14
- package/dist/types/url.d.ts.map +1 -1
- package/dist/types/utils.d.ts.map +1 -1
- package/dist/types/worker.d.ts +6 -6
- package/dist/types/worker.d.ts.map +1 -1
- package/dist/types/ws.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/esm/lifecycle.js
CHANGED
|
@@ -30,7 +30,6 @@
|
|
|
30
30
|
* Use when you just need pub/sub notification.
|
|
31
31
|
*/
|
|
32
32
|
export class HookEmitter {
|
|
33
|
-
// deno-lint-ignore ban-types
|
|
34
33
|
listeners = new Map();
|
|
35
34
|
/** Register a persistent event listener. */
|
|
36
35
|
on(event, listener) {
|
|
@@ -59,9 +58,19 @@ export class HookEmitter {
|
|
|
59
58
|
const list = this.listeners.get(event);
|
|
60
59
|
if (!list || list.length === 0)
|
|
61
60
|
return;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
// Iterate a snapshot, and remove `once` listeners by identity rather than
|
|
62
|
+
// by index into the live array. Two things went wrong without that. A
|
|
63
|
+
// listener that registered another listener mid-emit had the new one
|
|
64
|
+
// called by the *same* emit, because the loop walks the live array and
|
|
65
|
+
// re-checks its length. And a listener that called `off()` mid-emit had
|
|
66
|
+
// its removal undone: the trailing write-back rebuilt the list from the
|
|
67
|
+
// snapshot taken before the emit, re-adding whatever it had just removed.
|
|
68
|
+
const snapshot = [...list];
|
|
69
|
+
// The same element type as `list`, inferred rather than restated: the
|
|
70
|
+
// bare `Function` type this used to name provides no type safety at all,
|
|
71
|
+
// since it is every function and every class.
|
|
72
|
+
const invokedOnce = new Set();
|
|
73
|
+
for (const listener of snapshot) {
|
|
65
74
|
try {
|
|
66
75
|
await listener.fn(data);
|
|
67
76
|
}
|
|
@@ -69,11 +78,11 @@ export class HookEmitter {
|
|
|
69
78
|
/* isolate listener errors */
|
|
70
79
|
}
|
|
71
80
|
if (listener.once)
|
|
72
|
-
|
|
81
|
+
invokedOnce.add(listener);
|
|
73
82
|
}
|
|
74
|
-
if (
|
|
75
|
-
const
|
|
76
|
-
this.listeners.set(event,
|
|
83
|
+
if (invokedOnce.size > 0) {
|
|
84
|
+
const current = this.listeners.get(event) ?? [];
|
|
85
|
+
this.listeners.set(event, current.filter((l) => !invokedOnce.has(l)));
|
|
77
86
|
}
|
|
78
87
|
}
|
|
79
88
|
/** Remove all listeners for an event (or all events if omitted). */
|
|
@@ -324,17 +333,25 @@ export class HookRegistry {
|
|
|
324
333
|
* If any hook returns a HookResponse, it is treated as recovery and returned.
|
|
325
334
|
*/
|
|
326
335
|
async runOnError(err, ctx) {
|
|
336
|
+
let recovered = null;
|
|
327
337
|
for (const hook of sortHooks(this.onError)) {
|
|
328
338
|
if (!this._shouldRun(hook, ctx))
|
|
329
339
|
continue;
|
|
330
340
|
const result = await this._safeRun(hook, () => hook.fn(err, ctx));
|
|
331
341
|
this._maybeEject(hook, this.onError);
|
|
342
|
+
// First recovery wins; later hooks are not consulted.
|
|
332
343
|
if (result && typeof result === "object" && "status" in result) {
|
|
333
|
-
|
|
344
|
+
recovered = result;
|
|
345
|
+
break;
|
|
334
346
|
}
|
|
335
347
|
}
|
|
348
|
+
// The emitter is the notification channel, not the recovery channel, so it
|
|
349
|
+
// fires on every error. This line used to sit after the loop behind a plain
|
|
350
|
+
// `return`, so a recovered error — the one an operator most wants to hear
|
|
351
|
+
// about, since the caller never sees it — was the only kind an
|
|
352
|
+
// `emitter.on("error", ...)` subscriber was never told about.
|
|
336
353
|
await this.emitter.emit("error", err);
|
|
337
|
-
return
|
|
354
|
+
return recovered;
|
|
338
355
|
}
|
|
339
356
|
/** Execute all on-retry hooks. */
|
|
340
357
|
async runOnRetry(evt, ctx) {
|
|
@@ -370,12 +387,7 @@ export class HookRegistry {
|
|
|
370
387
|
for (const hook of sortHooks(this.onUploadProgress)) {
|
|
371
388
|
if (!this._shouldRun(hook, ctx))
|
|
372
389
|
continue;
|
|
373
|
-
|
|
374
|
-
hook.fn(evt, ctx);
|
|
375
|
-
}
|
|
376
|
-
catch {
|
|
377
|
-
/* isolate */
|
|
378
|
-
}
|
|
390
|
+
this._safeRunSync(hook, () => hook.fn(evt, ctx));
|
|
379
391
|
this._maybeEject(hook, this.onUploadProgress);
|
|
380
392
|
}
|
|
381
393
|
this.emitter.emit("upload:progress", evt);
|
|
@@ -385,12 +397,7 @@ export class HookRegistry {
|
|
|
385
397
|
for (const hook of sortHooks(this.onDownloadProgress)) {
|
|
386
398
|
if (!this._shouldRun(hook, ctx))
|
|
387
399
|
continue;
|
|
388
|
-
|
|
389
|
-
hook.fn(evt, ctx);
|
|
390
|
-
}
|
|
391
|
-
catch {
|
|
392
|
-
/* isolate */
|
|
393
|
-
}
|
|
400
|
+
this._safeRunSync(hook, () => hook.fn(evt, ctx));
|
|
394
401
|
this._maybeEject(hook, this.onDownloadProgress);
|
|
395
402
|
}
|
|
396
403
|
this.emitter.emit("download:progress", evt);
|
|
@@ -398,25 +405,26 @@ export class HookRegistry {
|
|
|
398
405
|
/** Execute all on-cancel hooks. */
|
|
399
406
|
runOnCancel(evt, ctx) {
|
|
400
407
|
for (const hook of sortHooks(this.onCancel)) {
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
catch {
|
|
405
|
-
/* isolate */
|
|
406
|
-
}
|
|
408
|
+
if (!this._shouldRun(hook, ctx))
|
|
409
|
+
continue;
|
|
410
|
+
this._safeRunSync(hook, () => hook.fn(evt, ctx));
|
|
407
411
|
this._maybeEject(hook, this.onCancel);
|
|
408
412
|
}
|
|
409
413
|
this.emitter.emit("cancel", evt);
|
|
410
414
|
}
|
|
411
|
-
/**
|
|
412
|
-
|
|
415
|
+
/**
|
|
416
|
+
* Execute all on-connection hooks.
|
|
417
|
+
*
|
|
418
|
+
* `ctx` is required rather than optional: a hook registered with a
|
|
419
|
+
* `condition` can only be evaluated against a context, and making the
|
|
420
|
+
* parameter optional left the condition silently unevaluated for every caller
|
|
421
|
+
* that omitted it — which is a wrong answer rather than a compile error.
|
|
422
|
+
*/
|
|
423
|
+
runOnConnection(evt, ctx) {
|
|
413
424
|
for (const hook of sortHooks(this.onConnection)) {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
catch {
|
|
418
|
-
/* isolate */
|
|
419
|
-
}
|
|
425
|
+
if (!this._shouldRun(hook, ctx))
|
|
426
|
+
continue;
|
|
427
|
+
this._safeRunSync(hook, () => hook.fn(evt));
|
|
420
428
|
this._maybeEject(hook, this.onConnection);
|
|
421
429
|
}
|
|
422
430
|
this.emitter.emit("connection", evt);
|
|
@@ -433,8 +441,19 @@ export class HookRegistry {
|
|
|
433
441
|
fn = () => {
|
|
434
442
|
if (!this._shouldRun(hook, ctx))
|
|
435
443
|
return next();
|
|
436
|
-
|
|
444
|
+
// `safe` is honoured here too. It used to be ignored, and ignored in
|
|
445
|
+
// the *other* direction: a `safe: true` around hook that threw took the
|
|
446
|
+
// whole request down. On failure the dispatch is still run, because an
|
|
447
|
+
// around hook that throws before calling `next` has no response to
|
|
448
|
+
// return and the pipeline cannot continue without one.
|
|
449
|
+
let failed = false;
|
|
450
|
+
const result = this._safeRunSync(hook, () => {
|
|
451
|
+
failed = true;
|
|
452
|
+
return hook.fn(ctx, next);
|
|
453
|
+
});
|
|
437
454
|
this._maybeEject(hook, this.aroundHooks);
|
|
455
|
+
if (failed)
|
|
456
|
+
return next();
|
|
438
457
|
return result;
|
|
439
458
|
};
|
|
440
459
|
}
|
|
@@ -468,6 +487,26 @@ export class HookRegistry {
|
|
|
468
487
|
return undefined;
|
|
469
488
|
}
|
|
470
489
|
}
|
|
490
|
+
/**
|
|
491
|
+
* Synchronous counterpart of {@link _safeRun}, used by the phases whose hook
|
|
492
|
+
* signature is synchronous (progress, cancel, connection) and by around hooks.
|
|
493
|
+
*
|
|
494
|
+
* These phases used a bare `try {} catch {}`, which ignored `safe` in both
|
|
495
|
+
* directions: `safe: false` — the documented default, "critical hooks that
|
|
496
|
+
* must propagate errors" — was swallowed, and `safe: true` was the only thing
|
|
497
|
+
* that produced the log line the other phases write.
|
|
498
|
+
*/
|
|
499
|
+
_safeRunSync(hook, fn) {
|
|
500
|
+
try {
|
|
501
|
+
return fn();
|
|
502
|
+
}
|
|
503
|
+
catch (err) {
|
|
504
|
+
if (!hook.safe)
|
|
505
|
+
throw err;
|
|
506
|
+
console.error(`[lifecycle] Hook "${hook.id}" threw:`, err);
|
|
507
|
+
return undefined;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
471
510
|
_maybeEject(hook, list) {
|
|
472
511
|
if (!hook.once)
|
|
473
512
|
return;
|
|
@@ -597,8 +636,14 @@ export function withBaseURL(base) {
|
|
|
597
636
|
return (req) => {
|
|
598
637
|
if (/^https?:\/\//i.test(req.url))
|
|
599
638
|
return;
|
|
600
|
-
|
|
601
|
-
|
|
639
|
+
// Join with exactly one slash. The old test asked "does either side already
|
|
640
|
+
// carry a slash, in which case add none" — which is wrong precisely when
|
|
641
|
+
// *both* do: `baseURL: "https://api.test/"` (the most common spelling) with
|
|
642
|
+
// the path `"/users"` produced "https://api.test//users". Trimming both sides
|
|
643
|
+
// and adding one slash is the only rule that is right in all four cases.
|
|
644
|
+
const baseTrimmed = base.replace(/\/+$/, "");
|
|
645
|
+
const pathTrimmed = req.url.replace(/^\/+/, "");
|
|
646
|
+
return { ...req, url: `${baseTrimmed}/${pathTrimmed}` };
|
|
602
647
|
};
|
|
603
648
|
}
|
|
604
649
|
/**
|
|
@@ -761,7 +806,11 @@ export function composeAround(...hooks) {
|
|
|
761
806
|
*/
|
|
762
807
|
export function createLoggingHooks(options = {}) {
|
|
763
808
|
const log = options.logger ?? ((msg, data) => console.log(msg, JSON.stringify(data)));
|
|
764
|
-
|
|
809
|
+
// The default list was `authorization` and `cookie` only, while
|
|
810
|
+
// `afterResponse` logs *response* headers — so `Set-Cookie` was written in
|
|
811
|
+
// cleartext by default, on a hook whose entire purpose is to log. The
|
|
812
|
+
// interceptors' own logging defaults already redact all four.
|
|
813
|
+
const redact = new Set((options.redactHeaders ?? ["authorization", "cookie", "set-cookie", "proxy-authorization"]).map((h) => h.toLowerCase()));
|
|
765
814
|
function safeHeaders(h) {
|
|
766
815
|
const out = {};
|
|
767
816
|
for (const [k, v] of Object.entries(h))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AA2PH;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACtB,6BAA6B;IACrB,SAAS,GAAG,IAAI,GAAG,EAAkD,CAAC;IAE9E,4CAA4C;IAC5C,EAAE,CAA0B,KAAQ,EAAE,QAA8B;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,IAAI,CAA0B,KAAQ,EAAE,QAA8B;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gDAAgD;IAChD,GAAG,CAA0B,KAAQ,EAAE,QAA8B;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAChB,KAAK,EACL,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CACtC,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,IAAI,CAA0B,KAAQ,EAAE,IAAqB;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEvC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAO,QAAQ,CAAC,EAAmD,CAAC,IAAI,CAAC,CAAC;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;YACD,IAAI,QAAQ,CAAC,IAAI;gBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,kBAAkB,CAAC,KAAqB;QACtC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,SAAS,UAAU;IACjB,OAAO,QAAQ,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AACD,SAAS,SAAS,CAAI,KAAqB;IACzC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAY;IACf,aAAa,GAAmC,EAAE,CAAC;IACnD,YAAY,GAAkC,EAAE,CAAC;IACjD,cAAc,GAAoC,EAAE,CAAC;IACrD,aAAa,GAAmC,EAAE,CAAC;IACnD,OAAO,GAA6B,EAAE,CAAC;IACvC,OAAO,GAA6B,EAAE,CAAC;IACvC,UAAU,GAAgC,EAAE,CAAC;IAC7C,gBAAgB,GAAsC,EAAE,CAAC;IACzD,kBAAkB,GAAwC,EAAE,CAAC;IAC7D,QAAQ,GAA8B,EAAE,CAAC;IACzC,YAAY,GAAkC,EAAE,CAAC;IACjD,WAAW,GAA4B,EAAE,CAAC;IAElD,8DAA8D;IACrD,OAAO,GAAgB,IAAI,WAAW,EAAE,CAAC;IAElD,6EAA6E;IAE7E,wEAAwE;IACxE,gBAAgB,CAAC,EAAqB,EAAE,OAAoB,EAAE;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,wEAAwE;IACxE,eAAe,CAAC,EAAoB,EAAE,OAAoB,EAAE;QAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,yEAAyE;IACzE,iBAAiB,CAAC,EAAsB,EAAE,OAAoB,EAAE;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,yEAAyE;IACzE,gBAAgB,CAAC,EAAqB,EAAE,OAAoB,EAAE;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,mEAAmE;IACnE,UAAU,CAAC,EAAe,EAAE,OAAoB,EAAE;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,mEAAmE;IACnE,UAAU,CAAC,EAAe,EAAE,OAAoB,EAAE;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,sEAAsE;IACtE,aAAa,CAAC,EAAkB,EAAE,OAAoB,EAAE;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,0EAA0E;IAC1E,mBAAmB,CAAC,EAAwB,EAAE,OAAoB,EAAE;QAClE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,2EAA2E;IAC3E,qBAAqB,CAAC,EAA0B,EAAE,OAAoB,EAAE;QACtE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,gEAAgE;IAChE,WAAW,CAAC,EAAgB,EAAE,OAAoB,EAAE;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,oEAAoE;IACpE,eAAe,CAAC,EAAoB,EAAE,OAAoB,EAAE;QAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,iEAAiE;IACjE,SAAS,CAAC,EAAc,EAAE,OAAoB,EAAE;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,6EAA6E;IAE7E,iFAAiF;IACjF,MAAM,CAAC,EAAU;QACf,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,KAAK,GAAG;YACZ,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,kBAAkB;YACvB,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,WAAW;SACS,CAAC;QAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;gBACpB,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,wCAAwC;IACxC,SAAS;QACP,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,qDAAqD;IACrD,GAAG,CAAC,EAAU;QACZ,MAAM,KAAK,GAAG;YACZ,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,kBAAkB;YACvB,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,WAAW;SACS,CAAC;QAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,6EAA6E;IAE7E,kFAAkF;IAClF,KAAK,CAAC,gBAAgB,CAAC,GAAgB,EAAE,GAAgB;QACvD,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;gBAAE,SAAS;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACtE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC5D,OAAO,GAAG,MAAqB,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,eAAe,CAAC,GAAgB,EAAE,GAAgB;QACtD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;gBAAE,SAAS;YAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,oFAAoF;IACpF,KAAK,CAAC,iBAAiB,CAAC,GAAiB,EAAE,GAAgB;QACzD,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;gBAAE,SAAS;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACtE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;gBAC/D,OAAO,GAAG,MAAsB,CAAC;YACnC,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,gBAAgB,CAAC,GAAiB,EAAE,GAAgB;QACxD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;gBAAE,SAAS;YAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,GAAc,EAAE,GAAgB;QAC/C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;gBAAE,SAAS;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;gBAC/D,OAAO,MAAsB,CAAC;YAChC,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,UAAU,CAAC,GAAe,EAAE,GAAgB;QAChD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;gBAAE,SAAS;YAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,GAAkB,EAAE,GAAgB;QACtD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;gBAAE,SAAS;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM;YACR,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yCAAyC;IACzC,mBAAmB,CAAC,GAAkB,EAAE,GAAgB;QACtD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;gBAAE,SAAS;YAC1C,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,aAAa;YACf,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,2CAA2C;IAC3C,qBAAqB,CAAC,GAAkB,EAAE,GAAgB;QACxD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;gBAAE,SAAS;YAC1C,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,aAAa;YACf,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,mCAAmC;IACnC,WAAW,CAAC,GAAgB,EAAE,GAAgB;QAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,aAAa;YACf,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,uCAAuC;IACvC,eAAe,CAAC,GAAoB;QAClC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,aAAa;YACf,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,cAAc,CACZ,GAAgB,EAChB,QAAqC;QAErC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,kBAAkB;QAExE,IAAI,EAAE,GAAG,QAAQ,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,EAAE,GAAG,GAAG,EAAE;gBACR,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;oBAAE,OAAO,IAAI,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBACzC,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,6EAA6E;IAErE,IAAI,CAAI,IAAoB,EAAE,EAAK,EAAE,IAAiB;QAC5D,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC;YACR,EAAE;YACF,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;YACxB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;YACxB,EAAE;SACH,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,UAAU,CAAI,IAAkB,EAAE,GAAgB;QACxD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,IAAkB,EAClB,EAAwB;QAExB,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,MAAM,GAAG,CAAC;YAC1B,6BAA6B;YAC7B,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAC3D,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,WAAW,CAAI,IAAkB,EAAE,IAAoB;QAC7D,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;CACF;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,eAAe;IAClB,MAAM,GAAG,CAAC,CAAC;IACX,KAAK,CAAgB;IACrB,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,UAAU,GAAG,CAAC,CAAC;IAEvB,YAAY,QAAuB,IAAI;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,+EAA+E;IAC/E,MAAM,CAAC,KAAa;QAClB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QACrB,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QACnC,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAEjF,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAE9B,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;YAC5E,IAAI;YACJ,OAAO;SACR,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B;IACvD,CAAC;CACF;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,eAAe;IAGG;IAFrB,KAAK,GAAG,CAAC,CAAC;IAElB,YAA6B,eAAe,EAAE;QAAjB,iBAAY,GAAZ,YAAY,CAAK;IAAG,CAAC;IAElD,gFAAgF;IAChF,MAAM,CAAC,IAAY,EAAE,EAAU,EAAE,MAAc,EAAE,OAAoB;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACnC,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAC1D,CAAC;IAED,2CAA2C;IAC3C,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,kCAAkC;IAClC,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAK5B;IAEA;IANlB,uDAAuD;IAC9C,IAAI,GAAG,mBAAmB,CAAC;IACpC;IACE,oCAAoC;IACpB,KAAa;IAC7B,gDAAgD;IAChC,GAAW;QAE3B,KAAK,CAAC,uBAAuB,KAAK,QAAQ,GAAG,EAAE,CAAC,CAAC;QAJjC,UAAK,GAAL,KAAK,CAAQ;QAEb,QAAG,GAAH,GAAG,CAAQ;QAG3B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,+EAA+E;AAC/E,oDAAoD;AACpD,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,GAAG,CAAI,EAAsC;IAC3D,OAAO,KAAK,EAAE,KAAQ,EAAE,EAAE;QACxB,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,OAEoE;IAEpE,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACrB,GAAG,GAAG;QACN,OAAO,EAAE;YACP,GAAG,GAAG,CAAC,OAAO;YACd,GAAG,CAAC,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SAC/D;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,CAAC,GAAG,EAAE,EAAE;QACb,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACvE,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAuC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG;IAEtD,OAAO,CAAC,GAAG,EAAE,EAAE;QACb,IAAI,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClF,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAkD;IAElD,OAAO,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO;QAC5B,MAAM,OAAO,GACX,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,sCAAsC,GAAG,CAAC,MAAM,GAAG,CAAC;QAC5F,MAAM,IAAI,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAKhB;IAEA;IAEA;IARlB,oDAAoD;IAC3C,IAAI,GAAG,YAAY,CAAC;IAC7B;IACE,yCAAyC;IACzB,MAAc;IAC9B,4CAA4C;IAC5B,UAAkB;IAClC,6CAA6C;IAC7B,QAAsB;QAEtC,KAAK,CAAC,QAAQ,MAAM,KAAK,UAAU,EAAE,CAAC,CAAC;QANvB,WAAM,GAAN,MAAM,CAAQ;QAEd,eAAU,GAAV,UAAU,CAAQ;QAElB,aAAQ,GAAR,QAAQ,CAAc;QAGtC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAM9B;IALlB,yDAAyD;IAChD,IAAI,GAAG,aAAa,CAAC;IAC9B,YACE,OAAe;IACf,2CAA2C;IAC3B,QAAsB;QAEtC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,aAAQ,GAAR,QAAQ,CAAc;QAGtC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAG,KAA0B;IAChE,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACxC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC5D,OAAO,GAAG,MAAqB,CAAC;YAClC,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAG,KAA2B;IAClE,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACxC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;gBAC/D,OAAO,GAAG,MAAsB,CAAC;YACnC,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,aAAa,CAAC,GAAG,KAAmB;IAClD,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,CAAC,CAA8B,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAC5D,IAAI,CACL,CAAC;QACF,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAII,EAAE;IASN,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CACnF,CAAC;IAEF,SAAS,WAAW,CAAC,CAAyB;QAC5C,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO;QACL,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE;YACrB,GAAG,CAAC,WAAW,EAAE;gBACf,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QACD,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE;YACrB,GAAG,CAAC,YAAY,EAAE;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG;gBACpB,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACf,GAAG,CAAC,SAAS,EAAE;gBACb,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG;gBACpB,KAAK,EAAE,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;gBACzE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI;aACrC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAM9B,MAAM,UAAU,GAAG,oBAAoB,CAAC;IAExC,OAAO;QACL,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,EAAE,CAAC;QACnC,CAAC;QACD,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAuB,CAAC;YACzD,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;YAChC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAmB,OAAO;IACpE,OAAO,CAAC,GAAG,EAAE,EAAE;QACb,IAAI,GAAG,CAAC,IAAI,YAAY,UAAU,EAAE,CAAC;YACnC,OAAO;gBACL,GAAG,GAAG;gBACN,IAAI,EAAE,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;aACjD,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe;IAM7B,OAAO;QACL,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1B,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACxB,MAAM,gBAAgB,CAAC,gCAAgC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACjF,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,uFAAuF;AACvF,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,OAAO;IACd,OAAO,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAoB,EACpB,YAAkC,EAAE;IAEpC,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,OAAO,EAAE;QACpB,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,EAAE;QACR,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/logging.js
CHANGED
|
@@ -120,6 +120,17 @@ const DEFAULT_REDACT_PARAMS = [
|
|
|
120
120
|
* Requests/responses with other content-types will have their body replaced
|
|
121
121
|
* with a short indicator (e.g. "[binary]") instead of being logged verbatim.
|
|
122
122
|
*/
|
|
123
|
+
/**
|
|
124
|
+
* Is this a JSON media type?
|
|
125
|
+
*
|
|
126
|
+
* `application/json` and every `+json` structured suffix, case-insensitively
|
|
127
|
+
* and ignoring parameters, because RFC 9110 makes media types
|
|
128
|
+
* case-insensitive and `application/JSON; charset=utf-8` is the same type.
|
|
129
|
+
*/
|
|
130
|
+
function isJSONContentType(contentType) {
|
|
131
|
+
const type = contentType.split(";", 1)[0].trim().toLowerCase();
|
|
132
|
+
return type === "application/json" || type === "text/json" || type.endsWith("+json");
|
|
133
|
+
}
|
|
123
134
|
const DEFAULT_ALLOWED_BODY_TYPES = [
|
|
124
135
|
"application/json",
|
|
125
136
|
"application/x-www-form-urlencoded",
|
|
@@ -137,12 +148,14 @@ export class ConsoleTransport {
|
|
|
137
148
|
/**
|
|
138
149
|
* @param opts - Console transport options
|
|
139
150
|
*/
|
|
140
|
-
constructor(opts = {
|
|
141
|
-
pretty
|
|
142
|
-
|
|
143
|
-
|
|
151
|
+
constructor(opts = {}) {
|
|
152
|
+
// `pretty` resolves the same way whether the caller passed nothing, `{}`, or
|
|
153
|
+
// a full options object. The old default parameter hard-coded `pretty: false`
|
|
154
|
+
// for the no-argument form only, so `new ConsoleTransport()` emitted JSON
|
|
155
|
+
// while `new ConsoleTransport({ onWrite })` emitted pretty output outside
|
|
156
|
+
// production — the opposite of the documented default.
|
|
144
157
|
this.pretty = opts.pretty ?? getNodeEnv() !== "production";
|
|
145
|
-
this.onWrite = opts.onWrite;
|
|
158
|
+
this.onWrite = opts.onWrite ?? ((output) => console.log(output));
|
|
146
159
|
// useColors reserved for future ANSI colorization
|
|
147
160
|
void opts.useColors;
|
|
148
161
|
}
|
|
@@ -254,6 +267,16 @@ export class BatchingTransport {
|
|
|
254
267
|
}
|
|
255
268
|
/** Internal flush — sends all buffered entries to inner transport. */
|
|
256
269
|
_flush() {
|
|
270
|
+
// A size-triggered flush has to disarm the pending timer as well. Leaving
|
|
271
|
+
// it armed meant `write()`'s `if (!this.timer)` guard stayed false for the
|
|
272
|
+
// next entry, so nothing scheduled a fresh interval: entries written after
|
|
273
|
+
// a full batch waited out the remainder of the previous batch's timer, and a
|
|
274
|
+
// process that hit `maxBatch` and then went quiet held the interval for the
|
|
275
|
+
// whole `flushMs` with an empty buffer.
|
|
276
|
+
if (this.timer !== null) {
|
|
277
|
+
clearTimeout(this.timer);
|
|
278
|
+
this.timer = null;
|
|
279
|
+
}
|
|
257
280
|
if (this.buffer.length === 0)
|
|
258
281
|
return;
|
|
259
282
|
const batch = this.buffer.splice(0);
|
|
@@ -302,6 +325,12 @@ export class RemoteTransport {
|
|
|
302
325
|
}
|
|
303
326
|
/** Fire-and-forget flush with error handling. */
|
|
304
327
|
_flush() {
|
|
328
|
+
// Same disarming as BatchingTransport: a size-triggered flush must not
|
|
329
|
+
// leave the next entry without a timer of its own.
|
|
330
|
+
if (this.timer !== null) {
|
|
331
|
+
clearTimeout(this.timer);
|
|
332
|
+
this.timer = null;
|
|
333
|
+
}
|
|
305
334
|
this._flushAsync().catch(this.options.onError ?? ((err) => console.error("[logging] Flush error:", err)));
|
|
306
335
|
}
|
|
307
336
|
/** Async flush implementation — sends batch via HTTP POST. */
|
|
@@ -439,7 +468,16 @@ export class Redactor {
|
|
|
439
468
|
}
|
|
440
469
|
return out;
|
|
441
470
|
}
|
|
442
|
-
/**
|
|
471
|
+
/**
|
|
472
|
+
* Redact sensitive query parameters from a URL.
|
|
473
|
+
*
|
|
474
|
+
* Absolute URLs go through `URL`, which also normalises the result. A URL the
|
|
475
|
+
* `URL` constructor rejects — every relative form, and relative forms are what
|
|
476
|
+
* `HTTPLogger.child`'s own example logs — used to be returned untouched, so
|
|
477
|
+
* `logRequest(id, "GET", "/users?token=abc", ...)` wrote the token in clear
|
|
478
|
+
* while the absolute spelling of the same request redacted it. Those fall back
|
|
479
|
+
* to a textual scan of the query string below.
|
|
480
|
+
*/
|
|
443
481
|
redactURL(url) {
|
|
444
482
|
try {
|
|
445
483
|
const u = new URL(url);
|
|
@@ -451,9 +489,39 @@ export class Redactor {
|
|
|
451
489
|
return u.toString();
|
|
452
490
|
}
|
|
453
491
|
catch {
|
|
454
|
-
return url;
|
|
492
|
+
return this._redactRelativeQuery(url);
|
|
455
493
|
}
|
|
456
494
|
}
|
|
495
|
+
/** Redact the query string of a URL the `URL` constructor cannot parse. */
|
|
496
|
+
_redactRelativeQuery(url) {
|
|
497
|
+
const q = url.indexOf("?");
|
|
498
|
+
if (q === -1)
|
|
499
|
+
return url;
|
|
500
|
+
const base = url.slice(0, q);
|
|
501
|
+
const rest = url.slice(q + 1);
|
|
502
|
+
const hash = rest.indexOf("#");
|
|
503
|
+
const fragment = hash === -1 ? "" : rest.slice(hash);
|
|
504
|
+
const query = hash === -1 ? rest : rest.slice(0, hash);
|
|
505
|
+
const params = query.split("&").map((pair) => {
|
|
506
|
+
if (pair === "")
|
|
507
|
+
return pair;
|
|
508
|
+
const eq = pair.indexOf("=");
|
|
509
|
+
const name = eq === -1 ? pair : pair.slice(0, eq);
|
|
510
|
+
let decoded = name;
|
|
511
|
+
try {
|
|
512
|
+
decoded = decodeURIComponent(name);
|
|
513
|
+
}
|
|
514
|
+
catch {
|
|
515
|
+
/* keep the raw name if it is not valid percent-encoding */
|
|
516
|
+
}
|
|
517
|
+
if (!this.paramSet.has(decoded.toLowerCase()))
|
|
518
|
+
return pair;
|
|
519
|
+
// A valueless parameter (`?token`) is redacted to `token=***` so the
|
|
520
|
+
// redaction is visible rather than leaving the bare name behind.
|
|
521
|
+
return eq === -1 ? `${name}=***` : `${name}=***`;
|
|
522
|
+
});
|
|
523
|
+
return `${base}?${params.join("&")}${fragment}`;
|
|
524
|
+
}
|
|
457
525
|
/**
|
|
458
526
|
* Redact and optionally truncate a request or response body.
|
|
459
527
|
*
|
|
@@ -470,6 +538,12 @@ export class Redactor {
|
|
|
470
538
|
if (!allowed) {
|
|
471
539
|
return { body: `[${ct || "binary"}]`, size: body ? bodySize(body) : null };
|
|
472
540
|
}
|
|
541
|
+
// The size of the body *as received*, measured before any lossy decoding.
|
|
542
|
+
// Two invalid UTF-8 bytes decode to two U+FFFD characters that re-encode to
|
|
543
|
+
// 6 bytes, and reporting 6 for a 2-byte body is a size of nothing the caller
|
|
544
|
+
// sent. `maxBodyLength` is applied to the re-encoded form below, which is
|
|
545
|
+
// what actually gets written out.
|
|
546
|
+
const size = bodySize(body);
|
|
473
547
|
let str;
|
|
474
548
|
if (body instanceof Uint8Array) {
|
|
475
549
|
try {
|
|
@@ -482,9 +556,14 @@ export class Redactor {
|
|
|
482
556
|
else {
|
|
483
557
|
str = body;
|
|
484
558
|
}
|
|
485
|
-
|
|
486
|
-
//
|
|
487
|
-
|
|
559
|
+
// Redact body fields (JSON). The test has to be at least as wide as the
|
|
560
|
+
// `allowedBodyTypes` gate above: that one uses `startsWith` on a
|
|
561
|
+
// caller-configured list, so a config of `["application/"]` lets a
|
|
562
|
+
// `application/vnd.api+json` body through — and this narrower
|
|
563
|
+
// `includes("application/json")` then logged its `password` field in the
|
|
564
|
+
// clear. `+json` is the registered suffix form (RFC 6839) and this library
|
|
565
|
+
// already parses it as JSON elsewhere, so the redactor has to agree.
|
|
566
|
+
if (isJSONContentType(ct) && this.bodyFields.length > 0) {
|
|
488
567
|
try {
|
|
489
568
|
// FIX (H6): log bodies are untrusted — sanitize before mutation so a
|
|
490
569
|
// crafted payload cannot smuggle __proto__ paths into redaction writes.
|
|
@@ -501,9 +580,12 @@ export class Redactor {
|
|
|
501
580
|
for (const pattern of this.patterns) {
|
|
502
581
|
str = str.replace(pattern, "***");
|
|
503
582
|
}
|
|
504
|
-
// Truncate
|
|
505
|
-
|
|
506
|
-
|
|
583
|
+
// Truncate by UTF-8 bytes, which is the unit `maxBodyLength` is documented
|
|
584
|
+
// in, and never split a multi-byte character in half.
|
|
585
|
+
const afterRedaction = bodySize(str);
|
|
586
|
+
if (afterRedaction > this.maxBody) {
|
|
587
|
+
const cut = truncateToBytes(str, this.maxBody);
|
|
588
|
+
str = `${cut.text}... [truncated ${cut.removed} bytes]`;
|
|
507
589
|
}
|
|
508
590
|
return { body: str, size };
|
|
509
591
|
}
|
|
@@ -512,6 +594,15 @@ export class Redactor {
|
|
|
512
594
|
function redactObjectPath(obj, path) {
|
|
513
595
|
if (!obj || typeof obj !== "object" || path.length === 0)
|
|
514
596
|
return;
|
|
597
|
+
// A JSON array was skipped outright: `bodyFields: ["password"]` only ever
|
|
598
|
+
// matched a top-level key, so a bulk payload — `[{"password":"…"}]`, the
|
|
599
|
+
// shape of most collection endpoints — logged its secrets in clear while
|
|
600
|
+
// the identical object form was redacted. Apply the path to every element.
|
|
601
|
+
if (Array.isArray(obj)) {
|
|
602
|
+
for (const item of obj)
|
|
603
|
+
redactObjectPath(item, path);
|
|
604
|
+
return;
|
|
605
|
+
}
|
|
515
606
|
const [head, ...rest] = path;
|
|
516
607
|
if (head === undefined)
|
|
517
608
|
return;
|
|
@@ -642,6 +733,13 @@ export class HTTPLogger {
|
|
|
642
733
|
const dur = active ? perfNow() - active.startMs : 0;
|
|
643
734
|
const method = active?.method ?? "GET";
|
|
644
735
|
const url = active?.url ?? "";
|
|
736
|
+
// The active ID is released before the filter runs, not after. A response
|
|
737
|
+
// dropped by `statuses` / `level` / `excludeURLs` / sampling returned early
|
|
738
|
+
// and left its entry in `activeIds` forever: the only cleanup is a
|
|
739
|
+
// size-triggered sweep inside `logRequest`, so a service logging with a
|
|
740
|
+
// narrow status filter accumulated one dead entry per request until it
|
|
741
|
+
// reached 10000 and started evicting live ones.
|
|
742
|
+
this.activeIds.delete(requestId);
|
|
645
743
|
if (!this._shouldLog("INFO", method, url, status))
|
|
646
744
|
return;
|
|
647
745
|
const ct = headers["content-type"] ?? headers["Content-Type"] ?? null;
|
|
@@ -665,7 +763,6 @@ export class HTTPLogger {
|
|
|
665
763
|
cached,
|
|
666
764
|
meta: { ...this.cfg.context, ...meta },
|
|
667
765
|
};
|
|
668
|
-
this.activeIds.delete(requestId);
|
|
669
766
|
this._write(entry);
|
|
670
767
|
}
|
|
671
768
|
/**
|
|
@@ -682,6 +779,8 @@ export class HTTPLogger {
|
|
|
682
779
|
const dur = active ? perfNow() - active.startMs : 0;
|
|
683
780
|
const method = active?.method ?? "GET";
|
|
684
781
|
const url = active?.url ?? "";
|
|
782
|
+
// Released before the filter, for the same reason as `logResponse`.
|
|
783
|
+
this.activeIds.delete(requestId);
|
|
685
784
|
if (!this._shouldLog("ERROR", method, url))
|
|
686
785
|
return;
|
|
687
786
|
const entry = {
|
|
@@ -698,7 +797,6 @@ export class HTTPLogger {
|
|
|
698
797
|
attempt,
|
|
699
798
|
meta: { ...this.cfg.context, ...meta },
|
|
700
799
|
};
|
|
701
|
-
this.activeIds.delete(requestId);
|
|
702
800
|
this._write(entry);
|
|
703
801
|
}
|
|
704
802
|
// ── §7.2 ID management ────────────────────────────────────────────────────
|
|
@@ -723,7 +821,7 @@ export class HTTPLogger {
|
|
|
723
821
|
* ```ts
|
|
724
822
|
* const logger = createProductionLogger();
|
|
725
823
|
* const child = logger.child({ requestId: "req-123", userId: "user-456" });
|
|
726
|
-
* child.logRequest(
|
|
824
|
+
* child.logRequest("req-123", "GET", "/users", {}, null, 1); // Logs include both requestId and userId
|
|
727
825
|
* ```
|
|
728
826
|
*/
|
|
729
827
|
child(context) {
|
|
@@ -838,8 +936,63 @@ function serializeError(err) {
|
|
|
838
936
|
...(errStack !== undefined ? { stack: errStack } : {}),
|
|
839
937
|
};
|
|
840
938
|
}
|
|
939
|
+
// Anything else was `String(err)`, which for a rejected object — the shape a
|
|
940
|
+
// custom fetch, a GraphQL client or a worker produces — is literally
|
|
941
|
+
// "[object Object]". The entry recorded no message and no `code`, so the log
|
|
942
|
+
// said only that something had failed. An error-shaped object keeps its
|
|
943
|
+
// `name`, `message`, `code` and `stack`; anything else is stringified
|
|
944
|
+
// structurally.
|
|
945
|
+
if (err !== null && typeof err === "object") {
|
|
946
|
+
const o = err;
|
|
947
|
+
const out = {
|
|
948
|
+
name: typeof o.name === "string" && o.name !== "" ? o.name : "Error",
|
|
949
|
+
message: typeof o.message === "string" ? o.message : safeStringify(err),
|
|
950
|
+
};
|
|
951
|
+
if (typeof o.code === "string" || typeof o.code === "number")
|
|
952
|
+
out.code = String(o.code);
|
|
953
|
+
if (typeof o.stack === "string")
|
|
954
|
+
out.stack = o.stack;
|
|
955
|
+
return out;
|
|
956
|
+
}
|
|
841
957
|
return { name: "Error", message: String(err) };
|
|
842
958
|
}
|
|
959
|
+
/** `JSON.stringify` that never throws — falls back for circular values. */
|
|
960
|
+
function safeStringify(value) {
|
|
961
|
+
try {
|
|
962
|
+
const seen = new WeakSet();
|
|
963
|
+
return (JSON.stringify(value, (_k, v) => {
|
|
964
|
+
if (v !== null && typeof v === "object") {
|
|
965
|
+
if (seen.has(v))
|
|
966
|
+
return "[circular]";
|
|
967
|
+
seen.add(v);
|
|
968
|
+
}
|
|
969
|
+
return v;
|
|
970
|
+
}) ?? String(value));
|
|
971
|
+
}
|
|
972
|
+
catch {
|
|
973
|
+
return String(value);
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
/**
|
|
977
|
+
* Truncate a string to at most `maxBytes` UTF-8 bytes, never splitting a
|
|
978
|
+
* character, and report how many bytes were actually removed.
|
|
979
|
+
*/
|
|
980
|
+
function truncateToBytes(str, maxBytes) {
|
|
981
|
+
const enc = new TextEncoder();
|
|
982
|
+
const total = enc.encode(str).byteLength;
|
|
983
|
+
if (total <= maxBytes)
|
|
984
|
+
return { text: str, removed: 0 };
|
|
985
|
+
let used = 0;
|
|
986
|
+
let end = 0;
|
|
987
|
+
for (const ch of str) {
|
|
988
|
+
const width = enc.encode(ch).byteLength;
|
|
989
|
+
if (used + width > maxBytes)
|
|
990
|
+
break;
|
|
991
|
+
used += width;
|
|
992
|
+
end += ch.length;
|
|
993
|
+
}
|
|
994
|
+
return { text: str.slice(0, end), removed: total - used };
|
|
995
|
+
}
|
|
843
996
|
/** Cross-runtime high-resolution timer. Falls back to Date.now() when performance.now() is unavailable. */
|
|
844
997
|
function perfNow() {
|
|
845
998
|
return typeof performance !== "undefined" ? performance.now() : Date.now();
|