@azure/monitor-opentelemetry 1.18.1 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +8 -1
  2. package/dist/commonjs/index.d.ts.map +1 -1
  3. package/dist/commonjs/index.js +20 -3
  4. package/dist/commonjs/index.js.map +1 -1
  5. package/dist/commonjs/logs/batchLogRecordProcessor.js +1 -1
  6. package/dist/commonjs/logs/batchLogRecordProcessor.js.map +1 -1
  7. package/dist/commonjs/logs/handler.d.ts +3 -0
  8. package/dist/commonjs/logs/handler.d.ts.map +1 -1
  9. package/dist/commonjs/logs/handler.js +22 -2
  10. package/dist/commonjs/logs/handler.js.map +1 -1
  11. package/dist/commonjs/metrics/handler.d.ts.map +1 -1
  12. package/dist/commonjs/metrics/handler.js +2 -3
  13. package/dist/commonjs/metrics/handler.js.map +1 -1
  14. package/dist/commonjs/metrics/quickpulse/credentialUtils.d.ts +16 -0
  15. package/dist/commonjs/metrics/quickpulse/credentialUtils.d.ts.map +1 -0
  16. package/dist/commonjs/metrics/quickpulse/credentialUtils.js +48 -0
  17. package/dist/commonjs/metrics/quickpulse/credentialUtils.js.map +1 -0
  18. package/dist/commonjs/metrics/quickpulse/export/sender.d.ts +10 -0
  19. package/dist/commonjs/metrics/quickpulse/export/sender.d.ts.map +1 -1
  20. package/dist/commonjs/metrics/quickpulse/export/sender.js +37 -8
  21. package/dist/commonjs/metrics/quickpulse/export/sender.js.map +1 -1
  22. package/dist/commonjs/metrics/quickpulse/filtering/filter.d.ts.map +1 -1
  23. package/dist/commonjs/metrics/quickpulse/filtering/filter.js +2 -5
  24. package/dist/commonjs/metrics/quickpulse/filtering/filter.js.map +1 -1
  25. package/dist/commonjs/metrics/quickpulse/liveMetrics.d.ts +4 -2
  26. package/dist/commonjs/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
  27. package/dist/commonjs/metrics/quickpulse/liveMetrics.js +75 -18
  28. package/dist/commonjs/metrics/quickpulse/liveMetrics.js.map +1 -1
  29. package/dist/commonjs/metrics/quickpulse/redirectUtils.d.ts +28 -0
  30. package/dist/commonjs/metrics/quickpulse/redirectUtils.d.ts.map +1 -0
  31. package/dist/commonjs/metrics/quickpulse/redirectUtils.js +80 -0
  32. package/dist/commonjs/metrics/quickpulse/redirectUtils.js.map +1 -0
  33. package/dist/commonjs/metrics/quickpulse/utils.d.ts.map +1 -1
  34. package/dist/commonjs/metrics/quickpulse/utils.js.map +1 -1
  35. package/dist/commonjs/metrics/standardMetrics.js.map +1 -1
  36. package/dist/commonjs/shared/config.d.ts.map +1 -1
  37. package/dist/commonjs/shared/config.js +1 -0
  38. package/dist/commonjs/shared/config.js.map +1 -1
  39. package/dist/commonjs/shared/logging/diagFileConsoleLogger.d.ts +1 -0
  40. package/dist/commonjs/shared/logging/diagFileConsoleLogger.d.ts.map +1 -1
  41. package/dist/commonjs/shared/logging/diagFileConsoleLogger.js +13 -12
  42. package/dist/commonjs/shared/logging/diagFileConsoleLogger.js.map +1 -1
  43. package/dist/commonjs/traces/handler.d.ts +12 -0
  44. package/dist/commonjs/traces/handler.d.ts.map +1 -1
  45. package/dist/commonjs/traces/handler.js +30 -1
  46. package/dist/commonjs/traces/handler.js.map +1 -1
  47. package/dist/commonjs/tsdoc-metadata.json +1 -1
  48. package/dist/commonjs/types.d.ts +11 -1
  49. package/dist/commonjs/types.d.ts.map +1 -1
  50. package/dist/commonjs/types.js +47 -3
  51. package/dist/commonjs/types.js.map +1 -1
  52. package/dist/commonjs/utils/azureSdkTracingBridge.d.ts +18 -0
  53. package/dist/commonjs/utils/azureSdkTracingBridge.d.ts.map +1 -0
  54. package/dist/commonjs/utils/azureSdkTracingBridge.js +35 -0
  55. package/dist/commonjs/utils/azureSdkTracingBridge.js.map +1 -0
  56. package/dist/commonjs/utils/common.d.ts +10 -0
  57. package/dist/commonjs/utils/common.d.ts.map +1 -1
  58. package/dist/commonjs/utils/common.js +16 -0
  59. package/dist/commonjs/utils/common.js.map +1 -1
  60. package/dist/commonjs/utils/logUtils.d.ts +5 -0
  61. package/dist/commonjs/utils/logUtils.d.ts.map +1 -1
  62. package/dist/commonjs/utils/logUtils.js +8 -0
  63. package/dist/commonjs/utils/logUtils.js.map +1 -1
  64. package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.d.ts.map +1 -1
  65. package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.js +3 -2
  66. package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.js.map +1 -1
  67. package/dist/commonjs/utils/statsbeat.d.ts.map +1 -1
  68. package/dist/commonjs/utils/statsbeat.js +35 -30
  69. package/dist/commonjs/utils/statsbeat.js.map +1 -1
  70. package/dist/esm/index.d.ts.map +1 -1
  71. package/dist/esm/index.js +20 -3
  72. package/dist/esm/index.js.map +1 -1
  73. package/dist/esm/logs/batchLogRecordProcessor.js +1 -1
  74. package/dist/esm/logs/batchLogRecordProcessor.js.map +1 -1
  75. package/dist/esm/logs/handler.d.ts +3 -0
  76. package/dist/esm/logs/handler.d.ts.map +1 -1
  77. package/dist/esm/logs/handler.js +23 -3
  78. package/dist/esm/logs/handler.js.map +1 -1
  79. package/dist/esm/metrics/handler.d.ts.map +1 -1
  80. package/dist/esm/metrics/handler.js +2 -3
  81. package/dist/esm/metrics/handler.js.map +1 -1
  82. package/dist/esm/metrics/quickpulse/credentialUtils.d.ts +16 -0
  83. package/dist/esm/metrics/quickpulse/credentialUtils.d.ts.map +1 -0
  84. package/dist/esm/metrics/quickpulse/credentialUtils.js +45 -0
  85. package/dist/esm/metrics/quickpulse/credentialUtils.js.map +1 -0
  86. package/dist/esm/metrics/quickpulse/export/sender.d.ts +10 -0
  87. package/dist/esm/metrics/quickpulse/export/sender.d.ts.map +1 -1
  88. package/dist/esm/metrics/quickpulse/export/sender.js +37 -8
  89. package/dist/esm/metrics/quickpulse/export/sender.js.map +1 -1
  90. package/dist/esm/metrics/quickpulse/filtering/filter.d.ts.map +1 -1
  91. package/dist/esm/metrics/quickpulse/filtering/filter.js +2 -5
  92. package/dist/esm/metrics/quickpulse/filtering/filter.js.map +1 -1
  93. package/dist/esm/metrics/quickpulse/liveMetrics.d.ts +4 -2
  94. package/dist/esm/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
  95. package/dist/esm/metrics/quickpulse/liveMetrics.js +75 -18
  96. package/dist/esm/metrics/quickpulse/liveMetrics.js.map +1 -1
  97. package/dist/esm/metrics/quickpulse/redirectUtils.d.ts +28 -0
  98. package/dist/esm/metrics/quickpulse/redirectUtils.d.ts.map +1 -0
  99. package/dist/esm/metrics/quickpulse/redirectUtils.js +76 -0
  100. package/dist/esm/metrics/quickpulse/redirectUtils.js.map +1 -0
  101. package/dist/esm/metrics/quickpulse/utils.d.ts.map +1 -1
  102. package/dist/esm/metrics/quickpulse/utils.js.map +1 -1
  103. package/dist/esm/metrics/standardMetrics.js.map +1 -1
  104. package/dist/esm/shared/config.d.ts.map +1 -1
  105. package/dist/esm/shared/config.js +1 -0
  106. package/dist/esm/shared/config.js.map +1 -1
  107. package/dist/esm/shared/logging/diagFileConsoleLogger.d.ts +1 -0
  108. package/dist/esm/shared/logging/diagFileConsoleLogger.d.ts.map +1 -1
  109. package/dist/esm/shared/logging/diagFileConsoleLogger.js +13 -12
  110. package/dist/esm/shared/logging/diagFileConsoleLogger.js.map +1 -1
  111. package/dist/esm/traces/handler.d.ts +12 -0
  112. package/dist/esm/traces/handler.d.ts.map +1 -1
  113. package/dist/esm/traces/handler.js +29 -1
  114. package/dist/esm/traces/handler.js.map +1 -1
  115. package/dist/esm/types.d.ts +11 -1
  116. package/dist/esm/types.d.ts.map +1 -1
  117. package/dist/esm/types.js +46 -2
  118. package/dist/esm/types.js.map +1 -1
  119. package/dist/esm/utils/azureSdkTracingBridge.d.ts +18 -0
  120. package/dist/esm/utils/azureSdkTracingBridge.d.ts.map +1 -0
  121. package/dist/esm/utils/azureSdkTracingBridge.js +34 -0
  122. package/dist/esm/utils/azureSdkTracingBridge.js.map +1 -0
  123. package/dist/esm/utils/common.d.ts +10 -0
  124. package/dist/esm/utils/common.d.ts.map +1 -1
  125. package/dist/esm/utils/common.js +14 -0
  126. package/dist/esm/utils/common.js.map +1 -1
  127. package/dist/esm/utils/logUtils.d.ts +5 -0
  128. package/dist/esm/utils/logUtils.d.ts.map +1 -1
  129. package/dist/esm/utils/logUtils.js +7 -0
  130. package/dist/esm/utils/logUtils.js.map +1 -1
  131. package/dist/esm/utils/opentelemetryInstrumentationPatcher.d.ts.map +1 -1
  132. package/dist/esm/utils/opentelemetryInstrumentationPatcher.js +3 -2
  133. package/dist/esm/utils/opentelemetryInstrumentationPatcher.js.map +1 -1
  134. package/dist/esm/utils/statsbeat.d.ts.map +1 -1
  135. package/dist/esm/utils/statsbeat.js +36 -31
  136. package/dist/esm/utils/statsbeat.js.map +1 -1
  137. package/package.json +41 -30
