@ciq-dev/neoiq-foundation-node 1.1.2-beta.5 → 1.1.2-beta.6

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-Cdy7GW7Y.js');
2
+ const require_tracing = require('./tracing-MDIljIwL.js');
3
3
 
4
4
  //#region src/bootstrap.ts
5
5
  const VALID_ENVIRONMENTS = [
@@ -1,4 +1,4 @@
1
- import { getDefaultOtelEndpoint, setupTracing } from "./tracing-BdAbHWu1.mjs";
1
+ import { getDefaultOtelEndpoint, setupTracing } from "./tracing-BDujtW7K.mjs";
2
2
 
3
3
  //#region src/bootstrap.ts
4
4
  const VALID_ENVIRONMENTS = [
package/dist/index.d.mts CHANGED
@@ -1,3 +1,4 @@
1
+ import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
1
2
  import { Meter, Meter as Meter$1, Span, SpanStatusCode, Tracer, Tracer as Tracer$1, context, metrics, propagation, trace } from "@opentelemetry/api";
2
3
  import { z } from "zod";
3
4
  import { Logger as Logger$1 } from "pino";
@@ -580,6 +581,19 @@ interface TracingOptions {
580
581
  }
581
582
  /** Initialize OpenTelemetry tracing */
582
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
+
583
597
  /** Shutdown tracing gracefully */
584
598
  declare function shutdownTracing(): Promise<void>;
585
599
  declare function getTracer(name: string): Tracer;
@@ -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
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { Logger as Logger$1 } from "pino";
3
+ import "@opentelemetry/auto-instrumentations-node";
3
4
  import { Meter, Meter as Meter$1, Span, SpanStatusCode, Tracer, Tracer as Tracer$1, context, metrics, propagation, trace } from "@opentelemetry/api";
4
5
  import { IMetricReader } from "@opentelemetry/sdk-metrics";
5
6
  import * as fastify1 from "fastify";
@@ -580,6 +581,19 @@ interface TracingOptions {
580
581
  }
581
582
  /** Initialize OpenTelemetry tracing */
582
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
+
583
597
  /** Shutdown tracing gracefully */
584
598
  declare function shutdownTracing(): Promise<void>;
585
599
  declare function getTracer(name: string): Tracer;
@@ -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-Cdy7GW7Y.js');
2
+ const require_tracing = require('./tracing-MDIljIwL.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-BdAbHWu1.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-BDujtW7K.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";
@@ -5,6 +5,7 @@ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-grpc";
5
5
  import { resourceFromAttributes } from "@opentelemetry/resources";
6
6
  import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
7
7
  import { SpanStatusCode as SpanStatusCode$1, context as context$1, propagation as propagation$1, trace as trace$1 } from "@opentelemetry/api";
8
+ import { FastifyOtelInstrumentation } from "@fastify/otel";
8
9
  import { z } from "zod";
9
10
 
10
11
  //#region rolldown:runtime
@@ -136,22 +137,47 @@ function setupTracing(options) {
136
137
  "deployment.environment": environment
137
138
  });
138
139
  const traceExporter = new OTLPTraceExporter({ url: endpoint });
139
- const instrumentationConfig = buildInstrumentationConfig(autoInstrumentation);
140
140
  if (!metricReader && !process.env.OTEL_METRICS_EXPORTER) process.env.OTEL_METRICS_EXPORTER = "none";
141
141
  sdk = new NodeSDK({
142
142
  resource,
143
143
  traceExporter,
144
144
  ...metricReader ? { metricReaders: [metricReader] } : {},
145
145
  logRecordProcessors: [],
146
- instrumentations: [getNodeAutoInstrumentations(instrumentationConfig)]
146
+ instrumentations: buildInstrumentations(autoInstrumentation)
147
147
  });
148
148
  sdk.start();
149
149
  isInitialized = true;
150
150
  }
151
+ /**
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
+ function buildInstrumentations(autoInstrumentation = {}) {
164
+ const instrumentations = [...getNodeAutoInstrumentations(buildInstrumentationConfig(autoInstrumentation))];
165
+ if (autoInstrumentation.fastify !== false) {
166
+ const fastifyOtel = new FastifyOtelInstrumentation({
167
+ registerOnInitialization: true,
168
+ requestHook: (span, request) => {
169
+ const routeUrl = request.routeOptions?.url;
170
+ const method = request.method;
171
+ if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);
172
+ }
173
+ });
174
+ instrumentations.push(fastifyOtel);
175
+ }
176
+ return instrumentations;
177
+ }
151
178
  function buildInstrumentationConfig(config) {
152
179
  const mapping = {
153
180
  http: "@opentelemetry/instrumentation-http",
154
- fastify: "@opentelemetry/instrumentation-fastify",
155
181
  express: "@opentelemetry/instrumentation-express",
156
182
  mongodb: "@opentelemetry/instrumentation-mongodb",
157
183
  pg: "@opentelemetry/instrumentation-pg",
@@ -203,4 +229,4 @@ function isTracingEnabled() {
203
229
 
204
230
  //#endregion
205
231
  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 };
206
- //# sourceMappingURL=tracing-BdAbHWu1.mjs.map
232
+ //# sourceMappingURL=tracing-BDujtW7K.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing-BDujtW7K.mjs","names":["input: FoundationConfigInput","sdk: NodeSDK | null","options: TracingOptions","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 */\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 });\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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"}
@@ -28,6 +28,7 @@ const __opentelemetry_exporter_trace_otlp_grpc = __toESM(require("@opentelemetry
28
28
  const __opentelemetry_resources = __toESM(require("@opentelemetry/resources"));
29
29
  const __opentelemetry_semantic_conventions = __toESM(require("@opentelemetry/semantic-conventions"));
30
30
  const __opentelemetry_api = __toESM(require("@opentelemetry/api"));
31
+ const __fastify_otel = __toESM(require("@fastify/otel"));
31
32
  const zod = __toESM(require("zod"));
32
33
 
33
34
  //#region src/config.ts
@@ -155,22 +156,47 @@ function setupTracing(options) {
155
156
  "deployment.environment": environment
156
157
  });
157
158
  const traceExporter = new __opentelemetry_exporter_trace_otlp_grpc.OTLPTraceExporter({ url: endpoint });
158
- const instrumentationConfig = buildInstrumentationConfig(autoInstrumentation);
159
159
  if (!metricReader && !process.env.OTEL_METRICS_EXPORTER) process.env.OTEL_METRICS_EXPORTER = "none";
160
160
  sdk = new __opentelemetry_sdk_node.NodeSDK({
161
161
  resource,
162
162
  traceExporter,
163
163
  ...metricReader ? { metricReaders: [metricReader] } : {},
164
164
  logRecordProcessors: [],
165
- instrumentations: [(0, __opentelemetry_auto_instrumentations_node.getNodeAutoInstrumentations)(instrumentationConfig)]
165
+ instrumentations: buildInstrumentations(autoInstrumentation)
166
166
  });
167
167
  sdk.start();
168
168
  isInitialized = true;
169
169
  }
