{"_id":"@atlas-id/observability","_rev":"2-e5e9a96a537c60bb01eb063a2398d9f1","name":"@atlas-id/observability","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@atlas-id/observability","version":"0.1.0","license":"UNLICENSED","_id":"@atlas-id/observability@0.1.0","maintainers":[{"name":"agrufino","email":"agrufino@cloud.opendex.dev"}],"dist":{"shasum":"8a065c78b12e95a23f210e580545682d328e44d5","tarball":"https://registry.npmjs.org/@atlas-id/observability/-/observability-0.1.0.tgz","fileCount":15,"integrity":"sha512-SJHS0vCrY9XBkr3Nf2QxjwtoYXErVPpWr1UCItmPf9E+5vtKuWTXL/EbuoEjj4zjuOtUwY7ktUmybFUHIE45Kw==","signatures":[{"sig":"MEQCIBiO4A7v3pLut+1V5C5cK7pDcaqOk2Lhgct342QmF8ygAiBnPS1O+GNSZNTBkahW93n7wgfNn/zuSlVx7WJnUFVRrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83846},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2b3055d39fb57c0c1c509d24ea41905af3a165cd","private":false,"scripts":{"lint":"eslint --ext .ts .","test":"vitest run","build":"rimraf dist && tsup-node","clean":"rimraf dist && rimraf node_modules","typecheck":"tsc --noEmit"},"_npmUser":{"name":"agrufino","email":"agrufino@cloud.opendex.dev"},"_npmVersion":"11.7.0","description":"Observability helpers for metrics, traces, and logging with OpenTelemetry.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"winston":"^3.15.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-node":"^0.54.0","@opentelemetry/resources":"^1.9.0","@opentelemetry/sdk-metrics":"^1.9.0","@opentelemetry/instrumentation":"^0.54.0","@opentelemetry/context-async-hooks":"^1.9.0","@opentelemetry/semantic-conventions":"^1.9.0","@opentelemetry/exporter-trace-otlp-http":"^0.54.0","@opentelemetry/auto-instrumentations-node":"^0.52.1","@opentelemetry/exporter-metrics-otlp-http":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","vitest":"^4.0.16","typescript":"5.3.3","@types/node":"20.17.6","@types/winston":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/observability_0.1.0_1767398955963_0.08020017493577503","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@atlas-id/observability","version":"0.2.0","private":false,"type":"module","types":"./dist/index.d.ts","main":"./dist/index.cjs","module":"./dist/index.js","license":"UNLICENSED","scripts":{"build":"rimraf dist && tsup-node","typecheck":"tsc --noEmit","test":"vitest run","lint":"eslint --ext .ts .","clean":"rimraf dist && rimraf node_modules"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"dependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/auto-instrumentations-node":"^0.52.1","@opentelemetry/context-async-hooks":"^1.9.0","@opentelemetry/exporter-metrics-otlp-http":"^0.54.0","@opentelemetry/exporter-trace-otlp-http":"^0.54.0","@opentelemetry/instrumentation":"^0.54.0","@opentelemetry/resources":"^1.9.0","@opentelemetry/sdk-metrics":"^1.9.0","@opentelemetry/sdk-node":"^0.54.0","@opentelemetry/semantic-conventions":"^1.9.0","winston":"^3.15.0"},"devDependencies":{"@types/node":"20.17.6","@types/winston":"^2.4.4","rimraf":"^6.1.2","tsup":"^8.5.1","typescript":"5.3.3","vitest":"^4.0.16"},"gitHead":"6a4457ce4796b50316c0c6715efcbb60840d2c79","_id":"@atlas-id/observability@0.2.0","description":"Production-focused observability utilities for Node.js services using OpenTelemetry. This package standardizes tracing, metrics, and logging initialization so services share consistent resource metadata and export behavior.","_nodeVersion":"24.12.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-yi1DIBu89pspiH5lEv/crq19wOWfxMJ+3jvwhmvZYUfU6BNhUW9UysMMJ1Z2PoEx02fYW0vn7kX9SChEZlhTPg==","shasum":"4a685d7c8a15d602d38cd19cc3e1cfdd97783c3a","tarball":"https://registry.npmjs.org/@atlas-id/observability/-/observability-0.2.0.tgz","fileCount":16,"unpackedSize":85575,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBkUTL+OKM9IiSM4wYwp1GLhvMNLBo5TWpHkDmoMdcKiAiBG0aOD6bWPKMNd4AnqT5QTIMrQ+BgZlRa0RWJRucO+NA=="}]},"_npmUser":{"name":"agrufino","email":"agrufino@cloud.opendex.dev"},"directories":{},"maintainers":[{"name":"agrufino","email":"agrufino@cloud.opendex.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/observability_0.2.0_1767400802027_0.08951513847230275"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-03T00:09:15.863Z","modified":"2026-01-03T00:40:02.448Z","0.1.0":"2026-01-03T00:09:16.107Z","0.2.0":"2026-01-03T00:40:02.193Z"},"license":"UNLICENSED","description":"Production-focused observability utilities for Node.js services using OpenTelemetry. This package standardizes tracing, metrics, and logging initialization so services share consistent resource metadata and export behavior.","maintainers":[{"name":"agrufino","email":"agrufino@cloud.opendex.dev"}],"readme":"# Atlas ID Observability\n\nProduction-focused observability utilities for Node.js services using OpenTelemetry.\nThis package standardizes tracing, metrics, and logging initialization so services\nshare consistent resource metadata and export behavior.\n\n## Install\n```bash\npnpm add @atlas-id/observability\n```\n\n## Usage\n### Single entrypoint\n```ts\nimport {\n  initializeObservability,\n  startSpan,\n  createCounter,\n  logWithContext,\n  shutdownObservability,\n} from '@atlas-id/observability';\n\ninitializeObservability({\n  serviceName: 'users-api',\n  serviceVersion: '1.2.3',\n  tracing: { enabled: true },\n  metrics: { enabled: true },\n  logging: { enabled: true },\n  shutdownOnSignal: true,\n});\n\nconst requestCounter = createCounter('http_requests_total', 'Total HTTP requests');\n\nawait startSpan('healthcheck', async (span) => {\n  requestCounter.add(1, { route: '/health' });\n  logWithContext('info', 'healthcheck ok', { spanId: span.spanContext().spanId });\n});\n\nawait shutdownObservability();\n```\n\n### Fine-grained initialization\n```ts\nimport {\n  initializeTracing,\n  initializeMetrics,\n  initializeLogging,\n  shutdownTracing,\n  shutdownMetrics,\n  shutdownLogging,\n} from '@atlas-id/observability';\n\ninitializeTracing({ serviceName: 'users-api' });\ninitializeMetrics({ serviceName: 'users-api' });\ninitializeLogging('users-api');\n\nawait shutdownTracing();\nawait shutdownMetrics();\nshutdownLogging();\n```\n\n## Configuration\n### Tracing (`initializeTracing`)\n- `serviceName` (required)\n- `serviceVersion` (optional, default `0.1.0` or `SERVICE_VERSION`)\n- `endpoint` (optional; OTLP traces endpoint)\n- `enabled` (optional)\n- `resourceAttributes` (optional; extra OpenTelemetry resource attributes)\n- `instrumentations` (optional; override auto-instrumentations)\n\n### Metrics (`initializeMetrics`)\n- `serviceName` (required)\n- `serviceVersion` (optional, default `0.1.0` or `SERVICE_VERSION`)\n- `endpoint` (optional; OTLP metrics endpoint)\n- `exportIntervalMillis` (optional, default `10000`)\n- `enabled` (optional)\n- `resourceAttributes` (optional; extra OpenTelemetry resource attributes)\n\n### Logging (`initializeLogging`)\n- `serviceName` (required)\n- `serviceVersion` (optional, default `0.1.0` or `SERVICE_VERSION`)\n\n### Observability (`initializeObservability`)\n- `shutdownOnSignal` (optional; auto-shutdown on SIGINT/SIGTERM)\n\n## Environment variables\n- `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`\n- `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`\n- `OTEL_EXPORTER_OTLP_ENDPOINT` (base OTLP endpoint)\n- `LOG_LEVEL`\n- `SERVICE_NAME` (used by `getLogger` fallback)\n- `SERVICE_VERSION`\n\n## API Notes\n- `startSpan` accepts sync or async functions and always ends the span.\n- `logWithContext` automatically attaches trace and span IDs from active context when available.\n- `createObservableGauge` registers an async gauge callback.\n\n## Publish\n```bash\npnpm install\npnpm build\nnpm publish --access public\n```\n","readmeFilename":"README.md"}