tctx

npm add tctx makes Trace Contexts simple


downloads size size
## ⚡ Features - **Lightweight** — [see](https://npm.anvaka.com/#/view/2d/tctx). - **Efficient** — Effective reuse of memory between children see [benchmarks](#-benchmark). - **Producer Friendly** — Are you a browser? `make()` and go home. ## ⚙️ Install ```sh npm add tctx ``` ## 🚀 Usage ```ts // producer import { make } from 'tctx'; fetch('/api', { headers: { traceparent: make(), }, }); // consumer import { parse } from 'tctx'; const parent = parse(request.headers.traceparent); // Passing true will mark the traceparent as sampled — ends with 01. const id = parent.child(true); fetch('/downstream', { headers: { traceparent: id, }, }); ``` ## 💨 Benchmark > via the [`/bench`](/bench) directory with Node v17.9.0 ``` Validation :: make ✔ tctx ✔ traceparent ✔ trace-context Benchmark :: make tctx x 640,126 ops/sec ±0.21% (99 runs sampled) traceparent x 161,062 ops/sec ±0.55% (94 runs sampled) trace-context x 293,268 ops/sec ±0.35% (98 runs sampled) Validation :: parse ✔ tctx ✔ traceparent ✔ trace-context Benchmark :: parse tctx x 5,561,913 ops/sec ±0.14% (100 runs sampled) traceparent x 303,543 ops/sec ±0.42% (91 runs sampled) trace-context x 3,169,835 ops/sec ±0.05% (99 runs sampled) Validation :: child ✔ tctx ✔ traceparent ✔ trace-context Benchmark :: child tctx x 346,827 ops/sec ±0.40% (97 runs sampled) traceparent x 109,942 ops/sec ±0.61% (93 runs sampled) trace-context x 195,381 ops/sec ±0.35% (93 runs sampled) ``` ## License MIT © [Marais Rossouw](https://marais.io)