@@ -1,7 +1,8 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
- import { AZURE_MONITOR_STATSBEAT_FEATURES, StatsbeatFeature, StatsbeatFeaturesMap, StatsbeatInstrumentation, } from "../types.js";
3
+ import { AZURE_MONITOR_STATSBEAT_FEATURES, StatsbeatFeature, StatsbeatFeaturesMap, StatsbeatInstrumentation, StatsbeatInstrumentationsMap, } from "../types.js";
4
4
  import { Logger as InternalLogger } from "../shared/logging/index.js";
5
+ import { addNumberFlag, hasNumberFlag } from "./common.js";
5
6
  let instance;
6
7
  class StatsbeatConfiguration {
7
8
  // Initial Statsbeat options
@@ -34,45 +35,49 @@ class StatsbeatConfiguration {
34
35
  };
35
36
  this.currentStatsbeatFeatures = { ...this.currentStatsbeatFeatures, ...statsbeatFeatures };
36
37
  // Set the statsbeat options for community instrumentations based on the environment variable
38
+ const envInstrumentation = statsbeatEnv.instrumentation;
37
39
  statsbeatInstrumentations = {
38
40
  ...this.currentStatsbeatInstrumentations,
39
- amqplib: statsbeatEnv.instrumentation & StatsbeatInstrumentation.AMQPLIB ? true : false,
40
- cucumber: statsbeatEnv.instrumentation & StatsbeatInstrumentation.CUCUMBER ? true : false,
41
- dataloader: statsbeatEnv.instrumentation & StatsbeatInstrumentation.DATALOADER ? true : false,
42
- fs: statsbeatEnv.instrumentation & StatsbeatInstrumentation.FS ? true : false,
43
- lruMemoizer: statsbeatEnv.instrumentation & StatsbeatInstrumentation.LRU_MEMOIZER ? true : false,
44
- mongoose: statsbeatEnv.instrumentation & StatsbeatInstrumentation.MONGOOSE ? true : false,
45
- runtimeNode: statsbeatEnv.instrumentation & StatsbeatInstrumentation.RUNTIME_NODE ? true : false,
46
- socketIo: statsbeatEnv.instrumentation & StatsbeatInstrumentation.SOCKET_IO ? true : false,
47
- tedious: statsbeatEnv.instrumentation & StatsbeatInstrumentation.TEDIOUS ? true : false,
48
- undici: statsbeatEnv.instrumentation & StatsbeatInstrumentation.UNDICI ? true : false,
49
- cassandra: statsbeatEnv.instrumentation & StatsbeatInstrumentation.CASSANDRA ? true : false,
50
- connect: statsbeatEnv.instrumentation & StatsbeatInstrumentation.CONNECT ? true : false,
51
- dns: statsbeatEnv.instrumentation & StatsbeatInstrumentation.DNS ? true : false,
52
- express: statsbeatEnv.instrumentation & StatsbeatInstrumentation.EXPRESS ? true : false,
53
- fastify: statsbeatEnv.instrumentation & StatsbeatInstrumentation.FASTIFY ? true : false,
54
- genericPool: statsbeatEnv.instrumentation & StatsbeatInstrumentation.GENERIC_POOL ? true : false,
55
- graphql: statsbeatEnv.instrumentation & StatsbeatInstrumentation.GRAPHQL ? true : false,
56
- hapi: statsbeatEnv.instrumentation & StatsbeatInstrumentation.HAPI ? true : false,
57
- ioredis: statsbeatEnv.instrumentation & StatsbeatInstrumentation.IOREDIS ? true : false,
58
- knex: statsbeatEnv.instrumentation & StatsbeatInstrumentation.KNEX ? true : false,
59
- koa: statsbeatEnv.instrumentation & StatsbeatInstrumentation.KOA ? true : false,
60
- memcached: statsbeatEnv.instrumentation & StatsbeatInstrumentation.MEMCACHED ? true : false,
61
- mysql2: statsbeatEnv.instrumentation & StatsbeatInstrumentation.MYSQL2 ? true : false,
62
- nestjsCore: statsbeatEnv.instrumentation & StatsbeatInstrumentation.NESTJS_CORE ? true : false,
63
- net: statsbeatEnv.instrumentation & StatsbeatInstrumentation.NET ? true : false,
64
- pino: statsbeatEnv.instrumentation & StatsbeatInstrumentation.PINO ? true : false,
65
- restify: statsbeatEnv.instrumentation & StatsbeatInstrumentation.RESTIFY ? true : false,
66
- router: statsbeatEnv.instrumentation & StatsbeatInstrumentation.ROUTER ? true : false,
41
+ amqplib: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.AMQPLIB),
42
+ cucumber: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CUCUMBER),
43
+ dataloader: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.DATALOADER),
44
+ fs: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.FS),
45
+ lruMemoizer: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.LRU_MEMOIZER),
46
+ mongoose: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MONGOOSE),
47
+ runtimeNode: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.RUNTIME_NODE),
48
+ socketIo: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.SOCKET_IO),
49
+ tedious: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.TEDIOUS),
50
+ undici: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.UNDICI),
51
+ cassandra: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CASSANDRA),
52
+ connect: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CONNECT),
53
+ dns: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.DNS),
54
+ express: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.EXPRESS),
55
+ fastify: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.FASTIFY),
56
+ genericPool: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.GENERIC_POOL),
57
+ graphql: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.GRAPHQL),
58
+ hapi: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.HAPI),
59
+ ioredis: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.IOREDIS),
60
+ knex: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.KNEX),
61
+ koa: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.KOA),
62
+ memcached: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MEMCACHED),
63
+ mysql2: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MYSQL2),
64
+ nestjsCore: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.NESTJS_CORE),
65
+ net: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.NET),
66
+ pino: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.PINO),
67
+ restify: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.RESTIFY),
68
+ router: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.ROUTER),
67
69
  };
