@dunx/http 2.4.0 → 3.0.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 +31 -909
- package/dist/chunk-25g22350.js +58 -0
- package/dist/chunk-ywdpxbkf.js +1573 -0
- package/dist/client/module.d.ts +2 -7
- package/dist/client/options.d.ts +12 -0
- package/dist/client/service.d.ts +11 -22
- package/dist/client.d.ts +8 -2
- package/dist/client.js +26 -137
- package/dist/compression/compression.d.ts +25 -0
- package/dist/compression/module.d.ts +20 -0
- package/dist/compression/negotiate.d.ts +12 -0
- package/dist/compression/options.d.ts +61 -0
- package/dist/health/indicators.d.ts +5 -10
- package/dist/index.d.ts +24 -20
- package/dist/index.js +325 -1366
- package/dist/internal.d.ts +36 -0
- package/dist/internal.js +89 -0
- package/dist/route/decorators.d.ts +6 -6
- package/dist/route/marker.d.ts +13 -0
- package/dist/route/metadata.d.ts +6 -9
- package/dist/route/schema.d.ts +59 -29
- package/dist/server/application.d.ts +33 -89
- package/dist/server/client-address.d.ts +6 -13
- package/dist/server/errors.d.ts +24 -55
- package/dist/server/request-id.d.ts +6 -11
- package/dist/server/request-logging.d.ts +33 -91
- package/dist/server/routes.d.ts +8 -20
- package/dist/server/trace-context.d.ts +47 -0
- package/dist/static/files.d.ts +5 -13
- package/dist/static/module.d.ts +10 -19
- package/dist/throttle/guard.d.ts +6 -9
- package/dist/throttle/module.d.ts +6 -8
- package/dist/throttle/store.d.ts +11 -20
- package/dist/ws/middleware.d.ts +12 -21
- package/dist/ws/redis-relay.d.ts +9 -19
- package/package.json +7 -3
- package/dist/chunk-sz4pvqxy.js +0 -111
- package/dist/chunk-sz4pvqxy.js.map +0 -10
- package/dist/client.js.map +0 -15
- package/dist/index.js.map +0 -53
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/server/trace-context.ts
|
|
3
|
+
var TRACEPARENT_HEADER = "traceparent";
|
|
4
|
+
var TRACESTATE_HEADER = "tracestate";
|
|
5
|
+
var HEX_32 = /^[0-9a-f]{32}$/;
|
|
6
|
+
var HEX_16 = /^[0-9a-f]{16}$/;
|
|
7
|
+
var HEX_2 = /^[0-9a-f]{2}$/;
|
|
8
|
+
var ZERO_TRACE = "0".repeat(32);
|
|
9
|
+
var ZERO_SPAN = "0".repeat(16);
|
|
10
|
+
var SAMPLED = 1;
|
|
11
|
+
var TRACE = Symbol.for("dunx.http.trace");
|
|
12
|
+
var mintSpanId = () => Buffer.from(crypto.getRandomValues(new Uint8Array(8))).toString("hex");
|
|
13
|
+
|
|
14
|
+
class TraceContext {
|
|
15
|
+
static adopt(req, requestId) {
|
|
16
|
+
const inbound = TraceContext.#parse(req.headers.get(TRACEPARENT_HEADER));
|
|
17
|
+
const state = req.headers.get(TRACESTATE_HEADER);
|
|
18
|
+
const trace = {
|
|
19
|
+
traceId: inbound?.traceId ?? requestId.replaceAll("-", ""),
|
|
20
|
+
spanId: mintSpanId(),
|
|
21
|
+
...inbound === undefined ? {} : { parentSpanId: inbound.spanId },
|
|
22
|
+
flags: inbound?.flags ?? "01",
|
|
23
|
+
...inbound !== undefined && state !== null ? { state } : {}
|
|
24
|
+
};
|
|
25
|
+
req[TRACE] = trace;
|
|
26
|
+
return trace;
|
|
27
|
+
}
|
|
28
|
+
static of(req) {
|
|
29
|
+
return req[TRACE];
|
|
30
|
+
}
|
|
31
|
+
static header(trace) {
|
|
32
|
+
return `00-${trace.traceId}-${trace.spanId}-${trace.flags}`;
|
|
33
|
+
}
|
|
34
|
+
static sampled(trace) {
|
|
35
|
+
return (Number.parseInt(trace.flags, 16) & SAMPLED) === SAMPLED;
|
|
36
|
+
}
|
|
37
|
+
static #parse(header) {
|
|
38
|
+
if (header === null)
|
|
39
|
+
return;
|
|
40
|
+
const parts = header.split("-");
|
|
41
|
+
if (parts.length < 4)
|
|
42
|
+
return;
|
|
43
|
+
const [version, traceId, spanId, flags] = parts;
|
|
44
|
+
if (!HEX_2.test(version) || version === "ff")
|
|
45
|
+
return;
|
|
46
|
+
if (version === "00" && parts.length !== 4)
|
|
47
|
+
return;
|
|
48
|
+
if (!HEX_32.test(traceId) || traceId === ZERO_TRACE)
|
|
49
|
+
return;
|
|
50
|
+
if (!HEX_16.test(spanId) || spanId === ZERO_SPAN)
|
|
51
|
+
return;
|
|
52
|
+
if (!HEX_2.test(flags))
|
|
53
|
+
return;
|
|
54
|
+
return { traceId, spanId, flags };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { TRACEPARENT_HEADER, TRACESTATE_HEADER, TraceContext };
|