@xylabs/telemetry 4.9.7 → 4.9.9

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.
@@ -17,6 +17,20 @@ function span(name, fn, tracer) {
17
17
  return fn();
18
18
  }
19
19
  }
20
+ function spanRoot(name, fn, tracer) {
21
+ if (tracer) {
22
+ const span2 = tracer.startSpan(name, { root: true });
23
+ return context.with(trace.setSpan(context.active(), span2), () => {
24
+ try {
25
+ return fn();
26
+ } finally {
27
+ span2.end();
28
+ }
29
+ });
30
+ } else {
31
+ return fn();
32
+ }
33
+ }
20
34
  async function spanAsync(name, fn, tracer) {
21
35
  if (tracer) {
22
36
  const span2 = tracer.startSpan(name);
@@ -31,8 +45,24 @@ async function spanAsync(name, fn, tracer) {
31
45
  return await fn();
32
46
  }
33
47
  }
48
+ async function spanRootAsync(name, fn, tracer) {
49
+ if (tracer) {
50
+ const span2 = tracer.startSpan(name, { root: true });
51
+ return await context.with(trace.setSpan(context.active(), span2), async () => {
52
+ try {
53
+ return await fn();
54
+ } finally {
55
+ span2.end();
56
+ }
57
+ });
58
+ } else {
59
+ return await fn();
60
+ }
61
+ }
34
62
  export {
35
63
  span,
36
- spanAsync
64
+ spanAsync,
65
+ spanRoot,
66
+ spanRootAsync
37
67
  };
38
68
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/span.ts"],"sourcesContent":["import {\n context, trace, type Tracer,\n} from '@opentelemetry/api'\n\nexport function span<T>(name: string, fn: () => T, tracer?: Tracer): T {\n if (tracer) {\n const span = tracer.startSpan(name)\n return context.with(trace.setSpan(context.active(), span), () => {\n try {\n return fn()\n } finally {\n span.end()\n }\n })\n } else {\n return fn()\n }\n}\n\nexport async function spanAsync<T>(\n name: string,\n fn: () => Promise<T>,\n tracer?: Tracer,\n): Promise<T> {\n if (tracer) {\n const span = tracer.startSpan(name)\n return await context.with(trace.setSpan(context.active(), span), async () => {\n try {\n return await fn()\n } finally {\n span.end()\n }\n })\n } else {\n return await fn()\n }\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAAS;AAAA,OACJ;AAEA,SAAS,KAAQ,MAAc,IAAa,QAAoB;AACrE,MAAI,QAAQ;AACV,UAAMA,QAAO,OAAO,UAAU,IAAI;AAClC,WAAO,QAAQ,KAAK,MAAM,QAAQ,QAAQ,OAAO,GAAGA,KAAI,GAAG,MAAM;AAC/D,UAAI;AACF,eAAO,GAAG;AAAA,MACZ,UAAE;AACA,QAAAA,MAAK,IAAI;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,WAAO,GAAG;AAAA,EACZ;AACF;AAEA,eAAsB,UACpB,MACA,IACA,QACY;AACZ,MAAI,QAAQ;AACV,UAAMA,QAAO,OAAO,UAAU,IAAI;AAClC,WAAO,MAAM,QAAQ,KAAK,MAAM,QAAQ,QAAQ,OAAO,GAAGA,KAAI,GAAG,YAAY;AAC3E,UAAI;AACF,eAAO,MAAM,GAAG;AAAA,MAClB,UAAE;AACA,QAAAA,MAAK,IAAI;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;","names":["span"]}
1
+ {"version":3,"sources":["../../src/span.ts"],"sourcesContent":["import {\n context, trace, type Tracer,\n} from '@opentelemetry/api'\n\nexport function span<T>(name: string, fn: () => T, tracer?: Tracer): T {\n if (tracer) {\n const span = tracer.startSpan(name)\n return context.with(trace.setSpan(context.active(), span), () => {\n try {\n return fn()\n } finally {\n span.end()\n }\n })\n } else {\n return fn()\n }\n}\n\nexport function spanRoot<T>(name: string, fn: () => T, tracer?: Tracer): T {\n if (tracer) {\n const span = tracer.startSpan(name, { root: true })\n return context.with(trace.setSpan(context.active(), span), () => {\n try {\n return fn()\n } finally {\n span.end()\n }\n })\n } else {\n return fn()\n }\n}\n\nexport async function spanAsync<T>(\n name: string,\n fn: () => Promise<T>,\n tracer?: Tracer,\n): Promise<T> {\n if (tracer) {\n const span = tracer.startSpan(name)\n return await context.with(trace.setSpan(context.active(), span), async () => {\n try {\n return await fn()\n } finally {\n span.end()\n }\n })\n } else {\n return await fn()\n }\n}\n\nexport async function spanRootAsync<T>(\n name: string,\n fn: () => Promise<T>,\n tracer?: Tracer,\n): Promise<T> {\n if (tracer) {\n const span = tracer.startSpan(name, { root: true })\n return await context.with(trace.setSpan(context.active(), span), async () => {\n try {\n return await fn()\n } finally {\n span.end()\n }\n })\n } else {\n return await fn()\n }\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAAS;AAAA,OACJ;AAEA,SAAS,KAAQ,MAAc,IAAa,QAAoB;AACrE,MAAI,QAAQ;AACV,UAAMA,QAAO,OAAO,UAAU,IAAI;AAClC,WAAO,QAAQ,KAAK,MAAM,QAAQ,QAAQ,OAAO,GAAGA,KAAI,GAAG,MAAM;AAC/D,UAAI;AACF,eAAO,GAAG;AAAA,MACZ,UAAE;AACA,QAAAA,MAAK,IAAI;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,WAAO,GAAG;AAAA,EACZ;AACF;AAEO,SAAS,SAAY,MAAc,IAAa,QAAoB;AACzE,MAAI,QAAQ;AACV,UAAMA,QAAO,OAAO,UAAU,MAAM,EAAE,MAAM,KAAK,CAAC;AAClD,WAAO,QAAQ,KAAK,MAAM,QAAQ,QAAQ,OAAO,GAAGA,KAAI,GAAG,MAAM;AAC/D,UAAI;AACF,eAAO,GAAG;AAAA,MACZ,UAAE;AACA,QAAAA,MAAK,IAAI;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,WAAO,GAAG;AAAA,EACZ;AACF;AAEA,eAAsB,UACpB,MACA,IACA,QACY;AACZ,MAAI,QAAQ;AACV,UAAMA,QAAO,OAAO,UAAU,IAAI;AAClC,WAAO,MAAM,QAAQ,KAAK,MAAM,QAAQ,QAAQ,OAAO,GAAGA,KAAI,GAAG,YAAY;AAC3E,UAAI;AACF,eAAO,MAAM,GAAG;AAAA,MAClB,UAAE;AACA,QAAAA,MAAK,IAAI;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEA,eAAsB,cACpB,MACA,IACA,QACY;AACZ,MAAI,QAAQ;AACV,UAAMA,QAAO,OAAO,UAAU,MAAM,EAAE,MAAM,KAAK,CAAC;AAClD,WAAO,MAAM,QAAQ,KAAK,MAAM,QAAQ,QAAQ,OAAO,GAAGA,KAAI,GAAG,YAAY;AAC3E,UAAI;AACF,eAAO,MAAM,GAAG;AAAA,MAClB,UAAE;AACA,QAAAA,MAAK,IAAI;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;","names":["span"]}
@@ -1,4 +1,6 @@
1
1
  import { type Tracer } from '@opentelemetry/api';
2
2
  export declare function span<T>(name: string, fn: () => T, tracer?: Tracer): T;
3
+ export declare function spanRoot<T>(name: string, fn: () => T, tracer?: Tracer): T;
3
4
  export declare function spanAsync<T>(name: string, fn: () => Promise<T>, tracer?: Tracer): Promise<T>;
5
+ export declare function spanRootAsync<T>(name: string, fn: () => Promise<T>, tracer?: Tracer): Promise<T>;
4
6
  //# sourceMappingURL=span.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"span.d.ts","sourceRoot":"","sources":["../../src/span.ts"],"names":[],"mappings":"AAAA,OAAO,EACW,KAAK,MAAM,EAC5B,MAAM,oBAAoB,CAAA;AAE3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAarE;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,CAAC,CAaZ"}
1
+ {"version":3,"file":"span.d.ts","sourceRoot":"","sources":["../../src/span.ts"],"names":[],"mappings":"AAAA,OAAO,EACW,KAAK,MAAM,EAC5B,MAAM,oBAAoB,CAAA;AAE3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAarE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAazE;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,CAAC,CAaZ;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,CAAC,CAaZ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/telemetry",
3
- "version": "4.9.7",
3
+ "version": "4.9.9",
4
4
  "description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",
5
5
  "keywords": [
6
6
  "hex",
package/src/span.ts CHANGED
@@ -17,6 +17,21 @@ export function span<T>(name: string, fn: () => T, tracer?: Tracer): T {
17
17
  }
18
18
  }
19
19
 
20
+ export function spanRoot<T>(name: string, fn: () => T, tracer?: Tracer): T {
21
+ if (tracer) {
22
+ const span = tracer.startSpan(name, { root: true })
23
+ return context.with(trace.setSpan(context.active(), span), () => {
24
+ try {
25
+ return fn()
26
+ } finally {
27
+ span.end()
28
+ }
29
+ })
30
+ } else {
31
+ return fn()
32
+ }
33
+ }
34
+
20
35
  export async function spanAsync<T>(
21
36
  name: string,
22
37
  fn: () => Promise<T>,
@@ -35,3 +50,22 @@ export async function spanAsync<T>(
35
50
  return await fn()
36
51
  }
37
52
  }
53
+
54
+ export async function spanRootAsync<T>(
55
+ name: string,
56
+ fn: () => Promise<T>,
57
+ tracer?: Tracer,
58
+ ): Promise<T> {
59
+ if (tracer) {
60
+ const span = tracer.startSpan(name, { root: true })
61
+ return await context.with(trace.setSpan(context.active(), span), async () => {
62
+ try {
63
+ return await fn()
64
+ } finally {
65
+ span.end()
66
+ }
67
+ })
68
+ } else {
69
+ return await fn()
70
+ }
71
+ }