68
70
  let instrumentationBitMap = StatsbeatInstrumentation.NONE;
69
71
  const instrumentationArray = Object.entries(statsbeatInstrumentations).map((entry) => {
70
72
  return { option: entry[0], value: entry[1] };
71
73
  });
72
- // Map the instrumentation options to a bit map
74
+ // Map enabled option names to their assigned bits.
73
75
  for (let i = 0; i < instrumentationArray.length; i++) {
74
76
  if (instrumentationArray[i].value) {
75
- instrumentationBitMap |= 2 ** i;
77
+ const instrumentationBit = StatsbeatInstrumentationsMap.get(instrumentationArray[i].option);
78
+ if (instrumentationBit !== undefined) {
79
+ instrumentationBitMap = addNumberFlag(instrumentationBitMap, instrumentationBit);
80
+ }
76
81
  }
77
82
  }
78
83
  // Create feature bit map
@@ -1 +1 @@
1
- {"version":3,"file":"statsbeat.js","sourceRoot":"","sources":["../../../src/utils/statsbeat.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n StatsbeatEnvironmentConfig,\n StatsbeatFeatures,\n StatsbeatInstrumentations,\n StatsbeatOption,\n} from \"../types.js\";\nimport {\n AZURE_MONITOR_STATSBEAT_FEATURES,\n StatsbeatFeature,\n StatsbeatFeaturesMap,\n StatsbeatInstrumentation,\n} from \"../types.js\";\nimport { Logger as InternalLogger } from \"../shared/logging/index.js\";\n\nlet instance: StatsbeatConfiguration;\n\nclass StatsbeatConfiguration {\n // Initial Statsbeat options\n private initializedByShim = false;\n private currentStatsbeatInstrumentations: StatsbeatInstrumentations = {};\n private currentStatsbeatFeatures: StatsbeatFeatures = {};\n\n constructor() {\n // Check for shim initialization upon construction\n try {\n if (\n JSON.parse(process.env[AZURE_MONITOR_STATSBEAT_FEATURES] || \"{}\").feature &\n StatsbeatFeature.SHIM\n ) {\n this.initializedByShim = true;\n }\n } catch (error) {\n InternalLogger.getInstance().error(\n \"Failed to parse statsbeat config environment variable.\",\n error,\n );\n }\n }\n\n public setStatsbeatFeatures = (\n statsbeatInstrumentations: StatsbeatInstrumentations,\n statsbeatFeatures: StatsbeatFeatures,\n ) => {\n let statsbeatEnv: StatsbeatEnvironmentConfig;\n try {\n statsbeatEnv = JSON.parse(process.env[AZURE_MONITOR_STATSBEAT_FEATURES] || \"{}\");\n } catch (error) {\n InternalLogger.getInstance().error(\n \"Failed to parse statsbeat config environment variable.\",\n error,\n );\n }\n this.currentStatsbeatInstrumentations = {\n ...this.currentStatsbeatInstrumentations,\n ...statsbeatInstrumentations,\n };\n this.currentStatsbeatFeatures = { ...this.currentStatsbeatFeatures, ...statsbeatFeatures };\n\n // Set the statsbeat options for community instrumentations based on the environment variable\n statsbeatInstrumentations = {\n ...this.currentStatsbeatInstrumentations,\n amqplib: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.AMQPLIB ? true : false,\n cucumber: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.CUCUMBER ? true : false,\n dataloader:\n statsbeatEnv!.instrumentation & StatsbeatInstrumentation.DATALOADER ? true : false,\n fs: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.FS ? true : false,\n lruMemoizer:\n statsbeatEnv!.instrumentation & StatsbeatInstrumentation.LRU_MEMOIZER ? true : false,\n mongoose: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.MONGOOSE ? true : false,\n runtimeNode:\n statsbeatEnv!.instrumentation & StatsbeatInstrumentation.RUNTIME_NODE ? true : false,\n socketIo: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.SOCKET_IO ? true : false,\n tedious: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.TEDIOUS ? true : false,\n undici: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.UNDICI ? true : false,\n cassandra: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.CASSANDRA ? true : false,\n connect: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.CONNECT ? true : false,\n dns: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.DNS ? true : false,\n express: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.EXPRESS ? true : false,\n fastify: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.FASTIFY ? true : false,\n genericPool:\n statsbeatEnv!.instrumentation & StatsbeatInstrumentation.GENERIC_POOL ? true : false,\n graphql: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.GRAPHQL ? true : false,\n hapi: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.HAPI ? true : false,\n ioredis: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.IOREDIS ? true : false,\n knex: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.KNEX ? true : false,\n koa: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.KOA ? true : false,\n memcached: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.MEMCACHED ? true : false,\n mysql2: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.MYSQL2 ? true : false,\n nestjsCore:\n statsbeatEnv!.instrumentation & StatsbeatInstrumentation.NESTJS_CORE ? true : false,\n net: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.NET ? true : false,\n pino: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.PINO ? true : false,\n restify: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.RESTIFY ? true : false,\n router: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.ROUTER ? true : false,\n };\n\n let instrumentationBitMap = StatsbeatInstrumentation.NONE;\n\n const instrumentationArray: Array<StatsbeatOption> = Object.entries(\n statsbeatInstrumentations,\n ).map((entry) => {\n return { option: entry[0], value: entry[1] };\n });\n\n // Map the instrumentation options to a bit map\n for (let i = 0; i < instrumentationArray.length; i++) {\n if (instrumentationArray[i].value) {\n instrumentationBitMap |= 2 ** i;\n }\n }\n\n // Create feature bit map\n let featureBitMap = StatsbeatFeature.NONE;\n\n if (this.initializedByShim) {\n this.currentStatsbeatFeatures.shim = true;\n } else {\n this.currentStatsbeatFeatures.distro = true;\n }\n\n if (statsbeatFeatures.liveMetrics) {\n this.currentStatsbeatFeatures.liveMetrics = true;\n }\n\n const featureArray: Array<StatsbeatOption> = Object.entries(this.currentStatsbeatFeatures).map(\n (entry) => {\n return { option: entry[0], value: entry[1] };\n },\n );\n\n // Map the feature options to a bit map\n for (let i = 0; i < featureArray.length; i++) {\n if (featureArray[i].value) {\n featureBitMap |= StatsbeatFeaturesMap.get(featureArray[i].option)!;\n }\n }\n\n // Merge old statsbeat options with new statsbeat options overriding any common properties\n try {\n const currentFeaturesBitMap = Number(process.env[AZURE_MONITOR_STATSBEAT_FEATURES]);\n if (!isNaN(currentFeaturesBitMap)) {\n featureBitMap |= currentFeaturesBitMap;\n }\n process.env[AZURE_MONITOR_STATSBEAT_FEATURES] = JSON.stringify({\n instrumentation: instrumentationBitMap,\n feature: featureBitMap,\n });\n } catch (error) {\n InternalLogger.getInstance().error(\"Failed call to JSON.stringify.\", error);\n }\n };\n}\n\n/**\n * Singleton Statsbeat instance.\n * @internal\n */\nexport function getInstance(): StatsbeatConfiguration {\n if (!instance) {\n instance = new StatsbeatConfiguration();\n }\n return instance;\n}\n"]}
1
+ {"version":3,"file":"statsbeat.js","sourceRoot":"","sources":["../../../src/utils/statsbeat.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAQlC,OAAO,EACL,gCAAgC,EAChC,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3D,IAAI,QAAgC,CAAC;AAErC,MAAM,sBAAsB;IAC1B,4BAA4B;IACpB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,gCAAgC,GAA8B,EAAE,CAAC;IACjE,wBAAwB,GAAsB,EAAE,CAAC;IAEzD;QACE,kDAAkD;QAClD,IAAI,CAAC;YACH,IACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO;gBACzE,gBAAgB,CAAC,IAAI,EACrB,CAAC;gBACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAChC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,CAChC,wDAAwD,EACxD,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,oBAAoB,GAAG,CAC5B,yBAAoD,EACpD,iBAAoC,EACpC,EAAE;QACF,IAAI,YAAwC,CAAC;QAC7C,IAAI,CAAC;YACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,IAAI,IAAI,CAAC,CAAC;QACnF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,CAChC,wDAAwD,EACxD,KAAK,CACN,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,gCAAgC,GAAG;YACtC,GAAG,IAAI,CAAC,gCAAgC;YACxC,GAAG,yBAAyB;SAC7B,CAAC;QACF,IAAI,CAAC,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAC,wBAAwB,EAAE,GAAG,iBAAiB,EAAE,CAAC;QAE3F,6FAA6F;QAC7F,MAAM,kBAAkB,GAAG,YAAa,CAAC,eAAe,CAAC;QACzD,yBAAyB,GAAG;YAC1B,GAAG,IAAI,CAAC,gCAAgC;YACxC,OAAO,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,OAAO,CAAC;YAC5E,QAAQ,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,QAAQ,CAAC;YAC9E,UAAU,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,UAAU,CAAC;YAClF,EAAE,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,EAAE,CAAC;YAClE,WAAW,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,YAAY,CAAC;YACrF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,QAAQ,CAAC;YAC9E,WAAW,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,YAAY,CAAC;YACrF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,SAAS,CAAC;YAC/E,OAAO,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,OAAO,CAAC;YAC5E,MAAM,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,MAAM,CAAC;YAC1E,SAAS,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,SAAS,CAAC;YAChF,OAAO,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,OAAO,CAAC;YAC5E,GAAG,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,GAAG,CAAC;YACpE,OAAO,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,OAAO,CAAC;YAC5E,OAAO,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,OAAO,CAAC;YAC5E,WAAW,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,YAAY,CAAC;YACrF,OAAO,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,OAAO,CAAC;YAC5E,IAAI,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,IAAI,CAAC;YACtE,OAAO,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,OAAO,CAAC;YAC5E,IAAI,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,IAAI,CAAC;YACtE,GAAG,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,GAAG,CAAC;YACpE,SAAS,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,SAAS,CAAC;YAChF,MAAM,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,MAAM,CAAC;YAC1E,UAAU,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,WAAW,CAAC;YACnF,GAAG,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,GAAG,CAAC;YACpE,IAAI,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,IAAI,CAAC;YACtE,OAAO,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,OAAO,CAAC;YAC5E,MAAM,EAAE,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,MAAM,CAAC;SAC3E,CAAC;QAEF,IAAI,qBAAqB,GAAG,wBAAwB,CAAC,IAAI,CAAC;QAE1D,MAAM,oBAAoB,GAA2B,MAAM,CAAC,OAAO,CACjE,yBAAyB,CAC1B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,mDAAmD;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrD,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,kBAAkB,GAAG,4BAA4B,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC5F,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;oBACrC,qBAAqB,GAAG,aAAa,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,IAAI,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC;QAE1C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,wBAAwB,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC;QAC9C,CAAC;QAED,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,wBAAwB,CAAC,WAAW,GAAG,IAAI,CAAC;QACnD,CAAC;QAED,MAAM,YAAY,GAA2B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAC5F,CAAC,KAAK,EAAE,EAAE;YACR,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,CAAC,CACF,CAAC;QAEF,uCAAuC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC1B,aAAa,IAAI,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAE,CAAC;YACrE,CAAC;QACH,CAAC;QAED,0FAA0F;QAC1F,IAAI,CAAC;YACH,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAClC,aAAa,IAAI,qBAAqB,CAAC;YACzC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC7D,eAAe,EAAE,qBAAqB;gBACtC,OAAO,EAAE,aAAa;aACvB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n StatsbeatEnvironmentConfig,\n StatsbeatFeatures,\n StatsbeatInstrumentations,\n StatsbeatOption,\n} from \"../types.js\";\nimport {\n AZURE_MONITOR_STATSBEAT_FEATURES,\n StatsbeatFeature,\n StatsbeatFeaturesMap,\n StatsbeatInstrumentation,\n StatsbeatInstrumentationsMap,\n} from \"../types.js\";\nimport { Logger as InternalLogger } from \"../shared/logging/index.js\";\nimport { addNumberFlag, hasNumberFlag } from \"./common.js\";\n\nlet instance: StatsbeatConfiguration;\n\nclass StatsbeatConfiguration {\n // Initial Statsbeat options\n private initializedByShim = false;\n private currentStatsbeatInstrumentations: StatsbeatInstrumentations = {};\n private currentStatsbeatFeatures: StatsbeatFeatures = {};\n\n constructor() {\n // Check for shim initialization upon construction\n try {\n if (\n JSON.parse(process.env[AZURE_MONITOR_STATSBEAT_FEATURES] || \"{}\").feature &\n StatsbeatFeature.SHIM\n ) {\n this.initializedByShim = true;\n }\n } catch (error) {\n InternalLogger.getInstance().error(\n \"Failed to parse statsbeat config environment variable.\",\n error,\n );\n }\n }\n\n public setStatsbeatFeatures = (\n statsbeatInstrumentations: StatsbeatInstrumentations,\n statsbeatFeatures: StatsbeatFeatures,\n ) => {\n let statsbeatEnv: StatsbeatEnvironmentConfig;\n try {\n statsbeatEnv = JSON.parse(process.env[AZURE_MONITOR_STATSBEAT_FEATURES] || \"{}\");\n } catch (error) {\n InternalLogger.getInstance().error(\n \"Failed to parse statsbeat config environment variable.\",\n error,\n );\n }\n this.currentStatsbeatInstrumentations = {\n ...this.currentStatsbeatInstrumentations,\n ...statsbeatInstrumentations,\n };\n this.currentStatsbeatFeatures = { ...this.currentStatsbeatFeatures, ...statsbeatFeatures };\n\n // Set the statsbeat options for community instrumentations based on the environment variable\n const envInstrumentation = statsbeatEnv!.instrumentation;\n statsbeatInstrumentations = {\n ...this.currentStatsbeatInstrumentations,\n amqplib: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.AMQPLIB),\n cucumber: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CUCUMBER),\n dataloader: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.DATALOADER),\n fs: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.FS),\n lruMemoizer: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.LRU_MEMOIZER),\n mongoose: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MONGOOSE),\n runtimeNode: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.RUNTIME_NODE),\n socketIo: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.SOCKET_IO),\n tedious: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.TEDIOUS),\n undici: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.UNDICI),\n cassandra: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CASSANDRA),\n connect: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CONNECT),\n dns: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.DNS),\n express: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.EXPRESS),\n fastify: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.FASTIFY),\n genericPool: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.GENERIC_POOL),\n graphql: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.GRAPHQL),\n hapi: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.HAPI),\n ioredis: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.IOREDIS),\n knex: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.KNEX),\n koa: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.KOA),\n memcached: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MEMCACHED),\n mysql2: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MYSQL2),\n nestjsCore: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.NESTJS_CORE),\n net: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.NET),\n pino: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.PINO),\n restify: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.RESTIFY),\n router: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.ROUTER),\n };\n\n let instrumentationBitMap = StatsbeatInstrumentation.NONE;\n\n const instrumentationArray: Array<StatsbeatOption> = Object.entries(\n statsbeatInstrumentations,\n ).map((entry) => {\n return { option: entry[0], value: entry[1] };\n });\n\n // Map enabled option names to their assigned bits.\n for (let i = 0; i < instrumentationArray.length; i++) {\n if (instrumentationArray[i].value) {\n const instrumentationBit = StatsbeatInstrumentationsMap.get(instrumentationArray[i].option);\n if (instrumentationBit !== undefined) {\n instrumentationBitMap = addNumberFlag(instrumentationBitMap, instrumentationBit);\n }\n }\n }\n\n // Create feature bit map\n let featureBitMap = StatsbeatFeature.NONE;\n\n if (this.initializedByShim) {\n this.currentStatsbeatFeatures.shim = true;\n } else {\n this.currentStatsbeatFeatures.distro = true;\n }\n\n if (statsbeatFeatures.liveMetrics) {\n this.currentStatsbeatFeatures.liveMetrics = true;\n }\n\n const featureArray: Array<StatsbeatOption> = Object.entries(this.currentStatsbeatFeatures).map(\n (entry) => {\n return { option: entry[0], value: entry[1] };\n },\n );\n\n // Map the feature options to a bit map\n for (let i = 0; i < featureArray.length; i++) {\n if (featureArray[i].value) {\n featureBitMap |= StatsbeatFeaturesMap.get(featureArray[i].option)!;\n }\n }\n\n // Merge old statsbeat options with new statsbeat options overriding any common properties\n try {\n const currentFeaturesBitMap = Number(process.env[AZURE_MONITOR_STATSBEAT_FEATURES]);\n if (!isNaN(currentFeaturesBitMap)) {\n featureBitMap |= currentFeaturesBitMap;\n }\n process.env[AZURE_MONITOR_STATSBEAT_FEATURES] = JSON.stringify({\n instrumentation: instrumentationBitMap,\n feature: featureBitMap,\n });\n } catch (error) {\n InternalLogger.getInstance().error(\"Failed call to JSON.stringify.\", error);\n }\n };\n}\n\n/**\n * Singleton Statsbeat instance.\n * @internal\n */\nexport function getInstance(): StatsbeatConfiguration {\n if (!instance) {\n instance = new StatsbeatConfiguration();\n }\n return instance;\n}\n"]}
package/package.json CHANGED
@@ -2,13 +2,13 @@
2
2
  "name": "@azure/monitor-opentelemetry",
