rian 0.2.4 → 0.2.5

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/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import type { Traceparent } from 'tctx';
2
+
1
3
  /**
2
4
  * Spans are units within a distributed trace. Spans encapsulate mainly 3 pieces of information, a
3
5
  * {@link Span.name|name}, and a {@link Span.start|start} and {@link Span.end|end} time.
@@ -151,6 +153,16 @@ export type Sampler = (
151
153
  context?: Context,
152
154
  ) => boolean;
153
155
 
156
+ /**
157
+ * Provinding a clock allows you to control the time of the span.
158
+ */
159
+ export type ClockLike = {
160
+ /**
161
+ * Must return the number of milliseconds since the epoch.
162
+ */
163
+ now(): number;
164
+ };
165
+
154
166
  export interface Options {
155
167
  /**
156
168
  * @borrows {@link Exporter}
@@ -171,6 +183,8 @@ export interface Options {
171
183
  * provided then one will be created obeying the {@link Options.sampler|sampling} rules.
172
184
  */
173
185
  traceparent?: string | null;
186
+
187
+ clock?: ClockLike;
174
188
  }
175
189
 
176
190
  export const create: (name: string, options: Options) => Tracer;
package/index.js CHANGED
@@ -1 +1 @@
1
- const { measureFn:e } = require('rian/utils');const t = require('tctx');var n=(e,n)=>!n||t.is_sampled(n),a={"telemetry.sdk.name":"rian","telemetry.sdk.version":"0.2.4"},r=(r,o)=>{let s=new Set,d=new Set,i=o.sampler||n,p="boolean"!=typeof i,m=(n,a)=>{let r=p?i(n,a,o.context):i,c=a?a.child(r):t.make(r),l={id:c,parent:a,start:Date.now(),name:n,events:[],context:{}};r&&s.add(l);let x=t=>e(x,t);return x.traceparent=c,x.fork=e=>m(e,c),x.set_context=e=>{"function"!=typeof e?Object.assign(l.context,e):l.context=e(l.context)},x.add_event=(e,t)=>{l.events.push({name:e,timestamp:Date.now(),attributes:t||{}})},x.end=()=>{null==l.end&&(l.end=Date.now())},x.__add_promise=d.add.bind(d),x},c=m(r,"string"==typeof o.traceparent?t.parse(o.traceparent):void 0),l=c.end.bind(c);return c.end=async()=>(l(),d.size>0&&await Promise.all([...d.values()]),o.exporter(s,{...o.context||{},...a})),c};exports.create=r;
1
+ const { measureFn:e } = require('rian/utils');const t = require('tctx');var n=(e,n)=>!n||t.is_sampled(n),a={"telemetry.sdk.name":"rian","telemetry.sdk.version":"0.2.5"},r=(r,o)=>{let s=new Set,d=new Set,i=o.sampler||n,c="boolean"!=typeof i,p=o.clock||Date,l=(n,a)=>{let r=c?i(n,a,o.context):i,m=a?a.child(r):t.make(r),x={id:m,parent:a,start:p.now(),name:n,events:[],context:{}};r&&s.add(x);let u=t=>e(u,t);return u.traceparent=m,u.fork=e=>l(e,m),u.set_context=e=>{"function"!=typeof e?Object.assign(x.context,e):x.context=e(x.context)},u.add_event=(e,t)=>{x.events.push({name:e,timestamp:p.now(),attributes:t||{}})},u.end=()=>{null==x.end&&(x.end=p.now())},u.__add_promise=d.add.bind(d),u},m=l(r,"string"==typeof o.traceparent?t.parse(o.traceparent):void 0),x=m.end.bind(m);return m.end=async()=>(x(),d.size>0&&await Promise.all([...d.values()]),o.exporter(s,{...o.context||{},...a})),m};exports.create=r;
package/index.mjs CHANGED
@@ -1 +1 @@
1
- import{measureFn as e}from"rian/utils";import*as t from"tctx";var n=(e,n)=>!n||t.is_sampled(n),a={"telemetry.sdk.name":"rian","telemetry.sdk.version":"0.2.4"},r=(r,o)=>{let s=new Set,d=new Set,i=o.sampler||n,p="boolean"!=typeof i,m=(n,a)=>{let r=p?i(n,a,o.context):i,c=a?a.child(r):t.make(r),l={id:c,parent:a,start:Date.now(),name:n,events:[],context:{}};r&&s.add(l);let x=t=>e(x,t);return x.traceparent=c,x.fork=e=>m(e,c),x.set_context=e=>{"function"!=typeof e?Object.assign(l.context,e):l.context=e(l.context)},x.add_event=(e,t)=>{l.events.push({name:e,timestamp:Date.now(),attributes:t||{}})},x.end=()=>{null==l.end&&(l.end=Date.now())},x.__add_promise=d.add.bind(d),x},c=m(r,"string"==typeof o.traceparent?t.parse(o.traceparent):void 0),l=c.end.bind(c);return c.end=async()=>(l(),d.size>0&&await Promise.all([...d.values()]),o.exporter(s,{...o.context||{},...a})),c};export{r as create};
1
+ import{measureFn as e}from"rian/utils";import*as t from"tctx";var n=(e,n)=>!n||t.is_sampled(n),a={"telemetry.sdk.name":"rian","telemetry.sdk.version":"0.2.5"},r=(r,o)=>{let s=new Set,d=new Set,i=o.sampler||n,c="boolean"!=typeof i,p=o.clock||Date,l=(n,a)=>{let r=c?i(n,a,o.context):i,m=a?a.child(r):t.make(r),x={id:m,parent:a,start:p.now(),name:n,events:[],context:{}};r&&s.add(x);let u=t=>e(u,t);return u.traceparent=m,u.fork=e=>l(e,m),u.set_context=e=>{"function"!=typeof e?Object.assign(x.context,e):x.context=e(x.context)},u.add_event=(e,t)=>{x.events.push({name:e,timestamp:p.now(),attributes:t||{}})},u.end=()=>{null==x.end&&(x.end=p.now())},u.__add_promise=d.add.bind(d),u},m=l(r,"string"==typeof o.traceparent?t.parse(o.traceparent):void 0),x=m.end.bind(m);return m.end=async()=>(x(),d.size>0&&await Promise.all([...d.values()]),o.exporter(s,{...o.context||{},...a})),m};export{r as create};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rian",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "Effective tracing for the edge and origins",
5
5
  "keywords": [
6
6
  "opentelemetry",
package/readme.md CHANGED
@@ -249,9 +249,9 @@ Validation :: single span
249
249
  ✔ opentracing
250
250
 
251
251
  Benchmark :: single span
252
- rian x 137,181 ops/sec ±2.82% (82 runs sampled)
253
- opentelemetry x 114,197 ops/sec ±11.37% (75 runs sampled)
254
- opentracing x 33,363 ops/sec ±1.27% (89 runs sampled)
252
+ rian x 381,751 ops/sec ±4.17% (84 runs sampled)
253
+ opentelemetry x 201,584 ops/sec ±13.97% (63 runs sampled)
254
+ opentracing x 57,881 ops/sec ±38.08% (96 runs sampled)
255
255
 
256
256
  Validation :: child span
257
257
  ✔ rian
@@ -259,10 +259,9 @@ Validation :: child span
259
259
  ✔ opentracing
260
260
 
261
261
  Benchmark :: child span
262
- rian x 75,567 ops/sec ±7.95% (77 runs sampled)
263
- opentelemetry x 65,618 ops/sec ±8.45% (82 runs sampled)
264
- opentracing x 15,452 ops/sec ±15.35% (77 runs sampled)
265
-
262
+ rian x 204,952 ops/sec ±5.78% (82 runs sampled)
263
+ opentelemetry x 128,768 ops/sec ±11.47% (68 runs sampled)
264
+ opentracing x 36,181 ops/sec ±0.64% (97 runs sampled)
266
265
  ```
267
266
 
268
267
  > And please... I know these results are anything but the full story. But it's a number and point on comparison.