From c07b1c35cb3d25295d3f3fcd72c27bccd53e37fa Mon Sep 17 00:00:00 2001 From: ianwremmel <1182361+ianwremmel@users.noreply.github.com> Date: Sat, 21 Jun 2025 13:09:32 -0700 Subject: [PATCH] feat(telemetry): configure tracer correctly --- package-lock.json | 1 - .../telemetry/package.json | 1 - .../telemetry/src/run-with.ts | 46 ++++++++++++++++--- .../telemetry/tsconfig.json | 3 -- 4 files changed, 39 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d0190f0..3e84c354 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32469,7 +32469,6 @@ "license": "MIT", "dependencies": { "@code-like-a-carpenter/assert": "*", - "@code-like-a-carpenter/env": "*", "@code-like-a-carpenter/exception": "*", "@code-like-a-carpenter/logger": "*", "@opentelemetry/api": "^1.8.0", diff --git a/packages/@code-like-a-carpenter/telemetry/package.json b/packages/@code-like-a-carpenter/telemetry/package.json index 16c6c8f0..1cef8d59 100644 --- a/packages/@code-like-a-carpenter/telemetry/package.json +++ b/packages/@code-like-a-carpenter/telemetry/package.json @@ -27,7 +27,6 @@ }, "dependencies": { "@code-like-a-carpenter/assert": "*", - "@code-like-a-carpenter/env": "*", "@code-like-a-carpenter/exception": "*", "@code-like-a-carpenter/logger": "*", "@opentelemetry/api": "^1.8.0", diff --git a/packages/@code-like-a-carpenter/telemetry/src/run-with.ts b/packages/@code-like-a-carpenter/telemetry/src/run-with.ts index d98a15a7..cf1b525b 100644 --- a/packages/@code-like-a-carpenter/telemetry/src/run-with.ts +++ b/packages/@code-like-a-carpenter/telemetry/src/run-with.ts @@ -1,9 +1,11 @@ -import assert from 'assert'; +import {readFileSync} from 'node:fs'; +import path from 'node:path'; +import {fileURLToPath} from 'node:url'; import type {Context, Span, SpanOptions} from '@opentelemetry/api'; import {SpanKind, trace} from '@opentelemetry/api'; -import {env} from '@code-like-a-carpenter/env'; +import {assert} from '@code-like-a-carpenter/assert'; import {captureException} from './exceptions.ts'; @@ -13,11 +15,41 @@ export function getCurrentSpan() { return trace.getActiveSpan(); } -export function getTracer( - name = env('AWS_LAMBDA_FUNCTION_NAME', 'unknown'), - version = env('AWS_LAMBDA_FUNCTION_VERSION', 'unknown') -) { - return trace.getTracer(name, version); +let tracer: ReturnType | undefined; +function loadPkg() { + console.log({ + d: __dirname, + i: import.meta.url, + }); + const dirname = + typeof import.meta.url === 'string' && import.meta.url.length > 0 + ? path.dirname(fileURLToPath(import.meta.url)) + : __dirname; + + try { + // when readinng from dist + const pkg = JSON.parse( + readFileSync(path.join(dirname, '..', '..', 'package.json'), 'utf8') + ); + return pkg; + } catch (err) { + // when readinng from src + const pkg = JSON.parse( + readFileSync(path.join(dirname, '..', 'package.json'), 'utf8') + ); + return pkg; + } +} +export function getTracer() { + if (tracer) { + return tracer; + } + + const pkg = loadPkg(); + assert(pkg, 'Could not find package.json for this module'); + assert('name' in pkg, 'Package.json must have a name'); + assert(typeof pkg.name === 'string', 'Package name must be a string'); + return trace.getTracer(pkg.name, pkg.version); } /** Runs `fn` with inside specified span */ diff --git a/packages/@code-like-a-carpenter/telemetry/tsconfig.json b/packages/@code-like-a-carpenter/telemetry/tsconfig.json index c7c52902..c255a40c 100644 --- a/packages/@code-like-a-carpenter/telemetry/tsconfig.json +++ b/packages/@code-like-a-carpenter/telemetry/tsconfig.json @@ -9,9 +9,6 @@ { "path": "../assert" }, - { - "path": "../env" - }, { "path": "../exception" },