@azure/monitor-opentelemetry 1.18.1 → 1.19.0

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.
Files changed (137) hide show
  1. package/README.md +8 -1
  2. package/dist/commonjs/index.d.ts.map +1 -1
  3. package/dist/commonjs/index.js +20 -3
  4. package/dist/commonjs/index.js.map +1 -1
  5. package/dist/commonjs/logs/batchLogRecordProcessor.js +1 -1
  6. package/dist/commonjs/logs/batchLogRecordProcessor.js.map +1 -1
  7. package/dist/commonjs/logs/handler.d.ts +3 -0
  8. package/dist/commonjs/logs/handler.d.ts.map +1 -1
  9. package/dist/commonjs/logs/handler.js +22 -2
  10. package/dist/commonjs/logs/handler.js.map +1 -1
  11. package/dist/commonjs/metrics/handler.d.ts.map +1 -1
  12. package/dist/commonjs/metrics/handler.js +2 -3
  13. package/dist/commonjs/metrics/handler.js.map +1 -1
  14. package/dist/commonjs/metrics/quickpulse/credentialUtils.d.ts +16 -0
  15. package/dist/commonjs/metrics/quickpulse/credentialUtils.d.ts.map +1 -0
  16. package/dist/commonjs/metrics/quickpulse/credentialUtils.js +48 -0
  17. package/dist/commonjs/metrics/quickpulse/credentialUtils.js.map +1 -0
  18. package/dist/commonjs/metrics/quickpulse/export/sender.d.ts +10 -0
  19. package/dist/commonjs/metrics/quickpulse/export/sender.d.ts.map +1 -1
  20. package/dist/commonjs/metrics/quickpulse/export/sender.js +37 -8
  21. package/dist/commonjs/metrics/quickpulse/export/sender.js.map +1 -1
  22. package/dist/commonjs/metrics/quickpulse/filtering/filter.d.ts.map +1 -1
  23. package/dist/commonjs/metrics/quickpulse/filtering/filter.js +2 -5
  24. package/dist/commonjs/metrics/quickpulse/filtering/filter.js.map +1 -1
  25. package/dist/commonjs/metrics/quickpulse/liveMetrics.d.ts +4 -2
  26. package/dist/commonjs/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
  27. package/dist/commonjs/metrics/quickpulse/liveMetrics.js +75 -18
  28. package/dist/commonjs/metrics/quickpulse/liveMetrics.js.map +1 -1
  29. package/dist/commonjs/metrics/quickpulse/redirectUtils.d.ts +28 -0
  30. package/dist/commonjs/metrics/quickpulse/redirectUtils.d.ts.map +1 -0
  31. package/dist/commonjs/metrics/quickpulse/redirectUtils.js +80 -0
  32. package/dist/commonjs/metrics/quickpulse/redirectUtils.js.map +1 -0
  33. package/dist/commonjs/metrics/quickpulse/utils.d.ts.map +1 -1
  34. package/dist/commonjs/metrics/quickpulse/utils.js.map +1 -1
  35. package/dist/commonjs/metrics/standardMetrics.js.map +1 -1
  36. package/dist/commonjs/shared/config.d.ts.map +1 -1
  37. package/dist/commonjs/shared/config.js +1 -0
  38. package/dist/commonjs/shared/config.js.map +1 -1
  39. package/dist/commonjs/shared/logging/diagFileConsoleLogger.d.ts +1 -0
  40. package/dist/commonjs/shared/logging/diagFileConsoleLogger.d.ts.map +1 -1
  41. package/dist/commonjs/shared/logging/diagFileConsoleLogger.js +13 -12
  42. package/dist/commonjs/shared/logging/diagFileConsoleLogger.js.map +1 -1
  43. package/dist/commonjs/traces/handler.d.ts +12 -0
  44. package/dist/commonjs/traces/handler.d.ts.map +1 -1
  45. package/dist/commonjs/traces/handler.js +30 -1
  46. package/dist/commonjs/traces/handler.js.map +1 -1
  47. package/dist/commonjs/tsdoc-metadata.json +1 -1
  48. package/dist/commonjs/types.d.ts +11 -1
  49. package/dist/commonjs/types.d.ts.map +1 -1
  50. package/dist/commonjs/types.js +47 -3
  51. package/dist/commonjs/types.js.map +1 -1
  52. package/dist/commonjs/utils/azureSdkTracingBridge.d.ts +18 -0
  53. package/dist/commonjs/utils/azureSdkTracingBridge.d.ts.map +1 -0
  54. package/dist/commonjs/utils/azureSdkTracingBridge.js +35 -0
  55. package/dist/commonjs/utils/azureSdkTracingBridge.js.map +1 -0
  56. package/dist/commonjs/utils/common.d.ts +10 -0
  57. package/dist/commonjs/utils/common.d.ts.map +1 -1
  58. package/dist/commonjs/utils/common.js +16 -0
  59. package/dist/commonjs/utils/common.js.map +1 -1
  60. package/dist/commonjs/utils/logUtils.d.ts +5 -0
  61. package/dist/commonjs/utils/logUtils.d.ts.map +1 -1
  62. package/dist/commonjs/utils/logUtils.js +8 -0
  63. package/dist/commonjs/utils/logUtils.js.map +1 -1
  64. package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.d.ts.map +1 -1
  65. package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.js +3 -2
  66. package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.js.map +1 -1
  67. package/dist/commonjs/utils/statsbeat.d.ts.map +1 -1
  68. package/dist/commonjs/utils/statsbeat.js +35 -30
  69. package/dist/commonjs/utils/statsbeat.js.map +1 -1
  70. package/dist/esm/index.d.ts.map +1 -1
  71. package/dist/esm/index.js +20 -3
  72. package/dist/esm/index.js.map +1 -1
  73. package/dist/esm/logs/batchLogRecordProcessor.js +1 -1
  74. package/dist/esm/logs/batchLogRecordProcessor.js.map +1 -1
  75. package/dist/esm/logs/handler.d.ts +3 -0
  76. package/dist/esm/logs/handler.d.ts.map +1 -1
  77. package/dist/esm/logs/handler.js +23 -3
  78. package/dist/esm/logs/handler.js.map +1 -1
  79. package/dist/esm/metrics/handler.d.ts.map +1 -1
  80. package/dist/esm/metrics/handler.js +2 -3
  81. package/dist/esm/metrics/handler.js.map +1 -1
  82. package/dist/esm/metrics/quickpulse/credentialUtils.d.ts +16 -0
  83. package/dist/esm/metrics/quickpulse/credentialUtils.d.ts.map +1 -0
  84. package/dist/esm/metrics/quickpulse/credentialUtils.js +45 -0
  85. package/dist/esm/metrics/quickpulse/credentialUtils.js.map +1 -0
  86. package/dist/esm/metrics/quickpulse/export/sender.d.ts +10 -0
  87. package/dist/esm/metrics/quickpulse/export/sender.d.ts.map +1 -1
  88. package/dist/esm/metrics/quickpulse/export/sender.js +37 -8
  89. package/dist/esm/metrics/quickpulse/export/sender.js.map +1 -1
  90. package/dist/esm/metrics/quickpulse/filtering/filter.d.ts.map +1 -1
  91. package/dist/esm/metrics/quickpulse/filtering/filter.js +2 -5
  92. package/dist/esm/metrics/quickpulse/filtering/filter.js.map +1 -1
  93. package/dist/esm/metrics/quickpulse/liveMetrics.d.ts +4 -2
  94. package/dist/esm/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
  95. package/dist/esm/metrics/quickpulse/liveMetrics.js +75 -18
  96. package/dist/esm/metrics/quickpulse/liveMetrics.js.map +1 -1
  97. package/dist/esm/metrics/quickpulse/redirectUtils.d.ts +28 -0
  98. package/dist/esm/metrics/quickpulse/redirectUtils.d.ts.map +1 -0
  99. package/dist/esm/metrics/quickpulse/redirectUtils.js +76 -0
  100. package/dist/esm/metrics/quickpulse/redirectUtils.js.map +1 -0
  101. package/dist/esm/metrics/quickpulse/utils.d.ts.map +1 -1
  102. package/dist/esm/metrics/quickpulse/utils.js.map +1 -1
  103. package/dist/esm/metrics/standardMetrics.js.map +1 -1
  104. package/dist/esm/shared/config.d.ts.map +1 -1
  105. package/dist/esm/shared/config.js +1 -0
  106. package/dist/esm/shared/config.js.map +1 -1
  107. package/dist/esm/shared/logging/diagFileConsoleLogger.d.ts +1 -0
  108. package/dist/esm/shared/logging/diagFileConsoleLogger.d.ts.map +1 -1
  109. package/dist/esm/shared/logging/diagFileConsoleLogger.js +13 -12
  110. package/dist/esm/shared/logging/diagFileConsoleLogger.js.map +1 -1
  111. package/dist/esm/traces/handler.d.ts +12 -0
  112. package/dist/esm/traces/handler.d.ts.map +1 -1
  113. package/dist/esm/traces/handler.js +29 -1
  114. package/dist/esm/traces/handler.js.map +1 -1
  115. package/dist/esm/types.d.ts +11 -1
  116. package/dist/esm/types.d.ts.map +1 -1
  117. package/dist/esm/types.js +46 -2
  118. package/dist/esm/types.js.map +1 -1
  119. package/dist/esm/utils/azureSdkTracingBridge.d.ts +18 -0
  120. package/dist/esm/utils/azureSdkTracingBridge.d.ts.map +1 -0
  121. package/dist/esm/utils/azureSdkTracingBridge.js +34 -0
  122. package/dist/esm/utils/azureSdkTracingBridge.js.map +1 -0
  123. package/dist/esm/utils/common.d.ts +10 -0
  124. package/dist/esm/utils/common.d.ts.map +1 -1
  125. package/dist/esm/utils/common.js +14 -0
  126. package/dist/esm/utils/common.js.map +1 -1
  127. package/dist/esm/utils/logUtils.d.ts +5 -0
  128. package/dist/esm/utils/logUtils.d.ts.map +1 -1
  129. package/dist/esm/utils/logUtils.js +7 -0
  130. package/dist/esm/utils/logUtils.js.map +1 -1
  131. package/dist/esm/utils/opentelemetryInstrumentationPatcher.d.ts.map +1 -1
  132. package/dist/esm/utils/opentelemetryInstrumentationPatcher.js +3 -2
  133. package/dist/esm/utils/opentelemetryInstrumentationPatcher.js.map +1 -1
  134. package/dist/esm/utils/statsbeat.d.ts.map +1 -1
  135. package/dist/esm/utils/statsbeat.js +36 -31
  136. package/dist/esm/utils/statsbeat.js.map +1 -1
  137. package/package.json +41 -30
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/metrics/quickpulse/utils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAkBlC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,EAC7B,iCAAiC,EACjC,6BAA6B,EAC7B,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,8BAA8B,EAC9B,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,mCAAmC,EACnC,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EACL,qBAAqB,EACrB,kCAAkC,EAClC,eAAe,EACf,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAEvD,mCAAmC;AACnC,MAAM,UAAU,aAAa;IAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC1C,MAAM,oBAAoB,GAAG,QAAQ,CAAC,iCAAiC,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,kBAAkB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,WAAW,QAAQ,oBAAoB,IAAI,OAAO,EAAE,CAAC;IACjI,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,iBAAiB;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE,CAAC;QACnD,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,mCAAmC,EAAE,CAAC;IACrD,CAAC;AACH,CAAC;AAED,wCAAwC;AACxC,iFAAiF;AACjF,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACvC,MAAM,gBAAgB,GACpB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,MAAM;YAC/C,CAAC,CAAC,gBAAgB,CAAC,eAAe;YAClC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;YAC/B,GAAG,mBAAmB,EAAE,GAAG,WAAW,EAAE,GAAG,gBAAgB,GAAG,CAAC;IACnE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,OAAwB,EACxB,uBAA4C,EAC5C,SAA4B,EAC5B,MAAsC,EACtC,mBAAwC;IAExC,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QAC3C,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACrC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBACtC,MAAM,WAAW,GAAgB;oBAC/B,MAAM,EAAE,CAAC;oBACT,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,CAAC;iBACT,CAAC;gBAEF,8FAA8F;gBAC9F,QAAQ,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC/B,KAAK,kCAAkC,CAAC,cAAc;wBACpD,WAAW,CAAC,IAAI,GAAG,qBAAqB,CAAC,cAAc,CAAC;wBACxD,MAAM;oBACR,KAAK,kCAAkC,CAAC,mBAAmB;wBACzD,WAAW,CAAC,IAAI,GAAG,qBAAqB,CAAC,mBAAmB,CAAC;wBAC7D,MAAM;oBACR,KAAK,kCAAkC,CAAC,uBAAuB;wBAC7D,WAAW,CAAC,IAAI,GAAG,qBAAqB,CAAC,uBAAuB,CAAC;wBACjE,MAAM;oBACR,KAAK,kCAAkC,CAAC,eAAe;wBACrD,WAAW,CAAC,IAAI,GAAG,qBAAqB,CAAC,eAAe,CAAC;wBACzD,MAAM;oBACR,KAAK,kCAAkC,CAAC,cAAc;wBACpD,WAAW,CAAC,IAAI,GAAG,qBAAqB,CAAC,cAAc,CAAC;wBACxD,MAAM;oBACR,KAAK,kCAAkC,CAAC,yBAAyB;wBAC/D,WAAW,CAAC,IAAI,GAAG,qBAAqB,CAAC,yBAAyB,CAAC;wBACnE,MAAM;oBACR,KAAK,kCAAkC,CAAC,gBAAgB;wBACtD,WAAW,CAAC,IAAI,GAAG,qBAAqB,CAAC,gBAAgB,CAAC;wBAC1D,MAAM;oBACR,KAAK,kCAAkC,CAAC,oBAAoB;wBAC1D,WAAW,CAAC,IAAI,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;wBAC9D,MAAM;oBACR,KAAK,kCAAkC,CAAC,YAAY;wBAClD,WAAW,CAAC,IAAI,GAAG,qBAAqB,CAAC,YAAY,CAAC;wBACtD,MAAM;oBACR;wBACE,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC9C,CAAC;gBAED,IACE,MAAM,CAAC,aAAa,KAAK,aAAa,CAAC,GAAG;oBAC1C,MAAM,CAAC,aAAa,KAAK,aAAa,CAAC,KAAK,EAC5C,CAAC;oBACD,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,KAAe,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,KAAK,GAAI,SAAS,CAAC,KAAmB,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC9D,CAAC;gBACD,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE/B,iEAAiE;gBACjE,2DAA2D;gBAC3D,IACE,WAAW,CAAC,IAAI,KAAK,qBAAqB,CAAC,cAAc;oBACzD,WAAW,CAAC,IAAI,KAAK,qBAAqB,CAAC,yBAAyB,EACpE,CAAC;oBACD,MAAM,cAAc,GAAgB;wBAClC,MAAM,EAAE,CAAC;wBACT,IAAI,EACF,WAAW,CAAC,IAAI,KAAK,qBAAqB,CAAC,cAAc;4BACvD,CAAC,CAAC,qBAAqB,CAAC,eAAe;4BACvC,CAAC,CAAC,qBAAqB,CAAC,cAAc;wBAC1C,KAAK,EAAE,SAAS,CAAC,KAAe;qBACjC,CAAC;oBACF,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,mBAAmB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACxC,MAAM,WAAW,GAAgB;YAC/B,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,KAAK;SACb,CAAC;QACF,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAwB;QAC/C,GAAG,uBAAuB;QAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE,SAAS;QACpB,6BAA6B,EAAE,MAAM;KACtC,CAAC;IACF,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAoB;IAC9C,MAAM,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC;IACpC,OAAO,KAAK,OAAO,GAAG,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACrE,UAAU;QACV,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,aAAa;QACb,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,eAA2B,EAC3B,cAA0B;IAE1B,MAAM,aAAa,GAAkB;QACnC,OAAO,EAAE,eAAe,CAAC,0BAA0B,CAAW;QAC9D,UAAU,EAAE,eAAe,CAAC,6BAA6B,CAAW;QACpE,gBAAgB,EAAE,8BAA8B,CAAC,cAAc,CAAC;KACjE,CAAC;IACF,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,SAAS,cAAc,CAAC,IAAkB;IACxC,MAAM,WAAW,GAAgB;QAC/B,GAAG,EAAE,EAAE;QACP,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7C,YAAY,EAAE,CAAC;QACf,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;QACrB,gBAAgB,EAAE,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC;KAClE,CAAC;IAEF,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAAC;IACtE,IAAI,UAAU,EAAE,CAAC;QACf,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACxC,WAAW,CAAC,IAAI,GAAG,GAAG,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,cAAc,EAAE,CAAC;YACnB,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC;QAC1B,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC;IACD,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,IAAI,WAAW,CAAC,YAAY,GAAG,GAAG,CAAC;IAClG,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,iFAAiF;AACjF,SAAS,iBAAiB,CAAC,IAAkB;IAC3C,MAAM,cAAc,GAAmB;QACrC,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;QAClD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,CAAC;QACb,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE;QACR,gBAAgB,EAAE,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC;KAClE,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpC,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC,YAAY,CAAC;IACrD,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;QACtE,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC;IAC/C,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACvD,kBAAkB;IAClB,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBAClC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC/C,cAAc,CAAC,IAAI,GAAG,GAAG,UAAU,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QACD,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;QAC3C,cAAc,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,sBAAsB;gBACtB,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,8BAA8B,CAAC,CAAC;gBAC7D,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACjB,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBACpB,IACE,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC;wBACzC,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,CAAC,EACvC,CAAC;wBACD,YAAY;wBACZ,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,EAAO,EAAE,CAAC;gBACjB,WAAW;YACb,CAAC;YACD,cAAc,CAAC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IACD,gBAAgB;SACX,IAAI,QAAQ,EAAE,CAAC;QAClB,2EAA2E;QAC3E,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,oBAAoB,EAAE,CAAC;YAC9C,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC;QAC9C,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,yBAAyB,EAAE,CAAC;YAC1D,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC;QACnD,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,sBAAsB,EAAE,CAAC;YACvD,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC;QAChD,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,oBAAoB,EAAE,CAAC;YACrD,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC;QAC9C,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACrC,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAC3D,IAAI,WAAW,EAAE,CAAC;YAChB,cAAc,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,cAAc,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE,CAAC;YACX,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,kBAAkB;SACb,IAAI,SAAS,EAAE,CAAC;QACnB,IAAI,SAAS,KAAK,eAAe,CAAC,GAAG,EAAE,CAAC;YACtC,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;QAC7C,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAAC;QACtE,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,MAAM,EAAE,CAAC;YACX,cAAc,CAAC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACtC,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAiB;IAC1C,MAAM,UAAU,GAAG,8BAA8B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClE,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,gEAAgE;YAChE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;YAC3D,gEAAgE;YAChE,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAAC;YACjE,gBAAgB,EAAE,UAAU;SAC7B,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO;YACL,gEAAgE;YAChE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB,gBAAgB,EAAE,UAAU;SAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAmB,EAAE,aAAsB;IACxE,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,aAAa,EAAE,CAAC;QAC3C,OAAO;YACL,YAAY,EAAE,WAAW;YACzB,gBAAgB,EAAE,IAAI,CAAC,OAAO;YAC9B,aAAa,EAAE,aAAa;YAC5B,UAAU,EAAE,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACzD,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,QAAQ;QACR,OAAO;YACL,YAAY,EAAE,OAAO;YACrB,OAAO,EAAG,IAAkB,CAAC,OAAO;YACpC,UAAU,EAAE,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACzD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAmB;IAC/C,OAAQ,IAAoB,CAAC,GAAG,KAAK,SAAS,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAmB;IAClD,OAAQ,IAAuB,CAAC,MAAM,KAAK,SAAS,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAmB;IAC7C,OAAQ,IAAkB,CAAC,OAAO,KAAK,SAAS,IAAK,IAAY,CAAC,UAAU,KAAK,SAAS,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAmB;IACjD,OAAQ,IAAsB,CAAC,UAAU,KAAK,SAAS,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,aAA4B;IAC1D,IAAI,QAAQ,GAA+B;QACzC,YAAY,EAAE,SAAS;KACxB,CAAC;IAEF,IAAI,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,QAAQ,GAAG;YACT,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,GAAG,EAAE,aAAa,CAAC,GAAG;YACtB,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC;YAChD,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC;SACrD,CAAC;IACJ,CAAC;SAAM,IAAI,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;QAC3C,QAAQ,GAAG;YACT,YAAY,EAAE,kBAAkB;YAChC,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,WAAW,EAAE,aAAa,CAAC,IAAI;YAC/B,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;YAC5C,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC;SACrD,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,UAAU,GAAG,qBAAqB,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC5E,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,8BAA8B,CACrC,UAAuC;IAEvC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,IACE,CAAC,CACC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBACtB,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAClC,kBAAkB,CAAC,QAAQ,CAAC,GAAU,CAAC,CACxC,EACD,CAAC;gBACD,gEAAgE;gBAChE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAwB;IACrD,MAAM,IAAI,GAA+B,EAAE,CAAC;IAC5C,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAC,UAAsB;IACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;gBACzC,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,GAAG,UAAU,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;oBAC/C,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;wBAC/C,IAAI,WAAW,EAAE,CAAC;4BAChB,OAAO,GAAG,UAAU,MAAM,WAAW,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;wBACtE,CAAC;6BAAM,CAAC;4BACN,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;4BACxC,IAAI,SAAS,EAAE,CAAC;gCACd,OAAO,GAAG,UAAU,MAAM,SAAS,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;4BACpE,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,GAAG,KAAK,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,SAAiB;IAC9D,oEAAoE;IACpE,qCAAqC;IACrC,gGAAgG;IAChG,mGAAmG;IACnG,iEAAiE;IACjE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,UAAsB;IAC9C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,MAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO;AACT,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAsB;IACjD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO;AACT,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,UAAsB;IAC/C,+DAA+D;IAC/D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAsB;IAClD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO;AACT,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAsB;IACtD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,MAAM,CACX,UAAU,CAAC,8BAA8B,CAAC,IAAI,UAAU,CAAC,yBAAyB,CAAC,CACpF,CAAC;IACJ,CAAC;IACD,OAAO;AACT,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAsB;IAClD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,OAAO;AACT,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAsB;IAClD,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAsB;IAChD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnF,CAAC;IACD,OAAO;AACT,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAsB;IACnD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,UAAU,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAsB;IACnD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAsB;IACnD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,MAAM,CACX,UAAU,CAAC,gBAAgB,CAAC;YAC1B,UAAU,CAAC,gBAAgB,CAAC;YAC5B,UAAU,CAAC,sBAAsB,CAAC,CACrC,CAAC;IACJ,CAAC;IACD,OAAO;AACT,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n\nimport type { ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport type {\n DocumentIngress,\n Exception,\n KeyValuePairStringString,\n MetricPoint,\n MonitoringDataPoint,\n RemoteDependency,\n Request,\n Trace,\n CollectionConfigurationError,\n} from \"../../generated/index.js\";\nimport type { Attributes } from \"@opentelemetry/api\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport {\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_NET_PEER_PORT,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n SEMRESATTRS_TELEMETRY_SDK_VERSION,\n SEMATTRS_EXCEPTION_STACKTRACE,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_RPC_SYSTEM,\n DBSYSTEMVALUES_MONGODB,\n DBSYSTEMVALUES_MYSQL,\n DBSYSTEMVALUES_POSTGRESQL,\n DBSYSTEMVALUES_REDIS,\n SEMATTRS_DB_NAME,\n SEMATTRS_DB_OPERATION,\n SEMATTRS_DB_STATEMENT,\n ATTR_CLIENT_ADDRESS,\n SEMATTRS_NET_PEER_NAME,\n SEMATTRS_HTTP_HOST,\n ATTR_SERVER_ADDRESS,\n SEMATTRS_HTTP_TARGET,\n ATTR_URL_QUERY,\n ATTR_URL_PATH,\n SEMATTRS_HTTP_SCHEME,\n ATTR_URL_SCHEME,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n SEMATTRS_HTTP_STATUS_CODE,\n ATTR_HTTP_REQUEST_METHOD,\n SEMATTRS_HTTP_METHOD,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_URL,\n ATTR_NETWORK_PEER_ADDRESS,\n SEMATTRS_NET_PEER_IP,\n ATTR_USER_AGENT_ORIGINAL,\n SEMATTRS_HTTP_USER_AGENT,\n ATTR_SERVER_PORT,\n ATTR_CLIENT_PORT,\n SEMATTRS_NET_HOST_PORT,\n} from \"@opentelemetry/semantic-conventions\";\nimport { SDK_INFO, hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport type { Histogram, ResourceMetrics } from \"@opentelemetry/sdk-metrics\";\nimport { DataPointType } from \"@opentelemetry/sdk-metrics\";\nimport {\n APPLICATION_INSIGHTS_SHIM_VERSION,\n AZURE_MONITOR_AUTO_ATTACH,\n AZURE_MONITOR_OPENTELEMETRY_VERSION,\n AZURE_MONITOR_PREFIX,\n AttachTypePrefix,\n} from \"../../types.js\";\nimport type {\n RequestData,\n DependencyData,\n ExceptionData,\n TraceData,\n TelemetryData,\n} from \"./types.js\";\nimport {\n QuickPulseMetricNames,\n QuickPulseOpenTelemetryMetricNames,\n DependencyTypes,\n legacySemanticValues,\n httpSemanticValues,\n} from \"./types.js\";\nimport { getOsPrefix } from \"../../utils/common.js\";\nimport { getResourceProvider } from \"../../utils/common.js\";\nimport type { LogAttributes } from \"@opentelemetry/api-logs\";\nimport { getDependencyTarget, isSqlDB, isExceptionTelemetry } from \"../utils.js\";\nimport { Logger } from \"../../shared/logging/index.js\";\n\n/** Get the internal SDK version */\nexport function getSdkVersion(): string {\n const nodeVersion = process.versions.node;\n const opentelemetryVersion = SDK_INFO[SEMRESATTRS_TELEMETRY_SDK_VERSION];\n const version = getSdkVersionType();\n const internalSdkVersion = `${process.env[AZURE_MONITOR_PREFIX] ?? \"\"}node${nodeVersion}:otel${opentelemetryVersion}:${version}`;\n return internalSdkVersion;\n}\n\n/** Get the internal SDK version type */\nexport function getSdkVersionType(): string {\n if (process.env[APPLICATION_INSIGHTS_SHIM_VERSION]) {\n return `sha${process.env[APPLICATION_INSIGHTS_SHIM_VERSION]}`;\n } else {\n return `dst${AZURE_MONITOR_OPENTELEMETRY_VERSION}`;\n }\n}\n\n// eslint-disable-next-line tsdoc/syntax\n/** Set the version prefix to a string in the format \"{ResourceProvider}{OS}m_ */\nexport function setSdkPrefix(): void {\n if (!process.env[AZURE_MONITOR_PREFIX]) {\n const prefixAttachType: string =\n process.env[AZURE_MONITOR_AUTO_ATTACH] === \"true\"\n ? AttachTypePrefix.INTEGRATED_AUTO\n : AttachTypePrefix.MANUAL;\n process.env[AZURE_MONITOR_PREFIX] =\n `${getResourceProvider()}${getOsPrefix()}${prefixAttachType}_`;\n }\n}\n\nexport function resourceMetricsToQuickpulseDataPoint(\n metrics: ResourceMetrics,\n baseMonitoringDataPoint: MonitoringDataPoint,\n documents: DocumentIngress[],\n errors: CollectionConfigurationError[],\n derivedMetricValues: Map<string, number>,\n): MonitoringDataPoint[] {\n const metricPoints: MetricPoint[] = [];\n metrics.scopeMetrics.forEach((scopeMetric) => {\n scopeMetric.metrics.forEach((metric) => {\n metric.dataPoints.forEach((dataPoint) => {\n const metricPoint: MetricPoint = {\n weight: 1,\n name: \"\",\n value: 0,\n };\n\n // Update name to expected value in Quickpulse, needed because those names are invalid in OTel\n switch (metric.descriptor.name) {\n case QuickPulseOpenTelemetryMetricNames.PHYSICAL_BYTES:\n metricPoint.name = QuickPulseMetricNames.PHYSICAL_BYTES;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_DURATION:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_DURATION;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_FAILURE_RATE:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_FAILURE_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_RATE:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.EXCEPTION_RATE:\n metricPoint.name = QuickPulseMetricNames.EXCEPTION_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.PROCESSOR_TIME_NORMALIZED:\n metricPoint.name = QuickPulseMetricNames.PROCESSOR_TIME_NORMALIZED;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_DURATION:\n metricPoint.name = QuickPulseMetricNames.REQUEST_DURATION;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_FAILURE_RATE:\n metricPoint.name = QuickPulseMetricNames.REQUEST_FAILURE_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_RATE:\n metricPoint.name = QuickPulseMetricNames.REQUEST_RATE;\n break;\n default:\n metricPoint.name = metric.descriptor.name;\n }\n\n if (\n metric.dataPointType === DataPointType.SUM ||\n metric.dataPointType === DataPointType.GAUGE\n ) {\n metricPoint.value = dataPoint.value as number;\n } else {\n metricPoint.value = (dataPoint.value as Histogram).sum || 0;\n }\n metricPoints.push(metricPoint);\n\n // TODO: remove the metric points with the old metric names after\n // UI side has done their changes to support the new names.\n if (\n metricPoint.name === QuickPulseMetricNames.PHYSICAL_BYTES ||\n metricPoint.name === QuickPulseMetricNames.PROCESSOR_TIME_NORMALIZED\n ) {\n const oldMetricPoint: MetricPoint = {\n weight: 1,\n name:\n metricPoint.name === QuickPulseMetricNames.PHYSICAL_BYTES\n ? QuickPulseMetricNames.COMMITTED_BYTES\n : QuickPulseMetricNames.PROCESSOR_TIME,\n value: dataPoint.value as number,\n };\n metricPoints.push(oldMetricPoint);\n }\n });\n });\n });\n\n derivedMetricValues.forEach((value, id) => {\n const metricPoint: MetricPoint = {\n weight: 1,\n name: id,\n value: value,\n };\n metricPoints.push(metricPoint);\n });\n\n const quickpulseDataPoint: MonitoringDataPoint = {\n ...baseMonitoringDataPoint,\n timestamp: new Date(),\n metrics: metricPoints,\n documents: documents,\n collectionConfigurationErrors: errors,\n };\n return [quickpulseDataPoint];\n}\n\nfunction getIso8601Duration(milliseconds: number): string {\n const seconds = milliseconds / 1000;\n return `PT${seconds}S`;\n}\n\nexport function getSpanData(span: ReadableSpan): RequestData | DependencyData {\n if (span.kind === SpanKind.SERVER || span.kind === SpanKind.CONSUMER) {\n // request\n return getRequestData(span);\n } else {\n // dependency\n return getDependencyData(span);\n }\n}\n\nexport function getSpanExceptionColumns(\n eventAttributes: Attributes,\n spanAttributes: Attributes,\n): ExceptionData {\n const exceptionData: ExceptionData = {\n Message: eventAttributes[SEMATTRS_EXCEPTION_MESSAGE] as string,\n StackTrace: eventAttributes[SEMATTRS_EXCEPTION_STACKTRACE] as string,\n CustomDimensions: createCustomDimsFromAttributes(spanAttributes),\n };\n return exceptionData;\n}\n\n// A slightly modified version of createRequestData from spanUtils in exporter\nfunction getRequestData(span: ReadableSpan): RequestData {\n const requestData: RequestData = {\n Url: \"\",\n Duration: hrTimeToMilliseconds(span.duration),\n ResponseCode: 0,\n Success: false,\n Name: span.name || \"\",\n CustomDimensions: createCustomDimsFromAttributes(span.attributes),\n };\n\n const httpMethod = getHttpMethod(span.attributes);\n const grpcStatusCode = span.attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n if (httpMethod) {\n requestData.Url = getUrl(span.attributes);\n if (URL.canParse(requestData.Url)) {\n const urlObj = new URL(requestData.Url);\n requestData.Name = `${httpMethod} ${urlObj.pathname}`;\n } else {\n Logger.getInstance().info(\"Request data sent to live metrics has no valid URL field.\");\n }\n const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n requestData.ResponseCode = Number(httpStatusCode);\n }\n } else if (grpcStatusCode) {\n requestData.ResponseCode = Number(grpcStatusCode);\n }\n requestData.Success = span.status.code !== SpanStatusCode.ERROR && requestData.ResponseCode < 400;\n return requestData;\n}\n\n// A slightly modified version of createDependencyData from spanUtils in exporter\nfunction getDependencyData(span: ReadableSpan): DependencyData {\n const dependencyData: DependencyData = {\n Target: \"\",\n Duration: hrTimeToMilliseconds(span.duration),\n Success: span.status.code !== SpanStatusCode.ERROR,\n Name: span.name,\n ResultCode: 0,\n Type: \"\",\n Data: \"\",\n CustomDimensions: createCustomDimsFromAttributes(span.attributes),\n };\n\n if (span.kind === SpanKind.PRODUCER) {\n dependencyData.Type = DependencyTypes.QueueMessage;\n }\n if (span.kind === SpanKind.INTERNAL && span.parentSpanContext?.spanId) {\n dependencyData.Type = DependencyTypes.InProc;\n }\n\n const httpMethod = getHttpMethod(span.attributes);\n const dbSystem = span.attributes[SEMATTRS_DB_SYSTEM];\n const rpcSystem = span.attributes[SEMATTRS_RPC_SYSTEM];\n // HTTP Dependency\n if (httpMethod) {\n const httpUrl = getHttpUrl(span.attributes);\n if (httpUrl) {\n if (URL.canParse(String(httpUrl))) {\n const dependencyUrl = new URL(String(httpUrl));\n dependencyData.Name = `${httpMethod} ${dependencyUrl.pathname}`;\n } else {\n Logger.getInstance().info(\"Dependency data sent to live metrics has no valid URL field.\");\n }\n }\n dependencyData.Type = DependencyTypes.Http;\n dependencyData.Data = getUrl(span.attributes);\n const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n dependencyData.ResultCode = Number(httpStatusCode);\n }\n let target = getDependencyTarget(span.attributes);\n if (target) {\n try {\n // Remove default port\n const portRegex = new RegExp(/(https?)(:\\/\\/.*)(:\\d+)(\\S*)/);\n const res = portRegex.exec(target);\n if (res !== null) {\n const protocol = res[1];\n const port = res[3];\n if (\n (protocol === \"https\" && port === \":443\") ||\n (protocol === \"http\" && port === \":80\")\n ) {\n // Drop port\n target = res[1] + res[2] + res[4];\n }\n }\n } catch (ex: any) {\n /* no-op */\n }\n dependencyData.Target = `${target}`;\n }\n }\n // DB Dependency\n else if (dbSystem) {\n // TODO: Remove special logic when Azure UX supports OpenTelemetry dbSystem\n if (String(dbSystem) === DBSYSTEMVALUES_MYSQL) {\n dependencyData.Type = DependencyTypes.mysql;\n } else if (String(dbSystem) === DBSYSTEMVALUES_POSTGRESQL) {\n dependencyData.Type = DependencyTypes.postgresql;\n } else if (String(dbSystem) === DBSYSTEMVALUES_MONGODB) {\n dependencyData.Type = DependencyTypes.mongodb;\n } else if (String(dbSystem) === DBSYSTEMVALUES_REDIS) {\n dependencyData.Type = DependencyTypes.redis;\n } else if (isSqlDB(String(dbSystem))) {\n dependencyData.Type = DependencyTypes.Sql;\n } else {\n dependencyData.Type = String(dbSystem);\n }\n const dbStatement = span.attributes[SEMATTRS_DB_STATEMENT];\n const dbOperation = span.attributes[SEMATTRS_DB_OPERATION];\n if (dbStatement) {\n dependencyData.Data = String(dbStatement);\n } else if (dbOperation) {\n dependencyData.Data = String(dbOperation);\n }\n const target = getDependencyTarget(span.attributes);\n const dbName = span.attributes[SEMATTRS_DB_NAME];\n if (target) {\n dependencyData.Target = dbName ? `${target}|${dbName}` : `${target}`;\n } else {\n dependencyData.Target = dbName ? `${dbName}` : `${dbSystem}`;\n }\n }\n\n // grpc Dependency\n else if (rpcSystem) {\n if (rpcSystem === DependencyTypes.Wcf) {\n dependencyData.Type = DependencyTypes.Wcf;\n } else {\n dependencyData.Type = DependencyTypes.Grpc;\n }\n const grpcStatusCode = span.attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n if (grpcStatusCode) {\n dependencyData.ResultCode = Number(grpcStatusCode);\n }\n const target = getDependencyTarget(span.attributes);\n if (target) {\n dependencyData.Target = `${target}`;\n } else if (rpcSystem) {\n dependencyData.Target = String(rpcSystem);\n }\n }\n return dependencyData;\n}\n\nexport function getLogData(log: SdkLogRecord): ExceptionData | TraceData {\n const customDims = createCustomDimsFromAttributes(log.attributes);\n if (isExceptionTelemetry(log)) {\n return {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n Message: String(log.attributes[SEMATTRS_EXCEPTION_MESSAGE]),\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n StackTrace: String(log.attributes[SEMATTRS_EXCEPTION_STACKTRACE]),\n CustomDimensions: customDims,\n };\n } else {\n return {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n Message: String(log.body),\n CustomDimensions: customDims,\n };\n }\n}\n\nexport function getLogDocument(data: TelemetryData, exceptionType?: string): Trace | Exception {\n if (isExceptionData(data) && exceptionType) {\n return {\n documentType: \"Exception\",\n exceptionMessage: data.Message,\n exceptionType: exceptionType,\n properties: mapToKeyValuePairList(data.CustomDimensions),\n };\n } else {\n // trace\n return {\n documentType: \"Trace\",\n message: (data as TraceData).Message,\n properties: mapToKeyValuePairList(data.CustomDimensions),\n };\n }\n}\n\nexport function isRequestData(data: TelemetryData): data is RequestData {\n return (data as RequestData).Url !== undefined;\n}\n\nexport function isDependencyData(data: TelemetryData): data is DependencyData {\n return (data as DependencyData).Target !== undefined;\n}\n\nexport function isTraceData(data: TelemetryData): data is TraceData {\n return (data as TraceData).Message !== undefined && (data as any).StackTrace === undefined;\n}\n\nexport function isExceptionData(data: TelemetryData): data is ExceptionData {\n return (data as ExceptionData).StackTrace !== undefined;\n}\n\nexport function getSpanDocument(telemetryData: TelemetryData): Request | RemoteDependency {\n let document: Request | RemoteDependency = {\n documentType: \"Request\",\n };\n\n if (isRequestData(telemetryData)) {\n document = {\n documentType: \"Request\",\n name: telemetryData.Name,\n url: telemetryData.Url,\n responseCode: String(telemetryData.ResponseCode),\n duration: getIso8601Duration(telemetryData.Duration),\n };\n } else if (isDependencyData(telemetryData)) {\n document = {\n documentType: \"RemoteDependency\",\n name: telemetryData.Name,\n commandName: telemetryData.Data,\n resultCode: String(telemetryData.ResultCode),\n duration: getIso8601Duration(telemetryData.Duration),\n };\n }\n\n document.properties = mapToKeyValuePairList(telemetryData.CustomDimensions);\n return document;\n}\n\nfunction createCustomDimsFromAttributes(\n attributes?: Attributes | LogAttributes,\n): Map<string, string> {\n const customDims = new Map<string, string>();\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n if (\n !(\n key.startsWith(\"_MS.\") ||\n legacySemanticValues.includes(key) ||\n httpSemanticValues.includes(key as any)\n )\n ) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n customDims.set(key, String(attributes[key]));\n }\n }\n }\n return customDims;\n}\n\nfunction mapToKeyValuePairList(map: Map<string, string>): KeyValuePairStringString[] {\n const list: KeyValuePairStringString[] = [];\n map.forEach((value, key) => {\n list.push({ key, value });\n });\n return list;\n}\n\nfunction getUrl(attributes: Attributes): string {\n if (!attributes) {\n return \"\";\n }\n const httpMethod = getHttpMethod(attributes);\n if (httpMethod) {\n const httpUrl = getHttpUrl(attributes);\n if (httpUrl) {\n return String(httpUrl);\n } else {\n const httpScheme = getHttpScheme(attributes);\n const httpTarget = getHttpTarget(attributes);\n if (httpScheme && httpTarget) {\n const httpHost = getHttpHost(attributes);\n if (httpHost) {\n return `${httpScheme}://${httpHost}${httpTarget}`;\n } else {\n const netPeerPort = getNetPeerPort(attributes);\n if (netPeerPort) {\n const netPeerName = getNetPeerName(attributes);\n if (netPeerName) {\n return `${httpScheme}://${netPeerName}:${netPeerPort}${httpTarget}`;\n } else {\n const netPeerIp = getPeerIp(attributes);\n if (netPeerIp) {\n return `${httpScheme}://${netPeerIp}:${netPeerPort}${httpTarget}`;\n }\n }\n }\n }\n }\n }\n }\n return \"\";\n}\n\n/**\n * UTC time the request was made. Expressed as the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight on January 1, 0001. This is used for clock skew calculations, so the value can never be stale (cached).\n *\n * @example\n * 8/5/2020 10:15:00 PM UTC =\\> 637322625000000000\n * 8/5/2020 10:15:01 PM UTC =\\> 637322625010000000\n */\nexport function getTransmissionTime(): number {\n return (Date.now() + 62135596800000) * 10000;\n}\n\nexport function getMsFromFilterTimestampString(timestamp: string): number {\n // The service side will return a timestamp in the following format:\n // [days].[hours]:[minutes]:[seconds]\n // the seconds may be a whole number or something like 7.89. 7.89 seconds translates to 7890 ms.\n // writing this method because date.getmilliseconds() returns incorrect result on large timestamps.\n // examples: \"14.6:56:7.89\" = 1234567890 ms, \"0.0:0:0.2\" = 200 ms\n const parts = timestamp.split(\":\");\n if (parts.length !== 3) {\n return NaN;\n }\n const seconds = parseFloat(parts[2]);\n const minutes = parseFloat(parts[1]);\n const firstPart = parts[0].split(\".\");\n if (firstPart.length !== 2) {\n return NaN;\n }\n const hours = parseFloat(firstPart[1]);\n const days = parseFloat(firstPart[0]);\n\n if (isNaN(days) || isNaN(hours) || isNaN(minutes) || isNaN(seconds)) {\n return NaN;\n }\n\n return seconds * 1000 + minutes * 60000 + hours * 3600000 + days * 86400000;\n}\n\nexport function getPeerIp(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_NETWORK_PEER_ADDRESS] || attributes[SEMATTRS_NET_PEER_IP]);\n }\n return;\n}\n\nexport function getUserAgent(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_USER_AGENT_ORIGINAL] || attributes[SEMATTRS_HTTP_USER_AGENT]);\n }\n return;\n}\n\nexport function getHttpUrl(attributes: Attributes): string {\n // Stable sem conv only supports populating url from `url.full`\n if (attributes) {\n return String(attributes[ATTR_URL_FULL] || attributes[SEMATTRS_HTTP_URL] || \"\");\n }\n return \"\";\n}\n\nexport function getHttpMethod(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_HTTP_REQUEST_METHOD] || attributes[SEMATTRS_HTTP_METHOD]);\n }\n return;\n}\n\nexport function getHttpStatusCode(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(\n attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] || attributes[SEMATTRS_HTTP_STATUS_CODE],\n );\n }\n return;\n}\n\nexport function getHttpScheme(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_URL_SCHEME] || attributes[SEMATTRS_HTTP_SCHEME]);\n }\n return;\n}\n\nexport function getHttpTarget(attributes: Attributes): string {\n if (attributes) {\n if (attributes[ATTR_URL_PATH]) {\n return String(attributes[ATTR_URL_PATH]);\n }\n if (attributes[ATTR_URL_QUERY]) {\n return String(attributes[ATTR_URL_QUERY]);\n }\n return String(attributes[SEMATTRS_HTTP_TARGET] || \"\");\n }\n return \"\";\n}\n\nexport function getHttpHost(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_SERVER_ADDRESS] || attributes[SEMATTRS_HTTP_HOST]);\n }\n return;\n}\n\nexport function getNetPeerName(attributes: Attributes): string {\n if (attributes) {\n return String(attributes[ATTR_CLIENT_ADDRESS] || attributes[SEMATTRS_NET_PEER_NAME] || \"\");\n }\n return \"\";\n}\n\nexport function getNetHostPort(attributes: Attributes): string {\n if (attributes) {\n return String(attributes[ATTR_SERVER_PORT] || attributes[SEMATTRS_NET_HOST_PORT] || \"\");\n }\n return \"\";\n}\n\nexport function getNetPeerPort(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(\n attributes[ATTR_CLIENT_PORT] ||\n attributes[ATTR_SERVER_PORT] ||\n attributes[SEMATTRS_NET_PEER_PORT],\n );\n }\n return;\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/metrics/quickpulse/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n\nimport type { ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport type {\n DocumentIngress,\n Exception,\n KeyValuePairStringString,\n MetricPoint,\n MonitoringDataPoint,\n RemoteDependency,\n Request,\n Trace,\n CollectionConfigurationError,\n} from \"../../generated/index.js\";\nimport type { Attributes } from \"@opentelemetry/api\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport {\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_NET_PEER_PORT,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n SEMRESATTRS_TELEMETRY_SDK_VERSION,\n SEMATTRS_EXCEPTION_STACKTRACE,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_RPC_SYSTEM,\n DBSYSTEMVALUES_MONGODB,\n DBSYSTEMVALUES_MYSQL,\n DBSYSTEMVALUES_POSTGRESQL,\n DBSYSTEMVALUES_REDIS,\n SEMATTRS_DB_NAME,\n SEMATTRS_DB_OPERATION,\n SEMATTRS_DB_STATEMENT,\n ATTR_CLIENT_ADDRESS,\n SEMATTRS_NET_PEER_NAME,\n SEMATTRS_HTTP_HOST,\n ATTR_SERVER_ADDRESS,\n SEMATTRS_HTTP_TARGET,\n ATTR_URL_QUERY,\n ATTR_URL_PATH,\n SEMATTRS_HTTP_SCHEME,\n ATTR_URL_SCHEME,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n SEMATTRS_HTTP_STATUS_CODE,\n ATTR_HTTP_REQUEST_METHOD,\n SEMATTRS_HTTP_METHOD,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_URL,\n ATTR_NETWORK_PEER_ADDRESS,\n SEMATTRS_NET_PEER_IP,\n ATTR_USER_AGENT_ORIGINAL,\n SEMATTRS_HTTP_USER_AGENT,\n ATTR_SERVER_PORT,\n ATTR_CLIENT_PORT,\n SEMATTRS_NET_HOST_PORT,\n} from \"@opentelemetry/semantic-conventions\";\nimport { SDK_INFO, hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport type { Histogram, ResourceMetrics } from \"@opentelemetry/sdk-metrics\";\nimport { DataPointType } from \"@opentelemetry/sdk-metrics\";\nimport {\n APPLICATION_INSIGHTS_SHIM_VERSION,\n AZURE_MONITOR_AUTO_ATTACH,\n AZURE_MONITOR_OPENTELEMETRY_VERSION,\n AZURE_MONITOR_PREFIX,\n AttachTypePrefix,\n} from \"../../types.js\";\nimport type {\n RequestData,\n DependencyData,\n ExceptionData,\n TraceData,\n TelemetryData,\n} from \"./types.js\";\nimport {\n QuickPulseMetricNames,\n QuickPulseOpenTelemetryMetricNames,\n DependencyTypes,\n legacySemanticValues,\n httpSemanticValues,\n} from \"./types.js\";\nimport { getOsPrefix } from \"../../utils/common.js\";\nimport { getResourceProvider } from \"../../utils/common.js\";\nimport type { LogAttributes } from \"@opentelemetry/api-logs\";\nimport { getDependencyTarget, isSqlDB, isExceptionTelemetry } from \"../utils.js\";\nimport { Logger } from \"../../shared/logging/index.js\";\n\n/** Get the internal SDK version */\nexport function getSdkVersion(): string {\n const nodeVersion = process.versions.node;\n const opentelemetryVersion = SDK_INFO[SEMRESATTRS_TELEMETRY_SDK_VERSION];\n const version = getSdkVersionType();\n const internalSdkVersion = `${process.env[AZURE_MONITOR_PREFIX] ?? \"\"}node${nodeVersion}:otel${opentelemetryVersion}:${version}`;\n return internalSdkVersion;\n}\n\n/** Get the internal SDK version type */\nexport function getSdkVersionType(): string {\n if (process.env[APPLICATION_INSIGHTS_SHIM_VERSION]) {\n return `sha${process.env[APPLICATION_INSIGHTS_SHIM_VERSION]}`;\n } else {\n return `dst${AZURE_MONITOR_OPENTELEMETRY_VERSION}`;\n }\n}\n\n// eslint-disable-next-line tsdoc/syntax\n/** Set the version prefix to a string in the format \"{ResourceProvider}{OS}m_ */\nexport function setSdkPrefix(): void {\n if (!process.env[AZURE_MONITOR_PREFIX]) {\n const prefixAttachType: string =\n process.env[AZURE_MONITOR_AUTO_ATTACH] === \"true\"\n ? AttachTypePrefix.INTEGRATED_AUTO\n : AttachTypePrefix.MANUAL;\n process.env[AZURE_MONITOR_PREFIX] =\n `${getResourceProvider()}${getOsPrefix()}${prefixAttachType}_`;\n }\n}\n\nexport function resourceMetricsToQuickpulseDataPoint(\n metrics: ResourceMetrics,\n baseMonitoringDataPoint: MonitoringDataPoint,\n documents: DocumentIngress[],\n errors: CollectionConfigurationError[],\n derivedMetricValues: Map<string, number>,\n): MonitoringDataPoint[] {\n const metricPoints: MetricPoint[] = [];\n metrics.scopeMetrics.forEach((scopeMetric) => {\n scopeMetric.metrics.forEach((metric) => {\n metric.dataPoints.forEach((dataPoint) => {\n const metricPoint: MetricPoint = {\n weight: 1,\n name: \"\",\n value: 0,\n };\n\n // Update name to expected value in Quickpulse, needed because those names are invalid in OTel\n switch (metric.descriptor.name) {\n case QuickPulseOpenTelemetryMetricNames.PHYSICAL_BYTES:\n metricPoint.name = QuickPulseMetricNames.PHYSICAL_BYTES;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_DURATION:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_DURATION;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_FAILURE_RATE:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_FAILURE_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_RATE:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.EXCEPTION_RATE:\n metricPoint.name = QuickPulseMetricNames.EXCEPTION_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.PROCESSOR_TIME_NORMALIZED:\n metricPoint.name = QuickPulseMetricNames.PROCESSOR_TIME_NORMALIZED;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_DURATION:\n metricPoint.name = QuickPulseMetricNames.REQUEST_DURATION;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_FAILURE_RATE:\n metricPoint.name = QuickPulseMetricNames.REQUEST_FAILURE_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_RATE:\n metricPoint.name = QuickPulseMetricNames.REQUEST_RATE;\n break;\n default:\n metricPoint.name = metric.descriptor.name;\n }\n\n if (\n metric.dataPointType === DataPointType.SUM ||\n metric.dataPointType === DataPointType.GAUGE\n ) {\n metricPoint.value = dataPoint.value as number;\n } else {\n metricPoint.value = (dataPoint.value as Histogram).sum || 0;\n }\n metricPoints.push(metricPoint);\n\n // TODO: remove the metric points with the old metric names after\n // UI side has done their changes to support the new names.\n if (\n metricPoint.name === QuickPulseMetricNames.PHYSICAL_BYTES ||\n metricPoint.name === QuickPulseMetricNames.PROCESSOR_TIME_NORMALIZED\n ) {\n const oldMetricPoint: MetricPoint = {\n weight: 1,\n name:\n metricPoint.name === QuickPulseMetricNames.PHYSICAL_BYTES\n ? QuickPulseMetricNames.COMMITTED_BYTES\n : QuickPulseMetricNames.PROCESSOR_TIME,\n value: dataPoint.value as number,\n };\n metricPoints.push(oldMetricPoint);\n }\n });\n });\n });\n\n derivedMetricValues.forEach((value, id) => {\n const metricPoint: MetricPoint = {\n weight: 1,\n name: id,\n value: value,\n };\n metricPoints.push(metricPoint);\n });\n\n const quickpulseDataPoint: MonitoringDataPoint = {\n ...baseMonitoringDataPoint,\n timestamp: new Date(),\n metrics: metricPoints,\n documents: documents,\n collectionConfigurationErrors: errors,\n };\n return [quickpulseDataPoint];\n}\n\nfunction getIso8601Duration(milliseconds: number): string {\n const seconds = milliseconds / 1000;\n return `PT${seconds}S`;\n}\n\nexport function getSpanData(span: ReadableSpan): RequestData | DependencyData {\n if (span.kind === SpanKind.SERVER || span.kind === SpanKind.CONSUMER) {\n // request\n return getRequestData(span);\n } else {\n // dependency\n return getDependencyData(span);\n }\n}\n\nexport function getSpanExceptionColumns(\n eventAttributes: Attributes,\n spanAttributes: Attributes,\n): ExceptionData {\n const exceptionData: ExceptionData = {\n Message: eventAttributes[SEMATTRS_EXCEPTION_MESSAGE] as string,\n StackTrace: eventAttributes[SEMATTRS_EXCEPTION_STACKTRACE] as string,\n CustomDimensions: createCustomDimsFromAttributes(spanAttributes),\n };\n return exceptionData;\n}\n\n// A slightly modified version of createRequestData from spanUtils in exporter\nfunction getRequestData(span: ReadableSpan): RequestData {\n const requestData: RequestData = {\n Url: \"\",\n Duration: hrTimeToMilliseconds(span.duration),\n ResponseCode: 0,\n Success: false,\n Name: span.name || \"\",\n CustomDimensions: createCustomDimsFromAttributes(span.attributes),\n };\n\n const httpMethod = getHttpMethod(span.attributes);\n const grpcStatusCode = span.attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n if (httpMethod) {\n requestData.Url = getUrl(span.attributes);\n if (URL.canParse(requestData.Url)) {\n const urlObj = new URL(requestData.Url);\n requestData.Name = `${httpMethod} ${urlObj.pathname}`;\n } else {\n Logger.getInstance().info(\"Request data sent to live metrics has no valid URL field.\");\n }\n const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n requestData.ResponseCode = Number(httpStatusCode);\n }\n } else if (grpcStatusCode) {\n requestData.ResponseCode = Number(grpcStatusCode);\n }\n requestData.Success = span.status.code !== SpanStatusCode.ERROR && requestData.ResponseCode < 400;\n return requestData;\n}\n\n// A slightly modified version of createDependencyData from spanUtils in exporter\nfunction getDependencyData(span: ReadableSpan): DependencyData {\n const dependencyData: DependencyData = {\n Target: \"\",\n Duration: hrTimeToMilliseconds(span.duration),\n Success: span.status.code !== SpanStatusCode.ERROR,\n Name: span.name,\n ResultCode: 0,\n Type: \"\",\n Data: \"\",\n CustomDimensions: createCustomDimsFromAttributes(span.attributes),\n };\n\n if (span.kind === SpanKind.PRODUCER) {\n dependencyData.Type = DependencyTypes.QueueMessage;\n }\n if (span.kind === SpanKind.INTERNAL && span.parentSpanContext?.spanId) {\n dependencyData.Type = DependencyTypes.InProc;\n }\n\n const httpMethod = getHttpMethod(span.attributes);\n const dbSystem = span.attributes[SEMATTRS_DB_SYSTEM];\n const rpcSystem = span.attributes[SEMATTRS_RPC_SYSTEM];\n // HTTP Dependency\n if (httpMethod) {\n const httpUrl = getHttpUrl(span.attributes);\n if (httpUrl) {\n if (URL.canParse(String(httpUrl))) {\n const dependencyUrl = new URL(String(httpUrl));\n dependencyData.Name = `${httpMethod} ${dependencyUrl.pathname}`;\n } else {\n Logger.getInstance().info(\"Dependency data sent to live metrics has no valid URL field.\");\n }\n }\n dependencyData.Type = DependencyTypes.Http;\n dependencyData.Data = getUrl(span.attributes);\n const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n dependencyData.ResultCode = Number(httpStatusCode);\n }\n let target = getDependencyTarget(span.attributes);\n if (target) {\n try {\n // Remove default port\n const portRegex = new RegExp(/(https?)(:\\/\\/.*)(:\\d+)(\\S*)/);\n const res = portRegex.exec(target);\n if (res !== null) {\n const protocol = res[1];\n const port = res[3];\n if (\n (protocol === \"https\" && port === \":443\") ||\n (protocol === \"http\" && port === \":80\")\n ) {\n // Drop port\n target = res[1] + res[2] + res[4];\n }\n }\n } catch (ex: any) {\n /* no-op */\n }\n dependencyData.Target = `${target}`;\n }\n }\n // DB Dependency\n else if (dbSystem) {\n // TODO: Remove special logic when Azure UX supports OpenTelemetry dbSystem\n if (String(dbSystem) === DBSYSTEMVALUES_MYSQL) {\n dependencyData.Type = DependencyTypes.mysql;\n } else if (String(dbSystem) === DBSYSTEMVALUES_POSTGRESQL) {\n dependencyData.Type = DependencyTypes.postgresql;\n } else if (String(dbSystem) === DBSYSTEMVALUES_MONGODB) {\n dependencyData.Type = DependencyTypes.mongodb;\n } else if (String(dbSystem) === DBSYSTEMVALUES_REDIS) {\n dependencyData.Type = DependencyTypes.redis;\n } else if (isSqlDB(String(dbSystem))) {\n dependencyData.Type = DependencyTypes.Sql;\n } else {\n dependencyData.Type = String(dbSystem);\n }\n const dbStatement = span.attributes[SEMATTRS_DB_STATEMENT];\n const dbOperation = span.attributes[SEMATTRS_DB_OPERATION];\n if (dbStatement) {\n dependencyData.Data = String(dbStatement);\n } else if (dbOperation) {\n dependencyData.Data = String(dbOperation);\n }\n const target = getDependencyTarget(span.attributes);\n const dbName = span.attributes[SEMATTRS_DB_NAME];\n if (target) {\n dependencyData.Target = dbName ? `${target}|${dbName}` : `${target}`;\n } else {\n dependencyData.Target = dbName ? `${dbName}` : `${dbSystem}`;\n }\n }\n\n // grpc Dependency\n else if (rpcSystem) {\n if (rpcSystem === DependencyTypes.Wcf) {\n dependencyData.Type = DependencyTypes.Wcf;\n } else {\n dependencyData.Type = DependencyTypes.Grpc;\n }\n const grpcStatusCode = span.attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n if (grpcStatusCode) {\n dependencyData.ResultCode = Number(grpcStatusCode);\n }\n const target = getDependencyTarget(span.attributes);\n if (target) {\n dependencyData.Target = `${target}`;\n } else if (rpcSystem) {\n dependencyData.Target = String(rpcSystem);\n }\n }\n return dependencyData;\n}\n\nexport function getLogData(log: SdkLogRecord): ExceptionData | TraceData {\n const customDims = createCustomDimsFromAttributes(log.attributes);\n if (isExceptionTelemetry(log)) {\n return {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n Message: String(log.attributes[SEMATTRS_EXCEPTION_MESSAGE]),\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n StackTrace: String(log.attributes[SEMATTRS_EXCEPTION_STACKTRACE]),\n CustomDimensions: customDims,\n };\n } else {\n return {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n Message: String(log.body),\n CustomDimensions: customDims,\n };\n }\n}\n\nexport function getLogDocument(data: TelemetryData, exceptionType?: string): Trace | Exception {\n if (isExceptionData(data) && exceptionType) {\n return {\n documentType: \"Exception\",\n exceptionMessage: data.Message,\n exceptionType: exceptionType,\n properties: mapToKeyValuePairList(data.CustomDimensions),\n };\n } else {\n // trace\n return {\n documentType: \"Trace\",\n message: (data as TraceData).Message,\n properties: mapToKeyValuePairList(data.CustomDimensions),\n };\n }\n}\n\nexport function isRequestData(data: TelemetryData): data is RequestData {\n return (data as RequestData).Url !== undefined;\n}\n\nexport function isDependencyData(data: TelemetryData): data is DependencyData {\n return (data as DependencyData).Target !== undefined;\n}\n\nexport function isTraceData(data: TelemetryData): data is TraceData {\n return (data as TraceData).Message !== undefined && (data as any).StackTrace === undefined;\n}\n\nexport function isExceptionData(data: TelemetryData): data is ExceptionData {\n return (data as ExceptionData).StackTrace !== undefined;\n}\n\nexport function getSpanDocument(telemetryData: TelemetryData): Request | RemoteDependency {\n let document: Request | RemoteDependency = {\n documentType: \"Request\",\n };\n\n if (isRequestData(telemetryData)) {\n document = {\n documentType: \"Request\",\n name: telemetryData.Name,\n url: telemetryData.Url,\n responseCode: String(telemetryData.ResponseCode),\n duration: getIso8601Duration(telemetryData.Duration),\n };\n } else if (isDependencyData(telemetryData)) {\n document = {\n documentType: \"RemoteDependency\",\n name: telemetryData.Name,\n commandName: telemetryData.Data,\n resultCode: String(telemetryData.ResultCode),\n duration: getIso8601Duration(telemetryData.Duration),\n };\n }\n\n document.properties = mapToKeyValuePairList(telemetryData.CustomDimensions);\n return document;\n}\n\nfunction createCustomDimsFromAttributes(\n attributes?: Attributes | LogAttributes,\n): Map<string, string> {\n const customDims = new Map<string, string>();\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n if (!(\n key.startsWith(\"_MS.\") ||\n legacySemanticValues.includes(key) ||\n httpSemanticValues.includes(key as any)\n )) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n customDims.set(key, String(attributes[key]));\n }\n }\n }\n return customDims;\n}\n\nfunction mapToKeyValuePairList(map: Map<string, string>): KeyValuePairStringString[] {\n const list: KeyValuePairStringString[] = [];\n map.forEach((value, key) => {\n list.push({ key, value });\n });\n return list;\n}\n\nfunction getUrl(attributes: Attributes): string {\n if (!attributes) {\n return \"\";\n }\n const httpMethod = getHttpMethod(attributes);\n if (httpMethod) {\n const httpUrl = getHttpUrl(attributes);\n if (httpUrl) {\n return String(httpUrl);\n } else {\n const httpScheme = getHttpScheme(attributes);\n const httpTarget = getHttpTarget(attributes);\n if (httpScheme && httpTarget) {\n const httpHost = getHttpHost(attributes);\n if (httpHost) {\n return `${httpScheme}://${httpHost}${httpTarget}`;\n } else {\n const netPeerPort = getNetPeerPort(attributes);\n if (netPeerPort) {\n const netPeerName = getNetPeerName(attributes);\n if (netPeerName) {\n return `${httpScheme}://${netPeerName}:${netPeerPort}${httpTarget}`;\n } else {\n const netPeerIp = getPeerIp(attributes);\n if (netPeerIp) {\n return `${httpScheme}://${netPeerIp}:${netPeerPort}${httpTarget}`;\n }\n }\n }\n }\n }\n }\n }\n return \"\";\n}\n\n/**\n * UTC time the request was made. Expressed as the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight on January 1, 0001. This is used for clock skew calculations, so the value can never be stale (cached).\n *\n * @example\n * 8/5/2020 10:15:00 PM UTC =\\> 637322625000000000\n * 8/5/2020 10:15:01 PM UTC =\\> 637322625010000000\n */\nexport function getTransmissionTime(): number {\n return (Date.now() + 62135596800000) * 10000;\n}\n\nexport function getMsFromFilterTimestampString(timestamp: string): number {\n // The service side will return a timestamp in the following format:\n // [days].[hours]:[minutes]:[seconds]\n // the seconds may be a whole number or something like 7.89. 7.89 seconds translates to 7890 ms.\n // writing this method because date.getmilliseconds() returns incorrect result on large timestamps.\n // examples: \"14.6:56:7.89\" = 1234567890 ms, \"0.0:0:0.2\" = 200 ms\n const parts = timestamp.split(\":\");\n if (parts.length !== 3) {\n return NaN;\n }\n const seconds = parseFloat(parts[2]);\n const minutes = parseFloat(parts[1]);\n const firstPart = parts[0].split(\".\");\n if (firstPart.length !== 2) {\n return NaN;\n }\n const hours = parseFloat(firstPart[1]);\n const days = parseFloat(firstPart[0]);\n\n if (isNaN(days) || isNaN(hours) || isNaN(minutes) || isNaN(seconds)) {\n return NaN;\n }\n\n return seconds * 1000 + minutes * 60000 + hours * 3600000 + days * 86400000;\n}\n\nexport function getPeerIp(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_NETWORK_PEER_ADDRESS] || attributes[SEMATTRS_NET_PEER_IP]);\n }\n return;\n}\n\nexport function getUserAgent(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_USER_AGENT_ORIGINAL] || attributes[SEMATTRS_HTTP_USER_AGENT]);\n }\n return;\n}\n\nexport function getHttpUrl(attributes: Attributes): string {\n // Stable sem conv only supports populating url from `url.full`\n if (attributes) {\n return String(attributes[ATTR_URL_FULL] || attributes[SEMATTRS_HTTP_URL] || \"\");\n }\n return \"\";\n}\n\nexport function getHttpMethod(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_HTTP_REQUEST_METHOD] || attributes[SEMATTRS_HTTP_METHOD]);\n }\n return;\n}\n\nexport function getHttpStatusCode(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(\n attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] || attributes[SEMATTRS_HTTP_STATUS_CODE],\n );\n }\n return;\n}\n\nexport function getHttpScheme(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_URL_SCHEME] || attributes[SEMATTRS_HTTP_SCHEME]);\n }\n return;\n}\n\nexport function getHttpTarget(attributes: Attributes): string {\n if (attributes) {\n if (attributes[ATTR_URL_PATH]) {\n return String(attributes[ATTR_URL_PATH]);\n }\n if (attributes[ATTR_URL_QUERY]) {\n return String(attributes[ATTR_URL_QUERY]);\n }\n return String(attributes[SEMATTRS_HTTP_TARGET] || \"\");\n }\n return \"\";\n}\n\nexport function getHttpHost(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_SERVER_ADDRESS] || attributes[SEMATTRS_HTTP_HOST]);\n }\n return;\n}\n\nexport function getNetPeerName(attributes: Attributes): string {\n if (attributes) {\n return String(attributes[ATTR_CLIENT_ADDRESS] || attributes[SEMATTRS_NET_PEER_NAME] || \"\");\n }\n return \"\";\n}\n\nexport function getNetHostPort(attributes: Attributes): string {\n if (attributes) {\n return String(attributes[ATTR_SERVER_PORT] || attributes[SEMATTRS_NET_HOST_PORT] || \"\");\n }\n return \"\";\n}\n\nexport function getNetPeerPort(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(\n attributes[ATTR_CLIENT_PORT] ||\n attributes[ATTR_SERVER_PORT] ||\n attributes[SEMATTRS_NET_PEER_PORT],\n );\n }\n return;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"standardMetrics.js","sourceRoot":"","sources":["../../../src/metrics/standardMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n MeterProviderOptions,\n PeriodicExportingMetricReaderOptions,\n} from \"@opentelemetry/sdk-metrics\";\nimport { MeterProvider, PeriodicExportingMetricReader } from \"@opentelemetry/sdk-metrics\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport type { InternalConfig } from \"../shared/config.js\";\nimport { AzureMonitorMetricExporter } from \"@azure/monitor-opentelemetry-exporter\";\nimport type { Counter, Histogram, Meter } from \"@opentelemetry/api\";\nimport { SpanKind, ValueType } from \"@opentelemetry/api\";\nimport type { ReadableSpan, Span, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport {\n getDependencyDimensions,\n getExceptionDimensions,\n getRequestDimensions,\n getTraceDimensions,\n isExceptionTelemetry,\n isSyntheticLoad,\n isTraceTelemetry,\n} from \"./utils.js\";\nimport { hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport { StandardMetricIds } from \"./types.js\";\n\n/**\n * Azure Monitor Standard Metrics\n * @internal\n */\nexport class StandardMetrics {\n private _config: InternalConfig;\n private _collectionInterval = 60000; // 60 seconds\n private _meterProvider: MeterProvider;\n private _azureExporter: AzureMonitorMetricExporter;\n private _metricReader: PeriodicExportingMetricReader;\n private _meter: Meter;\n private _incomingRequestDurationHistogram: Histogram;\n private _outgoingRequestDurationHistogram: Histogram;\n private _exceptionsCounter: Counter;\n private _tracesCounter: Counter;\n\n /**\n * Initializes a new instance of the StandardMetrics class.\n * @param config - Distro configuration.\n * @param options - Standard Metrics options.\n */\n constructor(config: InternalConfig, options?: { collectionInterval: number }) {\n this._config = config;\n this._azureExporter = new AzureMonitorMetricExporter(this._config.azureMonitorExporterOptions);\n const metricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this._azureExporter as any,\n exportIntervalMillis: options?.collectionInterval || this._collectionInterval,\n };\n this._metricReader = new PeriodicExportingMetricReader(metricReaderOptions);\n const meterProviderConfig: MeterProviderOptions = {\n resource: this._config.resource,\n readers: [this._metricReader],\n };\n this._meterProvider = new MeterProvider(meterProviderConfig);\n this._meter = this._meterProvider.getMeter(\"AzureMonitorStandardMetricsMeter\");\n this._incomingRequestDurationHistogram = this._meter.createHistogram(\n StandardMetricIds.REQUEST_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this._outgoingRequestDurationHistogram = this._meter.createHistogram(\n StandardMetricIds.DEPENDENCIES_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this._exceptionsCounter = this._meter.createCounter(StandardMetricIds.EXCEPTIONS_COUNT, {\n valueType: ValueType.INT,\n });\n this._tracesCounter = this._meter.createCounter(StandardMetricIds.TRACES_COUNT, {\n valueType: ValueType.INT,\n });\n }\n\n /**\n * Shutdown Meter Provider it will return no-op Meters after being called.\n */\n public shutdown(): void {\n this._meterProvider.shutdown();\n }\n\n /**\n * Force flush Meter Provider.\n */\n public async flush(): Promise<void> {\n await this._meterProvider.forceFlush();\n }\n\n /**\n *Get OpenTelemetry MeterProvider\n */\n public getMeterProvider(): MeterProvider {\n return this._meterProvider;\n }\n\n /**\n * Add extra attributes to Span so Ingestion doesn't aggregate the data again\n * @internal\n */\n public markSpanAsProcessed(span: Span): void {\n if (span.kind === SpanKind.CLIENT) {\n span.setAttributes({\n \"_MS.ProcessedByMetricExtractors\": \"(Name:'Dependencies', Ver:'1.1')\",\n });\n } else if (span.kind === SpanKind.SERVER) {\n span.setAttributes({\n \"_MS.ProcessedByMetricExtractors\": \"(Name:'Requests', Ver:'1.1')\",\n });\n }\n }\n\n /**\n * Record Span metrics\n * @internal\n */\n public recordSpan(span: ReadableSpan): void {\n const durationMs = hrTimeToMilliseconds(span.duration);\n if (span.kind === SpanKind.SERVER) {\n this._incomingRequestDurationHistogram.record(durationMs, getRequestDimensions(span));\n } else {\n this._outgoingRequestDurationHistogram.record(durationMs, getDependencyDimensions(span));\n }\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n event.attributes = event.attributes || {};\n if (event.name === \"exception\") {\n event.attributes[\"_MS.ProcessedByMetricExtractors\"] = \"(Name:'Exceptions', Ver:'1.1')\";\n this._exceptionsCounter.add(1, getExceptionDimensions(span.resource));\n } else {\n event.attributes[\"_MS.ProcessedByMetricExtractors\"] = \"(Name:'Traces', Ver:'1.1')\";\n this._tracesCounter.add(1, getTraceDimensions(span.resource));\n }\n });\n }\n }\n\n /**\n * Record LogRecord metrics, add attribute so data is not aggregated again in ingestion\n * @internal\n */\n public recordLog(logRecord: SdkLogRecord): void {\n if (isSyntheticLoad(logRecord)) {\n logRecord.setAttribute(\"operation/synthetic\", \"True\");\n }\n if (isExceptionTelemetry(logRecord)) {\n logRecord.setAttribute(\"_MS.ProcessedByMetricExtractors\", \"(Name:'Exceptions', Ver:'1.1')\");\n this._exceptionsCounter.add(1, getExceptionDimensions(logRecord.resource));\n } else if (isTraceTelemetry(logRecord)) {\n logRecord.setAttribute(\"_MS.ProcessedByMetricExtractors\", \"(Name:'Traces', Ver:'1.1')\");\n this._tracesCounter.add(1, getTraceDimensions(logRecord.resource));\n }\n }\n}\n"]}
1
+ {"version":3,"file":"standardMetrics.js","sourceRoot":"","sources":["../../../src/metrics/standardMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n MeterProviderOptions,\n PeriodicExportingMetricReaderOptions,\n} from \"@opentelemetry/sdk-metrics\";\nimport { MeterProvider, PeriodicExportingMetricReader } from \"@opentelemetry/sdk-metrics\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport type { InternalConfig } from \"../shared/config.js\";\nimport { AzureMonitorMetricExporter } from \"@azure/monitor-opentelemetry-exporter\";\nimport type { Counter, Histogram, Meter } from \"@opentelemetry/api\";\nimport { SpanKind, ValueType } from \"@opentelemetry/api\";\nimport type { ReadableSpan, Span, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport {\n getDependencyDimensions,\n getExceptionDimensions,\n getRequestDimensions,\n getTraceDimensions,\n isExceptionTelemetry,\n isSyntheticLoad,\n isTraceTelemetry,\n} from \"./utils.js\";\nimport { hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport { StandardMetricIds } from \"./types.js\";\n\n/**\n * Azure Monitor Standard Metrics\n * @internal\n */\nexport class StandardMetrics {\n private _config: InternalConfig;\n private _collectionInterval = 60000; // 60 seconds\n private _meterProvider: MeterProvider;\n private _azureExporter: AzureMonitorMetricExporter;\n private _metricReader: PeriodicExportingMetricReader;\n private _meter: Meter;\n private _incomingRequestDurationHistogram: Histogram;\n private _outgoingRequestDurationHistogram: Histogram;\n private _exceptionsCounter: Counter;\n private _tracesCounter: Counter;\n\n /**\n * Initializes a new instance of the StandardMetrics class.\n * @param config - Distro configuration.\n * @param options - Standard Metrics options.\n */\n constructor(config: InternalConfig, options?: { collectionInterval: number }) {\n this._config = config;\n this._azureExporter = new AzureMonitorMetricExporter(this._config.azureMonitorExporterOptions);\n const metricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this._azureExporter,\n exportIntervalMillis: options?.collectionInterval || this._collectionInterval,\n };\n this._metricReader = new PeriodicExportingMetricReader(metricReaderOptions);\n const meterProviderConfig: MeterProviderOptions = {\n resource: this._config.resource,\n readers: [this._metricReader],\n };\n this._meterProvider = new MeterProvider(meterProviderConfig);\n this._meter = this._meterProvider.getMeter(\"AzureMonitorStandardMetricsMeter\");\n this._incomingRequestDurationHistogram = this._meter.createHistogram(\n StandardMetricIds.REQUEST_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this._outgoingRequestDurationHistogram = this._meter.createHistogram(\n StandardMetricIds.DEPENDENCIES_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this._exceptionsCounter = this._meter.createCounter(StandardMetricIds.EXCEPTIONS_COUNT, {\n valueType: ValueType.INT,\n });\n this._tracesCounter = this._meter.createCounter(StandardMetricIds.TRACES_COUNT, {\n valueType: ValueType.INT,\n });\n }\n\n /**\n * Shutdown Meter Provider it will return no-op Meters after being called.\n */\n public shutdown(): void {\n this._meterProvider.shutdown();\n }\n\n /**\n * Force flush Meter Provider.\n */\n public async flush(): Promise<void> {\n await this._meterProvider.forceFlush();\n }\n\n /**\n *Get OpenTelemetry MeterProvider\n */\n public getMeterProvider(): MeterProvider {\n return this._meterProvider;\n }\n\n /**\n * Add extra attributes to Span so Ingestion doesn't aggregate the data again\n * @internal\n */\n public markSpanAsProcessed(span: Span): void {\n if (span.kind === SpanKind.CLIENT) {\n span.setAttributes({\n \"_MS.ProcessedByMetricExtractors\": \"(Name:'Dependencies', Ver:'1.1')\",\n });\n } else if (span.kind === SpanKind.SERVER) {\n span.setAttributes({\n \"_MS.ProcessedByMetricExtractors\": \"(Name:'Requests', Ver:'1.1')\",\n });\n }\n }\n\n /**\n * Record Span metrics\n * @internal\n */\n public recordSpan(span: ReadableSpan): void {\n const durationMs = hrTimeToMilliseconds(span.duration);\n if (span.kind === SpanKind.SERVER) {\n this._incomingRequestDurationHistogram.record(durationMs, getRequestDimensions(span));\n } else {\n this._outgoingRequestDurationHistogram.record(durationMs, getDependencyDimensions(span));\n }\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n event.attributes = event.attributes || {};\n if (event.name === \"exception\") {\n event.attributes[\"_MS.ProcessedByMetricExtractors\"] = \"(Name:'Exceptions', Ver:'1.1')\";\n this._exceptionsCounter.add(1, getExceptionDimensions(span.resource));\n } else {\n event.attributes[\"_MS.ProcessedByMetricExtractors\"] = \"(Name:'Traces', Ver:'1.1')\";\n this._tracesCounter.add(1, getTraceDimensions(span.resource));\n }\n });\n }\n }\n\n /**\n * Record LogRecord metrics, add attribute so data is not aggregated again in ingestion\n * @internal\n */\n public recordLog(logRecord: SdkLogRecord): void {\n if (isSyntheticLoad(logRecord)) {\n logRecord.setAttribute(\"operation/synthetic\", \"True\");\n }\n if (isExceptionTelemetry(logRecord)) {\n logRecord.setAttribute(\"_MS.ProcessedByMetricExtractors\", \"(Name:'Exceptions', Ver:'1.1')\");\n this._exceptionsCounter.add(1, getExceptionDimensions(logRecord.resource));\n } else if (isTraceTelemetry(logRecord)) {\n logRecord.setAttribute(\"_MS.ProcessedByMetricExtractors\", \"(Name:'Traces', Ver:'1.1')\");\n this._tracesCounter.add(1, getTraceDimensions(logRecord.resource));\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA2B,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAOlF,OAAO,KAAK,EACV,uBAAuB,EACvB,gCAAgC,EAChC,sBAAsB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAWzF;;GAEG;AACH,qBAAa,cAAe,YAAW,gCAAgC;IACrE,mFAAmF;IAC5E,aAAa,EAAE,MAAM,CAAC;IAC7B,wDAAwD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IAChC,2CAA2C;IACpC,2BAA2B,EAAE,2BAA2B,CAAC;IAChE;;OAEG;IACI,sBAAsB,EAAE,sBAAsB,CAAC;IACtD,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sCAAsC;IACtC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wDAAwD;IACxD,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,yCAAyC;IACzC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,6CAA6C;IACtC,0BAA0B,EAAE,MAAM,CAAC;IAC1C,8CAA8C;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,SAAS,CAA6B;IAE9C,IAAW,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAErC;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IAEM,uBAAuB,EAAE,uBAAuB,CAAC;IAExD;;OAEG;gBACS,OAAO,CAAC,EAAE,gCAAgC;IAmEtD,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,mBAAmB;IAoB3B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwB3B,6BAA6B,CAAC,OAAO,CAAC,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAmBvF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA2B,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAOlF,OAAO,KAAK,EACV,uBAAuB,EACvB,gCAAgC,EAChC,sBAAsB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAWzF;;GAEG;AACH,qBAAa,cAAe,YAAW,gCAAgC;IACrE,mFAAmF;IAC5E,aAAa,EAAE,MAAM,CAAC;IAC7B,wDAAwD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IAChC,2CAA2C;IACpC,2BAA2B,EAAE,2BAA2B,CAAC;IAChE;;OAEG;IACI,sBAAsB,EAAE,sBAAsB,CAAC;IACtD,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sCAAsC;IACtC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wDAAwD;IACxD,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,yCAAyC;IACzC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,6CAA6C;IACtC,0BAA0B,EAAE,MAAM,CAAC;IAC1C,8CAA8C;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,SAAS,CAA6B;IAE9C,IAAW,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAErC;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IAEM,uBAAuB,EAAE,uBAAuB,CAAC;IAExD;;OAEG;gBACS,OAAO,CAAC,EAAE,gCAAgC;IAoEtD,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,mBAAmB;IAoB3B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwB3B,6BAA6B,CAAC,OAAO,CAAC,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAmBvF"}
@@ -63,6 +63,7 @@ export class InternalConfig {
63
63
  postgreSql: { enabled: true },
64
64
  redis: { enabled: true },
65
65
  redis4: { enabled: true },
66
+ console: { enabled: false },
66
67
  };
67
68
  this._setDefaultResource();
68
69
  this.browserSdkLoaderOptions = {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ResourceDetectionConfig, Resource } from \"@opentelemetry/resources\";\nimport {\n defaultResource,\n detectResources,\n emptyResource,\n envDetector,\n} from \"@opentelemetry/resources\";\nimport type {\n BrowserSdkLoaderOptions,\n AzureMonitorOpenTelemetryOptions,\n InstrumentationOptions,\n} from \"../types.js\";\nimport type { Sampler } from \"@opentelemetry/sdk-trace-base\";\nimport type { AzureMonitorExporterOptions } from \"@azure/monitor-opentelemetry-exporter\";\nimport { EnvConfig } from \"./envConfig.js\";\nimport { JsonConfig } from \"./jsonConfig.js\";\nimport { Logger } from \"./logging/index.js\";\nimport {\n azureAksDetector,\n azureAppServiceDetector,\n azureFunctionsDetector,\n azureVmDetector,\n} from \"@opentelemetry/resource-detector-azure\";\n\n/**\n * Azure Monitor OpenTelemetry Client Configuration\n */\nexport class InternalConfig implements AzureMonitorOpenTelemetryOptions {\n /** The rate of telemetry items tracked that should be transmitted (Default 1.0) */\n public samplingRatio: number;\n /** The maximum number of spans to sample per second. */\n public tracesPerSecond?: number;\n /** Azure Monitor Exporter Configuration */\n public azureMonitorExporterOptions: AzureMonitorExporterOptions;\n /**\n * OpenTelemetry Instrumentations configuration included as part of Azure Monitor (azureSdk, http, mongoDb, mySql, postgreSql, redis, redis4)\n */\n public instrumentationOptions: InstrumentationOptions;\n /** Enable Live Metrics feature */\n enableLiveMetrics?: boolean;\n /** Enable Standard Metrics feature */\n enableStandardMetrics?: boolean;\n /** Enable log sampling based on trace (Default true) */\n enableTraceBasedSamplingForLogs?: boolean;\n /** Enable Performance Counter feature */\n enablePerformanceCounters?: boolean;\n /** Metric export interval in milliseconds */\n public metricExportIntervalMillis: number;\n /** Custom OpenTelemetry sampler (env-only) */\n public sampler?: Sampler;\n\n private _resource: Resource = emptyResource();\n\n public set resource(resource: Resource) {\n this._resource = this._resource.merge(resource);\n }\n\n /**\n *Get OpenTelemetry Resource\n */\n public get resource(): Resource {\n return this._resource;\n }\n\n public browserSdkLoaderOptions: BrowserSdkLoaderOptions;\n\n /**\n * Initializes a new instance of the AzureMonitorOpenTelemetryOptions class.\n */\n constructor(options?: AzureMonitorOpenTelemetryOptions) {\n // Default values\n this.azureMonitorExporterOptions = {};\n this.samplingRatio = 1;\n this.tracesPerSecond = 5;\n this.enableLiveMetrics = true;\n this.enableStandardMetrics = true;\n this.enableTraceBasedSamplingForLogs = false;\n this.enablePerformanceCounters = true;\n this.metricExportIntervalMillis = this.calculateMetricExportInterval();\n this.instrumentationOptions = {\n http: { enabled: true },\n azureSdk: { enabled: true },\n mongoDb: { enabled: true },\n mySql: { enabled: true },\n postgreSql: { enabled: true },\n redis: { enabled: true },\n redis4: { enabled: true },\n };\n this._setDefaultResource();\n this.browserSdkLoaderOptions = {\n enabled: false,\n connectionString: \"\",\n };\n\n if (options) {\n // Merge default with provided options\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n options.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n options.instrumentationOptions,\n );\n this.resource = Object.assign(this.resource, options.resource);\n this.samplingRatio =\n options.samplingRatio !== undefined ? options.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n options.tracesPerSecond !== undefined ? options.tracesPerSecond : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n options.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n options.enableLiveMetrics !== undefined\n ? options.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n options.enableStandardMetrics !== undefined\n ? options.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n options.enableTraceBasedSamplingForLogs !== undefined\n ? options.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.enablePerformanceCounters =\n options.enablePerformanceCounters !== undefined\n ? options.enablePerformanceCounters\n : this.enablePerformanceCounters;\n }\n // JSON configuration will take precedence over options provided\n this._mergeJsonConfig();\n // ENV configuration will take precedence over other configurations\n this._mergeEnvConfig();\n }\n\n private _mergeEnvConfig(): void {\n const envConfig = EnvConfig.getInstance();\n this.samplingRatio =\n envConfig.samplingRatio !== undefined ? envConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n envConfig.tracesPerSecond !== undefined ? envConfig.tracesPerSecond : this.tracesPerSecond;\n this.sampler = envConfig.sampler ?? this.sampler;\n }\n\n private _mergeJsonConfig(): void {\n try {\n const jsonConfig = JsonConfig.getInstance();\n this.samplingRatio =\n jsonConfig.samplingRatio !== undefined ? jsonConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n jsonConfig.tracesPerSecond !== undefined\n ? jsonConfig.tracesPerSecond\n : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n jsonConfig.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n jsonConfig.enableLiveMetrics !== undefined\n ? jsonConfig.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n jsonConfig.enableStandardMetrics !== undefined\n ? jsonConfig.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n jsonConfig.enableTraceBasedSamplingForLogs !== undefined\n ? jsonConfig.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n jsonConfig.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n jsonConfig.instrumentationOptions,\n );\n } catch (error) {\n Logger.getInstance().error(\"Failed to load JSON config file values.\", error);\n }\n }\n\n private _setDefaultResource(): void {\n let resource = defaultResource();\n // Load resource attributes from env\n const detectResourceConfig: ResourceDetectionConfig = {\n detectors: [envDetector],\n };\n const envResource = detectResources(detectResourceConfig);\n resource = resource.merge(envResource);\n\n // Load resource attributes from Azure\n const azureResource: Resource = detectResources({\n detectors: [azureAksDetector, azureAppServiceDetector, azureFunctionsDetector],\n });\n this._resource = resource.merge(azureResource);\n\n // Handle VM resource detection asynchronously to avoid warnings\n // about accessing resource attributes before async attributes are settled\n this._initializeVmResourceAsync();\n }\n\n /**\n * Initialize VM resource detection asynchronously to avoid warnings\n * about accessing resource attributes before async attributes settle\n */\n private _initializeVmResourceAsync(): void {\n const vmResource = detectResources({\n detectors: [azureVmDetector],\n });\n\n // Don't wait for VM resource detection to complete during initialization\n // This prevents warnings about accessing resource attributes before async attributes are settled\n if (vmResource.asyncAttributesPending) {\n void vmResource\n .waitForAsyncAttributes?.()\n .then(() => {\n this._resource = this._resource.merge(vmResource);\n return;\n })\n .catch(() => {\n // Silently ignore VM detection errors to avoid unnecessary warnings\n // VM detection is optional and failures shouldn't impact core functionality\n });\n } else {\n // If VM detection completed synchronously, merge immediately\n this._resource = this._resource.merge(vmResource);\n }\n }\n\n public calculateMetricExportInterval(options?: { collectionInterval: number }): number {\n const defaultInterval = 60000; // 60 seconds\n\n // Prioritize OTEL_METRIC_EXPORT_INTERVAL env var\n if (process.env.OTEL_METRIC_EXPORT_INTERVAL) {\n const envInterval = parseInt(process.env.OTEL_METRIC_EXPORT_INTERVAL.trim(), 10);\n if (!isNaN(envInterval) && envInterval > 0) {\n return envInterval;\n }\n }\n\n // Then use options if provided\n if (options?.collectionInterval) {\n return options.collectionInterval;\n }\n\n // Default fallback\n return defaultInterval;\n }\n}\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ResourceDetectionConfig, Resource } from \"@opentelemetry/resources\";\nimport {\n defaultResource,\n detectResources,\n emptyResource,\n envDetector,\n} from \"@opentelemetry/resources\";\nimport type {\n BrowserSdkLoaderOptions,\n AzureMonitorOpenTelemetryOptions,\n InstrumentationOptions,\n} from \"../types.js\";\nimport type { Sampler } from \"@opentelemetry/sdk-trace-base\";\nimport type { AzureMonitorExporterOptions } from \"@azure/monitor-opentelemetry-exporter\";\nimport { EnvConfig } from \"./envConfig.js\";\nimport { JsonConfig } from \"./jsonConfig.js\";\nimport { Logger } from \"./logging/index.js\";\nimport {\n azureAksDetector,\n azureAppServiceDetector,\n azureFunctionsDetector,\n azureVmDetector,\n} from \"@opentelemetry/resource-detector-azure\";\n\n/**\n * Azure Monitor OpenTelemetry Client Configuration\n */\nexport class InternalConfig implements AzureMonitorOpenTelemetryOptions {\n /** The rate of telemetry items tracked that should be transmitted (Default 1.0) */\n public samplingRatio: number;\n /** The maximum number of spans to sample per second. */\n public tracesPerSecond?: number;\n /** Azure Monitor Exporter Configuration */\n public azureMonitorExporterOptions: AzureMonitorExporterOptions;\n /**\n * OpenTelemetry Instrumentations configuration included as part of Azure Monitor (azureSdk, http, mongoDb, mySql, postgreSql, redis, redis4)\n */\n public instrumentationOptions: InstrumentationOptions;\n /** Enable Live Metrics feature */\n enableLiveMetrics?: boolean;\n /** Enable Standard Metrics feature */\n enableStandardMetrics?: boolean;\n /** Enable log sampling based on trace (Default true) */\n enableTraceBasedSamplingForLogs?: boolean;\n /** Enable Performance Counter feature */\n enablePerformanceCounters?: boolean;\n /** Metric export interval in milliseconds */\n public metricExportIntervalMillis: number;\n /** Custom OpenTelemetry sampler (env-only) */\n public sampler?: Sampler;\n\n private _resource: Resource = emptyResource();\n\n public set resource(resource: Resource) {\n this._resource = this._resource.merge(resource);\n }\n\n /**\n *Get OpenTelemetry Resource\n */\n public get resource(): Resource {\n return this._resource;\n }\n\n public browserSdkLoaderOptions: BrowserSdkLoaderOptions;\n\n /**\n * Initializes a new instance of the AzureMonitorOpenTelemetryOptions class.\n */\n constructor(options?: AzureMonitorOpenTelemetryOptions) {\n // Default values\n this.azureMonitorExporterOptions = {};\n this.samplingRatio = 1;\n this.tracesPerSecond = 5;\n this.enableLiveMetrics = true;\n this.enableStandardMetrics = true;\n this.enableTraceBasedSamplingForLogs = false;\n this.enablePerformanceCounters = true;\n this.metricExportIntervalMillis = this.calculateMetricExportInterval();\n this.instrumentationOptions = {\n http: { enabled: true },\n azureSdk: { enabled: true },\n mongoDb: { enabled: true },\n mySql: { enabled: true },\n postgreSql: { enabled: true },\n redis: { enabled: true },\n redis4: { enabled: true },\n console: { enabled: false },\n };\n this._setDefaultResource();\n this.browserSdkLoaderOptions = {\n enabled: false,\n connectionString: \"\",\n };\n\n if (options) {\n // Merge default with provided options\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n options.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n options.instrumentationOptions,\n );\n this.resource = Object.assign(this.resource, options.resource);\n this.samplingRatio =\n options.samplingRatio !== undefined ? options.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n options.tracesPerSecond !== undefined ? options.tracesPerSecond : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n options.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n options.enableLiveMetrics !== undefined\n ? options.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n options.enableStandardMetrics !== undefined\n ? options.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n options.enableTraceBasedSamplingForLogs !== undefined\n ? options.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.enablePerformanceCounters =\n options.enablePerformanceCounters !== undefined\n ? options.enablePerformanceCounters\n : this.enablePerformanceCounters;\n }\n // JSON configuration will take precedence over options provided\n this._mergeJsonConfig();\n // ENV configuration will take precedence over other configurations\n this._mergeEnvConfig();\n }\n\n private _mergeEnvConfig(): void {\n const envConfig = EnvConfig.getInstance();\n this.samplingRatio =\n envConfig.samplingRatio !== undefined ? envConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n envConfig.tracesPerSecond !== undefined ? envConfig.tracesPerSecond : this.tracesPerSecond;\n this.sampler = envConfig.sampler ?? this.sampler;\n }\n\n private _mergeJsonConfig(): void {\n try {\n const jsonConfig = JsonConfig.getInstance();\n this.samplingRatio =\n jsonConfig.samplingRatio !== undefined ? jsonConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n jsonConfig.tracesPerSecond !== undefined\n ? jsonConfig.tracesPerSecond\n : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n jsonConfig.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n jsonConfig.enableLiveMetrics !== undefined\n ? jsonConfig.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n jsonConfig.enableStandardMetrics !== undefined\n ? jsonConfig.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n jsonConfig.enableTraceBasedSamplingForLogs !== undefined\n ? jsonConfig.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n jsonConfig.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n jsonConfig.instrumentationOptions,\n );\n } catch (error) {\n Logger.getInstance().error(\"Failed to load JSON config file values.\", error);\n }\n }\n\n private _setDefaultResource(): void {\n let resource = defaultResource();\n // Load resource attributes from env\n const detectResourceConfig: ResourceDetectionConfig = {\n detectors: [envDetector],\n };\n const envResource = detectResources(detectResourceConfig);\n resource = resource.merge(envResource);\n\n // Load resource attributes from Azure\n const azureResource: Resource = detectResources({\n detectors: [azureAksDetector, azureAppServiceDetector, azureFunctionsDetector],\n });\n this._resource = resource.merge(azureResource);\n\n // Handle VM resource detection asynchronously to avoid warnings\n // about accessing resource attributes before async attributes are settled\n this._initializeVmResourceAsync();\n }\n\n /**\n * Initialize VM resource detection asynchronously to avoid warnings\n * about accessing resource attributes before async attributes settle\n */\n private _initializeVmResourceAsync(): void {\n const vmResource = detectResources({\n detectors: [azureVmDetector],\n });\n\n // Don't wait for VM resource detection to complete during initialization\n // This prevents warnings about accessing resource attributes before async attributes are settled\n if (vmResource.asyncAttributesPending) {\n void vmResource\n .waitForAsyncAttributes?.()\n .then(() => {\n this._resource = this._resource.merge(vmResource);\n return;\n })\n .catch(() => {\n // Silently ignore VM detection errors to avoid unnecessary warnings\n // VM detection is optional and failures shouldn't impact core functionality\n });\n } else {\n // If VM detection completed synchronously, merge immediately\n this._resource = this._resource.merge(vmResource);\n }\n }\n\n public calculateMetricExportInterval(options?: { collectionInterval: number }): number {\n const defaultInterval = 60000; // 60 seconds\n\n // Prioritize OTEL_METRIC_EXPORT_INTERVAL env var\n if (process.env.OTEL_METRIC_EXPORT_INTERVAL) {\n const envInterval = parseInt(process.env.OTEL_METRIC_EXPORT_INTERVAL.trim(), 10);\n if (!isNaN(envInterval) && envInterval > 0) {\n return envInterval;\n }\n }\n\n // Then use options if provided\n if (options?.collectionInterval) {\n return options.collectionInterval;\n }\n\n // Default fallback\n return defaultInterval;\n }\n}\n"]}
