@ciq-dev/neoiq-foundation-node 1.1.2-beta.5 → 1.1.2-beta.7
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 +1 -1
- package/dist/bootstrap.mjs +1 -1
- package/dist/index.d.mts +24 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{tracing-Cdy7GW7Y.js → tracing-BujFTwI7.js} +49 -4
- package/dist/tracing-BujFTwI7.js.map +1 -0
- package/dist/{tracing-BdAbHWu1.mjs → tracing-DYGDSAan.mjs} +49 -4
- package/dist/tracing-DYGDSAan.mjs.map +1 -0
- package/package.json +2 -1
- package/dist/tracing-BdAbHWu1.mjs.map +0 -1
- package/dist/tracing-Cdy7GW7Y.js.map +0 -1
package/dist/bootstrap.js
CHANGED
package/dist/bootstrap.mjs
CHANGED
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,29 @@ 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
|
+
/**
|
|
597
|
+
* Produce a clean name for a Fastify lifecycle (hook/handler) span.
|
|
598
|
+
*
|
|
599
|
+
* @fastify/otel names these "<hook> - <fn name>", but anonymous hook functions fall
|
|
600
|
+
* back to the full plugin-encapsulation chain ("fastify -> @fastify/otel -> ... ->
|
|
601
|
+
* @fastify/x"), which is unreadable. When that chain is detected, collapse it to a
|
|
602
|
+
* clean, route-scoped name (e.g. "onRequest /api/v1/foo"). Returns `null` when the
|
|
603
|
+
* span is already cleanly named (a named hook like "onRequest - handleCors"), so the
|
|
604
|
+
* caller leaves it untouched.
|
|
605
|
+
*/
|
|
606
|
+
|
|
583
607
|
/** Shutdown tracing gracefully */
|
|
584
608
|
declare function shutdownTracing(): Promise<void>;
|
|
585
609
|
declare function getTracer(name: string): Tracer;
|
package/dist/index.d.mts.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;cAOa,iCAA+B,CAAA,CAAA;mCAchC,CAAA,CAAA;;;;;;;;;EAdC,EAAA,eAAA,aAAA,aAcD,CAAA,CAAA;EAAA,GAAA,eAAA,aAAA,aAAA,CAAA,CAAA;CAAA,EAAA,OAAA,cAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;KAEA,yBAAA,GAA4B,CAAA,CAAE,aAAa;cAG1C,sBAAoB,CAAA,CAAA;sCAOrB,CAAA,CAAA;;;;;;;IA1BgC,OAAA,eAAA,aAAA,aAAA,CAAA,CAAA;IAAA,EAAA,eAAA,aAAA,aAAA,CAAA,CAAA;IAgBhC,KAAA,eAAA,aAAyB,aAAA,CAAA,CAAA;IAAA,KAAA,eAAA,aAAA,aAAA,CAAA,CAAA;IAAkB,OAAA,eAAA,aAAA,aAAA,CAAA,CAAA;IAAf,IAAE,eAAA,aAAA,aAAA,CAAA,CAAA;IAAK,EAAA,eAAA,aAAA,aAAA,CAAA,CAAA;IAGlC,GAAA,eAAA,aAOD,aAAA,CAAA,CAAA;EAAA,CAAA,EAAA,OAAA,cAAA,EAAA;IAAA,IAAA,CAAA,EAAA,OAAA,GAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAPqB,OAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAAA,OAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IASrB,OAAA,CAAA,EAAA,OAAc,GAAA,SAAA;IAAA,EAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAAkB,KAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAAf,KAAE,CAAA,EAAA,OAAA,GAAA,SAAA;IAAK,OAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAMvB,IAAA,CAAA,EAAA,OAAA,GAKX,SAAA;IAAA,EAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAAA,GAAA,CAAA,EAAA,OAAA,GAAA,SAAA;;;KAXU,cAAA,GAAiB,CAAA,CAAE,aAAa;cAM/B,kBAAgB,CAAA,CAAA;UAAA,cAAA,CAK3B,CAAA,CAAA,SAL2B,CAAA;EAAA,iBAAA,cAAA,YAAA,CAAA;AAO7B,CAAA,EAAA,OAAY,cAAU,EAAA;EAAA,QAAA,EAAA,MAAA;EAAA,iBAAkB,EAAA,MAAA;CAAgB,EAAA;EAAxB,QAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAGnB,iBAAA,CAAA,EAAA,MAKD,GAAA,SAAA;CAAA,CAAA;AAAA,KARA,UAAA,GAAa,CAAA,CAAE,KAQf,CAAA,OAR4B,gBAQ5B,CAAA;cALC,qBAAmB,CAAA,CAAA;oCAKpB,CAAA,CAAA;;;;;;EALoB,KAAA,CAAA,EAAA,OAAA,GAAA,MAAA,GAAA,MAAA,GAAA,OAAA,GAAA,SAAA;EAOpB,WAAA,CAAA,EAAA,OAAa,GAAA,SAAA;CAAA,CAAA;AAAkB,KAA/B,aAAA,GAAgB,CAAA,CAAE,KAAa,CAAA,OAAA,mBAAA,CAAA;AAAf,cAGf,0BAHiB,EAGS,CAAA,CAAA,SAHT,CAAA;EAAK,UAAA,eAAA,aAAA,CAWvB,CAAA,CAAA,UAXuB,CAAA,CAAA;EAGtB,OAAA,eAAA,aAQD,aAAA,CAAA,CAAA;EAAA,eAAA,eAAA,aAAA,aAAA,CAAA,CAAA;EAAA,WAAA,eAAA,aAAA,YAAA,CAAA,CAAA;;;;;;;;;;;;;;;KAEA,oBAAA,GAAuB,CAAA,CAAE,aAAa;cAGrC,uBAAqB,CAAA,CAAA;iBAbK,eAAA,aAAA,WAAA,CAiB3B,CAAA,CAAA,SAjB2B,EAAA,MAAA,CAAA,CAAA,CAAA;AAAA,CAAA,EAAA,OAAA,cAAA,EAAA;EAU3B,eAAA,CAAA,EAAA,MAAoB,EAAA,GAAA,SAAA;CAAA,EAAA;EAAA,eAAkB,CAAA,EAAA,MAAA,EAAA,GAAA,SAAA;CAA0B,CAAA;AAAlC,KAS9B,eAAA,GAAkB,CAAA,CAAE,KATU,CAAA,OASG,qBATH,CAAA;AAG7B,cASA,oBALD,EAKqB,CAAA,CAAA,SALrB,CAAA;EAAA,YAAA,eAAA,aAAA,CAYA,CAAA,CAAA,UAZA,CAAA,CAAA;EAAA,cAAA,eAAA,aAAA,YAAA,CAAA,CAAA;;;;;cAJsB,CAAA,EAAA,OAAA,GAAA,SAAA;EAAA,cAAA,CAAA,EAAA,MAAA,GAAA,SAAA;AAMlC,CAAA,CAAA;AAA2B,KAYf,cAAA,GAAiB,CAAA,CAAE,KAZJ,CAAA,OAYiB,oBAZjB,CAAA;AAAkB,cAehC,iBAfgC,EAef,CAAA,CAAA,SAfe,CAAA;EAAqB,OAAlC,cAAA,CAwB9B,CAAA,CAAA,UAxB8B,CAAA;EAAK,OAAA,cAAA,YAAA,CAAA;EAGxB,UAAA,cAOD,UAAA,CAAA,CAAA,YAAA,EAAA,OAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,YAAA,CAAA;EAAA,UAAA,cAAA,YAAA,CAAA;;;;;;;YAPqB,EAAA,YAAA,GAAA,OAAA;EAAA,UAAA,EAAA,MAAA;EASrB,SAAA,EAAA,MAAc;EAAA,YAAA,EAAA,MAAA;EAAA,IAAkB,CAAA,EAAA,MAAA,GAAA,SAAA;EAAoB,SAAjC,CAAA,EAAA,MAAA,GAAA,SAAA;AAAK,CAAA,EAAA;EAGvB,OAAA,CAAA,EAAA,OAAA,GASX,SAAA;EAAA,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAA,UAAA,CAAA,EAAA,YAAA,GAAA,OAAA,GAAA,SAAA;;;;;;;KAEU,WAAA,GAAc,CAAA,CAAE,aAAa;cAG5B,wBAAsB,CAAA,CAAA;eAiBjC,CAAA,CAAA;;;;;;;;MA/B4B,IAAA,eAAA,aAAA,aAAA,CAAA,CAAA;MAAA,OAAA,eAAA,aAAA,aAAA,CAAA,CAAA;MAWlB,OAAW,eAAA,aAAA,aAAA,CAAA,CAAA;MAAA,OAAA,eAAA,aAAA,aAAA,CAAA,CAAA;MAAkB,EAAA,eAAA,aAAA,aAAA,CAAA,CAAA;MAAb,KAAA,eAAA,aAAA,aAAA,CAAA,CAAA;MAAK,KAAA,eAAA,aAAA,aAAA,CAAA,CAAA;MAGpB,OAAA,eAiBX,aAAA,aAAA,CAAA,CAAA;MAAA,IAAA,eAAA,aAAA,aAAA,CAAA,CAAA;MAAA,EAAA,eAAA,aAAA,aAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAjBiC,YAAA,cAAA,YAAA,CAAA;IAAA,SAAA,eAAA,YAAA,CAAA;EAmBvB,CAAA,EAAA,OAAA,cAAgB,EAAA;IAAA,OAAA,EAAA,OAAA;IAAkB,OAAA,EAAA,MAAA;IAAf,UAAE,EAAA,YAAA,GAAA,OAAA;IAAK,UAAA,EAAA,MAAA;IAE1B,SAAA,EAAA,MAAA;IAAqB,YAAA,EAAA,MAAA;IAAkB,IAAA,CAAA,EAAA,MAAA,GAAA,SAAA;IAAf,SAAE,CAAA,EAAA,MAAA,GAAA,SAAA;EAAK,CAAA,EAAA;;IAK3B,OAAA,CAAA,EAAW,MAAA,GAAA,SAAA;IAAA,UAAA,CAAA,EAAA,YAAA,GAAA,OAAA,GAAA,SAAA;IAAQ,IAAA,CAAA,EAAA,MAAA,GAAA,SAAA;IAAwB,UAAA,CAAA,EAAA,MAAA,GAAA,SAAA;IAAgB,SAAA,CAAA,EAAA,MAAA,GAAA,SAAA;;IAc3D,SAAA,CAAA,EAAA,MAAA,GAAsB,SAAA;;;;;;;;;;;ICtIrB,OAAA,CAAA,EAAA,OAAc,GAAA,SAKT;IAIL,OAAA,CAAA,EAAA,OAAc,GAAA,SAAA;IAAA,OAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IACf,mBAAA,CAAA,EAAA;MACE,IAAA,CAAA,EAAA,OAAA,GAAA,SAAA;MAA0B,OAAA,CAAA,EAAA,OAAA,GAAA,SAAA;MAAI,OAAA,CAAA,EAAA,OAAA,GAAA,SAAA;MAC1B,OAAA,CAAA,EAAA,OAAA,GAAA,SAAA;MAAqB,EAAA,CAAA,EAAA,OAAA,GAAA,SAAA;MAAI,KAAA,CAAA,EAAA,OAAA,GAAA,SAAA;MAAe,KAAA,CAAA,EAAA,OAAA,GAAA,SAAA;MACpC,OAAA,CAAA,EAAA,OAAA,GAAA,SAAA;MAAR,IAAA,CAAA,EAAA,OAAA,GAAA,SAAA;MAA0B,EAAA,CAAA,EAAA,OAAA,GAAA,SAAA;MAOxB,GAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAEG,CAAA,GAAA,SAAA;EAAM,CAAA;;IAsBb,QAAA,EAAA,MAAA;;;;IClDC,UAAA,CAAA,EAAa,OAAA,GAMX,SAAA;IAIF,OAAM,CAAA,EAAA,OAAA,GAAA,SAAA;IAAA,eAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAKQ,WAAA,CAAA,EAAA,MAAA,GAAA,SAAA;IACd,aAAA,CAAA,EAAA,MAAA,EAAA,GAAA,SAAA;EAAU,CAAA;;IAIX,eAAY,CAAA,EAAA,MAAA,EAAA,GAAA,SAAA;EAAA,CAAA;EAAA,QAAU,EAAA;IAAgB,YAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAAM,cAAA,CAAA,EAAA,MAAA,GAAA,SAAA;;EA6D5C,KAAA,EAAA;IAkCA,OAAA,EAAA,OAAe;IAIf,OAAA,EAAA,MAAe;;;;IC3Gd,YAAA,EAAc,MAAA;IAAA,IAAA,CAAA,EAAA,MAAA,GAAA,SAAA;IAKP,SAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAyB,CAAA;AAOnB,CAAA,EAAA;;EA6Bd,OAAA,CAAA,EAAA;;IA6JM,WAAA,CAAA,EAAe,OAAA,GAAA,SAAW;EAYhC,CAAA,GAAA,SAAS;EAIT,cAAA,CAAA,EAAa,MAAA,GAAA,SAAA;EAAA,WAAA,CAAA,EAAA,aAAA,GAAA,SAAA,GAAA,IAAA,GAAA,YAAA,GAAA,SAAA;EAAA,QAAsB,CAAM,EAAA;IAAxB,OAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAAU,OAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAI3B,OAAA,CAAA,EAAA,OAAe,GAAA,SAAA;IAOf,mBAAgB,CAAA,EAAA;;;;MCvOf,OAAA,CAAA,EAAc,OAAA,GAAA,SAAA;;;;;;;;IA0Cf,CAAA,GAAA,SAAY;;EAgCN,IAAA,CAAA,EAAA;IAYN,QAAQ,CAAA,EAAA,MAAA,GAA2C,SAAK;IAIxD,iBAAgB,CAAA,EAAA,MAAA,GAAA,SAAA;;;;IC5FtB,OAAA,CAAA,EAAA,OAAA,GAAoB,SAAA;IAQb,eAAA,CAAA,EAAA,OAAqB,GAAA,SAAA;IAQrB,WAAA,CAAA,EAAA,MAAoB,GAAA,SAAA;IAAA,aAAA,CAAA,EAAA,MAAA,EAAA,GAAA,SAAA;EAAA,CAAA,GAE1B,SAAA;EAAM,SACE,CAAA,EAAA;IAKA,eAAA,CAAA,EAAA,MAAA,EAAA,GAAA,SAAA;EAAqB,CAAA,GAAA,SAAA;EACvC,QAAA,CAAA,EAAA;IAAA,YAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAIsB,cAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAoB,CAAA,GAAA,SAAA;EAAA,KAAA,CAAA,EAAA;;IAwC3B,OAAA,CAAA,EAAA,MAAA,GAAA,SAAyB;IAAA,UAAA,CAAA,EAAA,YAAA,GAAA,OAAA,GAAA,SAAA;IAAU,IAAA,CAAA,EAAA,MAAA,GAAA,SAAA;IAAoB,UAAA,CAAA,EAAA,MAAA,GAAA,SAAA;IAAA,SAAA,CAAA,EAAA,MAAA,GAAA,SAAA;IAAA,YAAA,CAAA,EAAA,MAAA,GAAA,SAAA;IAAA,SAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAA,CAAA,GAAA,SAAA;CAAA,CAAA;AAAA,KL8C3D,gBAAA,GAAmB,CAAA,CAAE,KK9CsC,CAAA,OL8CzB,sBK9CyB,CAAA;KLgD3D,qBAAA,GAAwB,CAAA,CAAE,aAAa;;;AM/GnD;AAA6B,iBNoHb,WAAA,CMpHa,KAAA,ENoHM,qBMpHN,CAAA,ENoH8B,gBMpH9B;;AAQhB,iBN0HG,sBAAA,CAAA,CM1HH,EAAA,MAAA,CAAA;;;;;;;;;;;ULZI,cAAA;;;;;gBAKD;;ADbhB;AAcY,UCGK,cAAA,CDHL;EAAA,UAAA,EAAA,ECII,cDJJ,GAAA,SAAA;kBCKM,0BAA0B,IAAI;sBAC1B,qBAAqB,IAAI,eAAe;kBAC5C,QAAQ,kBAAkB;;;;;;oBAOxB;;uBAEG;;;;;iBAsBP,oBAAA,CAAA,GAAwB;;;;;UClDvB,aAAA;;;;;;mBAME;;;AFRN,UEYI,MAAA,CFZJ;EAcD,KAAA,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,MAAA,EAAA,GAAA,IAAA;EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,MAAA,EAAA,GAAA,IAAA;;;+BEGmB;iBACd;;;iBAID,YAAA,UAAsB,gBAAgB;;iBA6DtC,oBAAA,+CAGb;iBA+Ba,eAAA,SAAwB;iBAIxB,eAAA,CAAA,GAAmB;;;;;UC3GlB,cAAA;EHdJ,WAAA,EAAA,MAAA;EAcD,cAAA,EAAA,MAAA;EAAA,WAAA,EAAA,MAAA;;wBGKY;;;;;;;iBAOP;;;iBA6BD,YAAA,UAAsB;;;;;;;;;;;;;;;;;;;;;;;;;AHvCiB,iBGoMjC,eAAA,CAAA,CHpMiC,EGoMd,OHpMc,CAAA,IAAA,CAAA;AAAf,iBGgNxB,SAAA,CHhN0B,IAAA,EAAA,MAAA,CAAA,EGgND,MHhNC;AAAK,iBGoN/B,aAAA,CAAA,CHpN+B,EGoNd,UHpNc,CAAA,OGoNI,KAAA,CAAM,aHpNV,CAAA;AAGlC,iBGqNG,eAAA,CAAA,CH9MJ,EAAA;EAAA,OAAA,CAAA,EAAA,MAAA;EAAA,MAAA,CAAA,EAAA,MAAA;;iBGqNI,gBAAA,CAAA;;;;UCvOC,cAAA;;;;;;;;;AJRjB;;;;;;;;;;;;;;;;;iBIkDgB,YAAA,UAAsB;;iBAgChB,eAAA,CAAA,GAAmB;iBAYzB,QAAA,kCAAmD;iBAInD,gBAAA,CAAA;;;;UC5FN,oBAAA;;;;;;;UAQO,qBAAA;;ELdJ,OAAA,CAAA,EAAA,OAAA;EAcD,eAAA,CAAA,EAAA,OAAA;EAAA,WAAA,CAAA,EAAA,MAAA;;;UKQK,oBAAA;;WAEN;mBACQ;;;;;mBAKA;;;;uBAKI;;;;iBAwCP,yBAAA,UAAmC,uBAAoB,QAAA,CAAA,sBAAA,QAAA,uBAAA,QAAA,CAAA,gBAAA,EAAA,QAAA,CAAA,0BAAA,EAAA,QAAA,CAAA,iBAAA;;;;UC/DtD,YAAA;ENZJ,MAAA,EAAA,SAAA,GAAA,UAAA,GAAA,WAcD;EAAA,SAAA,EAAA,MAAA;EAAA,OAAA,EAAA,MAAA;;;;aMKC;aACA;aACA;;;UAII,eAAA;;;;;UAUA,mBAAA;mBACE;mBACA;kBACD;4BACU;4CACgB;;;;;mBAEzB;mCACgB,IAAI,QAAQ,KAAK,QAAQ;;KAGhD,UAAA,GAAa;UAER,iBAAA;;;;;;INhD2B,OAAA,CAAA,EAAA,MAAA;IAAA,UAAA,CAAA,EAAA,MAAA;IAgBhC,gBAAA,CAAA,EAAA,MAAyB,EAAA;IAAA;IAAkB,kBAAA,CAAA,EAAA,OAAA;EAA+B,CAAA;EAAvC,cAAA,CAAA,EAAA;IAGlC,OAAA,CAAA,EAAA,OAAA;IAOD,YAAA,CAAA,EAAA,MAAA;IAAA,wBAAA,CAAA,EAAA,MAAA;;YMuCA;eACG;;UAGE,UAAA;wBACO,KAAK,mCAAmC;;UAG/C,eAAA;YACL;;cAEE;uBACS,IAAI,QAAQ,eAAe,IAAI,QAAQ;;UAG7C,aAAA;;2BAEU,QAAQ;;6CAEU;;;;iBAI5B;;UAOA,kBAAA;mBACE;;;;;;0BAIO;iBACT;sBACK;oBACF;mBAGD;oBACC;0BACM;;mBAIP;;kBAED;;gCAEc;;gDAEgB;;iBNnGf,EAAA,GAAA,GAAA;IAAA,OAAA,CAAA,EAAA,MAAA;IASrB,MAAA,CAAA,EAAA,MAAc;EAAA,CAAA;EAAA;EAAsC,aAAjC,EAAA,GAAA,GM8FR,IN9FQ,GAAA,SAAA;EAAK;EAMvB,gBAAA,EAAA,CAKX,OAAA,EMqF4B,INrF5B,CMqFiC,iBNrFjC,EAAA,YAAA,CAAA,EAAA,GMqFsE,UNrFtE;EAAA;EAAA,QAAA,EAAA,GAAA,GMuFgB,ONvFhB,CAAA,IAAA,CAAA;;;;gBM2Fc;;ENhGa,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,GAAA,GMkGQ,CNlGR,GMkGY,ONlGZ,CMkGoB,CNlGpB,CAAA,EAAA,GMkG2B,ONlG3B,CMkGmC,CNlGnC,CAAA;EAOjB;EAAU,OAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,GAAA,GM6FG,CN7FH,GM6FO,ON7FP,CM6Fe,CN7Ff,CAAA,EAAA,QAAA,CAAA,EM6F8B,CN7F9B,EAAA,GM6FoC,ON7FpC,CM6F4C,CN7F5C,GAAA,SAAA,CAAA;;;;;;;iBOWN,gBAAA,QAAwB,wBAAwB;;cA6VnD,2BAAkB;;;;;;;;;;;;;;;;;cCxYlB,cAAc;ART3B;;;;;iBQsIgB,sBAAsB,IAAI;;iBAW1B,qBAAA;;;;;;;;;iBCrIA,gBAAA,UAA0B,oBAAoB;;;;UCApD,eAAA,CVEE;;;;;;MUIN;;;;;;sBACgB;;YAAwB;;;;KAGzC,gBAAA;;;;;MAKC;UAEW,kBAAA;UACP;UACA;;qBAEW;;cAqDR,WAAA,YAAuB;;;;mBVtFQ,IAAA;EAAA,iBAAA,UAAA;EAgBhC,iBAAA,SAAA;EAAyB,iBAAA,YAAA;EAAA,iBAAkB,SAAA;EAA+B,iBAA5C,aAAA;EAAK,QAAA,aAAA;EAGlC;EAOD,QAAA,WAAA;EAAA,WAAA,CAAA,OAAA,EU2EW,kBV3EX;;;2BU6JqB,QAAQ;6CA0BU;;iBAS5B;;iBAUP,iBAAA,UAA2B,qBAAqB;;;;KCzOpD,mBAAA;UAEK,SAAA;;;;KAKL,UAAA,YAAsB,aAAa,SAAS;UAEvC,gBAAA;;;aAGJ;;UAGI,eAAA;;EXVJ,SAAA,CAAA,EAAA,MAAA;;AAcD,UWCK,gBAAA,CXDL;;;;;;aWOC;iBACI;;UAGA,eAAA;QACT;;;;;aAKK;iBACI;;UAGA,kBAAA;;;;;;UAOA,iBAAA;WACN;;;;mBAIQ;;;;UAKF,uBAAA;kBXpD2B,EAAA,MAAA;EAAA,mBAAA,CAAA,EAAA,MAAA;AAgB5C;AAAqC,UWyCpB,uBAAA,CXzCoB;EAAA,gBAAkB,EAAA,MAAA;EAA+B,WAA5C,CAAA,EAAA,MAAA;AAAK;;;;AAG/C;;;;;;UYRiB,WAAA;;iBAGA,iBAAiB,sBAAsB,mBAAmB,QAAQ;iBAClE,YAAY,QAAQ;kBACnB,YAAY,QAAQ;oBAClB,YAAY;uBAET,qBAAqB,QAAQ;wBAE5B,oBAAoB,0BAA0B;EZrBzD,gBAAA,CAAA,GAAA,EYsBW,SZtBX,EAAA,OAcD,EYQgC,uBZRhC,CAAA,EYQ0D,OZR1D,CAAA,MAAA,CAAA;;;;;;;;;;UaHF,YAAA;0BACgB,QAAQ;;UA2BjB,uBAAA;;WAEN;;kBAEO;Ab3ClB;;;;;;ca2Ea,gBAAA,YAA4B;;;;wBAMlB;;iBAiBd,iBACC,sBACG,mBACR,QAAQ;iBAoBU,YAAY,QAAQ;kBAsBnB,YAAY,QAAQ;oBA2BlB,YAAY;uBAMT,qBAAqB,QAAQ;wBAgC5B,oBAAoB,0BAA0B;wBAc9C,oBAAoB,0BAA0B;;;;;UCzM3D,0BAAA;;;;;;;;cAqCJ,mBAAA,YAA+B;;;;Ed1D/B,QAAA,WAAA;EAcD,WAAA,CAAA,OAAA,CAAA,EcmDW,0BdnDX;EAAA,QAAA,SAAA;iBciEH,iBACC,sBACG,mBACR,QAAQ;iBAsBU,YAAY,QAAQ;kBAiBnB,YAAY,QAAQ;oBAalB,YAAY;uBAOT,qBAAqB,QAAQ;yBAgC3B,qBAAqB,0BAA0B;yBAI/C,qBAAqB,0BAA0B"}
|
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,29 @@ 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
|
+
/**
|
|
597
|
+
* Produce a clean name for a Fastify lifecycle (hook/handler) span.
|
|
598
|
+
*
|
|
599
|
+
* @fastify/otel names these "<hook> - <fn name>", but anonymous hook functions fall
|
|
600
|
+
* back to the full plugin-encapsulation chain ("fastify -> @fastify/otel -> ... ->
|
|
601
|
+
* @fastify/x"), which is unreadable. When that chain is detected, collapse it to a
|
|
602
|
+
* clean, route-scoped name (e.g. "onRequest /api/v1/foo"). Returns `null` when the
|
|
603
|
+
* span is already cleanly named (a named hook like "onRequest - handleCors"), so the
|
|
604
|
+
* caller leaves it untouched.
|
|
605
|
+
*/
|
|
606
|
+
|
|
583
607
|
/** Shutdown tracing gracefully */
|
|
584
608
|
declare function shutdownTracing(): Promise<void>;
|
|
585
609
|
declare function getTracer(name: string): Tracer;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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-
|
|
2
|
+
const require_tracing = require('./tracing-BujFTwI7.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-
|
|
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";
|
|
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";
|
|
@@ -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,66 @@ 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:
|
|
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
|
+
/**
|
|
183
|
+
* Produce a clean name for a Fastify lifecycle (hook/handler) span.
|
|
184
|
+
*
|
|
185
|
+
* @fastify/otel names these "<hook> - <fn name>", but anonymous hook functions fall
|
|
186
|
+
* back to the full plugin-encapsulation chain ("fastify -> @fastify/otel -> ... ->
|
|
187
|
+
* @fastify/x"), which is unreadable. When that chain is detected, collapse it to a
|
|
188
|
+
* clean, route-scoped name (e.g. "onRequest /api/v1/foo"). Returns `null` when the
|
|
189
|
+
* span is already cleanly named (a named hook like "onRequest - handleCors"), so the
|
|
190
|
+
* caller leaves it untouched.
|
|
191
|
+
*/
|
|
192
|
+
function cleanLifecycleSpanName(hookName, handlerName, routeUrl) {
|
|
193
|
+
if (!handlerName.includes(" -> ")) return null;
|
|
194
|
+
return routeUrl ? `${hookName} ${routeUrl}` : hookName;
|
|
195
|
+
}
|
|
196
|
+
function buildInstrumentations(autoInstrumentation = {}) {
|
|
197
|
+
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
|
+
}
|
|
214
|
+
return instrumentations;
|
|
215
|
+
}
|
|
170
216
|
function buildInstrumentationConfig(config) {
|
|
171
217
|
const mapping = {
|
|
172
218
|
http: "@opentelemetry/instrumentation-http",
|
|
173
|
-
fastify: "@opentelemetry/instrumentation-fastify",
|
|
174
219
|
express: "@opentelemetry/instrumentation-express",
|
|
175
220
|
mongodb: "@opentelemetry/instrumentation-mongodb",
|
|
176
221
|
pg: "@opentelemetry/instrumentation-pg",
|
|
@@ -329,4 +374,4 @@ Object.defineProperty(exports, 'shutdownTracing', {
|
|
|
329
374
|
return shutdownTracing;
|
|
330
375
|
}
|
|
331
376
|
});
|
|
332
|
-
//# sourceMappingURL=tracing-
|
|
377
|
+
//# sourceMappingURL=tracing-BujFTwI7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -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,66 @@ 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:
|
|
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
|
+
/**
|
|
164
|
+
* Produce a clean name for a Fastify lifecycle (hook/handler) span.
|
|
165
|
+
*
|
|
166
|
+
* @fastify/otel names these "<hook> - <fn name>", but anonymous hook functions fall
|
|
167
|
+
* back to the full plugin-encapsulation chain ("fastify -> @fastify/otel -> ... ->
|
|
168
|
+
* @fastify/x"), which is unreadable. When that chain is detected, collapse it to a
|
|
169
|
+
* clean, route-scoped name (e.g. "onRequest /api/v1/foo"). Returns `null` when the
|
|
170
|
+
* span is already cleanly named (a named hook like "onRequest - handleCors"), so the
|
|
171
|
+
* caller leaves it untouched.
|
|
172
|
+
*/
|
|
173
|
+
function cleanLifecycleSpanName(hookName, handlerName, routeUrl) {
|
|
174
|
+
if (!handlerName.includes(" -> ")) return null;
|
|
175
|
+
return routeUrl ? `${hookName} ${routeUrl}` : hookName;
|
|
176
|
+
}
|
|
177
|
+
function buildInstrumentations(autoInstrumentation = {}) {
|
|
178
|
+
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
|
+
}
|
|
195
|
+
return instrumentations;
|
|
196
|
+
}
|
|
151
197
|
function buildInstrumentationConfig(config) {
|
|
152
198
|
const mapping = {
|
|
153
199
|
http: "@opentelemetry/instrumentation-http",
|
|
154
|
-
fastify: "@opentelemetry/instrumentation-fastify",
|
|
155
200
|
express: "@opentelemetry/instrumentation-express",
|
|
156
201
|
mongodb: "@opentelemetry/instrumentation-mongodb",
|
|
157
202
|
pg: "@opentelemetry/instrumentation-pg",
|
|
@@ -203,4 +248,4 @@ function isTracingEnabled() {
|
|
|
203
248
|
|
|
204
249
|
//#endregion
|
|
205
250
|
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-
|
|
251
|
+
//# sourceMappingURL=tracing-DYGDSAan.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ciq-dev/neoiq-foundation-node",
|
|
3
|
-
"version": "1.1.2-beta.
|
|
3
|
+
"version": "1.1.2-beta.7",
|
|
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":";;;;;;;;;;;;;;AAOA,MAAa,kCAAkC,EAC5C,OAAO;CACN,MAAM,EAAE,SAAS,CAAC,QAAQ,KAAK;CAC/B,SAAS,EAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,SAAS,EAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,SAAS,EAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,IAAI,EAAE,SAAS,CAAC,QAAQ,KAAK;CAC7B,OAAO,EAAE,SAAS,CAAC,QAAQ,KAAK;CAChC,OAAO,EAAE,SAAS,CAAC,QAAQ,KAAK;CAChC,SAAS,EAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,MAAM,EAAE,SAAS,CAAC,QAAQ,KAAK;CAC/B,IAAI,EAAE,SAAS,CAAC,QAAQ,MAAM;CAC9B,KAAK,EAAE,SAAS,CAAC,QAAQ,MAAM;AAChC,EAAC,CACD,SAAS;AAKZ,MAAa,uBAAuB,EACjC,OAAO;CACN,SAAS,EAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,SAAS,EAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,SAAS,EAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,qBAAqB,gCAAgC,QAAQ,CAAE,EAAC;AACjE,EAAC,CACD,SAAS;AAKZ,MAAM,wBACJ;AAEF,MAAa,mBAAmB,EAAE,OAAO;CACvC,UAAU,EACP,QAAQ,CACR,QAAQ,MAAM,QAAQ,IAAI,+BAA+B,sBAAsB;CAClF,mBAAmB,EAAE,QAAQ,CAAC,IAAI,IAAK,CAAC,QAAQ,IAAK;AACtD,EAAC;AAKF,MAAa,sBAAsB,EAChC,OAAO;CACN,OAAO,EAAE,KAAK;EAAC;EAAS;EAAQ;EAAQ;CAAQ,EAAC,CAAC,QAAQ,OAAO;CACjE,aAAa,EAAE,SAAS,CAAC,UAAU;AACpC,EAAC,CACD,SAAS;AAKZ,MAAa,6BAA6B,EACvC,OAAO;CACN,YAAY,EAAE,SAAS,CAAC,QAAQ,KAAK;CACrC,SAAS,EAAE,SAAS,CAAC,QAAQ,MAAM;CACnC,iBAAiB,EAAE,SAAS,CAAC,QAAQ,MAAM;CAC3C,aAAa,EAAE,QAAQ,CAAC,QAAQ,KAAK,KAAK;CAC1C,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;AAC9C,EAAC,CACD,SAAS;AAKZ,MAAa,wBAAwB,EAClC,OAAO,EACN,iBAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAE,EAAC,CACjD,EAAC,CACD,SAAS;AAKZ,MAAa,uBAAuB,EACjC,OAAO;CAEN,cAAc,EAAE,SAAS,CAAC,QAAQ,MAAM;CAExC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAK;AAClD,EAAC,CACD,SAAS;AAKZ,MAAa,oBAAoB,EAAE,OAAO;CACxC,SAAS,EAAE,SAAS,CAAC,QAAQ,MAAM;CACnC,SAAS,EAAE,QAAQ,CAAC,QAAQ,mCAAmC;CAC/D,YAAY,EAAE,KAAK,CAAC,cAAc,OAAQ,EAAC,CAAC,QAAQ,aAAa;CACjE,MAAM,EAAE,QAAQ,CAAC,UAAU;CAC3B,YAAY,EAAE,QAAQ,CAAC,QAAQ,SAAS;CACxC,WAAW,EAAE,QAAQ,CAAC,QAAQ,sDAAsD;CACpF,cAAc,EAAE,QAAQ,CAAC,QAAQ,aAAa;CAC9C,WAAW,EAAE,QAAQ,CAAC,UAAU;AACjC,EAAC;AAKF,MAAa,yBAAyB,EAAE,OAAO;CAC7C,aAAa,EAAE,QAAQ,CAAC,IAAI,GAAG,0BAA0B;CACzD,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,QAAQ,IAAI,mBAAmB,QAAQ;CAC1E,aAAa,EACV,KAAK;EAAC;EAAe;EAAW;EAAM;CAAa,EAAC,CACpD,QACC;EAAC;EAAe;EAAW;EAAM;CAAa,EAAC,SAAS,QAAQ,IAAI,YAAY,GAAG,GAC9E,QAAQ,IAAI,WACb,cACL;CACH,UAAU,qBAAqB,QAAQ,CAAE,EAAC;CAC1C,MAAM,iBAAiB,QAAQ,CAAE,EAAC;CAClC,SAAS,oBAAoB,QAAQ,CAAE,EAAC;CACxC,gBAAgB,2BAA2B,QAAQ,CAAE,EAAC;CACtD,WAAW,sBAAsB,QAAQ,CAAE,EAAC;CAC5C,UAAU,qBAAqB,QAAQ,CAAE,EAAC;CAC1C,OAAO,kBAAkB,QAAQ,CAAE,EAAC;AACrC,EAAC;;AASF,SAAgB,YAAYA,OAAgD;CAC1E,MAAM,SAAS,uBAAuB,UAAU,MAAM;AAEtD,MAAK,OAAO,SAAS;EACnB,MAAM,SAAS,OAAO,MAAM,OACzB,IAAI,CAAC,OAAO,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CACnD,KAAK,KAAK;AACb,QAAM,IAAI,OAAO,qCAAqC,OAAO;CAC9D;AAED,QAAO,OAAO;AACf;;AAGD,SAAgB,yBAAiC;AAC/C,QAAO,QAAQ,IAAI,+BAA+B;AACnD;;;;AC3HD,IAAIC,MAAsB;AAC1B,IAAI,gBAAgB;AAEpB,MAAM,oBAAoB;CAAC;CAAM;CAAW;CAAW;CAAU;CAAW;AAAgB;AAE5F,SAAS,uBAA6B;AAEpC,0BAAuB,gCAA8B,UAAU,YAAa;AAE5E,MAAK,MAAM,OAAO,kBAChB,KAAI;EACF,MAAM,WAAW,UAAQ,QAAQ,IAAI;AACrC,gBAAY,MAAM,UAChB,SAAQ,MACL,sBAAsB,IAAI,+KAG5B;CAEJ,QAAO,CAEP;AAEJ;;AAGD,SAAgB,aAAaC,SAA+B;AAC1D,KAAI,eAAe;AACjB,UAAQ,KAAK,iDAAiD;AAC9D;CACD;AAED,uBAAsB;CAEtB,MAAM,EACJ,aACA,gBACA,aACA,WAAW,wBAAwB,EACnC,sBAAsB,CAAE,GACxB,cACD,GAAG;CAEJ,MAAM,WAAW,uBAAuB;GACrC,oBAAoB;GACpB,uBAAuB;EACxB,0BAA0B;CAC3B,EAAC;CAEF,MAAM,gBAAgB,IAAI,kBAAkB,EAAE,KAAK,SAAU;CAC7D,MAAM,wBAAwB,2BAA2B,oBAAoB;AAe7E,MAAK,iBAAiB,QAAQ,IAAI,sBAChC,SAAQ,IAAI,wBAAwB;AAGtC,OAAM,IAAI,QAAQ;EAChB;EACA;EACA,GAAI,eAAe,EAAE,eAAe,CAAC,YAAa,EAAE,IAAG,CAAE;EACzD,qBAAqB,CAAE;EACvB,kBAAkB,CAAC,4BAA4B,sBAAsB,AAAC;CACvE;AAED,KAAI,OAAO;AACX,iBAAgB;AACjB;AAED,SAAS,2BACPC,QACsC;CACtC,MAAMC,UAAkC;EACtC,MAAM;EACN,SAAS;EACT,SAAS;EACT,SAAS;EACT,IAAI;EACJ,OAAO;EACP,OAAO;EACP,SAAS;EACT,MAAM;EACN,IAAI;EACJ,KAAK;CACN;CAED,MAAMC,SAA+C,CAAE;AACvD,MAAK,MAAM,CAAC,KAAK,oBAAoB,IAAI,OAAO,QAAQ,QAAQ,EAAE;EAChE,MAAM,cAAc,OAAO;EAC3B,MAAM,eAAe,QAAQ,QAAQ,QAAQ;AAC7C,SAAO,uBAAuB,EAAE,SAAS,eAAe,aAAc;CACvE;AACD,QAAO;AACR;;AAGD,eAAsB,kBAAiC;AACrD,MAAK,IAAK;AACV,KAAI;AACF,QAAM,IAAI,UAAU;AACpB,kBAAgB;AAChB,QAAM;CACP,SAAQ,OAAO;AACd,UAAQ,MAAM,mDAAmD,MAAM;AACvE,QAAM;CACP;AACF;AAED,SAAgB,UAAUC,MAAsB;AAC9C,QAAO,QAAM,UAAU,KAAK;AAC7B;AAED,SAAgB,gBAAwD;AACtE,QAAO,QAAM,eAAe;AAC7B;AAED,SAAgB,kBAAyD;CACvE,MAAM,OAAO,QAAM,eAAe;AAClC,MAAK,KAAM,QAAO,CAAE;CACpB,MAAM,MAAM,KAAK,aAAa;AAC9B,QAAO;EAAE,SAAS,IAAI;EAAS,QAAQ,IAAI;CAAQ;AACpD;AAED,SAAgB,mBAA4B;AAC1C,QAAO;AACR"}
|
|
@@ -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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"}
|