@azure/monitor-opentelemetry-exporter 1.0.0-beta.33 → 1.0.0-beta.34

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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/dist/commonjs/Declarations/Constants.d.ts +7 -2
  3. package/dist/commonjs/Declarations/Constants.d.ts.map +1 -1
  4. package/dist/commonjs/Declarations/Constants.js +8 -3
  5. package/dist/commonjs/Declarations/Constants.js.map +1 -1
  6. package/dist/commonjs/export/statsbeat/{customerStatsbeat.d.ts → customerSDKStats.d.ts} +30 -22
  7. package/dist/commonjs/export/statsbeat/customerSDKStats.d.ts.map +1 -0
  8. package/dist/commonjs/export/statsbeat/{customerStatsbeat.js → customerSDKStats.js} +175 -127
  9. package/dist/commonjs/export/statsbeat/customerSDKStats.js.map +1 -0
  10. package/dist/commonjs/export/statsbeat/types.d.ts +34 -9
  11. package/dist/commonjs/export/statsbeat/types.d.ts.map +1 -1
  12. package/dist/commonjs/export/statsbeat/types.js +45 -15
  13. package/dist/commonjs/export/statsbeat/types.js.map +1 -1
  14. package/dist/commonjs/generated/applicationInsightsClient.js +1 -1
  15. package/dist/commonjs/generated/applicationInsightsClient.js.map +1 -1
  16. package/dist/commonjs/platform/nodejs/baseSender.d.ts +1 -1
  17. package/dist/commonjs/platform/nodejs/baseSender.d.ts.map +1 -1
  18. package/dist/commonjs/platform/nodejs/baseSender.js +41 -26
  19. package/dist/commonjs/platform/nodejs/baseSender.js.map +1 -1
  20. package/dist/commonjs/platform/nodejs/persist/fileSystemPersist.d.ts +3 -3
  21. package/dist/commonjs/platform/nodejs/persist/fileSystemPersist.d.ts.map +1 -1
  22. package/dist/commonjs/platform/nodejs/persist/fileSystemPersist.js +8 -8
  23. package/dist/commonjs/platform/nodejs/persist/fileSystemPersist.js.map +1 -1
  24. package/dist/commonjs/tsdoc-metadata.json +1 -1
  25. package/dist/commonjs/types.d.ts +3 -1
  26. package/dist/commonjs/types.d.ts.map +1 -1
  27. package/dist/commonjs/types.js +4 -0
  28. package/dist/commonjs/types.js.map +1 -1
  29. package/dist/commonjs/utils/constants/applicationinsights.d.ts +2 -1
  30. package/dist/commonjs/utils/constants/applicationinsights.d.ts.map +1 -1
  31. package/dist/commonjs/utils/constants/applicationinsights.js +3 -2
  32. package/dist/commonjs/utils/constants/applicationinsights.js.map +1 -1
  33. package/dist/commonjs/utils/logUtils.d.ts.map +1 -1
  34. package/dist/commonjs/utils/logUtils.js +24 -6
  35. package/dist/commonjs/utils/logUtils.js.map +1 -1
  36. package/dist/commonjs/utils/spanUtils.d.ts.map +1 -1
  37. package/dist/commonjs/utils/spanUtils.js +16 -3
  38. package/dist/commonjs/utils/spanUtils.js.map +1 -1
  39. package/dist/esm/Declarations/Constants.d.ts +7 -2
  40. package/dist/esm/Declarations/Constants.d.ts.map +1 -1
  41. package/dist/esm/Declarations/Constants.js +7 -2
  42. package/dist/esm/Declarations/Constants.js.map +1 -1
  43. package/dist/esm/export/statsbeat/{customerStatsbeat.d.ts → customerSDKStats.d.ts} +30 -22
  44. package/dist/esm/export/statsbeat/customerSDKStats.d.ts.map +1 -0
  45. package/dist/esm/export/statsbeat/{customerStatsbeat.js → customerSDKStats.js} +175 -127
  46. package/dist/esm/export/statsbeat/customerSDKStats.js.map +1 -0
  47. package/dist/esm/export/statsbeat/types.d.ts +34 -9
  48. package/dist/esm/export/statsbeat/types.d.ts.map +1 -1
  49. package/dist/esm/export/statsbeat/types.js +43 -13
  50. package/dist/esm/export/statsbeat/types.js.map +1 -1
  51. package/dist/esm/generated/applicationInsightsClient.js +1 -1
  52. package/dist/esm/generated/applicationInsightsClient.js.map +1 -1
  53. package/dist/esm/platform/nodejs/baseSender.d.ts +1 -1
  54. package/dist/esm/platform/nodejs/baseSender.d.ts.map +1 -1
  55. package/dist/esm/platform/nodejs/baseSender.js +39 -24
  56. package/dist/esm/platform/nodejs/baseSender.js.map +1 -1
  57. package/dist/esm/platform/nodejs/persist/fileSystemPersist.d.ts +3 -3
  58. package/dist/esm/platform/nodejs/persist/fileSystemPersist.d.ts.map +1 -1
  59. package/dist/esm/platform/nodejs/persist/fileSystemPersist.js +9 -9
  60. package/dist/esm/platform/nodejs/persist/fileSystemPersist.js.map +1 -1
  61. package/dist/esm/types.d.ts +3 -1
  62. package/dist/esm/types.d.ts.map +1 -1
  63. package/dist/esm/types.js +4 -0
  64. package/dist/esm/types.js.map +1 -1
  65. package/dist/esm/utils/constants/applicationinsights.d.ts +2 -1
  66. package/dist/esm/utils/constants/applicationinsights.d.ts.map +1 -1
  67. package/dist/esm/utils/constants/applicationinsights.js +2 -1
  68. package/dist/esm/utils/constants/applicationinsights.js.map +1 -1
  69. package/dist/esm/utils/logUtils.d.ts.map +1 -1
  70. package/dist/esm/utils/logUtils.js +21 -3
  71. package/dist/esm/utils/logUtils.js.map +1 -1
  72. package/dist/esm/utils/spanUtils.d.ts.map +1 -1
  73. package/dist/esm/utils/spanUtils.js +19 -6
  74. package/dist/esm/utils/spanUtils.js.map +1 -1
  75. package/package.json +32 -33
  76. package/dist/commonjs/export/statsbeat/customerStatsbeat.d.ts.map +0 -1
  77. package/dist/commonjs/export/statsbeat/customerStatsbeat.js.map +0 -1
  78. package/dist/esm/export/statsbeat/customerStatsbeat.d.ts.map +0 -1
  79. package/dist/esm/export/statsbeat/customerStatsbeat.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"baseSender.js","sourceRoot":"","sources":["../../../../src/platform/nodejs/baseSender.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AAEtG,OAAO,EACL,QAAQ,EACR,SAAS,EACT,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EACL,iDAAiD,EACjD,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAEvF,MAAM,oCAAoC,GAAG,MAAM,CAAC;AAEpD;;;GAGG;AACH,MAAM,OAAgB,UAAU;IACb,SAAS,CAAoB;IACtC,uBAAuB,CAAS;IAChC,UAAU,CAAwB;IAClC,uBAAuB,CAAsC;IAC7D,wBAAwB,CAAuC;IAC/D,4BAA4B,CAAC;IAC7B,qBAAqB,GAAW,CAAC,CAAC;IAClC,wBAAwB,GAAW,oCAAoC,CAAC;IACxE,iBAAiB,CAAU;IAC3B,qBAAqB,CAAU;IAEvC,YAAY,OAOX;QACC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,qBAAqB,IAAI,KAAK,CAAC;QACpF,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC,WAAW,CAAC;gBACjE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;gBAC9C,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;aAClD,CAAC,CAAC;YACH,IAAI,CAAC,4BAA4B,GAAG,4BAA4B,CAAC,WAAW,CAAC;gBAC3E,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;gBAC9C,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;aAClD,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC,WAAW,CAAC;oBACnE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;oBAC9C,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;iBAClD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CACpC,OAAO,CAAC,kBAAkB,EAC1B,OAAO,CAAC,eAAe,EACvB,IAAI,CAAC,wBAAwB,CAC9B,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC;IAC9D,CAAC;IAMD;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,SAAqB;QAChD,IAAI,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,MAAM,cAAc,CAAC,CAAC;QAEvD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;YACrC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;YAEjC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,sCAAsC;gBACtC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;wBAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;wBACvB,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAChC,CAAC,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBAClC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC;gBACD,mFAAmF;gBACnF,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC5C,CAAC;iBAAM,IAAI,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjD,gCAAgC;gBAChC,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;oBAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC5B,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;wBACxD,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;oBACxE,CAAC;oBACD,OAAO;wBACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;qBAC/B,CAAC;gBACJ,CAAC;gBACD,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAClB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAmB,CAAC;oBAC5D,MAAM,iBAAiB,GAAe,EAAE,CAAC;oBACzC,gGAAgG;oBAChG,MAAM,mBAAmB,GAAe,CAAC,GAAG,SAAS,CAAC,CAAC;oBAEvD,8DAA8D;oBAC9D,IAAI,cAAc,CAAC,aAAa,GAAG,CAAC,IAAI,UAAU,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACtF,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;oBACvD,CAAC;oBACD,0DAA0D;oBAC1D,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;wBAC1B,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;4BACtC,yEAAyE;4BACzE,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAgC,CAAC;4BAEpE,gDAAgD;4BAChD,IAAI,KAAK,CAAC,UAAU,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gCACtD,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;4BACjD,CAAC;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC;oBAED,8DAA8D;oBAC9D,IAAI,cAAc,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;wBACrC,sDAAsD;wBACtD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;4BAC5B,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;4BACrD,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;wBACjE,CAAC;oBACH,CAAC;oBACD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACjC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;4BAC5B,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;4BACrD,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;wBACxE,CAAC;wBACD,uEAAuE;wBACvE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;oBAC/C,CAAC;oBACD,0BAA0B;oBAC1B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC5B,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;wBACjE,4EAA4E;wBAC5E,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,CAC9C,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,EACnC,UAAU,CACX,CAAC;oBACJ,CAAC;oBACD,OAAO;wBACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;qBAC9B,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,uEAAuE;oBACvE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC5B,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;wBACrD,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;oBACxE,CAAC;oBACD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC5D,IAAI,UAAU,EAAE,CAAC;wBACf,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;wBAChE,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;oBAC1E,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,oEAAoE;oBACpE,IAAI,CAAC,yBAAyB,EAAE,CAAC;oBACjC,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBACzF,CAAC;gBACD,OAAO;oBACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;iBAC9B,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,KAAkB,CAAC;YACrC,IACE,SAAS,CAAC,UAAU;gBACpB,CAAC,SAAS,CAAC,UAAU,KAAK,GAAG,IAAI,qBAAqB;oBACpD,SAAS,CAAC,UAAU,KAAK,GAAG,CAAC,EAC/B,CAAC;gBACD,qBAAqB;gBACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/B,gCAAgC;gBAChC,IAAI,IAAI,CAAC,uBAAuB,GAAG,EAAE,EAAE,CAAC;oBACtC,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;wBACrD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAC5D,IAAI,QAAQ,EAAE,CAAC;4BACb,oBAAoB;4BACpB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;4BACvC,mFAAmF;4BACnF,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;wBACzC,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;oBACrD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC5B,IAAI,CAAC,uBAAuB,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;wBAC5D,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,CAC9C,SAAS,EACT,QAAQ,CAAC,gBAAgB,EACzB,aAAa,CAAC,OAAO,CACtB,CAAC;oBACJ,CAAC;oBACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;gBACjE,CAAC;YACH,CAAC;iBAAM,IACL,SAAS,CAAC,UAAU;gBACpB,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;gBACjC,CAAC,IAAI,CAAC,iBAAiB,EACvB,CAAC;gBACD,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC/D,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;gBAChF,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;iBAAM,IACL,SAAS,CAAC,UAAU,KAAK,GAAG;gBAC5B,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EACzD,CAAC;gBACD,iEAAiE;gBACjE,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC5C,CAAC;iBAAM,IACL,SAAS,CAAC,UAAU;gBACpB,IAAI,CAAC,iBAAiB;gBACtB,yBAAyB,CAAC,SAAS,CAAC,UAAU,CAAC,EAC/C,CAAC;gBACD,mGAAmG;gBACnG,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC5C,CAAC;YAED,4BAA4B;YAC5B,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACpE,IAAI,IAAI,CAAC,wBAAwB,EAAE,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACxF,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAC5C,SAAS,EACT,SAAS,CAAC,cAAc,EACxB,mBAAmB,CACpB,CAAC;oBACF,IAAI,CAAC,KAAK,CAAC,mCAAmC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrE,CAAC;qBAAM,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;oBAChC,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;oBAC/D,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;gBAClF,CAAC;gBACD,IAAI,CAAC,KAAK,CACR,6DAA6D,EAC7D,SAAS,CAAC,OAAO,CAClB,CAAC;gBACF,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;YACD,qDAAqD;YACrD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,uBAAuB,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;gBACxD,IAAI,CAAC,KAAK,CACR,uEAAuE,EACvE,SAAS,CAAC,OAAO,CAClB,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAC,SAAoB;QACxC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrD,OAAO,OAAO;gBACZ,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE;gBACpC,CAAC,CAAC;oBACE,IAAI,EAAE,gBAAgB,CAAC,MAAM;oBAC7B,KAAK,EAAE,IAAI,KAAK,CAAC,qCAAqC,CAAC;iBACxD,CAAC;QACR,CAAC;QAAC,OAAO,EAAO,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;gBAClD,IAAI,IAAI,CAAC,qBAAqB,IAAI,SAAS,EAAE,CAAC;oBAC5C,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,CAC9C,SAAuB,EACvB,QAAQ,CAAC,uBAAuB,CACjC,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,yBAAyB;QAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,qBAAqB,GAAG,sBAAsB,EAAE,CAAC;YACxD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACtC,IAAI,CAAC,4BAA4B,EAAE,QAAQ,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAClC,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAsB,CAAC;QACtE,IAAI,CAAC;YACH,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,uBAAuB,EAAE,gBAAgB,EAAE,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,KAAgB;QAC3C,MAAM,cAAc,GAAa,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACxE,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { diag } from \"@opentelemetry/api\";\nimport type { PersistentStorage, SenderResult } from \"../../types.js\";\nimport type { AzureMonitorExporterOptions } from \"../../config.js\";\nimport { FileSystemPersist } from \"./persist/index.js\";\nimport type { ExportResult } from \"@opentelemetry/core\";\nimport { ExportResultCode } from \"@opentelemetry/core\";\nimport { NetworkStatsbeatMetrics } from \"../../export/statsbeat/networkStatsbeatMetrics.js\";\nimport { LongIntervalStatsbeatMetrics } from \"../../export/statsbeat/longIntervalStatsbeatMetrics.js\";\nimport type { RestError } from \"@azure/core-rest-pipeline\";\nimport {\n DropCode,\n RetryCode,\n MAX_STATSBEAT_FAILURES,\n isStatsbeatShutdownStatus,\n} from \"../../export/statsbeat/types.js\";\nimport type { BreezeResponse } from \"../../utils/breezeUtils.js\";\nimport { isRetriable } from \"../../utils/breezeUtils.js\";\nimport type { TelemetryItem as Envelope } from \"../../generated/index.js\";\nimport {\n ENV_APPLICATIONINSIGHTS_STATSBEAT_ENABLED_PREVIEW,\n RetriableRestErrorTypes,\n} from \"../../Declarations/Constants.js\";\nimport { CustomerStatsbeatMetrics } from \"../../export/statsbeat/customerStatsbeat.js\";\n\nconst DEFAULT_BATCH_SEND_RETRY_INTERVAL_MS = 60_000;\n\n/**\n * Base sender class\n * @internal\n */\nexport abstract class BaseSender {\n private readonly persister: PersistentStorage;\n private numConsecutiveRedirects: number;\n private retryTimer: NodeJS.Timeout | null;\n private networkStatsbeatMetrics: NetworkStatsbeatMetrics | undefined;\n private customerStatsbeatMetrics: CustomerStatsbeatMetrics | undefined;\n private longIntervalStatsbeatMetrics;\n private statsbeatFailureCount: number = 0;\n private batchSendRetryIntervalMs: number = DEFAULT_BATCH_SEND_RETRY_INTERVAL_MS;\n private isStatsbeatSender: boolean;\n private disableOfflineStorage: boolean;\n\n constructor(options: {\n endpointUrl: string;\n instrumentationKey: string;\n trackStatsbeat: boolean;\n exporterOptions: AzureMonitorExporterOptions;\n aadAudience?: string;\n isStatsbeatSender?: boolean;\n }) {\n this.numConsecutiveRedirects = 0;\n this.disableOfflineStorage = options.exporterOptions.disableOfflineStorage || false;\n if (options.trackStatsbeat) {\n this.networkStatsbeatMetrics = NetworkStatsbeatMetrics.getInstance({\n instrumentationKey: options.instrumentationKey,\n endpointUrl: options.endpointUrl,\n disableOfflineStorage: this.disableOfflineStorage,\n });\n this.longIntervalStatsbeatMetrics = LongIntervalStatsbeatMetrics.getInstance({\n instrumentationKey: options.instrumentationKey,\n endpointUrl: options.endpointUrl,\n disableOfflineStorage: this.disableOfflineStorage,\n });\n if (process.env[ENV_APPLICATIONINSIGHTS_STATSBEAT_ENABLED_PREVIEW]) {\n this.customerStatsbeatMetrics = CustomerStatsbeatMetrics.getInstance({\n instrumentationKey: options.instrumentationKey,\n endpointUrl: options.endpointUrl,\n disableOfflineStorage: this.disableOfflineStorage,\n });\n }\n }\n this.persister = new FileSystemPersist(\n options.instrumentationKey,\n options.exporterOptions,\n this.customerStatsbeatMetrics,\n );\n this.retryTimer = null;\n this.isStatsbeatSender = options.isStatsbeatSender || false;\n }\n\n abstract send(payload: unknown[]): Promise<SenderResult>;\n abstract shutdown(): Promise<void>;\n abstract handlePermanentRedirect(location: string | undefined): void;\n\n /**\n * Export envelopes\n */\n public async exportEnvelopes(envelopes: Envelope[]): Promise<ExportResult> {\n diag.info(`Exporting ${envelopes.length} envelope(s)`);\n\n if (envelopes.length < 1) {\n return { code: ExportResultCode.SUCCESS };\n }\n\n try {\n const startTime = new Date().getTime();\n const { result, statusCode } = await this.send(envelopes);\n const endTime = new Date().getTime();\n const duration = endTime - startTime;\n this.numConsecutiveRedirects = 0;\n\n if (statusCode === 200) {\n // Success -- @todo: start retry timer\n if (!this.retryTimer) {\n this.retryTimer = setTimeout(() => {\n this.retryTimer = null;\n this.sendFirstPersistedFile();\n }, this.batchSendRetryIntervalMs);\n this.retryTimer.unref();\n }\n // If we are not exporting statsbeat and statsbeat is not disabled -- count success\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countSuccess(duration);\n this.customerStatsbeatMetrics?.countSuccessfulItems(envelopes);\n }\n return { code: ExportResultCode.SUCCESS };\n } else if (statusCode && isRetriable(statusCode)) {\n // Failed -- persist failed data\n if (statusCode === 429 || statusCode === 439) {\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countThrottle(statusCode);\n this.customerStatsbeatMetrics?.countRetryItems(envelopes, statusCode);\n }\n return {\n code: ExportResultCode.SUCCESS,\n };\n }\n if (result) {\n diag.info(result);\n const breezeResponse = JSON.parse(result) as BreezeResponse;\n const filteredEnvelopes: Envelope[] = [];\n // Create a list of successful envelopes by filtering out the failed ones for customer statsbeat\n const successfulEnvelopes: Envelope[] = [...envelopes];\n\n // If we have a partial success, count the succeeded envelopes\n if (breezeResponse.itemsAccepted > 0 && statusCode === 206 && !this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countSuccess(duration);\n }\n // Figure out if we need to either retry or count failures\n if (breezeResponse.errors) {\n breezeResponse.errors.forEach((error) => {\n // Mark as undefined so we don't process them in countSuccessfulEnvelopes\n successfulEnvelopes[error.index] = undefined as unknown as Envelope;\n\n // Add to retry list if status code is retriable\n if (error.statusCode && isRetriable(error.statusCode)) {\n filteredEnvelopes.push(envelopes[error.index]);\n }\n });\n }\n\n // If we have a partial success, count the succeeded envelopes\n if (breezeResponse.itemsAccepted > 0) {\n // Count only the successful envelopes (non-undefined)\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countSuccess(duration);\n this.customerStatsbeatMetrics?.countSuccessfulItems(envelopes);\n }\n }\n if (filteredEnvelopes.length > 0) {\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countRetry(statusCode);\n this.customerStatsbeatMetrics?.countRetryItems(envelopes, statusCode);\n }\n // calls resultCallback(ExportResult) based on result of persister.push\n return await this.persist(filteredEnvelopes);\n }\n // Failed -- not retriable\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countFailure(duration, statusCode);\n // Count dropped items for customer statsbeat for non-retriable status codes\n this.customerStatsbeatMetrics?.countDroppedItems(\n successfulEnvelopes.filter(Boolean),\n statusCode,\n );\n }\n return {\n code: ExportResultCode.FAILED,\n };\n } else {\n // calls resultCallback(ExportResult) based on result of persister.push\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countRetry(statusCode);\n this.customerStatsbeatMetrics?.countRetryItems(envelopes, statusCode);\n }\n return await this.persist(envelopes);\n }\n } else {\n // Failed -- not retriable\n if (this.networkStatsbeatMetrics && !this.isStatsbeatSender) {\n if (statusCode) {\n this.networkStatsbeatMetrics.countFailure(duration, statusCode);\n this.customerStatsbeatMetrics?.countDroppedItems(envelopes, statusCode);\n }\n } else {\n // Handles all other status codes or client exceptions for Statsbeat\n this.incrementStatsbeatFailure();\n this.customerStatsbeatMetrics?.countDroppedItems(envelopes, DropCode.CLIENT_EXCEPTION);\n }\n return {\n code: ExportResultCode.FAILED,\n };\n }\n } catch (error: any) {\n const restError = error as RestError;\n if (\n restError.statusCode &&\n (restError.statusCode === 307 || // Temporary redirect\n restError.statusCode === 308)\n ) {\n // Permanent redirect\n this.numConsecutiveRedirects++;\n // To prevent circular redirects\n if (this.numConsecutiveRedirects < 10) {\n if (restError.response && restError.response.headers) {\n const location = restError.response.headers.get(\"location\");\n if (location) {\n // Update sender URL\n this.handlePermanentRedirect(location);\n // Send to redirect endpoint as HTTPs library doesn't handle redirect automatically\n return this.exportEnvelopes(envelopes);\n }\n }\n } else {\n const redirectError = new Error(\"Circular redirect\");\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countException(redirectError);\n this.customerStatsbeatMetrics?.countDroppedItems(\n envelopes,\n DropCode.CLIENT_EXCEPTION,\n redirectError.message,\n );\n }\n return { code: ExportResultCode.FAILED, error: redirectError };\n }\n } else if (\n restError.statusCode &&\n isRetriable(restError.statusCode) &&\n !this.isStatsbeatSender\n ) {\n this.networkStatsbeatMetrics?.countRetry(restError.statusCode);\n this.customerStatsbeatMetrics?.countRetryItems(envelopes, restError.statusCode);\n return this.persist(envelopes);\n } else if (\n restError.statusCode === 400 &&\n restError.message.includes(\"Invalid instrumentation key\")\n ) {\n // Invalid instrumentation key, shutdown statsbeat, fail silently\n this.shutdownStatsbeat();\n return { code: ExportResultCode.SUCCESS };\n } else if (\n restError.statusCode &&\n this.isStatsbeatSender &&\n isStatsbeatShutdownStatus(restError.statusCode)\n ) {\n // If the status code is a shutdown status code for statsbeat, shutdown statsbeat and fail silently\n this.incrementStatsbeatFailure();\n return { code: ExportResultCode.SUCCESS };\n }\n\n // For retriable REST errors\n if (this.isRetriableRestError(restError) && !this.isStatsbeatSender) {\n if (this.customerStatsbeatMetrics?.isTimeoutError(restError) && !this.isStatsbeatSender) {\n this.customerStatsbeatMetrics?.countRetryItems(\n envelopes,\n RetryCode.CLIENT_TIMEOUT,\n \"timeout_exception\",\n );\n diag.error(\"Request timed out. Error message:\", restError.message);\n } else if (restError.statusCode) {\n this.networkStatsbeatMetrics?.countRetry(restError.statusCode);\n this.customerStatsbeatMetrics?.countRetryItems(envelopes, restError.statusCode);\n }\n diag.error(\n \"Retrying due to transient client side error. Error message:\",\n restError.message,\n );\n return this.persist(envelopes);\n }\n // For non-retriable REST errors or client exceptions\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countException(restError);\n diag.error(\n \"Envelopes could not be exported and are not retriable. Error message:\",\n restError.message,\n );\n }\n return { code: ExportResultCode.FAILED, error: restError };\n }\n }\n\n /**\n * Persist envelopes to disk\n */\n private async persist(envelopes: unknown[]): Promise<ExportResult> {\n try {\n const success = await this.persister.push(envelopes);\n return success\n ? { code: ExportResultCode.SUCCESS }\n : {\n code: ExportResultCode.FAILED,\n error: new Error(\"Failed to persist envelope in disk.\"),\n };\n } catch (ex: any) {\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countWriteFailure();\n if (this.disableOfflineStorage && envelopes) {\n this.customerStatsbeatMetrics?.countDroppedItems(\n envelopes as Envelope[],\n DropCode.CLIENT_STORAGE_DISABLED,\n );\n }\n }\n return { code: ExportResultCode.FAILED, error: ex };\n }\n }\n\n /**\n * Disable collection of statsbeat metrics after max failures\n */\n private incrementStatsbeatFailure(): void {\n this.statsbeatFailureCount++;\n if (this.statsbeatFailureCount > MAX_STATSBEAT_FAILURES) {\n this.shutdownStatsbeat();\n }\n }\n\n /**\n * Shutdown statsbeat metrics\n */\n private shutdownStatsbeat(): void {\n if (this.networkStatsbeatMetrics) {\n this.networkStatsbeatMetrics.shutdown();\n }\n if (this.longIntervalStatsbeatMetrics) {\n this.longIntervalStatsbeatMetrics?.shutdown();\n }\n if (this.customerStatsbeatMetrics) {\n this.customerStatsbeatMetrics.shutdown();\n }\n this.statsbeatFailureCount = 0;\n }\n\n private async sendFirstPersistedFile(): Promise<void> {\n const envelopes = (await this.persister.shift()) as Envelope[] | null;\n try {\n if (envelopes) {\n await this.send(envelopes);\n }\n } catch (err: any) {\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countReadFailure();\n }\n diag.warn(`Failed to fetch persisted file`, err);\n }\n }\n\n private isRetriableRestError(error: RestError): boolean {\n const restErrorTypes: string[] = Object.values(RetriableRestErrorTypes);\n if (error && error.code && restErrorTypes.includes(error.code)) {\n return true;\n }\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"baseSender.js","sourceRoot":"","sources":["../../../../src/platform/nodejs/baseSender.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { diag } from \"@opentelemetry/api\";\nimport type { PersistentStorage, SenderResult } from \"../../types.js\";\nimport { ExceptionType } from \"../../export/statsbeat/types.js\";\nimport type { AzureMonitorExporterOptions } from \"../../config.js\";\nimport { FileSystemPersist } from \"./persist/index.js\";\nimport type { ExportResult } from \"@opentelemetry/core\";\nimport { ExportResultCode } from \"@opentelemetry/core\";\nimport { NetworkStatsbeatMetrics } from \"../../export/statsbeat/networkStatsbeatMetrics.js\";\nimport { LongIntervalStatsbeatMetrics } from \"../../export/statsbeat/longIntervalStatsbeatMetrics.js\";\nimport type { RestError } from \"@azure/core-rest-pipeline\";\nimport {\n DropCode,\n RetryCode,\n MAX_STATSBEAT_FAILURES,\n isStatsbeatShutdownStatus,\n} from \"../../export/statsbeat/types.js\";\nimport type { BreezeResponse } from \"../../utils/breezeUtils.js\";\nimport { isRetriable } from \"../../utils/breezeUtils.js\";\nimport type { TelemetryItem as Envelope } from \"../../generated/index.js\";\nimport {\n ENV_APPLICATIONINSIGHTS_SDKSTATS_ENABLED_PREVIEW,\n ENV_APPLICATIONINSIGHTS_SDKSTATS_EXPORT_INTERVAL,\n RetriableRestErrorTypes,\n} from \"../../Declarations/Constants.js\";\nimport { CustomerSDKStatsMetrics } from \"../../export/statsbeat/customerSDKStats.js\";\n\nconst DEFAULT_BATCH_SEND_RETRY_INTERVAL_MS = 60_000;\n\n/**\n * Base sender class\n * @internal\n */\nexport abstract class BaseSender {\n private readonly persister: PersistentStorage;\n private numConsecutiveRedirects: number;\n private retryTimer: NodeJS.Timeout | null;\n private networkStatsbeatMetrics: NetworkStatsbeatMetrics | undefined;\n private customerSDKStatsMetrics: CustomerSDKStatsMetrics | undefined;\n private longIntervalStatsbeatMetrics;\n private statsbeatFailureCount: number = 0;\n private batchSendRetryIntervalMs: number = DEFAULT_BATCH_SEND_RETRY_INTERVAL_MS;\n private isStatsbeatSender: boolean;\n private disableOfflineStorage: boolean;\n\n constructor(options: {\n endpointUrl: string;\n instrumentationKey: string;\n trackStatsbeat: boolean;\n exporterOptions: AzureMonitorExporterOptions;\n aadAudience?: string;\n isStatsbeatSender?: boolean;\n }) {\n this.numConsecutiveRedirects = 0;\n this.disableOfflineStorage = options.exporterOptions.disableOfflineStorage || false;\n if (options.trackStatsbeat) {\n this.networkStatsbeatMetrics = NetworkStatsbeatMetrics.getInstance({\n instrumentationKey: options.instrumentationKey,\n endpointUrl: options.endpointUrl,\n disableOfflineStorage: this.disableOfflineStorage,\n });\n this.longIntervalStatsbeatMetrics = LongIntervalStatsbeatMetrics.getInstance({\n instrumentationKey: options.instrumentationKey,\n endpointUrl: options.endpointUrl,\n disableOfflineStorage: this.disableOfflineStorage,\n });\n if (process.env[ENV_APPLICATIONINSIGHTS_SDKSTATS_ENABLED_PREVIEW]) {\n let exportInterval: number | undefined;\n if (process.env[ENV_APPLICATIONINSIGHTS_SDKSTATS_EXPORT_INTERVAL]) {\n const envValue = process.env[ENV_APPLICATIONINSIGHTS_SDKSTATS_EXPORT_INTERVAL];\n const exportIntervalSeconds = parseInt(envValue, 10);\n if (!isNaN(exportIntervalSeconds) && exportIntervalSeconds > 0) {\n exportInterval = exportIntervalSeconds * 1000; // Convert seconds to milliseconds\n } else {\n diag.warn(\n `Invalid value for APPLICATIONINSIGHTS_SDKSTATS_EXPORT_INTERVAL environment variable: '${envValue}'. Expected a positive number (seconds). Using default export interval.`,\n );\n }\n }\n this.customerSDKStatsMetrics = CustomerSDKStatsMetrics.getInstance({\n instrumentationKey: options.instrumentationKey,\n endpointUrl: options.endpointUrl,\n disableOfflineStorage: this.disableOfflineStorage,\n networkCollectionInterval: exportInterval,\n });\n }\n }\n this.persister = new FileSystemPersist(\n options.instrumentationKey,\n options.exporterOptions,\n this.customerSDKStatsMetrics,\n );\n this.retryTimer = null;\n this.isStatsbeatSender = options.isStatsbeatSender || false;\n }\n\n abstract send(payload: unknown[]): Promise<SenderResult>;\n abstract shutdown(): Promise<void>;\n abstract handlePermanentRedirect(location: string | undefined): void;\n\n /**\n * Export envelopes\n */\n public async exportEnvelopes(envelopes: Envelope[]): Promise<ExportResult> {\n diag.info(`Exporting ${envelopes.length} envelope(s)`);\n\n if (envelopes.length < 1) {\n return { code: ExportResultCode.SUCCESS };\n }\n\n try {\n const startTime = new Date().getTime();\n const { result, statusCode } = await this.send(envelopes);\n const endTime = new Date().getTime();\n const duration = endTime - startTime;\n this.numConsecutiveRedirects = 0;\n\n if (statusCode === 200) {\n // Success -- @todo: start retry timer\n if (!this.retryTimer) {\n this.retryTimer = setTimeout(() => {\n this.retryTimer = null;\n this.sendFirstPersistedFile();\n }, this.batchSendRetryIntervalMs);\n this.retryTimer.unref();\n }\n // If we are not exporting statsbeat and statsbeat is not disabled -- count success\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countSuccess(duration);\n this.customerSDKStatsMetrics?.countSuccessfulItems(envelopes);\n }\n return { code: ExportResultCode.SUCCESS };\n } else if (statusCode && isRetriable(statusCode)) {\n // Failed -- persist failed data\n if (statusCode === 429 || statusCode === 439) {\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countThrottle(statusCode);\n this.customerSDKStatsMetrics?.countRetryItems(envelopes, statusCode);\n }\n return {\n code: ExportResultCode.SUCCESS,\n };\n }\n if (result) {\n diag.info(result);\n const breezeResponse = JSON.parse(result) as BreezeResponse;\n const filteredEnvelopes: Envelope[] = [];\n // Create a list of successful envelopes by filtering out the failed ones for customer SDK Stats\n const successfulEnvelopes: Envelope[] = [...envelopes];\n\n // If we have a partial success, count the succeeded envelopes\n if (breezeResponse.itemsAccepted > 0 && statusCode === 206 && !this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countSuccess(duration);\n }\n // Figure out if we need to either retry or count failures\n if (breezeResponse.errors) {\n breezeResponse.errors.forEach((error) => {\n // Mark as undefined so we don't process them in countSuccessfulEnvelopes\n successfulEnvelopes[error.index] = undefined as unknown as Envelope;\n\n // Add to retry list if status code is retriable\n if (error.statusCode && isRetriable(error.statusCode)) {\n filteredEnvelopes.push(envelopes[error.index]);\n }\n });\n }\n\n // If we have a partial success, count the succeeded envelopes\n if (breezeResponse.itemsAccepted > 0) {\n // Count only the successful envelopes (non-undefined)\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countSuccess(duration);\n this.customerSDKStatsMetrics?.countSuccessfulItems(envelopes);\n }\n }\n if (filteredEnvelopes.length > 0) {\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countRetry(statusCode);\n this.customerSDKStatsMetrics?.countRetryItems(envelopes, statusCode);\n }\n // calls resultCallback(ExportResult) based on result of persister.push\n return await this.persist(filteredEnvelopes);\n }\n // Failed -- not retriable\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countFailure(duration, statusCode);\n // Count dropped items for customer SDK Stats for non-retriable status codes\n const filteredSuccessfulEnvelopes = successfulEnvelopes.filter(Boolean);\n this.customerSDKStatsMetrics?.countDroppedItems(\n filteredSuccessfulEnvelopes,\n statusCode,\n );\n }\n return {\n code: ExportResultCode.FAILED,\n };\n } else {\n // calls resultCallback(ExportResult) based on result of persister.push\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countRetry(statusCode);\n this.customerSDKStatsMetrics?.countRetryItems(envelopes, statusCode);\n }\n return await this.persist(envelopes);\n }\n } else {\n // Failed -- not retriable\n if (this.networkStatsbeatMetrics && !this.isStatsbeatSender) {\n if (statusCode) {\n this.networkStatsbeatMetrics.countFailure(duration, statusCode);\n this.customerSDKStatsMetrics?.countDroppedItems(envelopes, statusCode);\n }\n } else {\n // Handles all other status codes or client exceptions for Statsbeat\n this.incrementStatsbeatFailure();\n this.customerSDKStatsMetrics?.countDroppedItems(envelopes, DropCode.CLIENT_EXCEPTION);\n }\n return {\n code: ExportResultCode.FAILED,\n };\n }\n } catch (error: any) {\n const restError = error as RestError;\n if (\n restError.statusCode &&\n (restError.statusCode === 307 || // Temporary redirect\n restError.statusCode === 308)\n ) {\n // Permanent redirect\n this.numConsecutiveRedirects++;\n // To prevent circular redirects\n if (this.numConsecutiveRedirects < 10) {\n if (restError.response && restError.response.headers) {\n const location = restError.response.headers.get(\"location\");\n if (location) {\n // Update sender URL\n this.handlePermanentRedirect(location);\n // Send to redirect endpoint as HTTPs library doesn't handle redirect automatically\n return this.exportEnvelopes(envelopes);\n }\n }\n } else {\n const redirectError = new Error(\"Circular redirect\");\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countException(redirectError);\n this.customerSDKStatsMetrics?.countDroppedItems(\n envelopes,\n DropCode.CLIENT_EXCEPTION,\n redirectError.message,\n ExceptionType.CLIENT_EXCEPTION,\n );\n }\n return { code: ExportResultCode.FAILED, error: redirectError };\n }\n } else if (\n restError.statusCode &&\n isRetriable(restError.statusCode) &&\n !this.isStatsbeatSender\n ) {\n this.networkStatsbeatMetrics?.countRetry(restError.statusCode);\n this.customerSDKStatsMetrics?.countRetryItems(envelopes, restError.statusCode);\n return this.persist(envelopes);\n } else if (\n restError.statusCode === 400 &&\n restError.message.includes(\"Invalid instrumentation key\")\n ) {\n // Invalid instrumentation key, shutdown statsbeat, fail silently\n this.shutdownStatsbeat();\n return { code: ExportResultCode.SUCCESS };\n } else if (\n restError.statusCode &&\n this.isStatsbeatSender &&\n isStatsbeatShutdownStatus(restError.statusCode)\n ) {\n // If the status code is a shutdown status code for statsbeat, shutdown statsbeat and fail silently\n this.incrementStatsbeatFailure();\n return { code: ExportResultCode.SUCCESS };\n }\n\n // For retriable REST errors\n if (this.isRetriableRestError(restError) && !this.isStatsbeatSender) {\n if (this.customerSDKStatsMetrics?.isTimeoutError(restError) && !this.isStatsbeatSender) {\n this.customerSDKStatsMetrics?.countRetryItems(\n envelopes,\n RetryCode.CLIENT_TIMEOUT,\n \"timeout_exception\",\n ExceptionType.TIMEOUT_EXCEPTION,\n );\n diag.error(\"Request timed out. Error message:\", restError.message);\n } else if (restError.statusCode) {\n this.networkStatsbeatMetrics?.countRetry(restError.statusCode);\n this.customerSDKStatsMetrics?.countRetryItems(envelopes, restError.statusCode);\n }\n diag.error(\n \"Retrying due to transient client side error. Error message:\",\n restError.message,\n );\n return this.persist(envelopes);\n }\n // For non-retriable REST errors or client exceptions\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countException(restError);\n this.customerSDKStatsMetrics?.countDroppedItems(\n envelopes,\n DropCode.CLIENT_EXCEPTION,\n restError.message,\n );\n diag.error(\n \"Envelopes could not be exported and are not retriable. Error message:\",\n restError.message,\n );\n }\n return { code: ExportResultCode.FAILED, error: restError };\n }\n }\n\n /**\n * Persist envelopes to disk\n */\n private async persist(envelopes: unknown[]): Promise<ExportResult> {\n try {\n const success = await this.persister.push(envelopes);\n return success\n ? { code: ExportResultCode.SUCCESS }\n : {\n code: ExportResultCode.FAILED,\n error: new Error(\"Failed to persist envelope in disk.\"),\n };\n } catch (ex: any) {\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countWriteFailure();\n if (this.disableOfflineStorage && envelopes) {\n this.customerSDKStatsMetrics?.countDroppedItems(\n envelopes as Envelope[],\n DropCode.CLIENT_STORAGE_DISABLED,\n );\n }\n }\n return { code: ExportResultCode.FAILED, error: ex };\n }\n }\n\n /**\n * Disable collection of statsbeat metrics after max failures\n */\n private incrementStatsbeatFailure(): void {\n this.statsbeatFailureCount++;\n if (this.statsbeatFailureCount > MAX_STATSBEAT_FAILURES) {\n this.shutdownStatsbeat();\n }\n }\n\n /**\n * Shutdown statsbeat metrics\n */\n private shutdownStatsbeat(): void {\n if (this.networkStatsbeatMetrics) {\n this.networkStatsbeatMetrics.shutdown();\n }\n if (this.longIntervalStatsbeatMetrics) {\n this.longIntervalStatsbeatMetrics?.shutdown();\n }\n if (this.customerSDKStatsMetrics) {\n this.customerSDKStatsMetrics.shutdown();\n }\n this.statsbeatFailureCount = 0;\n }\n\n private async sendFirstPersistedFile(): Promise<void> {\n const envelopes = (await this.persister.shift()) as Envelope[] | null;\n try {\n if (envelopes) {\n await this.send(envelopes);\n }\n } catch (err: any) {\n if (!this.isStatsbeatSender) {\n this.networkStatsbeatMetrics?.countReadFailure();\n }\n diag.warn(`Failed to fetch persisted file`, err);\n }\n }\n\n private isRetriableRestError(error: RestError): boolean {\n const restErrorTypes: string[] = Object.values(RetriableRestErrorTypes);\n if (error && error.code && restErrorTypes.includes(error.code)) {\n return true;\n }\n return false;\n }\n}\n"]}