@@ -19,6 +19,7 @@ export declare class DiagFileConsoleLogger implements DiagLogger {
19
19
  debug(message?: any, ...args: any[]): void;
20
20
  verbose(message?: any, ...args: any[]): void;
21
21
  logMessage(message?: any, ...optionalParams: any[]): Promise<void>;
22
+ private _writeToConsole;
22
23
  /**
23
24
  * Checks if the warning message should be filtered out to avoid showing
24
25
  * non-actionable warnings to customers
@@ -1 +1 @@
1
- {"version":3,"file":"diagFileConsoleLogger.d.ts","sourceRoot":"","sources":["../../../../src/shared/logging/diagFileConsoleLogger.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAYrD,qBAAa,qBAAsB,YAAW,UAAU;IACtD,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAqB;;IAyCrC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAY1C,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYzC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYzC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAY1C,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYtC,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/E;;;OAGG;IACH,OAAO,CAAC,qCAAqC;IA2C7C,OAAO,CAAC,wCAAwC;YAelC,YAAY;YAkCZ,iBAAiB;YAcjB,gBAAgB;CA0B/B"}
1
+ {"version":3,"file":"diagFileConsoleLogger.d.ts","sourceRoot":"","sources":["../../../../src/shared/logging/diagFileConsoleLogger.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAgBrD,qBAAa,qBAAsB,YAAW,UAAU;IACtD,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAqB;;IAyCrC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAY1C,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYzC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYzC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAY1C,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYtC,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/E,OAAO,CAAC,eAAe;IAIvB;;;OAGG;IACH,OAAO,CAAC,qCAAqC;IA2C7C,OAAO,CAAC,wCAAwC;YAelC,YAAY;YAmCZ,iBAAiB;YAajB,gBAAgB;CAyB/B"}
@@ -4,6 +4,9 @@ import fs from "node:fs";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
6
6
  import { accessAsync, appendFileAsync, confirmDirExists, getShallowFileSize, readdirAsync, readFileAsync, writeFileAsync, unlinkAsync, } from "../../utils/index.js";
7
+ // Capture the unpatched sink to prevent recursive diagnostic collection.
8
+ // eslint-disable-next-line no-console
9
+ const originalConsoleLog = console.log.bind(console);
7
10
  export class DiagFileConsoleLogger {
8
11
  _TAG = "DiagFileConsoleLogger:";
9
12
  _cleanupTimeOut = 60 * 30 * 1000; // 30 minutes;
@@ -117,15 +120,17 @@ export class DiagFileConsoleLogger {
117
120
  await this._storeToDisk(args);
118
121
  }
119
122
  if (this._logToConsole) {
120
- // eslint-disable-next-line no-console
121
- console.log(...args);
123
+ this._writeToConsole(...args);
122
124
  }
123
125
  }
124
126
  catch (err) {
125
- // eslint-disable-next-line no-console
126
- console.log(this._TAG, `Failed to log to file: ${err && err.message}`);
127
+ this._writeToConsole(this._TAG, `Failed to log to file: ${err && err.message}`);
127
128
  }
128
129
  }
130
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
131
+ _writeToConsole(...args) {
132
+ originalConsoleLog(...args);
133
+ }
129
134
  /**
130
135
  * Checks if the warning message should be filtered out to avoid showing
131
136
  * non-actionable warnings to customers
@@ -183,8 +188,7 @@ export class DiagFileConsoleLogger {
183
188
  await confirmDirExists(this._tempDir);
184
189
  }
185
190
  catch (err) {
186
- // eslint-disable-next-line no-console
187
- console.log(this._TAG, `Failed to create directory for log file: ${err && err.message}`);
191
+ this._writeToConsole(this._TAG, `Failed to create directory for log file: ${err && err.message}`);
188
192
  return;
189
193
  }
190
194
  try {
@@ -196,8 +200,7 @@ export class DiagFileConsoleLogger {
196
200
  await appendFileAsync(this._fileFullPath, data);
197
201
  }
198
202
  catch (appendError) {
199
- // eslint-disable-next-line no-console
200
- console.log(this._TAG, `Failed to put log into file: ${appendError && appendError.message}`);
203
+ this._writeToConsole(this._TAG, `Failed to put log into file: ${appendError && appendError.message}`);
201
204
  return;
202
205
  }
203
206
  }
@@ -217,8 +220,7 @@ export class DiagFileConsoleLogger {
217
220
  await writeFileAsync(backupPath, buffer);
218
221
  }
219
222
  catch (err) {
220
- // eslint-disable-next-line no-console
221
- console.log("Failed to generate backup log file", err);
223
+ this._writeToConsole(this._TAG, "Failed to generate backup log file", err);
222
224
  }
223
225
  finally {
224
226
  // Store logs
@@ -249,8 +251,7 @@ export class DiagFileConsoleLogger {
249
251
  }
250
252
  }
251
253
  catch (err) {
252
- // eslint-disable-next-line no-console
253
- console.log(this._TAG, `Failed to cleanup log files: ${err && err.message}`);
254
+ this._writeToConsole(this._TAG, `Failed to cleanup log files: ${err && err.message}`);
254
255
  }
255
256
  }
256
257
  }
@@ -1 +1 @@
1
- {"version":3,"file":"diagFileConsoleLogger.js","sourceRoot":"","sources":["../../../../src/shared/logging/diagFileConsoleLogger.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport type { DiagLogger } from \"@opentelemetry/api\";\nimport {\n accessAsync,\n appendFileAsync,\n confirmDirExists,\n getShallowFileSize,\n readdirAsync,\n readFileAsync,\n writeFileAsync,\n unlinkAsync,\n} from \"../../utils/index.js\";\n\nexport class DiagFileConsoleLogger implements DiagLogger {\n private _TAG = \"DiagFileConsoleLogger:\";\n private _cleanupTimeOut = 60 * 30 * 1000; // 30 minutes;\n private _fileCleanupTimer: NodeJS.Timeout | null = null;\n private _tempDir: string;\n private _logFileName: string;\n private _fileFullPath: string;\n private _backUpNameFormat: string;\n private _logToFile = false;\n private _logToConsole = true;\n private _maxHistory: number;\n private _maxSizeBytes: number;\n private _logDestination: string | undefined;\n\n constructor() {\n this._logDestination = process.env.APPLICATIONINSIGHTS_LOG_DESTINATION; // destination can be one of file, console or file+console\n if (this._logDestination === \"file+console\") {\n this._logToFile = true;\n }\n if (this._logDestination === \"file\") {\n this._logToFile = true;\n this._logToConsole = false;\n }\n this._maxSizeBytes = 50000;\n this._maxHistory = 1;\n this._logFileName = \"applicationinsights.log\";\n\n // If custom path not provided use temp folder, /tmp for *nix and USERDIR/AppData/Local/Temp for Windows\n const logFilePath = process.env.APPLICATIONINSIGHTS_LOGDIR;\n if (!logFilePath) {\n this._tempDir = path.join(os.tmpdir(), \"appInsights-node\");\n } else {\n if (path.isAbsolute(logFilePath)) {\n this._tempDir = logFilePath;\n } else {\n this._tempDir = path.join(process.cwd(), logFilePath);\n }\n }\n this._fileFullPath = path.join(this._tempDir, this._logFileName);\n this._backUpNameFormat = `.${this._logFileName}`; // {currentime}.applicationinsights.log\n\n if (this._logToFile) {\n if (!this._fileCleanupTimer) {\n this._fileCleanupTimer = setInterval(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._fileCleanupTask();\n }, this._cleanupTimeOut);\n this._fileCleanupTimer.unref();\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public error(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public warn(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public info(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public debug(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public verbose(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public async logMessage(message?: any, ...optionalParams: any[]): Promise<void> {\n try {\n const args = message ? [message, ...optionalParams] : optionalParams;\n if (this._logToFile) {\n await this._storeToDisk(args);\n }\n if (this._logToConsole) {\n // eslint-disable-next-line no-console\n console.log(...args);\n }\n } catch (err: any) {\n // eslint-disable-next-line no-console\n console.log(this._TAG, `Failed to log to file: ${err && err.message}`);\n }\n }\n\n /**\n * Checks if the warning message should be filtered out to avoid showing\n * non-actionable warnings to customers\n */\n private _shouldFilterResourceAttributeWarning(message?: any, args?: any[]): boolean {\n const messagesToFilter = [\n \"accessing resource attributes before async attributes settled\",\n \"resource attributes being accessed before async attributes finished\",\n \"async attributes settled\",\n \"unsettled resource attribute\",\n \"resource attributes accessed before async detection completed\",\n \"module @azure/core-tracing has been loaded before @azure/opentelemetry-instrumentation-azure-sdk\",\n ];\n\n const stringsToInspect: string[] = [];\n if (typeof message === \"string\") {\n stringsToInspect.push(message.toLowerCase());\n }\n if (args && Array.isArray(args)) {\n for (const arg of args) {\n if (typeof arg === \"string\") {\n stringsToInspect.push(arg.toLowerCase());\n }\n }\n }\n\n for (const text of stringsToInspect) {\n if (messagesToFilter.some((filterText) => text.includes(filterText))) {\n return true;\n }\n }\n\n if (typeof message === \"string\") {\n const messageParts = message.split(\" \");\n if (\n messageParts.length >= 3 &&\n messageParts[0].toLowerCase() === \"accessing\" &&\n messageParts[1].toLowerCase() === \"resource\" &&\n messageParts[2].toLowerCase() === \"attributes\"\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n private _shouldFilterAzureMonitorExporterWarning(message?: any): boolean {\n if (typeof message !== \"string\") {\n return false;\n }\n\n const text = message.toLowerCase();\n if (!text.includes(\"otel_metrics_exporter\")) {\n return false;\n }\n\n const matchesUnsupportedValue = text.includes(\"unsupported otel_metrics_exporter value\");\n\n return matchesUnsupportedValue && text.includes(\"azure_monitor\");\n }\n\n private async _storeToDisk(args: any): Promise<void> {\n const data = `${args}\\r\\n`;\n\n try {\n await confirmDirExists(this._tempDir);\n } catch (err: any) {\n // eslint-disable-next-line no-console\n console.log(this._TAG, `Failed to create directory for log file: ${err && err.message}`);\n return;\n }\n try {\n await accessAsync(this._fileFullPath, fs.constants.F_OK);\n } catch (err: any) {\n // No file create one\n try {\n await appendFileAsync(this._fileFullPath, data);\n } catch (appendError: any) {\n // eslint-disable-next-line no-console\n console.log(\n this._TAG,\n `Failed to put log into file: ${appendError && appendError.message}`,\n );\n return;\n }\n }\n // Check size\n const size = await getShallowFileSize(this._fileFullPath);\n if (size && size > this._maxSizeBytes) {\n await this._createBackupFile(data);\n } else {\n await appendFileAsync(this._fileFullPath, data);\n }\n }\n\n private async _createBackupFile(data: string): Promise<void> {\n try {\n const buffer = await readFileAsync(this._fileFullPath);\n const backupPath = path.join(this._tempDir, `${new Date().getTime()}.${this._logFileName}`);\n await writeFileAsync(backupPath, buffer);\n } catch (err: any) {\n // eslint-disable-next-line no-console\n console.log(\"Failed to generate backup log file\", err);\n } finally {\n // Store logs\n await writeFileAsync(this._fileFullPath, data);\n }\n }\n\n private async _fileCleanupTask(): Promise<void> {\n try {\n let files = await readdirAsync(this._tempDir);\n // Filter only backup files\n files = files.filter((f) => path.basename(f).indexOf(this._backUpNameFormat) > -1);\n // Sort by creation date\n files.sort((a: string, b: string) => {\n // Check expiration\n const aCreationDate: Date = new Date(parseInt(a.split(this._backUpNameFormat)[0]));\n const bCreationDate: Date = new Date(parseInt(b.split(this._backUpNameFormat)[0]));\n if (aCreationDate < bCreationDate) {\n return -1;\n } else {\n return 1;\n }\n });\n const totalFiles = files.length;\n for (let i = 0; i < totalFiles - this._maxHistory; i++) {\n const pathToDelete = path.join(this._tempDir, files[i]);\n await unlinkAsync(pathToDelete);\n }\n } catch (err: any) {\n // eslint-disable-next-line no-console\n console.log(this._TAG, `Failed to cleanup log files: ${err && err.message}`);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"diagFileConsoleLogger.js","sourceRoot":"","sources":["../../../../src/shared/logging/diagFileConsoleLogger.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport type { DiagLogger } from \"@opentelemetry/api\";\nimport {\n accessAsync,\n appendFileAsync,\n confirmDirExists,\n getShallowFileSize,\n readdirAsync,\n readFileAsync,\n writeFileAsync,\n unlinkAsync,\n} from \"../../utils/index.js\";\n\n// Capture the unpatched sink to prevent recursive diagnostic collection.\n// eslint-disable-next-line no-console\nconst originalConsoleLog: (...args: any[]) => void = console.log.bind(console);\n\nexport class DiagFileConsoleLogger implements DiagLogger {\n private _TAG = \"DiagFileConsoleLogger:\";\n private _cleanupTimeOut = 60 * 30 * 1000; // 30 minutes;\n private _fileCleanupTimer: NodeJS.Timeout | null = null;\n private _tempDir: string;\n private _logFileName: string;\n private _fileFullPath: string;\n private _backUpNameFormat: string;\n private _logToFile = false;\n private _logToConsole = true;\n private _maxHistory: number;\n private _maxSizeBytes: number;\n private _logDestination: string | undefined;\n\n constructor() {\n this._logDestination = process.env.APPLICATIONINSIGHTS_LOG_DESTINATION; // destination can be one of file, console or file+console\n if (this._logDestination === \"file+console\") {\n this._logToFile = true;\n }\n if (this._logDestination === \"file\") {\n this._logToFile = true;\n this._logToConsole = false;\n }\n this._maxSizeBytes = 50000;\n this._maxHistory = 1;\n this._logFileName = \"applicationinsights.log\";\n\n // If custom path not provided use temp folder, /tmp for *nix and USERDIR/AppData/Local/Temp for Windows\n const logFilePath = process.env.APPLICATIONINSIGHTS_LOGDIR;\n if (!logFilePath) {\n this._tempDir = path.join(os.tmpdir(), \"appInsights-node\");\n } else {\n if (path.isAbsolute(logFilePath)) {\n this._tempDir = logFilePath;\n } else {\n this._tempDir = path.join(process.cwd(), logFilePath);\n }\n }\n this._fileFullPath = path.join(this._tempDir, this._logFileName);\n this._backUpNameFormat = `.${this._logFileName}`; // {currentime}.applicationinsights.log\n\n if (this._logToFile) {\n if (!this._fileCleanupTimer) {\n this._fileCleanupTimer = setInterval(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._fileCleanupTask();\n }, this._cleanupTimeOut);\n this._fileCleanupTimer.unref();\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public error(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public warn(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public info(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public debug(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public verbose(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public async logMessage(message?: any, ...optionalParams: any[]): Promise<void> {\n try {\n const args = message ? [message, ...optionalParams] : optionalParams;\n if (this._logToFile) {\n await this._storeToDisk(args);\n }\n if (this._logToConsole) {\n this._writeToConsole(...args);\n }\n } catch (err: any) {\n this._writeToConsole(this._TAG, `Failed to log to file: ${err && err.message}`);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n private _writeToConsole(...args: any[]): void {\n originalConsoleLog(...args);\n }\n\n /**\n * Checks if the warning message should be filtered out to avoid showing\n * non-actionable warnings to customers\n */\n private _shouldFilterResourceAttributeWarning(message?: any, args?: any[]): boolean {\n const messagesToFilter = [\n \"accessing resource attributes before async attributes settled\",\n \"resource attributes being accessed before async attributes finished\",\n \"async attributes settled\",\n \"unsettled resource attribute\",\n \"resource attributes accessed before async detection completed\",\n \"module @azure/core-tracing has been loaded before @azure/opentelemetry-instrumentation-azure-sdk\",\n ];\n\n const stringsToInspect: string[] = [];\n if (typeof message === \"string\") {\n stringsToInspect.push(message.toLowerCase());\n }\n if (args && Array.isArray(args)) {\n for (const arg of args) {\n if (typeof arg === \"string\") {\n stringsToInspect.push(arg.toLowerCase());\n }\n }\n }\n\n for (const text of stringsToInspect) {\n if (messagesToFilter.some((filterText) => text.includes(filterText))) {\n return true;\n }\n }\n\n if (typeof message === \"string\") {\n const messageParts = message.split(\" \");\n if (\n messageParts.length >= 3 &&\n messageParts[0].toLowerCase() === \"accessing\" &&\n messageParts[1].toLowerCase() === \"resource\" &&\n messageParts[2].toLowerCase() === \"attributes\"\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n private _shouldFilterAzureMonitorExporterWarning(message?: any): boolean {\n if (typeof message !== \"string\") {\n return false;\n }\n\n const text = message.toLowerCase();\n if (!text.includes(\"otel_metrics_exporter\")) {\n return false;\n }\n\n const matchesUnsupportedValue = text.includes(\"unsupported otel_metrics_exporter value\");\n\n return matchesUnsupportedValue && text.includes(\"azure_monitor\");\n }\n\n private async _storeToDisk(args: any): Promise<void> {\n const data = `${args}\\r\\n`;\n\n try {\n await confirmDirExists(this._tempDir);\n } catch (err: any) {\n this._writeToConsole(\n this._TAG,\n `Failed to create directory for log file: ${err && err.message}`,\n );\n return;\n }\n try {\n await accessAsync(this._fileFullPath, fs.constants.F_OK);\n } catch (err: any) {\n // No file create one\n try {\n await appendFileAsync(this._fileFullPath, data);\n } catch (appendError: any) {\n this._writeToConsole(\n this._TAG,\n `Failed to put log into file: ${appendError && appendError.message}`,\n );\n return;\n }\n }\n // Check size\n const size = await getShallowFileSize(this._fileFullPath);\n if (size && size > this._maxSizeBytes) {\n await this._createBackupFile(data);\n } else {\n await appendFileAsync(this._fileFullPath, data);\n }\n }\n\n private async _createBackupFile(data: string): Promise<void> {\n try {\n const buffer = await readFileAsync(this._fileFullPath);\n const backupPath = path.join(this._tempDir, `${new Date().getTime()}.${this._logFileName}`);\n await writeFileAsync(backupPath, buffer);\n } catch (err: any) {\n this._writeToConsole(this._TAG, \"Failed to generate backup log file\", err);\n } finally {\n // Store logs\n await writeFileAsync(this._fileFullPath, data);\n }\n }\n\n private async _fileCleanupTask(): Promise<void> {\n try {\n let files = await readdirAsync(this._tempDir);\n // Filter only backup files\n files = files.filter((f) => path.basename(f).indexOf(this._backUpNameFormat) > -1);\n // Sort by creation date\n files.sort((a: string, b: string) => {\n // Check expiration\n const aCreationDate: Date = new Date(parseInt(a.split(this._backUpNameFormat)[0]));\n const bCreationDate: Date = new Date(parseInt(b.split(this._backUpNameFormat)[0]));\n if (aCreationDate < bCreationDate) {\n return -1;\n } else {\n return 1;\n }\n });\n const totalFiles = files.length;\n for (let i = 0; i < totalFiles - this._maxHistory; i++) {\n const pathToDelete = path.join(this._tempDir, files[i]);\n await unlinkAsync(pathToDelete);\n }\n } catch (err: any) {\n this._writeToConsole(this._TAG, `Failed to cleanup log files: ${err && err.message}`);\n }\n }\n}\n"]}
@@ -34,5 +34,17 @@ export declare class TraceHandler {
34
34
  * Start auto collection of telemetry
35
35
  */
36
36
  private _initializeInstrumentations;
37
+ /**
38
+ * Wire the Azure SDK instrumenter into `@azure/core-tracing` directly.
39
+ *
40
+ * The Azure SDK instrumentation registers its instrumenter through an OpenTelemetry
41
+ * module-patch hook that only fires via `require`/`import`-in-the-middle. In ESM hosts
42
+ * where the OpenTelemetry loader cannot be registered up front (for example, Azure
43
+ * Functions, which controls the Node.js start command), that hook never runs, so Azure
44
+ * SDK dependency spans are missing. Because `@azure/core-tracing` resolves its
45
+ * instrumenter lazily at span-creation time from shared module-local state, applying
46
+ * the same patch directly here enables Azure SDK tracing regardless of module system.
47
+ */
48
+ private _wireAzureSdkInstrumenter;
37
49
  }
38
50
  //# sourceMappingURL=handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/traces/handler.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAgB,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAWnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGtE;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAU;IAE1B;;;;OAIG;gBACS,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa;IA2BzD,UAAU,IAAI,OAAO;IAIrB,qBAAqB,IAAI,kBAAkB;IAI3C,4BAA4B,IAAI,yBAAyB;IAIzD,mBAAmB,IAAI,eAAe,EAAE;IAI/C;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtC;;OAEG;IACH,OAAO,CAAC,2BAA2B;CAqDpC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/traces/handler.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAgB,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAWnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,gCAAgC,CAAC;AAIxC;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAU;IAE1B;;;;OAIG;gBACS,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa;IA2BzD,UAAU,IAAI,OAAO;IAIrB,qBAAqB,IAAI,kBAAkB;IAI3C,4BAA4B,IAAI,yBAAyB;IAIzD,mBAAmB,IAAI,eAAe,EAAE;IAI/C;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAwDnC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,yBAAyB;CAiBlC"}
@@ -1,6 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
3
  import { createAzureSdkInstrumentation } from "@azure/opentelemetry-instrumentation-azure-sdk";
4
+ import * as coreTracing from "@azure/core-tracing";
4
5
  import { AzureMonitorTraceExporter, RateLimitedSampler, } from "@azure/monitor-opentelemetry-exporter";
5
6
  import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
6
7
  import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
@@ -12,6 +13,7 @@ import { ignoreOutgoingRequestHook } from "../utils/common.js";
12
13
  import { AzureMonitorSpanProcessor } from "./spanProcessor.js";
13
14
  import { AzureFunctionsHook } from "./azureFnHook.js";
14
15
  import { ApplicationInsightsSampler } from "./sampler.js";
16
+ import { Logger } from "../shared/logging/index.js";
15
17
  /**
16
18
  * Azure Monitor OpenTelemetry Trace Handler
17
19
  */
@@ -101,7 +103,9 @@ export class TraceHandler {
101
103
  this._instrumentations.push(new HttpInstrumentation(this._config.instrumentationOptions.http));
102
104
  }
103
105
  if (this._config.instrumentationOptions.azureSdk?.enabled) {
104
- this._instrumentations.push(createAzureSdkInstrumentation(this._config.instrumentationOptions.azureSdk));
106
+ const azureSdkInstrumentation = createAzureSdkInstrumentation(this._config.instrumentationOptions.azureSdk);
107
+ this._instrumentations.push(azureSdkInstrumentation);
108
+ this._wireAzureSdkInstrumenter(azureSdkInstrumentation);
105
109
  }
106
110
  if (this._config.instrumentationOptions.mongoDb?.enabled) {
107
111
  this._instrumentations.push(new MongoDBInstrumentation(this._config.instrumentationOptions.mongoDb));
@@ -117,5 +121,29 @@ export class TraceHandler {
117
121
  this._instrumentations.push(new RedisInstrumentation(this._config.instrumentationOptions.redis));
118
122
  }
119
123
  }
124
+ /**
125
+ * Wire the Azure SDK instrumenter into `@azure/core-tracing` directly.
126
+ *
127
+ * The Azure SDK instrumentation registers its instrumenter through an OpenTelemetry
128
+ * module-patch hook that only fires via `require`/`import`-in-the-middle. In ESM hosts
129
+ * where the OpenTelemetry loader cannot be registered up front (for example, Azure
130
+ * Functions, which controls the Node.js start command), that hook never runs, so Azure
131
+ * SDK dependency spans are missing. Because `@azure/core-tracing` resolves its
132
+ * instrumenter lazily at span-creation time from shared module-local state, applying
133
+ * the same patch directly here enables Azure SDK tracing regardless of module system.
134
+ */
135
+ _wireAzureSdkInstrumenter(instrumentation) {
136
+ try {
137
+ const moduleDefinitions = instrumentation.getModuleDefinitions?.() ?? [];
138
+ for (const moduleDefinition of moduleDefinitions) {
139
+ if (moduleDefinition.name === "@azure/core-tracing" && moduleDefinition.patch) {
140
+ moduleDefinition.patch(coreTracing);
141
+ }
142
+ }
143
+ }
144
+ catch (error) {
145
+ Logger.getInstance().warn("Failed to enable Azure SDK tracing for ESM applications", error);
146
+ }
147
+ }
120
148
  }
121
149
  //# sourceMappingURL=handler.js.map