170
+ /**
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
+ function buildInstrumentations(autoInstrumentation = {}) {
183
+ const instrumentations = [...(0, __opentelemetry_auto_instrumentations_node.getNodeAutoInstrumentations)(buildInstrumentationConfig(autoInstrumentation))];
184
+ if (autoInstrumentation.fastify !== false) {
185
+ const fastifyOtel = new __fastify_otel.FastifyOtelInstrumentation({
186
+ registerOnInitialization: true,
187
+ requestHook: (span, request) => {
188
+ const routeUrl = request.routeOptions?.url;
189
+ const method = request.method;
190
+ if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);
191
+ }
192
+ });
193
+ instrumentations.push(fastifyOtel);
194
+ }
195
+ return instrumentations;
196
+ }
170
197
  function buildInstrumentationConfig(config) {
171
198
  const mapping = {
172
199
  http: "@opentelemetry/instrumentation-http",
173
- fastify: "@opentelemetry/instrumentation-fastify",
174
200
  express: "@opentelemetry/instrumentation-express",
175
201
  mongodb: "@opentelemetry/instrumentation-mongodb",
176
202
  pg: "@opentelemetry/instrumentation-pg",
@@ -329,4 +355,4 @@ Object.defineProperty(exports, 'shutdownTracing', {
329
355
  return shutdownTracing;
330
356
  }
331
357
  });
332
- //# sourceMappingURL=tracing-Cdy7GW7Y.js.map
358
+ //# sourceMappingURL=tracing-MDIljIwL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing-MDIljIwL.js","names":["input: FoundationConfigInput","sdk: NodeSDK | null","options: TracingOptions","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 */\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 });\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ciq-dev/neoiq-foundation-node",
3
- "version": "1.1.2-beta.5",
3
+ "version": "1.1.2-beta.6",
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",
@@ -78,6 +78,7 @@
78
78
  "url": "git+https://github.com/commerceiq/neoiq-foundation-node.git"
79
79
  },
80
80
  "dependencies": {
81
+ "@fastify/otel": "^0.18.1",
81
82
  "node-vault": "^0.12.0"
82
83
  }
83
84
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracing-BdAbHWu1.mjs","names":["input: FoundationConfigInput","sdk: NodeSDK | null","options: TracingOptions","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 { type AutoInstrumentationConfig, getDefaultOtelEndpoint } from '../config';\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 const instrumentationConfig = buildInstrumentationConfig(autoInstrumentation);\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: [getNodeAutoInstrumentations(instrumentationConfig)],\n });\n\n sdk.start();\n isInitialized = true;\n}\n\nfunction buildInstrumentationConfig(\n config: AutoInstrumentationConfig\n): Record<string, { enabled: boolean }> {\n const mapping: Record<string, string> = {\n http: '@opentelemetry/instrumentation-http',\n fastify: '@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, { 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-Cdy7GW7Y.js","names":["input: FoundationConfigInput","sdk: NodeSDK | null","options: TracingOptions","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 { type AutoInstrumentationConfig, getDefaultOtelEndpoint } from '../config';\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 const instrumentationConfig = buildInstrumentationConfig(autoInstrumentation);\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: [getNodeAutoInstrumentations(instrumentationConfig)],\n });\n\n sdk.start();\n isInitialized = true;\n}\n\nfunction buildInstrumentationConfig(\n config: AutoInstrumentationConfig\n): Record<string, { enabled: boolean }> {\n const mapping: Record<string, string> = {\n http: '@opentelemetry/instrumentation-http',\n fastify: '@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, { 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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"}