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" },