@ciq-dev/neoiq-foundation-node 1.1.2-beta.7 → 1.1.2-beta.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.
package/dist/bootstrap.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- const require_tracing = require('./tracing-BujFTwI7.js');
2
+ const require_tracing = require('./tracing-Yrfx2JK6.js');
3
3
 
4
4
  //#region src/bootstrap.ts
5
5
  const VALID_ENVIRONMENTS = [
@@ -1,4 +1,4 @@
1
- import { getDefaultOtelEndpoint, setupTracing } from "./tracing-DYGDSAan.mjs";
1
+ import { getDefaultOtelEndpoint, setupTracing } from "./tracing-LOP7TT9u.mjs";
2
2
 
3
3
  //#region src/bootstrap.ts
4
4
  const VALID_ENVIRONMENTS = [
package/dist/index.d.mts CHANGED
@@ -581,18 +581,6 @@ interface TracingOptions {
581
581
  }
582
582
  /** Initialize OpenTelemetry tracing */
583
583
  declare function setupTracing(options: TracingOptions): void;
584
- /**
585
- * Build the full instrumentation list for the NodeSDK.
586
- *
587
- * `auto-instrumentations-node` covers http, express, mongodb, redis, etc., but it
588
- * no longer ships Fastify support — the legacy `@opentelemetry/instrumentation-fastify`
589
- * does not work with Fastify v5. Fastify is therefore instrumented via the official
590
- * `@fastify/otel` plugin, which self-registers on every Fastify instance through the
591
- * `fastify.initialization` diagnostics channel (`registerOnInitialization`) and builds
592
- * its request span beneath the http server span created by `instrumentation-http`
593
- * (enabled above). Without this, Fastify services emit only bare, route-less "GET"
594
- * spans with no request → handler → db waterfall.
595
- */
596
584
  /**
597
585
  * Produce a clean name for a Fastify lifecycle (hook/handler) span.
598
586
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/config.ts","../src/features/context.ts","../src/features/logging.ts","../src/features/tracing.ts","../src/features/metrics.ts","../src/integrations/fastify-plugin.ts","../src/types.ts","../src/foundation.ts","../src/features/redaction.ts","../src/integrations/http-client.ts","../src/features/vault.ts","../src/integrations/object-store/types.ts","../src/integrations/object-store/object-store.ts","../src/integrations/object-store/aws-s3.ts","../src/integrations/object-store/in-memory.ts"],"sourcesContent":null,"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/config.ts","../src/features/context.ts","../src/features/logging.ts","../src/features/tracing.ts","../src/features/metrics.ts","../src/integrations/fastify-plugin.ts","../src/types.ts","../src/foundation.ts","../src/features/redaction.ts","../src/integrations/http-client.ts","../src/features/vault.ts","../src/integrations/object-store/types.ts","../src/integrations/object-store/object-store.ts","../src/integrations/object-store/aws-s3.ts","../src/integrations/object-store/in-memory.ts"],"sourcesContent":null,"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -581,18 +581,6 @@ interface TracingOptions {
581
581
  }
582
582
  /** Initialize OpenTelemetry tracing */
583
583
  declare function setupTracing(options: TracingOptions): void;
584
- /**
585
- * Build the full instrumentation list for the NodeSDK.
586
- *
587
- * `auto-instrumentations-node` covers http, express, mongodb, redis, etc., but it
588
- * no longer ships Fastify support — the legacy `@opentelemetry/instrumentation-fastify`
589
- * does not work with Fastify v5. Fastify is therefore instrumented via the official
590
- * `@fastify/otel` plugin, which self-registers on every Fastify instance through the
591
- * `fastify.initialization` diagnostics channel (`registerOnInitialization`) and builds
592
- * its request span beneath the http server span created by `instrumentation-http`
593
- * (enabled above). Without this, Fastify services emit only bare, route-less "GET"
594
- * spans with no request → handler → db waterfall.
595
- */
596
584
  /**
597
585
  * Produce a clean name for a Fastify lifecycle (hook/handler) span.
598
586
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/config.ts","../src/features/context.ts","../src/features/logging.ts","../src/features/tracing.ts","../src/features/metrics.ts","../src/integrations/fastify-plugin.ts","../src/types.ts","../src/foundation.ts","../src/features/redaction.ts","../src/integrations/http-client.ts","../src/features/vault.ts","../src/integrations/object-store/types.ts","../src/integrations/object-store/object-store.ts","../src/integrations/object-store/aws-s3.ts","../src/integrations/object-store/in-memory.ts"],"sourcesContent":null,"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/config.ts","../src/features/context.ts","../src/features/logging.ts","../src/features/tracing.ts","../src/features/metrics.ts","../src/integrations/fastify-plugin.ts","../src/types.ts","../src/foundation.ts","../src/features/redaction.ts","../src/integrations/http-client.ts","../src/features/vault.ts","../src/integrations/object-store/types.ts","../src/integrations/object-store/object-store.ts","../src/integrations/object-store/aws-s3.ts","../src/integrations/object-store/in-memory.ts"],"sourcesContent":null,"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- const require_tracing = require('./tracing-BujFTwI7.js');
2
+ const require_tracing = require('./tracing-Yrfx2JK6.js');
3
3
  const __opentelemetry_resources = require_tracing.__toESM(require("@opentelemetry/resources"));
4
4
  const __opentelemetry_semantic_conventions = require_tracing.__toESM(require("@opentelemetry/semantic-conventions"));
5
5
  const __opentelemetry_api = require_tracing.__toESM(require("@opentelemetry/api"));
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { AutoInstrumentationConfigSchema, FeaturesConfigSchema, FoundationConfigSchema, LoggingConfigSchema, OtelConfigSchema, RedactionConfigSchema, RequestLoggingConfigSchema, ShutdownConfigSchema, SpanStatusCode, VaultConfigSchema, context, getActiveSpan, getDefaultOtelEndpoint, getTraceContext, getTracer, isTracingEnabled, parseConfig, propagation, setupTracing, shutdownTracing, trace } from "./tracing-DYGDSAan.mjs";
1
+ import { AutoInstrumentationConfigSchema, FeaturesConfigSchema, FoundationConfigSchema, LoggingConfigSchema, OtelConfigSchema, RedactionConfigSchema, RequestLoggingConfigSchema, ShutdownConfigSchema, SpanStatusCode, VaultConfigSchema, context, getActiveSpan, getDefaultOtelEndpoint, getTraceContext, getTracer, isTracingEnabled, parseConfig, propagation, setupTracing, shutdownTracing, trace } from "./tracing-LOP7TT9u.mjs";
2
2
  import { resourceFromAttributes } from "@opentelemetry/resources";
3
3
  import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
4
4
  import { SpanStatusCode as SpanStatusCode$1, context as context$1, metrics, propagation as propagation$1, trace as trace$1 } from "@opentelemetry/api";
@@ -106,6 +106,12 @@ function getDefaultOtelEndpoint() {
106
106
 
107
107
  //#endregion
108
108
  //#region src/features/tracing.ts
109
+ /** User-agents of infrastructure health-checkers whose requests we don't trace. */
110
+ const HEALTHCHECK_USER_AGENT_PREFIXES = [
111
+ "ELB-HealthChecker",
112
+ "kube-probe",
113
+ "GoogleHC"
114
+ ];
109
115
  let sdk = null;
110
116
  let isInitialized = false;
111
117
  const MONITORED_MODULES = [
@@ -149,18 +155,6 @@ function setupTracing(options) {
149
155
  isInitialized = true;
150
156
  }
151
157
  /**
152
- * Build the full instrumentation list for the NodeSDK.
153
- *
154
- * `auto-instrumentations-node` covers http, express, mongodb, redis, etc., but it
155
- * no longer ships Fastify support — the legacy `@opentelemetry/instrumentation-fastify`
156
- * does not work with Fastify v5. Fastify is therefore instrumented via the official
157
- * `@fastify/otel` plugin, which self-registers on every Fastify instance through the
158
- * `fastify.initialization` diagnostics channel (`registerOnInitialization`) and builds
159
- * its request span beneath the http server span created by `instrumentation-http`
160
- * (enabled above). Without this, Fastify services emit only bare, route-less "GET"
161
- * spans with no request → handler → db waterfall.
162
- */
163
- /**
164
158
  * Produce a clean name for a Fastify lifecycle (hook/handler) span.
165
159
  *
166
160
  * @fastify/otel names these "<hook> - <fn name>", but anonymous hook functions fall
@@ -174,24 +168,32 @@ function cleanLifecycleSpanName(hookName, handlerName, routeUrl) {
174
168
  if (!handlerName.includes(" -> ")) return null;
175
169
  return routeUrl ? `${hookName} ${routeUrl}` : hookName;
176
170
  }
171
+ /**
172
+ * Build the full instrumentation list for the NodeSDK.
173
+ *
174
+ * auto-instrumentations-node covers http, mongodb, redis, etc., but it no longer
175
+ * bundles Fastify, so Fastify is added explicitly via @fastify/otel (the Fastify
176
+ * core team's official OpenTelemetry plugin, v4–v5). With registerOnInitialization it
177
+ * self-registers on every Fastify instance via the fastify.initialization diagnostics
178
+ * channel, and — riding on instrumentation-http — names the server span "GET /route"
179
+ * and emits the request → hook → handler waterfall (the Fastify equivalent of the
180
+ * Express middleware spans on sibling services), with DB spans nesting underneath.
181
+ */
177
182
  function buildInstrumentations(autoInstrumentation = {}) {
178
183
  const instrumentations = [...getNodeAutoInstrumentations(buildInstrumentationConfig(autoInstrumentation))];
179
- if (autoInstrumentation.fastify !== false) {
180
- const fastifyOtel = new FastifyOtelInstrumentation({
181
- registerOnInitialization: true,
182
- requestHook: (span, request) => {
183
- const routeUrl = request.routeOptions?.url;
184
- const method = request.method;
185
- if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);
186
- },
187
- lifecycleHook: (span, info) => {
188
- const i = info;
189
- const cleaned = cleanLifecycleSpanName(i.hookName ?? "", typeof i.handler === "string" ? i.handler : "", i.request?.routeOptions?.url);
190
- if (cleaned) span.updateName(cleaned);
191
- }
192
- });
193
- instrumentations.push(fastifyOtel);
194
- }
184
+ if (autoInstrumentation.fastify !== false) instrumentations.push(new FastifyOtelInstrumentation({
185
+ registerOnInitialization: true,
186
+ requestHook: (span, request) => {
187
+ const routeUrl = request.routeOptions?.url;
188
+ const method = request.method;
189
+ if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);
190
+ },
191
+ lifecycleHook: (span, info) => {
192
+ const i = info;
193
+ const cleaned = cleanLifecycleSpanName(i.hookName ?? "", typeof i.handler === "string" ? i.handler : "", i.request?.routeOptions?.url);
194
+ if (cleaned) span.updateName(cleaned);
195
+ }
196
+ }));
195
197
  return instrumentations;
196
198
  }
197
199
  function buildInstrumentationConfig(config) {
@@ -213,6 +215,14 @@ function buildInstrumentationConfig(config) {
213
215
  const defaultValue = key !== "fs" && key !== "dns";
214
216
  result[instrumentationName] = { enabled: userSetting ?? defaultValue };
215
217
  }
218
+ result["@opentelemetry/instrumentation-http"] = {
219
+ ...result["@opentelemetry/instrumentation-http"],
220
+ ignoreIncomingRequestHook: (request) => {
221
+ const ua = request.headers?.["user-agent"];
222
+ const uaStr = Array.isArray(ua) ? ua[0] ?? "" : ua ?? "";
223
+ return HEALTHCHECK_USER_AGENT_PREFIXES.some((prefix) => uaStr.startsWith(prefix));
224
+ }
225
+ };
216
226
  return result;
217
227
  }
218
228
  /** Shutdown tracing gracefully */
@@ -248,4 +258,4 @@ function isTracingEnabled() {
248
258
 
249
259
  //#endregion
250
260
  export { AutoInstrumentationConfigSchema, FeaturesConfigSchema, FoundationConfigSchema, LoggingConfigSchema, OtelConfigSchema, RedactionConfigSchema, RequestLoggingConfigSchema, ShutdownConfigSchema, SpanStatusCode$1 as SpanStatusCode, VaultConfigSchema, context$1 as context, getActiveSpan, getDefaultOtelEndpoint, getTraceContext, getTracer, isTracingEnabled, parseConfig, propagation$1 as propagation, setupTracing, shutdownTracing, trace$1 as trace };
251
- //# sourceMappingURL=tracing-DYGDSAan.mjs.map
261
+ //# sourceMappingURL=tracing-LOP7TT9u.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing-LOP7TT9u.mjs","names":["input: FoundationConfigInput","sdk: NodeSDK | null","options: TracingOptions","hookName: string","handlerName: string","routeUrl?: string","autoInstrumentation: AutoInstrumentationConfig","instrumentations: Instrumentation[]","config: AutoInstrumentationConfig","mapping: Record<string, string>","result: Record<string, Record<string, unknown>>","request: {\n headers?: Record<string, string | string[] | undefined>;\n }","name: string"],"sources":["../src/config.ts","../src/features/tracing.ts"],"sourcesContent":["/**\n * Foundation Configuration with Zod Validation\n */\n\nimport { z } from 'zod';\n\n// Auto-Instrumentation Config\nexport const AutoInstrumentationConfigSchema = z\n .object({\n http: z.boolean().default(true),\n fastify: z.boolean().default(true),\n express: z.boolean().default(true),\n mongodb: z.boolean().default(true),\n pg: z.boolean().default(true),\n mysql: z.boolean().default(true),\n redis: z.boolean().default(true),\n ioredis: z.boolean().default(true),\n grpc: z.boolean().default(true),\n fs: z.boolean().default(false),\n dns: z.boolean().default(false),\n })\n .partial();\n\nexport type AutoInstrumentationConfig = z.infer<typeof AutoInstrumentationConfigSchema>;\n\n// Features Config\nexport const FeaturesConfigSchema = z\n .object({\n tracing: z.boolean().default(true),\n metrics: z.boolean().default(true),\n logging: z.boolean().default(true),\n autoInstrumentation: AutoInstrumentationConfigSchema.default({}),\n })\n .partial();\n\nexport type FeaturesConfig = z.infer<typeof FeaturesConfigSchema>;\n\n// OTEL Config\nconst DEFAULT_OTEL_ENDPOINT =\n 'http://otel-stack-deployment-collector.observability.svc.cluster.local:4317';\n\nexport const OtelConfigSchema = z.object({\n endpoint: z\n .string()\n .default(() => process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT),\n metricsIntervalMs: z.number().min(1000).default(5000),\n});\n\nexport type OtelConfig = z.infer<typeof OtelConfigSchema>;\n\n// Logging Config\nexport const LoggingConfigSchema = z\n .object({\n level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),\n prettyPrint: z.boolean().optional(),\n })\n .partial();\n\nexport type LoggingConfig = z.infer<typeof LoggingConfigSchema>;\n\n// Request Logging Config\nexport const RequestLoggingConfigSchema = z\n .object({\n logHeaders: z.boolean().default(true),\n logBody: z.boolean().default(false),\n logResponseBody: z.boolean().default(false),\n maxBodySize: z.number().default(10 * 1024),\n redactHeaders: z.array(z.string()).optional(),\n })\n .partial();\n\nexport type RequestLoggingConfig = z.infer<typeof RequestLoggingConfigSchema>;\n\n// Redaction Config\nexport const RedactionConfigSchema = z\n .object({\n additionalPaths: z.array(z.string()).default([]),\n })\n .partial();\n\nexport type RedactionConfig = z.infer<typeof RedactionConfigSchema>;\n\n// Shutdown Config\nexport const ShutdownConfigSchema = z\n .object({\n /** Flush telemetry on uncaughtException / unhandledRejection before process exits */\n flushOnCrash: z.boolean().default(false),\n /** Grace period (ms) for flushing before forcing exit */\n flushTimeoutMs: z.number().min(100).default(5000),\n })\n .partial();\n\nexport type ShutdownConfig = z.infer<typeof ShutdownConfigSchema>;\n\n// Vault Config\nexport const VaultConfigSchema = z.object({\n enabled: z.boolean().default(false),\n address: z.string().default('https://vault.beta.commerceiq.ai'),\n authMethod: z.enum(['kubernetes', 'token']).default('kubernetes'),\n role: z.string().optional(),\n mountPoint: z.string().default('secret'),\n tokenPath: z.string().default('/var/run/secrets/kubernetes.io/serviceaccount/token'),\n k8sAuthMount: z.string().default('kubernetes'),\n namespace: z.string().optional(),\n});\n\nexport type VaultConfig = z.infer<typeof VaultConfigSchema>;\n\n// Main Foundation Config\nexport const FoundationConfigSchema = z.object({\n serviceName: z.string().min(1, 'serviceName is required'),\n serviceVersion: z.string().default(process.env.SERVICE_VERSION || '1.0.0'),\n environment: z\n .enum(['development', 'staging', 'qa', 'production'])\n .default(\n ['development', 'staging', 'qa', 'production'].includes(process.env.NODE_ENV ?? '')\n ? (process.env.NODE_ENV as 'development' | 'staging' | 'qa' | 'production')\n : 'development'\n ),\n features: FeaturesConfigSchema.default({}),\n otel: OtelConfigSchema.default({}),\n logging: LoggingConfigSchema.default({}),\n requestLogging: RequestLoggingConfigSchema.default({}),\n redaction: RedactionConfigSchema.default({}),\n shutdown: ShutdownConfigSchema.default({}),\n vault: VaultConfigSchema.default({}),\n});\n\nexport type FoundationConfig = z.infer<typeof FoundationConfigSchema>;\n\nexport type FoundationConfigInput = z.input<typeof FoundationConfigSchema> & {\n serviceName: string;\n};\n\n/** Parse and validate configuration */\nexport function parseConfig(input: FoundationConfigInput): FoundationConfig {\n const result = FoundationConfigSchema.safeParse(input);\n\n if (!result.success) {\n const errors = result.error.errors\n .map((e) => ` - ${e.path.join('.')}: ${e.message}`)\n .join('\\n');\n throw new Error(`Invalid foundation configuration:\\n${errors}`);\n }\n\n return result.data;\n}\n\n/** Get default OTEL endpoint */\nexport function getDefaultOtelEndpoint(): string {\n return process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT;\n}\n","/**\n * OpenTelemetry Tracing Setup\n */\n\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { trace, context, propagation, SpanStatusCode, type Tracer } from '@opentelemetry/api';\nimport { type IMetricReader } from '@opentelemetry/sdk-metrics';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport { type AutoInstrumentationConfig, getDefaultOtelEndpoint } from '../config';\n\n/**\n * Element type of the NodeSDK instrumentations list. Derived from\n * getNodeAutoInstrumentations so we don't take a direct import on\n * @opentelemetry/instrumentation (only a transitive dependency here).\n */\ntype Instrumentation = ReturnType<typeof getNodeAutoInstrumentations>[number];\ntype InstrumentationConfigMap = Parameters<typeof getNodeAutoInstrumentations>[0];\n\n/** User-agents of infrastructure health-checkers whose requests we don't trace. */\nconst HEALTHCHECK_USER_AGENT_PREFIXES = ['ELB-HealthChecker', 'kube-probe', 'GoogleHC'];\n\nexport interface TracingOptions {\n serviceName: string;\n serviceVersion: string;\n environment: string;\n endpoint?: string;\n autoInstrumentation?: AutoInstrumentationConfig;\n /**\n * Metric reader to attach to the NodeSDK so a single SDK owns both traces and\n * metrics (one global MeterProvider, same gRPC collector). When provided, NodeSDK\n * is the sole owner of metrics; when omitted, NodeSDK is opted out of metrics\n * entirely (see below) so it never registers a stray default MeterProvider.\n */\n metricReader?: IMetricReader;\n}\n\nlet sdk: NodeSDK | null = null;\nlet isInitialized = false;\n\nconst MONITORED_MODULES = ['pg', 'mongodb', 'ioredis', 'mysql2', 'express', '@grpc/grpc-js'];\n\nfunction warnPreloadedModules(): void {\n // require.resolve / require.cache are only available in CJS contexts\n if (typeof require === 'undefined' || typeof require.cache === 'undefined') return;\n\n for (const mod of MONITORED_MODULES) {\n try {\n const resolved = require.resolve(mod);\n if (require.cache[resolved]) {\n console.warn(\n `[neoiq-foundation] \"${mod}\" was imported before tracing init. ` +\n 'Auto-instrumentation may not work for this module. ' +\n 'Use node -r @ciq-dev/neoiq-foundation-node/bootstrap or call createFoundation() first.'\n );\n }\n } catch {\n // Module not installed — no warning needed\n }\n }\n}\n\n/** Initialize OpenTelemetry tracing */\nexport function setupTracing(options: TracingOptions): void {\n if (isInitialized) {\n console.warn('[neoiq-foundation] Tracing already initialized');\n return;\n }\n\n warnPreloadedModules();\n\n const {\n serviceName,\n serviceVersion,\n environment,\n endpoint = getDefaultOtelEndpoint(),\n autoInstrumentation = {},\n metricReader,\n } = options;\n\n const resource = resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n [ATTR_SERVICE_VERSION]: serviceVersion,\n 'deployment.environment': environment,\n });\n\n const traceExporter = new OTLPTraceExporter({ url: endpoint });\n\n // Foundation owns every OpenTelemetry signal explicitly. Left to its own devices,\n // NodeSDK auto-configures metrics AND logs exporters from env defaults — both OTLP\n // over HTTP to localhost:4318 — which nothing listens on, producing ECONNREFUSED\n // spam every export interval. We therefore configure each signal on NodeSDK directly:\n // - traces: the explicit gRPC exporter above.\n // - metrics: the explicit gRPC reader when provided (single SDK, single global\n // MeterProvider, same collector as traces). When metrics are disabled\n // and the deployer hasn't chosen an exporter, opt NodeSDK out via\n // OTEL_METRICS_EXPORTER=none (the only switch NodeSDK exposes for that).\n // - logs: foundation logs via pino, never OTLP. Passing an empty processor list\n // stops NodeSDK from falling back to its env-default localhost:4318 log\n // exporter (`logRecordProcessors: []` takes the explicit branch and skips\n // configureLoggerProviderFromEnv()).\n if (!metricReader && !process.env.OTEL_METRICS_EXPORTER) {\n process.env.OTEL_METRICS_EXPORTER = 'none';\n }\n\n sdk = new NodeSDK({\n resource,\n traceExporter,\n ...(metricReader ? { metricReaders: [metricReader] } : {}),\n logRecordProcessors: [],\n instrumentations: buildInstrumentations(autoInstrumentation),\n });\n\n sdk.start();\n isInitialized = true;\n}\n\n/**\n * Produce a clean name for a Fastify lifecycle (hook/handler) span.\n *\n * @fastify/otel names these \"<hook> - <fn name>\", but anonymous hook functions fall\n * back to the full plugin-encapsulation chain (\"fastify -> @fastify/otel -> ... ->\n * @fastify/x\"), which is unreadable. When that chain is detected, collapse it to a\n * clean, route-scoped name (e.g. \"onRequest /api/v1/foo\"). Returns `null` when the\n * span is already cleanly named (a named hook like \"onRequest - handleCors\"), so the\n * caller leaves it untouched.\n */\nexport function cleanLifecycleSpanName(\n hookName: string,\n handlerName: string,\n routeUrl?: string\n): string | null {\n if (!handlerName.includes(' -> ')) return null;\n return routeUrl ? `${hookName} ${routeUrl}` : hookName;\n}\n\n/**\n * Build the full instrumentation list for the NodeSDK.\n *\n * auto-instrumentations-node covers http, mongodb, redis, etc., but it no longer\n * bundles Fastify, so Fastify is added explicitly via @fastify/otel (the Fastify\n * core team's official OpenTelemetry plugin, v4–v5). With registerOnInitialization it\n * self-registers on every Fastify instance via the fastify.initialization diagnostics\n * channel, and — riding on instrumentation-http — names the server span \"GET /route\"\n * and emits the request → hook → handler waterfall (the Fastify equivalent of the\n * Express middleware spans on sibling services), with DB spans nesting underneath.\n */\nexport function buildInstrumentations(\n autoInstrumentation: AutoInstrumentationConfig = {}\n): Instrumentation[] {\n const instrumentations: Instrumentation[] = [\n ...getNodeAutoInstrumentations(buildInstrumentationConfig(autoInstrumentation)),\n ];\n\n if (autoInstrumentation.fastify !== false) {\n instrumentations.push(\n new FastifyOtelInstrumentation({\n registerOnInitialization: true,\n // Name the Fastify request span \"METHOD /route\" (route template, low cardinality).\n requestHook: (span, request) => {\n const routeUrl = (request as { routeOptions?: { url?: string } }).routeOptions?.url;\n const method = (request as { method?: string }).method;\n if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);\n },\n // Collapse the verbose anonymous-hook plugin chains into readable names.\n lifecycleHook: (span, info) => {\n const i = info as {\n hookName?: string;\n handler?: unknown;\n request?: { routeOptions?: { url?: string } };\n };\n const cleaned = cleanLifecycleSpanName(\n i.hookName ?? '',\n typeof i.handler === 'string' ? i.handler : '',\n i.request?.routeOptions?.url\n );\n if (cleaned) span.updateName(cleaned);\n },\n })\n );\n }\n\n return instrumentations;\n}\n\nfunction buildInstrumentationConfig(config: AutoInstrumentationConfig): InstrumentationConfigMap {\n const mapping: Record<string, string> = {\n http: '@opentelemetry/instrumentation-http',\n // Fastify is intentionally absent here — it's not in the auto-instrumentations\n // bundle and is added separately in buildInstrumentations() via\n // @opentelemetry/instrumentation-fastify.\n express: '@opentelemetry/instrumentation-express',\n mongodb: '@opentelemetry/instrumentation-mongodb',\n pg: '@opentelemetry/instrumentation-pg',\n mysql: '@opentelemetry/instrumentation-mysql',\n redis: '@opentelemetry/instrumentation-redis',\n ioredis: '@opentelemetry/instrumentation-ioredis',\n grpc: '@opentelemetry/instrumentation-grpc',\n fs: '@opentelemetry/instrumentation-fs',\n dns: '@opentelemetry/instrumentation-dns',\n };\n\n const result: Record<string, Record<string, unknown>> = {};\n for (const [key, instrumentationName] of Object.entries(mapping)) {\n const userSetting = config[key as keyof AutoInstrumentationConfig];\n const defaultValue = key !== 'fs' && key !== 'dns';\n result[instrumentationName] = { enabled: userSetting ?? defaultValue };\n }\n\n // Don't create spans for infrastructure health-checks (ELB / kube-probe / GoogleHC).\n // They're high-volume, low-value, and otherwise dominate (and skew sampling of) traces.\n result['@opentelemetry/instrumentation-http'] = {\n ...result['@opentelemetry/instrumentation-http'],\n ignoreIncomingRequestHook: (request: {\n headers?: Record<string, string | string[] | undefined>;\n }) => {\n const ua = request.headers?.['user-agent'];\n const uaStr = Array.isArray(ua) ? (ua[0] ?? '') : (ua ?? '');\n return HEALTHCHECK_USER_AGENT_PREFIXES.some((prefix) => uaStr.startsWith(prefix));\n },\n };\n\n return result as InstrumentationConfigMap;\n}\n\n/** Shutdown tracing gracefully */\nexport async function shutdownTracing(): Promise<void> {\n if (!sdk) return;\n try {\n await sdk.shutdown();\n isInitialized = false;\n sdk = null;\n } catch (error) {\n console.error('[neoiq-foundation] Error shutting down tracing:', error);\n throw error;\n }\n}\n\nexport function getTracer(name: string): Tracer {\n return trace.getTracer(name);\n}\n\nexport function getActiveSpan(): ReturnType<typeof trace.getActiveSpan> {\n return trace.getActiveSpan();\n}\n\nexport function getTraceContext(): { traceId?: string; spanId?: string } {\n const span = trace.getActiveSpan();\n if (!span) return {};\n const ctx = span.spanContext();\n return { traceId: ctx.traceId, spanId: ctx.spanId };\n}\n\nexport function isTracingEnabled(): boolean {\n return isInitialized;\n}\n\nexport { trace, context, propagation, SpanStatusCode };\nexport type { Tracer };\n"],"mappings":"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"}
@@ -125,6 +125,12 @@ function getDefaultOtelEndpoint() {
125
125
 
126
126
  //#endregion
127
127
  //#region src/features/tracing.ts
128
+ /** User-agents of infrastructure health-checkers whose requests we don't trace. */
129
+ const HEALTHCHECK_USER_AGENT_PREFIXES = [
130
+ "ELB-HealthChecker",
131
+ "kube-probe",
132
+ "GoogleHC"
133
+ ];
128
134
  let sdk = null;
129
135
  let isInitialized = false;
130
136
  const MONITORED_MODULES = [
@@ -168,18 +174,6 @@ function setupTracing(options) {
168
174
  isInitialized = true;
169
175
  }
170
176
  /**
171
- * Build the full instrumentation list for the NodeSDK.
172
- *
173
- * `auto-instrumentations-node` covers http, express, mongodb, redis, etc., but it
174
- * no longer ships Fastify support — the legacy `@opentelemetry/instrumentation-fastify`
175
- * does not work with Fastify v5. Fastify is therefore instrumented via the official
176
- * `@fastify/otel` plugin, which self-registers on every Fastify instance through the
177
- * `fastify.initialization` diagnostics channel (`registerOnInitialization`) and builds
178
- * its request span beneath the http server span created by `instrumentation-http`
179
- * (enabled above). Without this, Fastify services emit only bare, route-less "GET"
180
- * spans with no request → handler → db waterfall.
181
- */
182
- /**
183
177
  * Produce a clean name for a Fastify lifecycle (hook/handler) span.
184
178
  *
185
179
  * @fastify/otel names these "<hook> - <fn name>", but anonymous hook functions fall
@@ -193,24 +187,32 @@ function cleanLifecycleSpanName(hookName, handlerName, routeUrl) {
193
187
  if (!handlerName.includes(" -> ")) return null;
194
188
  return routeUrl ? `${hookName} ${routeUrl}` : hookName;
195
189
  }
190
+ /**
191
+ * Build the full instrumentation list for the NodeSDK.
192
+ *
193
+ * auto-instrumentations-node covers http, mongodb, redis, etc., but it no longer
194
+ * bundles Fastify, so Fastify is added explicitly via @fastify/otel (the Fastify
195
+ * core team's official OpenTelemetry plugin, v4–v5). With registerOnInitialization it
196
+ * self-registers on every Fastify instance via the fastify.initialization diagnostics
197
+ * channel, and — riding on instrumentation-http — names the server span "GET /route"
198
+ * and emits the request → hook → handler waterfall (the Fastify equivalent of the
199
+ * Express middleware spans on sibling services), with DB spans nesting underneath.
200
+ */
196
201
  function buildInstrumentations(autoInstrumentation = {}) {
197
202
  const instrumentations = [...(0, __opentelemetry_auto_instrumentations_node.getNodeAutoInstrumentations)(buildInstrumentationConfig(autoInstrumentation))];
198
- if (autoInstrumentation.fastify !== false) {
199
- const fastifyOtel = new __fastify_otel.FastifyOtelInstrumentation({
200
- registerOnInitialization: true,
201
- requestHook: (span, request) => {
202
- const routeUrl = request.routeOptions?.url;
203
- const method = request.method;
204
- if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);
205
- },
206
- lifecycleHook: (span, info) => {
207
- const i = info;
208
- const cleaned = cleanLifecycleSpanName(i.hookName ?? "", typeof i.handler === "string" ? i.handler : "", i.request?.routeOptions?.url);
209
- if (cleaned) span.updateName(cleaned);
210
- }
211
- });
212
- instrumentations.push(fastifyOtel);
213
- }
203
+ if (autoInstrumentation.fastify !== false) instrumentations.push(new __fastify_otel.FastifyOtelInstrumentation({
204
+ registerOnInitialization: true,
205
+ requestHook: (span, request) => {
206
+ const routeUrl = request.routeOptions?.url;
207
+ const method = request.method;
208
+ if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);
209
+ },
210
+ lifecycleHook: (span, info) => {
211
+ const i = info;
212
+ const cleaned = cleanLifecycleSpanName(i.hookName ?? "", typeof i.handler === "string" ? i.handler : "", i.request?.routeOptions?.url);
213
+ if (cleaned) span.updateName(cleaned);
214
+ }
215
+ }));
214
216
  return instrumentations;
215
217
  }
216
218
  function buildInstrumentationConfig(config) {
@@ -232,6 +234,14 @@ function buildInstrumentationConfig(config) {
232
234
  const defaultValue = key !== "fs" && key !== "dns";
233
235
  result[instrumentationName] = { enabled: userSetting ?? defaultValue };
234
236
  }
237
+ result["@opentelemetry/instrumentation-http"] = {
238
+ ...result["@opentelemetry/instrumentation-http"],
239
+ ignoreIncomingRequestHook: (request) => {
240
+ const ua = request.headers?.["user-agent"];
241
+ const uaStr = Array.isArray(ua) ? ua[0] ?? "" : ua ?? "";
242
+ return HEALTHCHECK_USER_AGENT_PREFIXES.some((prefix) => uaStr.startsWith(prefix));
243
+ }
244
+ };
235
245
  return result;
236
246
  }
237
247
  /** Shutdown tracing gracefully */
@@ -374,4 +384,4 @@ Object.defineProperty(exports, 'shutdownTracing', {
374
384
  return shutdownTracing;
375
385
  }
376
386
  });
377
- //# sourceMappingURL=tracing-BujFTwI7.js.map
387
+ //# sourceMappingURL=tracing-Yrfx2JK6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing-Yrfx2JK6.js","names":["input: FoundationConfigInput","sdk: NodeSDK | null","options: TracingOptions","hookName: string","handlerName: string","routeUrl?: string","autoInstrumentation: AutoInstrumentationConfig","instrumentations: Instrumentation[]","config: AutoInstrumentationConfig","mapping: Record<string, string>","result: Record<string, Record<string, unknown>>","request: {\n headers?: Record<string, string | string[] | undefined>;\n }","name: string"],"sources":["../src/config.ts","../src/features/tracing.ts"],"sourcesContent":["/**\n * Foundation Configuration with Zod Validation\n */\n\nimport { z } from 'zod';\n\n// Auto-Instrumentation Config\nexport const AutoInstrumentationConfigSchema = z\n .object({\n http: z.boolean().default(true),\n fastify: z.boolean().default(true),\n express: z.boolean().default(true),\n mongodb: z.boolean().default(true),\n pg: z.boolean().default(true),\n mysql: z.boolean().default(true),\n redis: z.boolean().default(true),\n ioredis: z.boolean().default(true),\n grpc: z.boolean().default(true),\n fs: z.boolean().default(false),\n dns: z.boolean().default(false),\n })\n .partial();\n\nexport type AutoInstrumentationConfig = z.infer<typeof AutoInstrumentationConfigSchema>;\n\n// Features Config\nexport const FeaturesConfigSchema = z\n .object({\n tracing: z.boolean().default(true),\n metrics: z.boolean().default(true),\n logging: z.boolean().default(true),\n autoInstrumentation: AutoInstrumentationConfigSchema.default({}),\n })\n .partial();\n\nexport type FeaturesConfig = z.infer<typeof FeaturesConfigSchema>;\n\n// OTEL Config\nconst DEFAULT_OTEL_ENDPOINT =\n 'http://otel-stack-deployment-collector.observability.svc.cluster.local:4317';\n\nexport const OtelConfigSchema = z.object({\n endpoint: z\n .string()\n .default(() => process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT),\n metricsIntervalMs: z.number().min(1000).default(5000),\n});\n\nexport type OtelConfig = z.infer<typeof OtelConfigSchema>;\n\n// Logging Config\nexport const LoggingConfigSchema = z\n .object({\n level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),\n prettyPrint: z.boolean().optional(),\n })\n .partial();\n\nexport type LoggingConfig = z.infer<typeof LoggingConfigSchema>;\n\n// Request Logging Config\nexport const RequestLoggingConfigSchema = z\n .object({\n logHeaders: z.boolean().default(true),\n logBody: z.boolean().default(false),\n logResponseBody: z.boolean().default(false),\n maxBodySize: z.number().default(10 * 1024),\n redactHeaders: z.array(z.string()).optional(),\n })\n .partial();\n\nexport type RequestLoggingConfig = z.infer<typeof RequestLoggingConfigSchema>;\n\n// Redaction Config\nexport const RedactionConfigSchema = z\n .object({\n additionalPaths: z.array(z.string()).default([]),\n })\n .partial();\n\nexport type RedactionConfig = z.infer<typeof RedactionConfigSchema>;\n\n// Shutdown Config\nexport const ShutdownConfigSchema = z\n .object({\n /** Flush telemetry on uncaughtException / unhandledRejection before process exits */\n flushOnCrash: z.boolean().default(false),\n /** Grace period (ms) for flushing before forcing exit */\n flushTimeoutMs: z.number().min(100).default(5000),\n })\n .partial();\n\nexport type ShutdownConfig = z.infer<typeof ShutdownConfigSchema>;\n\n// Vault Config\nexport const VaultConfigSchema = z.object({\n enabled: z.boolean().default(false),\n address: z.string().default('https://vault.beta.commerceiq.ai'),\n authMethod: z.enum(['kubernetes', 'token']).default('kubernetes'),\n role: z.string().optional(),\n mountPoint: z.string().default('secret'),\n tokenPath: z.string().default('/var/run/secrets/kubernetes.io/serviceaccount/token'),\n k8sAuthMount: z.string().default('kubernetes'),\n namespace: z.string().optional(),\n});\n\nexport type VaultConfig = z.infer<typeof VaultConfigSchema>;\n\n// Main Foundation Config\nexport const FoundationConfigSchema = z.object({\n serviceName: z.string().min(1, 'serviceName is required'),\n serviceVersion: z.string().default(process.env.SERVICE_VERSION || '1.0.0'),\n environment: z\n .enum(['development', 'staging', 'qa', 'production'])\n .default(\n ['development', 'staging', 'qa', 'production'].includes(process.env.NODE_ENV ?? '')\n ? (process.env.NODE_ENV as 'development' | 'staging' | 'qa' | 'production')\n : 'development'\n ),\n features: FeaturesConfigSchema.default({}),\n otel: OtelConfigSchema.default({}),\n logging: LoggingConfigSchema.default({}),\n requestLogging: RequestLoggingConfigSchema.default({}),\n redaction: RedactionConfigSchema.default({}),\n shutdown: ShutdownConfigSchema.default({}),\n vault: VaultConfigSchema.default({}),\n});\n\nexport type FoundationConfig = z.infer<typeof FoundationConfigSchema>;\n\nexport type FoundationConfigInput = z.input<typeof FoundationConfigSchema> & {\n serviceName: string;\n};\n\n/** Parse and validate configuration */\nexport function parseConfig(input: FoundationConfigInput): FoundationConfig {\n const result = FoundationConfigSchema.safeParse(input);\n\n if (!result.success) {\n const errors = result.error.errors\n .map((e) => ` - ${e.path.join('.')}: ${e.message}`)\n .join('\\n');\n throw new Error(`Invalid foundation configuration:\\n${errors}`);\n }\n\n return result.data;\n}\n\n/** Get default OTEL endpoint */\nexport function getDefaultOtelEndpoint(): string {\n return process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT;\n}\n","/**\n * OpenTelemetry Tracing Setup\n */\n\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { trace, context, propagation, SpanStatusCode, type Tracer } from '@opentelemetry/api';\nimport { type IMetricReader } from '@opentelemetry/sdk-metrics';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport { type AutoInstrumentationConfig, getDefaultOtelEndpoint } from '../config';\n\n/**\n * Element type of the NodeSDK instrumentations list. Derived from\n * getNodeAutoInstrumentations so we don't take a direct import on\n * @opentelemetry/instrumentation (only a transitive dependency here).\n */\ntype Instrumentation = ReturnType<typeof getNodeAutoInstrumentations>[number];\ntype InstrumentationConfigMap = Parameters<typeof getNodeAutoInstrumentations>[0];\n\n/** User-agents of infrastructure health-checkers whose requests we don't trace. */\nconst HEALTHCHECK_USER_AGENT_PREFIXES = ['ELB-HealthChecker', 'kube-probe', 'GoogleHC'];\n\nexport interface TracingOptions {\n serviceName: string;\n serviceVersion: string;\n environment: string;\n endpoint?: string;\n autoInstrumentation?: AutoInstrumentationConfig;\n /**\n * Metric reader to attach to the NodeSDK so a single SDK owns both traces and\n * metrics (one global MeterProvider, same gRPC collector). When provided, NodeSDK\n * is the sole owner of metrics; when omitted, NodeSDK is opted out of metrics\n * entirely (see below) so it never registers a stray default MeterProvider.\n */\n metricReader?: IMetricReader;\n}\n\nlet sdk: NodeSDK | null = null;\nlet isInitialized = false;\n\nconst MONITORED_MODULES = ['pg', 'mongodb', 'ioredis', 'mysql2', 'express', '@grpc/grpc-js'];\n\nfunction warnPreloadedModules(): void {\n // require.resolve / require.cache are only available in CJS contexts\n if (typeof require === 'undefined' || typeof require.cache === 'undefined') return;\n\n for (const mod of MONITORED_MODULES) {\n try {\n const resolved = require.resolve(mod);\n if (require.cache[resolved]) {\n console.warn(\n `[neoiq-foundation] \"${mod}\" was imported before tracing init. ` +\n 'Auto-instrumentation may not work for this module. ' +\n 'Use node -r @ciq-dev/neoiq-foundation-node/bootstrap or call createFoundation() first.'\n );\n }\n } catch {\n // Module not installed — no warning needed\n }\n }\n}\n\n/** Initialize OpenTelemetry tracing */\nexport function setupTracing(options: TracingOptions): void {\n if (isInitialized) {\n console.warn('[neoiq-foundation] Tracing already initialized');\n return;\n }\n\n warnPreloadedModules();\n\n const {\n serviceName,\n serviceVersion,\n environment,\n endpoint = getDefaultOtelEndpoint(),\n autoInstrumentation = {},\n metricReader,\n } = options;\n\n const resource = resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n [ATTR_SERVICE_VERSION]: serviceVersion,\n 'deployment.environment': environment,\n });\n\n const traceExporter = new OTLPTraceExporter({ url: endpoint });\n\n // Foundation owns every OpenTelemetry signal explicitly. Left to its own devices,\n // NodeSDK auto-configures metrics AND logs exporters from env defaults — both OTLP\n // over HTTP to localhost:4318 — which nothing listens on, producing ECONNREFUSED\n // spam every export interval. We therefore configure each signal on NodeSDK directly:\n // - traces: the explicit gRPC exporter above.\n // - metrics: the explicit gRPC reader when provided (single SDK, single global\n // MeterProvider, same collector as traces). When metrics are disabled\n // and the deployer hasn't chosen an exporter, opt NodeSDK out via\n // OTEL_METRICS_EXPORTER=none (the only switch NodeSDK exposes for that).\n // - logs: foundation logs via pino, never OTLP. Passing an empty processor list\n // stops NodeSDK from falling back to its env-default localhost:4318 log\n // exporter (`logRecordProcessors: []` takes the explicit branch and skips\n // configureLoggerProviderFromEnv()).\n if (!metricReader && !process.env.OTEL_METRICS_EXPORTER) {\n process.env.OTEL_METRICS_EXPORTER = 'none';\n }\n\n sdk = new NodeSDK({\n resource,\n traceExporter,\n ...(metricReader ? { metricReaders: [metricReader] } : {}),\n logRecordProcessors: [],\n instrumentations: buildInstrumentations(autoInstrumentation),\n });\n\n sdk.start();\n isInitialized = true;\n}\n\n/**\n * Produce a clean name for a Fastify lifecycle (hook/handler) span.\n *\n * @fastify/otel names these \"<hook> - <fn name>\", but anonymous hook functions fall\n * back to the full plugin-encapsulation chain (\"fastify -> @fastify/otel -> ... ->\n * @fastify/x\"), which is unreadable. When that chain is detected, collapse it to a\n * clean, route-scoped name (e.g. \"onRequest /api/v1/foo\"). Returns `null` when the\n * span is already cleanly named (a named hook like \"onRequest - handleCors\"), so the\n * caller leaves it untouched.\n */\nexport function cleanLifecycleSpanName(\n hookName: string,\n handlerName: string,\n routeUrl?: string\n): string | null {\n if (!handlerName.includes(' -> ')) return null;\n return routeUrl ? `${hookName} ${routeUrl}` : hookName;\n}\n\n/**\n * Build the full instrumentation list for the NodeSDK.\n *\n * auto-instrumentations-node covers http, mongodb, redis, etc., but it no longer\n * bundles Fastify, so Fastify is added explicitly via @fastify/otel (the Fastify\n * core team's official OpenTelemetry plugin, v4–v5). With registerOnInitialization it\n * self-registers on every Fastify instance via the fastify.initialization diagnostics\n * channel, and — riding on instrumentation-http — names the server span \"GET /route\"\n * and emits the request → hook → handler waterfall (the Fastify equivalent of the\n * Express middleware spans on sibling services), with DB spans nesting underneath.\n */\nexport function buildInstrumentations(\n autoInstrumentation: AutoInstrumentationConfig = {}\n): Instrumentation[] {\n const instrumentations: Instrumentation[] = [\n ...getNodeAutoInstrumentations(buildInstrumentationConfig(autoInstrumentation)),\n ];\n\n if (autoInstrumentation.fastify !== false) {\n instrumentations.push(\n new FastifyOtelInstrumentation({\n registerOnInitialization: true,\n // Name the Fastify request span \"METHOD /route\" (route template, low cardinality).\n requestHook: (span, request) => {\n const routeUrl = (request as { routeOptions?: { url?: string } }).routeOptions?.url;\n const method = (request as { method?: string }).method;\n if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);\n },\n // Collapse the verbose anonymous-hook plugin chains into readable names.\n lifecycleHook: (span, info) => {\n const i = info as {\n hookName?: string;\n handler?: unknown;\n request?: { routeOptions?: { url?: string } };\n };\n const cleaned = cleanLifecycleSpanName(\n i.hookName ?? '',\n typeof i.handler === 'string' ? i.handler : '',\n i.request?.routeOptions?.url\n );\n if (cleaned) span.updateName(cleaned);\n },\n })\n );\n }\n\n return instrumentations;\n}\n\nfunction buildInstrumentationConfig(config: AutoInstrumentationConfig): InstrumentationConfigMap {\n const mapping: Record<string, string> = {\n http: '@opentelemetry/instrumentation-http',\n // Fastify is intentionally absent here — it's not in the auto-instrumentations\n // bundle and is added separately in buildInstrumentations() via\n // @opentelemetry/instrumentation-fastify.\n express: '@opentelemetry/instrumentation-express',\n mongodb: '@opentelemetry/instrumentation-mongodb',\n pg: '@opentelemetry/instrumentation-pg',\n mysql: '@opentelemetry/instrumentation-mysql',\n redis: '@opentelemetry/instrumentation-redis',\n ioredis: '@opentelemetry/instrumentation-ioredis',\n grpc: '@opentelemetry/instrumentation-grpc',\n fs: '@opentelemetry/instrumentation-fs',\n dns: '@opentelemetry/instrumentation-dns',\n };\n\n const result: Record<string, Record<string, unknown>> = {};\n for (const [key, instrumentationName] of Object.entries(mapping)) {\n const userSetting = config[key as keyof AutoInstrumentationConfig];\n const defaultValue = key !== 'fs' && key !== 'dns';\n result[instrumentationName] = { enabled: userSetting ?? defaultValue };\n }\n\n // Don't create spans for infrastructure health-checks (ELB / kube-probe / GoogleHC).\n // They're high-volume, low-value, and otherwise dominate (and skew sampling of) traces.\n result['@opentelemetry/instrumentation-http'] = {\n ...result['@opentelemetry/instrumentation-http'],\n ignoreIncomingRequestHook: (request: {\n headers?: Record<string, string | string[] | undefined>;\n }) => {\n const ua = request.headers?.['user-agent'];\n const uaStr = Array.isArray(ua) ? (ua[0] ?? '') : (ua ?? '');\n return HEALTHCHECK_USER_AGENT_PREFIXES.some((prefix) => uaStr.startsWith(prefix));\n },\n };\n\n return result as InstrumentationConfigMap;\n}\n\n/** Shutdown tracing gracefully */\nexport async function shutdownTracing(): Promise<void> {\n if (!sdk) return;\n try {\n await sdk.shutdown();\n isInitialized = false;\n sdk = null;\n } catch (error) {\n console.error('[neoiq-foundation] Error shutting down tracing:', error);\n throw error;\n }\n}\n\nexport function getTracer(name: string): Tracer {\n return trace.getTracer(name);\n}\n\nexport function getActiveSpan(): ReturnType<typeof trace.getActiveSpan> {\n return trace.getActiveSpan();\n}\n\nexport function getTraceContext(): { traceId?: string; spanId?: string } {\n const span = trace.getActiveSpan();\n if (!span) return {};\n const ctx = span.spanContext();\n return { traceId: ctx.traceId, spanId: ctx.spanId };\n}\n\nexport function isTracingEnabled(): boolean {\n return isInitialized;\n}\n\nexport { trace, context, propagation, SpanStatusCode };\nexport type { Tracer };\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ciq-dev/neoiq-foundation-node",
3
- "version": "1.1.2-beta.7",
3
+ "version": "1.1.2-beta.9",
4
4
  "description": "Node.js observability foundation for CommerceIQ services. Integrates with Groundcover via OpenTelemetry.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -48,14 +48,14 @@
48
48
  "peerDependencies": {
49
49
  "@aws-sdk/client-s3": "^3.0.0",
50
50
  "@aws-sdk/s3-request-presigner": "^3.0.0",
51
- "@opentelemetry/api": "^1.7.0",
52
- "@opentelemetry/auto-instrumentations-node": ">=0.41.0",
53
- "@opentelemetry/exporter-metrics-otlp-grpc": ">=0.48.0",
54
- "@opentelemetry/exporter-trace-otlp-grpc": ">=0.48.0",
55
- "@opentelemetry/resources": ">=1.21.0",
56
- "@opentelemetry/sdk-metrics": ">=1.21.0",
57
- "@opentelemetry/sdk-node": ">=0.48.0",
58
- "@opentelemetry/semantic-conventions": "^1.21.0",
51
+ "@opentelemetry/api": "^1.9.0",
52
+ "@opentelemetry/auto-instrumentations-node": ">=0.76.0",
53
+ "@opentelemetry/exporter-metrics-otlp-grpc": ">=0.218.0",
54
+ "@opentelemetry/exporter-trace-otlp-grpc": ">=0.218.0",
55
+ "@opentelemetry/resources": ">=2.0.0",
56
+ "@opentelemetry/sdk-metrics": ">=2.0.0",
57
+ "@opentelemetry/sdk-node": ">=0.218.0",
58
+ "@opentelemetry/semantic-conventions": "^1.28.0",
59
59
  "axios": "^1.6.0",
60
60
  "axios-retry": "^4.0.0",
61
61
  "fastify": ">=4.25.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracing-BujFTwI7.js","names":["input: FoundationConfigInput","sdk: NodeSDK | null","options: TracingOptions","hookName: string","handlerName: string","routeUrl?: string","autoInstrumentation: AutoInstrumentationConfig","instrumentations: Instrumentation[]","config: AutoInstrumentationConfig","mapping: Record<string, string>","result: Record<string, { enabled: boolean }>","name: string"],"sources":["../src/config.ts","../src/features/tracing.ts"],"sourcesContent":["/**\n * Foundation Configuration with Zod Validation\n */\n\nimport { z } from 'zod';\n\n// Auto-Instrumentation Config\nexport const AutoInstrumentationConfigSchema = z\n .object({\n http: z.boolean().default(true),\n fastify: z.boolean().default(true),\n express: z.boolean().default(true),\n mongodb: z.boolean().default(true),\n pg: z.boolean().default(true),\n mysql: z.boolean().default(true),\n redis: z.boolean().default(true),\n ioredis: z.boolean().default(true),\n grpc: z.boolean().default(true),\n fs: z.boolean().default(false),\n dns: z.boolean().default(false),\n })\n .partial();\n\nexport type AutoInstrumentationConfig = z.infer<typeof AutoInstrumentationConfigSchema>;\n\n// Features Config\nexport const FeaturesConfigSchema = z\n .object({\n tracing: z.boolean().default(true),\n metrics: z.boolean().default(true),\n logging: z.boolean().default(true),\n autoInstrumentation: AutoInstrumentationConfigSchema.default({}),\n })\n .partial();\n\nexport type FeaturesConfig = z.infer<typeof FeaturesConfigSchema>;\n\n// OTEL Config\nconst DEFAULT_OTEL_ENDPOINT =\n 'http://otel-stack-deployment-collector.observability.svc.cluster.local:4317';\n\nexport const OtelConfigSchema = z.object({\n endpoint: z\n .string()\n .default(() => process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT),\n metricsIntervalMs: z.number().min(1000).default(5000),\n});\n\nexport type OtelConfig = z.infer<typeof OtelConfigSchema>;\n\n// Logging Config\nexport const LoggingConfigSchema = z\n .object({\n level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),\n prettyPrint: z.boolean().optional(),\n })\n .partial();\n\nexport type LoggingConfig = z.infer<typeof LoggingConfigSchema>;\n\n// Request Logging Config\nexport const RequestLoggingConfigSchema = z\n .object({\n logHeaders: z.boolean().default(true),\n logBody: z.boolean().default(false),\n logResponseBody: z.boolean().default(false),\n maxBodySize: z.number().default(10 * 1024),\n redactHeaders: z.array(z.string()).optional(),\n })\n .partial();\n\nexport type RequestLoggingConfig = z.infer<typeof RequestLoggingConfigSchema>;\n\n// Redaction Config\nexport const RedactionConfigSchema = z\n .object({\n additionalPaths: z.array(z.string()).default([]),\n })\n .partial();\n\nexport type RedactionConfig = z.infer<typeof RedactionConfigSchema>;\n\n// Shutdown Config\nexport const ShutdownConfigSchema = z\n .object({\n /** Flush telemetry on uncaughtException / unhandledRejection before process exits */\n flushOnCrash: z.boolean().default(false),\n /** Grace period (ms) for flushing before forcing exit */\n flushTimeoutMs: z.number().min(100).default(5000),\n })\n .partial();\n\nexport type ShutdownConfig = z.infer<typeof ShutdownConfigSchema>;\n\n// Vault Config\nexport const VaultConfigSchema = z.object({\n enabled: z.boolean().default(false),\n address: z.string().default('https://vault.beta.commerceiq.ai'),\n authMethod: z.enum(['kubernetes', 'token']).default('kubernetes'),\n role: z.string().optional(),\n mountPoint: z.string().default('secret'),\n tokenPath: z.string().default('/var/run/secrets/kubernetes.io/serviceaccount/token'),\n k8sAuthMount: z.string().default('kubernetes'),\n namespace: z.string().optional(),\n});\n\nexport type VaultConfig = z.infer<typeof VaultConfigSchema>;\n\n// Main Foundation Config\nexport const FoundationConfigSchema = z.object({\n serviceName: z.string().min(1, 'serviceName is required'),\n serviceVersion: z.string().default(process.env.SERVICE_VERSION || '1.0.0'),\n environment: z\n .enum(['development', 'staging', 'qa', 'production'])\n .default(\n ['development', 'staging', 'qa', 'production'].includes(process.env.NODE_ENV ?? '')\n ? (process.env.NODE_ENV as 'development' | 'staging' | 'qa' | 'production')\n : 'development'\n ),\n features: FeaturesConfigSchema.default({}),\n otel: OtelConfigSchema.default({}),\n logging: LoggingConfigSchema.default({}),\n requestLogging: RequestLoggingConfigSchema.default({}),\n redaction: RedactionConfigSchema.default({}),\n shutdown: ShutdownConfigSchema.default({}),\n vault: VaultConfigSchema.default({}),\n});\n\nexport type FoundationConfig = z.infer<typeof FoundationConfigSchema>;\n\nexport type FoundationConfigInput = z.input<typeof FoundationConfigSchema> & {\n serviceName: string;\n};\n\n/** Parse and validate configuration */\nexport function parseConfig(input: FoundationConfigInput): FoundationConfig {\n const result = FoundationConfigSchema.safeParse(input);\n\n if (!result.success) {\n const errors = result.error.errors\n .map((e) => ` - ${e.path.join('.')}: ${e.message}`)\n .join('\\n');\n throw new Error(`Invalid foundation configuration:\\n${errors}`);\n }\n\n return result.data;\n}\n\n/** Get default OTEL endpoint */\nexport function getDefaultOtelEndpoint(): string {\n return process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT;\n}\n","/**\n * OpenTelemetry Tracing Setup\n */\n\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { trace, context, propagation, SpanStatusCode, type Tracer } from '@opentelemetry/api';\nimport { type IMetricReader } from '@opentelemetry/sdk-metrics';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport { type AutoInstrumentationConfig, getDefaultOtelEndpoint } from '../config';\n\n/**\n * Element type of the NodeSDK instrumentations list. Derived from\n * getNodeAutoInstrumentations so we don't take a direct import on\n * @opentelemetry/instrumentation (only a transitive dependency here).\n */\ntype Instrumentation = ReturnType<typeof getNodeAutoInstrumentations>[number];\n\nexport interface TracingOptions {\n serviceName: string;\n serviceVersion: string;\n environment: string;\n endpoint?: string;\n autoInstrumentation?: AutoInstrumentationConfig;\n /**\n * Metric reader to attach to the NodeSDK so a single SDK owns both traces and\n * metrics (one global MeterProvider, same gRPC collector). When provided, NodeSDK\n * is the sole owner of metrics; when omitted, NodeSDK is opted out of metrics\n * entirely (see below) so it never registers a stray default MeterProvider.\n */\n metricReader?: IMetricReader;\n}\n\nlet sdk: NodeSDK | null = null;\nlet isInitialized = false;\n\nconst MONITORED_MODULES = ['pg', 'mongodb', 'ioredis', 'mysql2', 'express', '@grpc/grpc-js'];\n\nfunction warnPreloadedModules(): void {\n // require.resolve / require.cache are only available in CJS contexts\n if (typeof require === 'undefined' || typeof require.cache === 'undefined') return;\n\n for (const mod of MONITORED_MODULES) {\n try {\n const resolved = require.resolve(mod);\n if (require.cache[resolved]) {\n console.warn(\n `[neoiq-foundation] \"${mod}\" was imported before tracing init. ` +\n 'Auto-instrumentation may not work for this module. ' +\n 'Use node -r @ciq-dev/neoiq-foundation-node/bootstrap or call createFoundation() first.'\n );\n }\n } catch {\n // Module not installed — no warning needed\n }\n }\n}\n\n/** Initialize OpenTelemetry tracing */\nexport function setupTracing(options: TracingOptions): void {\n if (isInitialized) {\n console.warn('[neoiq-foundation] Tracing already initialized');\n return;\n }\n\n warnPreloadedModules();\n\n const {\n serviceName,\n serviceVersion,\n environment,\n endpoint = getDefaultOtelEndpoint(),\n autoInstrumentation = {},\n metricReader,\n } = options;\n\n const resource = resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n [ATTR_SERVICE_VERSION]: serviceVersion,\n 'deployment.environment': environment,\n });\n\n const traceExporter = new OTLPTraceExporter({ url: endpoint });\n\n // Foundation owns every OpenTelemetry signal explicitly. Left to its own devices,\n // NodeSDK auto-configures metrics AND logs exporters from env defaults — both OTLP\n // over HTTP to localhost:4318 — which nothing listens on, producing ECONNREFUSED\n // spam every export interval. We therefore configure each signal on NodeSDK directly:\n // - traces: the explicit gRPC exporter above.\n // - metrics: the explicit gRPC reader when provided (single SDK, single global\n // MeterProvider, same collector as traces). When metrics are disabled\n // and the deployer hasn't chosen an exporter, opt NodeSDK out via\n // OTEL_METRICS_EXPORTER=none (the only switch NodeSDK exposes for that).\n // - logs: foundation logs via pino, never OTLP. Passing an empty processor list\n // stops NodeSDK from falling back to its env-default localhost:4318 log\n // exporter (`logRecordProcessors: []` takes the explicit branch and skips\n // configureLoggerProviderFromEnv()).\n if (!metricReader && !process.env.OTEL_METRICS_EXPORTER) {\n process.env.OTEL_METRICS_EXPORTER = 'none';\n }\n\n sdk = new NodeSDK({\n resource,\n traceExporter,\n ...(metricReader ? { metricReaders: [metricReader] } : {}),\n logRecordProcessors: [],\n instrumentations: buildInstrumentations(autoInstrumentation),\n });\n\n sdk.start();\n isInitialized = true;\n}\n\n/**\n * Build the full instrumentation list for the NodeSDK.\n *\n * `auto-instrumentations-node` covers http, express, mongodb, redis, etc., but it\n * no longer ships Fastify support — the legacy `@opentelemetry/instrumentation-fastify`\n * does not work with Fastify v5. Fastify is therefore instrumented via the official\n * `@fastify/otel` plugin, which self-registers on every Fastify instance through the\n * `fastify.initialization` diagnostics channel (`registerOnInitialization`) and builds\n * its request span beneath the http server span created by `instrumentation-http`\n * (enabled above). Without this, Fastify services emit only bare, route-less \"GET\"\n * spans with no request → handler → db waterfall.\n */\n/**\n * Produce a clean name for a Fastify lifecycle (hook/handler) span.\n *\n * @fastify/otel names these \"<hook> - <fn name>\", but anonymous hook functions fall\n * back to the full plugin-encapsulation chain (\"fastify -> @fastify/otel -> ... ->\n * @fastify/x\"), which is unreadable. When that chain is detected, collapse it to a\n * clean, route-scoped name (e.g. \"onRequest /api/v1/foo\"). Returns `null` when the\n * span is already cleanly named (a named hook like \"onRequest - handleCors\"), so the\n * caller leaves it untouched.\n */\nexport function cleanLifecycleSpanName(\n hookName: string,\n handlerName: string,\n routeUrl?: string\n): string | null {\n if (!handlerName.includes(' -> ')) return null;\n return routeUrl ? `${hookName} ${routeUrl}` : hookName;\n}\n\nexport function buildInstrumentations(\n autoInstrumentation: AutoInstrumentationConfig = {}\n): Instrumentation[] {\n const instrumentations: Instrumentation[] = [\n ...getNodeAutoInstrumentations(buildInstrumentationConfig(autoInstrumentation)),\n ];\n\n if (autoInstrumentation.fastify !== false) {\n const fastifyOtel = new FastifyOtelInstrumentation({\n registerOnInitialization: true,\n // Rename the Fastify span from the default \"request\" to \"METHOD /route\" so the\n // waterfall reads e.g. \"GET /api/v1/ui-store/dashboards/standalone\".\n requestHook: (span, request) => {\n const routeUrl = (request as { routeOptions?: { url?: string } }).routeOptions?.url;\n const method = (request as { method?: string }).method;\n if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);\n },\n // Clean up the per-hook/handler span names. @fastify/otel falls back to the\n // full plugin-encapsulation chain for anonymous hooks, producing unreadable\n // names like \"onRequest - fastify -> @fastify/otel -> ... -> @fastify/swagger-ui\".\n lifecycleHook: (span, info) => {\n const i = info as {\n hookName?: string;\n handler?: unknown;\n request?: { routeOptions?: { url?: string } };\n };\n const cleaned = cleanLifecycleSpanName(\n i.hookName ?? '',\n typeof i.handler === 'string' ? i.handler : '',\n i.request?.routeOptions?.url\n );\n if (cleaned) span.updateName(cleaned);\n },\n });\n // Cast across a possible @opentelemetry/instrumentation version skew between\n // @fastify/otel and auto-instrumentations-node; the runtime contract is the\n // stable @opentelemetry/api Instrumentation interface, which both satisfy.\n instrumentations.push(fastifyOtel as unknown as Instrumentation);\n }\n\n return instrumentations;\n}\n\nfunction buildInstrumentationConfig(\n config: AutoInstrumentationConfig\n): Record<string, { enabled: boolean }> {\n const mapping: Record<string, string> = {\n http: '@opentelemetry/instrumentation-http',\n // NOTE: Fastify is intentionally absent here — auto-instrumentations-node dropped\n // @opentelemetry/instrumentation-fastify (no Fastify v5 support). Fastify is wired\n // via @fastify/otel in buildInstrumentations() instead.\n express: '@opentelemetry/instrumentation-express',\n mongodb: '@opentelemetry/instrumentation-mongodb',\n pg: '@opentelemetry/instrumentation-pg',\n mysql: '@opentelemetry/instrumentation-mysql',\n redis: '@opentelemetry/instrumentation-redis',\n ioredis: '@opentelemetry/instrumentation-ioredis',\n grpc: '@opentelemetry/instrumentation-grpc',\n fs: '@opentelemetry/instrumentation-fs',\n dns: '@opentelemetry/instrumentation-dns',\n };\n\n const result: Record<string, { enabled: boolean }> = {};\n for (const [key, instrumentationName] of Object.entries(mapping)) {\n const userSetting = config[key as keyof AutoInstrumentationConfig];\n const defaultValue = key !== 'fs' && key !== 'dns';\n result[instrumentationName] = { enabled: userSetting ?? defaultValue };\n }\n return result;\n}\n\n/** Shutdown tracing gracefully */\nexport async function shutdownTracing(): Promise<void> {\n if (!sdk) return;\n try {\n await sdk.shutdown();\n isInitialized = false;\n sdk = null;\n } catch (error) {\n console.error('[neoiq-foundation] Error shutting down tracing:', error);\n throw error;\n }\n}\n\nexport function getTracer(name: string): Tracer {\n return trace.getTracer(name);\n}\n\nexport function getActiveSpan(): ReturnType<typeof trace.getActiveSpan> {\n return trace.getActiveSpan();\n}\n\nexport function getTraceContext(): { traceId?: string; spanId?: string } {\n const span = trace.getActiveSpan();\n if (!span) return {};\n const ctx = span.spanContext();\n return { traceId: ctx.traceId, spanId: ctx.spanId };\n}\n\nexport function isTracingEnabled(): boolean {\n return isInitialized;\n}\n\nexport { trace, context, propagation, SpanStatusCode };\nexport type { Tracer };\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracing-DYGDSAan.mjs","names":["input: FoundationConfigInput","sdk: NodeSDK | null","options: TracingOptions","hookName: string","handlerName: string","routeUrl?: string","autoInstrumentation: AutoInstrumentationConfig","instrumentations: Instrumentation[]","config: AutoInstrumentationConfig","mapping: Record<string, string>","result: Record<string, { enabled: boolean }>","name: string"],"sources":["../src/config.ts","../src/features/tracing.ts"],"sourcesContent":["/**\n * Foundation Configuration with Zod Validation\n */\n\nimport { z } from 'zod';\n\n// Auto-Instrumentation Config\nexport const AutoInstrumentationConfigSchema = z\n .object({\n http: z.boolean().default(true),\n fastify: z.boolean().default(true),\n express: z.boolean().default(true),\n mongodb: z.boolean().default(true),\n pg: z.boolean().default(true),\n mysql: z.boolean().default(true),\n redis: z.boolean().default(true),\n ioredis: z.boolean().default(true),\n grpc: z.boolean().default(true),\n fs: z.boolean().default(false),\n dns: z.boolean().default(false),\n })\n .partial();\n\nexport type AutoInstrumentationConfig = z.infer<typeof AutoInstrumentationConfigSchema>;\n\n// Features Config\nexport const FeaturesConfigSchema = z\n .object({\n tracing: z.boolean().default(true),\n metrics: z.boolean().default(true),\n logging: z.boolean().default(true),\n autoInstrumentation: AutoInstrumentationConfigSchema.default({}),\n })\n .partial();\n\nexport type FeaturesConfig = z.infer<typeof FeaturesConfigSchema>;\n\n// OTEL Config\nconst DEFAULT_OTEL_ENDPOINT =\n 'http://otel-stack-deployment-collector.observability.svc.cluster.local:4317';\n\nexport const OtelConfigSchema = z.object({\n endpoint: z\n .string()\n .default(() => process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT),\n metricsIntervalMs: z.number().min(1000).default(5000),\n});\n\nexport type OtelConfig = z.infer<typeof OtelConfigSchema>;\n\n// Logging Config\nexport const LoggingConfigSchema = z\n .object({\n level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),\n prettyPrint: z.boolean().optional(),\n })\n .partial();\n\nexport type LoggingConfig = z.infer<typeof LoggingConfigSchema>;\n\n// Request Logging Config\nexport const RequestLoggingConfigSchema = z\n .object({\n logHeaders: z.boolean().default(true),\n logBody: z.boolean().default(false),\n logResponseBody: z.boolean().default(false),\n maxBodySize: z.number().default(10 * 1024),\n redactHeaders: z.array(z.string()).optional(),\n })\n .partial();\n\nexport type RequestLoggingConfig = z.infer<typeof RequestLoggingConfigSchema>;\n\n// Redaction Config\nexport const RedactionConfigSchema = z\n .object({\n additionalPaths: z.array(z.string()).default([]),\n })\n .partial();\n\nexport type RedactionConfig = z.infer<typeof RedactionConfigSchema>;\n\n// Shutdown Config\nexport const ShutdownConfigSchema = z\n .object({\n /** Flush telemetry on uncaughtException / unhandledRejection before process exits */\n flushOnCrash: z.boolean().default(false),\n /** Grace period (ms) for flushing before forcing exit */\n flushTimeoutMs: z.number().min(100).default(5000),\n })\n .partial();\n\nexport type ShutdownConfig = z.infer<typeof ShutdownConfigSchema>;\n\n// Vault Config\nexport const VaultConfigSchema = z.object({\n enabled: z.boolean().default(false),\n address: z.string().default('https://vault.beta.commerceiq.ai'),\n authMethod: z.enum(['kubernetes', 'token']).default('kubernetes'),\n role: z.string().optional(),\n mountPoint: z.string().default('secret'),\n tokenPath: z.string().default('/var/run/secrets/kubernetes.io/serviceaccount/token'),\n k8sAuthMount: z.string().default('kubernetes'),\n namespace: z.string().optional(),\n});\n\nexport type VaultConfig = z.infer<typeof VaultConfigSchema>;\n\n// Main Foundation Config\nexport const FoundationConfigSchema = z.object({\n serviceName: z.string().min(1, 'serviceName is required'),\n serviceVersion: z.string().default(process.env.SERVICE_VERSION || '1.0.0'),\n environment: z\n .enum(['development', 'staging', 'qa', 'production'])\n .default(\n ['development', 'staging', 'qa', 'production'].includes(process.env.NODE_ENV ?? '')\n ? (process.env.NODE_ENV as 'development' | 'staging' | 'qa' | 'production')\n : 'development'\n ),\n features: FeaturesConfigSchema.default({}),\n otel: OtelConfigSchema.default({}),\n logging: LoggingConfigSchema.default({}),\n requestLogging: RequestLoggingConfigSchema.default({}),\n redaction: RedactionConfigSchema.default({}),\n shutdown: ShutdownConfigSchema.default({}),\n vault: VaultConfigSchema.default({}),\n});\n\nexport type FoundationConfig = z.infer<typeof FoundationConfigSchema>;\n\nexport type FoundationConfigInput = z.input<typeof FoundationConfigSchema> & {\n serviceName: string;\n};\n\n/** Parse and validate configuration */\nexport function parseConfig(input: FoundationConfigInput): FoundationConfig {\n const result = FoundationConfigSchema.safeParse(input);\n\n if (!result.success) {\n const errors = result.error.errors\n .map((e) => ` - ${e.path.join('.')}: ${e.message}`)\n .join('\\n');\n throw new Error(`Invalid foundation configuration:\\n${errors}`);\n }\n\n return result.data;\n}\n\n/** Get default OTEL endpoint */\nexport function getDefaultOtelEndpoint(): string {\n return process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT;\n}\n","/**\n * OpenTelemetry Tracing Setup\n */\n\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { trace, context, propagation, SpanStatusCode, type Tracer } from '@opentelemetry/api';\nimport { type IMetricReader } from '@opentelemetry/sdk-metrics';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport { type AutoInstrumentationConfig, getDefaultOtelEndpoint } from '../config';\n\n/**\n * Element type of the NodeSDK instrumentations list. Derived from\n * getNodeAutoInstrumentations so we don't take a direct import on\n * @opentelemetry/instrumentation (only a transitive dependency here).\n */\ntype Instrumentation = ReturnType<typeof getNodeAutoInstrumentations>[number];\n\nexport interface TracingOptions {\n serviceName: string;\n serviceVersion: string;\n environment: string;\n endpoint?: string;\n autoInstrumentation?: AutoInstrumentationConfig;\n /**\n * Metric reader to attach to the NodeSDK so a single SDK owns both traces and\n * metrics (one global MeterProvider, same gRPC collector). When provided, NodeSDK\n * is the sole owner of metrics; when omitted, NodeSDK is opted out of metrics\n * entirely (see below) so it never registers a stray default MeterProvider.\n */\n metricReader?: IMetricReader;\n}\n\nlet sdk: NodeSDK | null = null;\nlet isInitialized = false;\n\nconst MONITORED_MODULES = ['pg', 'mongodb', 'ioredis', 'mysql2', 'express', '@grpc/grpc-js'];\n\nfunction warnPreloadedModules(): void {\n // require.resolve / require.cache are only available in CJS contexts\n if (typeof require === 'undefined' || typeof require.cache === 'undefined') return;\n\n for (const mod of MONITORED_MODULES) {\n try {\n const resolved = require.resolve(mod);\n if (require.cache[resolved]) {\n console.warn(\n `[neoiq-foundation] \"${mod}\" was imported before tracing init. ` +\n 'Auto-instrumentation may not work for this module. ' +\n 'Use node -r @ciq-dev/neoiq-foundation-node/bootstrap or call createFoundation() first.'\n );\n }\n } catch {\n // Module not installed — no warning needed\n }\n }\n}\n\n/** Initialize OpenTelemetry tracing */\nexport function setupTracing(options: TracingOptions): void {\n if (isInitialized) {\n console.warn('[neoiq-foundation] Tracing already initialized');\n return;\n }\n\n warnPreloadedModules();\n\n const {\n serviceName,\n serviceVersion,\n environment,\n endpoint = getDefaultOtelEndpoint(),\n autoInstrumentation = {},\n metricReader,\n } = options;\n\n const resource = resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n [ATTR_SERVICE_VERSION]: serviceVersion,\n 'deployment.environment': environment,\n });\n\n const traceExporter = new OTLPTraceExporter({ url: endpoint });\n\n // Foundation owns every OpenTelemetry signal explicitly. Left to its own devices,\n // NodeSDK auto-configures metrics AND logs exporters from env defaults — both OTLP\n // over HTTP to localhost:4318 — which nothing listens on, producing ECONNREFUSED\n // spam every export interval. We therefore configure each signal on NodeSDK directly:\n // - traces: the explicit gRPC exporter above.\n // - metrics: the explicit gRPC reader when provided (single SDK, single global\n // MeterProvider, same collector as traces). When metrics are disabled\n // and the deployer hasn't chosen an exporter, opt NodeSDK out via\n // OTEL_METRICS_EXPORTER=none (the only switch NodeSDK exposes for that).\n // - logs: foundation logs via pino, never OTLP. Passing an empty processor list\n // stops NodeSDK from falling back to its env-default localhost:4318 log\n // exporter (`logRecordProcessors: []` takes the explicit branch and skips\n // configureLoggerProviderFromEnv()).\n if (!metricReader && !process.env.OTEL_METRICS_EXPORTER) {\n process.env.OTEL_METRICS_EXPORTER = 'none';\n }\n\n sdk = new NodeSDK({\n resource,\n traceExporter,\n ...(metricReader ? { metricReaders: [metricReader] } : {}),\n logRecordProcessors: [],\n instrumentations: buildInstrumentations(autoInstrumentation),\n });\n\n sdk.start();\n isInitialized = true;\n}\n\n/**\n * Build the full instrumentation list for the NodeSDK.\n *\n * `auto-instrumentations-node` covers http, express, mongodb, redis, etc., but it\n * no longer ships Fastify support — the legacy `@opentelemetry/instrumentation-fastify`\n * does not work with Fastify v5. Fastify is therefore instrumented via the official\n * `@fastify/otel` plugin, which self-registers on every Fastify instance through the\n * `fastify.initialization` diagnostics channel (`registerOnInitialization`) and builds\n * its request span beneath the http server span created by `instrumentation-http`\n * (enabled above). Without this, Fastify services emit only bare, route-less \"GET\"\n * spans with no request → handler → db waterfall.\n */\n/**\n * Produce a clean name for a Fastify lifecycle (hook/handler) span.\n *\n * @fastify/otel names these \"<hook> - <fn name>\", but anonymous hook functions fall\n * back to the full plugin-encapsulation chain (\"fastify -> @fastify/otel -> ... ->\n * @fastify/x\"), which is unreadable. When that chain is detected, collapse it to a\n * clean, route-scoped name (e.g. \"onRequest /api/v1/foo\"). Returns `null` when the\n * span is already cleanly named (a named hook like \"onRequest - handleCors\"), so the\n * caller leaves it untouched.\n */\nexport function cleanLifecycleSpanName(\n hookName: string,\n handlerName: string,\n routeUrl?: string\n): string | null {\n if (!handlerName.includes(' -> ')) return null;\n return routeUrl ? `${hookName} ${routeUrl}` : hookName;\n}\n\nexport function buildInstrumentations(\n autoInstrumentation: AutoInstrumentationConfig = {}\n): Instrumentation[] {\n const instrumentations: Instrumentation[] = [\n ...getNodeAutoInstrumentations(buildInstrumentationConfig(autoInstrumentation)),\n ];\n\n if (autoInstrumentation.fastify !== false) {\n const fastifyOtel = new FastifyOtelInstrumentation({\n registerOnInitialization: true,\n // Rename the Fastify span from the default \"request\" to \"METHOD /route\" so the\n // waterfall reads e.g. \"GET /api/v1/ui-store/dashboards/standalone\".\n requestHook: (span, request) => {\n const routeUrl = (request as { routeOptions?: { url?: string } }).routeOptions?.url;\n const method = (request as { method?: string }).method;\n if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);\n },\n // Clean up the per-hook/handler span names. @fastify/otel falls back to the\n // full plugin-encapsulation chain for anonymous hooks, producing unreadable\n // names like \"onRequest - fastify -> @fastify/otel -> ... -> @fastify/swagger-ui\".\n lifecycleHook: (span, info) => {\n const i = info as {\n hookName?: string;\n handler?: unknown;\n request?: { routeOptions?: { url?: string } };\n };\n const cleaned = cleanLifecycleSpanName(\n i.hookName ?? '',\n typeof i.handler === 'string' ? i.handler : '',\n i.request?.routeOptions?.url\n );\n if (cleaned) span.updateName(cleaned);\n },\n });\n // Cast across a possible @opentelemetry/instrumentation version skew between\n // @fastify/otel and auto-instrumentations-node; the runtime contract is the\n // stable @opentelemetry/api Instrumentation interface, which both satisfy.\n instrumentations.push(fastifyOtel as unknown as Instrumentation);\n }\n\n return instrumentations;\n}\n\nfunction buildInstrumentationConfig(\n config: AutoInstrumentationConfig\n): Record<string, { enabled: boolean }> {\n const mapping: Record<string, string> = {\n http: '@opentelemetry/instrumentation-http',\n // NOTE: Fastify is intentionally absent here — auto-instrumentations-node dropped\n // @opentelemetry/instrumentation-fastify (no Fastify v5 support). Fastify is wired\n // via @fastify/otel in buildInstrumentations() instead.\n express: '@opentelemetry/instrumentation-express',\n mongodb: '@opentelemetry/instrumentation-mongodb',\n pg: '@opentelemetry/instrumentation-pg',\n mysql: '@opentelemetry/instrumentation-mysql',\n redis: '@opentelemetry/instrumentation-redis',\n ioredis: '@opentelemetry/instrumentation-ioredis',\n grpc: '@opentelemetry/instrumentation-grpc',\n fs: '@opentelemetry/instrumentation-fs',\n dns: '@opentelemetry/instrumentation-dns',\n };\n\n const result: Record<string, { enabled: boolean }> = {};\n for (const [key, instrumentationName] of Object.entries(mapping)) {\n const userSetting = config[key as keyof AutoInstrumentationConfig];\n const defaultValue = key !== 'fs' && key !== 'dns';\n result[instrumentationName] = { enabled: userSetting ?? defaultValue };\n }\n return result;\n}\n\n/** Shutdown tracing gracefully */\nexport async function shutdownTracing(): Promise<void> {\n if (!sdk) return;\n try {\n await sdk.shutdown();\n isInitialized = false;\n sdk = null;\n } catch (error) {\n console.error('[neoiq-foundation] Error shutting down tracing:', error);\n throw error;\n }\n}\n\nexport function getTracer(name: string): Tracer {\n return trace.getTracer(name);\n}\n\nexport function getActiveSpan(): ReturnType<typeof trace.getActiveSpan> {\n return trace.getActiveSpan();\n}\n\nexport function getTraceContext(): { traceId?: string; spanId?: string } {\n const span = trace.getActiveSpan();\n if (!span) return {};\n const ctx = span.spanContext();\n return { traceId: ctx.traceId, spanId: ctx.spanId };\n}\n\nexport function isTracingEnabled(): boolean {\n return isInitialized;\n}\n\nexport { trace, context, propagation, SpanStatusCode };\nexport type { Tracer };\n"],"mappings":"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"}