@@ -1,13 +1,13 @@
1
1
  import type { PersistentStorage } from "../../../types.js";
2
2
  import type { AzureMonitorExporterOptions } from "../../../config.js";
3
- import type { CustomerStatsbeatMetrics } from "../../../export/statsbeat/customerStatsbeat.js";
3
+ import type { CustomerSDKStatsMetrics } from "../../../export/statsbeat/customerSDKStats.js";
4
4
  /**
5
5
  * File system persist class.
6
6
  * @internal
7
7
  */
8
8
  export declare class FileSystemPersist implements PersistentStorage {
9
9
  private _options?;
10
- private _customerStatsbeatMetrics?;
10
+ private _customerSDKStatsMetrics?;
11
11
  static TEMPDIR_PREFIX: string;
12
12
  static FILENAME_SUFFIX: string;
13
13
  fileRetemptionPeriod: number;
@@ -17,7 +17,7 @@ export declare class FileSystemPersist implements PersistentStorage {
17
17
  private _tempDirectory;
18
18
  private _fileCleanupTimer;
19
19
  private _instrumentationKey;
20
- constructor(instrumentationKey: string, _options?: AzureMonitorExporterOptions | undefined, _customerStatsbeatMetrics?: CustomerStatsbeatMetrics | undefined);
20
+ constructor(instrumentationKey: string, _options?: AzureMonitorExporterOptions | undefined, _customerSDKStatsMetrics?: CustomerSDKStatsMetrics | undefined);
21
21
  push(value: unknown[]): Promise<boolean>;
22
22
  shift(): Promise<unknown>;
23
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fileSystemPersist.d.ts","sourceRoot":"","sources":["../../../../../src/platform/nodejs/persist/fileSystemPersist.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAI/F;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,iBAAiB;IAevD,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,yBAAyB,CAAC;IAfpC,MAAM,CAAC,cAAc,SAAwB;IAC7C,MAAM,CAAC,eAAe,SAAc;IAEpC,oBAAoB,SAA2B;IAC/C,cAAc,SAAkB;IAChC,cAAc,EAAE,MAAM,CAAc;IAEpC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,mBAAmB,CAAS;gBAGlC,kBAAkB,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,2BAA2B,YAAA,EACtC,yBAAyB,CAAC,EAAE,wBAAwB,YAAA;IAyC9D,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBlC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB/B;;;OAGG;YACW,mBAAmB;IA8BjC;;;;;OAKG;YACW,YAAY;YAuDZ,gBAAgB;CA+B/B"}
1
+ {"version":3,"file":"fileSystemPersist.d.ts","sourceRoot":"","sources":["../../../../../src/platform/nodejs/persist/fileSystemPersist.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAI7F;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,iBAAiB;IAevD,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,wBAAwB,CAAC;IAfnC,MAAM,CAAC,cAAc,SAAwB;IAC7C,MAAM,CAAC,eAAe,SAAc;IAEpC,oBAAoB,SAA2B;IAC/C,cAAc,SAAkB;IAChC,cAAc,EAAE,MAAM,CAAc;IAEpC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,mBAAmB,CAAS;gBAGlC,kBAAkB,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,2BAA2B,YAAA,EACtC,wBAAwB,CAAC,EAAE,uBAAuB,YAAA;IAyC5D,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBlC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB/B;;;OAGG;YACW,mBAAmB;IA8BjC;;;;;OAKG;YACW,YAAY;YAwDZ,gBAAgB;CA+B/B"}
@@ -6,14 +6,14 @@ import { diag } from "@opentelemetry/api";
6
6
  import { FileAccessControl } from "./fileAccessControl.js";
7
7
  import { confirmDirExists, getShallowDirectorySize } from "./fileSystemHelpers.js";
8
8
  import { readdir, readFile, stat, unlink, writeFile } from "node:fs/promises";
9
- import { DropCode } from "../../../export/statsbeat/types.js";
9
+ import { DropCode, ExceptionType } from "../../../export/statsbeat/types.js";
10
10
  /**
11
11
  * File system persist class.
12
12
  * @internal
13
13
  */
14
14
  export class FileSystemPersist {
15
15
  _options;
16
- _customerStatsbeatMetrics;
16
+ _customerSDKStatsMetrics;
17
17
  static TEMPDIR_PREFIX = "ot-azure-exporter-";
18
18
  static FILENAME_SUFFIX = ".ai.json";
19
19
  fileRetemptionPeriod = 2 * 24 * 60 * 60 * 1000; // 2 days
@@ -23,9 +23,9 @@ export class FileSystemPersist {
23
23
  _tempDirectory = "";
24
24
  _fileCleanupTimer = null;
25
25
  _instrumentationKey;
26
- constructor(instrumentationKey, _options, _customerStatsbeatMetrics) {
26
+ constructor(instrumentationKey, _options, _customerSDKStatsMetrics) {
27
27
  this._options = _options;
28
- this._customerStatsbeatMetrics = _customerStatsbeatMetrics;
28
+ this._customerSDKStatsMetrics = _customerSDKStatsMetrics;
29
29
  this._instrumentationKey = instrumentationKey;
30
30
  if (this._options?.disableOfflineStorage) {
31
31
  this._enabled = false;
@@ -132,7 +132,7 @@ export class FileSystemPersist {
132
132
  catch (error) {
133
133
  // Check if error is due to permission/readonly issues
134
134
  if (error?.code === "EACCES" || error?.code === "EPERM") {
135
- this._customerStatsbeatMetrics?.countDroppedItems(envelopes, DropCode.CLIENT_READONLY);
135
+ this._customerSDKStatsMetrics?.countDroppedItems(envelopes, DropCode.CLIENT_READONLY);
136
136
  diag.warn(`Permission denied while checking/creating directory: ${this._tempDirectory}`, error?.message);
137
137
  }
138
138
  else {
@@ -143,8 +143,8 @@ export class FileSystemPersist {
143
143
  try {
144
144
  const size = await getShallowDirectorySize(this._tempDirectory);
145
145
  if (size > this.maxBytesOnDisk) {
146
- // If the directory size exceeds the max limit, we send customer statsbeat and warn the user
147
- this._customerStatsbeatMetrics?.countDroppedItems(envelopes, DropCode.CLIENT_PERSISTENCE_CAPACITY);
146
+ // If the directory size exceeds the max limit, we send customer SDK Stats and warn the user
147
+ this._customerSDKStatsMetrics?.countDroppedItems(envelopes, DropCode.CLIENT_PERSISTENCE_CAPACITY);
148
148
  diag.warn(`Not saving data due to max size limit being met. Directory size in bytes is: ${size}`);
149
149
  return false;
150
150
  }
@@ -161,8 +161,8 @@ export class FileSystemPersist {
161
161
  await writeFile(fileFullPath, payload, { mode: 0o600 });
162
162
  }
163
163
  catch (writeError) {
164
- // If the envelopes cannot be written to disk, we send customer statsbeat and warn the user
165
- this._customerStatsbeatMetrics?.countDroppedItems(envelopes, DropCode.CLIENT_EXCEPTION, writeError?.message);
164
+ // If the envelopes cannot be written to disk, we send customer SDK Stats and warn the user
165
+ this._customerSDKStatsMetrics?.countDroppedItems(envelopes, DropCode.CLIENT_EXCEPTION, writeError?.message, ExceptionType.STORAGE_EXCEPTION);
166
166
  diag.warn(`Error writing file to persistent file storage`, writeError);
167
167
  return false;
168
168
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fileSystemPersist.js","sourceRoot":"","sources":["../../../../../src/platform/nodejs/persist/fileSystemPersist.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { tmpdir } from \"node:os\";\nimport { basename, join } from \"node:path\";\nimport { diag } from \"@opentelemetry/api\";\nimport type { PersistentStorage } from \"../../../types.js\";\nimport { FileAccessControl } from \"./fileAccessControl.js\";\nimport { confirmDirExists, getShallowDirectorySize } from \"./fileSystemHelpers.js\";\nimport type { AzureMonitorExporterOptions } from \"../../../config.js\";\nimport { readdir, readFile, stat, unlink, writeFile } from \"node:fs/promises\";\nimport type { CustomerStatsbeatMetrics } from \"../../../export/statsbeat/customerStatsbeat.js\";\nimport { DropCode } from \"../../../export/statsbeat/types.js\";\nimport type { TelemetryItem as Envelope } from \"../../../generated/index.js\";\n\n/**\n * File system persist class.\n * @internal\n */\nexport class FileSystemPersist implements PersistentStorage {\n static TEMPDIR_PREFIX = \"ot-azure-exporter-\";\n static FILENAME_SUFFIX = \".ai.json\";\n\n fileRetemptionPeriod = 2 * 24 * 60 * 60 * 1000; // 2 days\n cleanupTimeOut = 60 * 60 * 1000; // 1 hour\n maxBytesOnDisk: number = 50_000_000; // ~50MB\n\n private _enabled: boolean;\n private _tempDirectory: string = \"\";\n private _fileCleanupTimer: NodeJS.Timeout | null = null;\n private _instrumentationKey: string;\n\n constructor(\n instrumentationKey: string,\n private _options?: AzureMonitorExporterOptions,\n private _customerStatsbeatMetrics?: CustomerStatsbeatMetrics,\n ) {\n this._instrumentationKey = instrumentationKey;\n if (this._options?.disableOfflineStorage) {\n this._enabled = false;\n return;\n }\n this._enabled = true;\n FileAccessControl.checkFileProtection();\n\n if (!FileAccessControl.OS_PROVIDES_FILE_PROTECTION) {\n this._enabled = false;\n diag.error(\n \"Sufficient file protection capabilities were not detected. Files will not be persisted\",\n );\n }\n\n if (!this._instrumentationKey) {\n this._enabled = false;\n diag.error(\n `No instrumentation key was provided to FileSystemPersister. Files will not be persisted`,\n );\n }\n if (this._enabled) {\n this._tempDirectory = join(\n this._options?.storageDirectory || tmpdir(),\n \"Microsoft\",\n \"AzureMonitor\",\n FileSystemPersist.TEMPDIR_PREFIX + this._instrumentationKey,\n );\n\n // Starts file cleanup task\n if (!this._fileCleanupTimer) {\n this._fileCleanupTimer = setTimeout(() => {\n this._fileCleanupTask();\n }, this.cleanupTimeOut);\n this._fileCleanupTimer.unref();\n }\n }\n }\n\n push(value: unknown[]): Promise<boolean> {\n if (this._enabled) {\n diag.debug(\"Pushing value to persistent storage\", value.toString());\n return this._storeToDisk(JSON.stringify(value), value as Envelope[]);\n }\n // Only return a false promise if the SDK isn't set to disable offline storage\n if (!this._options?.disableOfflineStorage) {\n return new Promise((resolve) => {\n resolve(false);\n });\n }\n return new Promise((resolve) => {\n resolve(true);\n });\n }\n\n async shift(): Promise<unknown> {\n if (this._enabled) {\n diag.debug(\"Searching for filesystem persisted files\");\n try {\n const buffer = await this._getFirstFileOnDisk();\n if (buffer) {\n return JSON.parse(buffer.toString(\"utf8\"));\n }\n } catch (e: any) {\n diag.debug(\"Failed to read persisted file\", e);\n }\n return null;\n }\n return new Promise((resolve) => {\n resolve(null);\n });\n }\n\n /**\n * Check for temp telemetry files\n * reads the first file if exist, deletes it and tries to send its load\n */\n private async _getFirstFileOnDisk(): Promise<Buffer | null> {\n try {\n const stats = await stat(this._tempDirectory);\n if (stats.isDirectory()) {\n const origFiles = await readdir(this._tempDirectory);\n const files = origFiles.filter((f) =>\n basename(f).includes(FileSystemPersist.FILENAME_SUFFIX),\n );\n if (files.length === 0) {\n return null;\n } else {\n const firstFile = files[0];\n const filePath = join(this._tempDirectory, firstFile);\n const payload = await readFile(filePath);\n // delete the file first to prevent double sending\n await unlink(filePath);\n return payload;\n }\n }\n return null;\n } catch (e: any) {\n if (e.code === \"ENOENT\") {\n // File does not exist -- return null instead of throwing\n return null;\n } else {\n throw e;\n }\n }\n }\n\n /**\n * Stores telemetry data to disk.\n * @param payload - The telemetry data to store.\n * @param envelopeLength -The length of the telemetry envelope.\n * @returns A promise that resolves to true if the data was stored successfully, false otherwise.\n */\n private async _storeToDisk(payload: string, envelopes: Envelope[]): Promise<boolean> {\n try {\n await confirmDirExists(this._tempDirectory);\n } catch (error: any) {\n // Check if error is due to permission/readonly issues\n if (error?.code === \"EACCES\" || error?.code === \"EPERM\") {\n this._customerStatsbeatMetrics?.countDroppedItems(envelopes, DropCode.CLIENT_READONLY);\n diag.warn(\n `Permission denied while checking/creating directory: ${this._tempDirectory}`,\n error?.message,\n );\n } else {\n diag.warn(`Error while checking/creating directory: `, error && error.message);\n }\n return false;\n }\n\n try {\n const size = await getShallowDirectorySize(this._tempDirectory);\n if (size > this.maxBytesOnDisk) {\n // If the directory size exceeds the max limit, we send customer statsbeat and warn the user\n this._customerStatsbeatMetrics?.countDroppedItems(\n envelopes,\n DropCode.CLIENT_PERSISTENCE_CAPACITY,\n );\n diag.warn(\n `Not saving data due to max size limit being met. Directory size in bytes is: ${size}`,\n );\n return false;\n }\n } catch (error: any) {\n diag.warn(`Error while checking size of persistence directory: `, error && error.message);\n return false;\n }\n\n const fileName = `${new Date().getTime()}${FileSystemPersist.FILENAME_SUFFIX}`;\n const fileFullPath = join(this._tempDirectory, fileName);\n\n // Mode 600 is w/r for creator and no read access for others\n diag.info(`saving data to disk at: ${fileFullPath}`);\n try {\n await writeFile(fileFullPath, payload, { mode: 0o600 });\n } catch (writeError: any) {\n // If the envelopes cannot be written to disk, we send customer statsbeat and warn the user\n this._customerStatsbeatMetrics?.countDroppedItems(\n envelopes,\n DropCode.CLIENT_EXCEPTION,\n writeError?.message,\n );\n diag.warn(`Error writing file to persistent file storage`, writeError);\n return false;\n }\n return true;\n }\n\n private async _fileCleanupTask(): Promise<boolean> {\n try {\n const stats = await stat(this._tempDirectory);\n if (stats.isDirectory()) {\n const origFiles = await readdir(this._tempDirectory);\n const files = origFiles.filter((f) =>\n basename(f).includes(FileSystemPersist.FILENAME_SUFFIX),\n );\n if (files.length === 0) {\n return false;\n } else {\n files.forEach(async (file) => {\n // Check expiration\n const fileCreationDate: Date = new Date(\n parseInt(file.split(FileSystemPersist.FILENAME_SUFFIX)[0]),\n );\n const expired = new Date(+new Date() - this.fileRetemptionPeriod) > fileCreationDate;\n if (expired) {\n const filePath = join(this._tempDirectory, file);\n await unlink(filePath);\n }\n });\n return true;\n }\n }\n return false;\n } catch (error: any) {\n diag.info(`Failed cleanup of persistent file storage expired files`, error);\n return false;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"fileSystemPersist.js","sourceRoot":"","sources":["../../../../../src/platform/nodejs/persist/fileSystemPersist.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { tmpdir } from \"node:os\";\nimport { basename, join } from \"node:path\";\nimport { diag } from \"@opentelemetry/api\";\nimport type { PersistentStorage } from \"../../../types.js\";\nimport { FileAccessControl } from \"./fileAccessControl.js\";\nimport { confirmDirExists, getShallowDirectorySize } from \"./fileSystemHelpers.js\";\nimport type { AzureMonitorExporterOptions } from \"../../../config.js\";\nimport { readdir, readFile, stat, unlink, writeFile } from \"node:fs/promises\";\nimport type { CustomerSDKStatsMetrics } from \"../../../export/statsbeat/customerSDKStats.js\";\nimport { DropCode, ExceptionType } from \"../../../export/statsbeat/types.js\";\nimport type { TelemetryItem as Envelope } from \"../../../generated/index.js\";\n\n/**\n * File system persist class.\n * @internal\n */\nexport class FileSystemPersist implements PersistentStorage {\n static TEMPDIR_PREFIX = \"ot-azure-exporter-\";\n static FILENAME_SUFFIX = \".ai.json\";\n\n fileRetemptionPeriod = 2 * 24 * 60 * 60 * 1000; // 2 days\n cleanupTimeOut = 60 * 60 * 1000; // 1 hour\n maxBytesOnDisk: number = 50_000_000; // ~50MB\n\n private _enabled: boolean;\n private _tempDirectory: string = \"\";\n private _fileCleanupTimer: NodeJS.Timeout | null = null;\n private _instrumentationKey: string;\n\n constructor(\n instrumentationKey: string,\n private _options?: AzureMonitorExporterOptions,\n private _customerSDKStatsMetrics?: CustomerSDKStatsMetrics,\n ) {\n this._instrumentationKey = instrumentationKey;\n if (this._options?.disableOfflineStorage) {\n this._enabled = false;\n return;\n }\n this._enabled = true;\n FileAccessControl.checkFileProtection();\n\n if (!FileAccessControl.OS_PROVIDES_FILE_PROTECTION) {\n this._enabled = false;\n diag.error(\n \"Sufficient file protection capabilities were not detected. Files will not be persisted\",\n );\n }\n\n if (!this._instrumentationKey) {\n this._enabled = false;\n diag.error(\n `No instrumentation key was provided to FileSystemPersister. Files will not be persisted`,\n );\n }\n if (this._enabled) {\n this._tempDirectory = join(\n this._options?.storageDirectory || tmpdir(),\n \"Microsoft\",\n \"AzureMonitor\",\n FileSystemPersist.TEMPDIR_PREFIX + this._instrumentationKey,\n );\n\n // Starts file cleanup task\n if (!this._fileCleanupTimer) {\n this._fileCleanupTimer = setTimeout(() => {\n this._fileCleanupTask();\n }, this.cleanupTimeOut);\n this._fileCleanupTimer.unref();\n }\n }\n }\n\n push(value: unknown[]): Promise<boolean> {\n if (this._enabled) {\n diag.debug(\"Pushing value to persistent storage\", value.toString());\n return this._storeToDisk(JSON.stringify(value), value as Envelope[]);\n }\n // Only return a false promise if the SDK isn't set to disable offline storage\n if (!this._options?.disableOfflineStorage) {\n return new Promise((resolve) => {\n resolve(false);\n });\n }\n return new Promise((resolve) => {\n resolve(true);\n });\n }\n\n async shift(): Promise<unknown> {\n if (this._enabled) {\n diag.debug(\"Searching for filesystem persisted files\");\n try {\n const buffer = await this._getFirstFileOnDisk();\n if (buffer) {\n return JSON.parse(buffer.toString(\"utf8\"));\n }\n } catch (e: any) {\n diag.debug(\"Failed to read persisted file\", e);\n }\n return null;\n }\n return new Promise((resolve) => {\n resolve(null);\n });\n }\n\n /**\n * Check for temp telemetry files\n * reads the first file if exist, deletes it and tries to send its load\n */\n private async _getFirstFileOnDisk(): Promise<Buffer | null> {\n try {\n const stats = await stat(this._tempDirectory);\n if (stats.isDirectory()) {\n const origFiles = await readdir(this._tempDirectory);\n const files = origFiles.filter((f) =>\n basename(f).includes(FileSystemPersist.FILENAME_SUFFIX),\n );\n if (files.length === 0) {\n return null;\n } else {\n const firstFile = files[0];\n const filePath = join(this._tempDirectory, firstFile);\n const payload = await readFile(filePath);\n // delete the file first to prevent double sending\n await unlink(filePath);\n return payload;\n }\n }\n return null;\n } catch (e: any) {\n if (e.code === \"ENOENT\") {\n // File does not exist -- return null instead of throwing\n return null;\n } else {\n throw e;\n }\n }\n }\n\n /**\n * Stores telemetry data to disk.\n * @param payload - The telemetry data to store.\n * @param envelopeLength -The length of the telemetry envelope.\n * @returns A promise that resolves to true if the data was stored successfully, false otherwise.\n */\n private async _storeToDisk(payload: string, envelopes: Envelope[]): Promise<boolean> {\n try {\n await confirmDirExists(this._tempDirectory);\n } catch (error: any) {\n // Check if error is due to permission/readonly issues\n if (error?.code === \"EACCES\" || error?.code === \"EPERM\") {\n this._customerSDKStatsMetrics?.countDroppedItems(envelopes, DropCode.CLIENT_READONLY);\n diag.warn(\n `Permission denied while checking/creating directory: ${this._tempDirectory}`,\n error?.message,\n );\n } else {\n diag.warn(`Error while checking/creating directory: `, error && error.message);\n }\n return false;\n }\n\n try {\n const size = await getShallowDirectorySize(this._tempDirectory);\n if (size > this.maxBytesOnDisk) {\n // If the directory size exceeds the max limit, we send customer SDK Stats and warn the user\n this._customerSDKStatsMetrics?.countDroppedItems(\n envelopes,\n DropCode.CLIENT_PERSISTENCE_CAPACITY,\n );\n diag.warn(\n `Not saving data due to max size limit being met. Directory size in bytes is: ${size}`,\n );\n return false;\n }\n } catch (error: any) {\n diag.warn(`Error while checking size of persistence directory: `, error && error.message);\n return false;\n }\n\n const fileName = `${new Date().getTime()}${FileSystemPersist.FILENAME_SUFFIX}`;\n const fileFullPath = join(this._tempDirectory, fileName);\n\n // Mode 600 is w/r for creator and no read access for others\n diag.info(`saving data to disk at: ${fileFullPath}`);\n try {\n await writeFile(fileFullPath, payload, { mode: 0o600 });\n } catch (writeError: any) {\n // If the envelopes cannot be written to disk, we send customer SDK Stats and warn the user\n this._customerSDKStatsMetrics?.countDroppedItems(\n envelopes,\n DropCode.CLIENT_EXCEPTION,\n writeError?.message,\n ExceptionType.STORAGE_EXCEPTION,\n );\n diag.warn(`Error writing file to persistent file storage`, writeError);\n return false;\n }\n return true;\n }\n\n private async _fileCleanupTask(): Promise<boolean> {\n try {\n const stats = await stat(this._tempDirectory);\n if (stats.isDirectory()) {\n const origFiles = await readdir(this._tempDirectory);\n const files = origFiles.filter((f) =>\n basename(f).includes(FileSystemPersist.FILENAME_SUFFIX),\n );\n if (files.length === 0) {\n return false;\n } else {\n files.forEach(async (file) => {\n // Check expiration\n const fileCreationDate: Date = new Date(\n parseInt(file.split(FileSystemPersist.FILENAME_SUFFIX)[0]),\n );\n const expired = new Date(+new Date() - this.fileRetemptionPeriod) > fileCreationDate;\n if (expired) {\n const filePath = join(this._tempDirectory, file);\n await unlink(filePath);\n }\n });\n return true;\n }\n }\n return false;\n } catch (error: any) {\n diag.info(`Failed cleanup of persistent file storage expired files`, error);\n return false;\n }\n }\n}\n"]}
@@ -97,7 +97,9 @@ export declare const legacySemanticValues: string[];
97
97
  * @internal
98
98
  */
99
99
  export declare enum experimentalOpenTelemetryValues {
100
- SYNTHETIC_TYPE = "user_agent.synthetic.type"
100
+ SYNTHETIC_TYPE = "user_agent.synthetic.type",
101
+ ATTR_ENDUSER_PSEUDO_ID = "enduser.pseudo.id",
102
+ ATTR_ENDUSER_ID = "enduser.id"
101
103
  }
102
104
  /**
103
105
  * HTTP semantic convention values
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG;KAAG,GAAG,IAAI,cAAc,GAAG,MAAM;CAAE,CAAC;AACvD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AACpF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,CAAA;CAAE,CAAC;AACtE;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;CACZ;AACD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AACrD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,oBAAY,2BAA2B;IACrC,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,qBAAqB,0BAA0B;IAC/C,YAAY,iBAAiB;IAC7B,gBAAgB,2BAA2B;IAC3C,uBAAuB,4BAA4B;IACnD,cAAc,mBAAmB;CAClC;AAED;;;GAGG;AACH,oBAAY,6BAA6B;IACvC,aAAa,iDAAiD;IAC9D,eAAe,8BAA8B;IAC7C,cAAc,0CAA0C;IACxD,qBAAqB,oDAAoD;IACzE,YAAY,6DAA6D;IACzE,gBAAgB,uEAAuE;IACvF,uBAAuB,+DAA+D;IACtF,cAAc,sEAAsE;CACrF;AAED;;;GAGG;AACH,oBAAY,kBAAkB;IAC5B,QAAQ,MAAM;IACd,OAAO,OAAO;IACd,YAAY,OAAO;IACnB,WAAW,QAAQ;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UA8BhC,CAAC;AAEF;;;GAGG;AACH,oBAAY,+BAA+B;IACzC,cAAc,8BAA8B;CAC7C;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,8eAwB9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,UAAsC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG;KAAG,GAAG,IAAI,cAAc,GAAG,MAAM;CAAE,CAAC;AACvD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AACpF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,CAAA;CAAE,CAAC;AACtE;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;CACZ;AACD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AACrD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,oBAAY,2BAA2B;IACrC,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,qBAAqB,0BAA0B;IAC/C,YAAY,iBAAiB;IAC7B,gBAAgB,2BAA2B;IAC3C,uBAAuB,4BAA4B;IACnD,cAAc,mBAAmB;CAClC;AAED;;;GAGG;AACH,oBAAY,6BAA6B;IACvC,aAAa,iDAAiD;IAC9D,eAAe,8BAA8B;IAC7C,cAAc,0CAA0C;IACxD,qBAAqB,oDAAoD;IACzE,YAAY,6DAA6D;IACzE,gBAAgB,uEAAuE;IACvF,uBAAuB,+DAA+D;IACtF,cAAc,sEAAsE;CACrF;AAED;;;GAGG;AACH,oBAAY,kBAAkB;IAC5B,QAAQ,MAAM;IACd,OAAO,OAAO;IACd,YAAY,OAAO;IACnB,WAAW,QAAQ;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UA8BhC,CAAC;AAEF;;;GAGG;AACH,oBAAY,+BAA+B;IACzC,cAAc,8BAA8B;IAC5C,sBAAsB,sBAAsB;IAC5C,eAAe,eAAe;CAC/B;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,8eA0B9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,UAAsC,CAAC"}
package/dist/esm/types.js CHANGED
@@ -84,6 +84,8 @@ export const legacySemanticValues = [
84
84
  export var experimentalOpenTelemetryValues;
85
85
  (function (experimentalOpenTelemetryValues) {
86
86
  experimentalOpenTelemetryValues["SYNTHETIC_TYPE"] = "user_agent.synthetic.type";
87
+ experimentalOpenTelemetryValues["ATTR_ENDUSER_PSEUDO_ID"] = "enduser.pseudo.id";
88
+ experimentalOpenTelemetryValues["ATTR_ENDUSER_ID"] = "enduser.id";
87
89
  })(experimentalOpenTelemetryValues || (experimentalOpenTelemetryValues = {}));
88
90
  /**
89
91
  * HTTP semantic convention values
@@ -112,6 +114,8 @@ export const httpSemanticValues = [
112
114
  ATTR_EXCEPTION_TYPE,
113
115
  ATTR_EXCEPTION_MESSAGE,
114
116
  ATTR_EXCEPTION_STACKTRACE,
117
+ experimentalOpenTelemetryValues.ATTR_ENDUSER_ID,
118
+ experimentalOpenTelemetryValues.ATTR_ENDUSER_PSEUDO_ID,
115
119
  experimentalOpenTelemetryValues.SYNTHETIC_TYPE,
116
120
  ];
117
121
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n ATTR_CLIENT_ADDRESS,\n ATTR_CLIENT_PORT,\n ATTR_ERROR_TYPE,\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_LOCAL_ADDRESS,\n ATTR_NETWORK_LOCAL_PORT,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_NETWORK_PROTOCOL_NAME,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_NETWORK_TRANSPORT,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_USER_AGENT_ORIGINAL,\n SEMATTRS_DB_NAME,\n SEMATTRS_DB_OPERATION,\n SEMATTRS_DB_STATEMENT,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_ENDUSER_ID,\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_EXCEPTION_STACKTRACE,\n SEMATTRS_EXCEPTION_TYPE,\n SEMATTRS_HTTP_CLIENT_IP,\n SEMATTRS_HTTP_FLAVOR,\n SEMATTRS_HTTP_HOST,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_ROUTE,\n SEMATTRS_HTTP_SCHEME,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_TARGET,\n SEMATTRS_HTTP_URL,\n SEMATTRS_HTTP_USER_AGENT,\n SEMATTRS_NET_HOST_IP,\n SEMATTRS_NET_HOST_NAME,\n SEMATTRS_NET_HOST_PORT,\n SEMATTRS_NET_PEER_IP,\n SEMATTRS_NET_PEER_NAME,\n SEMATTRS_NET_PEER_PORT,\n SEMATTRS_NET_TRANSPORT,\n SEMATTRS_PEER_SERVICE,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n SEMATTRS_RPC_SYSTEM,\n} from \"@opentelemetry/semantic-conventions\";\nimport type { ContextTagKeys } from \"./generated/index.js\";\n\n/**\n * Azure Monitor envelope tags.\n * @internal\n */\nexport type Tags = { [key in ContextTagKeys]: string };\n/**\n * Azure Monitor envelope property type.\n * @internal\n */\nexport type PropertyType = string | number | boolean | object | Array<PropertyType>;\n/**\n * Azure Monitor envelope properties.\n * @internal\n */\nexport type Properties = { [key: string]: Properties | PropertyType };\n/**\n * Azure Monitor envelope links.\n * @internal\n */\nexport interface MSLink {\n operation_Id: string;\n id: string;\n}\n/**\n * Azure Monitor envelope measurements.\n * @internal\n */\nexport type Measurements = { [key: string]: number };\n/**\n * Exporter sender result.\n * @internal\n */\nexport type SenderResult = { statusCode: number | undefined; result: string };\n\n/**\n * Exporter persistent storage.\n * @internal\n */\nexport interface PersistentStorage {\n shift(): Promise<unknown>;\n push(value: unknown[]): Promise<boolean>;\n}\n\n/**\n * Performance Counter OpenTelemetry compliant names.\n * @internal\n */\nexport enum OTelPerformanceCounterNames {\n PRIVATE_BYTES = \"Private_Bytes\",\n AVAILABLE_BYTES = \"Available_Bytes\",\n PROCESSOR_TIME = \"Processor_Time\",\n PROCESS_TIME_STANDARD = \"Process_Time_Standard\",\n REQUEST_RATE = \"Request_Rate\",\n REQUEST_DURATION = \"Request_Execution_Time\",\n PROCESS_TIME_NORMALIZED = \"Process_Time_Normalized\",\n EXCEPTION_RATE = \"Exception_Rate\",\n}\n\n/**\n * Breeze Performance Counter names.\n * @internal\n */\nexport enum BreezePerformanceCounterNames {\n PRIVATE_BYTES = \"\\\\Process(??APP_WIN32_PROC??)\\\\Private Bytes\",\n AVAILABLE_BYTES = \"\\\\Memory\\\\Available Bytes\",\n PROCESSOR_TIME = \"\\\\Processor(_Total)\\\\% Processor Time\",\n PROCESS_TIME_STANDARD = \"\\\\Process(??APP_WIN32_PROC??)\\\\% Processor Time\",\n REQUEST_RATE = \"\\\\ASP.NET Applications(??APP_W3SVC_PROC??)\\\\Requests/Sec\",\n REQUEST_DURATION = \"\\\\ASP.NET Applications(??APP_W3SVC_PROC??)\\\\Request Execution Time\",\n PROCESS_TIME_NORMALIZED = \"\\\\Process(??APP_WIN32_PROC??)\\\\% Processor Time Normalized\",\n EXCEPTION_RATE = \"\\\\.NET CLR Exceptions(??APP_CLR_PROC??)\\\\# of Exceps Thrown / sec\",\n}\n\n/**\n * Property Max Lengths\n * @internal\n */\nexport enum MaxPropertyLengths {\n NINE_BIT = 512,\n TEN_BIT = 1024,\n THIRTEEN_BIT = 8192,\n FIFTEEN_BIT = 32768,\n}\n\n/**\n * Legacy HTTP semantic convention values\n * @internal\n */\nexport const legacySemanticValues = [\n SEMATTRS_NET_PEER_IP,\n SEMATTRS_NET_PEER_NAME,\n SEMATTRS_NET_HOST_IP,\n SEMATTRS_PEER_SERVICE,\n SEMATTRS_HTTP_USER_AGENT,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_URL,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_ROUTE,\n SEMATTRS_HTTP_HOST,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_DB_STATEMENT,\n SEMATTRS_DB_OPERATION,\n SEMATTRS_DB_NAME,\n SEMATTRS_RPC_SYSTEM,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n SEMATTRS_EXCEPTION_TYPE,\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_EXCEPTION_STACKTRACE,\n SEMATTRS_HTTP_SCHEME,\n SEMATTRS_HTTP_TARGET,\n SEMATTRS_HTTP_FLAVOR,\n SEMATTRS_NET_TRANSPORT,\n SEMATTRS_NET_HOST_NAME,\n SEMATTRS_NET_HOST_PORT,\n SEMATTRS_NET_PEER_PORT,\n SEMATTRS_HTTP_CLIENT_IP,\n SEMATTRS_ENDUSER_ID,\n \"http.status_text\",\n];\n\n/**\n * Experimental OpenTelemetry semantic convention values\n * @internal\n */\nexport enum experimentalOpenTelemetryValues {\n SYNTHETIC_TYPE = \"user_agent.synthetic.type\",\n}\n\n/**\n * HTTP semantic convention values\n * @internal\n */\nexport const httpSemanticValues = [\n ATTR_CLIENT_ADDRESS,\n ATTR_CLIENT_PORT,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_ERROR_TYPE,\n ATTR_NETWORK_LOCAL_ADDRESS,\n ATTR_NETWORK_LOCAL_PORT,\n ATTR_NETWORK_PROTOCOL_NAME,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_NETWORK_TRANSPORT,\n ATTR_USER_AGENT_ORIGINAL,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_EXCEPTION_TYPE,\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n experimentalOpenTelemetryValues.SYNTHETIC_TYPE,\n];\n\n/**\n * Internal Microsoft attributes\n * @internal\n */\nexport const internalMicrosoftAttributes = [\"_MS.ProcessedByMetricExtractors\"];\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n ATTR_CLIENT_ADDRESS,\n ATTR_CLIENT_PORT,\n ATTR_ERROR_TYPE,\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_LOCAL_ADDRESS,\n ATTR_NETWORK_LOCAL_PORT,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_NETWORK_PROTOCOL_NAME,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_NETWORK_TRANSPORT,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_USER_AGENT_ORIGINAL,\n SEMATTRS_DB_NAME,\n SEMATTRS_DB_OPERATION,\n SEMATTRS_DB_STATEMENT,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_ENDUSER_ID,\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_EXCEPTION_STACKTRACE,\n SEMATTRS_EXCEPTION_TYPE,\n SEMATTRS_HTTP_CLIENT_IP,\n SEMATTRS_HTTP_FLAVOR,\n SEMATTRS_HTTP_HOST,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_ROUTE,\n SEMATTRS_HTTP_SCHEME,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_TARGET,\n SEMATTRS_HTTP_URL,\n SEMATTRS_HTTP_USER_AGENT,\n SEMATTRS_NET_HOST_IP,\n SEMATTRS_NET_HOST_NAME,\n SEMATTRS_NET_HOST_PORT,\n SEMATTRS_NET_PEER_IP,\n SEMATTRS_NET_PEER_NAME,\n SEMATTRS_NET_PEER_PORT,\n SEMATTRS_NET_TRANSPORT,\n SEMATTRS_PEER_SERVICE,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n SEMATTRS_RPC_SYSTEM,\n} from \"@opentelemetry/semantic-conventions\";\nimport type { ContextTagKeys } from \"./generated/index.js\";\n\n/**\n * Azure Monitor envelope tags.\n * @internal\n */\nexport type Tags = { [key in ContextTagKeys]: string };\n/**\n * Azure Monitor envelope property type.\n * @internal\n */\nexport type PropertyType = string | number | boolean | object | Array<PropertyType>;\n/**\n * Azure Monitor envelope properties.\n * @internal\n */\nexport type Properties = { [key: string]: Properties | PropertyType };\n/**\n * Azure Monitor envelope links.\n * @internal\n */\nexport interface MSLink {\n operation_Id: string;\n id: string;\n}\n/**\n * Azure Monitor envelope measurements.\n * @internal\n */\nexport type Measurements = { [key: string]: number };\n/**\n * Exporter sender result.\n * @internal\n */\nexport type SenderResult = { statusCode: number | undefined; result: string };\n\n/**\n * Exporter persistent storage.\n * @internal\n */\nexport interface PersistentStorage {\n shift(): Promise<unknown>;\n push(value: unknown[]): Promise<boolean>;\n}\n\n/**\n * Performance Counter OpenTelemetry compliant names.\n * @internal\n */\nexport enum OTelPerformanceCounterNames {\n PRIVATE_BYTES = \"Private_Bytes\",\n AVAILABLE_BYTES = \"Available_Bytes\",\n PROCESSOR_TIME = \"Processor_Time\",\n PROCESS_TIME_STANDARD = \"Process_Time_Standard\",\n REQUEST_RATE = \"Request_Rate\",\n REQUEST_DURATION = \"Request_Execution_Time\",\n PROCESS_TIME_NORMALIZED = \"Process_Time_Normalized\",\n EXCEPTION_RATE = \"Exception_Rate\",\n}\n\n/**\n * Breeze Performance Counter names.\n * @internal\n */\nexport enum BreezePerformanceCounterNames {\n PRIVATE_BYTES = \"\\\\Process(??APP_WIN32_PROC??)\\\\Private Bytes\",\n AVAILABLE_BYTES = \"\\\\Memory\\\\Available Bytes\",\n PROCESSOR_TIME = \"\\\\Processor(_Total)\\\\% Processor Time\",\n PROCESS_TIME_STANDARD = \"\\\\Process(??APP_WIN32_PROC??)\\\\% Processor Time\",\n REQUEST_RATE = \"\\\\ASP.NET Applications(??APP_W3SVC_PROC??)\\\\Requests/Sec\",\n REQUEST_DURATION = \"\\\\ASP.NET Applications(??APP_W3SVC_PROC??)\\\\Request Execution Time\",\n PROCESS_TIME_NORMALIZED = \"\\\\Process(??APP_WIN32_PROC??)\\\\% Processor Time Normalized\",\n EXCEPTION_RATE = \"\\\\.NET CLR Exceptions(??APP_CLR_PROC??)\\\\# of Exceps Thrown / sec\",\n}\n\n/**\n * Property Max Lengths\n * @internal\n */\nexport enum MaxPropertyLengths {\n NINE_BIT = 512,\n TEN_BIT = 1024,\n THIRTEEN_BIT = 8192,\n FIFTEEN_BIT = 32768,\n}\n\n/**\n * Legacy HTTP semantic convention values\n * @internal\n */\nexport const legacySemanticValues = [\n SEMATTRS_NET_PEER_IP,\n SEMATTRS_NET_PEER_NAME,\n SEMATTRS_NET_HOST_IP,\n SEMATTRS_PEER_SERVICE,\n SEMATTRS_HTTP_USER_AGENT,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_URL,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_ROUTE,\n SEMATTRS_HTTP_HOST,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_DB_STATEMENT,\n SEMATTRS_DB_OPERATION,\n SEMATTRS_DB_NAME,\n SEMATTRS_RPC_SYSTEM,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n SEMATTRS_EXCEPTION_TYPE,\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_EXCEPTION_STACKTRACE,\n SEMATTRS_HTTP_SCHEME,\n SEMATTRS_HTTP_TARGET,\n SEMATTRS_HTTP_FLAVOR,\n SEMATTRS_NET_TRANSPORT,\n SEMATTRS_NET_HOST_NAME,\n SEMATTRS_NET_HOST_PORT,\n SEMATTRS_NET_PEER_PORT,\n SEMATTRS_HTTP_CLIENT_IP,\n SEMATTRS_ENDUSER_ID,\n \"http.status_text\",\n];\n\n/**\n * Experimental OpenTelemetry semantic convention values\n * @internal\n */\nexport enum experimentalOpenTelemetryValues {\n SYNTHETIC_TYPE = \"user_agent.synthetic.type\",\n ATTR_ENDUSER_PSEUDO_ID = \"enduser.pseudo.id\",\n ATTR_ENDUSER_ID = \"enduser.id\",\n}\n\n/**\n * HTTP semantic convention values\n * @internal\n */\nexport const httpSemanticValues = [\n ATTR_CLIENT_ADDRESS,\n ATTR_CLIENT_PORT,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_ERROR_TYPE,\n ATTR_NETWORK_LOCAL_ADDRESS,\n ATTR_NETWORK_LOCAL_PORT,\n ATTR_NETWORK_PROTOCOL_NAME,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_NETWORK_TRANSPORT,\n ATTR_USER_AGENT_ORIGINAL,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_EXCEPTION_TYPE,\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n experimentalOpenTelemetryValues.ATTR_ENDUSER_ID,\n experimentalOpenTelemetryValues.ATTR_ENDUSER_PSEUDO_ID,\n experimentalOpenTelemetryValues.SYNTHETIC_TYPE,\n];\n\n/**\n * Internal Microsoft attributes\n * @internal\n */\nexport const internalMicrosoftAttributes = [\"_MS.ProcessedByMetricExtractors\"];\n"]}
@@ -17,7 +17,7 @@ export declare const TIME_SINCE_ENQUEUED = "timeSinceEnqueued";
17
17
  * AzureMonitorTraceExporter version.
18
18
  * @internal
19
19
  */
20
- export declare const packageVersion = "1.0.0-beta.33";
20
+ export declare const packageVersion = "1.0.0-beta.34";
21
21
  export declare enum DependencyTypes {
22
22
  InProc = "InProc",
23
23
  QueueMessage = "Queue Message",
@@ -29,6 +29,7 @@ export declare enum DependencyTypes {
29
29
  export declare const AzureMonitorSampleRate = "microsoft.sample_rate";
30
30
  export declare const ApplicationInsightsBaseType = "_MS.baseType";
31
31
  export declare const ApplicationInsightsCustomEventName = "microsoft.custom_event.name";
32
+ export declare const MicrosoftClientIp = "microsoft.client.ip";
32
33
  export declare const ApplicationInsightsMessageName = "Microsoft.ApplicationInsights.Message";
33
34
  export declare const ApplicationInsightsExceptionName = "Microsoft.ApplicationInsights.Exception";
34
35
  export declare const ApplicationInsightsPageViewName = "Microsoft.ApplicationInsights.PageView";
@@ -1 +1 @@
1
- {"version":3,"file":"applicationinsights.d.ts","sourceRoot":"","sources":["../../../../src/utils/constants/applicationinsights.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,QAAQ,cAAc,CAAC;AACpC;;;GAGG;AACH,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAC5C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD;;;GAGG;AACH,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAE9C,oBAAY,eAAe;IACzB,MAAM,WAAW;IACjB,YAAY,kBAAkB;IAC9B,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,GAAG,gBAAgB;CACpB;AAED,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAC9D,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAC1D,eAAO,MAAM,kCAAkC,gCAAgC,CAAC;AAEhF,eAAO,MAAM,8BAA8B,0CAA0C,CAAC;AACtF,eAAO,MAAM,gCAAgC,4CAA4C,CAAC;AAC1F,eAAO,MAAM,+BAA+B,2CAA2C,CAAC;AACxF,eAAO,MAAM,mCAAmC,+CAA+C,CAAC;AAChG,eAAO,MAAM,4BAA4B,wCAAwC,CAAC;AAElF,eAAO,MAAM,kCAAkC,gBAAgB,CAAC;AAChE,eAAO,MAAM,oCAAoC,kBAAkB,CAAC;AACpE,eAAO,MAAM,mCAAmC,iBAAiB,CAAC;AAClE,eAAO,MAAM,uCAAuC,qBAAqB,CAAC;AAC1E,eAAO,MAAM,gCAAgC,cAAc,CAAC"}
1
+ {"version":3,"file":"applicationinsights.d.ts","sourceRoot":"","sources":["../../../../src/utils/constants/applicationinsights.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,QAAQ,cAAc,CAAC;AACpC;;;GAGG;AACH,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAC5C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD;;;GAGG;AACH,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAE9C,oBAAY,eAAe;IACzB,MAAM,WAAW;IACjB,YAAY,kBAAkB;IAC9B,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,GAAG,gBAAgB;CACpB;AAED,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAC9D,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAC1D,eAAO,MAAM,kCAAkC,gCAAgC,CAAC;AAChF,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAEvD,eAAO,MAAM,8BAA8B,0CAA0C,CAAC;AACtF,eAAO,MAAM,gCAAgC,4CAA4C,CAAC;AAC1F,eAAO,MAAM,+BAA+B,2CAA2C,CAAC;AACxF,eAAO,MAAM,mCAAmC,+CAA+C,CAAC;AAChG,eAAO,MAAM,4BAA4B,wCAAwC,CAAC;AAElF,eAAO,MAAM,kCAAkC,gBAAgB,CAAC;AAChE,eAAO,MAAM,oCAAoC,kBAAkB,CAAC;AACpE,eAAO,MAAM,mCAAmC,iBAAiB,CAAC;AAClE,eAAO,MAAM,uCAAuC,qBAAqB,CAAC;AAC1E,eAAO,MAAM,gCAAgC,cAAc,CAAC"}
@@ -19,7 +19,7 @@ export const TIME_SINCE_ENQUEUED = "timeSinceEnqueued";
19
19
  * AzureMonitorTraceExporter version.
20
20
  * @internal
21
21
  */
22
- export const packageVersion = "1.0.0-beta.33";
22
+ export const packageVersion = "1.0.0-beta.34";
23
23
  export var DependencyTypes;
24
24
  (function (DependencyTypes) {
25
25
  DependencyTypes["InProc"] = "InProc";
@@ -32,6 +32,7 @@ export var DependencyTypes;
32
32
  export const AzureMonitorSampleRate = "microsoft.sample_rate";
33
33
  export const ApplicationInsightsBaseType = "_MS.baseType";
34
34
  export const ApplicationInsightsCustomEventName = "microsoft.custom_event.name";
35
+ export const MicrosoftClientIp = "microsoft.client.ip";
35
36
  export const ApplicationInsightsMessageName = "Microsoft.ApplicationInsights.Message";
36
37
  export const ApplicationInsightsExceptionName = "Microsoft.ApplicationInsights.Exception";
37
38
  export const ApplicationInsightsPageViewName = "Microsoft.ApplicationInsights.PageView";
@@ -1 +1 @@
1
- {"version":3,"file":"applicationinsights.js","sourceRoot":"","sources":["../../../../src/utils/constants/applicationinsights.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC;AACpC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAC5C;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;AAE9C,MAAM,CAAN,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,iDAA8B,CAAA;IAC9B,8BAAW,CAAA;IACX,gCAAa,CAAA;IACb,gCAAa,CAAA;IACb,sCAAmB,CAAA;AACrB,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC;AAC9D,MAAM,CAAC,MAAM,2BAA2B,GAAG,cAAc,CAAC;AAC1D,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAA6B,CAAC;AAEhF,MAAM,CAAC,MAAM,8BAA8B,GAAG,uCAAuC,CAAC;AACtF,MAAM,CAAC,MAAM,gCAAgC,GAAG,yCAAyC,CAAC;AAC1F,MAAM,CAAC,MAAM,+BAA+B,GAAG,wCAAwC,CAAC;AACxF,MAAM,CAAC,MAAM,mCAAmC,GAAG,4CAA4C,CAAC;AAChG,MAAM,CAAC,MAAM,4BAA4B,GAAG,qCAAqC,CAAC;AAElF,MAAM,CAAC,MAAM,kCAAkC,GAAG,aAAa,CAAC;AAChE,MAAM,CAAC,MAAM,oCAAoC,GAAG,eAAe,CAAC;AACpE,MAAM,CAAC,MAAM,mCAAmC,GAAG,cAAc,CAAC;AAClE,MAAM,CAAC,MAAM,uCAAuC,GAAG,kBAAkB,CAAC;AAC1E,MAAM,CAAC,MAAM,gCAAgC,GAAG,WAAW,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * AI MS Links.\n * @internal\n */\nexport const MS_LINKS = \"_MS.links\";\n/**\n * AI enqueued time attribute.\n * @internal\n */\nexport const ENQUEUED_TIME = \"enqueuedTime\";\n/**\n * AI time since enqueued attribute.\n * @internal\n */\nexport const TIME_SINCE_ENQUEUED = \"timeSinceEnqueued\";\n/**\n * AzureMonitorTraceExporter version.\n * @internal\n */\nexport const packageVersion = \"1.0.0-beta.33\";\n\nexport enum DependencyTypes {\n InProc = \"InProc\",\n QueueMessage = \"Queue Message\",\n Sql = \"SQL\",\n Http = \"Http\",\n Grpc = \"GRPC\",\n Wcf = \"WCF Service\",\n}\n\nexport const AzureMonitorSampleRate = \"microsoft.sample_rate\";\nexport const ApplicationInsightsBaseType = \"_MS.baseType\";\nexport const ApplicationInsightsCustomEventName = \"microsoft.custom_event.name\";\n\nexport const ApplicationInsightsMessageName = \"Microsoft.ApplicationInsights.Message\";\nexport const ApplicationInsightsExceptionName = \"Microsoft.ApplicationInsights.Exception\";\nexport const ApplicationInsightsPageViewName = \"Microsoft.ApplicationInsights.PageView\";\nexport const ApplicationInsightsAvailabilityName = \"Microsoft.ApplicationInsights.Availability\";\nexport const ApplicationInsightsEventName = \"Microsoft.ApplicationInsights.Event\";\n\nexport const ApplicationInsightsMessageBaseType = \"MessageData\";\nexport const ApplicationInsightsExceptionBaseType = \"ExceptionData\";\nexport const ApplicationInsightsPageViewBaseType = \"PageViewData\";\nexport const ApplicationInsightsAvailabilityBaseType = \"AvailabilityData\";\nexport const ApplicationInsightsEventBaseType = \"EventData\";\n"]}
1
+ {"version":3,"file":"applicationinsights.js","sourceRoot":"","sources":["../../../../src/utils/constants/applicationinsights.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC;AACpC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAC5C;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;AAE9C,MAAM,CAAN,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,iDAA8B,CAAA;IAC9B,8BAAW,CAAA;IACX,gCAAa,CAAA;IACb,gCAAa,CAAA;IACb,sCAAmB,CAAA;AACrB,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC;AAC9D,MAAM,CAAC,MAAM,2BAA2B,GAAG,cAAc,CAAC;AAC1D,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAA6B,CAAC;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEvD,MAAM,CAAC,MAAM,8BAA8B,GAAG,uCAAuC,CAAC;AACtF,MAAM,CAAC,MAAM,gCAAgC,GAAG,yCAAyC,CAAC;AAC1F,MAAM,CAAC,MAAM,+BAA+B,GAAG,wCAAwC,CAAC;AACxF,MAAM,CAAC,MAAM,mCAAmC,GAAG,4CAA4C,CAAC;AAChG,MAAM,CAAC,MAAM,4BAA4B,GAAG,qCAAqC,CAAC;AAElF,MAAM,CAAC,MAAM,kCAAkC,GAAG,aAAa,CAAC;AAChE,MAAM,CAAC,MAAM,oCAAoC,GAAG,eAAe,CAAC;AACpE,MAAM,CAAC,MAAM,mCAAmC,GAAG,cAAc,CAAC;AAClE,MAAM,CAAC,MAAM,uCAAuC,GAAG,kBAAkB,CAAC;AAC1E,MAAM,CAAC,MAAM,gCAAgC,GAAG,WAAW,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * AI MS Links.\n * @internal\n */\nexport const MS_LINKS = \"_MS.links\";\n/**\n * AI enqueued time attribute.\n * @internal\n */\nexport const ENQUEUED_TIME = \"enqueuedTime\";\n/**\n * AI time since enqueued attribute.\n * @internal\n */\nexport const TIME_SINCE_ENQUEUED = \"timeSinceEnqueued\";\n/**\n * AzureMonitorTraceExporter version.\n * @internal\n */\nexport const packageVersion = \"1.0.0-beta.34\";\n\nexport enum DependencyTypes {\n InProc = \"InProc\",\n QueueMessage = \"Queue Message\",\n Sql = \"SQL\",\n Http = \"Http\",\n Grpc = \"GRPC\",\n Wcf = \"WCF Service\",\n}\n\nexport const AzureMonitorSampleRate = \"microsoft.sample_rate\";\nexport const ApplicationInsightsBaseType = \"_MS.baseType\";\nexport const ApplicationInsightsCustomEventName = \"microsoft.custom_event.name\";\nexport const MicrosoftClientIp = \"microsoft.client.ip\";\n\nexport const ApplicationInsightsMessageName = \"Microsoft.ApplicationInsights.Message\";\nexport const ApplicationInsightsExceptionName = \"Microsoft.ApplicationInsights.Exception\";\nexport const ApplicationInsightsPageViewName = \"Microsoft.ApplicationInsights.PageView\";\nexport const ApplicationInsightsAvailabilityName = \"Microsoft.ApplicationInsights.Availability\";\nexport const ApplicationInsightsEventName = \"Microsoft.ApplicationInsights.Event\";\n\nexport const ApplicationInsightsMessageBaseType = \"MessageData\";\nexport const ApplicationInsightsExceptionBaseType = \"ExceptionData\";\nexport const ApplicationInsightsPageViewBaseType = \"PageViewData\";\nexport const ApplicationInsightsAvailabilityBaseType = \"AvailabilityData\";\nexport const ApplicationInsightsEventBaseType = \"EventData\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"logUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/logUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,aAAa,IAAI,QAAQ,EAO1B,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AA0BjE;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAwFxF"}
1
+ {"version":3,"file":"logUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/logUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,aAAa,IAAI,QAAQ,EAO1B,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AA2BjE;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAwFxF"}
@@ -3,10 +3,10 @@
3
3
  import { KnownContextTagKeys, KnownSeverityLevel } from "../generated/index.js";
4
4
  import { createTagsFromResource, hrTimeToDate, isSyntheticSource, serializeAttribute, } from "./common.js";
5
5
  import { ATTR_EXCEPTION_MESSAGE, ATTR_EXCEPTION_STACKTRACE, ATTR_EXCEPTION_TYPE, } from "@opentelemetry/semantic-conventions";
6
+ import { experimentalOpenTelemetryValues } from "../types.js";
6
7
  import { httpSemanticValues, legacySemanticValues, MaxPropertyLengths } from "../types.js";
7
8
  import { diag } from "@opentelemetry/api";
8
- import { ApplicationInsightsAvailabilityBaseType, ApplicationInsightsAvailabilityName, ApplicationInsightsBaseType, ApplicationInsightsCustomEventName, ApplicationInsightsEventBaseType, ApplicationInsightsEventName, ApplicationInsightsExceptionBaseType, ApplicationInsightsExceptionName, ApplicationInsightsMessageBaseType, ApplicationInsightsMessageName, ApplicationInsightsPageViewBaseType, ApplicationInsightsPageViewName, } from "./constants/applicationinsights.js";
9
- import { getLocationIp } from "./spanUtils.js";
9
+ import { ApplicationInsightsAvailabilityBaseType, ApplicationInsightsAvailabilityName, ApplicationInsightsBaseType, ApplicationInsightsCustomEventName, ApplicationInsightsEventBaseType, ApplicationInsightsEventName, ApplicationInsightsExceptionBaseType, ApplicationInsightsExceptionName, ApplicationInsightsMessageBaseType, ApplicationInsightsMessageName, ApplicationInsightsPageViewBaseType, ApplicationInsightsPageViewName, MicrosoftClientIp, } from "./constants/applicationinsights.js";
10
10
  /**
11
11
  * Log to Azure envelope parsing.
12
12
  * @internal
@@ -115,7 +115,25 @@ function createTagsFromLog(log) {
115
115
  if (isSyntheticSource(log.attributes)) {
116
116
  tags[KnownContextTagKeys.AiOperationSyntheticSource] = "True";
117
117
  }
118
- getLocationIp(tags, log.attributes);
118
+ // Set ai.location.ip from microsoft.client.ip if it exists
119
+ const microsoftClientIp = log.attributes?.[MicrosoftClientIp];
120
+ if (microsoftClientIp) {
121
+ tags[KnownContextTagKeys.AiLocationIp] = String(microsoftClientIp);
122
+ }
123
+ // Map user ID attributes
124
+ const attributes = log.attributes;
125
+ if (attributes[experimentalOpenTelemetryValues.ATTR_ENDUSER_ID]) {
126
+ const endUserId = String(attributes[experimentalOpenTelemetryValues.ATTR_ENDUSER_ID]);
127
+ if (endUserId && endUserId.length > 0) {
128
+ tags[KnownContextTagKeys.AiUserAuthUserId] = endUserId;
129
+ }
130
+ }
131
+ if (attributes[experimentalOpenTelemetryValues.ATTR_ENDUSER_PSEUDO_ID]) {
132
+ const endUserPseudoId = String(attributes[experimentalOpenTelemetryValues.ATTR_ENDUSER_PSEUDO_ID]);
133
+ if (endUserPseudoId && endUserPseudoId.length > 0) {
134
+ tags[KnownContextTagKeys.AiUserId] = endUserPseudoId;
135
+ }
136
+ }
119
137
  return tags;
120
138
  }
121
139
  function createPropertiesFromLog(log) {
@@ -1 +1 @@
1
- {"version":3,"file":"logUtils.js","sourceRoot":"","sources":["../../../src/utils/logUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AvailabilityData,\n TelemetryItem as Envelope,\n MessageData,\n MonitorDomain,\n PageViewData,\n TelemetryEventData,\n TelemetryExceptionData,\n TelemetryExceptionDetails,\n} from \"../generated/index.js\";\nimport { KnownContextTagKeys, KnownSeverityLevel } from \"../generated/index.js\";\nimport {\n createTagsFromResource,\n hrTimeToDate,\n isSyntheticSource,\n serializeAttribute,\n} from \"./common.js\";\nimport type { ReadableLogRecord } from \"@opentelemetry/sdk-logs\";\nimport {\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n} from \"@opentelemetry/semantic-conventions\";\nimport type { Measurements, Properties, Tags } from \"../types.js\";\nimport { httpSemanticValues, legacySemanticValues, MaxPropertyLengths } from \"../types.js\";\nimport type { Attributes } from \"@opentelemetry/api\";\nimport { diag } from \"@opentelemetry/api\";\nimport {\n ApplicationInsightsAvailabilityBaseType,\n ApplicationInsightsAvailabilityName,\n ApplicationInsightsBaseType,\n ApplicationInsightsCustomEventName,\n ApplicationInsightsEventBaseType,\n ApplicationInsightsEventName,\n ApplicationInsightsExceptionBaseType,\n ApplicationInsightsExceptionName,\n ApplicationInsightsMessageBaseType,\n ApplicationInsightsMessageName,\n ApplicationInsightsPageViewBaseType,\n ApplicationInsightsPageViewName,\n} from \"./constants/applicationinsights.js\";\nimport { getLocationIp } from \"./spanUtils.js\";\n\n/**\n * Log to Azure envelope parsing.\n * @internal\n */\nexport function logToEnvelope(log: ReadableLogRecord, ikey: string): Envelope | undefined {\n const time = hrTimeToDate(log.hrTime);\n const sampleRate = 100;\n const instrumentationKey = ikey;\n const tags = createTagsFromLog(log);\n // eslint-disable-next-line prefer-const\n let [properties, measurements] = createPropertiesFromLog(log);\n let name: string;\n let baseType: string;\n let baseData: MonitorDomain;\n\n const exceptionStacktrace = log.attributes[ATTR_EXCEPTION_STACKTRACE];\n const exceptionType = log.attributes[ATTR_EXCEPTION_TYPE];\n const isExceptionType: boolean = !!(exceptionType && exceptionStacktrace) || false;\n const isMessageType: boolean =\n !log.attributes[ApplicationInsightsBaseType] &&\n !log.attributes[ApplicationInsightsCustomEventName] &&\n !exceptionType;\n if (isExceptionType) {\n const exceptionMessage = log.attributes[ATTR_EXCEPTION_MESSAGE];\n name = ApplicationInsightsExceptionName;\n baseType = ApplicationInsightsExceptionBaseType;\n const exceptionDetails: TelemetryExceptionDetails = {\n typeName: String(exceptionType),\n message: String(exceptionMessage),\n hasFullStack: exceptionStacktrace ? true : false,\n stack: String(exceptionStacktrace),\n };\n const exceptionData: TelemetryExceptionData = {\n exceptions: [exceptionDetails],\n severityLevel: String(getSeverity(log.severityNumber)),\n version: 2,\n };\n baseData = exceptionData;\n } else if (log.attributes[ApplicationInsightsCustomEventName]) {\n name = ApplicationInsightsEventName;\n baseType = ApplicationInsightsEventBaseType;\n const eventData: TelemetryEventData = {\n name: String(log.attributes[ApplicationInsightsCustomEventName]),\n version: 2,\n };\n baseData = eventData;\n measurements = getLegacyApplicationInsightsMeasurements(log);\n } else if (isMessageType) {\n name = ApplicationInsightsMessageName;\n baseType = ApplicationInsightsMessageBaseType;\n const messageData: MessageData = {\n message: String(log.body),\n severityLevel: String(getSeverity(log.severityNumber)),\n version: 2,\n };\n baseData = messageData;\n } else {\n // If Legacy Application Insights Log\n baseType = String(log.attributes[ApplicationInsightsBaseType]);\n name = getLegacyApplicationInsightsName(log);\n baseData = getLegacyApplicationInsightsBaseData(log);\n measurements = getLegacyApplicationInsightsMeasurements(log);\n if (!baseData) {\n // Failed to parse log\n return;\n }\n }\n // Truncate properties\n if (baseData.message) {\n baseData.message = String(baseData.message).substring(0, MaxPropertyLengths.FIFTEEN_BIT);\n }\n if (properties) {\n for (const key of Object.keys(properties)) {\n properties[key] = String(properties[key]).substring(0, MaxPropertyLengths.THIRTEEN_BIT);\n }\n }\n return {\n name,\n sampleRate,\n time,\n instrumentationKey,\n tags,\n version: 1,\n data: {\n baseType,\n baseData: {\n ...baseData,\n properties,\n measurements,\n },\n },\n };\n}\n\nfunction createTagsFromLog(log: ReadableLogRecord): Tags {\n const tags: Tags = createTagsFromResource(log.resource);\n if (log.spanContext?.traceId) {\n tags[KnownContextTagKeys.AiOperationId] = log.spanContext.traceId;\n }\n if (log.spanContext?.spanId) {\n tags[KnownContextTagKeys.AiOperationParentId] = log.spanContext.spanId;\n }\n if (log.attributes[KnownContextTagKeys.AiOperationName]) {\n tags[KnownContextTagKeys.AiOperationName] = log.attributes[\n KnownContextTagKeys.AiOperationName\n ] as string;\n }\n if (isSyntheticSource(log.attributes as Attributes)) {\n tags[KnownContextTagKeys.AiOperationSyntheticSource] = \"True\";\n }\n getLocationIp(tags, log.attributes as Attributes);\n return tags;\n}\n\nfunction createPropertiesFromLog(log: ReadableLogRecord): [Properties, Measurements] {\n const measurements: Measurements = {};\n const properties: { [propertyName: string]: string } = {};\n if (log.attributes) {\n for (const key of Object.keys(log.attributes)) {\n // Avoid duplication ignoring fields already mapped.\n if (\n !(\n key.startsWith(\"_MS.\") ||\n key.startsWith(\"microsoft\") ||\n legacySemanticValues.includes(key) ||\n httpSemanticValues.includes(key as any) ||\n key === (KnownContextTagKeys.AiOperationName as string)\n )\n ) {\n properties[key] = serializeAttribute(log.attributes[key]);\n }\n }\n }\n return [properties, measurements];\n}\n\n// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#field-severitynumber\nfunction getSeverity(severityNumber: number | undefined): KnownSeverityLevel | undefined {\n if (severityNumber) {\n if (severityNumber > 0 && severityNumber < 9) {\n return KnownSeverityLevel.Verbose;\n } else if (severityNumber >= 9 && severityNumber < 13) {\n return KnownSeverityLevel.Information;\n } else if (severityNumber >= 13 && severityNumber < 17) {\n return KnownSeverityLevel.Warning;\n } else if (severityNumber >= 17 && severityNumber < 21) {\n return KnownSeverityLevel.Error;\n } else if (severityNumber >= 21 && severityNumber < 25) {\n return KnownSeverityLevel.Critical;\n }\n }\n return;\n}\n\nfunction getLegacyApplicationInsightsName(log: ReadableLogRecord): string {\n let name = \"\";\n switch (log.attributes[ApplicationInsightsBaseType]) {\n case ApplicationInsightsAvailabilityBaseType:\n name = ApplicationInsightsAvailabilityName;\n break;\n case ApplicationInsightsExceptionBaseType:\n name = ApplicationInsightsExceptionName;\n break;\n case ApplicationInsightsMessageBaseType:\n name = ApplicationInsightsMessageName;\n break;\n case ApplicationInsightsPageViewBaseType:\n name = ApplicationInsightsPageViewName;\n break;\n case ApplicationInsightsEventBaseType:\n name = ApplicationInsightsEventName;\n break;\n }\n return name;\n}\n\nfunction getLegacyApplicationInsightsMeasurements(log: ReadableLogRecord): Measurements {\n let measurements: Measurements = {};\n if ((log.body as MonitorDomain)?.measurements) {\n measurements = { ...(log.body as MonitorDomain).measurements };\n }\n return measurements;\n}\n\nfunction getLegacyApplicationInsightsBaseData(log: ReadableLogRecord): MonitorDomain {\n let baseData: MonitorDomain = {\n version: 2,\n };\n if (log.body) {\n try {\n switch (log.attributes[ApplicationInsightsBaseType]) {\n case ApplicationInsightsAvailabilityBaseType:\n baseData = log.body as AvailabilityData;\n break;\n case ApplicationInsightsExceptionBaseType:\n baseData = log.body as TelemetryExceptionData;\n break;\n case ApplicationInsightsMessageBaseType:\n baseData = log.body as MessageData;\n break;\n case ApplicationInsightsPageViewBaseType:\n baseData = log.body as PageViewData;\n break;\n case ApplicationInsightsEventBaseType:\n baseData = log.body as TelemetryEventData;\n break;\n }\n if (typeof baseData?.message === \"object\") {\n baseData.message = JSON.stringify(baseData.message);\n }\n } catch (err) {\n diag.error(\"AzureMonitorLogExporter failed to parse Application Insights Telemetry\");\n }\n }\n return baseData;\n}\n"]}
1
+ {"version":3,"file":"logUtils.js","sourceRoot":"","sources":["../../../src/utils/logUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AvailabilityData,\n TelemetryItem as Envelope,\n MessageData,\n MonitorDomain,\n PageViewData,\n TelemetryEventData,\n TelemetryExceptionData,\n TelemetryExceptionDetails,\n} from \"../generated/index.js\";\nimport { KnownContextTagKeys, KnownSeverityLevel } from \"../generated/index.js\";\nimport {\n createTagsFromResource,\n hrTimeToDate,\n isSyntheticSource,\n serializeAttribute,\n} from \"./common.js\";\nimport type { ReadableLogRecord } from \"@opentelemetry/sdk-logs\";\nimport {\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n} from \"@opentelemetry/semantic-conventions\";\nimport { experimentalOpenTelemetryValues } from \"../types.js\";\nimport type { Measurements, Properties, Tags } from \"../types.js\";\nimport { httpSemanticValues, legacySemanticValues, MaxPropertyLengths } from \"../types.js\";\nimport type { Attributes } from \"@opentelemetry/api\";\nimport { diag } from \"@opentelemetry/api\";\nimport {\n ApplicationInsightsAvailabilityBaseType,\n ApplicationInsightsAvailabilityName,\n ApplicationInsightsBaseType,\n ApplicationInsightsCustomEventName,\n ApplicationInsightsEventBaseType,\n ApplicationInsightsEventName,\n ApplicationInsightsExceptionBaseType,\n ApplicationInsightsExceptionName,\n ApplicationInsightsMessageBaseType,\n ApplicationInsightsMessageName,\n ApplicationInsightsPageViewBaseType,\n ApplicationInsightsPageViewName,\n MicrosoftClientIp,\n} from \"./constants/applicationinsights.js\";\n\n/**\n * Log to Azure envelope parsing.\n * @internal\n */\nexport function logToEnvelope(log: ReadableLogRecord, ikey: string): Envelope | undefined {\n const time = hrTimeToDate(log.hrTime);\n const sampleRate = 100;\n const instrumentationKey = ikey;\n const tags = createTagsFromLog(log);\n // eslint-disable-next-line prefer-const\n let [properties, measurements] = createPropertiesFromLog(log);\n let name: string;\n let baseType: string;\n let baseData: MonitorDomain;\n\n const exceptionStacktrace = log.attributes[ATTR_EXCEPTION_STACKTRACE];\n const exceptionType = log.attributes[ATTR_EXCEPTION_TYPE];\n const isExceptionType: boolean = !!(exceptionType && exceptionStacktrace) || false;\n const isMessageType: boolean =\n !log.attributes[ApplicationInsightsBaseType] &&\n !log.attributes[ApplicationInsightsCustomEventName] &&\n !exceptionType;\n if (isExceptionType) {\n const exceptionMessage = log.attributes[ATTR_EXCEPTION_MESSAGE];\n name = ApplicationInsightsExceptionName;\n baseType = ApplicationInsightsExceptionBaseType;\n const exceptionDetails: TelemetryExceptionDetails = {\n typeName: String(exceptionType),\n message: String(exceptionMessage),\n hasFullStack: exceptionStacktrace ? true : false,\n stack: String(exceptionStacktrace),\n };\n const exceptionData: TelemetryExceptionData = {\n exceptions: [exceptionDetails],\n severityLevel: String(getSeverity(log.severityNumber)),\n version: 2,\n };\n baseData = exceptionData;\n } else if (log.attributes[ApplicationInsightsCustomEventName]) {\n name = ApplicationInsightsEventName;\n baseType = ApplicationInsightsEventBaseType;\n const eventData: TelemetryEventData = {\n name: String(log.attributes[ApplicationInsightsCustomEventName]),\n version: 2,\n };\n baseData = eventData;\n measurements = getLegacyApplicationInsightsMeasurements(log);\n } else if (isMessageType) {\n name = ApplicationInsightsMessageName;\n baseType = ApplicationInsightsMessageBaseType;\n const messageData: MessageData = {\n message: String(log.body),\n severityLevel: String(getSeverity(log.severityNumber)),\n version: 2,\n };\n baseData = messageData;\n } else {\n // If Legacy Application Insights Log\n baseType = String(log.attributes[ApplicationInsightsBaseType]);\n name = getLegacyApplicationInsightsName(log);\n baseData = getLegacyApplicationInsightsBaseData(log);\n measurements = getLegacyApplicationInsightsMeasurements(log);\n if (!baseData) {\n // Failed to parse log\n return;\n }\n }\n // Truncate properties\n if (baseData.message) {\n baseData.message = String(baseData.message).substring(0, MaxPropertyLengths.FIFTEEN_BIT);\n }\n if (properties) {\n for (const key of Object.keys(properties)) {\n properties[key] = String(properties[key]).substring(0, MaxPropertyLengths.THIRTEEN_BIT);\n }\n }\n return {\n name,\n sampleRate,\n time,\n instrumentationKey,\n tags,\n version: 1,\n data: {\n baseType,\n baseData: {\n ...baseData,\n properties,\n measurements,\n },\n },\n };\n}\n\nfunction createTagsFromLog(log: ReadableLogRecord): Tags {\n const tags: Tags = createTagsFromResource(log.resource);\n if (log.spanContext?.traceId) {\n tags[KnownContextTagKeys.AiOperationId] = log.spanContext.traceId;\n }\n if (log.spanContext?.spanId) {\n tags[KnownContextTagKeys.AiOperationParentId] = log.spanContext.spanId;\n }\n if (log.attributes[KnownContextTagKeys.AiOperationName]) {\n tags[KnownContextTagKeys.AiOperationName] = log.attributes[\n KnownContextTagKeys.AiOperationName\n ] as string;\n }\n if (isSyntheticSource(log.attributes as Attributes)) {\n tags[KnownContextTagKeys.AiOperationSyntheticSource] = \"True\";\n }\n\n // Set ai.location.ip from microsoft.client.ip if it exists\n const microsoftClientIp = log.attributes?.[MicrosoftClientIp];\n if (microsoftClientIp) {\n tags[KnownContextTagKeys.AiLocationIp] = String(microsoftClientIp);\n }\n\n // Map user ID attributes\n const attributes = log.attributes as Attributes;\n if (attributes[experimentalOpenTelemetryValues.ATTR_ENDUSER_ID]) {\n const endUserId = String(attributes[experimentalOpenTelemetryValues.ATTR_ENDUSER_ID]);\n if (endUserId && endUserId.length > 0) {\n tags[KnownContextTagKeys.AiUserAuthUserId] = endUserId;\n }\n }\n if (attributes[experimentalOpenTelemetryValues.ATTR_ENDUSER_PSEUDO_ID]) {\n const endUserPseudoId = String(\n attributes[experimentalOpenTelemetryValues.ATTR_ENDUSER_PSEUDO_ID],\n );\n if (endUserPseudoId && endUserPseudoId.length > 0) {\n tags[KnownContextTagKeys.AiUserId] = endUserPseudoId;\n }\n }\n\n return tags;\n}\n\nfunction createPropertiesFromLog(log: ReadableLogRecord): [Properties, Measurements] {\n const measurements: Measurements = {};\n const properties: { [propertyName: string]: string } = {};\n if (log.attributes) {\n for (const key of Object.keys(log.attributes)) {\n // Avoid duplication ignoring fields already mapped.\n if (\n !(\n key.startsWith(\"_MS.\") ||\n key.startsWith(\"microsoft\") ||\n legacySemanticValues.includes(key) ||\n httpSemanticValues.includes(key as any) ||\n key === (KnownContextTagKeys.AiOperationName as string)\n )\n ) {\n properties[key] = serializeAttribute(log.attributes[key]);\n }\n }\n }\n return [properties, measurements];\n}\n\n// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#field-severitynumber\nfunction getSeverity(severityNumber: number | undefined): KnownSeverityLevel | undefined {\n if (severityNumber) {\n if (severityNumber > 0 && severityNumber < 9) {\n return KnownSeverityLevel.Verbose;\n } else if (severityNumber >= 9 && severityNumber < 13) {\n return KnownSeverityLevel.Information;\n } else if (severityNumber >= 13 && severityNumber < 17) {\n return KnownSeverityLevel.Warning;\n } else if (severityNumber >= 17 && severityNumber < 21) {\n return KnownSeverityLevel.Error;\n } else if (severityNumber >= 21 && severityNumber < 25) {\n return KnownSeverityLevel.Critical;\n }\n }\n return;\n}\n\nfunction getLegacyApplicationInsightsName(log: ReadableLogRecord): string {\n let name = \"\";\n switch (log.attributes[ApplicationInsightsBaseType]) {\n case ApplicationInsightsAvailabilityBaseType:\n name = ApplicationInsightsAvailabilityName;\n break;\n case ApplicationInsightsExceptionBaseType:\n name = ApplicationInsightsExceptionName;\n break;\n case ApplicationInsightsMessageBaseType:\n name = ApplicationInsightsMessageName;\n break;\n case ApplicationInsightsPageViewBaseType:\n name = ApplicationInsightsPageViewName;\n break;\n case ApplicationInsightsEventBaseType:\n name = ApplicationInsightsEventName;\n break;\n }\n return name;\n}\n\nfunction getLegacyApplicationInsightsMeasurements(log: ReadableLogRecord): Measurements {\n let measurements: Measurements = {};\n if ((log.body as MonitorDomain)?.measurements) {\n measurements = { ...(log.body as MonitorDomain).measurements };\n }\n return measurements;\n}\n\nfunction getLegacyApplicationInsightsBaseData(log: ReadableLogRecord): MonitorDomain {\n let baseData: MonitorDomain = {\n version: 2,\n };\n if (log.body) {\n try {\n switch (log.attributes[ApplicationInsightsBaseType]) {\n case ApplicationInsightsAvailabilityBaseType:\n baseData = log.body as AvailabilityData;\n break;\n case ApplicationInsightsExceptionBaseType:\n baseData = log.body as TelemetryExceptionData;\n break;\n case ApplicationInsightsMessageBaseType:\n baseData = log.body as MessageData;\n break;\n case ApplicationInsightsPageViewBaseType:\n baseData = log.body as PageViewData;\n break;\n case ApplicationInsightsEventBaseType:\n baseData = log.body as TelemetryEventData;\n break;\n }\n if (typeof baseData?.message === \"object\") {\n baseData.message = JSON.stringify(baseData.message);\n }\n } catch (err) {\n diag.error(\"AzureMonitorLogExporter failed to parse Application Insights Telemetry\");\n }\n }\n return baseData;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"spanUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/spanUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,+BAA+B,CAAC;AAE9E,OAAO,KAAK,EAAQ,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAqD3E,OAAO,KAAK,EAAE,IAAI,EAAoC,MAAM,aAAa,CAAC;AAc1E,OAAO,KAAK,EAKV,aAAa,IAAI,QAAQ,EAE1B,MAAM,uBAAuB,CAAC;AA4O/B;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAyFjF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CA8FlF;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAK5E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAUtE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAKlF;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAK/E;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAM7E;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAKhF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAKpF;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAKhF;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAWhF;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAK9E;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAKjF;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CASjF"}
1
+ {"version":3,"file":"spanUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/spanUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,+BAA+B,CAAC;AAE9E,OAAO,KAAK,EAAQ,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAoD3E,OAAO,KAAK,EAAE,IAAI,EAAoC,MAAM,aAAa,CAAC;AAgB1E,OAAO,KAAK,EAKV,aAAa,IAAI,QAAQ,EAE1B,MAAM,uBAAuB,CAAC;AA8P/B;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAyFjF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CA8FlF;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAK5E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAUtE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAKlF;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAK/E;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAM7E;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAKhF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAKpF;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAKhF;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAWhF;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAK9E;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAKjF;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CASjF"}