3
3
  "author": "Microsoft Corporation",
4
4
  "sdk-type": "client",
5
- "version": "1.18.1",
5
+ "version": "1.19.0",
6
6
  "description": "Azure Monitor OpenTelemetry (Node.js)",
7
7
  "main": "./dist/commonjs/index.js",
8
8
  "module": "./dist/esm/index.js",
9
9
  "types": "./dist/commonjs/index.d.ts",
10
10
  "engines": {
11
- "node": ">=20.0.0"
11
+ "node": ">=22.0.0"
12
12
  },
13
13
  "files": [
14
14
  "dist/",
@@ -26,6 +26,14 @@
26
26
  "url": "https://github.com/Azure/azure-sdk-for-js/issues"
27
27
  },
28
28
  "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json",
29
+ "//metadata": {
30
+ "constantPaths": [
31
+ {
32
+ "path": "src/types.ts",
33
+ "prefix": "AZURE_MONITOR_OPENTELEMETRY_VERSION"
34
+ }
35
+ ]
36
+ },
29
37
  "//sampleConfiguration": {
30
38
  "productName": "Azure Monitor OpenTelemetry",
31
39
  "productSlugs": [
@@ -38,50 +46,53 @@
38
46
  "devDependencies": {
39
47
  "@azure/functions": "^4.9.0",
40
48
  "@azure/functions-old": "npm:@azure/functions@3.5.1",
41
- "@opentelemetry/exporter-metrics-otlp-http": "^0.218.0",
42
- "@opentelemetry/exporter-trace-otlp-http": "^0.218.0",
43
- "@types/node": "^20.19.25",
49
+ "@opentelemetry/exporter-metrics-otlp-http": "^0.220.0",
50
+ "@opentelemetry/exporter-trace-otlp-http": "^0.220.0",
51
+ "@types/node": "^22.0.0",
44
52
  "@vitest/browser-playwright": "^4.1.2",
45
53
  "@vitest/coverage-istanbul": "^4.1.2",
46
54
  "cross-env": "^10.1.0",
47
55
  "dotenv": "^16.6.1",
48
- "eslint": "^9.39.1",
49
- "prettier": "^3.6.2",
56
+ "eslint": "^10.8.0",
57
+ "prettier": "^3.9.1",
50
58
  "rimraf": "^6.1.0",
51
59
  "typescript": "~6.0.2",
52
60
  "vitest": "^4.1.2",
61
+ "@azure-tools/test-utils-vitest": "^2.0.1",
53
62
  "@azure/dev-tool": "^1.0.0",
54
- "@azure/eslint-plugin-azure-sdk": "^3.0.0",
55
- "@azure-tools/test-utils-vitest": "^2.0.1"
63
+ "@azure/eslint-plugin-azure-sdk": "^3.0.0"
56
64
  },
57
65
  "dependencies": {
58
66
  "@azure-rest/core-client": "^2.5.2",
59
67
  "@azure/core-auth": "^1.10.1",
60
68
  "@azure/core-rest-pipeline": "^1.22.2",
69
+ "@azure/core-tracing": "^1.2.0",
70
+ "@azure/identity": "^4.13.1",
61
71
  "@azure/logger": "^1.3.0",
62
- "@azure/monitor-opentelemetry-exporter": "1.0.0-beta.42",
63
- "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0",
72
+ "@azure/monitor-opentelemetry-exporter": "1.0.0-beta.44",
73
+ "@azure/opentelemetry-instrumentation-azure-sdk": "^1.1.0-beta.1",
64
74
  "@microsoft/applicationinsights-web-snippet": "^1.2.3",
65
- "@opentelemetry/api": "^1.9.0",
66
- "@opentelemetry/api-logs": "^0.218.0",
67
- "@opentelemetry/core": "^2.7.1",
68
- "@opentelemetry/instrumentation": "^0.218.0",
69
- "@opentelemetry/instrumentation-bunyan": "^0.62.0",
70
- "@opentelemetry/instrumentation-http": "^0.218.0",
71
- "@opentelemetry/instrumentation-mongodb": "^0.70.0",
72
- "@opentelemetry/instrumentation-mysql": "^0.63.0",
73
- "@opentelemetry/instrumentation-pg": "^0.69.0",
74
- "@opentelemetry/instrumentation-redis": "^0.65.0",
75
- "@opentelemetry/instrumentation-winston": "^0.61.0",
76
- "@opentelemetry/resource-detector-azure": "^0.25.0",
77
- "@opentelemetry/resources": "^2.7.1",
78
- "@opentelemetry/sdk-logs": "^0.218.0",
79
- "@opentelemetry/sdk-metrics": "^2.7.1",
80
- "@opentelemetry/sdk-node": "^0.218.0",
81
- "@opentelemetry/sdk-trace-base": "^2.7.1",
82
- "@opentelemetry/sdk-trace-node": "^2.7.1",
75
+ "@opentelemetry/api": "^1.9.1",
76
+ "@opentelemetry/api-logs": "^0.220.0",
77
+ "@opentelemetry/core": "^2.9.0",
78
+ "@opentelemetry/instrumentation": "^0.220.0",
79
+ "@opentelemetry/instrumentation-bunyan": "^0.65.0",
80
+ "@opentelemetry/instrumentation-console": "^0.2.0",
81
+ "@opentelemetry/instrumentation-http": "^0.220.0",
82
+ "@opentelemetry/instrumentation-mongodb": "^0.73.0",
83
+ "@opentelemetry/instrumentation-mysql": "^0.66.0",
84
+ "@opentelemetry/instrumentation-pg": "^0.72.0",
85
+ "@opentelemetry/instrumentation-redis": "^0.68.0",
86
+ "@opentelemetry/instrumentation-winston": "^0.64.0",
87
+ "@opentelemetry/resource-detector-azure": "^0.28.0",
88
+ "@opentelemetry/resources": "^2.9.0",
89
+ "@opentelemetry/sdk-logs": "^0.220.0",
90
+ "@opentelemetry/sdk-metrics": "^2.9.0",
91
+ "@opentelemetry/sdk-node": "^0.220.0",
92
+ "@opentelemetry/sdk-trace-base": "^2.9.0",
93
+ "@opentelemetry/sdk-trace-node": "^2.9.0",
83
94
  "@opentelemetry/semantic-conventions": "^1.40.0",
84
- "@opentelemetry/winston-transport": "^0.27.0",
95
+ "@opentelemetry/winston-transport": "^0.30.0",
85
96
  "tslib": "^2.8.1"
86
97
  },
87
98
  "sideEffects": false,