@ciq-dev/neoiq-foundation-node 1.1.2-beta.7 → 1.1.2-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bootstrap.js +1 -1
- package/dist/bootstrap.mjs +1 -1
- package/dist/index.d.mts +0 -12
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +0 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{tracing-DYGDSAan.mjs → tracing-LOP7TT9u.mjs} +39 -29
- package/dist/tracing-LOP7TT9u.mjs.map +1 -0
- package/dist/{tracing-BujFTwI7.js → tracing-Yrfx2JK6.js} +39 -29
- package/dist/tracing-Yrfx2JK6.js.map +1 -0
- package/package.json +9 -9
- package/dist/tracing-BujFTwI7.js.map +0 -1
- package/dist/tracing-DYGDSAan.mjs.map +0 -1
package/dist/bootstrap.js
CHANGED
package/dist/bootstrap.mjs
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -581,18 +581,6 @@ interface TracingOptions {
|
|
|
581
581
|
}
|
|
582
582
|
/** Initialize OpenTelemetry tracing */
|
|
583
583
|
declare function setupTracing(options: TracingOptions): void;
|
|
584
|
-
/**
|
|
585
|
-
* Build the full instrumentation list for the NodeSDK.
|
|
586
|
-
*
|
|
587
|
-
* `auto-instrumentations-node` covers http, express, mongodb, redis, etc., but it
|
|
588
|
-
* no longer ships Fastify support — the legacy `@opentelemetry/instrumentation-fastify`
|
|
589
|
-
* does not work with Fastify v5. Fastify is therefore instrumented via the official
|
|
590
|
-
* `@fastify/otel` plugin, which self-registers on every Fastify instance through the
|
|
591
|
-
* `fastify.initialization` diagnostics channel (`registerOnInitialization`) and builds
|
|
592
|
-
* its request span beneath the http server span created by `instrumentation-http`
|
|
593
|
-
* (enabled above). Without this, Fastify services emit only bare, route-less "GET"
|
|
594
|
-
* spans with no request → handler → db waterfall.
|
|
595
|
-
*/
|
|
596
584
|
/**
|
|
597
585
|
* Produce a clean name for a Fastify lifecycle (hook/handler) span.
|
|
598
586
|
*
|
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":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -581,18 +581,6 @@ interface TracingOptions {
|
|
|
581
581
|
}
|
|
582
582
|
/** Initialize OpenTelemetry tracing */
|
|
583
583
|
declare function setupTracing(options: TracingOptions): void;
|
|
584
|
-
/**
|
|
585
|
-
* Build the full instrumentation list for the NodeSDK.
|
|
586
|
-
*
|
|
587
|
-
* `auto-instrumentations-node` covers http, express, mongodb, redis, etc., but it
|
|
588
|
-
* no longer ships Fastify support — the legacy `@opentelemetry/instrumentation-fastify`
|
|
589
|
-
* does not work with Fastify v5. Fastify is therefore instrumented via the official
|
|
590
|
-
* `@fastify/otel` plugin, which self-registers on every Fastify instance through the
|
|
591
|
-
* `fastify.initialization` diagnostics channel (`registerOnInitialization`) and builds
|
|
592
|
-
* its request span beneath the http server span created by `instrumentation-http`
|
|
593
|
-
* (enabled above). Without this, Fastify services emit only bare, route-less "GET"
|
|
594
|
-
* spans with no request → handler → db waterfall.
|
|
595
|
-
*/
|
|
596
584
|
/**
|
|
597
585
|
* Produce a clean name for a Fastify lifecycle (hook/handler) span.
|
|
598
586
|
*
|
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":";;;;;;;;;;;;;;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,SAKf;IAIC,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"}
|
|
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-Yrfx2JK6.js');
|
|
3
3
|
const __opentelemetry_resources = require_tracing.__toESM(require("@opentelemetry/resources"));
|
|
4
4
|
const __opentelemetry_semantic_conventions = require_tracing.__toESM(require("@opentelemetry/semantic-conventions"));
|
|
5
5
|
const __opentelemetry_api = require_tracing.__toESM(require("@opentelemetry/api"));
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AutoInstrumentationConfigSchema, FeaturesConfigSchema, FoundationConfigSchema, LoggingConfigSchema, OtelConfigSchema, RedactionConfigSchema, RequestLoggingConfigSchema, ShutdownConfigSchema, SpanStatusCode, VaultConfigSchema, context, getActiveSpan, getDefaultOtelEndpoint, getTraceContext, getTracer, isTracingEnabled, parseConfig, propagation, setupTracing, shutdownTracing, trace } from "./tracing-
|
|
1
|
+
import { AutoInstrumentationConfigSchema, FeaturesConfigSchema, FoundationConfigSchema, LoggingConfigSchema, OtelConfigSchema, RedactionConfigSchema, RequestLoggingConfigSchema, ShutdownConfigSchema, SpanStatusCode, VaultConfigSchema, context, getActiveSpan, getDefaultOtelEndpoint, getTraceContext, getTracer, isTracingEnabled, parseConfig, propagation, setupTracing, shutdownTracing, trace } from "./tracing-LOP7TT9u.mjs";
|
|
2
2
|
import { resourceFromAttributes } from "@opentelemetry/resources";
|
|
3
3
|
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
|
|
4
4
|
import { SpanStatusCode as SpanStatusCode$1, context as context$1, metrics, propagation as propagation$1, trace as trace$1 } from "@opentelemetry/api";
|
|
@@ -106,6 +106,12 @@ function getDefaultOtelEndpoint() {
|
|
|
106
106
|
|
|
107
107
|
//#endregion
|
|
108
108
|
//#region src/features/tracing.ts
|
|
109
|
+
/** User-agents of infrastructure health-checkers whose requests we don't trace. */
|
|
110
|
+
const HEALTHCHECK_USER_AGENT_PREFIXES = [
|
|
111
|
+
"ELB-HealthChecker",
|
|
112
|
+
"kube-probe",
|
|
113
|
+
"GoogleHC"
|
|
114
|
+
];
|
|
109
115
|
let sdk = null;
|
|
110
116
|
let isInitialized = false;
|
|
111
117
|
const MONITORED_MODULES = [
|
|
@@ -149,18 +155,6 @@ function setupTracing(options) {
|
|
|
149
155
|
isInitialized = true;
|
|
150
156
|
}
|
|
151
157
|
/**
|
|
152
|
-
* Build the full instrumentation list for the NodeSDK.
|
|
153
|
-
*
|
|
154
|
-
* `auto-instrumentations-node` covers http, express, mongodb, redis, etc., but it
|
|
155
|
-
* no longer ships Fastify support — the legacy `@opentelemetry/instrumentation-fastify`
|
|
156
|
-
* does not work with Fastify v5. Fastify is therefore instrumented via the official
|
|
157
|
-
* `@fastify/otel` plugin, which self-registers on every Fastify instance through the
|
|
158
|
-
* `fastify.initialization` diagnostics channel (`registerOnInitialization`) and builds
|
|
159
|
-
* its request span beneath the http server span created by `instrumentation-http`
|
|
160
|
-
* (enabled above). Without this, Fastify services emit only bare, route-less "GET"
|
|
161
|
-
* spans with no request → handler → db waterfall.
|
|
162
|
-
*/
|
|
163
|
-
/**
|
|
164
158
|
* Produce a clean name for a Fastify lifecycle (hook/handler) span.
|
|
165
159
|
*
|
|
166
160
|
* @fastify/otel names these "<hook> - <fn name>", but anonymous hook functions fall
|
|
@@ -174,24 +168,32 @@ function cleanLifecycleSpanName(hookName, handlerName, routeUrl) {
|
|
|
174
168
|
if (!handlerName.includes(" -> ")) return null;
|
|
175
169
|
return routeUrl ? `${hookName} ${routeUrl}` : hookName;
|
|
176
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Build the full instrumentation list for the NodeSDK.
|
|
173
|
+
*
|
|
174
|
+
* auto-instrumentations-node covers http, mongodb, redis, etc., but it no longer
|
|
175
|
+
* bundles Fastify, so Fastify is added explicitly via @fastify/otel (the Fastify
|
|
176
|
+
* core team's official OpenTelemetry plugin, v4–v5). With registerOnInitialization it
|
|
177
|
+
* self-registers on every Fastify instance via the fastify.initialization diagnostics
|
|
178
|
+
* channel, and — riding on instrumentation-http — names the server span "GET /route"
|
|
179
|
+
* and emits the request → hook → handler waterfall (the Fastify equivalent of the
|
|
180
|
+
* Express middleware spans on sibling services), with DB spans nesting underneath.
|
|
181
|
+
*/
|
|
177
182
|
function buildInstrumentations(autoInstrumentation = {}) {
|
|
178
183
|
const instrumentations = [...getNodeAutoInstrumentations(buildInstrumentationConfig(autoInstrumentation))];
|
|
179
|
-
if (autoInstrumentation.fastify !== false) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
});
|
|
193
|
-
instrumentations.push(fastifyOtel);
|
|
194
|
-
}
|
|
184
|
+
if (autoInstrumentation.fastify !== false) instrumentations.push(new FastifyOtelInstrumentation({
|
|
185
|
+
registerOnInitialization: true,
|
|
186
|
+
requestHook: (span, request) => {
|
|
187
|
+
const routeUrl = request.routeOptions?.url;
|
|
188
|
+
const method = request.method;
|
|
189
|
+
if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);
|
|
190
|
+
},
|
|
191
|
+
lifecycleHook: (span, info) => {
|
|
192
|
+
const i = info;
|
|
193
|
+
const cleaned = cleanLifecycleSpanName(i.hookName ?? "", typeof i.handler === "string" ? i.handler : "", i.request?.routeOptions?.url);
|
|
194
|
+
if (cleaned) span.updateName(cleaned);
|
|
195
|
+
}
|
|
196
|
+
}));
|
|
195
197
|
return instrumentations;
|
|
196
198
|
}
|
|
197
199
|
function buildInstrumentationConfig(config) {
|
|
@@ -213,6 +215,14 @@ function buildInstrumentationConfig(config) {
|
|
|
213
215
|
const defaultValue = key !== "fs" && key !== "dns";
|
|
214
216
|
result[instrumentationName] = { enabled: userSetting ?? defaultValue };
|
|
215
217
|
}
|
|
218
|
+
result["@opentelemetry/instrumentation-http"] = {
|
|
219
|
+
...result["@opentelemetry/instrumentation-http"],
|
|
220
|
+
ignoreIncomingRequestHook: (request) => {
|
|
221
|
+
const ua = request.headers?.["user-agent"];
|
|
222
|
+
const uaStr = Array.isArray(ua) ? ua[0] ?? "" : ua ?? "";
|
|
223
|
+
return HEALTHCHECK_USER_AGENT_PREFIXES.some((prefix) => uaStr.startsWith(prefix));
|
|
224
|
+
}
|
|
225
|
+
};
|
|
216
226
|
return result;
|
|
217
227
|
}
|
|
218
228
|
/** Shutdown tracing gracefully */
|
|
@@ -248,4 +258,4 @@ function isTracingEnabled() {
|
|
|
248
258
|
|
|
249
259
|
//#endregion
|
|
250
260
|
export { AutoInstrumentationConfigSchema, FeaturesConfigSchema, FoundationConfigSchema, LoggingConfigSchema, OtelConfigSchema, RedactionConfigSchema, RequestLoggingConfigSchema, ShutdownConfigSchema, SpanStatusCode$1 as SpanStatusCode, VaultConfigSchema, context$1 as context, getActiveSpan, getDefaultOtelEndpoint, getTraceContext, getTracer, isTracingEnabled, parseConfig, propagation$1 as propagation, setupTracing, shutdownTracing, trace$1 as trace };
|
|
251
|
-
//# sourceMappingURL=tracing-
|
|
261
|
+
//# sourceMappingURL=tracing-LOP7TT9u.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing-LOP7TT9u.mjs","names":["input: FoundationConfigInput","sdk: NodeSDK | null","options: TracingOptions","hookName: string","handlerName: string","routeUrl?: string","autoInstrumentation: AutoInstrumentationConfig","instrumentations: Instrumentation[]","config: AutoInstrumentationConfig","mapping: Record<string, string>","result: Record<string, Record<string, unknown>>","request: {\n headers?: Record<string, string | string[] | undefined>;\n }","name: string"],"sources":["../src/config.ts","../src/features/tracing.ts"],"sourcesContent":["/**\n * Foundation Configuration with Zod Validation\n */\n\nimport { z } from 'zod';\n\n// Auto-Instrumentation Config\nexport const AutoInstrumentationConfigSchema = z\n .object({\n http: z.boolean().default(true),\n fastify: z.boolean().default(true),\n express: z.boolean().default(true),\n mongodb: z.boolean().default(true),\n pg: z.boolean().default(true),\n mysql: z.boolean().default(true),\n redis: z.boolean().default(true),\n ioredis: z.boolean().default(true),\n grpc: z.boolean().default(true),\n fs: z.boolean().default(false),\n dns: z.boolean().default(false),\n })\n .partial();\n\nexport type AutoInstrumentationConfig = z.infer<typeof AutoInstrumentationConfigSchema>;\n\n// Features Config\nexport const FeaturesConfigSchema = z\n .object({\n tracing: z.boolean().default(true),\n metrics: z.boolean().default(true),\n logging: z.boolean().default(true),\n autoInstrumentation: AutoInstrumentationConfigSchema.default({}),\n })\n .partial();\n\nexport type FeaturesConfig = z.infer<typeof FeaturesConfigSchema>;\n\n// OTEL Config\nconst DEFAULT_OTEL_ENDPOINT =\n 'http://otel-stack-deployment-collector.observability.svc.cluster.local:4317';\n\nexport const OtelConfigSchema = z.object({\n endpoint: z\n .string()\n .default(() => process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT),\n metricsIntervalMs: z.number().min(1000).default(5000),\n});\n\nexport type OtelConfig = z.infer<typeof OtelConfigSchema>;\n\n// Logging Config\nexport const LoggingConfigSchema = z\n .object({\n level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),\n prettyPrint: z.boolean().optional(),\n })\n .partial();\n\nexport type LoggingConfig = z.infer<typeof LoggingConfigSchema>;\n\n// Request Logging Config\nexport const RequestLoggingConfigSchema = z\n .object({\n logHeaders: z.boolean().default(true),\n logBody: z.boolean().default(false),\n logResponseBody: z.boolean().default(false),\n maxBodySize: z.number().default(10 * 1024),\n redactHeaders: z.array(z.string()).optional(),\n })\n .partial();\n\nexport type RequestLoggingConfig = z.infer<typeof RequestLoggingConfigSchema>;\n\n// Redaction Config\nexport const RedactionConfigSchema = z\n .object({\n additionalPaths: z.array(z.string()).default([]),\n })\n .partial();\n\nexport type RedactionConfig = z.infer<typeof RedactionConfigSchema>;\n\n// Shutdown Config\nexport const ShutdownConfigSchema = z\n .object({\n /** Flush telemetry on uncaughtException / unhandledRejection before process exits */\n flushOnCrash: z.boolean().default(false),\n /** Grace period (ms) for flushing before forcing exit */\n flushTimeoutMs: z.number().min(100).default(5000),\n })\n .partial();\n\nexport type ShutdownConfig = z.infer<typeof ShutdownConfigSchema>;\n\n// Vault Config\nexport const VaultConfigSchema = z.object({\n enabled: z.boolean().default(false),\n address: z.string().default('https://vault.beta.commerceiq.ai'),\n authMethod: z.enum(['kubernetes', 'token']).default('kubernetes'),\n role: z.string().optional(),\n mountPoint: z.string().default('secret'),\n tokenPath: z.string().default('/var/run/secrets/kubernetes.io/serviceaccount/token'),\n k8sAuthMount: z.string().default('kubernetes'),\n namespace: z.string().optional(),\n});\n\nexport type VaultConfig = z.infer<typeof VaultConfigSchema>;\n\n// Main Foundation Config\nexport const FoundationConfigSchema = z.object({\n serviceName: z.string().min(1, 'serviceName is required'),\n serviceVersion: z.string().default(process.env.SERVICE_VERSION || '1.0.0'),\n environment: z\n .enum(['development', 'staging', 'qa', 'production'])\n .default(\n ['development', 'staging', 'qa', 'production'].includes(process.env.NODE_ENV ?? '')\n ? (process.env.NODE_ENV as 'development' | 'staging' | 'qa' | 'production')\n : 'development'\n ),\n features: FeaturesConfigSchema.default({}),\n otel: OtelConfigSchema.default({}),\n logging: LoggingConfigSchema.default({}),\n requestLogging: RequestLoggingConfigSchema.default({}),\n redaction: RedactionConfigSchema.default({}),\n shutdown: ShutdownConfigSchema.default({}),\n vault: VaultConfigSchema.default({}),\n});\n\nexport type FoundationConfig = z.infer<typeof FoundationConfigSchema>;\n\nexport type FoundationConfigInput = z.input<typeof FoundationConfigSchema> & {\n serviceName: string;\n};\n\n/** Parse and validate configuration */\nexport function parseConfig(input: FoundationConfigInput): FoundationConfig {\n const result = FoundationConfigSchema.safeParse(input);\n\n if (!result.success) {\n const errors = result.error.errors\n .map((e) => ` - ${e.path.join('.')}: ${e.message}`)\n .join('\\n');\n throw new Error(`Invalid foundation configuration:\\n${errors}`);\n }\n\n return result.data;\n}\n\n/** Get default OTEL endpoint */\nexport function getDefaultOtelEndpoint(): string {\n return process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT;\n}\n","/**\n * OpenTelemetry Tracing Setup\n */\n\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { trace, context, propagation, SpanStatusCode, type Tracer } from '@opentelemetry/api';\nimport { type IMetricReader } from '@opentelemetry/sdk-metrics';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport { type AutoInstrumentationConfig, getDefaultOtelEndpoint } from '../config';\n\n/**\n * Element type of the NodeSDK instrumentations list. Derived from\n * getNodeAutoInstrumentations so we don't take a direct import on\n * @opentelemetry/instrumentation (only a transitive dependency here).\n */\ntype Instrumentation = ReturnType<typeof getNodeAutoInstrumentations>[number];\ntype InstrumentationConfigMap = Parameters<typeof getNodeAutoInstrumentations>[0];\n\n/** User-agents of infrastructure health-checkers whose requests we don't trace. */\nconst HEALTHCHECK_USER_AGENT_PREFIXES = ['ELB-HealthChecker', 'kube-probe', 'GoogleHC'];\n\nexport interface TracingOptions {\n serviceName: string;\n serviceVersion: string;\n environment: string;\n endpoint?: string;\n autoInstrumentation?: AutoInstrumentationConfig;\n /**\n * Metric reader to attach to the NodeSDK so a single SDK owns both traces and\n * metrics (one global MeterProvider, same gRPC collector). When provided, NodeSDK\n * is the sole owner of metrics; when omitted, NodeSDK is opted out of metrics\n * entirely (see below) so it never registers a stray default MeterProvider.\n */\n metricReader?: IMetricReader;\n}\n\nlet sdk: NodeSDK | null = null;\nlet isInitialized = false;\n\nconst MONITORED_MODULES = ['pg', 'mongodb', 'ioredis', 'mysql2', 'express', '@grpc/grpc-js'];\n\nfunction warnPreloadedModules(): void {\n // require.resolve / require.cache are only available in CJS contexts\n if (typeof require === 'undefined' || typeof require.cache === 'undefined') return;\n\n for (const mod of MONITORED_MODULES) {\n try {\n const resolved = require.resolve(mod);\n if (require.cache[resolved]) {\n console.warn(\n `[neoiq-foundation] \"${mod}\" was imported before tracing init. ` +\n 'Auto-instrumentation may not work for this module. ' +\n 'Use node -r @ciq-dev/neoiq-foundation-node/bootstrap or call createFoundation() first.'\n );\n }\n } catch {\n // Module not installed — no warning needed\n }\n }\n}\n\n/** Initialize OpenTelemetry tracing */\nexport function setupTracing(options: TracingOptions): void {\n if (isInitialized) {\n console.warn('[neoiq-foundation] Tracing already initialized');\n return;\n }\n\n warnPreloadedModules();\n\n const {\n serviceName,\n serviceVersion,\n environment,\n endpoint = getDefaultOtelEndpoint(),\n autoInstrumentation = {},\n metricReader,\n } = options;\n\n const resource = resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n [ATTR_SERVICE_VERSION]: serviceVersion,\n 'deployment.environment': environment,\n });\n\n const traceExporter = new OTLPTraceExporter({ url: endpoint });\n\n // Foundation owns every OpenTelemetry signal explicitly. Left to its own devices,\n // NodeSDK auto-configures metrics AND logs exporters from env defaults — both OTLP\n // over HTTP to localhost:4318 — which nothing listens on, producing ECONNREFUSED\n // spam every export interval. We therefore configure each signal on NodeSDK directly:\n // - traces: the explicit gRPC exporter above.\n // - metrics: the explicit gRPC reader when provided (single SDK, single global\n // MeterProvider, same collector as traces). When metrics are disabled\n // and the deployer hasn't chosen an exporter, opt NodeSDK out via\n // OTEL_METRICS_EXPORTER=none (the only switch NodeSDK exposes for that).\n // - logs: foundation logs via pino, never OTLP. Passing an empty processor list\n // stops NodeSDK from falling back to its env-default localhost:4318 log\n // exporter (`logRecordProcessors: []` takes the explicit branch and skips\n // configureLoggerProviderFromEnv()).\n if (!metricReader && !process.env.OTEL_METRICS_EXPORTER) {\n process.env.OTEL_METRICS_EXPORTER = 'none';\n }\n\n sdk = new NodeSDK({\n resource,\n traceExporter,\n ...(metricReader ? { metricReaders: [metricReader] } : {}),\n logRecordProcessors: [],\n instrumentations: buildInstrumentations(autoInstrumentation),\n });\n\n sdk.start();\n isInitialized = true;\n}\n\n/**\n * Produce a clean name for a Fastify lifecycle (hook/handler) span.\n *\n * @fastify/otel names these \"<hook> - <fn name>\", but anonymous hook functions fall\n * back to the full plugin-encapsulation chain (\"fastify -> @fastify/otel -> ... ->\n * @fastify/x\"), which is unreadable. When that chain is detected, collapse it to a\n * clean, route-scoped name (e.g. \"onRequest /api/v1/foo\"). Returns `null` when the\n * span is already cleanly named (a named hook like \"onRequest - handleCors\"), so the\n * caller leaves it untouched.\n */\nexport function cleanLifecycleSpanName(\n hookName: string,\n handlerName: string,\n routeUrl?: string\n): string | null {\n if (!handlerName.includes(' -> ')) return null;\n return routeUrl ? `${hookName} ${routeUrl}` : hookName;\n}\n\n/**\n * Build the full instrumentation list for the NodeSDK.\n *\n * auto-instrumentations-node covers http, mongodb, redis, etc., but it no longer\n * bundles Fastify, so Fastify is added explicitly via @fastify/otel (the Fastify\n * core team's official OpenTelemetry plugin, v4–v5). With registerOnInitialization it\n * self-registers on every Fastify instance via the fastify.initialization diagnostics\n * channel, and — riding on instrumentation-http — names the server span \"GET /route\"\n * and emits the request → hook → handler waterfall (the Fastify equivalent of the\n * Express middleware spans on sibling services), with DB spans nesting underneath.\n */\nexport function buildInstrumentations(\n autoInstrumentation: AutoInstrumentationConfig = {}\n): Instrumentation[] {\n const instrumentations: Instrumentation[] = [\n ...getNodeAutoInstrumentations(buildInstrumentationConfig(autoInstrumentation)),\n ];\n\n if (autoInstrumentation.fastify !== false) {\n instrumentations.push(\n new FastifyOtelInstrumentation({\n registerOnInitialization: true,\n // Name the Fastify request span \"METHOD /route\" (route template, low cardinality).\n requestHook: (span, request) => {\n const routeUrl = (request as { routeOptions?: { url?: string } }).routeOptions?.url;\n const method = (request as { method?: string }).method;\n if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);\n },\n // Collapse the verbose anonymous-hook plugin chains into readable names.\n lifecycleHook: (span, info) => {\n const i = info as {\n hookName?: string;\n handler?: unknown;\n request?: { routeOptions?: { url?: string } };\n };\n const cleaned = cleanLifecycleSpanName(\n i.hookName ?? '',\n typeof i.handler === 'string' ? i.handler : '',\n i.request?.routeOptions?.url\n );\n if (cleaned) span.updateName(cleaned);\n },\n })\n );\n }\n\n return instrumentations;\n}\n\nfunction buildInstrumentationConfig(config: AutoInstrumentationConfig): InstrumentationConfigMap {\n const mapping: Record<string, string> = {\n http: '@opentelemetry/instrumentation-http',\n // Fastify is intentionally absent here — it's not in the auto-instrumentations\n // bundle and is added separately in buildInstrumentations() via\n // @opentelemetry/instrumentation-fastify.\n express: '@opentelemetry/instrumentation-express',\n mongodb: '@opentelemetry/instrumentation-mongodb',\n pg: '@opentelemetry/instrumentation-pg',\n mysql: '@opentelemetry/instrumentation-mysql',\n redis: '@opentelemetry/instrumentation-redis',\n ioredis: '@opentelemetry/instrumentation-ioredis',\n grpc: '@opentelemetry/instrumentation-grpc',\n fs: '@opentelemetry/instrumentation-fs',\n dns: '@opentelemetry/instrumentation-dns',\n };\n\n const result: Record<string, Record<string, unknown>> = {};\n for (const [key, instrumentationName] of Object.entries(mapping)) {\n const userSetting = config[key as keyof AutoInstrumentationConfig];\n const defaultValue = key !== 'fs' && key !== 'dns';\n result[instrumentationName] = { enabled: userSetting ?? defaultValue };\n }\n\n // Don't create spans for infrastructure health-checks (ELB / kube-probe / GoogleHC).\n // They're high-volume, low-value, and otherwise dominate (and skew sampling of) traces.\n result['@opentelemetry/instrumentation-http'] = {\n ...result['@opentelemetry/instrumentation-http'],\n ignoreIncomingRequestHook: (request: {\n headers?: Record<string, string | string[] | undefined>;\n }) => {\n const ua = request.headers?.['user-agent'];\n const uaStr = Array.isArray(ua) ? (ua[0] ?? '') : (ua ?? '');\n return HEALTHCHECK_USER_AGENT_PREFIXES.some((prefix) => uaStr.startsWith(prefix));\n },\n };\n\n return result as InstrumentationConfigMap;\n}\n\n/** Shutdown tracing gracefully */\nexport async function shutdownTracing(): Promise<void> {\n if (!sdk) return;\n try {\n await sdk.shutdown();\n isInitialized = false;\n sdk = null;\n } catch (error) {\n console.error('[neoiq-foundation] Error shutting down tracing:', error);\n throw error;\n }\n}\n\nexport function getTracer(name: string): Tracer {\n return trace.getTracer(name);\n}\n\nexport function getActiveSpan(): ReturnType<typeof trace.getActiveSpan> {\n return trace.getActiveSpan();\n}\n\nexport function getTraceContext(): { traceId?: string; spanId?: string } {\n const span = trace.getActiveSpan();\n if (!span) return {};\n const ctx = span.spanContext();\n return { traceId: ctx.traceId, spanId: ctx.spanId };\n}\n\nexport function isTracingEnabled(): boolean {\n return isInitialized;\n}\n\nexport { trace, context, propagation, SpanStatusCode };\nexport type { Tracer };\n"],"mappings":"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"}
|
|
@@ -125,6 +125,12 @@ function getDefaultOtelEndpoint() {
|
|
|
125
125
|
|
|
126
126
|
//#endregion
|
|
127
127
|
//#region src/features/tracing.ts
|
|
128
|
+
/** User-agents of infrastructure health-checkers whose requests we don't trace. */
|
|
129
|
+
const HEALTHCHECK_USER_AGENT_PREFIXES = [
|
|
130
|
+
"ELB-HealthChecker",
|
|
131
|
+
"kube-probe",
|
|
132
|
+
"GoogleHC"
|
|
133
|
+
];
|
|
128
134
|
let sdk = null;
|
|
129
135
|
let isInitialized = false;
|
|
130
136
|
const MONITORED_MODULES = [
|
|
@@ -168,18 +174,6 @@ function setupTracing(options) {
|
|
|
168
174
|
isInitialized = true;
|
|
169
175
|
}
|
|
170
176
|
/**
|
|
171
|
-
* Build the full instrumentation list for the NodeSDK.
|
|
172
|
-
*
|
|
173
|
-
* `auto-instrumentations-node` covers http, express, mongodb, redis, etc., but it
|
|
174
|
-
* no longer ships Fastify support — the legacy `@opentelemetry/instrumentation-fastify`
|
|
175
|
-
* does not work with Fastify v5. Fastify is therefore instrumented via the official
|
|
176
|
-
* `@fastify/otel` plugin, which self-registers on every Fastify instance through the
|
|
177
|
-
* `fastify.initialization` diagnostics channel (`registerOnInitialization`) and builds
|
|
178
|
-
* its request span beneath the http server span created by `instrumentation-http`
|
|
179
|
-
* (enabled above). Without this, Fastify services emit only bare, route-less "GET"
|
|
180
|
-
* spans with no request → handler → db waterfall.
|
|
181
|
-
*/
|
|
182
|
-
/**
|
|
183
177
|
* Produce a clean name for a Fastify lifecycle (hook/handler) span.
|
|
184
178
|
*
|
|
185
179
|
* @fastify/otel names these "<hook> - <fn name>", but anonymous hook functions fall
|
|
@@ -193,24 +187,32 @@ function cleanLifecycleSpanName(hookName, handlerName, routeUrl) {
|
|
|
193
187
|
if (!handlerName.includes(" -> ")) return null;
|
|
194
188
|
return routeUrl ? `${hookName} ${routeUrl}` : hookName;
|
|
195
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Build the full instrumentation list for the NodeSDK.
|
|
192
|
+
*
|
|
193
|
+
* auto-instrumentations-node covers http, mongodb, redis, etc., but it no longer
|
|
194
|
+
* bundles Fastify, so Fastify is added explicitly via @fastify/otel (the Fastify
|
|
195
|
+
* core team's official OpenTelemetry plugin, v4–v5). With registerOnInitialization it
|
|
196
|
+
* self-registers on every Fastify instance via the fastify.initialization diagnostics
|
|
197
|
+
* channel, and — riding on instrumentation-http — names the server span "GET /route"
|
|
198
|
+
* and emits the request → hook → handler waterfall (the Fastify equivalent of the
|
|
199
|
+
* Express middleware spans on sibling services), with DB spans nesting underneath.
|
|
200
|
+
*/
|
|
196
201
|
function buildInstrumentations(autoInstrumentation = {}) {
|
|
197
202
|
const instrumentations = [...(0, __opentelemetry_auto_instrumentations_node.getNodeAutoInstrumentations)(buildInstrumentationConfig(autoInstrumentation))];
|
|
198
|
-
if (autoInstrumentation.fastify !== false) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
});
|
|
212
|
-
instrumentations.push(fastifyOtel);
|
|
213
|
-
}
|
|
203
|
+
if (autoInstrumentation.fastify !== false) instrumentations.push(new __fastify_otel.FastifyOtelInstrumentation({
|
|
204
|
+
registerOnInitialization: true,
|
|
205
|
+
requestHook: (span, request) => {
|
|
206
|
+
const routeUrl = request.routeOptions?.url;
|
|
207
|
+
const method = request.method;
|
|
208
|
+
if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);
|
|
209
|
+
},
|
|
210
|
+
lifecycleHook: (span, info) => {
|
|
211
|
+
const i = info;
|
|
212
|
+
const cleaned = cleanLifecycleSpanName(i.hookName ?? "", typeof i.handler === "string" ? i.handler : "", i.request?.routeOptions?.url);
|
|
213
|
+
if (cleaned) span.updateName(cleaned);
|
|
214
|
+
}
|
|
215
|
+
}));
|
|
214
216
|
return instrumentations;
|
|
215
217
|
}
|
|
216
218
|
function buildInstrumentationConfig(config) {
|
|
@@ -232,6 +234,14 @@ function buildInstrumentationConfig(config) {
|
|
|
232
234
|
const defaultValue = key !== "fs" && key !== "dns";
|
|
233
235
|
result[instrumentationName] = { enabled: userSetting ?? defaultValue };
|
|
234
236
|
}
|
|
237
|
+
result["@opentelemetry/instrumentation-http"] = {
|
|
238
|
+
...result["@opentelemetry/instrumentation-http"],
|
|
239
|
+
ignoreIncomingRequestHook: (request) => {
|
|
240
|
+
const ua = request.headers?.["user-agent"];
|
|
241
|
+
const uaStr = Array.isArray(ua) ? ua[0] ?? "" : ua ?? "";
|
|
242
|
+
return HEALTHCHECK_USER_AGENT_PREFIXES.some((prefix) => uaStr.startsWith(prefix));
|
|
243
|
+
}
|
|
244
|
+
};
|
|
235
245
|
return result;
|
|
236
246
|
}
|
|
237
247
|
/** Shutdown tracing gracefully */
|
|
@@ -374,4 +384,4 @@ Object.defineProperty(exports, 'shutdownTracing', {
|
|
|
374
384
|
return shutdownTracing;
|
|
375
385
|
}
|
|
376
386
|
});
|
|
377
|
-
//# sourceMappingURL=tracing-
|
|
387
|
+
//# sourceMappingURL=tracing-Yrfx2JK6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing-Yrfx2JK6.js","names":["input: FoundationConfigInput","sdk: NodeSDK | null","options: TracingOptions","hookName: string","handlerName: string","routeUrl?: string","autoInstrumentation: AutoInstrumentationConfig","instrumentations: Instrumentation[]","config: AutoInstrumentationConfig","mapping: Record<string, string>","result: Record<string, Record<string, unknown>>","request: {\n headers?: Record<string, string | string[] | undefined>;\n }","name: string"],"sources":["../src/config.ts","../src/features/tracing.ts"],"sourcesContent":["/**\n * Foundation Configuration with Zod Validation\n */\n\nimport { z } from 'zod';\n\n// Auto-Instrumentation Config\nexport const AutoInstrumentationConfigSchema = z\n .object({\n http: z.boolean().default(true),\n fastify: z.boolean().default(true),\n express: z.boolean().default(true),\n mongodb: z.boolean().default(true),\n pg: z.boolean().default(true),\n mysql: z.boolean().default(true),\n redis: z.boolean().default(true),\n ioredis: z.boolean().default(true),\n grpc: z.boolean().default(true),\n fs: z.boolean().default(false),\n dns: z.boolean().default(false),\n })\n .partial();\n\nexport type AutoInstrumentationConfig = z.infer<typeof AutoInstrumentationConfigSchema>;\n\n// Features Config\nexport const FeaturesConfigSchema = z\n .object({\n tracing: z.boolean().default(true),\n metrics: z.boolean().default(true),\n logging: z.boolean().default(true),\n autoInstrumentation: AutoInstrumentationConfigSchema.default({}),\n })\n .partial();\n\nexport type FeaturesConfig = z.infer<typeof FeaturesConfigSchema>;\n\n// OTEL Config\nconst DEFAULT_OTEL_ENDPOINT =\n 'http://otel-stack-deployment-collector.observability.svc.cluster.local:4317';\n\nexport const OtelConfigSchema = z.object({\n endpoint: z\n .string()\n .default(() => process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT),\n metricsIntervalMs: z.number().min(1000).default(5000),\n});\n\nexport type OtelConfig = z.infer<typeof OtelConfigSchema>;\n\n// Logging Config\nexport const LoggingConfigSchema = z\n .object({\n level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),\n prettyPrint: z.boolean().optional(),\n })\n .partial();\n\nexport type LoggingConfig = z.infer<typeof LoggingConfigSchema>;\n\n// Request Logging Config\nexport const RequestLoggingConfigSchema = z\n .object({\n logHeaders: z.boolean().default(true),\n logBody: z.boolean().default(false),\n logResponseBody: z.boolean().default(false),\n maxBodySize: z.number().default(10 * 1024),\n redactHeaders: z.array(z.string()).optional(),\n })\n .partial();\n\nexport type RequestLoggingConfig = z.infer<typeof RequestLoggingConfigSchema>;\n\n// Redaction Config\nexport const RedactionConfigSchema = z\n .object({\n additionalPaths: z.array(z.string()).default([]),\n })\n .partial();\n\nexport type RedactionConfig = z.infer<typeof RedactionConfigSchema>;\n\n// Shutdown Config\nexport const ShutdownConfigSchema = z\n .object({\n /** Flush telemetry on uncaughtException / unhandledRejection before process exits */\n flushOnCrash: z.boolean().default(false),\n /** Grace period (ms) for flushing before forcing exit */\n flushTimeoutMs: z.number().min(100).default(5000),\n })\n .partial();\n\nexport type ShutdownConfig = z.infer<typeof ShutdownConfigSchema>;\n\n// Vault Config\nexport const VaultConfigSchema = z.object({\n enabled: z.boolean().default(false),\n address: z.string().default('https://vault.beta.commerceiq.ai'),\n authMethod: z.enum(['kubernetes', 'token']).default('kubernetes'),\n role: z.string().optional(),\n mountPoint: z.string().default('secret'),\n tokenPath: z.string().default('/var/run/secrets/kubernetes.io/serviceaccount/token'),\n k8sAuthMount: z.string().default('kubernetes'),\n namespace: z.string().optional(),\n});\n\nexport type VaultConfig = z.infer<typeof VaultConfigSchema>;\n\n// Main Foundation Config\nexport const FoundationConfigSchema = z.object({\n serviceName: z.string().min(1, 'serviceName is required'),\n serviceVersion: z.string().default(process.env.SERVICE_VERSION || '1.0.0'),\n environment: z\n .enum(['development', 'staging', 'qa', 'production'])\n .default(\n ['development', 'staging', 'qa', 'production'].includes(process.env.NODE_ENV ?? '')\n ? (process.env.NODE_ENV as 'development' | 'staging' | 'qa' | 'production')\n : 'development'\n ),\n features: FeaturesConfigSchema.default({}),\n otel: OtelConfigSchema.default({}),\n logging: LoggingConfigSchema.default({}),\n requestLogging: RequestLoggingConfigSchema.default({}),\n redaction: RedactionConfigSchema.default({}),\n shutdown: ShutdownConfigSchema.default({}),\n vault: VaultConfigSchema.default({}),\n});\n\nexport type FoundationConfig = z.infer<typeof FoundationConfigSchema>;\n\nexport type FoundationConfigInput = z.input<typeof FoundationConfigSchema> & {\n serviceName: string;\n};\n\n/** Parse and validate configuration */\nexport function parseConfig(input: FoundationConfigInput): FoundationConfig {\n const result = FoundationConfigSchema.safeParse(input);\n\n if (!result.success) {\n const errors = result.error.errors\n .map((e) => ` - ${e.path.join('.')}: ${e.message}`)\n .join('\\n');\n throw new Error(`Invalid foundation configuration:\\n${errors}`);\n }\n\n return result.data;\n}\n\n/** Get default OTEL endpoint */\nexport function getDefaultOtelEndpoint(): string {\n return process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT;\n}\n","/**\n * OpenTelemetry Tracing Setup\n */\n\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { trace, context, propagation, SpanStatusCode, type Tracer } from '@opentelemetry/api';\nimport { type IMetricReader } from '@opentelemetry/sdk-metrics';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport { type AutoInstrumentationConfig, getDefaultOtelEndpoint } from '../config';\n\n/**\n * Element type of the NodeSDK instrumentations list. Derived from\n * getNodeAutoInstrumentations so we don't take a direct import on\n * @opentelemetry/instrumentation (only a transitive dependency here).\n */\ntype Instrumentation = ReturnType<typeof getNodeAutoInstrumentations>[number];\ntype InstrumentationConfigMap = Parameters<typeof getNodeAutoInstrumentations>[0];\n\n/** User-agents of infrastructure health-checkers whose requests we don't trace. */\nconst HEALTHCHECK_USER_AGENT_PREFIXES = ['ELB-HealthChecker', 'kube-probe', 'GoogleHC'];\n\nexport interface TracingOptions {\n serviceName: string;\n serviceVersion: string;\n environment: string;\n endpoint?: string;\n autoInstrumentation?: AutoInstrumentationConfig;\n /**\n * Metric reader to attach to the NodeSDK so a single SDK owns both traces and\n * metrics (one global MeterProvider, same gRPC collector). When provided, NodeSDK\n * is the sole owner of metrics; when omitted, NodeSDK is opted out of metrics\n * entirely (see below) so it never registers a stray default MeterProvider.\n */\n metricReader?: IMetricReader;\n}\n\nlet sdk: NodeSDK | null = null;\nlet isInitialized = false;\n\nconst MONITORED_MODULES = ['pg', 'mongodb', 'ioredis', 'mysql2', 'express', '@grpc/grpc-js'];\n\nfunction warnPreloadedModules(): void {\n // require.resolve / require.cache are only available in CJS contexts\n if (typeof require === 'undefined' || typeof require.cache === 'undefined') return;\n\n for (const mod of MONITORED_MODULES) {\n try {\n const resolved = require.resolve(mod);\n if (require.cache[resolved]) {\n console.warn(\n `[neoiq-foundation] \"${mod}\" was imported before tracing init. ` +\n 'Auto-instrumentation may not work for this module. ' +\n 'Use node -r @ciq-dev/neoiq-foundation-node/bootstrap or call createFoundation() first.'\n );\n }\n } catch {\n // Module not installed — no warning needed\n }\n }\n}\n\n/** Initialize OpenTelemetry tracing */\nexport function setupTracing(options: TracingOptions): void {\n if (isInitialized) {\n console.warn('[neoiq-foundation] Tracing already initialized');\n return;\n }\n\n warnPreloadedModules();\n\n const {\n serviceName,\n serviceVersion,\n environment,\n endpoint = getDefaultOtelEndpoint(),\n autoInstrumentation = {},\n metricReader,\n } = options;\n\n const resource = resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n [ATTR_SERVICE_VERSION]: serviceVersion,\n 'deployment.environment': environment,\n });\n\n const traceExporter = new OTLPTraceExporter({ url: endpoint });\n\n // Foundation owns every OpenTelemetry signal explicitly. Left to its own devices,\n // NodeSDK auto-configures metrics AND logs exporters from env defaults — both OTLP\n // over HTTP to localhost:4318 — which nothing listens on, producing ECONNREFUSED\n // spam every export interval. We therefore configure each signal on NodeSDK directly:\n // - traces: the explicit gRPC exporter above.\n // - metrics: the explicit gRPC reader when provided (single SDK, single global\n // MeterProvider, same collector as traces). When metrics are disabled\n // and the deployer hasn't chosen an exporter, opt NodeSDK out via\n // OTEL_METRICS_EXPORTER=none (the only switch NodeSDK exposes for that).\n // - logs: foundation logs via pino, never OTLP. Passing an empty processor list\n // stops NodeSDK from falling back to its env-default localhost:4318 log\n // exporter (`logRecordProcessors: []` takes the explicit branch and skips\n // configureLoggerProviderFromEnv()).\n if (!metricReader && !process.env.OTEL_METRICS_EXPORTER) {\n process.env.OTEL_METRICS_EXPORTER = 'none';\n }\n\n sdk = new NodeSDK({\n resource,\n traceExporter,\n ...(metricReader ? { metricReaders: [metricReader] } : {}),\n logRecordProcessors: [],\n instrumentations: buildInstrumentations(autoInstrumentation),\n });\n\n sdk.start();\n isInitialized = true;\n}\n\n/**\n * Produce a clean name for a Fastify lifecycle (hook/handler) span.\n *\n * @fastify/otel names these \"<hook> - <fn name>\", but anonymous hook functions fall\n * back to the full plugin-encapsulation chain (\"fastify -> @fastify/otel -> ... ->\n * @fastify/x\"), which is unreadable. When that chain is detected, collapse it to a\n * clean, route-scoped name (e.g. \"onRequest /api/v1/foo\"). Returns `null` when the\n * span is already cleanly named (a named hook like \"onRequest - handleCors\"), so the\n * caller leaves it untouched.\n */\nexport function cleanLifecycleSpanName(\n hookName: string,\n handlerName: string,\n routeUrl?: string\n): string | null {\n if (!handlerName.includes(' -> ')) return null;\n return routeUrl ? `${hookName} ${routeUrl}` : hookName;\n}\n\n/**\n * Build the full instrumentation list for the NodeSDK.\n *\n * auto-instrumentations-node covers http, mongodb, redis, etc., but it no longer\n * bundles Fastify, so Fastify is added explicitly via @fastify/otel (the Fastify\n * core team's official OpenTelemetry plugin, v4–v5). With registerOnInitialization it\n * self-registers on every Fastify instance via the fastify.initialization diagnostics\n * channel, and — riding on instrumentation-http — names the server span \"GET /route\"\n * and emits the request → hook → handler waterfall (the Fastify equivalent of the\n * Express middleware spans on sibling services), with DB spans nesting underneath.\n */\nexport function buildInstrumentations(\n autoInstrumentation: AutoInstrumentationConfig = {}\n): Instrumentation[] {\n const instrumentations: Instrumentation[] = [\n ...getNodeAutoInstrumentations(buildInstrumentationConfig(autoInstrumentation)),\n ];\n\n if (autoInstrumentation.fastify !== false) {\n instrumentations.push(\n new FastifyOtelInstrumentation({\n registerOnInitialization: true,\n // Name the Fastify request span \"METHOD /route\" (route template, low cardinality).\n requestHook: (span, request) => {\n const routeUrl = (request as { routeOptions?: { url?: string } }).routeOptions?.url;\n const method = (request as { method?: string }).method;\n if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);\n },\n // Collapse the verbose anonymous-hook plugin chains into readable names.\n lifecycleHook: (span, info) => {\n const i = info as {\n hookName?: string;\n handler?: unknown;\n request?: { routeOptions?: { url?: string } };\n };\n const cleaned = cleanLifecycleSpanName(\n i.hookName ?? '',\n typeof i.handler === 'string' ? i.handler : '',\n i.request?.routeOptions?.url\n );\n if (cleaned) span.updateName(cleaned);\n },\n })\n );\n }\n\n return instrumentations;\n}\n\nfunction buildInstrumentationConfig(config: AutoInstrumentationConfig): InstrumentationConfigMap {\n const mapping: Record<string, string> = {\n http: '@opentelemetry/instrumentation-http',\n // Fastify is intentionally absent here — it's not in the auto-instrumentations\n // bundle and is added separately in buildInstrumentations() via\n // @opentelemetry/instrumentation-fastify.\n express: '@opentelemetry/instrumentation-express',\n mongodb: '@opentelemetry/instrumentation-mongodb',\n pg: '@opentelemetry/instrumentation-pg',\n mysql: '@opentelemetry/instrumentation-mysql',\n redis: '@opentelemetry/instrumentation-redis',\n ioredis: '@opentelemetry/instrumentation-ioredis',\n grpc: '@opentelemetry/instrumentation-grpc',\n fs: '@opentelemetry/instrumentation-fs',\n dns: '@opentelemetry/instrumentation-dns',\n };\n\n const result: Record<string, Record<string, unknown>> = {};\n for (const [key, instrumentationName] of Object.entries(mapping)) {\n const userSetting = config[key as keyof AutoInstrumentationConfig];\n const defaultValue = key !== 'fs' && key !== 'dns';\n result[instrumentationName] = { enabled: userSetting ?? defaultValue };\n }\n\n // Don't create spans for infrastructure health-checks (ELB / kube-probe / GoogleHC).\n // They're high-volume, low-value, and otherwise dominate (and skew sampling of) traces.\n result['@opentelemetry/instrumentation-http'] = {\n ...result['@opentelemetry/instrumentation-http'],\n ignoreIncomingRequestHook: (request: {\n headers?: Record<string, string | string[] | undefined>;\n }) => {\n const ua = request.headers?.['user-agent'];\n const uaStr = Array.isArray(ua) ? (ua[0] ?? '') : (ua ?? '');\n return HEALTHCHECK_USER_AGENT_PREFIXES.some((prefix) => uaStr.startsWith(prefix));\n },\n };\n\n return result as InstrumentationConfigMap;\n}\n\n/** Shutdown tracing gracefully */\nexport async function shutdownTracing(): Promise<void> {\n if (!sdk) return;\n try {\n await sdk.shutdown();\n isInitialized = false;\n sdk = null;\n } catch (error) {\n console.error('[neoiq-foundation] Error shutting down tracing:', error);\n throw error;\n }\n}\n\nexport function getTracer(name: string): Tracer {\n return trace.getTracer(name);\n}\n\nexport function getActiveSpan(): ReturnType<typeof trace.getActiveSpan> {\n return trace.getActiveSpan();\n}\n\nexport function getTraceContext(): { traceId?: string; spanId?: string } {\n const span = trace.getActiveSpan();\n if (!span) return {};\n const ctx = span.spanContext();\n return { traceId: ctx.traceId, spanId: ctx.spanId };\n}\n\nexport function isTracingEnabled(): boolean {\n return isInitialized;\n}\n\nexport { trace, context, propagation, SpanStatusCode };\nexport type { Tracer };\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ciq-dev/neoiq-foundation-node",
|
|
3
|
-
"version": "1.1.2-beta.
|
|
3
|
+
"version": "1.1.2-beta.9",
|
|
4
4
|
"description": "Node.js observability foundation for CommerceIQ services. Integrates with Groundcover via OpenTelemetry.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -48,14 +48,14 @@
|
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"@aws-sdk/client-s3": "^3.0.0",
|
|
50
50
|
"@aws-sdk/s3-request-presigner": "^3.0.0",
|
|
51
|
-
"@opentelemetry/api": "^1.
|
|
52
|
-
"@opentelemetry/auto-instrumentations-node": ">=0.
|
|
53
|
-
"@opentelemetry/exporter-metrics-otlp-grpc": ">=0.
|
|
54
|
-
"@opentelemetry/exporter-trace-otlp-grpc": ">=0.
|
|
55
|
-
"@opentelemetry/resources": ">=
|
|
56
|
-
"@opentelemetry/sdk-metrics": ">=
|
|
57
|
-
"@opentelemetry/sdk-node": ">=0.
|
|
58
|
-
"@opentelemetry/semantic-conventions": "^1.
|
|
51
|
+
"@opentelemetry/api": "^1.9.0",
|
|
52
|
+
"@opentelemetry/auto-instrumentations-node": ">=0.76.0",
|
|
53
|
+
"@opentelemetry/exporter-metrics-otlp-grpc": ">=0.218.0",
|
|
54
|
+
"@opentelemetry/exporter-trace-otlp-grpc": ">=0.218.0",
|
|
55
|
+
"@opentelemetry/resources": ">=2.0.0",
|
|
56
|
+
"@opentelemetry/sdk-metrics": ">=2.0.0",
|
|
57
|
+
"@opentelemetry/sdk-node": ">=0.218.0",
|
|
58
|
+
"@opentelemetry/semantic-conventions": "^1.28.0",
|
|
59
59
|
"axios": "^1.6.0",
|
|
60
60
|
"axios-retry": "^4.0.0",
|
|
61
61
|
"fastify": ">=4.25.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tracing-BujFTwI7.js","names":["input: FoundationConfigInput","sdk: NodeSDK | null","options: TracingOptions","hookName: string","handlerName: string","routeUrl?: string","autoInstrumentation: AutoInstrumentationConfig","instrumentations: Instrumentation[]","config: AutoInstrumentationConfig","mapping: Record<string, string>","result: Record<string, { enabled: boolean }>","name: string"],"sources":["../src/config.ts","../src/features/tracing.ts"],"sourcesContent":["/**\n * Foundation Configuration with Zod Validation\n */\n\nimport { z } from 'zod';\n\n// Auto-Instrumentation Config\nexport const AutoInstrumentationConfigSchema = z\n .object({\n http: z.boolean().default(true),\n fastify: z.boolean().default(true),\n express: z.boolean().default(true),\n mongodb: z.boolean().default(true),\n pg: z.boolean().default(true),\n mysql: z.boolean().default(true),\n redis: z.boolean().default(true),\n ioredis: z.boolean().default(true),\n grpc: z.boolean().default(true),\n fs: z.boolean().default(false),\n dns: z.boolean().default(false),\n })\n .partial();\n\nexport type AutoInstrumentationConfig = z.infer<typeof AutoInstrumentationConfigSchema>;\n\n// Features Config\nexport const FeaturesConfigSchema = z\n .object({\n tracing: z.boolean().default(true),\n metrics: z.boolean().default(true),\n logging: z.boolean().default(true),\n autoInstrumentation: AutoInstrumentationConfigSchema.default({}),\n })\n .partial();\n\nexport type FeaturesConfig = z.infer<typeof FeaturesConfigSchema>;\n\n// OTEL Config\nconst DEFAULT_OTEL_ENDPOINT =\n 'http://otel-stack-deployment-collector.observability.svc.cluster.local:4317';\n\nexport const OtelConfigSchema = z.object({\n endpoint: z\n .string()\n .default(() => process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT),\n metricsIntervalMs: z.number().min(1000).default(5000),\n});\n\nexport type OtelConfig = z.infer<typeof OtelConfigSchema>;\n\n// Logging Config\nexport const LoggingConfigSchema = z\n .object({\n level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),\n prettyPrint: z.boolean().optional(),\n })\n .partial();\n\nexport type LoggingConfig = z.infer<typeof LoggingConfigSchema>;\n\n// Request Logging Config\nexport const RequestLoggingConfigSchema = z\n .object({\n logHeaders: z.boolean().default(true),\n logBody: z.boolean().default(false),\n logResponseBody: z.boolean().default(false),\n maxBodySize: z.number().default(10 * 1024),\n redactHeaders: z.array(z.string()).optional(),\n })\n .partial();\n\nexport type RequestLoggingConfig = z.infer<typeof RequestLoggingConfigSchema>;\n\n// Redaction Config\nexport const RedactionConfigSchema = z\n .object({\n additionalPaths: z.array(z.string()).default([]),\n })\n .partial();\n\nexport type RedactionConfig = z.infer<typeof RedactionConfigSchema>;\n\n// Shutdown Config\nexport const ShutdownConfigSchema = z\n .object({\n /** Flush telemetry on uncaughtException / unhandledRejection before process exits */\n flushOnCrash: z.boolean().default(false),\n /** Grace period (ms) for flushing before forcing exit */\n flushTimeoutMs: z.number().min(100).default(5000),\n })\n .partial();\n\nexport type ShutdownConfig = z.infer<typeof ShutdownConfigSchema>;\n\n// Vault Config\nexport const VaultConfigSchema = z.object({\n enabled: z.boolean().default(false),\n address: z.string().default('https://vault.beta.commerceiq.ai'),\n authMethod: z.enum(['kubernetes', 'token']).default('kubernetes'),\n role: z.string().optional(),\n mountPoint: z.string().default('secret'),\n tokenPath: z.string().default('/var/run/secrets/kubernetes.io/serviceaccount/token'),\n k8sAuthMount: z.string().default('kubernetes'),\n namespace: z.string().optional(),\n});\n\nexport type VaultConfig = z.infer<typeof VaultConfigSchema>;\n\n// Main Foundation Config\nexport const FoundationConfigSchema = z.object({\n serviceName: z.string().min(1, 'serviceName is required'),\n serviceVersion: z.string().default(process.env.SERVICE_VERSION || '1.0.0'),\n environment: z\n .enum(['development', 'staging', 'qa', 'production'])\n .default(\n ['development', 'staging', 'qa', 'production'].includes(process.env.NODE_ENV ?? '')\n ? (process.env.NODE_ENV as 'development' | 'staging' | 'qa' | 'production')\n : 'development'\n ),\n features: FeaturesConfigSchema.default({}),\n otel: OtelConfigSchema.default({}),\n logging: LoggingConfigSchema.default({}),\n requestLogging: RequestLoggingConfigSchema.default({}),\n redaction: RedactionConfigSchema.default({}),\n shutdown: ShutdownConfigSchema.default({}),\n vault: VaultConfigSchema.default({}),\n});\n\nexport type FoundationConfig = z.infer<typeof FoundationConfigSchema>;\n\nexport type FoundationConfigInput = z.input<typeof FoundationConfigSchema> & {\n serviceName: string;\n};\n\n/** Parse and validate configuration */\nexport function parseConfig(input: FoundationConfigInput): FoundationConfig {\n const result = FoundationConfigSchema.safeParse(input);\n\n if (!result.success) {\n const errors = result.error.errors\n .map((e) => ` - ${e.path.join('.')}: ${e.message}`)\n .join('\\n');\n throw new Error(`Invalid foundation configuration:\\n${errors}`);\n }\n\n return result.data;\n}\n\n/** Get default OTEL endpoint */\nexport function getDefaultOtelEndpoint(): string {\n return process.env.OTEL_EXPORTER_OTLP_ENDPOINT || DEFAULT_OTEL_ENDPOINT;\n}\n","/**\n * OpenTelemetry Tracing Setup\n */\n\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { trace, context, propagation, SpanStatusCode, type Tracer } from '@opentelemetry/api';\nimport { type IMetricReader } from '@opentelemetry/sdk-metrics';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport { type AutoInstrumentationConfig, getDefaultOtelEndpoint } from '../config';\n\n/**\n * Element type of the NodeSDK instrumentations list. Derived from\n * getNodeAutoInstrumentations so we don't take a direct import on\n * @opentelemetry/instrumentation (only a transitive dependency here).\n */\ntype Instrumentation = ReturnType<typeof getNodeAutoInstrumentations>[number];\n\nexport interface TracingOptions {\n serviceName: string;\n serviceVersion: string;\n environment: string;\n endpoint?: string;\n autoInstrumentation?: AutoInstrumentationConfig;\n /**\n * Metric reader to attach to the NodeSDK so a single SDK owns both traces and\n * metrics (one global MeterProvider, same gRPC collector). When provided, NodeSDK\n * is the sole owner of metrics; when omitted, NodeSDK is opted out of metrics\n * entirely (see below) so it never registers a stray default MeterProvider.\n */\n metricReader?: IMetricReader;\n}\n\nlet sdk: NodeSDK | null = null;\nlet isInitialized = false;\n\nconst MONITORED_MODULES = ['pg', 'mongodb', 'ioredis', 'mysql2', 'express', '@grpc/grpc-js'];\n\nfunction warnPreloadedModules(): void {\n // require.resolve / require.cache are only available in CJS contexts\n if (typeof require === 'undefined' || typeof require.cache === 'undefined') return;\n\n for (const mod of MONITORED_MODULES) {\n try {\n const resolved = require.resolve(mod);\n if (require.cache[resolved]) {\n console.warn(\n `[neoiq-foundation] \"${mod}\" was imported before tracing init. ` +\n 'Auto-instrumentation may not work for this module. ' +\n 'Use node -r @ciq-dev/neoiq-foundation-node/bootstrap or call createFoundation() first.'\n );\n }\n } catch {\n // Module not installed — no warning needed\n }\n }\n}\n\n/** Initialize OpenTelemetry tracing */\nexport function setupTracing(options: TracingOptions): void {\n if (isInitialized) {\n console.warn('[neoiq-foundation] Tracing already initialized');\n return;\n }\n\n warnPreloadedModules();\n\n const {\n serviceName,\n serviceVersion,\n environment,\n endpoint = getDefaultOtelEndpoint(),\n autoInstrumentation = {},\n metricReader,\n } = options;\n\n const resource = resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n [ATTR_SERVICE_VERSION]: serviceVersion,\n 'deployment.environment': environment,\n });\n\n const traceExporter = new OTLPTraceExporter({ url: endpoint });\n\n // Foundation owns every OpenTelemetry signal explicitly. Left to its own devices,\n // NodeSDK auto-configures metrics AND logs exporters from env defaults — both OTLP\n // over HTTP to localhost:4318 — which nothing listens on, producing ECONNREFUSED\n // spam every export interval. We therefore configure each signal on NodeSDK directly:\n // - traces: the explicit gRPC exporter above.\n // - metrics: the explicit gRPC reader when provided (single SDK, single global\n // MeterProvider, same collector as traces). When metrics are disabled\n // and the deployer hasn't chosen an exporter, opt NodeSDK out via\n // OTEL_METRICS_EXPORTER=none (the only switch NodeSDK exposes for that).\n // - logs: foundation logs via pino, never OTLP. Passing an empty processor list\n // stops NodeSDK from falling back to its env-default localhost:4318 log\n // exporter (`logRecordProcessors: []` takes the explicit branch and skips\n // configureLoggerProviderFromEnv()).\n if (!metricReader && !process.env.OTEL_METRICS_EXPORTER) {\n process.env.OTEL_METRICS_EXPORTER = 'none';\n }\n\n sdk = new NodeSDK({\n resource,\n traceExporter,\n ...(metricReader ? { metricReaders: [metricReader] } : {}),\n logRecordProcessors: [],\n instrumentations: buildInstrumentations(autoInstrumentation),\n });\n\n sdk.start();\n isInitialized = true;\n}\n\n/**\n * Build the full instrumentation list for the NodeSDK.\n *\n * `auto-instrumentations-node` covers http, express, mongodb, redis, etc., but it\n * no longer ships Fastify support — the legacy `@opentelemetry/instrumentation-fastify`\n * does not work with Fastify v5. Fastify is therefore instrumented via the official\n * `@fastify/otel` plugin, which self-registers on every Fastify instance through the\n * `fastify.initialization` diagnostics channel (`registerOnInitialization`) and builds\n * its request span beneath the http server span created by `instrumentation-http`\n * (enabled above). Without this, Fastify services emit only bare, route-less \"GET\"\n * spans with no request → handler → db waterfall.\n */\n/**\n * Produce a clean name for a Fastify lifecycle (hook/handler) span.\n *\n * @fastify/otel names these \"<hook> - <fn name>\", but anonymous hook functions fall\n * back to the full plugin-encapsulation chain (\"fastify -> @fastify/otel -> ... ->\n * @fastify/x\"), which is unreadable. When that chain is detected, collapse it to a\n * clean, route-scoped name (e.g. \"onRequest /api/v1/foo\"). Returns `null` when the\n * span is already cleanly named (a named hook like \"onRequest - handleCors\"), so the\n * caller leaves it untouched.\n */\nexport function cleanLifecycleSpanName(\n hookName: string,\n handlerName: string,\n routeUrl?: string\n): string | null {\n if (!handlerName.includes(' -> ')) return null;\n return routeUrl ? `${hookName} ${routeUrl}` : hookName;\n}\n\nexport function buildInstrumentations(\n autoInstrumentation: AutoInstrumentationConfig = {}\n): Instrumentation[] {\n const instrumentations: Instrumentation[] = [\n ...getNodeAutoInstrumentations(buildInstrumentationConfig(autoInstrumentation)),\n ];\n\n if (autoInstrumentation.fastify !== false) {\n const fastifyOtel = new FastifyOtelInstrumentation({\n registerOnInitialization: true,\n // Rename the Fastify span from the default \"request\" to \"METHOD /route\" so the\n // waterfall reads e.g. \"GET /api/v1/ui-store/dashboards/standalone\".\n requestHook: (span, request) => {\n const routeUrl = (request as { routeOptions?: { url?: string } }).routeOptions?.url;\n const method = (request as { method?: string }).method;\n if (routeUrl && method) span.updateName(`${method} ${routeUrl}`);\n },\n // Clean up the per-hook/handler span names. @fastify/otel falls back to the\n // full plugin-encapsulation chain for anonymous hooks, producing unreadable\n // names like \"onRequest - fastify -> @fastify/otel -> ... -> @fastify/swagger-ui\".\n lifecycleHook: (span, info) => {\n const i = info as {\n hookName?: string;\n handler?: unknown;\n request?: { routeOptions?: { url?: string } };\n };\n const cleaned = cleanLifecycleSpanName(\n i.hookName ?? '',\n typeof i.handler === 'string' ? i.handler : '',\n i.request?.routeOptions?.url\n );\n if (cleaned) span.updateName(cleaned);\n },\n });\n // Cast across a possible @opentelemetry/instrumentation version skew between\n // @fastify/otel and auto-instrumentations-node; the runtime contract is the\n // stable @opentelemetry/api Instrumentation interface, which both satisfy.\n instrumentations.push(fastifyOtel as unknown as Instrumentation);\n }\n\n return instrumentations;\n}\n\nfunction buildInstrumentationConfig(\n config: AutoInstrumentationConfig\n): Record<string, { enabled: boolean }> {\n const mapping: Record<string, string> = {\n http: '@opentelemetry/instrumentation-http',\n // NOTE: Fastify is intentionally absent here — auto-instrumentations-node dropped\n // @opentelemetry/instrumentation-fastify (no Fastify v5 support). Fastify is wired\n // via @fastify/otel in buildInstrumentations() instead.\n express: '@opentelemetry/instrumentation-express',\n mongodb: '@opentelemetry/instrumentation-mongodb',\n pg: '@opentelemetry/instrumentation-pg',\n mysql: '@opentelemetry/instrumentation-mysql',\n redis: '@opentelemetry/instrumentation-redis',\n ioredis: '@opentelemetry/instrumentation-ioredis',\n grpc: '@opentelemetry/instrumentation-grpc',\n fs: '@opentelemetry/instrumentation-fs',\n dns: '@opentelemetry/instrumentation-dns',\n };\n\n const result: Record<string, { enabled: boolean }> = {};\n for (const [key, instrumentationName] of Object.entries(mapping)) {\n const userSetting = config[key as keyof AutoInstrumentationConfig];\n const defaultValue = key !== 'fs' && key !== 'dns';\n result[instrumentationName] = { enabled: userSetting ?? defaultValue };\n }\n return result;\n}\n\n/** Shutdown tracing gracefully */\nexport async function shutdownTracing(): Promise<void> {\n if (!sdk) return;\n try {\n await sdk.shutdown();\n isInitialized = false;\n sdk = null;\n } catch (error) {\n console.error('[neoiq-foundation] Error shutting down tracing:', error);\n throw error;\n }\n}\n\nexport function getTracer(name: string): Tracer {\n return trace.getTracer(name);\n}\n\nexport function getActiveSpan(): ReturnType<typeof trace.getActiveSpan> {\n return trace.getActiveSpan();\n}\n\nexport function getTraceContext(): { traceId?: string; spanId?: string } {\n const span = trace.getActiveSpan();\n if (!span) return {};\n const ctx = span.spanContext();\n return { traceId: ctx.traceId, spanId: ctx.spanId };\n}\n\nexport function isTracingEnabled(): boolean {\n return isInitialized;\n}\n\nexport { trace, context, propagation, SpanStatusCode };\nexport type { Tracer };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAa,kCAAkC,MAC5C,OAAO;CACN,MAAM,MAAE,SAAS,CAAC,QAAQ,KAAK;CAC/B,SAAS,MAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,SAAS,MAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,SAAS,MAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,IAAI,MAAE,SAAS,CAAC,QAAQ,KAAK;CAC7B,OAAO,MAAE,SAAS,CAAC,QAAQ,KAAK;CAChC,OAAO,MAAE,SAAS,CAAC,QAAQ,KAAK;CAChC,SAAS,MAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,MAAM,MAAE,SAAS,CAAC,QAAQ,KAAK;CAC/B,IAAI,MAAE,SAAS,CAAC,QAAQ,MAAM;CAC9B,KAAK,MAAE,SAAS,CAAC,QAAQ,MAAM;AAChC,EAAC,CACD,SAAS;AAKZ,MAAa,uBAAuB,MACjC,OAAO;CACN,SAAS,MAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,SAAS,MAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,SAAS,MAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,qBAAqB,gCAAgC,QAAQ,CAAE,EAAC;AACjE,EAAC,CACD,SAAS;AAKZ,MAAM,wBACJ;AAEF,MAAa,mBAAmB,MAAE,OAAO;CACvC,UAAU,MACP,QAAQ,CACR,QAAQ,MAAM,QAAQ,IAAI,+BAA+B,sBAAsB;CAClF,mBAAmB,MAAE,QAAQ,CAAC,IAAI,IAAK,CAAC,QAAQ,IAAK;AACtD,EAAC;AAKF,MAAa,sBAAsB,MAChC,OAAO;CACN,OAAO,MAAE,KAAK;EAAC;EAAS;EAAQ;EAAQ;CAAQ,EAAC,CAAC,QAAQ,OAAO;CACjE,aAAa,MAAE,SAAS,CAAC,UAAU;AACpC,EAAC,CACD,SAAS;AAKZ,MAAa,6BAA6B,MACvC,OAAO;CACN,YAAY,MAAE,SAAS,CAAC,QAAQ,KAAK;CACrC,SAAS,MAAE,SAAS,CAAC,QAAQ,MAAM;CACnC,iBAAiB,MAAE,SAAS,CAAC,QAAQ,MAAM;CAC3C,aAAa,MAAE,QAAQ,CAAC,QAAQ,KAAK,KAAK;CAC1C,eAAe,MAAE,MAAM,MAAE,QAAQ,CAAC,CAAC,UAAU;AAC9C,EAAC,CACD,SAAS;AAKZ,MAAa,wBAAwB,MAClC,OAAO,EACN,iBAAiB,MAAE,MAAM,MAAE,QAAQ,CAAC,CAAC,QAAQ,CAAE,EAAC,CACjD,EAAC,CACD,SAAS;AAKZ,MAAa,uBAAuB,MACjC,OAAO;CAEN,cAAc,MAAE,SAAS,CAAC,QAAQ,MAAM;CAExC,gBAAgB,MAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAK;AAClD,EAAC,CACD,SAAS;AAKZ,MAAa,oBAAoB,MAAE,OAAO;CACxC,SAAS,MAAE,SAAS,CAAC,QAAQ,MAAM;CACnC,SAAS,MAAE,QAAQ,CAAC,QAAQ,mCAAmC;CAC/D,YAAY,MAAE,KAAK,CAAC,cAAc,OAAQ,EAAC,CAAC,QAAQ,aAAa;CACjE,MAAM,MAAE,QAAQ,CAAC,UAAU;CAC3B,YAAY,MAAE,QAAQ,CAAC,QAAQ,SAAS;CACxC,WAAW,MAAE,QAAQ,CAAC,QAAQ,sDAAsD;CACpF,cAAc,MAAE,QAAQ,CAAC,QAAQ,aAAa;CAC9C,WAAW,MAAE,QAAQ,CAAC,UAAU;AACjC,EAAC;AAKF,MAAa,yBAAyB,MAAE,OAAO;CAC7C,aAAa,MAAE,QAAQ,CAAC,IAAI,GAAG,0BAA0B;CACzD,gBAAgB,MAAE,QAAQ,CAAC,QAAQ,QAAQ,IAAI,mBAAmB,QAAQ;CAC1E,aAAa,MACV,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;;;;ACnHD,IAAIC,MAAsB;AAC1B,IAAI,gBAAgB;AAEpB,MAAM,oBAAoB;CAAC;CAAM;CAAW;CAAW;CAAU;CAAW;AAAgB;AAE5F,SAAS,uBAA6B;AAEpC,YAAW,YAAY,sBAAsB,QAAQ,UAAU,YAAa;AAE5E,MAAK,MAAM,OAAO,kBAChB,KAAI;EACF,MAAM,WAAW,QAAQ,QAAQ,IAAI;AACrC,MAAI,QAAQ,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,sDAAuB;GACrC,yDAAoB;GACpB,4DAAuB;EACxB,0BAA0B;CAC3B,EAAC;CAEF,MAAM,gBAAgB,IAAI,2DAAkB,EAAE,KAAK,SAAU;AAe7D,MAAK,iBAAiB,QAAQ,IAAI,sBAChC,SAAQ,IAAI,wBAAwB;AAGtC,OAAM,IAAI,iCAAQ;EAChB;EACA;EACA,GAAI,eAAe,EAAE,eAAe,CAAC,YAAa,EAAE,IAAG,CAAE;EACzD,qBAAqB,CAAE;EACvB,kBAAkB,sBAAsB,oBAAoB;CAC7D;AAED,KAAI,OAAO;AACX,iBAAgB;AACjB;;;;;;;;;;;;;;;;;;;;;;;AAwBD,SAAgB,uBACdC,UACAC,aACAC,UACe;AACf,MAAK,YAAY,SAAS,OAAO,CAAE,QAAO;AAC1C,QAAO,YAAY,EAAE,SAAS,GAAG,SAAS,IAAI;AAC/C;AAED,SAAgB,sBACdC,sBAAiD,CAAE,GAChC;CACnB,MAAMC,mBAAsC,CAC1C,GAAG,4EAA4B,2BAA2B,oBAAoB,CAAC,AAChF;AAED,KAAI,oBAAoB,YAAY,OAAO;EACzC,MAAM,cAAc,IAAI,0CAA2B;GACjD,0BAA0B;GAG1B,aAAa,CAAC,MAAM,YAAY;IAC9B,MAAM,WAAY,QAAgD,cAAc;IAChF,MAAM,SAAU,QAAgC;AAChD,QAAI,YAAY,OAAQ,MAAK,YAAY,EAAE,OAAO,GAAG,SAAS,EAAE;GACjE;GAID,eAAe,CAAC,MAAM,SAAS;IAC7B,MAAM,IAAI;IAKV,MAAM,UAAU,uBACd,EAAE,YAAY,WACP,EAAE,YAAY,WAAW,EAAE,UAAU,IAC5C,EAAE,SAAS,cAAc,IAC1B;AACD,QAAI,QAAS,MAAK,WAAW,QAAQ;GACtC;EACF;AAID,mBAAiB,KAAK,YAA0C;CACjE;AAED,QAAO;AACR;AAED,SAAS,2BACPC,QACsC;CACtC,MAAMC,UAAkC;EACtC,MAAM;EAIN,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,0BAAM,UAAU,KAAK;AAC7B;AAED,SAAgB,gBAAwD;AACtE,QAAO,0BAAM,eAAe;AAC7B;AAED,SAAgB,kBAAyD;CACvE,MAAM,OAAO,0BAAM,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-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":";;;;;;;;;;;;;;;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;;;;ACnHD,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;AAe7D,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,sBAAsB,oBAAoB;CAC7D;AAED,KAAI,OAAO;AACX,iBAAgB;AACjB;;;;;;;;;;;;;;;;;;;;;;;AAwBD,SAAgB,uBACdC,UACAC,aACAC,UACe;AACf,MAAK,YAAY,SAAS,OAAO,CAAE,QAAO;AAC1C,QAAO,YAAY,EAAE,SAAS,GAAG,SAAS,IAAI;AAC/C;AAED,SAAgB,sBACdC,sBAAiD,CAAE,GAChC;CACnB,MAAMC,mBAAsC,CAC1C,GAAG,4BAA4B,2BAA2B,oBAAoB,CAAC,AAChF;AAED,KAAI,oBAAoB,YAAY,OAAO;EACzC,MAAM,cAAc,IAAI,2BAA2B;GACjD,0BAA0B;GAG1B,aAAa,CAAC,MAAM,YAAY;IAC9B,MAAM,WAAY,QAAgD,cAAc;IAChF,MAAM,SAAU,QAAgC;AAChD,QAAI,YAAY,OAAQ,MAAK,YAAY,EAAE,OAAO,GAAG,SAAS,EAAE;GACjE;GAID,eAAe,CAAC,MAAM,SAAS;IAC7B,MAAM,IAAI;IAKV,MAAM,UAAU,uBACd,EAAE,YAAY,WACP,EAAE,YAAY,WAAW,EAAE,UAAU,IAC5C,EAAE,SAAS,cAAc,IAC1B;AACD,QAAI,QAAS,MAAK,WAAW,QAAQ;GACtC;EACF;AAID,mBAAiB,KAAK,YAA0C;CACjE;AAED,QAAO;AACR;AAED,SAAS,2BACPC,QACsC;CACtC,MAAMC,UAAkC;EACtC,MAAM;EAIN,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"}
|