@sebspark/otel 0.2.2 → 0.2.3

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 CHANGED
@@ -61,7 +61,7 @@ Logs inside active spans automatically include:
61
61
  ```ts
62
62
  import { getTracer } from '@sebspark/otel'
63
63
 
64
- const tracer = getTracer()
64
+ const tracer = getTracer() // async to ensure otel initialization
65
65
 
66
66
  await tracer.withTrace('trace.name', async (span) => {
67
67
  span.setAttribute('user.id', '123')
@@ -111,7 +111,7 @@ span.end()
111
111
  ```ts
112
112
  import { getMeter } from '@sebspark/otel'
113
113
 
114
- const meter = getMeter()
114
+ const meter = getMeter() // async to ensure otel initialization
115
115
 
116
116
  const counter = meter.createCounter('http_requests_total', {
117
117
  description: 'Total number of HTTP requests',
package/dist/index.d.mts CHANGED
@@ -13,7 +13,7 @@ declare function getLogger(serviceOverride?: string, extraAttrs?: Attrs): {
13
13
  emergency: (msg: string, attrs?: Attrs) => void;
14
14
  };
15
15
 
16
- declare function getMeter(componentNameOverride?: string): _opentelemetry_api.Meter;
16
+ declare function getMeter(componentNameOverride?: string): Promise<_opentelemetry_api.Meter>;
17
17
 
18
18
  type OtelTracer = ReturnType<typeof trace.getTracer>;
19
19
  type Span = ReturnType<OtelTracer['startSpan']>;
@@ -45,6 +45,6 @@ interface Tracer extends OtelTracer {
45
45
  * @param serviceOverride - Optional override for service name
46
46
  * @returns Tracer with helpers
47
47
  */
48
- declare function getTracer(componentNameOverride?: string): Tracer;
48
+ declare function getTracer(componentNameOverride?: string): Promise<Tracer>;
49
49
 
50
50
  export { getLogger, getMeter, getTracer };
package/dist/index.d.ts CHANGED
@@ -13,7 +13,7 @@ declare function getLogger(serviceOverride?: string, extraAttrs?: Attrs): {
13
13
  emergency: (msg: string, attrs?: Attrs) => void;
14
14
  };
15
15
 
16
- declare function getMeter(componentNameOverride?: string): _opentelemetry_api.Meter;
16
+ declare function getMeter(componentNameOverride?: string): Promise<_opentelemetry_api.Meter>;
17
17
 
18
18
  type OtelTracer = ReturnType<typeof trace.getTracer>;
19
19
  type Span = ReturnType<OtelTracer['startSpan']>;
@@ -45,6 +45,6 @@ interface Tracer extends OtelTracer {
45
45
  * @param serviceOverride - Optional override for service name
46
46
  * @returns Tracer with helpers
47
47
  */
48
- declare function getTracer(componentNameOverride?: string): Tracer;
48
+ declare function getTracer(componentNameOverride?: string): Promise<Tracer>;
49
49
 
50
50
  export { getLogger, getMeter, getTracer };
package/dist/index.js CHANGED
@@ -619,12 +619,14 @@ var getResource = async () => {
619
619
 
620
620
  // src/otel.ts
621
621
  import_api3.diag.setLogger(new import_api3.DiagConsoleLogger(), import_api3.DiagLogLevel.ERROR);
622
- var isInitialized = false;
622
+ var initialization;
623
623
  async function initialize() {
624
- if (isInitialized) {
625
- return;
624
+ if (!initialization) {
625
+ initialization = _initialize();
626
626
  }
627
- isInitialized = true;
627
+ return initialization;
628
+ }
629
+ async function _initialize() {
628
630
  try {
629
631
  const serviceName = process.env.OTEL_SERVICE_NAME ?? "unknown-service";
630
632
  const otlpEndpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
@@ -657,12 +659,20 @@ var import_api4 = require("@opentelemetry/api");
657
659
  var import_api_logs2 = require("@opentelemetry/api-logs");
658
660
  function getLogger(serviceOverride, extraAttrs = {}) {
659
661
  const { systemName, systemVersion, resourceAttributes } = detectTelemetryContext(serviceOverride);
660
- const logger = import_api_logs2.logs.getLogger(systemName, systemVersion);
661
662
  const defaultAttrs = {
662
663
  ...resourceAttributes,
663
664
  ...extraAttrs
664
665
  };
666
+ let isInitialized = false;
665
667
  function emit(severityText, body, attrs = {}) {
668
+ if (!isInitialized) {
669
+ initialize().then(() => {
670
+ isInitialized = true;
671
+ emit(severityText, body, attrs);
672
+ });
673
+ return;
674
+ }
675
+ const logger = import_api_logs2.logs.getLogger(systemName, systemVersion);
666
676
  const span = import_api4.trace.getSpan(import_api4.context.active());
667
677
  const spanContext = span?.spanContext();
668
678
  logger.emit({
@@ -696,7 +706,8 @@ function getLogger(serviceOverride, extraAttrs = {}) {
696
706
 
697
707
  // src/metrics.ts
698
708
  var import_api5 = require("@opentelemetry/api");
699
- function getMeter(componentNameOverride) {
709
+ async function getMeter(componentNameOverride) {
710
+ await initialize();
700
711
  const { componentName, systemName, systemVersion } = detectTelemetryContext(
701
712
  componentNameOverride
702
713
  );
@@ -705,7 +716,8 @@ function getMeter(componentNameOverride) {
705
716
 
706
717
  // src/tracer.ts
707
718
  var import_api6 = require("@opentelemetry/api");
708
- function getTracer(componentNameOverride) {
719
+ async function getTracer(componentNameOverride) {
720
+ await initialize();
709
721
  const { componentName, systemName, systemVersion } = detectTelemetryContext(
710
722
  componentNameOverride
711
723
  );
package/dist/index.mjs CHANGED
@@ -1,9 +1,5 @@
1
1
  // src/otel.ts
2
- import {
3
- DiagConsoleLogger,
4
- DiagLogLevel,
5
- diag
6
- } from "@opentelemetry/api";
2
+ import { DiagConsoleLogger, DiagLogLevel, diag } from "@opentelemetry/api";
7
3
  import { logs } from "@opentelemetry/api-logs";
8
4
  import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
9
5
  import { NodeSDK } from "@opentelemetry/sdk-node";
@@ -600,12 +596,14 @@ var getResource = async () => {
600
596
 
601
597
  // src/otel.ts
602
598
  diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.ERROR);
603
- var isInitialized = false;
599
+ var initialization;
604
600
  async function initialize() {
605
- if (isInitialized) {
606
- return;
601
+ if (!initialization) {
602
+ initialization = _initialize();
607
603
  }
608
- isInitialized = true;
604
+ return initialization;
605
+ }
606
+ async function _initialize() {
609
607
  try {
610
608
  const serviceName = process.env.OTEL_SERVICE_NAME ?? "unknown-service";
611
609
  const otlpEndpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
@@ -634,17 +632,25 @@ async function initialize() {
634
632
  }
635
633
 
636
634
  // src/logger.ts
637
- import { context as context2, trace } from "@opentelemetry/api";
635
+ import { context, trace } from "@opentelemetry/api";
638
636
  import { logs as logs2 } from "@opentelemetry/api-logs";
639
637
  function getLogger(serviceOverride, extraAttrs = {}) {
640
638
  const { systemName, systemVersion, resourceAttributes } = detectTelemetryContext(serviceOverride);
641
- const logger = logs2.getLogger(systemName, systemVersion);
642
639
  const defaultAttrs = {
643
640
  ...resourceAttributes,
644
641
  ...extraAttrs
645
642
  };
643
+ let isInitialized = false;
646
644
  function emit(severityText, body, attrs = {}) {
647
- const span = trace.getSpan(context2.active());
645
+ if (!isInitialized) {
646
+ initialize().then(() => {
647
+ isInitialized = true;
648
+ emit(severityText, body, attrs);
649
+ });
650
+ return;
651
+ }
652
+ const logger = logs2.getLogger(systemName, systemVersion);
653
+ const span = trace.getSpan(context.active());
648
654
  const spanContext = span?.spanContext();
649
655
  logger.emit({
650
656
  severityText,
@@ -677,7 +683,8 @@ function getLogger(serviceOverride, extraAttrs = {}) {
677
683
 
678
684
  // src/metrics.ts
679
685
  import { metrics } from "@opentelemetry/api";
680
- function getMeter(componentNameOverride) {
686
+ async function getMeter(componentNameOverride) {
687
+ await initialize();
681
688
  const { componentName, systemName, systemVersion } = detectTelemetryContext(
682
689
  componentNameOverride
683
690
  );
@@ -686,11 +693,12 @@ function getMeter(componentNameOverride) {
686
693
 
687
694
  // src/tracer.ts
688
695
  import {
689
- context as context3,
696
+ context as context2,
690
697
  SpanStatusCode as SpanStatusCode3,
691
698
  trace as trace2
692
699
  } from "@opentelemetry/api";
693
- function getTracer(componentNameOverride) {
700
+ async function getTracer(componentNameOverride) {
701
+ await initialize();
694
702
  const { componentName, systemName, systemVersion } = detectTelemetryContext(
695
703
  componentNameOverride
696
704
  );
@@ -704,9 +712,9 @@ function getTracer(componentNameOverride) {
704
712
  spanOrFunc,
705
713
  func
706
714
  );
707
- const parentContext = parent ? trace2.setSpan(context3.active(), parent) : context3.active();
715
+ const parentContext = parent ? trace2.setSpan(context2.active(), parent) : context2.active();
708
716
  const span = tracer.startSpan(name, options, parentContext);
709
- return await context3.with(trace2.setSpan(parentContext, span), async () => {
717
+ return await context2.with(trace2.setSpan(parentContext, span), async () => {
710
718
  try {
711
719
  const result = await fn(span);
712
720
  span.setStatus({ code: SpanStatusCode3.OK });
@@ -727,9 +735,9 @@ function getTracer(componentNameOverride) {
727
735
  spanOrFunc,
728
736
  func
729
737
  );
730
- const parentContext = parent ? trace2.setSpan(context3.active(), parent) : context3.active();
738
+ const parentContext = parent ? trace2.setSpan(context2.active(), parent) : context2.active();
731
739
  const span = tracer.startSpan(name, options, parentContext);
732
- return context3.with(trace2.setSpan(parentContext, span), () => {
740
+ return context2.with(trace2.setSpan(parentContext, span), () => {
733
741
  try {
734
742
  const result = fn(span);
735
743
  span.setStatus({ code: SpanStatusCode3.OK });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sebspark/otel",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",